<?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>137103</bug_id>
          
          <creation_ts>2014-09-24 20:31:41 -0700</creation_ts>
          <short_desc>Use is&lt;HTML*Element&gt;() instead of isHTML*Element() - Part 2</short_desc>
          <delta_ts>2014-09-25 16:37:24 -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>DOM</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>137015</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>koivisto</cc>
    
    <cc>rniwa</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1037134</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-09-24 20:31:41 -0700</bug_when>
    <thetext>Use is&lt;HTML*Element&gt;() instead of isHTML*Element() and drop support for the generated isHTML*Element() macros.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1037154</commentid>
    <comment_count>1</comment_count>
      <attachid>238640</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-09-24 21:46:51 -0700</bug_when>
    <thetext>Created attachment 238640
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1037207</commentid>
    <comment_count>2</comment_count>
      <attachid>238640</attachid>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2014-09-25 04:00:15 -0700</bug_when>
    <thetext>Comment on attachment 238640
Patch

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

&gt; Source/WebCore/css/CSSStyleSheet.cpp:39
&gt; +#include &quot;SVGStyleElement.H&quot;

SVGStyleElement.H -&gt; SVGStyleElement.h</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1037248</commentid>
    <comment_count>3</comment_count>
      <attachid>238662</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-09-25 10:29:30 -0700</bug_when>
    <thetext>Created attachment 238662
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1037249</commentid>
    <comment_count>4</comment_count>
      <attachid>238663</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-09-25 10:30:57 -0700</bug_when>
    <thetext>Created attachment 238663
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1037288</commentid>
    <comment_count>5</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-09-25 13:50:22 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 238640 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=238640&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/css/CSSStyleSheet.cpp:39
&gt; &gt; +#include &quot;SVGStyleElement.H&quot;
&gt; 
&gt; SVGStyleElement.H -&gt; SVGStyleElement.h

Thanks, fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1037310</commentid>
    <comment_count>6</comment_count>
      <attachid>238663</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2014-09-25 15:02:41 -0700</bug_when>
    <thetext>Comment on attachment 238663
Patch

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

&gt; Source/WebCore/css/CSSDefaultStyleSheets.cpp:65
&gt;  static inline bool elementCanUseSimpleDefaultStyle(Element* e)

The argument should be a reference.

&quot;e&quot; should be element.

&gt; Source/WebCore/html/HTMLNameCollection.cpp:54
&gt; +    return is&lt;HTMLImageElement&gt;(element) || is&lt;HTMLFormElement&gt;(element) || element.hasTagName(appletTag)

I guess element.hasTagName(appletTag) is one of the special case?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1037311</commentid>
    <comment_count>7</comment_count>
      <attachid>238663</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-09-25 15:04:34 -0700</bug_when>
    <thetext>Comment on attachment 238663
Patch

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

&gt;&gt; Source/WebCore/html/HTMLNameCollection.cpp:54
&gt;&gt; +    return is&lt;HTMLImageElement&gt;(element) || is&lt;HTMLFormElement&gt;(element) || element.hasTagName(appletTag)
&gt; 
&gt; I guess element.hasTagName(appletTag) is one of the special case?

No, I missed it :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1037318</commentid>
    <comment_count>8</comment_count>
      <attachid>238677</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-09-25 15:17:59 -0700</bug_when>
    <thetext>Created attachment 238677
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1037322</commentid>
    <comment_count>9</comment_count>
      <attachid>238678</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-09-25 15:36:54 -0700</bug_when>
    <thetext>Created attachment 238678
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1037337</commentid>
    <comment_count>10</comment_count>
      <attachid>238678</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-09-25 16:37:18 -0700</bug_when>
    <thetext>Comment on attachment 238678
Patch

Clearing flags on attachment: 238678

Committed r173980: &lt;http://trac.webkit.org/changeset/173980&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1037338</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-09-25 16:37:24 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>238640</attachid>
            <date>2014-09-24 21:46:51 -0700</date>
            <delta_ts>2014-09-25 10:29:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-137103-20140924214650.patch</filename>
            <type>text/plain</type>
            <size>123020</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTczOTQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGFiY2MzNjU2ZmY1NjEy
NWNhOTU5MDViYWM2MGVhMjA0MjIyZjNhMi4uOWUzNGMzZmY5OWNjNTc4ZGQ1N2I5MmJjYWY3ZGRk
NzM1Nzk2NTcwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDI0OSBAQAogMjAxNC0wOS0yNCAgQ2hy
aXN0b3BoZSBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKKyAgICAgICAgVXNlIGlzPEhUTUwq
RWxlbWVudD4oKSBpbnN0ZWFkIG9mIGlzSFRNTCpFbGVtZW50KCkgLSBQYXJ0IDIKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNzEwMworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSBpczxIVE1MKkVsZW1l
bnQ+KCkgaW5zdGVhZCBvZiBpc0hUTUwqRWxlbWVudCgpIGFuZCBkcm9wIHN1cHBvcnQgZm9yCisg
ICAgICAgIHRoZSBnZW5lcmF0ZWQgaXNIVE1MKkVsZW1lbnQoKSBtYWNyb3MuCisKKyAgICAgICAg
Tm8gbmV3IHRlc3RzLCBubyBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAgKiBhY2Nlc3NpYmls
aXR5L0FYT2JqZWN0Q2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6
Zm9jdXNlZFVJRWxlbWVudEZvclBhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6QVhPYmplY3RDYWNo
ZTo6Z2V0T3JDcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6aGFuZGxl
QXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpsYWJl
bENoYW5nZWQpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUxpc3RCb3hP
cHRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eUxpc3RCb3hPcHRpb246
OmlzRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlv
bjo6c3RyaW5nVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eUxpc3RCb3hP
cHRpb246Omxpc3RCb3hPcHRpb25QYXJlbnROb2RlKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlOb2RlT2JqZWN0OjpkZXRlcm1pbmVBY2Nlc3NpYmlsaXR5Um9sZSk6CisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6aXNOYXRpdmVJbWFnZSk6CisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6YW5jaG9yRWxlbWVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6YWx0ZXJuYXRpdmVUZXh0KToK
KyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6YW5jaG9yRWxlbWVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpsYWJlbEVs
ZW1lbnRDb250YWluZXIpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9i
amVjdDo6aW50ZXJuYWxMaW5rRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmls
aXR5UmVuZGVyT2JqZWN0Ojpjb21wdXRlQWNjZXNzaWJpbGl0eUlzSWdub3JlZCk6CisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojp1cmwpOgorICAgICAgICAoV2Vi
Q29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6Z2V0RG9jdW1lbnRMaW5rcyk6CisgICAg
ICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjphY2Nlc3NpYmlsaXR5SW1h
Z2VNYXBIaXRUZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3Q6OmFjY2Vzc2liaWxpdHlIaXRUZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3Q6OmRldGVybWluZUFjY2Vzc2liaWxpdHlSb2xlKToKKyAgICAgICAgKFdl
YkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnN0cmluZ1ZhbHVlRm9yTVNBQSk6Cisg
ICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojppc0xpbmtlZCk6Cisg
ICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlOjp0YWJsZUVsZW1lbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlOjppc1RhYmxlRXhwb3NhYmxlVGhyb3VnaEFjY2Vzc2li
aWxpdHkpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlOjp0aXRsZSk6Cisg
ICAgICAgICogYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZVRhYmxl
LmNwcDoKKyAgICAgICAgKHdlYmtpdEFjY2Vzc2libGVUYWJsZUdldENhcHRpb24pOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTSFRNTERvY3VtZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkpTSFRNTERvY3VtZW50OjpuYW1lR2V0dGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U05vZGVDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNSZWFjaGFibGVGcm9tRE9NKToK
KyAgICAgICAgKiBjc3MvQ1NTRGVmYXVsdFN0eWxlU2hlZXRzLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmVsZW1lbnRDYW5Vc2VTaW1wbGVEZWZhdWx0U3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTRGVmYXVsdFN0eWxlU2hlZXRzOjplbnN1cmVEZWZhdWx0U3R5bGVTaGVldHNGb3JFbGVtZW50
KToKKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpp
c0FjY2VwdGFibGVDU1NTdHlsZVNoZWV0UGFyZW50KToKKyAgICAgICAgKiBjc3MvU3R5bGVSZXNv
bHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjphZGp1c3RSZW5kZXJT
dHlsZSk6CisgICAgICAgICogY3NzL1N0eWxlU2hlZXRMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlN0eWxlU2hlZXRMaXN0OjpnZXROYW1lZEl0ZW0pOgorICAgICAgICAqIGRvbS9DdXJyZW50
U2NyaXB0SW5jcmVtZW50ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkN1cnJlbnRTY3JpcHRJbmNy
ZW1lbnRlcjo6Q3VycmVudFNjcmlwdEluY3JlbWVudGVyKToKKyAgICAgICAgKiBkb20vRGF0YVRy
YW5zZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFUcmFuc2Zlcjo6c2V0RHJhZ0ltYWdl
KToKKyAgICAgICAgKiBkb20vRG9jdW1lbnRPcmRlcmVkTWFwLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmtleU1hdGNoZXNNYXBOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OmtleU1hdGNoZXNMb3dl
cmNhc2VkTWFwTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjprZXlNYXRjaGVzTG93ZXJjYXNlZFVz
ZW1hcCk6CisgICAgICAgIChXZWJDb3JlOjprZXlNYXRjaGVzTGFiZWxGb3JBdHRyaWJ1dGUpOgor
ICAgICAgICAqIGRvbS9Eb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkRvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb246OmNvbGxlY3RBY3RpdmVTdHls
ZVNoZWV0cyk6CisgICAgICAgICogZG9tL05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm9k
ZTo6ZW5jbG9zaW5nTGlua0V2ZW50UGFyZW50T3JTZWxmKToKKyAgICAgICAgKiBkb20vUG9zaXRp
b24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZW5kc09mTm9kZUFyZVZpc3VhbGx5RGlzdGluY3RQ
b3NpdGlvbnMpOgorICAgICAgICAqIGRvbS9TY3JpcHRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OnRvU2NyaXB0RWxlbWVudElmUG9zc2libGUpOgorICAgICAgICAqIGRvbS9WaXNpdGVk
TGlua1N0YXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmxpbmtIYXNoRm9yRWxlbWVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpWaXNpdGVkTGlua1N0YXRlOjpkZXRlcm1pbmVMaW5rU3RhdGVTbG93
Q2FzZSk6CisgICAgICAgICogZG9tL21ha2VfbmFtZXMucGw6CisgICAgICAgIChwcmludFR5cGVI
ZWxwZXJzKToKKyAgICAgICAgKiBlZGl0aW5nL0RlbGV0ZVNlbGVjdGlvbkNvbW1hbmQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RGVsZXRlU2VsZWN0aW9uQ29tbWFuZDo6aGFuZGxlR2VuZXJhbERl
bGV0ZSk6CisgICAgICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
aW1hZ2VFbGVtZW50RnJvbUltYWdlRG9jdW1lbnQpOgorICAgICAgICAqIGVkaXRpbmcvRnJhbWVT
ZWxlY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2NhbkZvckZvcm0pOgorICAgICAgICAq
IGVkaXRpbmcvSW5zZXJ0TGluZUJyZWFrQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNlcnRMaW5lQnJlYWtDb21tYW5kOjpkb0FwcGx5KToKKyAgICAgICAgKiBlZGl0aW5nL0luc2Vy
dFBhcmFncmFwaFNlcGFyYXRvckNvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zZXJ0
UGFyYWdyYXBoU2VwYXJhdG9yQ29tbWFuZDo6ZG9BcHBseSk6CisgICAgICAgICogZWRpdGluZy9S
ZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZW1vdmVIZWFk
Q29udGVudHMpOgorICAgICAgICAqIGVkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbToKKyAg
ICAgICAgKEhUTUxDb252ZXJ0ZXI6Ol9wcm9jZXNzRWxlbWVudCk6CisgICAgICAgICogZWRpdGlu
Zy9odG1sZWRpdGluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjppc05vblRhYmxlQ2VsbEhUTUxC
bG9ja0VsZW1lbnQpOgorICAgICAgICAqIGVkaXRpbmcvbWFya3VwLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmFuY2VzdG9yVG9SZXRhaW5TdHJ1Y3R1cmVBbmRBcHBlYXJhbmNlRm9yQmxvY2spOgor
ICAgICAgICAoV2ViQ29yZTo6Y29sbGVjdEVsZW1lbnRzVG9SZW1vdmVGcm9tRnJhZ21lbnQpOgor
ICAgICAgICAqIGh0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RlRQRGlyZWN0b3J5RG9jdW1lbnRQYXJzZXI6OmxvYWREb2N1bWVudFRlbXBsYXRlKToKKyAg
ICAgICAgKiBodG1sL0Zvcm1Bc3NvY2lhdGVkRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpGb3JtQXNzb2NpYXRlZEVsZW1lbnQ6OmZpbmRBc3NvY2lhdGVkRm9ybSk6CisgICAgICAgICog
aHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjphcHBlbmRTZXJ2
ZXJNYXBNb3VzZVBvc2l0aW9uKToKKyAgICAgICAgKiBodG1sL0hUTUxBcmVhRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MQXJlYUVsZW1lbnQ6OmltYWdlRWxlbWVudCk6CisgICAg
ICAgICogaHRtbC9IVE1MRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTERvY3Vt
ZW50OjpiZ0NvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxEb2N1bWVudDo6c2V0QmdDb2xv
cik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRG9jdW1lbnQ6OmZnQ29sb3IpOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTERvY3VtZW50OjpzZXRGZ0NvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxEb2N1bWVudDo6YWxpbmtDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRG9jdW1lbnQ6
OnNldEFsaW5rQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTERvY3VtZW50OjpsaW5rQ29s
b3IpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTERvY3VtZW50OjpzZXRMaW5rQ29sb3IpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTERvY3VtZW50Ojp2bGlua0NvbG9yKToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxEb2N1bWVudDo6c2V0VmxpbmtDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
RG9jdW1lbnQ6OmlzRnJhbWVTZXQpOgorICAgICAgICAqIGh0bWwvSFRNTEVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTEVsZW1lbnQ6OnNldElubmVySFRNTCk6CisgICAgICAgICog
aHRtbC9IVE1MRmllbGRTZXRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnVwZGF0ZUZy
b21Db250cm9sRWxlbWVudHNBbmNlc3RvckRpc2FibGVkU3RhdGVVbmRlcik6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MRmllbGRTZXRFbGVtZW50OjpkaXNhYmxlZFN0YXRlQ2hhbmdlZCk6CisgICAg
ICAgICogaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OmNvbXB1dGVJc0Rpc2FibGVkQnlGaWVsZHNldEFuY2Vz
dG9yKToKKyAgICAgICAgKiBodG1sL0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uOjpIVE1MRm9ybUNvbnRy
b2xzQ29sbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUNvbnRyb2xzQ29sbGVj
dGlvbjo6Zm9ybUNvbnRyb2xFbGVtZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUNv
bnRyb2xzQ29sbGVjdGlvbjo6Zm9ybUltYWdlRWxlbWVudHMpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb246Om5hbWVkSXRlbSk6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbjo6dXBkYXRlTmFtZWRFbGVtZW50Q2FjaGUpOgor
ICAgICAgICAqIGh0bWwvSFRNTEZvcm1FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxGb3JtRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZCk6CisgICAgICAgICogaHRtbC9IVE1MRnJh
bWVFbGVtZW50QmFzZS5oOgorICAgICAgICAoV2ViQ29yZTo6aXNIVE1MRnJhbWVFbGVtZW50QmFz
ZSk6CisgICAgICAgICogaHRtbC9IVE1MSW1hZ2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTEltYWdlTG9hZGVyOjpkaXNwYXRjaExvYWRFdmVudCk6CisgICAgICAgICogaHRtbC9I
VE1MSW5wdXRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6
OmRhdGFMaXN0KToKKyAgICAgICAgKiBodG1sL0hUTUxMZWdlbmRFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxMZWdlbmRFbGVtZW50Ojp2aXJ0dWFsRm9ybSk6CisgICAgICAgICog
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVs
ZW1lbnQ6OnBhcnNlQXR0cmlidXRlKToKKyAgICAgICAgKiBodG1sL0hUTUxOYW1lQ29sbGVjdGlv
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXaW5kb3dOYW1lQ29sbGVjdGlvbjo6ZWxlbWVudE1h
dGNoZXNJZk5hbWVBdHRyaWJ1dGVNYXRjaCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudE5h
bWVDb2xsZWN0aW9uOjplbGVtZW50TWF0Y2hlcyk6CisgICAgICAgICogaHRtbC9IVE1MT3B0aW9u
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MT3B0aW9uRWxlbWVudDo6b3duZXJE
YXRhTGlzdEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE9wdGlvbkVsZW1lbnQ6OnRl
eHRJbmRlbnRlZFRvUmVzcGVjdEdyb3VwTGFiZWwpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE9w
dGlvbkVsZW1lbnQ6OmlzRGlzYWJsZWRGb3JtQ29udHJvbCk6CisgICAgICAgICogaHRtbC9IVE1M
U2VsZWN0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2VsZWN0RWxlbWVudDo6
cmVjYWxjTGlzdEl0ZW1zKToKKyAgICAgICAgKiBodG1sL0hUTUxUYWJsZUVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTFRhYmxlRWxlbWVudDo6Y2FwdGlvbik6CisgICAgICAgICog
aHRtbC9IVE1MVGFibGVQYXJ0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVGFi
bGVQYXJ0RWxlbWVudDo6ZmluZFBhcmVudFRhYmxlKToKKyAgICAgICAgKiBodG1sL0hUTUxUYWJs
ZVJvd0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRhYmxlUm93RWxlbWVudDo6
cm93SW5kZXgpOgorICAgICAgICAqIGh0bWwvSFRNTFRhYmxlUm93c0NvbGxlY3Rpb24uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTFRhYmxlUm93c0NvbGxlY3Rpb246OnJvd0FmdGVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxUYWJsZVJvd3NDb2xsZWN0aW9uOjpsYXN0Um93KToKKyAgICAg
ICAgKiBodG1sL0hUTUxUYWdOYW1lcy5pbjoKKyAgICAgICAgKiBodG1sL0xhYmVsc05vZGVMaXN0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxhYmVsc05vZGVMaXN0OjplbGVtZW50TWF0Y2hlcyk6
CisgICAgICAgICogaHRtbC9NZWRpYURvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRl
c2NlbmRlbnRWaWRlb0VsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6YW5jZXN0b3JWaWRlb0Vs
ZW1lbnQpOgorICAgICAgICAqIGh0bWwvUmFkaW9JbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmFkaW9JbnB1dFR5cGU6OmhhbmRsZUtleWRvd25FdmVudCk6CisgICAgICAgICogaHRt
bC9SYWRpb05vZGVMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJhZGlvTm9kZUxpc3Q6OlJh
ZGlvTm9kZUxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmFkaW9Ob2RlTGlzdDo6Y2hlY2tFbGVt
ZW50TWF0Y2hlc1JhZGlvTm9kZUxpc3RGaWx0ZXIpOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hU
TUxDb25zdHJ1Y3Rpb25TaXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Omhhc0ltcGxpZWRFbmRU
YWcpOgorICAgICAgICAoV2ViQ29yZTo6aW5zZXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxD
b25zdHJ1Y3Rpb25TaXRlOjppbnNlcnRIVE1MRm9ybUVsZW1lbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTENvbnN0cnVjdGlvblNpdGU6Omluc2VydFRleHROb2RlKToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxDb25zdHJ1Y3Rpb25TaXRlOjpvd25lckRvY3VtZW50Rm9yQ3VycmVudE5vZGUpOgor
ICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxFbGVtZW50U3RhY2suY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTE5hbWVzOjppc1Njb3BlTWFya2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxO
YW1lczo6aXNUYWJsZVNjb3BlTWFya2VyKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MVHJl
ZUJ1aWxkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpIVE1MVHJl
ZUJ1aWxkZXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzU3Rh
cnRUYWcpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpyZXNldEluc2VydGlv
bk1vZGVBcHByb3ByaWF0ZWx5KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6
cHJvY2Vzc0VuZFRhZyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OnByb2Nl
c3NDaGFyYWN0ZXJCdWZmZXIpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JET01BZ2Vu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6YnVpbGRPYmplY3RG
b3JOb2RlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JTdHlsZVNoZWV0OjppbmxpbmVTdHlsZVNoZWV0VGV4
dCk6CisgICAgICAgICogcGFnZS9EcmFnQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpEcmFnQ29udHJvbGxlcjo6ZHJhZ2dhYmxlRWxlbWVudCk6CisgICAgICAgICogcGFnZS9Gb2N1
c0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9jdXNDb250cm9sbGVyOjphZHZh
bmNlRm9jdXNEaXJlY3Rpb25hbGx5KToKKyAgICAgICAgKiBwYWdlL1BhZ2VTZXJpYWxpemVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VTZXJpYWxpemVyOjpzZXJpYWxpemVGcmFtZSk6Cisg
ICAgICAgICogcGFnZS9TcGF0aWFsTmF2aWdhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpG
b2N1c0NhbmRpZGF0ZTo6Rm9jdXNDYW5kaWRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6YXJlRWxl
bWVudHNPblNhbWVMaW5lKToKKyAgICAgICAgKiBwYWdlL2lvcy9GcmFtZUlPUy5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OmFuY2VzdG9yUmVzcG9uZGluZ1RvQ2xpY2tFdmVudHMpOgorICAgICAgICAq
IHJlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhpdFRlc3RS
ZXN1bHQ6OmFsdERpc3BsYXlTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6SGl0VGVzdFJlc3Vs
dDo6bWVkaWFTdXBwb3J0c0Z1bGxzY3JlZW4pOgorICAgICAgICAoV2ViQ29yZTo6SGl0VGVzdFJl
c3VsdDo6bWVkaWFFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQ6OmVu
dGVyRnVsbHNjcmVlbkZvclZpZGVvKToKKyAgICAgICAgKFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQ6
Om1lZGlhSXNWaWRlbyk6CisgICAgICAgIChXZWJDb3JlOjpIaXRUZXN0UmVzdWx0Ojppc0xpdmVM
aW5rKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQ291bnRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpwbGFuQ291bnRlcik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckltYWdlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjpSZW5kZXJJbWFnZSk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJJbWFnZTo6cGFpbnRBcmVhRWxlbWVudEZvY3VzUmluZyk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZTo6cGFpbnRJbnRvUmVjdCk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJJbWFnZTo6aW1hZ2VNYXApOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1h
Z2U6OnVwZGF0ZUFsdFRleHQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxpc3RCb3g6OnVwZGF0ZUZyb21FbGVtZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxpc3RCb3g6OnBhaW50SXRlbUZvcmVncm91bmQpOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJNYXJxdWVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlck1hcnF1ZWU6Om1hcnF1ZWVTcGVlZCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ck1lbnVMaXN0LmNwcDoKKyAgICAgICAgKFJlbmRlck1lbnVMaXN0OjppdGVtVGV4dCk6CisgICAg
ICAgIChSZW5kZXJNZW51TGlzdDo6aXRlbUlzRW5hYmxlZCk6CisgICAgICAgIChSZW5kZXJNZW51
TGlzdDo6aXRlbUlzTGFiZWwpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJNZXRlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNZXRlcjo6bWV0ZXJFbGVtZW50KToKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9i
amVjdDo6c2hvdWxkUmVzcGVjdEltYWdlT3JpZW50YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyT2JqZWN0OjpnZXRUZXh0RGVjb3JhdGlvbkNvbG9ycyk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJPYmplY3Q6Om9mZnNldFBhcmVudCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
clByb2dyZXNzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclByb2dyZXNzOjpwcm9ncmVz
c0VsZW1lbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUYWJsZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJUYWJsZTo6Y29udmVydFN0eWxlTG9naWNhbFdpZHRoVG9Db21wdXRl
ZFdpZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlOjpjb252ZXJ0U3R5bGVMb2dp
Y2FsSGVpZ2h0VG9Db21wdXRlZEhlaWdodCk6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL1NWR0lt
YWdlQ2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2VDYWNoZTo6aW1hZ2VGb3JS
ZW5kZXJlcik6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SW50ZXJuYWxzOjp1cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHNBbmRS
dW5Qb3N0TGF5b3V0VGFza3MpOgorICAgICAgICAqIHhtbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJz
ZXJMaWJ4bWwyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhNTERvY3VtZW50UGFyc2VyOjpzdGFy
dEVsZW1lbnROcyk6CisKKzIwMTQtMDktMjQgIENocmlzdG9waGUgRHVtZXogIDxjZHVtZXpAYXBw
bGUuY29tPgorCiAgICAgICAgIEFkZCBpbml0aWFsIGlzPD4oKSAvIGRvd25jYXN0PD4oKSBzdXBw
b3J0IGZvciBhbnkgdHlwZSBvZiBOb2RlcwogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTM3MDU2CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2lu
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwppbmRleCA0MDQ2MGRmM2Fm
MzZhY2NlN2M5MTI1MDllNDA2MTI5NGQ3ZTE2YmQ2Li5lNTUzMDM0MTdkNzkyNDQ5ZWE5Y2E1MDky
YWQ3MDE4M2QyNWEwYjdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMjIgQEAKIDIwMTQt
MDktMjQgIENocmlzdG9waGUgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCisgICAgICAgIFVz
ZSBpczxIVE1MKkVsZW1lbnQ+KCkgaW5zdGVhZCBvZiBpc0hUTUwqRWxlbWVudCgpIC0gUGFydCAy
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzcxMDMK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgaXM8
SFRNTCpFbGVtZW50PigpIGluc3RlYWQgb2YgaXNIVE1MKkVsZW1lbnQoKS4KKworICAgICAgICAq
IERPTUNvcmVDbGFzc2VzLmNwcDoKKyAgICAgICAgKERPTUVsZW1lbnQ6OmNyZWF0ZUluc3RhbmNl
KToKKyAgICAgICAgKiBET01IVE1MQ2xhc3Nlcy5jcHA6CisgICAgICAgIChET01IVE1MRm9ybUVs
ZW1lbnQ6OmFjdGlvbik6CisgICAgICAgIChET01IVE1MRm9ybUVsZW1lbnQ6Om1ldGhvZCk6Cisg
ICAgICAgICogV2ViRnJhbWUuY3BwOgorICAgICAgICAoZm9ybUVsZW1lbnRGcm9tRE9NRWxlbWVu
dCk6CisKKzIwMTQtMDktMjQgIENocmlzdG9waGUgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CiAgICAgICAgIEFkZCBpbml0aWFsIGlzPD4oKSAvIGRvd25jYXN0PD4oKSBzdXBwb3J0IGZvciBh
bnkgdHlwZSBvZiBOb2RlcwogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTM3MDU2CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBiZDZmN2Y0YjVlZWEyM2VkNmIwMzI0ZDAy
YzUzYjIyYjdiMjhjZTE0Li41ZWYwY2I4ZjYzZjYxYzkyZGExNDhhOTM4ZGFkOGQzOTg2MDI2MjQy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTQtMDktMjQgIENocmlzdG9waGUgRHVt
ZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBpczxIVE1MKkVsZW1lbnQ+KCkg
aW5zdGVhZCBvZiBpc0hUTUwqRWxlbWVudCgpIC0gUGFydCAyCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzcxMDMKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgaXM8SFRNTCpFbGVtZW50PigpIGluc3Rl
YWQgb2YgaXNIVE1MKkVsZW1lbnQoKS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvRE9NL0luamVjdGVkQnVuZGxlTm9kZUhhbmRsZS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OkluamVjdGVkQnVuZGxlTm9kZUhhbmRsZTo6aHRtbElGcmFtZUVsZW1lbnRDb250ZW50RnJhbWUp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYkZyYW1lOjpjb250YWluc0FueUZvcm1FbGVtZW50cyk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpk
ZXRlcm1pbmVQcmltYXJ5U25hcHNob3R0ZWRQbHVnSW4pOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0
QXNzaXN0ZWROb2RlSW5mb3JtYXRpb24pOgorCiAyMDE0LTA5LTI0ICBTYW0gV2VpbmlnICA8c2Ft
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmVtb3ZlIGluY29ycmVjdCB1c2Ugb2YgdGhlIEJLU1By
b2Nlc3NBc3NlcnRpb25BbGxvd1N1c3BlbmRPblNsZWVwIGZsYWcgZm9yIHByb2Nlc3Mgc3VzcGVu
c2lvbiBpbiBpT1MgV2ViS2l0MgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BWE9iamVjdENhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhP
YmplY3RDYWNoZS5jcHAKaW5kZXggZWFhMTYyM2UwNDU2YzRkMWEzNmU4MTExNTQzMmQyZTgxYzBj
NGI2Yy4uODk2ZTlmZjM2N2ZjNjQ3NWYzMTQxNTVkNTAwYTkzOTY0ZTk3ZDFjMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCkBAIC0xNzYsNyAr
MTc2LDcgQEAgQWNjZXNzaWJpbGl0eU9iamVjdCogQVhPYmplY3RDYWNoZTo6Zm9jdXNlZFVJRWxl
bWVudEZvclBhZ2UoY29uc3QgUGFnZSogcGFnZSkKICAgICAvLyBnZXQgdGhlIGZvY3VzZWQgbm9k
ZSBpbiB0aGUgcGFnZQogICAgIERvY3VtZW50KiBmb2N1c2VkRG9jdW1lbnQgPSBwYWdlLT5mb2N1
c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKS5kb2N1bWVudCgpOwogICAgIEVsZW1l
bnQqIGZvY3VzZWRFbGVtZW50ID0gZm9jdXNlZERvY3VtZW50LT5mb2N1c2VkRWxlbWVudCgpOwot
ICAgIGlmIChmb2N1c2VkRWxlbWVudCAmJiBpc0hUTUxBcmVhRWxlbWVudChmb2N1c2VkRWxlbWVu
dCkpCisgICAgaWYgKGZvY3VzZWRFbGVtZW50ICYmIGlzPEhUTUxBcmVhRWxlbWVudD4oZm9jdXNl
ZEVsZW1lbnQpKQogICAgICAgICByZXR1cm4gZm9jdXNlZEltYWdlTWFwVUlFbGVtZW50KGRvd25j
YXN0PEhUTUxBcmVhRWxlbWVudD4oZm9jdXNlZEVsZW1lbnQpKTsKIAogICAgIEFjY2Vzc2liaWxp
dHlPYmplY3QqIG9iaiA9IGZvY3VzZWREb2N1bWVudC0+YXhPYmplY3RDYWNoZSgpLT5nZXRPckNy
ZWF0ZShmb2N1c2VkRWxlbWVudCA/IHN0YXRpY19jYXN0PE5vZGUqPihmb2N1c2VkRWxlbWVudCkg
OiBmb2N1c2VkRG9jdW1lbnQpOwpAQCAtMzg2LDcgKzM4Niw3IEBAIEFjY2Vzc2liaWxpdHlPYmpl
Y3QqIEFYT2JqZWN0Q2FjaGU6OmdldE9yQ3JlYXRlKE5vZGUqIG5vZGUpCiAKICAgICBib29sIGlu
c2lkZU1ldGVyRWxlbWVudCA9IGZhbHNlOwogI2lmIEVOQUJMRShNRVRFUl9FTEVNRU5UKQotICAg
IGluc2lkZU1ldGVyRWxlbWVudCA9IGlzSFRNTE1ldGVyRWxlbWVudChub2RlLT5wYXJlbnRFbGVt
ZW50KCkpOworICAgIGluc2lkZU1ldGVyRWxlbWVudCA9IGlzPEhUTUxNZXRlckVsZW1lbnQ+KG5v
ZGUtPnBhcmVudEVsZW1lbnQoKSk7CiAjZW5kaWYKICAgICAKICAgICBpZiAoIWluQ2FudmFzU3Vi
dHJlZSAmJiAhaXNIaWRkZW4gJiYgIWluc2lkZU1ldGVyRWxlbWVudCkKQEAgLTkxNyw3ICs5MTcs
NyBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6OmhhbmRsZUF0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVh
bGlmaWVkTmFtZSYgYXR0ck5hbWUsIEVsZW1lbgogICAgICAgICBoYW5kbGVBcmlhUm9sZUNoYW5n
ZWQoZWxlbWVudCk7CiAgICAgZWxzZSBpZiAoYXR0ck5hbWUgPT0gYWx0QXR0ciB8fCBhdHRyTmFt
ZSA9PSB0aXRsZUF0dHIpCiAgICAgICAgIHRleHRDaGFuZ2VkKGVsZW1lbnQpOwotICAgIGVsc2Ug
aWYgKGF0dHJOYW1lID09IGZvckF0dHIgJiYgaXNIVE1MTGFiZWxFbGVtZW50KGVsZW1lbnQpKQor
ICAgIGVsc2UgaWYgKGF0dHJOYW1lID09IGZvckF0dHIgJiYgaXM8SFRNTExhYmVsRWxlbWVudD4o
ZWxlbWVudCkpCiAgICAgICAgIGxhYmVsQ2hhbmdlZChlbGVtZW50KTsKIAogICAgIGlmICghYXR0
ck5hbWUubG9jYWxOYW1lKCkuc3RyaW5nKCkuc3RhcnRzV2l0aCgiYXJpYS0iKSkKQEAgLTk0Nyw3
ICs5NDcsNyBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6OmhhbmRsZUF0dHJpYnV0ZUNoYW5nZWQoY29u
c3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUsIEVsZW1lbgogCiB2b2lkIEFYT2JqZWN0Q2FjaGU6
OmxhYmVsQ2hhbmdlZChFbGVtZW50KiBlbGVtZW50KQogewotICAgIEFTU0VSVChpc0hUTUxMYWJl
bEVsZW1lbnQoZWxlbWVudCkpOworICAgIEFTU0VSVChpczxIVE1MTGFiZWxFbGVtZW50PihlbGVt
ZW50KSk7CiAgICAgSFRNTEVsZW1lbnQqIGNvcnJlc3BvbmRpbmdDb250cm9sID0gZG93bmNhc3Q8
SFRNTExhYmVsRWxlbWVudD4oZWxlbWVudCktPmNvbnRyb2woKTsKICAgICB0ZXh0Q2hhbmdlZChj
b3JyZXNwb25kaW5nQ29udHJvbCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMaXN0Qm94T3B0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUxpc3RCb3hPcHRpb24uY3BwCmluZGV4IGMzMjcw
MDgwNjAzY2YwYzcyYzliNmNiY2Y0Zjg1NzllYzcyZjJjYTIuLmYwMzg4N2NhNmEzNWQzNmRiNTIz
Yjc4YjRmNWJhMGUyNGM1NmRmYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eUxpc3RCb3hPcHRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUxpc3RCb3hPcHRpb24uY3BwCkBAIC02NCw3ICs2
NCw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0eUxpc3RCb3hPcHRpb246OmlzRW5hYmxlZCgpIGNvbnN0
CiAgICAgaWYgKCFtX29wdGlvbkVsZW1lbnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAK
LSAgICBpZiAoaXNIVE1MT3B0R3JvdXBFbGVtZW50KG1fb3B0aW9uRWxlbWVudCkpCisgICAgaWYg
KGlzPEhUTUxPcHRHcm91cEVsZW1lbnQ+KG1fb3B0aW9uRWxlbWVudCkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAogICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShnZXRBdHRyaWJ1dGUoYXJpYV9k
aXNhYmxlZEF0dHIpLCAidHJ1ZSIpKQpAQCAtMTU5LDcgKzE1OSw3IEBAIFN0cmluZyBBY2Nlc3Np
YmlsaXR5TGlzdEJveE9wdGlvbjo6c3RyaW5nVmFsdWUoKSBjb25zdAogICAgIGlmIChpczxIVE1M
T3B0aW9uRWxlbWVudD4obV9vcHRpb25FbGVtZW50KSkKICAgICAgICAgcmV0dXJuIGRvd25jYXN0
PEhUTUxPcHRpb25FbGVtZW50PigqbV9vcHRpb25FbGVtZW50KS50ZXh0KCk7CiAgICAgCi0gICAg
aWYgKGlzSFRNTE9wdEdyb3VwRWxlbWVudChtX29wdGlvbkVsZW1lbnQpKQorICAgIGlmIChpczxI
VE1MT3B0R3JvdXBFbGVtZW50PihtX29wdGlvbkVsZW1lbnQpKQogICAgICAgICByZXR1cm4gZG93
bmNhc3Q8SFRNTE9wdEdyb3VwRWxlbWVudD4oKm1fb3B0aW9uRWxlbWVudCkuZ3JvdXBMYWJlbFRl
eHQoKTsKICAgICAKICAgICByZXR1cm4gU3RyaW5nKCk7CkBAIC0yMDUsNyArMjA1LDcgQEAgSFRN
TFNlbGVjdEVsZW1lbnQqIEFjY2Vzc2liaWxpdHlMaXN0Qm94T3B0aW9uOjpsaXN0Qm94T3B0aW9u
UGFyZW50Tm9kZSgpIGNvbnN0CiAgICAgaWYgKGlzPEhUTUxPcHRpb25FbGVtZW50PihtX29wdGlv
bkVsZW1lbnQpKQogICAgICAgICByZXR1cm4gZG93bmNhc3Q8SFRNTE9wdGlvbkVsZW1lbnQ+KCpt
X29wdGlvbkVsZW1lbnQpLm93bmVyU2VsZWN0RWxlbWVudCgpOwogCi0gICAgaWYgKGlzSFRNTE9w
dEdyb3VwRWxlbWVudChtX29wdGlvbkVsZW1lbnQpKQorICAgIGlmIChpczxIVE1MT3B0R3JvdXBF
bGVtZW50PihtX29wdGlvbkVsZW1lbnQpKQogICAgICAgICByZXR1cm4gZG93bmNhc3Q8SFRNTE9w
dEdyb3VwRWxlbWVudD4oKm1fb3B0aW9uRWxlbWVudCkub3duZXJTZWxlY3RFbGVtZW50KCk7CiAK
ICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHAKaW5kZXggMjYyZmI5NzVkMmI2OTdh
N2MwNmYxNjJkYWFhMDI2ZmQzOGE4NDZjYy4uZDc0YzEyMGJmMjFlZTliNGFiMTFjZDljNTY1YjU2
MTU2MjBiZGYwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5Tm9kZU9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHAKQEAgLTMyMSw3ICszMjEsNyBAQCBBY2Nlc3Np
YmlsaXR5Um9sZSBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6ZGV0ZXJtaW5lQWNjZXNzaWJpbGl0
eVJvbGUoKQogICAgICAgICByZXR1cm4gRGl2Um9sZTsKICAgICBpZiAobm9kZSgpLT5oYXNUYWdO
YW1lKHBUYWcpKQogICAgICAgICByZXR1cm4gUGFyYWdyYXBoUm9sZTsKLSAgICBpZiAoaXNIVE1M
TGFiZWxFbGVtZW50KG5vZGUoKSkpCisgICAgaWYgKGlzPEhUTUxMYWJlbEVsZW1lbnQ+KG5vZGUo
KSkpCiAgICAgICAgIHJldHVybiBMYWJlbFJvbGU7CiAgICAgaWYgKG5vZGUoKS0+aXNFbGVtZW50
Tm9kZSgpICYmIHRvRWxlbWVudChub2RlKCkpLT5pc0ZvY3VzYWJsZSgpKQogICAgICAgICByZXR1
cm4gR3JvdXBSb2xlOwpAQCAtNTEyLDcgKzUxMiw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0eU5vZGVP
YmplY3Q6OmlzTmF0aXZlSW1hZ2UoKSBjb25zdAogICAgIGlmICghbm9kZSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCi0gICAgaWYgKGlzSFRNTEltYWdlRWxlbWVudChub2RlKSkKKyAgICBpZiAo
aXM8SFRNTEltYWdlRWxlbWVudD4obm9kZSkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAg
aWYgKG5vZGUtPmhhc1RhZ05hbWUoYXBwbGV0VGFnKSB8fCBub2RlLT5oYXNUYWdOYW1lKGVtYmVk
VGFnKSB8fCBub2RlLT5oYXNUYWdOYW1lKG9iamVjdFRhZykpCkBAIC05NjMsNyArOTYzLDcgQEAg
RWxlbWVudCogQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmFuY2hvckVsZW1lbnQoKSBjb25zdAog
ICAgIC8vIHNlYXJjaCB1cCB0aGUgRE9NIHRyZWUgZm9yIGFuIGFuY2hvciBlbGVtZW50CiAgICAg
Ly8gTk9URTogdGhpcyBhc3N1bWVzIHRoYXQgYW55IG5vbi1pbWFnZSB3aXRoIGFuIGFuY2hvciBp
cyBhbiBIVE1MQW5jaG9yRWxlbWVudAogICAgIGZvciAoIDsgbm9kZTsgbm9kZSA9IG5vZGUtPnBh
cmVudE5vZGUoKSkgewotICAgICAgICBpZiAoaXNIVE1MQW5jaG9yRWxlbWVudChub2RlKSB8fCAo
bm9kZS0+cmVuZGVyZXIoKSAmJiBjYWNoZS0+Z2V0T3JDcmVhdGUobm9kZS0+cmVuZGVyZXIoKSkt
PmlzQW5jaG9yKCkpKQorICAgICAgICBpZiAoaXM8SFRNTEFuY2hvckVsZW1lbnQ+KG5vZGUpIHx8
IChub2RlLT5yZW5kZXJlcigpICYmIGNhY2hlLT5nZXRPckNyZWF0ZShub2RlLT5yZW5kZXJlcigp
KS0+aXNBbmNob3IoKSkpCiAgICAgICAgICAgICByZXR1cm4gdG9FbGVtZW50KG5vZGUpOwogICAg
IH0KIApAQCAtMTMwNSw3ICsxMzA1LDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6
YWx0ZXJuYXRpdmVUZXh0KFZlY3RvcjxBY2Nlc3NpYmlsaXR5VGV4dD4mIHRleHRPcmQKICAgICAg
ICAgcmV0dXJuOwogICAgIAogICAgIC8vIFRoZSBmaWVsZHNldCBlbGVtZW50IGRlcml2ZXMgaXRz
IGFsdGVybmF0aXZlIHRleHQgZnJvbSB0aGUgZmlyc3QgYXNzb2NpYXRlZCBsZWdlbmQgZWxlbWVu
dCBpZiBvbmUgaXMgYXZhaWxhYmxlLgotICAgIGlmIChpc0hUTUxGaWVsZFNldEVsZW1lbnQobm9k
ZSkpIHsKKyAgICBpZiAoaXM8SFRNTEZpZWxkU2V0RWxlbWVudD4obm9kZSkpIHsKICAgICAgICAg
QWNjZXNzaWJpbGl0eU9iamVjdCogb2JqZWN0ID0gYXhPYmplY3RDYWNoZSgpLT5nZXRPckNyZWF0
ZShkb3duY2FzdDxIVE1MRmllbGRTZXRFbGVtZW50Pigqbm9kZSkubGVnZW5kKCkpOwogICAgICAg
ICBpZiAob2JqZWN0ICYmICFvYmplY3QtPmlzSGlkZGVuKCkpCiAgICAgICAgICAgICB0ZXh0T3Jk
ZXIuYXBwZW5kKEFjY2Vzc2liaWxpdHlUZXh0KGFjY2Vzc2libGVOYW1lRm9yTm9kZShvYmplY3Qt
Pm5vZGUoKSksIEFsdGVybmF0aXZlVGV4dCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKaW5kZXggM2Uy
YThmN2FlNjVjYjA5NGY5YjA2NmU4MzlmNTI0MTU3YWM2NmRmMS4uNDQ0ZmFmYWVhMDEyMWQ5YzY5
OGEwMjMzOWFhYzE2ZDM4YWRmNTU5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCkBAIC01ODUsNyAr
NTg1LDcgQEAgRWxlbWVudCogQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6YW5jaG9yRWxlbWVu
dCgpIGNvbnN0CiAgICAgLy8gTk9URTogdGhpcyBhc3N1bWVzIHRoYXQgYW55IG5vbi1pbWFnZSB3
aXRoIGFuIGFuY2hvciBpcyBhbiBIVE1MQW5jaG9yRWxlbWVudAogICAgIE5vZGUqIG5vZGUgPSBj
dXJyUmVuZGVyZXItPm5vZGUoKTsKICAgICBmb3IgKCA7IG5vZGU7IG5vZGUgPSBub2RlLT5wYXJl
bnROb2RlKCkpIHsKLSAgICAgICAgaWYgKGlzSFRNTEFuY2hvckVsZW1lbnQobm9kZSkgfHwgKG5v
ZGUtPnJlbmRlcmVyKCkgJiYgY2FjaGUtPmdldE9yQ3JlYXRlKG5vZGUtPnJlbmRlcmVyKCkpLT5p
c0FuY2hvcigpKSkKKyAgICAgICAgaWYgKGlzPEhUTUxBbmNob3JFbGVtZW50Pihub2RlKSB8fCAo
bm9kZS0+cmVuZGVyZXIoKSAmJiBjYWNoZS0+Z2V0T3JDcmVhdGUobm9kZS0+cmVuZGVyZXIoKSkt
PmlzQW5jaG9yKCkpKQogICAgICAgICAgICAgcmV0dXJuIHRvRWxlbWVudChub2RlKTsKICAgICB9
CiAgICAgCkBAIC03ODIsNyArNzgyLDcgQEAgSFRNTExhYmVsRWxlbWVudCogQWNjZXNzaWJpbGl0
eVJlbmRlck9iamVjdDo6bGFiZWxFbGVtZW50Q29udGFpbmVyKCkgY29uc3QKICAgICAKICAgICAv
LyBmaW5kIGlmIHRoaXMgaGFzIGEgcGFyZW50IHRoYXQgaXMgYSBsYWJlbAogICAgIGZvciAoTm9k
ZSogcGFyZW50Tm9kZSA9IG1fcmVuZGVyZXItPm5vZGUoKTsgcGFyZW50Tm9kZTsgcGFyZW50Tm9k
ZSA9IHBhcmVudE5vZGUtPnBhcmVudE5vZGUoKSkgewotICAgICAgICBpZiAoaXNIVE1MTGFiZWxF
bGVtZW50KHBhcmVudE5vZGUpKQorICAgICAgICBpZiAoaXM8SFRNTExhYmVsRWxlbWVudD4ocGFy
ZW50Tm9kZSkpCiAgICAgICAgICAgICByZXR1cm4gZG93bmNhc3Q8SFRNTExhYmVsRWxlbWVudD4o
cGFyZW50Tm9kZSk7CiAgICAgfQogICAgIApAQCAtOTE0LDcgKzkxNCw3IEBAIEFjY2Vzc2liaWxp
dHlPYmplY3QqIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmludGVybmFsTGlua0VsZW1lbnQo
KSBjb25zdAogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAKICAgICAvLyBSaWdodCBub3cs
IHdlIGRvIG5vdCBzdXBwb3J0IEFSSUEgbGlua3MgYXMgaW50ZXJuYWwgbGluayBlbGVtZW50cwot
ICAgIGlmICghaXNIVE1MQW5jaG9yRWxlbWVudChlbGVtZW50KSkKKyAgICBpZiAoIWlzPEhUTUxB
bmNob3JFbGVtZW50PihlbGVtZW50KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgSFRN
TEFuY2hvckVsZW1lbnQmIGFuY2hvciA9IGRvd25jYXN0PEhUTUxBbmNob3JFbGVtZW50PigqZWxl
bWVudCk7CiAgICAgCkBAIC0xMjc1LDcgKzEyNzUsNyBAQCBib29sIEFjY2Vzc2liaWxpdHlSZW5k
ZXJPYmplY3Q6OmNvbXB1dGVBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkgY29uc3QKICAgICAKICAg
ICAvLyBkb24ndCBpZ25vcmUgbGFiZWxzLCBiZWNhdXNlIHRoZXkgc2VydmUgYXMgVGl0bGVVSUVs
ZW1lbnRzCiAgICAgTm9kZSogbm9kZSA9IG1fcmVuZGVyZXItPm5vZGUoKTsKLSAgICBpZiAobm9k
ZSAmJiBpc0hUTUxMYWJlbEVsZW1lbnQobm9kZSkpCisgICAgaWYgKG5vZGUgJiYgaXM8SFRNTExh
YmVsRWxlbWVudD4obm9kZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKICAgICAvLyBB
bnl0aGluZyB0aGF0IGlzIGNvbnRlbnQgZWRpdGFibGUgc2hvdWxkIG5vdCBiZSBpZ25vcmVkLgpA
QCAtMTUwNyw3ICsxNTA3LDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpzZXRT
ZWxlY3RlZFRleHRSYW5nZShjb25zdCBQbGFpblRleHRSYW5nZSYgcmFuZ2UKIAogVVJMIEFjY2Vz
c2liaWxpdHlSZW5kZXJPYmplY3Q6OnVybCgpIGNvbnN0CiB7Ci0gICAgaWYgKGlzQW5jaG9yKCkg
JiYgaXNIVE1MQW5jaG9yRWxlbWVudChtX3JlbmRlcmVyLT5ub2RlKCkpKSB7CisgICAgaWYgKGlz
QW5jaG9yKCkgJiYgaXM8SFRNTEFuY2hvckVsZW1lbnQ+KG1fcmVuZGVyZXItPm5vZGUoKSkpIHsK
ICAgICAgICAgaWYgKEhUTUxBbmNob3JFbGVtZW50KiBhbmNob3IgPSBkb3duY2FzdDxIVE1MQW5j
aG9yRWxlbWVudD4oYW5jaG9yRWxlbWVudCgpKSkKICAgICAgICAgICAgIHJldHVybiBhbmNob3It
PmhyZWYoKTsKICAgICB9CkBAIC0xNTE1LDcgKzE1MTUsNyBAQCBVUkwgQWNjZXNzaWJpbGl0eVJl
bmRlck9iamVjdDo6dXJsKCkgY29uc3QKICAgICBpZiAoaXNXZWJBcmVhKCkpCiAgICAgICAgIHJl
dHVybiBtX3JlbmRlcmVyLT5kb2N1bWVudCgpLnVybCgpOwogICAgIAotICAgIGlmIChpc0ltYWdl
KCkgJiYgbV9yZW5kZXJlci0+bm9kZSgpICYmIGlzSFRNTEltYWdlRWxlbWVudChtX3JlbmRlcmVy
LT5ub2RlKCkpKQorICAgIGlmIChpc0ltYWdlKCkgJiYgbV9yZW5kZXJlci0+bm9kZSgpICYmIGlz
PEhUTUxJbWFnZUVsZW1lbnQ+KG1fcmVuZGVyZXItPm5vZGUoKSkpCiAgICAgICAgIHJldHVybiBk
b3duY2FzdDxIVE1MSW1hZ2VFbGVtZW50PigqbV9yZW5kZXJlci0+bm9kZSgpKS5zcmMoKTsKICAg
ICAKICAgICBpZiAoaXNJbnB1dEltYWdlKCkpCkBAIC0xNzU5LDcgKzE3NTksNyBAQCB2b2lkIEFj
Y2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmdldERvY3VtZW50TGlua3MoQWNjZXNzaWJpbGl0eUNo
aWxkcmVuVmVjdG9yJiByZQogICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoYXhvYmopOwog
ICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgTm9kZSogcGFyZW50ID0gY3Vyci0+cGFyZW50
Tm9kZSgpOwotICAgICAgICAgICAgaWYgKHBhcmVudCAmJiBpc0hUTUxBcmVhRWxlbWVudChjdXJy
KSAmJiBpc0hUTUxNYXBFbGVtZW50KHBhcmVudCkpIHsKKyAgICAgICAgICAgIGlmIChwYXJlbnQg
JiYgaXM8SFRNTEFyZWFFbGVtZW50PihjdXJyKSAmJiBpczxIVE1MTWFwRWxlbWVudD4ocGFyZW50
KSkgewogICAgICAgICAgICAgICAgIEFjY2Vzc2liaWxpdHlJbWFnZU1hcExpbmsqIGFyZWFPYmpl
Y3QgPSB0b0FjY2Vzc2liaWxpdHlJbWFnZU1hcExpbmsoYXhPYmplY3RDYWNoZSgpLT5nZXRPckNy
ZWF0ZShJbWFnZU1hcExpbmtSb2xlKSk7CiAgICAgICAgICAgICAgICAgSFRNTE1hcEVsZW1lbnQm
IG1hcCA9IGRvd25jYXN0PEhUTUxNYXBFbGVtZW50PigqcGFyZW50KTsKICAgICAgICAgICAgICAg
ICBhcmVhT2JqZWN0LT5zZXRIVE1MQXJlYUVsZW1lbnQoZG93bmNhc3Q8SFRNTEFyZWFFbGVtZW50
PihjdXJyKSk7CkBAIC0yMTU4LDcgKzIxNTgsNyBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nl
c3NpYmlsaXR5UmVuZGVyT2JqZWN0OjphY2Nlc3NpYmlsaXR5SW1hZ2VNYXBIaXRUZXN0KEhUTQog
CiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50ID0gbnVsbHB0cjsKICAgICBmb3IgKEVs
ZW1lbnQqIG1hcFBhcmVudCA9IGFyZWEtPnBhcmVudEVsZW1lbnQoKTsgbWFwUGFyZW50OyBtYXBQ
YXJlbnQgPSBtYXBQYXJlbnQtPnBhcmVudEVsZW1lbnQoKSkgewotICAgICAgICBpZiAoaXNIVE1M
TWFwRWxlbWVudChtYXBQYXJlbnQpKSB7CisgICAgICAgIGlmIChpczxIVE1MTWFwRWxlbWVudD4o
bWFwUGFyZW50KSkgewogICAgICAgICAgICAgcGFyZW50ID0gYWNjZXNzaWJpbGl0eVBhcmVudEZv
ckltYWdlTWFwKGRvd25jYXN0PEhUTUxNYXBFbGVtZW50PihtYXBQYXJlbnQpKTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9CkBAIC0yMjA4LDcgKzIyMDgsNyBAQCBBY2Nlc3NpYmlsaXR5
T2JqZWN0KiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjphY2Nlc3NpYmlsaXR5SGl0VGVzdChj
b25zdCBJbnRQbwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBOb2RlKiBub2RlID0gaGl0
VGVzdFJlc3VsdC5pbm5lck5vZGUoKS0+ZGVwcmVjYXRlZFNoYWRvd0FuY2VzdG9yTm9kZSgpOwog
Ci0gICAgaWYgKGlzSFRNTEFyZWFFbGVtZW50KG5vZGUpKQorICAgIGlmIChpczxIVE1MQXJlYUVs
ZW1lbnQ+KG5vZGUpKQogICAgICAgICByZXR1cm4gYWNjZXNzaWJpbGl0eUltYWdlTWFwSGl0VGVz
dChkb3duY2FzdDxIVE1MQXJlYUVsZW1lbnQ+KG5vZGUpLCBwb2ludCk7CiAgICAgCiAgICAgaWYg
KGlzPEhUTUxPcHRpb25FbGVtZW50Pihub2RlKSkKQEAgLTI1NzIsNyArMjU3Miw3IEBAIEFjY2Vz
c2liaWxpdHlSb2xlIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmRldGVybWluZUFjY2Vzc2li
aWxpdHlSb2xlKCkKICAgICBpZiAobm9kZSAmJiBub2RlLT5oYXNUYWdOYW1lKHRyVGFnKSkKICAg
ICAgICAgcmV0dXJuIFJvd1JvbGU7CiAKLSAgICBpZiAobm9kZSAmJiBpc0hUTUxUYWJsZUVsZW1l
bnQobm9kZSkpCisgICAgaWYgKG5vZGUgJiYgaXM8SFRNTFRhYmxlRWxlbWVudD4obm9kZSkpCiAg
ICAgICAgIHJldHVybiBUYWJsZVJvbGU7CiAjZW5kaWYKIApAQCAtMjU4Niw3ICsyNTg2LDcgQEAg
QWNjZXNzaWJpbGl0eVJvbGUgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6ZGV0ZXJtaW5lQWNj
ZXNzaWJpbGl0eVJvbGUoKQogICAgIGlmIChub2RlICYmIG5vZGUtPmhhc1RhZ05hbWUocFRhZykp
CiAgICAgICAgIHJldHVybiBQYXJhZ3JhcGhSb2xlOwogCi0gICAgaWYgKG5vZGUgJiYgaXNIVE1M
TGFiZWxFbGVtZW50KG5vZGUpKQorICAgIGlmIChub2RlICYmIGlzPEhUTUxMYWJlbEVsZW1lbnQ+
KG5vZGUpKQogICAgICAgICByZXR1cm4gTGFiZWxSb2xlOwogCiAgICAgaWYgKG5vZGUgJiYgbm9k
ZS0+aGFzVGFnTmFtZShkZm5UYWcpKQpAQCAtMjU5NSw3ICsyNTk1LDcgQEAgQWNjZXNzaWJpbGl0
eVJvbGUgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6ZGV0ZXJtaW5lQWNjZXNzaWJpbGl0eVJv
bGUoKQogICAgIGlmIChub2RlICYmIG5vZGUtPmhhc1RhZ05hbWUoZGl2VGFnKSkKICAgICAgICAg
cmV0dXJuIERpdlJvbGU7CiAKLSAgICBpZiAobm9kZSAmJiBpc0hUTUxGb3JtRWxlbWVudChub2Rl
KSkKKyAgICBpZiAobm9kZSAmJiBpczxIVE1MRm9ybUVsZW1lbnQ+KG5vZGUpKQogICAgICAgICBy
ZXR1cm4gRm9ybVJvbGU7CiAKICAgICBpZiAobm9kZSAmJiBub2RlLT5oYXNUYWdOYW1lKGFydGlj
bGVUYWcpKQpAQCAtMjYxNyw5ICsyNjE3LDkgQEAgQWNjZXNzaWJpbGl0eVJvbGUgQWNjZXNzaWJp
bGl0eVJlbmRlck9iamVjdDo6ZGV0ZXJtaW5lQWNjZXNzaWJpbGl0eVJvbGUoKQogICAgICAgICBy
ZXR1cm4gTGFuZG1hcmtDb250ZW50SW5mb1JvbGU7CiAKICNpZiBFTkFCTEUoVklERU8pCi0gICAg
aWYgKG5vZGUgJiYgaXNIVE1MVmlkZW9FbGVtZW50KG5vZGUpKQorICAgIGlmIChub2RlICYmIGlz
PEhUTUxWaWRlb0VsZW1lbnQ+KG5vZGUpKQogICAgICAgICByZXR1cm4gVmlkZW9Sb2xlOwotICAg
IGlmIChub2RlICYmIGlzSFRNTEF1ZGlvRWxlbWVudChub2RlKSkKKyAgICBpZiAobm9kZSAmJiBp
czxIVE1MQXVkaW9FbGVtZW50Pihub2RlKSkKICAgICAgICAgcmV0dXJuIEF1ZGlvUm9sZTsKICNl
bmRpZgogICAgIApAQCAtMzI2OSw3ICszMjY5LDcgQEAgU3RyaW5nIEFjY2Vzc2liaWxpdHlSZW5k
ZXJPYmplY3Q6OnN0cmluZ1ZhbHVlRm9yTVNBQSgpIGNvbnN0CiB7CiAgICAgaWYgKGlzTGlua2Fi
bGUoKnRoaXMpKSB7CiAgICAgICAgIEVsZW1lbnQqIGFuY2hvciA9IGFuY2hvckVsZW1lbnQoKTsK
LSAgICAgICAgaWYgKGFuY2hvciAmJiBpc0hUTUxBbmNob3JFbGVtZW50KGFuY2hvcikpCisgICAg
ICAgIGlmIChhbmNob3IgJiYgaXM8SFRNTEFuY2hvckVsZW1lbnQ+KGFuY2hvcikpCiAgICAgICAg
ICAgICByZXR1cm4gZG93bmNhc3Q8SFRNTEFuY2hvckVsZW1lbnQ+KCphbmNob3IpLmhyZWYoKTsK
ICAgICB9CiAKQEAgLTMyODIsNyArMzI4Miw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0eVJlbmRlck9i
amVjdDo6aXNMaW5rZWQoKSBjb25zdAogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBFbGVt
ZW50KiBhbmNob3IgPSBhbmNob3JFbGVtZW50KCk7Ci0gICAgaWYgKCFhbmNob3IgfHwgIWlzSFRN
TEFuY2hvckVsZW1lbnQoYW5jaG9yKSkKKyAgICBpZiAoIWFuY2hvciB8fCAhaXM8SFRNTEFuY2hv
ckVsZW1lbnQ+KGFuY2hvcikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHJldHVybiAh
ZG93bmNhc3Q8SFRNTEFuY2hvckVsZW1lbnQ+KCphbmNob3IpLmhyZWYoKS5pc0VtcHR5KCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJs
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZS5j
cHAKaW5kZXggZTI1NDQzY2ZjNzZjNzk2MDg3Mjk2NzhkMjc2YWRmZjQ1YTFhZWNhYy4uNmI3ZTZj
ZjRkNDc2Njg1NDI5MDEwNzU4OWZmOWU5MjgwMTRlZTBkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmNwcApAQCAtOTYsNyArOTYs
NyBAQCBIVE1MVGFibGVFbGVtZW50KiBBY2Nlc3NpYmlsaXR5VGFibGU6OnRhYmxlRWxlbWVudCgp
IGNvbnN0CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIAogICAgIFJlbmRlclRhYmxlKiB0
YWJsZSA9IHRvUmVuZGVyVGFibGUobV9yZW5kZXJlcik7Ci0gICAgaWYgKHRhYmxlLT5lbGVtZW50
KCkgJiYgaXNIVE1MVGFibGVFbGVtZW50KHRhYmxlLT5lbGVtZW50KCkpKQorICAgIGlmICh0YWJs
ZS0+ZWxlbWVudCgpICYmIGlzPEhUTUxUYWJsZUVsZW1lbnQ+KHRhYmxlLT5lbGVtZW50KCkpKQog
ICAgICAgICByZXR1cm4gZG93bmNhc3Q8SFRNTFRhYmxlRWxlbWVudD4odGFibGUtPmVsZW1lbnQo
KSk7CiAgICAgCiAgICAgLy8gSWYgdGhlIHRhYmxlIGhhcyBhIGRpc3BsYXk6dGFibGUtcm93LWdy
b3VwLCB0aGVuIHRoZSBSZW5kZXJUYWJsZSBkb2VzIG5vdCBoYXZlIGEgcG9pbnRlciB0byBpdCdz
IEhUTUxUYWJsZUVsZW1lbnQuCkBAIC0xMDYsNyArMTA2LDcgQEAgSFRNTFRhYmxlRWxlbWVudCog
QWNjZXNzaWJpbGl0eVRhYmxlOjp0YWJsZUVsZW1lbnQoKSBjb25zdAogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKICAgICAKICAgICBFbGVtZW50KiBhY3R1YWxUYWJsZSA9IGZpcnN0Qm9keS0+ZWxl
bWVudCgpLT5wYXJlbnRFbGVtZW50KCk7Ci0gICAgaWYgKCFhY3R1YWxUYWJsZSB8fCAhaXNIVE1M
VGFibGVFbGVtZW50KGFjdHVhbFRhYmxlKSkKKyAgICBpZiAoIWFjdHVhbFRhYmxlIHx8ICFpczxI
VE1MVGFibGVFbGVtZW50PihhY3R1YWxUYWJsZSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
ICAgIAogICAgIHJldHVybiBkb3duY2FzdDxIVE1MVGFibGVFbGVtZW50PihhY3R1YWxUYWJsZSk7
CkBAIC0zMjgsNyArMzI4LDcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5VGFibGU6OmlzVGFibGVFeHBv
c2FibGVUaHJvdWdoQWNjZXNzaWJpbGl0eSgpIGNvbnN0CiAgICAgLy8gR3RrKyBBVHMgZXhwZWN0
IGFsbCB0YWJsZXMgdG8gYmUgZXhwb3NlZCBhcyB0YWJsZXMuCiAjaWYgUExBVEZPUk0oR1RLKSB8
fCBQTEFURk9STShFRkwpCiAgICAgRWxlbWVudCogdGFibGVOb2RlID0gdG9SZW5kZXJUYWJsZSht
X3JlbmRlcmVyKS0+ZWxlbWVudCgpOwotICAgIHJldHVybiB0YWJsZU5vZGUgJiYgaXNIVE1MVGFi
bGVFbGVtZW50KHRhYmxlTm9kZSk7CisgICAgcmV0dXJuIHRhYmxlTm9kZSAmJiBpczxIVE1MVGFi
bGVFbGVtZW50Pih0YWJsZU5vZGUpOwogI2VuZGlmCiAKICAgICByZXR1cm4gaXNEYXRhVGFibGUo
KTsKQEAgLTYwNyw3ICs2MDcsNyBAQCBTdHJpbmcgQWNjZXNzaWJpbGl0eVRhYmxlOjp0aXRsZSgp
IGNvbnN0CiAgICAgCiAgICAgLy8gc2VlIGlmIHRoZXJlIGlzIGEgY2FwdGlvbgogICAgIE5vZGUq
IHRhYmxlRWxlbWVudCA9IG1fcmVuZGVyZXItPm5vZGUoKTsKLSAgICBpZiAodGFibGVFbGVtZW50
ICYmIGlzSFRNTFRhYmxlRWxlbWVudCh0YWJsZUVsZW1lbnQpKSB7CisgICAgaWYgKHRhYmxlRWxl
bWVudCAmJiBpczxIVE1MVGFibGVFbGVtZW50Pih0YWJsZUVsZW1lbnQpKSB7CiAgICAgICAgIGlm
IChIVE1MVGFibGVDYXB0aW9uRWxlbWVudCogY2FwdGlvbiA9IGRvd25jYXN0PEhUTUxUYWJsZUVs
ZW1lbnQ+KCp0YWJsZUVsZW1lbnQpLmNhcHRpb24oKSkKICAgICAgICAgICAgIHRpdGxlID0gY2Fw
dGlvbi0+aW5uZXJUZXh0KCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZVRhYmxlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VUYWJs
ZS5jcHAKaW5kZXggNjU5Yjg4ZjhjNzlhYmExYzQwMTAxYjY5OTI5MTZkNGViNDYzNzE1ZC4uMzQ5
MmI3ZTBlZjJjNzdmOWQ0M2U5Yzc2YmZhNmU4NmVjZWZjNjBjOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZVRhYmxl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3Np
YmxlSW50ZXJmYWNlVGFibGUuY3BwCkBAIC0yNDQsNyArMjQ0LDcgQEAgc3RhdGljIEF0a09iamVj
dCogd2Via2l0QWNjZXNzaWJsZVRhYmxlR2V0Q2FwdGlvbihBdGtUYWJsZSogdGFibGUpCiAgICAg
QWNjZXNzaWJpbGl0eU9iamVjdCogYWNjVGFibGUgPSBjb3JlKHRhYmxlKTsKICAgICBpZiAoYWNj
VGFibGUtPmlzQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdCgpKSB7CiAgICAgICAgIE5vZGUqIG5v
ZGUgPSBhY2NUYWJsZS0+bm9kZSgpOwotICAgICAgICBpZiAobm9kZSAmJiBpc0hUTUxUYWJsZUVs
ZW1lbnQobm9kZSkpIHsKKyAgICAgICAgaWYgKG5vZGUgJiYgaXM8SFRNTFRhYmxlRWxlbWVudD4o
bm9kZSkpIHsKICAgICAgICAgICAgIEhUTUxUYWJsZUNhcHRpb25FbGVtZW50KiBjYXB0aW9uID0g
ZG93bmNhc3Q8SFRNTFRhYmxlRWxlbWVudD4oKm5vZGUpLmNhcHRpb24oKTsKICAgICAgICAgICAg
IGlmIChjYXB0aW9uKQogICAgICAgICAgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5T2JqZWN0
OjpmaXJzdEFjY2Vzc2libGVPYmplY3RGcm9tTm9kZShjYXB0aW9uLT5yZW5kZXJlcigpLT5lbGVt
ZW50KCkpLT53cmFwcGVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0hUTUxEb2N1bWVudEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0hUTUxEb2N1bWVudEN1c3RvbS5jcHAKaW5kZXggNzk1M2M2Y2Q1YmUzNWNiNWE4NTRiYTAwMmRm
MGVjOWU5MWM2MWRlYS4uNTIyMWUxZGVkNTRiYWI5ZjFmOGE4M2FkNTYwMTFkNmM4ZGVmNDk5ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MRG9jdW1lbnRDdXN0
b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTERvY3VtZW50Q3Vz
dG9tLmNwcApAQCAtNzMsNyArNzMsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0hUTUxEb2N1bWVudDo6
bmFtZUdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRQogICAgIH0K
IAogICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBkb2N1bWVudC5kb2N1bWVudE5hbWVkSXRlbSgqYXRv
bWljUHJvcGVydHlOYW1lKTsKLSAgICBpZiAoVU5MSUtFTFkoaXNIVE1MSUZyYW1lRWxlbWVudChl
bGVtZW50KSkpIHsKKyAgICBpZiAoVU5MSUtFTFkoaXM8SFRNTElGcmFtZUVsZW1lbnQ+KGVsZW1l
bnQpKSkgewogICAgICAgICBpZiAoRnJhbWUqIGZyYW1lID0gZG93bmNhc3Q8SFRNTElGcmFtZUVs
ZW1lbnQ+KCplbGVtZW50KS5jb250ZW50RnJhbWUoKSkKICAgICAgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUodG9KUyhleGVjLCBmcmFtZSkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU05vZGVDdXN0b20uY3BwCmluZGV4IDJlMWQxMjY2ZTNjMjNiODE0ZGE5OWZl
Zjk4MTU4NmVkNzk1M2ZmMDAuLjdjYWIxODRjM2UwNThiOGVlMjdiMjcxMDg3ZmRhOWI0ZDRjNGQy
ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUN1c3RvbS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlQ3VzdG9tLmNwcApAQCAt
MTA1LDEyICsxMDUsMTIgQEAgc3RhdGljIGlubGluZSBib29sIGlzUmVhY2hhYmxlRnJvbURPTShK
U05vZGUqIGpzTm9kZSwgTm9kZSogbm9kZSwgU2xvdFZpc2l0b3ImIHYKICAgICAgICAgICAgIC8v
IGJlY2F1c2UgaXQgaXMgdGhlIG9ubHkgdGhpbmcga2VlcGluZyB0aGUgaW1hZ2UgZWxlbWVudCBh
bGl2ZSwgYW5kIGlmCiAgICAgICAgICAgICAvLyB0aGUgZWxlbWVudCBpcyBkZXN0cm95ZWQsIGl0
cyBsb2FkIGV2ZW50IHdpbGwgbm90IGZpcmUuCiAgICAgICAgICAgICAvLyBGSVhNRTogVGhlIERP
TSBzaG91bGQgbWFuYWdlIHRoaXMgaXNzdWUgd2l0aG91dCB0aGUgaGVscCBvZiBKYXZhU2NyaXB0
IHdyYXBwZXJzLgotICAgICAgICAgICAgaWYgKGlzSFRNTEltYWdlRWxlbWVudChlbGVtZW50KSkg
eworICAgICAgICAgICAgaWYgKGlzPEhUTUxJbWFnZUVsZW1lbnQ+KGVsZW1lbnQpKSB7CiAgICAg
ICAgICAgICAgICAgaWYgKGRvd25jYXN0PEhUTUxJbWFnZUVsZW1lbnQ+KGVsZW1lbnQpLmhhc1Bl
bmRpbmdBY3Rpdml0eSgpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAg
ICAgICAgIH0KICNpZiBFTkFCTEUoVklERU8pCi0gICAgICAgICAgICBlbHNlIGlmIChpc0hUTUxB
dWRpb0VsZW1lbnQoZWxlbWVudCkpIHsKKyAgICAgICAgICAgIGVsc2UgaWYgKGlzPEhUTUxBdWRp
b0VsZW1lbnQ+KGVsZW1lbnQpKSB7CiAgICAgICAgICAgICAgICAgaWYgKCFkb3duY2FzdDxIVE1M
QXVkaW9FbGVtZW50PihlbGVtZW50KS5wYXVzZWQoKSkKICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTRGVmYXVsdFN0eWxlU2hlZXRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NEZWZhdWx0
U3R5bGVTaGVldHMuY3BwCmluZGV4IDczOWFhNjEwYzkwNWQyNGFjNzA2YTQyZDk4MmYyN2JhY2Yw
ZDIyOTguLjE2NGUyYWY1YWU1ZGRjNzBkMWU1ZWRlNzU4NmZkMWUwMjRiYTNmNWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NEZWZhdWx0U3R5bGVTaGVldHMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NEZWZhdWx0U3R5bGVTaGVldHMuY3BwCkBAIC02NCw3ICs2NCw3
IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBzaW1wbGVVc2VyQWdlbnRTdHlsZVNoZWV0ID0gImh0bWws
Ym9keSxkaXZ7ZGlzcGxheTpibG9ja31oZWFkCiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBlbGVtZW50
Q2FuVXNlU2ltcGxlRGVmYXVsdFN0eWxlKEVsZW1lbnQqIGUpCiB7Ci0gICAgcmV0dXJuIGUtPmhh
c1RhZ05hbWUoaHRtbFRhZykgfHwgZS0+aGFzVGFnTmFtZShoZWFkVGFnKSB8fCBlLT5oYXNUYWdO
YW1lKGJvZHlUYWcpIHx8IGUtPmhhc1RhZ05hbWUoZGl2VGFnKSB8fCBlLT5oYXNUYWdOYW1lKHNw
YW5UYWcpIHx8IGUtPmhhc1RhZ05hbWUoYnJUYWcpIHx8IGlzSFRNTEFuY2hvckVsZW1lbnQoZSk7
CisgICAgcmV0dXJuIGUtPmhhc1RhZ05hbWUoaHRtbFRhZykgfHwgZS0+aGFzVGFnTmFtZShoZWFk
VGFnKSB8fCBlLT5oYXNUYWdOYW1lKGJvZHlUYWcpIHx8IGUtPmhhc1RhZ05hbWUoZGl2VGFnKSB8
fCBlLT5oYXNUYWdOYW1lKHNwYW5UYWcpIHx8IGUtPmhhc1RhZ05hbWUoYnJUYWcpIHx8IGlzPEhU
TUxBbmNob3JFbGVtZW50PihlKTsKIH0KIAogc3RhdGljIGNvbnN0IE1lZGlhUXVlcnlFdmFsdWF0
b3ImIHNjcmVlbkV2YWwoKQpAQCAtMTcyLDcgKzE3Miw3IEBAIHZvaWQgQ1NTRGVmYXVsdFN0eWxl
U2hlZXRzOjplbnN1cmVEZWZhdWx0U3R5bGVTaGVldHNGb3JFbGVtZW50KEVsZW1lbnQqIGVsZW1l
bnQsCiAjZW5kaWYKIAogI2lmIEVOQUJMRShWSURFTykKLSAgICBpZiAoIW1lZGlhQ29udHJvbHNT
dHlsZVNoZWV0ICYmIChlbGVtZW50LT5oYXNUYWdOYW1lKHZpZGVvVGFnKSB8fCBpc0hUTUxBdWRp
b0VsZW1lbnQoZWxlbWVudCkpKSB7CisgICAgaWYgKCFtZWRpYUNvbnRyb2xzU3R5bGVTaGVldCAm
JiAoaXM8SFRNTFZpZGVvRWxlbWVudD4oZWxlbWVudCkgfHwgaXM8SFRNTEF1ZGlvRWxlbWVudD4o
ZWxlbWVudCkpKSB7CiAgICAgICAgIFN0cmluZyBtZWRpYVJ1bGVzID0gUmVuZGVyVGhlbWU6OnRo
ZW1lRm9yUGFnZShlbGVtZW50LT5kb2N1bWVudCgpLnBhZ2UoKSktPm1lZGlhQ29udHJvbHNTdHls
ZVNoZWV0KCk7CiAgICAgICAgIGlmIChtZWRpYVJ1bGVzLmlzRW1wdHkoKSkKICAgICAgICAgICAg
IG1lZGlhUnVsZXMgPSBTdHJpbmcobWVkaWFDb250cm9sc1VzZXJBZ2VudFN0eWxlU2hlZXQsIHNp
emVvZihtZWRpYUNvbnRyb2xzVXNlckFnZW50U3R5bGVTaGVldCkpICsgUmVuZGVyVGhlbWU6OnRo
ZW1lRm9yUGFnZShlbGVtZW50LT5kb2N1bWVudCgpLnBhZ2UoKSktPmV4dHJhTWVkaWFDb250cm9s
c1N0eWxlU2hlZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNo
ZWV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmNwcAppbmRleCBiODM4
MzU1MmM4OWIzYWMxMTg5MWFjNmIxMzk1MDU5OTk1MTQ4NTgyLi5lM2U5ZTMxZWM4OTIyNjM2MTkz
YzE4NjAyMjhmNzc0MDVlMTk2ODVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
U3R5bGVTaGVldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuY3Bw
CkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiTWVkaWFMaXN0LmgiCiAjaW5jbHVkZSAiTm9k
ZS5oIgogI2luY2x1ZGUgIlNWR05hbWVzLmgiCisjaW5jbHVkZSAiU1ZHU3R5bGVFbGVtZW50Lkgi
CiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJTdHlsZVJlc29sdmVyLmgi
CiAjaW5jbHVkZSAiU3R5bGVSdWxlLmgiCkBAIC02Nyw5ICs2OCw5IEBAIHN0YXRpYyBib29sIGlz
QWNjZXB0YWJsZUNTU1N0eWxlU2hlZXRQYXJlbnQoTm9kZSogcGFyZW50Tm9kZSkKICAgICAvLyBP
bmx5IHRoZXNlIG5vZGVzIGNhbiBiZSBwYXJlbnRzIG9mIFN0eWxlU2hlZXRzLCBhbmQgdGhleSBu
ZWVkIHRvIGNhbGwgY2xlYXJPd25lck5vZGUoKSB3aGVuIG1vdmVkIG91dCBvZiBkb2N1bWVudC4K
ICAgICByZXR1cm4gIXBhcmVudE5vZGUKICAgICAgICAgfHwgcGFyZW50Tm9kZS0+aXNEb2N1bWVu
dE5vZGUoKQotICAgICAgICB8fCBwYXJlbnROb2RlLT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6bGlu
a1RhZykKLSAgICAgICAgfHwgaXNIVE1MU3R5bGVFbGVtZW50KHBhcmVudE5vZGUpCi0gICAgICAg
IHx8IHBhcmVudE5vZGUtPmhhc1RhZ05hbWUoU1ZHTmFtZXM6OnN0eWxlVGFnKQorICAgICAgICB8
fCBpczxIVE1MTGlua0VsZW1lbnQ+KHBhcmVudE5vZGUpCisgICAgICAgIHx8IGlzPEhUTUxTdHls
ZUVsZW1lbnQ+KHBhcmVudE5vZGUpCisgICAgICAgIHx8IGlzPFNWR1N0eWxlRWxlbWVudD4ocGFy
ZW50Tm9kZSkKICAgICAgICAgfHwgcGFyZW50Tm9kZS0+bm9kZVR5cGUoKSA9PSBOb2RlOjpQUk9D
RVNTSU5HX0lOU1RSVUNUSU9OX05PREU7CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJl
c29sdmVyLmNwcAppbmRleCA5MDc2NmJiN2MxZWQ1ZTQ0ZGE1NTQ3MTE2ZDI1OWY0MWMzODc4N2M3
Li42N2E4ZDczYjgwYzllM2JiYjZhOTJlNjMzZTRmNmE3NGEwYWYwNmI1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL1N0eWxlUmVzb2x2ZXIuY3BwCkBAIC0xMTcwLDcgKzExNzAsNyBAQCB2b2lkIFN0eWxlUmVz
b2x2ZXI6OmFkanVzdFJlbmRlclN0eWxlKFJlbmRlclN0eWxlJiBzdHlsZSwgY29uc3QgUmVuZGVy
U3R5bGUmIHBhcgogICAgICAgICAgICAgaWYgKGUtPmhhc1RhZ05hbWUodGRUYWcpKSB7CiAgICAg
ICAgICAgICAgICAgc3R5bGUuc2V0RGlzcGxheShUQUJMRV9DRUxMKTsKICAgICAgICAgICAgICAg
ICBzdHlsZS5zZXRGbG9hdGluZyhOb0Zsb2F0KTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoaXNI
VE1MVGFibGVFbGVtZW50KGUpKQorICAgICAgICAgICAgfSBlbHNlIGlmIChpczxIVE1MVGFibGVF
bGVtZW50PihlKSkKICAgICAgICAgICAgICAgICBzdHlsZS5zZXREaXNwbGF5KHN0eWxlLmlzRGlz
cGxheUlubGluZVR5cGUoKSA/IElOTElORV9UQUJMRSA6IFRBQkxFKTsKICAgICAgICAgfQogCkBA
IC0xMTg3LDcgKzExODcsNyBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OmFkanVzdFJlbmRlclN0eWxl
KFJlbmRlclN0eWxlJiBzdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUmIHBhcgogICAgICAgICB9CiAK
ICAgICAgICAgLy8gVGFibGVzIG5ldmVyIHN1cHBvcnQgdGhlIC13ZWJraXQtKiB2YWx1ZXMgZm9y
IHRleHQtYWxpZ24gYW5kIHdpbGwgcmVzZXQgYmFjayB0byB0aGUgZGVmYXVsdC4KLSAgICAgICAg
aWYgKGUgJiYgaXNIVE1MVGFibGVFbGVtZW50KGUpICYmIChzdHlsZS50ZXh0QWxpZ24oKSA9PSBX
RUJLSVRfTEVGVCB8fCBzdHlsZS50ZXh0QWxpZ24oKSA9PSBXRUJLSVRfQ0VOVEVSIHx8IHN0eWxl
LnRleHRBbGlnbigpID09IFdFQktJVF9SSUdIVCkpCisgICAgICAgIGlmIChlICYmIGlzPEhUTUxU
YWJsZUVsZW1lbnQ+KGUpICYmIChzdHlsZS50ZXh0QWxpZ24oKSA9PSBXRUJLSVRfTEVGVCB8fCBz
dHlsZS50ZXh0QWxpZ24oKSA9PSBXRUJLSVRfQ0VOVEVSIHx8IHN0eWxlLnRleHRBbGlnbigpID09
IFdFQktJVF9SSUdIVCkpCiAgICAgICAgICAgICBzdHlsZS5zZXRUZXh0QWxpZ24oVEFTVEFSVCk7
CiAKICAgICAgICAgLy8gRnJhbWVzIGFuZCBmcmFtZXNldHMgbmV2ZXIgaG9ub3IgcG9zaXRpb246
cmVsYXRpdmUgb3IgcG9zaXRpb246YWJzb2x1dGUuIFRoaXMgaXMgbmVjZXNzYXJ5IHRvCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTaGVldExpc3QuY3BwIGIvU291cmNlL1dl
YkNvcmUvY3NzL1N0eWxlU2hlZXRMaXN0LmNwcAppbmRleCAwNzIwMDM3ZTlhODdkMDM0MGRkMTA5
ODA0NWJkODJhMzIzZWRiMmNkLi5lOTAxNmQ5NWYwNWJhYzM0ZmQyNDA0NWE1ZDI3YzVkYjUwOTg5
YTYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTaGVldExpc3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNoZWV0TGlzdC5jcHAKQEAgLTc2LDcgKzc2LDcg
QEAgSFRNTFN0eWxlRWxlbWVudCogU3R5bGVTaGVldExpc3Q6OmdldE5hbWVkSXRlbShjb25zdCBT
dHJpbmcmIG5hbWUpIGNvbnN0CiAgICAgLy8gYW5kIGRvZXNuJ3QgbG9vayBmb3IgbmFtZSBhdHRy
aWJ1dGUuCiAgICAgLy8gQnV0IHVuaWNpdHkgb2Ygc3R5bGVzaGVldCBpZHMgaXMgZ29vZCBwcmFj
dGljZSBhbnl3YXkgOykKICAgICBFbGVtZW50KiBlbGVtZW50ID0gbV9kb2N1bWVudC0+Z2V0RWxl
bWVudEJ5SWQobmFtZSk7Ci0gICAgaWYgKGVsZW1lbnQgJiYgaXNIVE1MU3R5bGVFbGVtZW50KGVs
ZW1lbnQpKQorICAgIGlmIChlbGVtZW50ICYmIGlzPEhUTUxTdHlsZUVsZW1lbnQ+KGVsZW1lbnQp
KQogICAgICAgICByZXR1cm4gZG93bmNhc3Q8SFRNTFN0eWxlRWxlbWVudD4oZWxlbWVudCk7CiAg
ICAgcmV0dXJuIG51bGxwdHI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ3Vy
cmVudFNjcmlwdEluY3JlbWVudGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ3VycmVudFNjcmlw
dEluY3JlbWVudGVyLmgKaW5kZXggN2M0ODhjMDcxODcyZTI3ZGM4Mzc1ZjQwYzA4ZTRhMDQ3NmVk
YjljNy4uYmQ3ZGUwNzBmNGNhYzc3ZDdiNTFiMjlkMGE2ZmQxMTM3N2FjYzk5NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL0N1cnJlbnRTY3JpcHRJbmNyZW1lbnRlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9DdXJyZW50U2NyaXB0SW5jcmVtZW50ZXIuaApAQCAtMzksNyArMzks
NyBAQCBjbGFzcyBDdXJyZW50U2NyaXB0SW5jcmVtZW50ZXIgewogcHVibGljOgogICAgIEN1cnJl
bnRTY3JpcHRJbmNyZW1lbnRlcihEb2N1bWVudCogZG9jdW1lbnQsIEVsZW1lbnQqIGVsZW1lbnQp
CiAgICAgICAgIDogbV9kb2N1bWVudChkb2N1bWVudCkKLSAgICAgICAgLCBtX2lzSFRNTFNjcmlw
dEVsZW1lbnQoaXNIVE1MU2NyaXB0RWxlbWVudChlbGVtZW50KSkKKyAgICAgICAgLCBtX2lzSFRN
TFNjcmlwdEVsZW1lbnQoaXM8SFRNTFNjcmlwdEVsZW1lbnQ+KGVsZW1lbnQpKQogICAgIHsKICAg
ICAgICAgaWYgKG1faXNIVE1MU2NyaXB0RWxlbWVudCkKICAgICAgICAgICAgIG1fZG9jdW1lbnQt
PnB1c2hDdXJyZW50U2NyaXB0KGRvd25jYXN0PEhUTUxTY3JpcHRFbGVtZW50PihlbGVtZW50KSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuY3BwCmluZGV4IGFhMDFhZTEwOWQ1ZWYxMmY5MmU4
YWNlYWVmZDRiZTQ3MWJjMDQ3ODkuLmM3ODM5NTkzY2QzMmI2OGEwYWJlNjY4ZjAxODdhMjhmYjNk
ZDcyMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuY3BwCkBAIC0yNTQsNyArMjU0LDcg
QEAgdm9pZCBEYXRhVHJhbnNmZXI6OnNldERyYWdJbWFnZShFbGVtZW50KiBlbGVtZW50LCBpbnQg
eCwgaW50IHkpCiAgICAgICAgIHJldHVybjsKIAogICAgIENhY2hlZEltYWdlKiBpbWFnZSA9IG51
bGxwdHI7Ci0gICAgaWYgKGVsZW1lbnQgJiYgaXNIVE1MSW1hZ2VFbGVtZW50KGVsZW1lbnQpICYm
ICFlbGVtZW50LT5pbkRvY3VtZW50KCkpCisgICAgaWYgKGVsZW1lbnQgJiYgaXM8SFRNTEltYWdl
RWxlbWVudD4oZWxlbWVudCkgJiYgIWVsZW1lbnQtPmluRG9jdW1lbnQoKSkKICAgICAgICAgaW1h
Z2UgPSBkb3duY2FzdDxIVE1MSW1hZ2VFbGVtZW50PigqZWxlbWVudCkuY2FjaGVkSW1hZ2UoKTsK
IAogICAgIG1fZHJhZ0xvY2F0aW9uID0gSW50UG9pbnQoeCwgeSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnRPcmRlcmVkTWFwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudE9yZGVyZWRNYXAuY3BwCmluZGV4IDc3ZWVjM2I3NWY0OWE4MDAyNGQ2YjA5MTE1
YzIzYTE5ZmQyOWIzZmEuLjM0Y2U5YzJlYWM4ZGYyZDFjOTQ2ZmM1MWViZGIyNDNhZTVkNThmZWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE9yZGVyZWRNYXAuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE9yZGVyZWRNYXAuY3BwCkBAIC01MywyMyAr
NTMsMjMgQEAgaW5saW5lIGJvb2wga2V5TWF0Y2hlc05hbWUoY29uc3QgQXRvbWljU3RyaW5nSW1w
bCYga2V5LCBjb25zdCBFbGVtZW50JiBlbGVtZW50KQogCiBpbmxpbmUgYm9vbCBrZXlNYXRjaGVz
TWFwTmFtZShjb25zdCBBdG9taWNTdHJpbmdJbXBsJiBrZXksIGNvbnN0IEVsZW1lbnQmIGVsZW1l
bnQpCiB7Ci0gICAgcmV0dXJuIGlzSFRNTE1hcEVsZW1lbnQoZWxlbWVudCkgJiYgZG93bmNhc3Q8
SFRNTE1hcEVsZW1lbnQ+KGVsZW1lbnQpLmdldE5hbWUoKS5pbXBsKCkgPT0gJmtleTsKKyAgICBy
ZXR1cm4gaXM8SFRNTE1hcEVsZW1lbnQ+KGVsZW1lbnQpICYmIGRvd25jYXN0PEhUTUxNYXBFbGVt
ZW50PihlbGVtZW50KS5nZXROYW1lKCkuaW1wbCgpID09ICZrZXk7CiB9CiAKIGlubGluZSBib29s
IGtleU1hdGNoZXNMb3dlcmNhc2VkTWFwTmFtZShjb25zdCBBdG9taWNTdHJpbmdJbXBsJiBrZXks
IGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQpCiB7Ci0gICAgcmV0dXJuIGlzSFRNTE1hcEVsZW1lbnQo
ZWxlbWVudCkgJiYgZG93bmNhc3Q8SFRNTE1hcEVsZW1lbnQ+KGVsZW1lbnQpLmdldE5hbWUoKS5s
b3dlcigpLmltcGwoKSA9PSAma2V5OworICAgIHJldHVybiBpczxIVE1MTWFwRWxlbWVudD4oZWxl
bWVudCkgJiYgZG93bmNhc3Q8SFRNTE1hcEVsZW1lbnQ+KGVsZW1lbnQpLmdldE5hbWUoKS5sb3dl
cigpLmltcGwoKSA9PSAma2V5OwogfQogCiBpbmxpbmUgYm9vbCBrZXlNYXRjaGVzTG93ZXJjYXNl
ZFVzZW1hcChjb25zdCBBdG9taWNTdHJpbmdJbXBsJiBrZXksIGNvbnN0IEVsZW1lbnQmIGVsZW1l
bnQpCiB7CiAgICAgLy8gRklYTUU6IEhUTUw1IHNwZWNpZmljYXRpb24gc2F5cyB3ZSBzaG91bGQg
bWF0Y2ggYm90aCBpbWFnZSBhbmQgb2JqZWN0IGVsZW1lbnRzLgotICAgIHJldHVybiBpc0hUTUxJ
bWFnZUVsZW1lbnQoZWxlbWVudCkgJiYgZG93bmNhc3Q8SFRNTEltYWdlRWxlbWVudD4oZWxlbWVu
dCkubWF0Y2hlc0xvd2VyY2FzZWRVc2VtYXAoa2V5KTsKKyAgICByZXR1cm4gaXM8SFRNTEltYWdl
RWxlbWVudD4oZWxlbWVudCkgJiYgZG93bmNhc3Q8SFRNTEltYWdlRWxlbWVudD4oZWxlbWVudCku
bWF0Y2hlc0xvd2VyY2FzZWRVc2VtYXAoa2V5KTsKIH0KIAogaW5saW5lIGJvb2wga2V5TWF0Y2hl
c0xhYmVsRm9yQXR0cmlidXRlKGNvbnN0IEF0b21pY1N0cmluZ0ltcGwmIGtleSwgY29uc3QgRWxl
bWVudCYgZWxlbWVudCkKIHsKLSAgICByZXR1cm4gaXNIVE1MTGFiZWxFbGVtZW50KGVsZW1lbnQp
ICYmIGVsZW1lbnQuZmFzdEdldEF0dHJpYnV0ZShmb3JBdHRyKS5pbXBsKCkgPT0gJmtleTsKKyAg
ICByZXR1cm4gaXM8SFRNTExhYmVsRWxlbWVudD4oZWxlbWVudCkgJiYgZWxlbWVudC5mYXN0R2V0
QXR0cmlidXRlKGZvckF0dHIpLmltcGwoKSA9PSAma2V5OwogfQogCiBpbmxpbmUgYm9vbCBrZXlN
YXRjaGVzV2luZG93TmFtZWRJdGVtKGNvbnN0IEF0b21pY1N0cmluZ0ltcGwmIGtleSwgY29uc3Qg
RWxlbWVudCYgZWxlbWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dFN0eWxlU2hlZXRDb2xsZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFN0
eWxlU2hlZXRDb2xsZWN0aW9uLmNwcAppbmRleCA4ODlhZTYyYjBiMDBiNWRmODI3MTY2ZjQ5NWIw
Y2ZhYzQwNWIyNzQ4Li44M2E0MzAzNGVlMWRkZTg4NWE3NDJiYzQwODk4ZmYwZGE0MTUzYWRmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlv
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rp
b24uY3BwCkBAIC0yODQsNyArMjg0LDcgQEAgdm9pZCBEb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0
aW9uOjpjb2xsZWN0QWN0aXZlU3R5bGVTaGVldHMoVmVjdG9yPFJlZlB0cjxTdHlsZVMKICAgICAg
ICAgICAgIEVsZW1lbnQmIGVsZW1lbnQgPSB0b0VsZW1lbnQoKm5vZGUpOwogICAgICAgICAgICAg
QXRvbWljU3RyaW5nIHRpdGxlID0gZWxlbWVudC5mYXN0R2V0QXR0cmlidXRlKHRpdGxlQXR0cik7
CiAgICAgICAgICAgICBib29sIGVuYWJsZWRWaWFTY3JpcHQgPSBmYWxzZTsKLSAgICAgICAgICAg
IGlmIChpc0hUTUxMaW5rRWxlbWVudChlbGVtZW50KSkgeworICAgICAgICAgICAgaWYgKGlzPEhU
TUxMaW5rRWxlbWVudD4oZWxlbWVudCkpIHsKICAgICAgICAgICAgICAgICAvLyA8TElOSz4gZWxl
bWVudAogICAgICAgICAgICAgICAgIEhUTUxMaW5rRWxlbWVudCYgbGlua0VsZW1lbnQgPSBkb3du
Y2FzdDxIVE1MTGlua0VsZW1lbnQ+KGVsZW1lbnQpOwogICAgICAgICAgICAgICAgIGlmIChsaW5r
RWxlbWVudC5pc0Rpc2FibGVkKCkpCkBAIC0zMDcsNyArMzA3LDcgQEAgdm9pZCBEb2N1bWVudFN0
eWxlU2hlZXRDb2xsZWN0aW9uOjpjb2xsZWN0QWN0aXZlU3R5bGVTaGVldHMoVmVjdG9yPFJlZlB0
cjxTdHlsZVMKICAgICAgICAgICAgIC8vIHNldCBvZiBzaGVldHMgdGhhdCB3aWxsIGJlIGVuYWJs
ZWQuCiAgICAgICAgICAgICBpZiAoaXM8U1ZHU3R5bGVFbGVtZW50PihlbGVtZW50KSkKICAgICAg
ICAgICAgICAgICBzaGVldCA9IGRvd25jYXN0PFNWR1N0eWxlRWxlbWVudD4oZWxlbWVudCkuc2hl
ZXQoKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKGlzSFRNTExpbmtFbGVtZW50KGVsZW1lbnQpKQor
ICAgICAgICAgICAgZWxzZSBpZiAoaXM8SFRNTExpbmtFbGVtZW50PihlbGVtZW50KSkKICAgICAg
ICAgICAgICAgICBzaGVldCA9IGRvd25jYXN0PEhUTUxMaW5rRWxlbWVudD4oZWxlbWVudCkuc2hl
ZXQoKTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBzaGVldCA9IGRvd25jYXN0
PEhUTUxTdHlsZUVsZW1lbnQ+KGVsZW1lbnQpLnNoZWV0KCk7CkBAIC0zMjIsNyArMzIyLDcgQEAg
dm9pZCBEb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uOjpjb2xsZWN0QWN0aXZlU3R5bGVTaGVl
dHMoVmVjdG9yPFJlZlB0cjxTdHlsZVMKICAgICAgICAgICAgICAgICAgICAgLy8gd2UgYXJlIE5P
VCBhbiBhbHRlcm5hdGUgc2hlZXQsIHRoZW4gZXN0YWJsaXNoCiAgICAgICAgICAgICAgICAgICAg
IC8vIHVzIGFzIHRoZSBwcmVmZXJyZWQgc2V0LiBPdGhlcndpc2UsIGp1c3QgaWdub3JlCiAgICAg
ICAgICAgICAgICAgICAgIC8vIHRoaXMgc2hlZXQuCi0gICAgICAgICAgICAgICAgICAgIGlmIChp
c0hUTUxTdHlsZUVsZW1lbnQoZWxlbWVudCkgfHwgIXJlbC5jb250YWlucygiYWx0ZXJuYXRlIikp
CisgICAgICAgICAgICAgICAgICAgIGlmIChpczxIVE1MU3R5bGVFbGVtZW50PihlbGVtZW50KSB8
fCAhcmVsLmNvbnRhaW5zKCJhbHRlcm5hdGUiKSkKICAgICAgICAgICAgICAgICAgICAgICAgIG1f
cHJlZmVycmVkU3R5bGVzaGVldFNldE5hbWUgPSBtX3NlbGVjdGVkU3R5bGVzaGVldFNldE5hbWUg
PSB0aXRsZTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgaWYgKHRpdGxlICE9
IG1fcHJlZmVycmVkU3R5bGVzaGVldFNldE5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKaW5kZXggZDFjY2I5
NGY0NzkzNGVlMzJkM2I5MWEyZDRhZDY5YTA4ZDY2MzYzNS4uZDE1MDNmZjc0Yjg5NzljNGFjOTNi
MTI1NzdiNTQwZTdlYjFkYTNiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcApAQCAtMTcxNiw3ICsxNzE2LDcg
QEAgRWxlbWVudCogTm9kZTo6ZW5jbG9zaW5nTGlua0V2ZW50UGFyZW50T3JTZWxmKCkKICAgICAg
ICAgLy8gRm9yIGltYWdlbWFwcywgdGhlIGVuY2xvc2luZyBsaW5rIGVsZW1lbnQgaXMgdGhlIGFz
c29jaWF0ZWQgYXJlYSBlbGVtZW50IG5vdCB0aGUgaW1hZ2UgaXRzZWxmLgogICAgICAgICAvLyBT
byB3ZSBkb24ndCBsZXQgaW1hZ2VzIGJlIHRoZSBlbmNsb3NpbmcgbGluayBlbGVtZW50LCBldmVu
IHRob3VnaCBpc0xpbmsgc29tZXRpbWVzIHJldHVybnMKICAgICAgICAgLy8gdHJ1ZSBmb3IgdGhl
bS4KLSAgICAgICAgaWYgKG5vZGUtPmlzTGluaygpICYmICFpc0hUTUxJbWFnZUVsZW1lbnQobm9k
ZSkpCisgICAgICAgIGlmIChub2RlLT5pc0xpbmsoKSAmJiAhaXM8SFRNTEltYWdlRWxlbWVudD4o
bm9kZSkpCiAgICAgICAgICAgICByZXR1cm4gdG9FbGVtZW50KG5vZGUpOwogICAgIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Qb3NpdGlvbi5jcHAKaW5kZXggMjMyZDc3NzAzYTg4ODNkZmFiYTMwNWVkZWE3ODk4OWJl
NTNkNjZjMi4uNjc2ZDFjNzQ4MGViZDQwOTY4YTNiYTZlOWY3ZGExNmFiN2Q2MWRkZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vUG9zaXRpb24uY3BwCkBAIC01MjksNyArNTI5LDcgQEAgc3RhdGljIGJvb2wgZW5kc09m
Tm9kZUFyZVZpc3VhbGx5RGlzdGluY3RQb3NpdGlvbnMoTm9kZSogbm9kZSkKICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgICAgIAogICAgIC8vIERvbid0IGluY2x1ZGUgaW5saW5lIHRhYmxlcy4K
LSAgICBpZiAoaXNIVE1MVGFibGVFbGVtZW50KG5vZGUpKQorICAgIGlmIChpczxIVE1MVGFibGVF
bGVtZW50Pihub2RlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAogICAgIC8vIFRoZXJl
IGlzIGEgVmlzaWJsZVBvc2l0aW9uIGluc2lkZSBhbiBlbXB0eSBpbmxpbmUtYmxvY2sgY29udGFp
bmVyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQuY3BwCmluZGV4IGE1YzJkMzJiZmEwNjRl
M2I1OGRhNjYwYzk3ZWQ2MTlhNDFiYTZkZjcuLmU3YTY3MTZkMjllZWI2YTVjNDNhYzQzOTZiM2Uz
MWZhMjk0MWU5ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5jcHAKQEAgLTM4Miw3
ICszODIsNyBAQCBTdHJpbmcgU2NyaXB0RWxlbWVudDo6c2NyaXB0Q29udGVudCgpIGNvbnN0CiAK
IFNjcmlwdEVsZW1lbnQqIHRvU2NyaXB0RWxlbWVudElmUG9zc2libGUoRWxlbWVudCogZWxlbWVu
dCkKIHsKLSAgICBpZiAoaXNIVE1MU2NyaXB0RWxlbWVudChlbGVtZW50KSkKKyAgICBpZiAoaXM8
SFRNTFNjcmlwdEVsZW1lbnQ+KGVsZW1lbnQpKQogICAgICAgICByZXR1cm4gZG93bmNhc3Q8SFRN
TFNjcmlwdEVsZW1lbnQ+KGVsZW1lbnQpOwogCiAgICAgaWYgKGlzPFNWR1NjcmlwdEVsZW1lbnQ+
KGVsZW1lbnQpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1Zpc2l0ZWRMaW5rU3Rh
dGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1Zpc2l0ZWRMaW5rU3RhdGUuY3BwCmluZGV4IDRj
MjJkMDA3MzZkZmZlMDMyNWUxYmExMWMwODg5NjA0ZGU2MmVlMzUuLjU4NjkwOWE1YzBjOTcwNTk5
MGQ0MmMwZGJiOWY4ZWVlZDU4ODc1YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9W
aXNpdGVkTGlua1N0YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVmlzaXRlZExpbmtT
dGF0ZS5jcHAKQEAgLTY5LDcgKzY5LDcgQEAgdm9pZCBWaXNpdGVkTGlua1N0YXRlOjppbnZhbGlk
YXRlU3R5bGVGb3JBbGxMaW5rcygpCiAKIGlubGluZSBzdGF0aWMgTGlua0hhc2ggbGlua0hhc2hG
b3JFbGVtZW50KERvY3VtZW50JiBkb2N1bWVudCwgRWxlbWVudCYgZWxlbWVudCkKIHsKLSAgICBp
ZiAoaXNIVE1MQW5jaG9yRWxlbWVudChlbGVtZW50KSkKKyAgICBpZiAoaXM8SFRNTEFuY2hvckVs
ZW1lbnQ+KGVsZW1lbnQpKQogICAgICAgICByZXR1cm4gZG93bmNhc3Q8SFRNTEFuY2hvckVsZW1l
bnQ+KGVsZW1lbnQpLnZpc2l0ZWRMaW5rSGFzaCgpOwogICAgIGlmIChjb25zdCBBdG9taWNTdHJp
bmcqIGF0dHJpYnV0ZSA9IGxpbmtBdHRyaWJ1dGUoZWxlbWVudCkpCiAgICAgICAgIHJldHVybiBX
ZWJDb3JlOjp2aXNpdGVkTGlua0hhc2goZG9jdW1lbnQuYmFzZVVSTCgpLCAqYXR0cmlidXRlKTsK
QEAgLTEwMCw3ICsxMDAsNyBAQCBFSW5zaWRlTGluayBWaXNpdGVkTGlua1N0YXRlOjpkZXRlcm1p
bmVMaW5rU3RhdGVTbG93Q2FzZShFbGVtZW50JiBlbGVtZW50KQogICAgICAgICByZXR1cm4gSW5z
aWRlVmlzaXRlZExpbms7CiAKICAgICBMaW5rSGFzaCBoYXNoOwotICAgIGlmIChpc0hUTUxBbmNo
b3JFbGVtZW50KGVsZW1lbnQpKQorICAgIGlmIChpczxIVE1MQW5jaG9yRWxlbWVudD4oZWxlbWVu
dCkpCiAgICAgICAgIGhhc2ggPSBkb3duY2FzdDxIVE1MQW5jaG9yRWxlbWVudD4oZWxlbWVudCku
dmlzaXRlZExpbmtIYXNoKCk7CiAgICAgZWxzZQogICAgICAgICBoYXNoID0gV2ViQ29yZTo6dmlz
aXRlZExpbmtIYXNoKGVsZW1lbnQuZG9jdW1lbnQoKS5iYXNlVVJMKCksICphdHRyaWJ1dGUpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL21ha2VfbmFtZXMucGwgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vbWFrZV9uYW1lcy5wbAppbmRleCBhZTlkYzNiYjFlNzE2ODIxYjcxYzhkMmM2M2Y3
ODAyYmFiMzA1YTMwLi4yYjc0MWZiZmQ4MzJiNTVjZWQ2ZjBmYTc2OTllN2Y0ZGUyODM0OTcwIDEw
MDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vbWFrZV9uYW1lcy5wbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vbWFrZV9uYW1lcy5wbApAQCAtNjU5LDE1ICs2NTksNyBAQCBFTkQKIH07CiBF
TkQKICAgICAgICA7Ci0gICAgICAgaWYgKCRwYXJhbWV0ZXJze25hbWVzcGFjZX0gZXEgIkhUTUwi
KSB7Ci0gICAgICAgICAgIHByaW50IEYgPDxFTkQKLS8vIEZJWE1FOiBSZW1vdmUgdGhlc2UgbWFj
cm9zIG9uY2UgdGhlIGNvZGUgaGFzIGJlZW4gcG9ydGVkIHRvIHVzaW5nCi0vLyBpczwqRWxlbWVu
dD4oKS4KLSNkZWZpbmUgaXMkY2xhc3MoeCkgV2ViQ29yZTo6aXM8V2ViQ29yZTo6JGNsYXNzPih4
KQotRU5ECi0gICAgICAgICAgIDsKLSAgICAgICAgfQotICAgICAgICBwcmludCBGICJcbiI7Cisg
ICAgICAgcHJpbnQgRiAiXG4iOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9EZWxldGVTZWxlY3Rpb25Db21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvRGVsZXRlU2VsZWN0aW9uQ29tbWFuZC5jcHAKaW5kZXggZjhhNjQ0YTI2YTU0ZDk1NjYx
MTBlZTJmY2U3ZGM4OTYzOThiNzQwMy4uM2E1NzkzMWY2MjU0NjcyZWEzOTQ3ZGQ2OThlZmFiMWQz
NzMxNzAzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9EZWxldGVTZWxlY3Rp
b25Db21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZVNlbGVjdGlv
bkNvbW1hbmQuY3BwCkBAIC00NTcsNyArNDU3LDcgQEAgdm9pZCBEZWxldGVTZWxlY3Rpb25Db21t
YW5kOjpoYW5kbGVHZW5lcmFsRGVsZXRlKCkKICAgICBtYWtlU3R5bGluZ0VsZW1lbnRzRGlyZWN0
Q2hpbGRyZW5PZkVkaXRhYmxlUm9vdFRvUHJldmVudFN0eWxlTG9zcygpOwogCiAgICAgLy8gTmV2
ZXIgcmVtb3ZlIHRoZSBzdGFydCBibG9jayB1bmxlc3MgaXQncyBhIHRhYmxlLCBpbiB3aGljaCBj
YXNlIHdlIHdvbid0IG1lcmdlIGNvbnRlbnQgaW4uCi0gICAgaWYgKHN0YXJ0Tm9kZSA9PSBtX3N0
YXJ0QmxvY2sgJiYgc3RhcnRPZmZzZXQgPT0gMCAmJiBjYW5IYXZlQ2hpbGRyZW5Gb3JFZGl0aW5n
KHN0YXJ0Tm9kZSkgJiYgIWlzSFRNTFRhYmxlRWxlbWVudChzdGFydE5vZGUpKSB7CisgICAgaWYg
KHN0YXJ0Tm9kZSA9PSBtX3N0YXJ0QmxvY2sgJiYgIXN0YXJ0T2Zmc2V0ICYmIGNhbkhhdmVDaGls
ZHJlbkZvckVkaXRpbmcoc3RhcnROb2RlKSAmJiAhaXM8SFRNTFRhYmxlRWxlbWVudD4oc3RhcnRO
b2RlKSkgewogICAgICAgICBzdGFydE9mZnNldCA9IDA7CiAgICAgICAgIHN0YXJ0Tm9kZSA9IE5v
ZGVUcmF2ZXJzYWw6Om5leHQoc3RhcnROb2RlKTsKICAgICAgICAgaWYgKCFzdGFydE5vZGUpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0VkaXRvci5jcHAKaW5kZXggMzAyZGU0MTg2NTMwNjU2ZjM2Nzg4YmI3NGFi
MDQ1MmFlMDUzNjExYi4uZTViNWI3MjI5NmEzZGI0NDgyOTAwMGNhMTA2MjIyNGFjYWI5NmIwMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcApAQCAtMzMwLDcgKzMzMCw3IEBAIHN0YXRpYyBI
VE1MSW1hZ2VFbGVtZW50KiBpbWFnZUVsZW1lbnRGcm9tSW1hZ2VEb2N1bWVudChEb2N1bWVudCYg
ZG9jdW1lbnQpCiAgICAgTm9kZSogbm9kZSA9IGJvZHktPmZpcnN0Q2hpbGQoKTsKICAgICBpZiAo
IW5vZGUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIGlmICghaXNIVE1MSW1hZ2VFbGVt
ZW50KG5vZGUpKQorICAgIGlmICghaXM8SFRNTEltYWdlRWxlbWVudD4obm9kZSkpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogICAgIHJldHVybiBkb3duY2FzdDxIVE1MSW1hZ2VFbGVtZW50Pihu
b2RlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rp
b24uY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAKaW5kZXgg
NWVmNDg1NmUxZGU4NmZlZGMyOTAwM2QxY2I2NDE5OTBiN2JmNDVjYS4uMGRhNWY4YWVmOWFiNTM3
MjRkZGRmYjllMjUzMmZmZDFhYTU0OGMyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9GcmFtZVNlbGVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFt
ZVNlbGVjdGlvbi5jcHAKQEAgLTIwMjMsNyArMjAyMyw3IEBAIHN0YXRpYyBIVE1MRm9ybUVsZW1l
bnQqIHNjYW5Gb3JGb3JtKEVsZW1lbnQqIHN0YXJ0KQogICAgIGF1dG8gZGVzY2VuZGFudHMgPSBk
ZXNjZW5kYW50c09mVHlwZTxIVE1MRWxlbWVudD4oc3RhcnQtPmRvY3VtZW50KCkpOwogICAgIGZv
ciAoYXV0byBpdCA9IGRlc2NlbmRhbnRzLmZyb20oKnN0YXJ0KSwgZW5kID0gZGVzY2VuZGFudHMu
ZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkgewogICAgICAgICBIVE1MRWxlbWVudCYgZWxlbWVudCA9
ICppdDsKLSAgICAgICAgaWYgKGlzSFRNTEZvcm1FbGVtZW50KCZlbGVtZW50KSkKKyAgICAgICAg
aWYgKGlzPEhUTUxGb3JtRWxlbWVudD4oJmVsZW1lbnQpKQogICAgICAgICAgICAgcmV0dXJuIGRv
d25jYXN0PEhUTUxGb3JtRWxlbWVudD4oJmVsZW1lbnQpOwogICAgICAgICBpZiAoaXM8SFRNTEZv
cm1Db250cm9sRWxlbWVudD4oZWxlbWVudCkpCiAgICAgICAgICAgICByZXR1cm4gZG93bmNhc3Q8
SFRNTEZvcm1Db250cm9sRWxlbWVudD4oZWxlbWVudCkuZm9ybSgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRMaW5lQnJlYWtDb21tYW5kLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvSW5zZXJ0TGluZUJyZWFrQ29tbWFuZC5jcHAKaW5kZXggZTU2Mzk1MDli
MGRjYTk2NmMzZTYwMjNjZjZhYjRkZDAyY2NhMWJmMS4uMTFhMDc0N2E3ODJkYjg3YWU2ZDljNWRi
Y2IyYTdmNjlkMmFkZDU4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9JbnNl
cnRMaW5lQnJlYWtDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luc2Vy
dExpbmVCcmVha0NvbW1hbmQuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiRnJhbWUu
aCIKICNpbmNsdWRlICJGcmFtZVNlbGVjdGlvbi5oIgogI2luY2x1ZGUgIkhUTUxFbGVtZW50Lmgi
CisjaW5jbHVkZSAiSFRNTEhSRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2lu
Y2x1ZGUgIkhUTUxUYWJsZUVsZW1lbnQuaCIKICNpbmNsdWRlICJSZW5kZXJFbGVtZW50LmgiCkBA
IC0xMTQsNyArMTE1LDcgQEAgdm9pZCBJbnNlcnRMaW5lQnJlYWtDb21tYW5kOjpkb0FwcGx5KCkK
ICAgICAvLyBGSVhNRTogTmVlZCB0byBtZXJnZSB0ZXh0IG5vZGVzIHdoZW4gaW5zZXJ0aW5nIGp1
c3QgYWZ0ZXIgb3IgYmVmb3JlIHRleHQuCiAgICAgCiAgICAgaWYgKGlzRW5kT2ZQYXJhZ3JhcGgo
Y2FyZXQpICYmICFsaW5lQnJlYWtFeGlzdHNBdFZpc2libGVQb3NpdGlvbihjYXJldCkpIHsKLSAg
ICAgICAgYm9vbCBuZWVkRXh0cmFMaW5lQnJlYWsgPSAhcG9zLmRlcHJlY2F0ZWROb2RlKCktPmhh
c1RhZ05hbWUoaHJUYWcpICYmICFpc0hUTUxUYWJsZUVsZW1lbnQocG9zLmRlcHJlY2F0ZWROb2Rl
KCkpOworICAgICAgICBib29sIG5lZWRFeHRyYUxpbmVCcmVhayA9ICFpczxIVE1MSFJFbGVtZW50
Pihwb3MuZGVwcmVjYXRlZE5vZGUoKSkgJiYgIWlzPEhUTUxUYWJsZUVsZW1lbnQ+KHBvcy5kZXBy
ZWNhdGVkTm9kZSgpKTsKICAgICAgICAgCiAgICAgICAgIGluc2VydE5vZGVBdChub2RlVG9JbnNl
cnQuZ2V0KCksIHBvcyk7CiAgICAgICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9JbnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3JDb21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvSW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9yQ29tbWFuZC5jcHAKaW5kZXggN2ZiNzUw
MzhjOTQ1ODY0MDFhNzcwYzEzNzI5MDY2N2EwZDU1MWI4Mi4uNDk5ZGFkOWFiNjM4ZWUxYmRlZTQ4
MTQ0ZDUzMTQ0YmJiODU2MmQwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9J
bnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3JDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0luc2VydFBhcmFncmFwaFNlcGFyYXRvckNvbW1hbmQuY3BwCkBAIC0xNjksNyArMTY5
LDcgQEAgdm9pZCBJbnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3JDb21tYW5kOjpkb0FwcGx5KCkKICAg
ICBpZiAoIXN0YXJ0QmxvY2sKICAgICAgICAgfHwgIXN0YXJ0QmxvY2stPm5vblNoYWRvd0JvdW5k
YXJ5UGFyZW50Tm9kZSgpCiAgICAgICAgIHx8IGlzVGFibGVDZWxsKHN0YXJ0QmxvY2suZ2V0KCkp
Ci0gICAgICAgIHx8IGlzSFRNTEZvcm1FbGVtZW50KHN0YXJ0QmxvY2suZ2V0KCkpCisgICAgICAg
IHx8IGlzPEhUTUxGb3JtRWxlbWVudD4oc3RhcnRCbG9jay5nZXQoKSkKICAgICAgICAgLy8gRklY
TUU6IElmIHRoZSBub2RlIGlzIGhpZGRlbiwgd2UgZG9uJ3QgaGF2ZSBhIGNhbm9uaWNhbCBwb3Np
dGlvbiBzbyB3ZSB3aWxsIGRvIHRoZSB3cm9uZyB0aGluZyBmb3IgdGFibGVzIGFuZCA8aHI+LiBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDAzNDIKICAgICAgICAgfHwg
KCFjYW5vbmljYWxQb3MuaXNOdWxsKCkgJiYgY2Fub25pY2FsUG9zLmRlcHJlY2F0ZWROb2RlKCkt
PnJlbmRlcmVyKCkgJiYgY2Fub25pY2FsUG9zLmRlcHJlY2F0ZWROb2RlKCktPnJlbmRlcmVyKCkt
PmlzVGFibGUoKSkKICAgICAgICAgfHwgKCFjYW5vbmljYWxQb3MuaXNOdWxsKCkgJiYgY2Fub25p
Y2FsUG9zLmRlcHJlY2F0ZWROb2RlKCktPmhhc1RhZ05hbWUoaHJUYWcpKSkgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcAppbmRleCAz
MTEzYWYzNDA5NjY0YjQwYmYxMGY4YmNjMWNhZTg2OTRlY2I0ODM2Li44MTZlYTBhNmRhNTExZDE5
MTg0MDE4MzAxYjFiNDkwNmUwYzViMWE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcApAQCAtNzIxLDcgKzcyMSw3IEBAIHN0YXRp
YyB2b2lkIHJlbW92ZUhlYWRDb250ZW50cyhSZXBsYWNlbWVudEZyYWdtZW50JiBmcmFnbWVudCkK
ICAgICBhdXRvIGl0ID0gZGVzY2VuZGFudHNPZlR5cGU8RWxlbWVudD4oKmZyYWdtZW50LmZyYWdt
ZW50KCkpLmJlZ2luKCk7CiAgICAgYXV0byBlbmQgPSBkZXNjZW5kYW50c09mVHlwZTxFbGVtZW50
PigqZnJhZ21lbnQuZnJhZ21lbnQoKSkuZW5kKCk7CiAgICAgd2hpbGUgKGl0ICE9IGVuZCkgewot
ICAgICAgICBpZiAoaXQtPmhhc1RhZ05hbWUoYmFzZVRhZykgfHwgaXQtPmhhc1RhZ05hbWUobGlu
a1RhZykgfHwgaXQtPmhhc1RhZ05hbWUobWV0YVRhZykgfHwgaXQtPmhhc1RhZ05hbWUoc3R5bGVU
YWcpIHx8IGlzSFRNTFRpdGxlRWxlbWVudCgqaXQpKSB7CisgICAgICAgIGlmIChpczxIVE1MQmFz
ZUVsZW1lbnQ+KCppdCkgfHwgaXM8SFRNTExpbmtFbGVtZW50PigqaXQpIHx8IGlzPEhUTUxNZXRh
RWxlbWVudD4oKml0KSB8fCBpczxIVE1MU3R5bGVFbGVtZW50PigqaXQpIHx8IGlzPEhUTUxUaXRs
ZUVsZW1lbnQ+KCppdCkpIHsKICAgICAgICAgICAgIHRvUmVtb3ZlLmFwcGVuZCgmKml0KTsKICAg
ICAgICAgICAgIGl0LnRyYXZlcnNlTmV4dFNraXBwaW5nQ2hpbGRyZW4oKTsKICAgICAgICAgICAg
IGNvbnRpbnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1M
Q29udmVydGVyLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVy
Lm1tCmluZGV4IDNiY2E5NDc0MTIyZDNhMWMxZjU5MmFhOWQzZjMwMjY3ZDM1MTkyZDEuLjA3OWRi
OTQ0MTQ5ZGZmMDQxNjZiMGEwNTExMDIxNWQ5MmUzMjZjMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW0KQEAgLTIwMzQsNyArMjAzNCw3IEBAIEJP
T0wgSFRNTENvbnZlcnRlcjo6X3Byb2Nlc3NFbGVtZW50KEVsZW1lbnQmIGVsZW1lbnQsIE5TSW50
ZWdlciBkZXB0aCkKICAgICAgICAgaWYgKCFsaXN0U3R5bGVUeXBlLmxlbmd0aCgpKQogICAgICAg
ICAgICAgbGlzdFN0eWxlVHlwZSA9ICJkZWNpbWFsIjsKICAgICAgICAgbGlzdCA9IGFkb3B0TlMo
W1tQbGF0Zm9ybU5TVGV4dExpc3QgYWxsb2NdIGluaXRXaXRoTWFya2VyRm9ybWF0OlN0cmluZygi
eyIgKyBsaXN0U3R5bGVUeXBlICsgIn0iKSBvcHRpb25zOjBdKTsKLSAgICAgICAgaWYgKGlzSFRN
TE9MaXN0RWxlbWVudChlbGVtZW50KSkgeworICAgICAgICBpZiAoaXM8SFRNTE9MaXN0RWxlbWVu
dD4oZWxlbWVudCkpIHsKICAgICAgICAgICAgIE5TSW50ZWdlciBzdGFydGluZ0l0ZW1OdW1iZXIg
PSBkb3duY2FzdDxIVE1MT0xpc3RFbGVtZW50PihlbGVtZW50KS5zdGFydCgpOwogICAgICAgICAg
ICAgW2xpc3Qgc2V0U3RhcnRpbmdJdGVtTnVtYmVyOnN0YXJ0aW5nSXRlbU51bWJlcl07CiAgICAg
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9odG1sZWRpdGluZy5jcHAKaW5kZXggZThjNjA4YmI5
NTFhOGVjZTExYTkwZGUxOWU0NGY5ZTNhMjFlYTNjZS4uNWU4ZjU5NWQyZDJmMmI4OTg1YjMyMjNi
ZmE3MGUyNzE5ZTA4NTQ2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9odG1s
ZWRpdGluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9odG1sZWRpdGluZy5jcHAK
QEAgLTEyMDQsNyArMTIwNCw3IEBAIGJvb2wgaXNOb25UYWJsZUNlbGxIVE1MQmxvY2tFbGVtZW50
KGNvbnN0IE5vZGUqIG5vZGUpCiAgICAgcmV0dXJuIGVsZW1lbnQtPmhhc1RhZ05hbWUobGlzdGlu
Z1RhZykKICAgICAgICAgfHwgZWxlbWVudC0+aGFzVGFnTmFtZShvbFRhZykKICAgICAgICAgfHwg
ZWxlbWVudC0+aGFzVGFnTmFtZShwcmVUYWcpCi0gICAgICAgIHx8IGlzSFRNTFRhYmxlRWxlbWVu
dChlbGVtZW50KQorICAgICAgICB8fCBpczxIVE1MVGFibGVFbGVtZW50PihlbGVtZW50KQogICAg
ICAgICB8fCBlbGVtZW50LT5oYXNUYWdOYW1lKHVsVGFnKQogICAgICAgICB8fCBlbGVtZW50LT5o
YXNUYWdOYW1lKHhtcFRhZykKICAgICAgICAgfHwgZWxlbWVudC0+aGFzVGFnTmFtZShoMVRhZykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcAppbmRleCA1NmM3MDA3M2I2M2Q1ZDkyZGFhMmRmYzhl
MjUxMjM0NmFjYTc2ZDJiLi4wOWY0Njg3MjRjYjc2MzUyMTllY2RlMDM2NGYxMWY2ZmM0M2ZhY2Ez
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCkBAIC00NTIsNyArNDUyLDcgQEAgc3RhdGlj
IE5vZGUqIGFuY2VzdG9yVG9SZXRhaW5TdHJ1Y3R1cmVBbmRBcHBlYXJhbmNlRm9yQmxvY2soTm9k
ZSogY29tbW9uQW5jZXN0b3IKIAogICAgIGlmIChjb21tb25BbmNlc3RvckJsb2NrLT5oYXNUYWdO
YW1lKHRib2R5VGFnKSB8fCBjb21tb25BbmNlc3RvckJsb2NrLT5oYXNUYWdOYW1lKHRyVGFnKSkg
ewogICAgICAgICBDb250YWluZXJOb2RlKiB0YWJsZSA9IGNvbW1vbkFuY2VzdG9yQmxvY2stPnBh
cmVudE5vZGUoKTsKLSAgICAgICAgd2hpbGUgKHRhYmxlICYmICFpc0hUTUxUYWJsZUVsZW1lbnQo
dGFibGUpKQorICAgICAgICB3aGlsZSAodGFibGUgJiYgIWlzPEhUTUxUYWJsZUVsZW1lbnQ+KHRh
YmxlKSkKICAgICAgICAgICAgIHRhYmxlID0gdGFibGUtPnBhcmVudE5vZGUoKTsKIAogICAgICAg
ICByZXR1cm4gdGFibGU7CkBAIC05MzQsNyArOTM0LDcgQEAgc3RhdGljIFZlY3RvcjxSZWY8SFRN
TEVsZW1lbnQ+PiBjb2xsZWN0RWxlbWVudHNUb1JlbW92ZUZyb21GcmFnbWVudChDb250YWluZXJO
b2QKICAgICAgICAgICAgIGNvbGxlY3RFbGVtZW50c1RvUmVtb3ZlRnJvbUZyYWdtZW50KGVsZW1l
bnQpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKGlzSFRN
TEhlYWRFbGVtZW50KGVsZW1lbnQpIHx8IGlzSFRNTEJvZHlFbGVtZW50KGVsZW1lbnQpKQorICAg
ICAgICBpZiAoaXM8SFRNTEhlYWRFbGVtZW50PihlbGVtZW50KSB8fCBpczxIVE1MQm9keUVsZW1l
bnQ+KGVsZW1lbnQpKQogICAgICAgICAgICAgdG9SZW1vdmUuYXBwZW5kKGVsZW1lbnQpOwogICAg
IH0KICAgICByZXR1cm4gdG9SZW1vdmU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0ZUUERpcmVjdG9yeURvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRlRQRGlyZWN0
b3J5RG9jdW1lbnQuY3BwCmluZGV4IGQ2ZjE0ZDczNTM1MzIzNjkxZmM5NmY4YjBmOGZjZjNiMzg2
ODhmODkuLjliMGZkZWE5OTYwNzg1ZmU1OWU0NGRlZDA5OWQxNTcyMWY5ZDM1MGQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwCkBAIC0zMDAsNyArMzAw
LDcgQEAgYm9vbCBGVFBEaXJlY3RvcnlEb2N1bWVudFBhcnNlcjo6bG9hZERvY3VtZW50VGVtcGxh
dGUoKQogICAgIFJlZlB0cjxFbGVtZW50PiB0YWJsZUVsZW1lbnQgPSBkb2N1bWVudCgpLT5nZXRF
bGVtZW50QnlJZChTdHJpbmcoQVNDSUlMaXRlcmFsKCJmdHBEaXJlY3RvcnlUYWJsZSIpKSk7CiAg
ICAgaWYgKCF0YWJsZUVsZW1lbnQpCiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIGZpbmQg
ZWxlbWVudCBieSBpZCBcImZ0cERpcmVjdG9yeVRhYmxlXCIgaW4gdGhlIHRlbXBsYXRlIGRvY3Vt
ZW50LiIpOwotICAgIGVsc2UgaWYgKCFpc0hUTUxUYWJsZUVsZW1lbnQodGFibGVFbGVtZW50Lmdl
dCgpKSkKKyAgICBlbHNlIGlmICghaXM8SFRNTFRhYmxlRWxlbWVudD4odGFibGVFbGVtZW50Lmdl
dCgpKSkKICAgICAgICAgTE9HX0VSUk9SKCJFbGVtZW50IG9mIGlkIFwiZnRwRGlyZWN0b3J5VGFi
bGVcIiBpcyBub3QgYSB0YWJsZSBlbGVtZW50Iik7CiAgICAgZWxzZSAKICAgICAgICAgbV90YWJs
ZUVsZW1lbnQgPSBkb3duY2FzdDxIVE1MVGFibGVFbGVtZW50Pih0YWJsZUVsZW1lbnQuZ2V0KCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQXNzb2NpYXRlZEVsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQXNzb2NpYXRlZEVsZW1lbnQuY3BwCmluZGV4
IDlkZjQwNTk4OTI0OThjZWRjZjIzNmRjNDZhY2VhM2RhMTAzZDExYTcuLjcwNDVhOGY1ZThlY2Ni
NzU3ZmZjMDc3NDViMjE2ZDU4MDBhNjcwZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvRm9ybUFzc29jaWF0ZWRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zv
cm1Bc3NvY2lhdGVkRWxlbWVudC5jcHAKQEAgLTk4LDcgKzk4LDcgQEAgSFRNTEZvcm1FbGVtZW50
KiBGb3JtQXNzb2NpYXRlZEVsZW1lbnQ6OmZpbmRBc3NvY2lhdGVkRm9ybShjb25zdCBIVE1MRWxl
bWVudCogZWwKICAgICAgICAgLy8gdHJlZVNjb3BlKCkuZ2V0RWxlbWVudEJ5SWQoKSBvdmVyIHRo
ZSBnaXZlbiBlbGVtZW50LgogICAgICAgICBIVE1MRm9ybUVsZW1lbnQqIG5ld0Zvcm0gPSBudWxs
cHRyOwogICAgICAgICBFbGVtZW50KiBuZXdGb3JtQ2FuZGlkYXRlID0gZWxlbWVudC0+dHJlZVNj
b3BlKCkuZ2V0RWxlbWVudEJ5SWQoZm9ybUlkKTsKLSAgICAgICAgaWYgKG5ld0Zvcm1DYW5kaWRh
dGUgJiYgaXNIVE1MRm9ybUVsZW1lbnQobmV3Rm9ybUNhbmRpZGF0ZSkpCisgICAgICAgIGlmIChu
ZXdGb3JtQ2FuZGlkYXRlICYmIGlzPEhUTUxGb3JtRWxlbWVudD4obmV3Rm9ybUNhbmRpZGF0ZSkp
CiAgICAgICAgICAgICBuZXdGb3JtID0gZG93bmNhc3Q8SFRNTEZvcm1FbGVtZW50PihuZXdGb3Jt
Q2FuZGlkYXRlKTsKICAgICAgICAgcmV0dXJuIG5ld0Zvcm07CiAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcAppbmRleCAzNGFmZWI5Zjg5ZmQzZjIzODE5ODQ1
NDdjNzAyNDczMDViOGQzODllLi42NTVhYWIwOGJhYmFmYWJiODNhOTlkOTU3NmU5M2ExNWNkYTE1
YzRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcApAQCAtMTU4
LDcgKzE1OCw3IEBAIHN0YXRpYyB2b2lkIGFwcGVuZFNlcnZlck1hcE1vdXNlUG9zaXRpb24oU3Ry
aW5nQnVpbGRlciYgdXJsLCBFdmVudCogZXZlbnQpCiAgICAgQVNTRVJUKGV2ZW50LT50YXJnZXQo
KSk7CiAgICAgTm9kZSogdGFyZ2V0ID0gZXZlbnQtPnRhcmdldCgpLT50b05vZGUoKTsKICAgICBB
U1NFUlQodGFyZ2V0KTsKLSAgICBpZiAoIWlzSFRNTEltYWdlRWxlbWVudCh0YXJnZXQpKQorICAg
IGlmICghaXM8SFRNTEltYWdlRWxlbWVudD4odGFyZ2V0KSkKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgSFRNTEltYWdlRWxlbWVudCYgaW1hZ2VFbGVtZW50ID0gZG93bmNhc3Q8SFRNTEltYWdlRWxl
bWVudD4oKnRhcmdldCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBcmVh
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBcmVhRWxlbWVudC5jcHAKaW5k
ZXggZGQ4NGJkYzY4NDBjN2FiNzY5NDEzZmZkMWYxYTM3M2MxNjk1NzQwNy4uYjExNTNlNzUzZDA5
YzllZTRlOThhYmFiOWZkNzk2MTFkMDc1ZDIzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MQXJlYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFy
ZWFFbGVtZW50LmNwcApAQCAtMTgyLDcgKzE4Miw3IEBAIFBhdGggSFRNTEFyZWFFbGVtZW50Ojpn
ZXRSZWdpb24oY29uc3QgTGF5b3V0U2l6ZSYgc2l6ZSkgY29uc3QKIEhUTUxJbWFnZUVsZW1lbnQq
IEhUTUxBcmVhRWxlbWVudDo6aW1hZ2VFbGVtZW50KCkgY29uc3QKIHsKICAgICBOb2RlKiBtYXBF
bGVtZW50ID0gcGFyZW50Tm9kZSgpOwotICAgIGlmICghbWFwRWxlbWVudCB8fCAhaXNIVE1MTWFw
RWxlbWVudChtYXBFbGVtZW50KSkKKyAgICBpZiAoIW1hcEVsZW1lbnQgfHwgIWlzPEhUTUxNYXBF
bGVtZW50PihtYXBFbGVtZW50KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgCiAgICAg
cmV0dXJuIGRvd25jYXN0PEhUTUxNYXBFbGVtZW50PigqbWFwRWxlbWVudCkuaW1hZ2VFbGVtZW50
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudC5jcHAKaW5kZXggMGNlMmIwNmZmZTg1ODYx
ZjM2ZWQ1MTA1MjAyZGNlZGFlNzRkNzNlNy4uYjJkNjU5NWViMTk0NGVhYzMzMWUwMjc5ODhiNDFi
NTI0YjU0YzUyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50LmNwcApAQCAtMTM5LDcg
KzEzOSw3IEBAIHZvaWQgSFRNTERvY3VtZW50OjpzZXREZXNpZ25Nb2RlKGNvbnN0IFN0cmluZyYg
dmFsdWUpCiBjb25zdCBBdG9taWNTdHJpbmcmIEhUTUxEb2N1bWVudDo6YmdDb2xvcigpIGNvbnN0
CiB7CiAgICAgSFRNTEVsZW1lbnQqIGJvZHlFbGVtZW50ID0gYm9keSgpOwotICAgIGlmICghYm9k
eUVsZW1lbnQgfHwgIWlzSFRNTEJvZHlFbGVtZW50KGJvZHlFbGVtZW50KSkKKyAgICBpZiAoIWJv
ZHlFbGVtZW50IHx8ICFpczxIVE1MQm9keUVsZW1lbnQ+KGJvZHlFbGVtZW50KSkKICAgICAgICAg
cmV0dXJuIGVtcHR5QXRvbTsKICAgICByZXR1cm4gYm9keUVsZW1lbnQtPmZhc3RHZXRBdHRyaWJ1
dGUoYmdjb2xvckF0dHIpOwogfQpAQCAtMTQ3LDcgKzE0Nyw3IEBAIGNvbnN0IEF0b21pY1N0cmlu
ZyYgSFRNTERvY3VtZW50OjpiZ0NvbG9yKCkgY29uc3QKIHZvaWQgSFRNTERvY3VtZW50OjpzZXRC
Z0NvbG9yKGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7CiAgICAgSFRNTEVsZW1lbnQqIGJvZHlFbGVt
ZW50ID0gYm9keSgpOwotICAgIGlmICghYm9keUVsZW1lbnQgfHwgIWlzSFRNTEJvZHlFbGVtZW50
KGJvZHlFbGVtZW50KSkKKyAgICBpZiAoIWJvZHlFbGVtZW50IHx8ICFpczxIVE1MQm9keUVsZW1l
bnQ+KGJvZHlFbGVtZW50KSkKICAgICAgICAgcmV0dXJuOwogICAgIGJvZHlFbGVtZW50LT5zZXRB
dHRyaWJ1dGUoYmdjb2xvckF0dHIsIHZhbHVlKTsKIH0KQEAgLTE1NSw3ICsxNTUsNyBAQCB2b2lk
IEhUTUxEb2N1bWVudDo6c2V0QmdDb2xvcihjb25zdCBTdHJpbmcmIHZhbHVlKQogY29uc3QgQXRv
bWljU3RyaW5nJiBIVE1MRG9jdW1lbnQ6OmZnQ29sb3IoKSBjb25zdAogewogICAgIEhUTUxFbGVt
ZW50KiBib2R5RWxlbWVudCA9IGJvZHkoKTsKLSAgICBpZiAoIWJvZHlFbGVtZW50IHx8ICFpc0hU
TUxCb2R5RWxlbWVudChib2R5RWxlbWVudCkpCisgICAgaWYgKCFib2R5RWxlbWVudCB8fCAhaXM8
SFRNTEJvZHlFbGVtZW50Pihib2R5RWxlbWVudCkpCiAgICAgICAgIHJldHVybiBlbXB0eUF0b207
CiAgICAgcmV0dXJuIGJvZHlFbGVtZW50LT5mYXN0R2V0QXR0cmlidXRlKHRleHRBdHRyKTsKIH0K
QEAgLTE2Myw3ICsxNjMsNyBAQCBjb25zdCBBdG9taWNTdHJpbmcmIEhUTUxEb2N1bWVudDo6ZmdD
b2xvcigpIGNvbnN0CiB2b2lkIEhUTUxEb2N1bWVudDo6c2V0RmdDb2xvcihjb25zdCBTdHJpbmcm
IHZhbHVlKQogewogICAgIEhUTUxFbGVtZW50KiBib2R5RWxlbWVudCA9IGJvZHkoKTsKLSAgICBp
ZiAoIWJvZHlFbGVtZW50IHx8ICFpc0hUTUxCb2R5RWxlbWVudChib2R5RWxlbWVudCkpCisgICAg
aWYgKCFib2R5RWxlbWVudCB8fCAhaXM8SFRNTEJvZHlFbGVtZW50Pihib2R5RWxlbWVudCkpCiAg
ICAgICAgIHJldHVybjsKICAgICBib2R5RWxlbWVudC0+c2V0QXR0cmlidXRlKHRleHRBdHRyLCB2
YWx1ZSk7CiB9CkBAIC0xNzEsNyArMTcxLDcgQEAgdm9pZCBIVE1MRG9jdW1lbnQ6OnNldEZnQ29s
b3IoY29uc3QgU3RyaW5nJiB2YWx1ZSkKIGNvbnN0IEF0b21pY1N0cmluZyYgSFRNTERvY3VtZW50
OjphbGlua0NvbG9yKCkgY29uc3QKIHsKICAgICBIVE1MRWxlbWVudCogYm9keUVsZW1lbnQgPSBi
b2R5KCk7Ci0gICAgaWYgKCFib2R5RWxlbWVudCB8fCAhaXNIVE1MQm9keUVsZW1lbnQoYm9keUVs
ZW1lbnQpKQorICAgIGlmICghYm9keUVsZW1lbnQgfHwgIWlzPEhUTUxCb2R5RWxlbWVudD4oYm9k
eUVsZW1lbnQpKQogICAgICAgICByZXR1cm4gZW1wdHlBdG9tOwogICAgIHJldHVybiBib2R5RWxl
bWVudC0+ZmFzdEdldEF0dHJpYnV0ZShhbGlua0F0dHIpOwogfQpAQCAtMTc5LDcgKzE3OSw3IEBA
IGNvbnN0IEF0b21pY1N0cmluZyYgSFRNTERvY3VtZW50OjphbGlua0NvbG9yKCkgY29uc3QKIHZv
aWQgSFRNTERvY3VtZW50OjpzZXRBbGlua0NvbG9yKGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7CiAg
ICAgSFRNTEVsZW1lbnQqIGJvZHlFbGVtZW50ID0gYm9keSgpOwotICAgIGlmICghYm9keUVsZW1l
bnQgfHwgIWlzSFRNTEJvZHlFbGVtZW50KGJvZHlFbGVtZW50KSkKKyAgICBpZiAoIWJvZHlFbGVt
ZW50IHx8ICFpczxIVE1MQm9keUVsZW1lbnQ+KGJvZHlFbGVtZW50KSkKICAgICAgICAgcmV0dXJu
OwogICAgIGJvZHlFbGVtZW50LT5zZXRBdHRyaWJ1dGUoYWxpbmtBdHRyLCB2YWx1ZSk7CiB9CkBA
IC0xODcsNyArMTg3LDcgQEAgdm9pZCBIVE1MRG9jdW1lbnQ6OnNldEFsaW5rQ29sb3IoY29uc3Qg
U3RyaW5nJiB2YWx1ZSkKIGNvbnN0IEF0b21pY1N0cmluZyYgSFRNTERvY3VtZW50OjpsaW5rQ29s
b3IoKSBjb25zdAogewogICAgIEhUTUxFbGVtZW50KiBib2R5RWxlbWVudCA9IGJvZHkoKTsKLSAg
ICBpZiAoIWJvZHlFbGVtZW50IHx8ICFpc0hUTUxCb2R5RWxlbWVudChib2R5RWxlbWVudCkpCisg
ICAgaWYgKCFib2R5RWxlbWVudCB8fCAhaXM8SFRNTEJvZHlFbGVtZW50Pihib2R5RWxlbWVudCkp
CiAgICAgICAgIHJldHVybiBlbXB0eUF0b207CiAgICAgcmV0dXJuIGJvZHlFbGVtZW50LT5mYXN0
R2V0QXR0cmlidXRlKGxpbmtBdHRyKTsKIH0KQEAgLTE5NSw3ICsxOTUsNyBAQCBjb25zdCBBdG9t
aWNTdHJpbmcmIEhUTUxEb2N1bWVudDo6bGlua0NvbG9yKCkgY29uc3QKIHZvaWQgSFRNTERvY3Vt
ZW50OjpzZXRMaW5rQ29sb3IoY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBIVE1MRWxlbWVu
dCogYm9keUVsZW1lbnQgPSBib2R5KCk7Ci0gICAgaWYgKCFib2R5RWxlbWVudCB8fCAhaXNIVE1M
Qm9keUVsZW1lbnQoYm9keUVsZW1lbnQpKQorICAgIGlmICghYm9keUVsZW1lbnQgfHwgIWlzPEhU
TUxCb2R5RWxlbWVudD4oYm9keUVsZW1lbnQpKQogICAgICAgICByZXR1cm47CiAgICAgcmV0dXJu
IGJvZHlFbGVtZW50LT5zZXRBdHRyaWJ1dGUobGlua0F0dHIsIHZhbHVlKTsKIH0KQEAgLTIwMyw3
ICsyMDMsNyBAQCB2b2lkIEhUTUxEb2N1bWVudDo6c2V0TGlua0NvbG9yKGNvbnN0IFN0cmluZyYg
dmFsdWUpCiBjb25zdCBBdG9taWNTdHJpbmcmIEhUTUxEb2N1bWVudDo6dmxpbmtDb2xvcigpIGNv
bnN0CiB7CiAgICAgSFRNTEVsZW1lbnQqIGJvZHlFbGVtZW50ID0gYm9keSgpOwotICAgIGlmICgh
Ym9keUVsZW1lbnQgfHwgIWlzSFRNTEJvZHlFbGVtZW50KGJvZHlFbGVtZW50KSkKKyAgICBpZiAo
IWJvZHlFbGVtZW50IHx8ICFpczxIVE1MQm9keUVsZW1lbnQ+KGJvZHlFbGVtZW50KSkKICAgICAg
ICAgcmV0dXJuIGVtcHR5QXRvbTsKICAgICByZXR1cm4gYm9keUVsZW1lbnQtPmZhc3RHZXRBdHRy
aWJ1dGUodmxpbmtBdHRyKTsKIH0KQEAgLTIxMSw3ICsyMTEsNyBAQCBjb25zdCBBdG9taWNTdHJp
bmcmIEhUTUxEb2N1bWVudDo6dmxpbmtDb2xvcigpIGNvbnN0CiB2b2lkIEhUTUxEb2N1bWVudDo6
c2V0VmxpbmtDb2xvcihjb25zdCBTdHJpbmcmIHZhbHVlKQogewogICAgIEhUTUxFbGVtZW50KiBi
b2R5RWxlbWVudCA9IGJvZHkoKTsKLSAgICBpZiAoIWJvZHlFbGVtZW50IHx8ICFpc0hUTUxCb2R5
RWxlbWVudChib2R5RWxlbWVudCkpCisgICAgaWYgKCFib2R5RWxlbWVudCB8fCAhaXM8SFRNTEJv
ZHlFbGVtZW50Pihib2R5RWxlbWVudCkpCiAgICAgICAgIHJldHVybjsKICAgICByZXR1cm4gYm9k
eUVsZW1lbnQtPnNldEF0dHJpYnV0ZSh2bGlua0F0dHIsIHZhbHVlKTsKIH0KQEAgLTM0MCw3ICsz
NDAsNyBAQCB2b2lkIEhUTUxEb2N1bWVudDo6Y2xlYXIoKQogYm9vbCBIVE1MRG9jdW1lbnQ6Omlz
RnJhbWVTZXQoKSBjb25zdAogewogICAgIEhUTUxFbGVtZW50KiBib2R5RWxlbWVudCA9IGJvZHko
KTsKLSAgICByZXR1cm4gYm9keUVsZW1lbnQgJiYgaXNIVE1MRnJhbWVTZXRFbGVtZW50KGJvZHlF
bGVtZW50KTsKKyAgICByZXR1cm4gYm9keUVsZW1lbnQgJiYgaXM8SFRNTEZyYW1lU2V0RWxlbWVu
dD4oYm9keUVsZW1lbnQpOwogfQogCiBQYXNzUmVmUHRyPERvY3VtZW50PiBIVE1MRG9jdW1lbnQ6
OmNsb25lRG9jdW1lbnRXaXRob3V0Q2hpbGRyZW4oKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxF
bGVtZW50LmNwcAppbmRleCBkOGQ0ZDk2ZTI5OTQ4YzMyNTFiNGZlNjdiNjRlYmNlZGEwZTliZTFl
Li5jZDkyZmY4ZjI3Y2Y4MzRmZmU1NGU1ODYwODkxYTVjMzQ5OWU3ZDFkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxFbGVtZW50LmNwcApAQCAtNDI3LDcgKzQyNyw3IEBAIHZvaWQgSFRNTEVsZW1lbnQ6
OnNldElubmVySFRNTChjb25zdCBTdHJpbmcmIGh0bWwsIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAg
IGlmIChSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZnJhZ21lbnQgPSBjcmVhdGVGcmFnbWVudEZv
cklubmVyT3V0ZXJIVE1MKGh0bWwsIHRoaXMsIEFsbG93U2NyaXB0aW5nQ29udGVudCwgZWMpKSB7
CiAgICAgICAgIENvbnRhaW5lck5vZGUqIGNvbnRhaW5lciA9IHRoaXM7CiAjaWYgRU5BQkxFKFRF
TVBMQVRFX0VMRU1FTlQpCi0gICAgICAgIGlmIChpc0hUTUxUZW1wbGF0ZUVsZW1lbnQoKnRoaXMp
KQorICAgICAgICBpZiAoaXM8SFRNTFRlbXBsYXRlRWxlbWVudD4oKnRoaXMpKQogICAgICAgICAg
ICAgY29udGFpbmVyID0gZG93bmNhc3Q8SFRNTFRlbXBsYXRlRWxlbWVudD4oKnRoaXMpLmNvbnRl
bnQoKTsKICNlbmRpZgogICAgICAgICByZXBsYWNlQ2hpbGRyZW5XaXRoRnJhZ21lbnQoKmNvbnRh
aW5lciwgZnJhZ21lbnQucmVsZWFzZSgpLCBlYyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxGaWVsZFNldEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
RmllbGRTZXRFbGVtZW50LmNwcAppbmRleCA1ZmQyZDRjZjcwMzJkY2Q5MDk4Yjg5ZDk3Njg5NDhj
YTJkOWY1MDdjLi5hYzM2NTFmMTkzNWY0OTUxYTFjMTVhZDljYjdmN2FkNmRiYjdiNGUyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGaWVsZFNldEVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZpZWxkU2V0RWxlbWVudC5jcHAKQEAgLTY1LDcgKzY1
LDcgQEAgc3RhdGljIHZvaWQgdXBkYXRlRnJvbUNvbnRyb2xFbGVtZW50c0FuY2VzdG9yRGlzYWJs
ZWRTdGF0ZVVuZGVyKEhUTUxFbGVtZW50JiBzdGEKICAgICB3aGlsZSAoY29udHJvbCkgewogICAg
ICAgICBjb250cm9sLT5zZXRBbmNlc3RvckRpc2FibGVkKGlzRGlzYWJsZWQpOwogICAgICAgICAv
LyBEb24ndCBjYWxsIHNldEFuY2VzdG9yRGlzYWJsZWQoZmFsc2UpIG9uIGZvcm0gY29udG9ybHMg
aW5zaWRlIGRpc2FibGVkIGZpZWxkc2V0cy4KLSAgICAgICAgaWYgKGlzSFRNTEZpZWxkU2V0RWxl
bWVudChjb250cm9sKSAmJiBjb250cm9sLT5mYXN0SGFzQXR0cmlidXRlKGRpc2FibGVkQXR0cikp
CisgICAgICAgIGlmIChpczxIVE1MRmllbGRTZXRFbGVtZW50Pihjb250cm9sKSAmJiBjb250cm9s
LT5mYXN0SGFzQXR0cmlidXRlKGRpc2FibGVkQXR0cikpCiAgICAgICAgICAgICBjb250cm9sID0g
VHJhdmVyc2FsPEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ+OjpuZXh0U2tpcHBpbmdDaGlsZHJlbihj
b250cm9sLCAmc3RhcnROb2RlKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgY29udHJvbCA9
IFRyYXZlcnNhbDxIVE1MRm9ybUNvbnRyb2xFbGVtZW50Pjo6bmV4dChjb250cm9sLCAmc3RhcnRO
b2RlKTsKQEAgLTkzLDcgKzkzLDcgQEAgdm9pZCBIVE1MRmllbGRTZXRFbGVtZW50OjpkaXNhYmxl
ZFN0YXRlQ2hhbmdlZCgpCiAgICAgYm9vbCB0aGlzRmllbGRzZXRJc0Rpc2FibGVkID0gZmFzdEhh
c0F0dHJpYnV0ZShkaXNhYmxlZEF0dHIpOwogICAgIGJvb2wgaGFzU2VlbkZpcnN0TGVnZW5kRWxl
bWVudCA9IGZhbHNlOwogICAgIGZvciAoSFRNTEVsZW1lbnQqIGNvbnRyb2wgPSBUcmF2ZXJzYWw8
SFRNTEVsZW1lbnQ+OjpmaXJzdENoaWxkKHRoaXMpOyBjb250cm9sOyBjb250cm9sID0gVHJhdmVy
c2FsPEhUTUxFbGVtZW50Pjo6bmV4dFNpYmxpbmcoY29udHJvbCkpIHsKLSAgICAgICAgaWYgKCFo
YXNTZWVuRmlyc3RMZWdlbmRFbGVtZW50ICYmIGlzSFRNTExlZ2VuZEVsZW1lbnQoY29udHJvbCkp
IHsKKyAgICAgICAgaWYgKCFoYXNTZWVuRmlyc3RMZWdlbmRFbGVtZW50ICYmIGlzPEhUTUxMZWdl
bmRFbGVtZW50Pihjb250cm9sKSkgewogICAgICAgICAgICAgaGFzU2VlbkZpcnN0TGVnZW5kRWxl
bWVudCA9IHRydWU7CiAgICAgICAgICAgICB1cGRhdGVGcm9tQ29udHJvbEVsZW1lbnRzQW5jZXN0
b3JEaXNhYmxlZFN0YXRlVW5kZXIoKmNvbnRyb2wsIGZhbHNlIC8qIGlzRGlzYWJsZWQgKi8pOwog
ICAgICAgICAgICAgY29udGludWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNv
bnRyb2xFbGVtZW50LmNwcAppbmRleCA4YzdhZjE2M2EwZDJmN2FiZjkxY2IxNDlhODc2NmViZWY0
ZjZhZTEzLi4xNWIwM2RkZWM1ZmZlMTQ5NjJiMjE4MzdiY2I5ODFhYzU5ZjgzNTAzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAKQEAgLTEwMyw5
ICsxMDMsOSBAQCBib29sIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OmNvbXB1dGVJc0Rpc2FibGVk
QnlGaWVsZHNldEFuY2VzdG9yKCkgY29uc3QKIHsKICAgICBFbGVtZW50KiBwcmV2aW91c0FuY2Vz
dG9yID0gbnVsbHB0cjsKICAgICBmb3IgKEVsZW1lbnQqIGFuY2VzdG9yID0gcGFyZW50RWxlbWVu
dCgpOyBhbmNlc3RvcjsgYW5jZXN0b3IgPSBhbmNlc3Rvci0+cGFyZW50RWxlbWVudCgpKSB7Ci0g
ICAgICAgIGlmIChpc0hUTUxGaWVsZFNldEVsZW1lbnQoYW5jZXN0b3IpICYmIGFuY2VzdG9yLT5m
YXN0SGFzQXR0cmlidXRlKGRpc2FibGVkQXR0cikpIHsKKyAgICAgICAgaWYgKGlzPEhUTUxGaWVs
ZFNldEVsZW1lbnQ+KGFuY2VzdG9yKSAmJiBhbmNlc3Rvci0+ZmFzdEhhc0F0dHJpYnV0ZShkaXNh
YmxlZEF0dHIpKSB7CiAgICAgICAgICAgICBIVE1MRmllbGRTZXRFbGVtZW50JiBmaWVsZFNldEFu
Y2VzdG9yID0gZG93bmNhc3Q8SFRNTEZpZWxkU2V0RWxlbWVudD4oKmFuY2VzdG9yKTsKLSAgICAg
ICAgICAgIGJvb2wgaXNJbkZpcnN0TGVnZW5kID0gcHJldmlvdXNBbmNlc3RvciAmJiBpc0hUTUxM
ZWdlbmRFbGVtZW50KHByZXZpb3VzQW5jZXN0b3IpICYmIHByZXZpb3VzQW5jZXN0b3IgPT0gZmll
bGRTZXRBbmNlc3Rvci5sZWdlbmQoKTsKKyAgICAgICAgICAgIGJvb2wgaXNJbkZpcnN0TGVnZW5k
ID0gcHJldmlvdXNBbmNlc3RvciAmJiBpczxIVE1MTGVnZW5kRWxlbWVudD4ocHJldmlvdXNBbmNl
c3RvcikgJiYgcHJldmlvdXNBbmNlc3RvciA9PSBmaWVsZFNldEFuY2VzdG9yLmxlZ2VuZCgpOwog
ICAgICAgICAgICAgcmV0dXJuICFpc0luRmlyc3RMZWdlbmQ7CiAgICAgICAgIH0KICAgICAgICAg
cHJldmlvdXNBbmNlc3RvciA9IGFuY2VzdG9yOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmNwcAppbmRleCA2OGMxZGVlZjI0NzczMjczMWY3
ZTA1MzZhMDMwMDc1ZGRmM2Y5N2ZmLi4wNTI0OGFjZDE3ODZiMjgxZjZiMWU2NDg5MWI5ZmVkZjg3
MGQ2OTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbHND
b2xsZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbHND
b2xsZWN0aW9uLmNwcApAQCAtNDAsNyArNDAsNyBAQCBIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlv
bjo6SFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24oQ29udGFpbmVyTm9kZSYgb3duZXJOb2RlKQog
ICAgICwgbV9jYWNoZWRFbGVtZW50KG51bGxwdHIpCiAgICAgLCBtX2NhY2hlZEVsZW1lbnRPZmZz
ZXRJbkFycmF5KDApCiB7Ci0gICAgQVNTRVJUKGlzSFRNTEZvcm1FbGVtZW50KG93bmVyTm9kZSkg
fHwgaXNIVE1MRmllbGRTZXRFbGVtZW50KG93bmVyTm9kZSkpOworICAgIEFTU0VSVChpczxIVE1M
Rm9ybUVsZW1lbnQ+KG93bmVyTm9kZSkgfHwgaXM8SFRNTEZpZWxkU2V0RWxlbWVudD4ob3duZXJO
b2RlKSk7CiB9CiAKIFBhc3NSZWY8SFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24+IEhUTUxGb3Jt
Q29udHJvbHNDb2xsZWN0aW9uOjpjcmVhdGUoQ29udGFpbmVyTm9kZSYgb3duZXJOb2RlLCBDb2xs
ZWN0aW9uVHlwZSkKQEAgLTU0LDE1ICs1NCwxNSBAQCBIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlv
bjo6fkhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uKCkKIAogY29uc3QgVmVjdG9yPEZvcm1Bc3Nv
Y2lhdGVkRWxlbWVudCo+JiBIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbjo6Zm9ybUNvbnRyb2xF
bGVtZW50cygpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKGlzSFRNTEZvcm1FbGVtZW50KG93bmVyTm9k
ZSgpKSB8fCBvd25lck5vZGUoKS5oYXNUYWdOYW1lKGZpZWxkc2V0VGFnKSk7Ci0gICAgaWYgKGlz
SFRNTEZvcm1FbGVtZW50KG93bmVyTm9kZSgpKSkKKyAgICBBU1NFUlQoaXM8SFRNTEZvcm1FbGVt
ZW50Pihvd25lck5vZGUoKSkgfHwgaXM8SFRNTEZpZWxkU2V0RWxlbWVudD4ob3duZXJOb2RlKCkp
KTsKKyAgICBpZiAoaXM8SFRNTEZvcm1FbGVtZW50Pihvd25lck5vZGUoKSkpCiAgICAgICAgIHJl
dHVybiBkb3duY2FzdDxIVE1MRm9ybUVsZW1lbnQ+KG93bmVyTm9kZSgpKS5hc3NvY2lhdGVkRWxl
bWVudHMoKTsKICAgICByZXR1cm4gZG93bmNhc3Q8SFRNTEZpZWxkU2V0RWxlbWVudD4ob3duZXJO
b2RlKCkpLmFzc29jaWF0ZWRFbGVtZW50cygpOwogfQogCiBjb25zdCBWZWN0b3I8SFRNTEltYWdl
RWxlbWVudCo+JiBIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbjo6Zm9ybUltYWdlRWxlbWVudHMo
KSBjb25zdAogewotICAgIEFTU0VSVChpc0hUTUxGb3JtRWxlbWVudChvd25lck5vZGUoKSkpOwor
ICAgIEFTU0VSVChpczxIVE1MRm9ybUVsZW1lbnQ+KG93bmVyTm9kZSgpKSk7CiAgICAgcmV0dXJu
IGRvd25jYXN0PEhUTUxGb3JtRWxlbWVudD4ob3duZXJOb2RlKCkpLmltYWdlRWxlbWVudHMoKTsK
IH0KIApAQCAtMTI4LDcgKzEyOCw3IEBAIE5vZGUqIEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9u
OjpuYW1lZEl0ZW0oY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKSBjb25zdAogICAgIC8vIGF0dHJp
YnV0ZS4gSWYgYSBtYXRjaCBpcyBub3QgZm91bmQsIHRoZSBtZXRob2QgdGhlbiBzZWFyY2hlcyBm
b3IgYW4KICAgICAvLyBvYmplY3Qgd2l0aCBhIG1hdGNoaW5nIG5hbWUgYXR0cmlidXRlLCBidXQg
b25seSBvbiB0aG9zZSBlbGVtZW50cwogICAgIC8vIHRoYXQgYXJlIGFsbG93ZWQgYSBuYW1lIGF0
dHJpYnV0ZS4KLSAgICBjb25zdCBWZWN0b3I8SFRNTEltYWdlRWxlbWVudCo+KiBpbWFnZXNFbGVt
ZW50cyA9IG93bmVyTm9kZSgpLmhhc1RhZ05hbWUoZmllbGRzZXRUYWcpID8gbnVsbHB0ciA6ICZm
b3JtSW1hZ2VFbGVtZW50cygpOworICAgIGNvbnN0IFZlY3RvcjxIVE1MSW1hZ2VFbGVtZW50Kj4q
IGltYWdlc0VsZW1lbnRzID0gaXM8SFRNTEZpZWxkU2V0RWxlbWVudD4ob3duZXJOb2RlKCkpID8g
bnVsbHB0ciA6ICZmb3JtSW1hZ2VFbGVtZW50cygpOwogICAgIGlmIChIVE1MRWxlbWVudCogaXRl
bSA9IGZpcnN0TmFtZWRJdGVtKGZvcm1Db250cm9sRWxlbWVudHMoKSwgaW1hZ2VzRWxlbWVudHMs
IGlkQXR0ciwgbmFtZSkpCiAgICAgICAgIHJldHVybiBpdGVtOwogCkBAIC0xNjEsNyArMTYxLDcg
QEAgdm9pZCBIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbjo6dXBkYXRlTmFtZWRFbGVtZW50Q2Fj
aGUoKSBjb25zdAogICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKGlzSFRNTEZvcm1FbGVtZW50
KG93bmVyTm9kZSgpKSkgeworICAgIGlmIChpczxIVE1MRm9ybUVsZW1lbnQ+KG93bmVyTm9kZSgp
KSkgewogICAgICAgICBjb25zdCBWZWN0b3I8SFRNTEltYWdlRWxlbWVudCo+JiBpbWFnZUVsZW1l
bnRzQXJyYXkgPSBmb3JtSW1hZ2VFbGVtZW50cygpOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgaW1hZ2VFbGVtZW50c0FycmF5LnNpemUoKTsgKytpKSB7CiAgICAgICAgICAgICBI
VE1MSW1hZ2VFbGVtZW50JiBlbGVtZW50ID0gKmltYWdlRWxlbWVudHNBcnJheVtpXTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcAppbmRleCBkY2QyYTg4NmE5NWI5MDQzMDMz
YTUzODU4ZTk2NWM0NDVkNDk0NDllLi5lYWZmNzFmMTY3Y2M3NzhhM2Y3MjNlMTQ0YjNkY2QxYjdj
YjI2NGY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCkBAIC0xMTAs
NyArMTEwLDcgQEAgYm9vbCBIVE1MRm9ybUVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoY29uc3Qg
UmVuZGVyU3R5bGUmIHN0eWxlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAvLyBGSVhN
RTogU2hvdWxkbid0IHdlIGFsc28gY2hlY2sgZm9yIHRhYmxlIGNhcHRpb24gKHNlZSB8Zm9ybUlz
VGFibGVQYXJ0fCBiZWxvdykuCi0gICAgYm9vbCBwYXJlbnRJc1RhYmxlRWxlbWVudFBhcnQgPSAo
cGFyZW50UmVuZGVyZXItPmlzVGFibGUoKSAmJiBpc0hUTUxUYWJsZUVsZW1lbnQocGFyZW50KSkK
KyAgICBib29sIHBhcmVudElzVGFibGVFbGVtZW50UGFydCA9IChwYXJlbnRSZW5kZXJlci0+aXNU
YWJsZSgpICYmIGlzPEhUTUxUYWJsZUVsZW1lbnQ+KHBhcmVudCkpCiAgICAgICAgIHx8IChwYXJl
bnRSZW5kZXJlci0+aXNUYWJsZVJvdygpICYmIHBhcmVudC0+aGFzVGFnTmFtZSh0clRhZykpCiAg
ICAgICAgIHx8IChwYXJlbnRSZW5kZXJlci0+aXNUYWJsZVNlY3Rpb24oKSAmJiBwYXJlbnQtPmhh
c1RhZ05hbWUodGJvZHlUYWcpKQogICAgICAgICB8fCAocGFyZW50UmVuZGVyZXItPmlzUmVuZGVy
VGFibGVDb2woKSAmJiBwYXJlbnQtPmhhc1RhZ05hbWUoY29sVGFnKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudEJhc2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEZyYW1lRWxlbWVudEJhc2UuaAppbmRleCAyNzllYmQ4MmE4OGNmNDI3ZDQzNjUw
ZTJlNWViOGE3MTRhYjJkMTBkLi5iNDc1YmQ1OGJkM2MyYzRkMDM1M2I5ZmFlZTMyNWQ4YTc2ODAx
MWMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnRCYXNl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50QmFzZS5oCkBAIC03
Nyw4ICs3Nyw4IEBAIHByaXZhdGU6CiB9OwogCiB2b2lkIGlzSFRNTEZyYW1lRWxlbWVudEJhc2Uo
Y29uc3QgSFRNTEZyYW1lRWxlbWVudEJhc2UmKTsgLy8gQ2F0Y2ggdW5uZWNlc3NhcnkgcnVudGlt
ZSBjaGVjayBvZiB0eXBlIGtub3duIGF0IGNvbXBpbGUgdGltZS4KLWlubGluZSBib29sIGlzSFRN
TEZyYW1lRWxlbWVudEJhc2UoY29uc3QgSFRNTEVsZW1lbnQmIGVsZW1lbnQpIHsgcmV0dXJuIGlz
SFRNTEZyYW1lRWxlbWVudChlbGVtZW50KSB8fCBpc0hUTUxJRnJhbWVFbGVtZW50KGVsZW1lbnQp
OyB9Ci1pbmxpbmUgYm9vbCBpc0hUTUxGcmFtZUVsZW1lbnRCYXNlKGNvbnN0IE5vZGUmIG5vZGUp
IHsgcmV0dXJuIGlzSFRNTEZyYW1lRWxlbWVudChub2RlKSB8fCBpc0hUTUxJRnJhbWVFbGVtZW50
KG5vZGUpOyB9CitpbmxpbmUgYm9vbCBpc0hUTUxGcmFtZUVsZW1lbnRCYXNlKGNvbnN0IEhUTUxF
bGVtZW50JiBlbGVtZW50KSB7IHJldHVybiBpczxIVE1MRnJhbWVFbGVtZW50PihlbGVtZW50KSB8
fCBpczxIVE1MSUZyYW1lRWxlbWVudD4oZWxlbWVudCk7IH0KK2lubGluZSBib29sIGlzSFRNTEZy
YW1lRWxlbWVudEJhc2UoY29uc3QgTm9kZSYgbm9kZSkgeyByZXR1cm4gaXM8SFRNTEZyYW1lRWxl
bWVudD4obm9kZSkgfHwgaXM8SFRNTElGcmFtZUVsZW1lbnQ+KG5vZGUpOyB9CiAKIE5PREVfVFlQ
RV9DQVNUUyhIVE1MRnJhbWVFbGVtZW50QmFzZSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MSW1hZ2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1h
Z2VMb2FkZXIuY3BwCmluZGV4IDI5ZmJjZGU4YzZkOWJkNjZmMzlkYjJkNDAwN2U4MWU0ZTBmZjcz
ZDkuLjMwYWExNzA0YjlkMmYxYjExNzY1YWViNTJlNTc3YzJmYTgxNDAyODcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxJbWFnZUxvYWRlci5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAgSFRNTEltYWdl
TG9hZGVyOjp+SFRNTEltYWdlTG9hZGVyKCkKIHZvaWQgSFRNTEltYWdlTG9hZGVyOjpkaXNwYXRj
aExvYWRFdmVudCgpCiB7CiAgICAgLy8gSFRNTFZpZGVvRWxlbWVudCB1c2VzIHRoaXMgY2xhc3Mg
dG8gbG9hZCB0aGUgcG9zdGVyIGltYWdlLCBidXQgaXQgc2hvdWxkIG5vdCBmaXJlIGV2ZW50cyBm
b3IgbG9hZGluZyBvciBmYWlsdXJlLgotICAgIGlmIChpc0hUTUxWaWRlb0VsZW1lbnQoZWxlbWVu
dCgpKSkKKyAgICBpZiAoaXM8SFRNTFZpZGVvRWxlbWVudD4oZWxlbWVudCgpKSkKICAgICAgICAg
cmV0dXJuOwogCiAgICAgYm9vbCBlcnJvck9jY3VycmVkID0gaW1hZ2UoKS0+ZXJyb3JPY2N1cnJl
ZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKaW5kZXggZTJkNTVl
MzM1MTQ1YmEyOTljYjcyMWY3ZDhkYTc3ZDZjYmRlNjUxZC4uNDM5YTBhMWNmYjg3ZWRkOGUyN2I1
MTk3ZTE2ZTNlOWZlZDllZmMzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
SW5wdXRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1l
bnQuY3BwCkBAIC0xNTIxLDcgKzE1MjEsNyBAQCBIVE1MRGF0YUxpc3RFbGVtZW50KiBIVE1MSW5w
dXRFbGVtZW50OjpkYXRhTGlzdCgpIGNvbnN0CiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAg
ICAgRWxlbWVudCogZWxlbWVudCA9IHRyZWVTY29wZSgpLmdldEVsZW1lbnRCeUlkKGZhc3RHZXRB
dHRyaWJ1dGUobGlzdEF0dHIpKTsKLSAgICBpZiAoIWVsZW1lbnQgfHwgIWlzSFRNTERhdGFMaXN0
RWxlbWVudChlbGVtZW50KSkKKyAgICBpZiAoIWVsZW1lbnQgfHwgIWlzPEhUTUxEYXRhTGlzdEVs
ZW1lbnQ+KGVsZW1lbnQpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIHJldHVybiBk
b3duY2FzdDxIVE1MRGF0YUxpc3RFbGVtZW50PihlbGVtZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTExlZ2VuZEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTGVnZW5kRWxlbWVudC5jcHAKaW5kZXggMmZiNGQyNTBmMjUxYjBmZjk1MjlmODdhOGU4
ODc4MzFhZDdlZTQyYy4uOGU5YzgyOTMxYzI0NGQxOTlhODY3OTM2MzdkZjNkMDYzYTVhZjY2OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGVnZW5kRWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGVnZW5kRWxlbWVudC5jcHAKQEAgLTc5LDcgKzc5
LDcgQEAgSFRNTEZvcm1FbGVtZW50KiBIVE1MTGVnZW5kRWxlbWVudDo6dmlydHVhbEZvcm0oKSBj
b25zdAogICAgIC8vIGl0cyBwYXJlbnQsIHRoZW4gdGhlIGZvcm0gYXR0cmlidXRlIG11c3QgcmV0
dXJuIHRoZSBzYW1lIHZhbHVlIGFzIHRoZQogICAgIC8vIGZvcm0gYXR0cmlidXRlIG9uIHRoYXQg
ZmllbGRzZXQgZWxlbWVudC4gT3RoZXJ3aXNlLCBpdCBtdXN0IHJldHVybiBudWxsLgogICAgIENv
bnRhaW5lck5vZGUqIGZpZWxkc2V0ID0gcGFyZW50Tm9kZSgpOwotICAgIGlmICghZmllbGRzZXQg
fHwgIWlzSFRNTEZpZWxkU2V0RWxlbWVudChmaWVsZHNldCkpCisgICAgaWYgKCFmaWVsZHNldCB8
fCAhaXM8SFRNTEZpZWxkU2V0RWxlbWVudD4oZmllbGRzZXQpKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKIAogICAgIHJldHVybiBkb3duY2FzdDxIVE1MRmllbGRTZXRFbGVtZW50PigqZmllbGRz
ZXQpLmZvcm0oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCmluZGV4
IGQzNjhiYWRhNWRhMGJhNjJjNjUxYTQ4MTY3NDkzZWI3OTJmMjU3YjQuLmY3ZjU2YWIxMDc5OGY5
ZWM0Njc0YmQxZTQ0OTIxYTQxMmEyOTljM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVk
aWFFbGVtZW50LmNwcApAQCAtNDg4Miw3ICs0ODgyLDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50
OjplbnRlckZ1bGxzY3JlZW4oKQogICAgIG1faXNJblZpZGVvRnVsbHNjcmVlbiA9IHRydWU7CiAg
ICAgaWYgKGhhc01lZGlhQ29udHJvbHMoKSkKICAgICAgICAgbWVkaWFDb250cm9scygpLT5lbnRl
cmVkRnVsbHNjcmVlbigpOwotICAgIGlmIChkb2N1bWVudCgpLnBhZ2UoKSAmJiBpc0hUTUxWaWRl
b0VsZW1lbnQodGhpcykpIHsKKyAgICBpZiAoZG9jdW1lbnQoKS5wYWdlKCkgJiYgaXM8SFRNTFZp
ZGVvRWxlbWVudD4odGhpcykpIHsKICAgICAgICAgSFRNTFZpZGVvRWxlbWVudCYgYXNWaWRlbyA9
IGRvd25jYXN0PEhUTUxWaWRlb0VsZW1lbnQ+KCp0aGlzKTsKICAgICAgICAgaWYgKGRvY3VtZW50
KCkucGFnZSgpLT5jaHJvbWUoKS5jbGllbnQoKS5zdXBwb3J0c1ZpZGVvRnVsbHNjcmVlbigpKSB7
CiAgICAgICAgICAgICBkb2N1bWVudCgpLnBhZ2UoKS0+Y2hyb21lKCkuY2xpZW50KCkuZW50ZXJW
aWRlb0Z1bGxzY3JlZW5Gb3JWaWRlb0VsZW1lbnQoJmFzVmlkZW8pOwpAQCAtNDkwNiw3ICs0OTA2
LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpleGl0RnVsbHNjcmVlbigpCiAgICAgbV9pc0lu
VmlkZW9GdWxsc2NyZWVuID0gZmFsc2U7CiAgICAgaWYgKGhhc01lZGlhQ29udHJvbHMoKSkKICAg
ICAgICAgbWVkaWFDb250cm9scygpLT5leGl0ZWRGdWxsc2NyZWVuKCk7Ci0gICAgaWYgKGRvY3Vt
ZW50KCkucGFnZSgpICYmIGlzSFRNTFZpZGVvRWxlbWVudCh0aGlzKSkgeworICAgIGlmIChkb2N1
bWVudCgpLnBhZ2UoKSAmJiBpczxIVE1MVmlkZW9FbGVtZW50Pih0aGlzKSkgewogICAgICAgICBp
ZiAobV9tZWRpYVNlc3Npb24tPnJlcXVpcmVzRnVsbHNjcmVlbkZvclZpZGVvUGxheWJhY2soKnRo
aXMpKQogICAgICAgICAgICAgcGF1c2VJbnRlcm5hbCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxOYW1lQ29sbGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxOYW1lQ29sbGVjdGlvbi5jcHAKaW5kZXggYWYzYzM2MzUyYWEzNjg2YmJkZmFhMzRlNWQ3
OGFhZGIzYjU2NzFkZi4uZTZiMmQ5NWE3MDU3NWI3Nzc3ODdmZjhjOTJjMDcyNWZiN2JiMjhkZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTmFtZUNvbGxlY3Rpb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE5hbWVDb2xsZWN0aW9uLmNwcApAQCAtNTEsOCAr
NTEsOCBAQCBIVE1MTmFtZUNvbGxlY3Rpb246On5IVE1MTmFtZUNvbGxlY3Rpb24oKQogCiBib29s
IFdpbmRvd05hbWVDb2xsZWN0aW9uOjplbGVtZW50TWF0Y2hlc0lmTmFtZUF0dHJpYnV0ZU1hdGNo
KGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQpCiB7Ci0gICAgcmV0dXJuIGlzSFRNTEltYWdlRWxlbWVu
dChlbGVtZW50KSB8fCBpc0hUTUxGb3JtRWxlbWVudChlbGVtZW50KSB8fCBlbGVtZW50Lmhhc1Rh
Z05hbWUoYXBwbGV0VGFnKQotICAgICAgICB8fCBlbGVtZW50Lmhhc1RhZ05hbWUoZW1iZWRUYWcp
IHx8IGVsZW1lbnQuaGFzVGFnTmFtZShvYmplY3RUYWcpOworICAgIHJldHVybiBpczxIVE1MSW1h
Z2VFbGVtZW50PihlbGVtZW50KSB8fCBpczxIVE1MRm9ybUVsZW1lbnQ+KGVsZW1lbnQpIHx8IGVs
ZW1lbnQuaGFzVGFnTmFtZShhcHBsZXRUYWcpCisgICAgICAgIHx8IGlzPEhUTUxFbWJlZEVsZW1l
bnQ+KGVsZW1lbnQpIHx8IGlzPEhUTUxPYmplY3RFbGVtZW50PihlbGVtZW50KTsKIH0KIAogYm9v
bCBXaW5kb3dOYW1lQ29sbGVjdGlvbjo6ZWxlbWVudE1hdGNoZXMoY29uc3QgRWxlbWVudCYgZWxl
bWVudCwgY29uc3QgQXRvbWljU3RyaW5nSW1wbCogbmFtZSkKQEAgLTgxLDEzICs4MSwxMyBAQCBi
b29sIERvY3VtZW50TmFtZUNvbGxlY3Rpb246OmVsZW1lbnRNYXRjaGVzKGNvbnN0IEVsZW1lbnQm
IGVsZW1lbnQsIGNvbnN0IEF0b21pYwogewogICAgIC8vIEZpbmQgaW1hZ2VzLCBmb3JtcywgYXBw
bGV0cywgZW1iZWRzLCBvYmplY3RzIGFuZCBpZnJhbWVzIGJ5IG5hbWUsIGFwcGxldHMgYW5kIG9i
amVjdCBieSBpZCwgYW5kIGltYWdlcyBieSBpZAogICAgIC8vIGJ1dCBvbmx5IGlmIHRoZXkgaGF2
ZSBhIG5hbWUgYXR0cmlidXRlICh0aGlzIHZlcnkgc3RyYW5nZSBydWxlIG1hdGNoZXMgSUUpCi0g
ICAgaWYgKGlzSFRNTEZvcm1FbGVtZW50KGVsZW1lbnQpIHx8IGVsZW1lbnQuaGFzVGFnTmFtZShl
bWJlZFRhZykgfHwgZWxlbWVudC5oYXNUYWdOYW1lKGlmcmFtZVRhZykpCisgICAgaWYgKGlzPEhU
TUxGb3JtRWxlbWVudD4oZWxlbWVudCkgfHwgaXM8SFRNTEVtYmVkRWxlbWVudD4oZWxlbWVudCkg
fHwgaXM8SFRNTElGcmFtZUVsZW1lbnQ+KGVsZW1lbnQpKQogICAgICAgICByZXR1cm4gZWxlbWVu
dC5nZXROYW1lQXR0cmlidXRlKCkuaW1wbCgpID09IG5hbWU7Ci0gICAgaWYgKGVsZW1lbnQuaGFz
VGFnTmFtZShhcHBsZXRUYWcpKQorICAgIGlmIChpczxIVE1MQXBwbGV0RWxlbWVudD4oZWxlbWVu
dCkpCiAgICAgICAgIHJldHVybiBlbGVtZW50LmdldE5hbWVBdHRyaWJ1dGUoKS5pbXBsKCkgPT0g
bmFtZSB8fCBlbGVtZW50LmdldElkQXR0cmlidXRlKCkuaW1wbCgpID09IG5hbWU7CiAgICAgaWYg
KGlzPEhUTUxPYmplY3RFbGVtZW50PihlbGVtZW50KSkKICAgICAgICAgcmV0dXJuIChlbGVtZW50
LmdldE5hbWVBdHRyaWJ1dGUoKS5pbXBsKCkgPT0gbmFtZSB8fCBlbGVtZW50LmdldElkQXR0cmli
dXRlKCkuaW1wbCgpID09IG5hbWUpICYmIGRvd25jYXN0PEhUTUxPYmplY3RFbGVtZW50PihlbGVt
ZW50KS5pc0RvY05hbWVkSXRlbSgpOwotICAgIGlmIChpc0hUTUxJbWFnZUVsZW1lbnQoZWxlbWVu
dCkpCisgICAgaWYgKGlzPEhUTUxJbWFnZUVsZW1lbnQ+KGVsZW1lbnQpKQogICAgICAgICByZXR1
cm4gZWxlbWVudC5nZXROYW1lQXR0cmlidXRlKCkuaW1wbCgpID09IG5hbWUgfHwgKGVsZW1lbnQu
Z2V0SWRBdHRyaWJ1dGUoKS5pbXBsKCkgPT0gbmFtZSAmJiBlbGVtZW50Lmhhc05hbWUoKSk7CiAg
ICAgcmV0dXJuIGZhbHNlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
T3B0aW9uRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25FbGVtZW50
LmNwcAppbmRleCBjZTY1MTI3YzU4ZjhhY2E2MmE2NWYxNzcyMzg0ODQyZjZjZTNjZDI4Li4zYzM3
NzA4YWVlMjViOTlkOTBlNWNiMTA3YWFhYzQ3NmZiMjIwOTNlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxPcHRpb25FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxPcHRpb25FbGVtZW50LmNwcApAQCAtMjU3LDcgKzI1Nyw3IEBAIHZvaWQgSFRNTE9w
dGlvbkVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChjb25zdCBDaGlsZENoYW5nZSYgY2hhbmdlKQog
SFRNTERhdGFMaXN0RWxlbWVudCogSFRNTE9wdGlvbkVsZW1lbnQ6Om93bmVyRGF0YUxpc3RFbGVt
ZW50KCkgY29uc3QKIHsKICAgICBmb3IgKENvbnRhaW5lck5vZGUqIHBhcmVudCA9IHBhcmVudE5v
ZGUoKTsgcGFyZW50IDsgcGFyZW50ID0gcGFyZW50LT5wYXJlbnROb2RlKCkpIHsKLSAgICAgICAg
aWYgKGlzSFRNTERhdGFMaXN0RWxlbWVudChwYXJlbnQpKQorICAgICAgICBpZiAoaXM8SFRNTERh
dGFMaXN0RWxlbWVudD4ocGFyZW50KSkKICAgICAgICAgICAgIHJldHVybiBkb3duY2FzdDxIVE1M
RGF0YUxpc3RFbGVtZW50PihwYXJlbnQpOwogICAgIH0KICAgICByZXR1cm4gbnVsbHB0cjsKQEAg
LTMwMiw3ICszMDIsNyBAQCB2b2lkIEhUTUxPcHRpb25FbGVtZW50Ojp3aWxsUmVzZXRDb21wdXRl
ZFN0eWxlKCkKIFN0cmluZyBIVE1MT3B0aW9uRWxlbWVudDo6dGV4dEluZGVudGVkVG9SZXNwZWN0
R3JvdXBMYWJlbCgpIGNvbnN0CiB7CiAgICAgQ29udGFpbmVyTm9kZSogcGFyZW50ID0gcGFyZW50
Tm9kZSgpOwotICAgIGlmIChwYXJlbnQgJiYgaXNIVE1MT3B0R3JvdXBFbGVtZW50KHBhcmVudCkp
CisgICAgaWYgKHBhcmVudCAmJiBpczxIVE1MT3B0R3JvdXBFbGVtZW50PihwYXJlbnQpKQogICAg
ICAgICByZXR1cm4gIiAgICAiICsgdGV4dCgpOwogICAgIHJldHVybiB0ZXh0KCk7CiB9CkBAIC0z
MTYsNyArMzE2LDcgQEAgYm9vbCBIVE1MT3B0aW9uRWxlbWVudDo6aXNEaXNhYmxlZEZvcm1Db250
cm9sKCkgY29uc3QKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgSFRNTEVsZW1lbnQmIHBh
cmVudEVsZW1lbnQgPSB0b0hUTUxFbGVtZW50KCpwYXJlbnROb2RlKCkpOwotICAgIHJldHVybiBp
c0hUTUxPcHRHcm91cEVsZW1lbnQocGFyZW50RWxlbWVudCkgJiYgcGFyZW50RWxlbWVudC5pc0Rp
c2FibGVkRm9ybUNvbnRyb2woKTsKKyAgICByZXR1cm4gaXM8SFRNTE9wdEdyb3VwRWxlbWVudD4o
cGFyZW50RWxlbWVudCkgJiYgcGFyZW50RWxlbWVudC5pc0Rpc2FibGVkRm9ybUNvbnRyb2woKTsK
IH0KIAogTm9kZTo6SW5zZXJ0aW9uTm90aWZpY2F0aW9uUmVxdWVzdCBIVE1MT3B0aW9uRWxlbWVu
dDo6aW5zZXJ0ZWRJbnRvKENvbnRhaW5lck5vZGUmIGluc2VydGlvblBvaW50KQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmNwcAppbmRleCBjOTYzMjYyNDUwMDZiOGI3MDYw
ZTE4MGZjZmMwOWUyNWEwZWEyZGJlLi41ZDMyZTM4NmY0MTA1Y2YyMWJiYzM0NGUzYTY3MmZiNTc2
MjJmZDQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmNwcApAQCAt
NzkwLDcgKzc5MCw3IEBAIHZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6OnJlY2FsY0xpc3RJdGVtcyhi
b29sIHVwZGF0ZVNlbGVjdGVkU3RhdGVzKSBjb25zdAogICAgICAgICAvLyBvcHRncm91cCB0YWdz
IG1heSBub3QgbmVzdC4gSG93ZXZlciwgYm90aCBGaXJlRm94IGFuZCBJRSB3aWxsCiAgICAgICAg
IC8vIGZsYXR0ZW4gdGhlIHRyZWUgYXV0b21hdGljYWxseSwgc28gd2UgZm9sbG93IHN1aXQuCiAg
ICAgICAgIC8vIChodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNDAxL2ludGVyYWN0L2Zvcm1zLmh0
bWwjaC0xNy42KQotICAgICAgICBpZiAoaXNIVE1MT3B0R3JvdXBFbGVtZW50KGN1cnJlbnQpKSB7
CisgICAgICAgIGlmIChpczxIVE1MT3B0R3JvdXBFbGVtZW50PihjdXJyZW50KSkgewogICAgICAg
ICAgICAgbV9saXN0SXRlbXMuYXBwZW5kKGN1cnJlbnQpOwogICAgICAgICAgICAgaWYgKEVsZW1l
bnQqIG5leHRFbGVtZW50ID0gRWxlbWVudFRyYXZlcnNhbDo6Zmlyc3RXaXRoaW4oY3VycmVudCkp
IHsKICAgICAgICAgICAgICAgICBjdXJyZW50RWxlbWVudCA9IG5leHRFbGVtZW50OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVFbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFRhYmxlRWxlbWVudC5jcHAKaW5kZXggYWI3MDFmMzI0Y2YyNmVjNDJl
ZTYxZWJkOTA5ZTk3N2JmMjE5ZWExNy4uNjI4NGNlY2RhNzA2ZTgzZGY2ZDZiNTEzMWFlMTE3YjRl
NTA4ODMwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVFbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUVsZW1lbnQuY3BwCkBAIC03
MCw3ICs3MCw3IEBAIFBhc3NSZWZQdHI8SFRNTFRhYmxlRWxlbWVudD4gSFRNTFRhYmxlRWxlbWVu
dDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hCiBIVE1MVGFibGVDYXB0aW9uRWxl
bWVudCogSFRNTFRhYmxlRWxlbWVudDo6Y2FwdGlvbigpIGNvbnN0CiB7CiAgICAgZm9yIChOb2Rl
KiBjaGlsZCA9IGZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5n
KCkpIHsKLSAgICAgICAgaWYgKGlzSFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQoY2hpbGQpKQorICAg
ICAgICBpZiAoaXM8SFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQ+KGNoaWxkKSkKICAgICAgICAgICAg
IHJldHVybiBkb3duY2FzdDxIVE1MVGFibGVDYXB0aW9uRWxlbWVudD4oY2hpbGQpOwogICAgIH0K
ICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFRhYmxlUGFydEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVQYXJ0
RWxlbWVudC5jcHAKaW5kZXggZjUxMDgyNGVkYmE1YWFhN2RlMDQ0NjM3ZWJkM2Y0NTUwMDk3NzQ5
NC4uYmJkZDg0YmMzN2JhMjhiOGNlODRiYjI1YjRiMzE4YTQ2NDZlNjRkZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVQYXJ0RWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MVGFibGVQYXJ0RWxlbWVudC5jcHAKQEAgLTg2LDcgKzg2LDcgQEAg
dm9pZCBIVE1MVGFibGVQYXJ0RWxlbWVudDo6Y29sbGVjdFN0eWxlRm9yUHJlc2VudGF0aW9uQXR0
cmlidXRlKGNvbnN0IFF1YWxpZmllZE4KIEhUTUxUYWJsZUVsZW1lbnQqIEhUTUxUYWJsZVBhcnRF
bGVtZW50OjpmaW5kUGFyZW50VGFibGUoKSBjb25zdAogewogICAgIENvbnRhaW5lck5vZGUqIHBh
cmVudCA9IHBhcmVudE5vZGUoKTsKLSAgICB3aGlsZSAocGFyZW50ICYmICFpc0hUTUxUYWJsZUVs
ZW1lbnQocGFyZW50KSkKKyAgICB3aGlsZSAocGFyZW50ICYmICFpczxIVE1MVGFibGVFbGVtZW50
PihwYXJlbnQpKQogICAgICAgICBwYXJlbnQgPSBwYXJlbnQtPnBhcmVudE5vZGUoKTsKICAgICBy
ZXR1cm4gZG93bmNhc3Q8SFRNTFRhYmxlRWxlbWVudD4ocGFyZW50KTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlUm93RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxUYWJsZVJvd0VsZW1lbnQuY3BwCmluZGV4IDQ3ZmYzM2JkNzUzZGI0OTNl
Njk0NTkzY2I2NTA3YjM0MjM3OGI0NTguLjFmZjY3MWMyNTQyNWU3NWViZGJlZjM1YWIxNTk3Y2U0
M2UzNGE5ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlUm93RWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVSb3dFbGVtZW50LmNw
cApAQCAtNjAsNyArNjAsNyBAQCBpbnQgSFRNTFRhYmxlUm93RWxlbWVudDo6cm93SW5kZXgoKSBj
b25zdAogICAgIGlmICghdGFibGUpCiAgICAgICAgIHJldHVybiAtMTsKICAgICB0YWJsZSA9IHRh
YmxlLT5wYXJlbnROb2RlKCk7Ci0gICAgaWYgKCF0YWJsZSB8fCAhaXNIVE1MVGFibGVFbGVtZW50
KHRhYmxlKSkKKyAgICBpZiAoIXRhYmxlIHx8ICFpczxIVE1MVGFibGVFbGVtZW50Pih0YWJsZSkp
CiAgICAgICAgIHJldHVybiAtMTsKIAogICAgIC8vIFRvIG1hdGNoIEZpcmVmb3gsIHRoZSByb3cg
aW5kaWNlcyB3b3JrIGxpa2UgdGhpczoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFRhYmxlUm93c0NvbGxlY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFi
bGVSb3dzQ29sbGVjdGlvbi5jcHAKaW5kZXggMDRhOTYwNDM2ZTEwNTc2MTg0Mzk3ZDg5NmEzMTY1
ZDU4OWMxYzEzOS4uM2FkMjJhNTQ2NTgyOTIyNTM4NzdiYmM1MmRmZWYzNjFjYTg0ZjFmNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVSb3dzQ29sbGVjdGlvbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVSb3dzQ29sbGVjdGlvbi5jcHAKQEAg
LTk3LDcgKzk3LDcgQEAgSFRNTFRhYmxlUm93RWxlbWVudCogSFRNTFRhYmxlUm93c0NvbGxlY3Rp
b246OnJvd0FmdGVyKEhUTUxUYWJsZUVsZW1lbnQqIHRhYmxlLAogICAgIGVsc2UgaWYgKGlzSW5T
ZWN0aW9uKCpwcmV2aW91cywgdGJvZHlUYWcpKQogICAgICAgICBjaGlsZCA9IEVsZW1lbnRUcmF2
ZXJzYWw6Om5leHRTaWJsaW5nKHByZXZpb3VzLT5wYXJlbnROb2RlKCkpOwogICAgIGZvciAoOyBj
aGlsZDsgY2hpbGQgPSBFbGVtZW50VHJhdmVyc2FsOjpuZXh0U2libGluZyhjaGlsZCkpIHsKLSAg
ICAgICAgaWYgKGlzSFRNTFRhYmxlUm93RWxlbWVudChjaGlsZCkpCisgICAgICAgIGlmIChpczxI
VE1MVGFibGVSb3dFbGVtZW50PihjaGlsZCkpCiAgICAgICAgICAgICByZXR1cm4gZG93bmNhc3Q8
SFRNTFRhYmxlUm93RWxlbWVudD4oY2hpbGQpOwogICAgICAgICBpZiAoY2hpbGQtPmhhc1RhZ05h
bWUodGJvZHlUYWcpKSB7CiAgICAgICAgICAgICBpZiAoYXV0byByb3cgPSBjaGlsZHJlbk9mVHlw
ZTxIVE1MVGFibGVSb3dFbGVtZW50PigqY2hpbGQpLmZpcnN0KCkpCkBAIC0xMzAsNyArMTMwLDcg
QEAgSFRNTFRhYmxlUm93RWxlbWVudCogSFRNTFRhYmxlUm93c0NvbGxlY3Rpb246Omxhc3RSb3co
SFRNTFRhYmxlRWxlbWVudCogdGFibGUpCiAgICAgfQogCiAgICAgZm9yIChhdXRvKiBjaGlsZCA9
IEVsZW1lbnRUcmF2ZXJzYWw6Omxhc3RDaGlsZCh0YWJsZSk7IGNoaWxkOyBjaGlsZCA9IEVsZW1l
bnRUcmF2ZXJzYWw6OnByZXZpb3VzU2libGluZyhjaGlsZCkpIHsKLSAgICAgICAgaWYgKGlzSFRN
TFRhYmxlUm93RWxlbWVudChjaGlsZCkpCisgICAgICAgIGlmIChpczxIVE1MVGFibGVSb3dFbGVt
ZW50PihjaGlsZCkpCiAgICAgICAgICAgICByZXR1cm4gZG93bmNhc3Q8SFRNTFRhYmxlUm93RWxl
bWVudD4oY2hpbGQpOwogICAgICAgICBpZiAoY2hpbGQtPmhhc1RhZ05hbWUodGJvZHlUYWcpKSB7
CiAgICAgICAgICAgICBpZiAoYXV0byogcm93ID0gY2hpbGRyZW5PZlR5cGU8SFRNTFRhYmxlUm93
RWxlbWVudD4oKmNoaWxkKS5sYXN0KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxUYWdOYW1lcy5pbiBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhZ05hbWVzLmluCmlu
ZGV4IDEyYTVjMGY3NzU1OTljOTBkMGMzODYxMDBlODU1ODM0NWQzYTUwOWUuLmJhZDRlMWE3NjUz
ODZiYTRiZDdiMzIyNGIzYjAzZjc5ZTQ0NjYwMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFRhZ05hbWVzLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhZ05h
bWVzLmluCkBAIC02MCw3ICs2MCw3IEBAIGg2IGludGVyZmFjZU5hbWU9SFRNTEhlYWRpbmdFbGVt
ZW50CiBoZWFkIGdlbmVyYXRlVHlwZUhlbHBlcnMKIGhlYWRlciBpbnRlcmZhY2VOYW1lPUhUTUxF
bGVtZW50CiBoZ3JvdXAgaW50ZXJmYWNlTmFtZT1IVE1MRWxlbWVudAotaHIgaW50ZXJmYWNlTmFt
ZT1IVE1MSFJFbGVtZW50CitociBpbnRlcmZhY2VOYW1lPUhUTUxIUkVsZW1lbnQsIGdlbmVyYXRl
VHlwZUhlbHBlcnMKIGh0bWwgZ2VuZXJhdGVUeXBlSGVscGVycwogaSBpbnRlcmZhY2VOYW1lPUhU
TUxFbGVtZW50CiBpZnJhbWUgaW50ZXJmYWNlTmFtZT1IVE1MSUZyYW1lRWxlbWVudCwgZ2VuZXJh
dGVUeXBlSGVscGVycwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9MYWJlbHNOb2Rl
TGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0xhYmVsc05vZGVMaXN0LmNwcAppbmRleCA4
YzI5NjIwNjBmMmJkMDhlZGE2NzhiMGEwYjE0Y2VhYTRhNDU0NDlhLi4xMWNmMDdiYTljNTMwYTg2
ZjJiNmQ2NDY3ODUxYTZlMmE3NDJlYTk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0xhYmVsc05vZGVMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0xhYmVsc05vZGVM
aXN0LmNwcApAQCAtNDUsNyArNDUsNyBAQCBMYWJlbHNOb2RlTGlzdDo6fkxhYmVsc05vZGVMaXN0
KCkKICAgICAKIGJvb2wgTGFiZWxzTm9kZUxpc3Q6OmVsZW1lbnRNYXRjaGVzKEVsZW1lbnQmIHRl
c3ROb2RlKSBjb25zdAogewotICAgIHJldHVybiBpc0hUTUxMYWJlbEVsZW1lbnQodGVzdE5vZGUp
ICYmIGRvd25jYXN0PEhUTUxMYWJlbEVsZW1lbnQ+KHRlc3ROb2RlKS5jb250cm9sKCkgPT0gJm93
bmVyTm9kZSgpOworICAgIHJldHVybiBpczxIVE1MTGFiZWxFbGVtZW50Pih0ZXN0Tm9kZSkgJiYg
ZG93bmNhc3Q8SFRNTExhYmVsRWxlbWVudD4odGVzdE5vZGUpLmNvbnRyb2woKSA9PSAmb3duZXJO
b2RlKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvTWVkaWFEb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlh
RG9jdW1lbnQuY3BwCmluZGV4IDBjMjViM2JmYmRlMjYxZmQwMmE2YWU0OTg2NGQ1NTFhMjFhZjU4
ZjkuLjk1YWZkOTI0Y2NiYzEyYjhlNDdkNmFhNmE3MGUzYmJiZDdlNDdkN2YgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFEb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9NZWRpYURvY3VtZW50LmNwcApAQCAtMTYwLDcgKzE2MCw3IEBAIFBhc3NSZWZQdHI8
RG9jdW1lbnRQYXJzZXI+IE1lZGlhRG9jdW1lbnQ6OmNyZWF0ZVBhcnNlcigpCiAKIHN0YXRpYyBp
bmxpbmUgSFRNTFZpZGVvRWxlbWVudCogZGVzY2VuZGVudFZpZGVvRWxlbWVudChDb250YWluZXJO
b2RlJiBub2RlKQogewotICAgIGlmIChpc0hUTUxWaWRlb0VsZW1lbnQobm9kZSkpCisgICAgaWYg
KGlzPEhUTUxWaWRlb0VsZW1lbnQ+KG5vZGUpKQogICAgICAgICByZXR1cm4gZG93bmNhc3Q8SFRN
TFZpZGVvRWxlbWVudD4oJm5vZGUpOwogCiAgICAgUmVmUHRyPE5vZGVMaXN0PiBub2RlTGlzdCA9
IG5vZGUuZ2V0RWxlbWVudHNCeVRhZ05hbWVOUyh2aWRlb1RhZy5uYW1lc3BhY2VVUkkoKSwgdmlk
ZW9UYWcubG9jYWxOYW1lKCkpOwpAQCAtMTczLDcgKzE3Myw3IEBAIHN0YXRpYyBpbmxpbmUgSFRN
TFZpZGVvRWxlbWVudCogZGVzY2VuZGVudFZpZGVvRWxlbWVudChDb250YWluZXJOb2RlJiBub2Rl
KQogCiBzdGF0aWMgaW5saW5lIEhUTUxWaWRlb0VsZW1lbnQqIGFuY2VzdG9yVmlkZW9FbGVtZW50
KE5vZGUqIG5vZGUpCiB7Ci0gICAgd2hpbGUgKG5vZGUgJiYgIWlzSFRNTFZpZGVvRWxlbWVudChu
b2RlKSkKKyAgICB3aGlsZSAobm9kZSAmJiAhaXM8SFRNTFZpZGVvRWxlbWVudD4obm9kZSkpCiAg
ICAgICAgIG5vZGUgPSBub2RlLT5wYXJlbnRPclNoYWRvd0hvc3ROb2RlKCk7CiAKICAgICByZXR1
cm4gZG93bmNhc3Q8SFRNTFZpZGVvRWxlbWVudD4obm9kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL1JhZGlvSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFk
aW9JbnB1dFR5cGUuY3BwCmluZGV4IDhhNWU4ODUxMGUxNmI5ZGZmYjNlNDZlODY1ODBjYzA0MTBl
ODU3NjAuLjVmNWVjNzU0MmJkMTgyODBlN2RmZTU2NTE0ODFlYTVjYjE0NDE1MmIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFkaW9JbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvUmFkaW9JbnB1dFR5cGUuY3BwCkBAIC04MSw3ICs4MSw3IEBAIHZvaWQgUmFk
aW9JbnB1dFR5cGU6OmhhbmRsZUtleWRvd25FdmVudChLZXlib2FyZEV2ZW50KiBldmVudCkKICAg
ICBOb2RlKiBub2RlID0gJmVsZW1lbnQoKTsKICAgICB3aGlsZSAoKG5vZGUgPSAoZm9yd2FyZCA/
IE5vZGVUcmF2ZXJzYWw6Om5leHQobm9kZSkgOiBOb2RlVHJhdmVyc2FsOjpwcmV2aW91cyhub2Rl
KSkpKSB7CiAgICAgICAgIC8vIE9uY2Ugd2UgZW5jb3VudGVyIGEgZm9ybSBlbGVtZW50LCB3ZSBr
bm93IHdlJ3JlIHRocm91Z2guCi0gICAgICAgIGlmIChpc0hUTUxGb3JtRWxlbWVudChub2RlKSkK
KyAgICAgICAgaWYgKGlzPEhUTUxGb3JtRWxlbWVudD4obm9kZSkpCiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgLy8gTG9vayBmb3IgbW9yZSByYWRpbyBidXR0b25zLgogICAgICAgICBpZiAo
IWlzPEhUTUxJbnB1dEVsZW1lbnQ+KG5vZGUpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9SYWRpb05vZGVMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFkaW9Ob2RlTGlz
dC5jcHAKaW5kZXggOGQ0NjkyMTFkNmUxMWM5ODFiYmJjM2Y4NDUxN2YwZjI4NDlmMGQ3My4uNWU0
MDI1ZWNjMDhkNTM2OTMwMzNkMzA3ZmQyNWZkYTMyNmRlNjI0MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9SYWRpb05vZGVMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L1JhZGlvTm9kZUxpc3QuY3BwCkBAIC00MSw3ICs0MSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBIVE1M
TmFtZXM7CiBSYWRpb05vZGVMaXN0OjpSYWRpb05vZGVMaXN0KENvbnRhaW5lck5vZGUmIHJvb3RO
b2RlLCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpCiAgICAgOiBDYWNoZWRMaXZlTm9kZUxpc3Qo
cm9vdE5vZGUsIEludmFsaWRhdGVGb3JGb3JtQ29udHJvbHMpCiAgICAgLCBtX25hbWUobmFtZSkK
LSAgICAsIG1faXNSb290ZWRBdERvY3VtZW50KGlzSFRNTEZvcm1FbGVtZW50KG93bmVyTm9kZSgp
KSkKKyAgICAsIG1faXNSb290ZWRBdERvY3VtZW50KGlzPEhUTUxGb3JtRWxlbWVudD4ob3duZXJO
b2RlKCkpKQogewogfQogCkBAIC04Niw3ICs4Niw3IEBAIHZvaWQgUmFkaW9Ob2RlTGlzdDo6c2V0
VmFsdWUoY29uc3QgU3RyaW5nJiB2YWx1ZSkKIGJvb2wgUmFkaW9Ob2RlTGlzdDo6Y2hlY2tFbGVt
ZW50TWF0Y2hlc1JhZGlvTm9kZUxpc3RGaWx0ZXIoY29uc3QgRWxlbWVudCYgdGVzdEVsZW1lbnQp
IGNvbnN0CiB7CiAgICAgQVNTRVJUKGlzPEhUTUxPYmplY3RFbGVtZW50Pih0ZXN0RWxlbWVudCkg
fHwgaXM8SFRNTEZvcm1Db250cm9sRWxlbWVudD4odGVzdEVsZW1lbnQpKTsKLSAgICBpZiAoaXNI
VE1MRm9ybUVsZW1lbnQob3duZXJOb2RlKCkpKSB7CisgICAgaWYgKGlzPEhUTUxGb3JtRWxlbWVu
dD4ob3duZXJOb2RlKCkpKSB7CiAgICAgICAgIEhUTUxGb3JtRWxlbWVudCogZm9ybUVsZW1lbnQg
PSBudWxscHRyOwogICAgICAgICBpZiAodGVzdEVsZW1lbnQuaGFzVGFnTmFtZShvYmplY3RUYWcp
KQogICAgICAgICAgICAgZm9ybUVsZW1lbnQgPSBkb3duY2FzdDxIVE1MT2JqZWN0RWxlbWVudD4o
dGVzdEVsZW1lbnQpLmZvcm0oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFy
c2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2Vy
L0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNwcAppbmRleCBiNzhkZTYwYjQyN2JiZGUyZWI2YzJmNTEz
ZDllNGJkNThmNjBmNTIyLi45MDM5NmZmZmI1ODI3Zjk0YTU3OWMyMmM1NzIxOWExZTgwZDJlOWVm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MQ29uc3RydWN0aW9u
U2l0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTENvbnN0cnVjdGlv
blNpdGUuY3BwCkBAIC02Miw3ICs2Miw3IEBAIHN0YXRpYyBib29sIGhhc0ltcGxpZWRFbmRUYWco
Y29uc3QgSFRNTFN0YWNrSXRlbSogaXRlbSkKICAgICAgICAgfHwgaXRlbS0+aGFzVGFnTmFtZShk
dFRhZykKICAgICAgICAgfHwgaXRlbS0+aGFzVGFnTmFtZShsaVRhZykKICAgICAgICAgfHwgaXM8
SFRNTE9wdGlvbkVsZW1lbnQ+KGl0ZW0tPm5vZGUoKSkKLSAgICAgICAgfHwgaXNIVE1MT3B0R3Jv
dXBFbGVtZW50KGl0ZW0tPm5vZGUoKSkKKyAgICAgICAgfHwgaXM8SFRNTE9wdEdyb3VwRWxlbWVu
dD4oaXRlbS0+bm9kZSgpKQogICAgICAgICB8fCBpdGVtLT5oYXNUYWdOYW1lKHBUYWcpCiAgICAg
ICAgIHx8IGl0ZW0tPmhhc1RhZ05hbWUocmJUYWcpCiAgICAgICAgIHx8IGl0ZW0tPmhhc1RhZ05h
bWUocnBUYWcpCkBAIC04NSw3ICs4NSw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc0FsbFdoaXRl
c3BhY2UoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiBzdGF0aWMgaW5saW5lIHZvaWQgaW5zZXJ0KEhU
TUxDb25zdHJ1Y3Rpb25TaXRlVGFzayYgdGFzaykKIHsKICNpZiBFTkFCTEUoVEVNUExBVEVfRUxF
TUVOVCkKLSAgICBpZiAoaXNIVE1MVGVtcGxhdGVFbGVtZW50KCp0YXNrLnBhcmVudCkpCisgICAg
aWYgKGlzPEhUTUxUZW1wbGF0ZUVsZW1lbnQ+KCp0YXNrLnBhcmVudCkpCiAgICAgICAgIHRhc2su
cGFyZW50ID0gZG93bmNhc3Q8SFRNTFRlbXBsYXRlRWxlbWVudD4oKnRhc2sucGFyZW50KS5jb250
ZW50KCk7CiAjZW5kaWYKIApAQCAtNDU4LDcgKzQ1OCw3IEBAIHZvaWQgSFRNTENvbnN0cnVjdGlv
blNpdGU6Omluc2VydEhUTUxCb2R5RWxlbWVudChBdG9taWNIVE1MVG9rZW4qIHRva2VuKQogdm9p
ZCBIVE1MQ29uc3RydWN0aW9uU2l0ZTo6aW5zZXJ0SFRNTEZvcm1FbGVtZW50KEF0b21pY0hUTUxU
b2tlbiogdG9rZW4sIGJvb2wgaXNEZW1vdGVkKQogewogICAgIFJlZlB0cjxFbGVtZW50PiBlbGVt
ZW50ID0gY3JlYXRlSFRNTEVsZW1lbnQodG9rZW4pOwotICAgIEFTU0VSVChpc0hUTUxGb3JtRWxl
bWVudChlbGVtZW50LmdldCgpKSk7CisgICAgQVNTRVJUKGlzPEhUTUxGb3JtRWxlbWVudD4oZWxl
bWVudC5nZXQoKSkpOwogICAgIFJlZlB0cjxIVE1MRm9ybUVsZW1lbnQ+IGZvcm0gPSBzdGF0aWNf
cG9pbnRlcl9jYXN0PEhUTUxGb3JtRWxlbWVudD4oZWxlbWVudC5yZWxlYXNlKCkpOwogICAgIGlm
ICghaW5zaWRlVGVtcGxhdGVFbGVtZW50KCkpCiAgICAgICAgIG1fZm9ybSA9IGZvcm07CkBAIC01
MzEsNyArNTMxLDcgQEAgdm9pZCBIVE1MQ29uc3RydWN0aW9uU2l0ZTo6aW5zZXJ0VGV4dE5vZGUo
Y29uc3QgU3RyaW5nJiBjaGFyYWN0ZXJzLCBXaGl0ZXNwYWNlTW8KICAgICAgICAgZmluZEZvc3Rl
clNpdGUodGFzayk7CiAKICNpZiBFTkFCTEUoVEVNUExBVEVfRUxFTUVOVCkKLSAgICBpZiAoaXNI
VE1MVGVtcGxhdGVFbGVtZW50KCp0YXNrLnBhcmVudCkpCisgICAgaWYgKGlzPEhUTUxUZW1wbGF0
ZUVsZW1lbnQ+KCp0YXNrLnBhcmVudCkpCiAgICAgICAgIHRhc2sucGFyZW50ID0gZG93bmNhc3Q8
SFRNTFRlbXBsYXRlRWxlbWVudD4oKnRhc2sucGFyZW50KS5jb250ZW50KCk7CiAjZW5kaWYKIApA
QCAtNjE4LDcgKzYxOCw3IEBAIFBhc3NSZWZQdHI8RWxlbWVudD4gSFRNTENvbnN0cnVjdGlvblNp
dGU6OmNyZWF0ZUVsZW1lbnQoQXRvbWljSFRNTFRva2VuKiB0b2tlbiwKIGlubGluZSBEb2N1bWVu
dCYgSFRNTENvbnN0cnVjdGlvblNpdGU6Om93bmVyRG9jdW1lbnRGb3JDdXJyZW50Tm9kZSgpCiB7
CiAjaWYgRU5BQkxFKFRFTVBMQVRFX0VMRU1FTlQpCi0gICAgaWYgKGlzSFRNTFRlbXBsYXRlRWxl
bWVudChjdXJyZW50Tm9kZSgpKSkKKyAgICBpZiAoaXM8SFRNTFRlbXBsYXRlRWxlbWVudD4oY3Vy
cmVudE5vZGUoKSkpCiAgICAgICAgIHJldHVybiBkb3duY2FzdDxIVE1MVGVtcGxhdGVFbGVtZW50
PigqY3VycmVudEVsZW1lbnQoKSkuY29udGVudCgpLT5kb2N1bWVudCgpOwogI2VuZGlmCiAgICAg
cmV0dXJuIGN1cnJlbnROb2RlKCktPmRvY3VtZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3BhcnNlci9IVE1MRWxlbWVudFN0YWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvcGFyc2VyL0hUTUxFbGVtZW50U3RhY2suY3BwCmluZGV4IGFkYTIwY2RhYTMyMzMyNjdlYzQ5
ZmY4MzgxZTcwMDJhNTQ0NzdlMzUuLmNkNmEyMDEwZmQxN2U2NDA1ZDhiM2IwZDQyNTczODBiMDk5
NDljYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxFbGVtZW50
U3RhY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxFbGVtZW50U3Rh
Y2suY3BwCkBAIC01MSw3ICs1MSw3IEBAIGlubGluZSBib29sIGlzU2NvcGVNYXJrZXIoSFRNTFN0
YWNrSXRlbSogaXRlbSkKICAgICAgICAgfHwgaXRlbS0+aGFzVGFnTmFtZShjYXB0aW9uVGFnKQog
ICAgICAgICB8fCBpdGVtLT5oYXNUYWdOYW1lKG1hcnF1ZWVUYWcpCiAgICAgICAgIHx8IGl0ZW0t
Pmhhc1RhZ05hbWUob2JqZWN0VGFnKQotICAgICAgICB8fCBpc0hUTUxUYWJsZUVsZW1lbnQoaXRl
bS0+bm9kZSgpKQorICAgICAgICB8fCBpczxIVE1MVGFibGVFbGVtZW50PihpdGVtLT5ub2RlKCkp
CiAgICAgICAgIHx8IGl0ZW0tPmhhc1RhZ05hbWUodGRUYWcpCiAgICAgICAgIHx8IGl0ZW0tPmhh
c1RhZ05hbWUodGhUYWcpCiAgICAgICAgIHx8IGl0ZW0tPmhhc1RhZ05hbWUoTWF0aE1MTmFtZXM6
Om1pVGFnKQpAQCAtNzgsNyArNzgsNyBAQCBpbmxpbmUgYm9vbCBpc0xpc3RJdGVtU2NvcGVNYXJr
ZXIoSFRNTFN0YWNrSXRlbSogaXRlbSkKIAogaW5saW5lIGJvb2wgaXNUYWJsZVNjb3BlTWFya2Vy
KEhUTUxTdGFja0l0ZW0qIGl0ZW0pCiB7Ci0gICAgcmV0dXJuIGlzSFRNTFRhYmxlRWxlbWVudChp
dGVtLT5ub2RlKCkpCisgICAgcmV0dXJuIGlzPEhUTUxUYWJsZUVsZW1lbnQ+KGl0ZW0tPm5vZGUo
KSkKICNpZiBFTkFCTEUoVEVNUExBVEVfRUxFTUVOVCkKICAgICAgICAgfHwgaXRlbS0+aGFzVGFn
TmFtZSh0ZW1wbGF0ZVRhZykKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2Vy
L0hUTUxUcmVlQnVpbGRlci5jcHAKaW5kZXggNTY5NGVmZDljYWUyNTdlZDI1MzRkNTM3NTY1NzYw
NWEyNjE5YTI3Yy4uMjRmNjY1NTNiOWM3Zjk5NzI5NzhiNTRiMzg1MDY4NTg4Zjc3ZTQ2MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIuY3BwCkBAIC0y
OTcsNyArMjk3LDcgQEAgSFRNTFRyZWVCdWlsZGVyOjpIVE1MVHJlZUJ1aWxkZXIoSFRNTERvY3Vt
ZW50UGFyc2VyJiBwYXJzZXIsIERvY3VtZW50RnJhZ21lbnQmIGYKICNlbmRpZgogCiAgICAgICAg
IHJlc2V0SW5zZXJ0aW9uTW9kZUFwcHJvcHJpYXRlbHkoKTsKLSAgICAgICAgbV90cmVlLnNldEZv
cm0oIWNvbnRleHRFbGVtZW50IHx8IGlzSFRNTEZvcm1FbGVtZW50KGNvbnRleHRFbGVtZW50KSA/
IGRvd25jYXN0PEhUTUxGb3JtRWxlbWVudD4oY29udGV4dEVsZW1lbnQpIDogSFRNTEZvcm1FbGVt
ZW50OjpmaW5kQ2xvc2VzdEZvcm1BbmNlc3RvcigqY29udGV4dEVsZW1lbnQpKTsKKyAgICAgICAg
bV90cmVlLnNldEZvcm0oIWNvbnRleHRFbGVtZW50IHx8IGlzPEhUTUxGb3JtRWxlbWVudD4oY29u
dGV4dEVsZW1lbnQpID8gZG93bmNhc3Q8SFRNTEZvcm1FbGVtZW50Pihjb250ZXh0RWxlbWVudCkg
OiBIVE1MRm9ybUVsZW1lbnQ6OmZpbmRDbG9zZXN0Rm9ybUFuY2VzdG9yKCpjb250ZXh0RWxlbWVu
dCkpOwogICAgIH0KIH0KIApAQCAtMTM3MSw3ICsxMzcxLDcgQEAgdm9pZCBIVE1MVHJlZUJ1aWxk
ZXI6OnByb2Nlc3NTdGFydFRhZyhBdG9taWNIVE1MVG9rZW4qIHRva2VuKQogICAgICAgICAgICAg
ICAgIEF0b21pY0hUTUxUb2tlbiBlbmRPcHRpb24oSFRNTFRva2VuOjpFbmRUYWcsIG9wdGlvblRh
Zy5sb2NhbE5hbWUoKSk7CiAgICAgICAgICAgICAgICAgcHJvY2Vzc0VuZFRhZygmZW5kT3B0aW9u
KTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChpc0hUTUxPcHRHcm91cEVsZW1lbnQo
bV90cmVlLmN1cnJlbnRTdGFja0l0ZW0oKS0+bm9kZSgpKSkgeworICAgICAgICAgICAgaWYgKGlz
PEhUTUxPcHRHcm91cEVsZW1lbnQ+KG1fdHJlZS5jdXJyZW50U3RhY2tJdGVtKCktPm5vZGUoKSkp
IHsKICAgICAgICAgICAgICAgICBBdG9taWNIVE1MVG9rZW4gZW5kT3B0Z3JvdXAoSFRNTFRva2Vu
OjpFbmRUYWcsIG9wdGdyb3VwVGFnLmxvY2FsTmFtZSgpKTsKICAgICAgICAgICAgICAgICBwcm9j
ZXNzRW5kVGFnKCZlbmRPcHRncm91cCk7CiAgICAgICAgICAgICB9CkBAIC0xNjI4LDcgKzE2Mjgs
NyBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cmVzZXRJbnNlcnRpb25Nb2RlQXBwcm9wcmlhdGVs
eSgpCiAgICAgICAgICAgICAgICAgd2hpbGUgKGl0ZW0tPm5vZGUoKSAhPSBtX3RyZWUub3BlbkVs
ZW1lbnRzKCktPnJvb3ROb2RlKCkgJiYgIWl0ZW0tPmhhc1RhZ05hbWUodGVtcGxhdGVUYWcpKSB7
CiAgICAgICAgICAgICAgICAgICAgIG5vZGVSZWNvcmQgPSBub2RlUmVjb3JkLT5uZXh0KCk7CiAg
ICAgICAgICAgICAgICAgICAgIGl0ZW0gPSBub2RlUmVjb3JkLT5zdGFja0l0ZW0oKTsKLSAgICAg
ICAgICAgICAgICAgICAgaWYgKGlzSFRNTFRhYmxlRWxlbWVudChpdGVtLT5ub2RlKCkpKQorICAg
ICAgICAgICAgICAgICAgICBpZiAoaXM8SFRNTFRhYmxlRWxlbWVudD4oaXRlbS0+bm9kZSgpKSkK
ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzZXRJbnNlcnRpb25Nb2RlKEluc2VydGlv
bk1vZGU6OkluU2VsZWN0SW5UYWJsZSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
fQpAQCAtMTY0Niw3ICsxNjQ2LDcgQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnJlc2V0SW5zZXJ0
aW9uTW9kZUFwcHJvcHJpYXRlbHkoKQogICAgICAgICBpZiAoaXRlbS0+aGFzVGFnTmFtZShjb2xn
cm91cFRhZykpIHsKICAgICAgICAgICAgIHJldHVybiBzZXRJbnNlcnRpb25Nb2RlKEluc2VydGlv
bk1vZGU6OkluQ29sdW1uR3JvdXApOwogICAgICAgICB9Ci0gICAgICAgIGlmIChpc0hUTUxUYWJs
ZUVsZW1lbnQoaXRlbS0+bm9kZSgpKSkKKyAgICAgICAgaWYgKGlzPEhUTUxUYWJsZUVsZW1lbnQ+
KGl0ZW0tPm5vZGUoKSkpCiAgICAgICAgICAgICByZXR1cm4gc2V0SW5zZXJ0aW9uTW9kZShJbnNl
cnRpb25Nb2RlOjpJblRhYmxlKTsKICAgICAgICAgaWYgKGl0ZW0tPmhhc1RhZ05hbWUoaGVhZFRh
ZykpIHsKICNpZiBFTkFCTEUoVEVNUExBVEVfRUxFTUVOVCkKQEAgLTIyMzMsOSArMjIzMyw5IEBA
IHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzRW5kVGFnKEF0b21pY0hUTUxUb2tlbiogdG9r
ZW4pCiAgICAgY2FzZSBJbnNlcnRpb25Nb2RlOjpJblNlbGVjdDoKICAgICAgICAgQVNTRVJUKGlu
c2VydGlvbk1vZGUoKSA9PSBJbnNlcnRpb25Nb2RlOjpJblNlbGVjdCB8fCBpbnNlcnRpb25Nb2Rl
KCkgPT0gSW5zZXJ0aW9uTW9kZTo6SW5TZWxlY3RJblRhYmxlKTsKICAgICAgICAgaWYgKHRva2Vu
LT5uYW1lKCkgPT0gb3B0Z3JvdXBUYWcpIHsKLSAgICAgICAgICAgIGlmIChpczxIVE1MT3B0aW9u
RWxlbWVudD4obV90cmVlLmN1cnJlbnRTdGFja0l0ZW0oKS0+bm9kZSgpKSAmJiBtX3RyZWUub25l
QmVsb3dUb3AoKSAmJiBpc0hUTUxPcHRHcm91cEVsZW1lbnQobV90cmVlLm9uZUJlbG93VG9wKCkt
Pm5vZGUoKSkpCisgICAgICAgICAgICBpZiAoaXM8SFRNTE9wdGlvbkVsZW1lbnQ+KG1fdHJlZS5j
dXJyZW50U3RhY2tJdGVtKCktPm5vZGUoKSkgJiYgbV90cmVlLm9uZUJlbG93VG9wKCkgJiYgaXM8
SFRNTE9wdEdyb3VwRWxlbWVudD4obV90cmVlLm9uZUJlbG93VG9wKCktPm5vZGUoKSkpCiAgICAg
ICAgICAgICAgICAgcHJvY2Vzc0Zha2VFbmRUYWcob3B0aW9uVGFnKTsKLSAgICAgICAgICAgIGlm
IChpc0hUTUxPcHRHcm91cEVsZW1lbnQobV90cmVlLmN1cnJlbnRTdGFja0l0ZW0oKS0+bm9kZSgp
KSkgeworICAgICAgICAgICAgaWYgKGlzPEhUTUxPcHRHcm91cEVsZW1lbnQ+KG1fdHJlZS5jdXJy
ZW50U3RhY2tJdGVtKCktPm5vZGUoKSkpIHsKICAgICAgICAgICAgICAgICBtX3RyZWUub3BlbkVs
ZW1lbnRzKCktPnBvcCgpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0K
QEAgLTI0ODUsNyArMjQ4NSw3IEBAIFJlcHJvY2Vzc0J1ZmZlcjoKICAgICAgICAgQVNTRVJUKGlu
c2VydGlvbk1vZGUoKSA9PSBJbnNlcnRpb25Nb2RlOjpJblRhYmxlIHx8IGluc2VydGlvbk1vZGUo
KSA9PSBJbnNlcnRpb25Nb2RlOjpJblRhYmxlQm9keSB8fCBpbnNlcnRpb25Nb2RlKCkgPT0gSW5z
ZXJ0aW9uTW9kZTo6SW5Sb3cpOwogICAgICAgICBBU1NFUlQobV9wZW5kaW5nVGFibGVDaGFyYWN0
ZXJzLmlzRW1wdHkoKSk7CiAgICAgICAgIGlmIChtX3RyZWUuY3VycmVudFN0YWNrSXRlbSgpLT5p
c0VsZW1lbnROb2RlKCkKLSAgICAgICAgICAgICYmIChpc0hUTUxUYWJsZUVsZW1lbnQobV90cmVl
LmN1cnJlbnRTdGFja0l0ZW0oKS0+bm9kZSgpKQorICAgICAgICAgICAgJiYgKGlzPEhUTUxUYWJs
ZUVsZW1lbnQ+KG1fdHJlZS5jdXJyZW50U3RhY2tJdGVtKCktPm5vZGUoKSkKICAgICAgICAgICAg
ICAgICB8fCBtX3RyZWUuY3VycmVudFN0YWNrSXRlbSgpLT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6
dGJvZHlUYWcpCiAgICAgICAgICAgICAgICAgfHwgbV90cmVlLmN1cnJlbnRTdGFja0l0ZW0oKS0+
aGFzVGFnTmFtZShIVE1MTmFtZXM6OnRmb290VGFnKQogICAgICAgICAgICAgICAgIHx8IG1fdHJl
ZS5jdXJyZW50U3RhY2tJdGVtKCktPmhhc1RhZ05hbWUoSFRNTE5hbWVzOjp0aGVhZFRhZykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCmluZGV4IGJi
YTM5ZjY2ZjE1MWI1OTI2YTRmMGYzYTY1MDBlZGFhZjhlNWZlNTUuLjBmOGEyOWRiMjBjNDkwMmZj
ODE5NjQ2MTgzZTU5MGI4MjdiYjRiNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckRPTUFnZW50LmNwcApAQCAtMTI5Nyw3ICsxMjk3LDcgQEAgUGFzc1JlZlB0cjxJ
bnNwZWN0b3I6OlByb3RvY29sOjpET006Ok5vZGU+IEluc3BlY3RvckRPTUFnZW50OjpidWlsZE9i
amVjdEZvck5vZGUKICAgICAgICAgfQogCiAjaWYgRU5BQkxFKFRFTVBMQVRFX0VMRU1FTlQpCi0g
ICAgICAgIGlmIChpc0hUTUxUZW1wbGF0ZUVsZW1lbnQoZWxlbWVudCkpCisgICAgICAgIGlmIChp
czxIVE1MVGVtcGxhdGVFbGVtZW50PihlbGVtZW50KSkKICAgICAgICAgICAgIHZhbHVlLT5zZXRU
ZW1wbGF0ZUNvbnRlbnQoYnVpbGRPYmplY3RGb3JOb2RlKGRvd25jYXN0PEhUTUxUZW1wbGF0ZUVs
ZW1lbnQ+KCplbGVtZW50KS5jb250ZW50KCksIDAsIG5vZGVzTWFwKSk7CiAjZW5kaWYKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwCmluZGV4
IGEzNWYxZTY1N2FkYzI5YjE0NWMwOWNmNDdlODM3YjllZmZiYzQyY2IuLjcyMWFiZTMyZGQ5NDVm
NDNhZmY5ZDNhZDNjZDNmNzJmMjNhZTc3MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAKQEAgLTEzOTIsNyArMTM5Miw3IEBAIGJvb2wg
SW5zcGVjdG9yU3R5bGVTaGVldDo6aW5saW5lU3R5bGVTaGVldFRleHQoU3RyaW5nKiByZXN1bHQp
IGNvbnN0CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBFbGVtZW50KiBvd25lckVsZW1lbnQg
PSB0b0VsZW1lbnQob3duZXJOb2RlKTsKIAotICAgIGlmICghaXNIVE1MU3R5bGVFbGVtZW50KG93
bmVyRWxlbWVudCkgJiYgIW93bmVyRWxlbWVudC0+aGFzVGFnTmFtZShTVkdOYW1lczo6c3R5bGVU
YWcpKQorICAgIGlmICghaXM8SFRNTFN0eWxlRWxlbWVudD4ob3duZXJFbGVtZW50KSAmJiAhaXM8
U1ZHU3R5bGVFbGVtZW50Pihvd25lckVsZW1lbnQpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgKnJlc3VsdCA9IG93bmVyRWxlbWVudC0+dGV4dENvbnRlbnQoKTsKICAgICByZXR1cm4gdHJ1
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKaW5kZXggNWFkMzNiYzE2OGUx
OGNkZmI0MmE5NGZmMzIyZDNlNjQwOWY5MjAzMC4uMTc5ZWVhNThlNGNmY2VkZjExYmY2OTllOTBk
MTlmMGRkNTg4NmI1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJv
bGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKQEAg
LTYzOSwxMyArNjM5LDEzIEBAIEVsZW1lbnQqIERyYWdDb250cm9sbGVyOjpkcmFnZ2FibGVFbGVt
ZW50KGNvbnN0IEZyYW1lKiBzb3VyY2VGcmFtZSwgRWxlbWVudCogc3RhCiAgICAgICAgIH0KICAg
ICAgICAgaWYgKGRyYWdNb2RlID09IERSQUdfQVVUTykgewogICAgICAgICAgICAgaWYgKChtX2Ry
YWdTb3VyY2VBY3Rpb24gJiBEcmFnU291cmNlQWN0aW9uSW1hZ2UpCi0gICAgICAgICAgICAgICAg
JiYgaXNIVE1MSW1hZ2VFbGVtZW50KGVsZW1lbnQpCisgICAgICAgICAgICAgICAgJiYgaXM8SFRN
TEltYWdlRWxlbWVudD4oZWxlbWVudCkKICAgICAgICAgICAgICAgICAmJiBzb3VyY2VGcmFtZS0+
c2V0dGluZ3MoKS5sb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHkoKSkgewogICAgICAgICAgICAgICAg
IHN0YXRlLnR5cGUgPSBzdGF0aWNfY2FzdDxEcmFnU291cmNlQWN0aW9uPihzdGF0ZS50eXBlIHwg
RHJhZ1NvdXJjZUFjdGlvbkltYWdlKTsKICAgICAgICAgICAgICAgICByZXR1cm4gZWxlbWVudDsK
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmICgobV9kcmFnU291cmNlQWN0aW9uICYgRHJh
Z1NvdXJjZUFjdGlvbkxpbmspCi0gICAgICAgICAgICAgICAgJiYgaXNIVE1MQW5jaG9yRWxlbWVu
dChlbGVtZW50KQorICAgICAgICAgICAgICAgICYmIGlzPEhUTUxBbmNob3JFbGVtZW50PihlbGVt
ZW50KQogICAgICAgICAgICAgICAgICYmIGRvd25jYXN0PEhUTUxBbmNob3JFbGVtZW50PigqZWxl
bWVudCkuaXNMaXZlTGluaygpKSB7CiAgICAgICAgICAgICAgICAgc3RhdGUudHlwZSA9IHN0YXRp
Y19jYXN0PERyYWdTb3VyY2VBY3Rpb24+KHN0YXRlLnR5cGUgfCBEcmFnU291cmNlQWN0aW9uTGlu
ayk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0ZvY3VzQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Zv
Y3VzQ29udHJvbGxlci5jcHAKaW5kZXggZjdiZDcyMjE5NTNmMTkxMTk0NDBmNWE3OGM4MzMwMzVh
OTczNmZjZi4uZWM4NTYwNmU5OTcyOTk5NTY3ZWExNGYzMDAzZmQ0NDBhZjQ1NjYwZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9sbGVyLmNwcApAQCAtODg0LDcgKzg4NCw3IEBAIGJv
b2wgRm9jdXNDb250cm9sbGVyOjphZHZhbmNlRm9jdXNEaXJlY3Rpb25hbGx5KEZvY3VzRGlyZWN0
aW9uIGRpcmVjdGlvbiwgS2V5Ym9hCiAgICAgICAgIGlmICghaGFzT2Zmc2NyZWVuUmVjdChmb2N1
c2VkRWxlbWVudCkpIHsKICAgICAgICAgICAgIGNvbnRhaW5lciA9IHNjcm9sbGFibGVFbmNsb3Np
bmdCb3hPclBhcmVudEZyYW1lRm9yTm9kZUluRGlyZWN0aW9uKGRpcmVjdGlvbiwgZm9jdXNlZEVs
ZW1lbnQpOwogICAgICAgICAgICAgc3RhcnRpbmdSZWN0ID0gbm9kZVJlY3RJbkFic29sdXRlQ29v
cmRpbmF0ZXMoZm9jdXNlZEVsZW1lbnQsIHRydWUgLyogaWdub3JlIGJvcmRlciAqLyk7Ci0gICAg
ICAgIH0gZWxzZSBpZiAoaXNIVE1MQXJlYUVsZW1lbnQoZm9jdXNlZEVsZW1lbnQpKSB7CisgICAg
ICAgIH0gZWxzZSBpZiAoaXM8SFRNTEFyZWFFbGVtZW50Pihmb2N1c2VkRWxlbWVudCkpIHsKICAg
ICAgICAgICAgIEhUTUxBcmVhRWxlbWVudCYgYXJlYSA9IGRvd25jYXN0PEhUTUxBcmVhRWxlbWVu
dD4oKmZvY3VzZWRFbGVtZW50KTsKICAgICAgICAgICAgIGNvbnRhaW5lciA9IHNjcm9sbGFibGVF
bmNsb3NpbmdCb3hPclBhcmVudEZyYW1lRm9yTm9kZUluRGlyZWN0aW9uKGRpcmVjdGlvbiwgYXJl
YS5pbWFnZUVsZW1lbnQoKSk7CiAgICAgICAgICAgICBzdGFydGluZ1JlY3QgPSB2aXJ0dWFsUmVj
dEZvckFyZWFFbGVtZW50QW5kRGlyZWN0aW9uKCZhcmVhLCBkaXJlY3Rpb24pOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmNwcAppbmRleCA4Y2M2OGU5OTkwMzIwNWNjZDdjOGU4NTg1
ZjMyNjYyZTYzNTNiMDg4Li44ZTFkY2VmYzkzNGM0Yzk0YWUyNjMwMDEyZjFhNzg0YjQ2YmE4OGEx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmNwcApAQCAtMjMwLDE5ICsyMzAs
MTkgQEAgdm9pZCBQYWdlU2VyaWFsaXplcjo6c2VyaWFsaXplRnJhbWUoRnJhbWUqIGZyYW1lKQog
ICAgICAgICBpZiAoZWxlbWVudC0+aXNTdHlsZWRFbGVtZW50KCkpCiAgICAgICAgICAgICByZXRy
aWV2ZVJlc291cmNlc0ZvclByb3BlcnRpZXModG9TdHlsZWRFbGVtZW50KGVsZW1lbnQpLT5pbmxp
bmVTdHlsZSgpLCBkb2N1bWVudCk7CiAKLSAgICAgICAgaWYgKGlzSFRNTEltYWdlRWxlbWVudChl
bGVtZW50KSkgeworICAgICAgICBpZiAoaXM8SFRNTEltYWdlRWxlbWVudD4oZWxlbWVudCkpIHsK
ICAgICAgICAgICAgIEhUTUxJbWFnZUVsZW1lbnQmIGltYWdlRWxlbWVudCA9IGRvd25jYXN0PEhU
TUxJbWFnZUVsZW1lbnQ+KCplbGVtZW50KTsKICAgICAgICAgICAgIFVSTCB1cmwgPSBkb2N1bWVu
dC0+Y29tcGxldGVVUkwoaW1hZ2VFbGVtZW50LmZhc3RHZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjpz
cmNBdHRyKSk7CiAgICAgICAgICAgICBDYWNoZWRJbWFnZSogY2FjaGVkSW1hZ2UgPSBpbWFnZUVs
ZW1lbnQuY2FjaGVkSW1hZ2UoKTsKICAgICAgICAgICAgIGFkZEltYWdlVG9SZXNvdXJjZXMoY2Fj
aGVkSW1hZ2UsIGltYWdlRWxlbWVudC5yZW5kZXJlcigpLCB1cmwpOwotICAgICAgICB9IGVsc2Ug
aWYgKGlzSFRNTExpbmtFbGVtZW50KGVsZW1lbnQpKSB7CisgICAgICAgIH0gZWxzZSBpZiAoaXM8
SFRNTExpbmtFbGVtZW50PihlbGVtZW50KSkgewogICAgICAgICAgICAgSFRNTExpbmtFbGVtZW50
JiBsaW5rRWxlbWVudCA9IGRvd25jYXN0PEhUTUxMaW5rRWxlbWVudD4oKmVsZW1lbnQpOwogICAg
ICAgICAgICAgaWYgKENTU1N0eWxlU2hlZXQqIHNoZWV0ID0gbGlua0VsZW1lbnQuc2hlZXQoKSkg
ewogICAgICAgICAgICAgICAgIFVSTCB1cmwgPSBkb2N1bWVudC0+Y29tcGxldGVVUkwobGlua0Vs
ZW1lbnQuZ2V0QXR0cmlidXRlKEhUTUxOYW1lczo6aHJlZkF0dHIpKTsKICAgICAgICAgICAgICAg
ICBzZXJpYWxpemVDU1NTdHlsZVNoZWV0KHNoZWV0LCB1cmwpOwogICAgICAgICAgICAgICAgIEFT
U0VSVChtX3Jlc291cmNlVVJMcy5jb250YWlucyh1cmwpKTsKICAgICAgICAgICAgIH0KLSAgICAg
ICAgfSBlbHNlIGlmIChpc0hUTUxTdHlsZUVsZW1lbnQoZWxlbWVudCkpIHsKKyAgICAgICAgfSBl
bHNlIGlmIChpczxIVE1MU3R5bGVFbGVtZW50PihlbGVtZW50KSkgewogICAgICAgICAgICAgaWYg
KENTU1N0eWxlU2hlZXQqIHNoZWV0ID0gZG93bmNhc3Q8SFRNTFN0eWxlRWxlbWVudD4oKmVsZW1l
bnQpLnNoZWV0KCkpCiAgICAgICAgICAgICAgICAgc2VyaWFsaXplQ1NTU3R5bGVTaGVldChzaGVl
dCwgVVJMKCkpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Nw
YXRpYWxOYXZpZ2F0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU3BhdGlhbE5hdmlnYXRp
b24uY3BwCmluZGV4IGQ1NmM5ZjBkNzhlOGE5MDc0NmFkNzdmYzRlYTI3NzgyZjc5NjkyMDAuLjRl
Mzg5MjQyZjE5NTkzODI5N2VhMTJjNDA5YjlkZmFjODdjYjUyNjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvU3BhdGlhbE5hdmlnYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvU3BhdGlhbE5hdmlnYXRpb24uY3BwCkBAIC02Niw3ICs2Niw3IEBAIEZvY3VzQ2FuZGlk
YXRlOjpGb2N1c0NhbmRpZGF0ZShOb2RlKiBub2RlLCBGb2N1c0RpcmVjdGlvbiBkaXJlY3Rpb24p
CiAgICAgQVNTRVJUKG5vZGUpOwogICAgIEFTU0VSVChub2RlLT5pc0VsZW1lbnROb2RlKCkpOwog
Ci0gICAgaWYgKGlzSFRNTEFyZWFFbGVtZW50KG5vZGUpKSB7CisgICAgaWYgKGlzPEhUTUxBcmVh
RWxlbWVudD4obm9kZSkpIHsKICAgICAgICAgSFRNTEFyZWFFbGVtZW50JiBhcmVhID0gZG93bmNh
c3Q8SFRNTEFyZWFFbGVtZW50Pigqbm9kZSk7CiAgICAgICAgIEhUTUxJbWFnZUVsZW1lbnQqIGlt
YWdlID0gYXJlYS5pbWFnZUVsZW1lbnQoKTsKICAgICAgICAgaWYgKCFpbWFnZSB8fCAhaW1hZ2Ut
PnJlbmRlcmVyKCkpCkBAIC02MDcsNyArNjA3LDcgQEAgYm9vbCBhcmVFbGVtZW50c09uU2FtZUxp
bmUoY29uc3QgRm9jdXNDYW5kaWRhdGUmIGZpcnN0Q2FuZGlkYXRlLCBjb25zdCBGb2N1c0NhbmQK
ICAgICBpZiAoIWZpcnN0Q2FuZGlkYXRlLnJlY3QuaW50ZXJzZWN0cyhzZWNvbmRDYW5kaWRhdGUu
cmVjdCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGlmIChpc0hUTUxBcmVhRWxlbWVu
dChmaXJzdENhbmRpZGF0ZS5mb2N1c2FibGVOb2RlKSB8fCBpc0hUTUxBcmVhRWxlbWVudChzZWNv
bmRDYW5kaWRhdGUuZm9jdXNhYmxlTm9kZSkpCisgICAgaWYgKGlzPEhUTUxBcmVhRWxlbWVudD4o
Zmlyc3RDYW5kaWRhdGUuZm9jdXNhYmxlTm9kZSkgfHwgaXM8SFRNTEFyZWFFbGVtZW50PihzZWNv
bmRDYW5kaWRhdGUuZm9jdXNhYmxlTm9kZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAg
IGlmICghZmlyc3RDYW5kaWRhdGUudmlzaWJsZU5vZGUtPnJlbmRlcmVyKCktPmlzUmVuZGVySW5s
aW5lKCkgfHwgIXNlY29uZENhbmRpZGF0ZS52aXNpYmxlTm9kZS0+cmVuZGVyZXIoKS0+aXNSZW5k
ZXJJbmxpbmUoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvaW9zL0ZyYW1lSU9T
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGFnZS9pb3MvRnJhbWVJT1MubW0KaW5kZXggYjgyZjllYjI0
Yjg3MzZiYWZlNTUzNWRlMTFlM2I2NjkyMDQyOWE1YS4uZTNhMGM3MTE3MzgyZTNlOWJmZmRlNTc3
YjFlOTVjODk4NWUxNTA3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9pb3MvRnJh
bWVJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9pb3MvRnJhbWVJT1MubW0KQEAgLTM1
MSw3ICszNTEsNyBAQCBzdGF0aWMgTm9kZSogYW5jZXN0b3JSZXNwb25kaW5nVG9DbGlja0V2ZW50
cyhjb25zdCBIaXRUZXN0UmVzdWx0JiBoaXRUZXN0UmVzdWx0LAogICAgICAgICAgICAgLy8gSWYg
d2UgYXJlIGludGVyZXN0ZWQgYWJvdXQgdGhlIGZyYW1lLCB1c2UgaXQuCiAgICAgICAgICAgICBp
ZiAobm9kZUJvdW5kcykgewogICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgYSBjaGVjayB0byBz
ZWUgd2hldGhlciB0aGlzIG5vZGUgaXMgYW4gYXJlYSBlbGVtZW50LiAgVGhlIG9ubHkgd2F5IHRo
aXMgY2FuIGhhcHBlbiBpcyBpZiB0aGlzIGlzIHRoZSBmaXJzdCBjaGVjay4KLSAgICAgICAgICAg
ICAgICBpZiAobm9kZSA9PSBoaXRUZXN0UmVzdWx0LmlubmVyTm9kZSgpICYmIG5vZGUgIT0gaGl0
VGVzdFJlc3VsdC5pbm5lck5vblNoYXJlZE5vZGUoKSAmJiBpc0hUTUxBcmVhRWxlbWVudChub2Rl
KSkKKyAgICAgICAgICAgICAgICBpZiAobm9kZSA9PSBoaXRUZXN0UmVzdWx0LmlubmVyTm9kZSgp
ICYmIG5vZGUgIT0gaGl0VGVzdFJlc3VsdC5pbm5lck5vblNoYXJlZE5vZGUoKSAmJiBpczxIVE1M
QXJlYUVsZW1lbnQ+KG5vZGUpKQogICAgICAgICAgICAgICAgICAgICAqbm9kZUJvdW5kcyA9IHNu
YXBwZWRJbnRSZWN0KGRvd25jYXN0PEhUTUxBcmVhRWxlbWVudD4oKm5vZGUpLmNvbXB1dGVSZWN0
KGhpdFRlc3RSZXN1bHQuaW5uZXJOb25TaGFyZWROb2RlKCktPnJlbmRlcmVyKCkpKTsKICAgICAg
ICAgICAgICAgICBlbHNlIGlmIChub2RlICYmIG5vZGUtPnJlbmRlcmVyKCkpCiAgICAgICAgICAg
ICAgICAgICAgICpub2RlQm91bmRzID0gbm9kZS0+cmVuZGVyZXIoKS0+YWJzb2x1dGVCb3VuZGlu
Z0JveFJlY3QodHJ1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0
VGVzdFJlc3VsdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5j
cHAKaW5kZXggMDYzNzg5YzhjMDdhY2QxYzExNDE3ZTFkN2Q3NjVmNTg1ZmU2MDZlNS4uOTNjZTQ5
ZGIzMmIxMjJhMTg5ZmUzMTVlOWEyMTUwMDYyMjM0YzZmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcApAQCAtMjczLDcgKzI3Myw3IEBAIFN0cmluZyBIaXRU
ZXN0UmVzdWx0OjphbHREaXNwbGF5U3RyaW5nKCkgY29uc3QKICAgICBpZiAoIW1faW5uZXJOb25T
aGFyZWROb2RlKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAgICAgCi0gICAgaWYgKGlzSFRN
TEltYWdlRWxlbWVudCgqbV9pbm5lck5vblNoYXJlZE5vZGUpKSB7CisgICAgaWYgKGlzPEhUTUxJ
bWFnZUVsZW1lbnQ+KCptX2lubmVyTm9uU2hhcmVkTm9kZSkpIHsKICAgICAgICAgSFRNTEltYWdl
RWxlbWVudCYgaW1hZ2UgPSBkb3duY2FzdDxIVE1MSW1hZ2VFbGVtZW50PigqbV9pbm5lck5vblNo
YXJlZE5vZGUpOwogICAgICAgICByZXR1cm4gZGlzcGxheVN0cmluZyhpbWFnZS5mYXN0R2V0QXR0
cmlidXRlKGFsdEF0dHIpLCBtX2lubmVyTm9uU2hhcmVkTm9kZS5nZXQoKSk7CiAgICAgfQpAQCAt
MzYyLDcgKzM2Miw3IEBAIGJvb2wgSGl0VGVzdFJlc3VsdDo6bWVkaWFTdXBwb3J0c0Z1bGxzY3Jl
ZW4oKSBjb25zdAogewogI2lmIEVOQUJMRShWSURFTykKICAgICBIVE1MTWVkaWFFbGVtZW50KiBt
ZWRpYUVsdChtZWRpYUVsZW1lbnQoKSk7Ci0gICAgcmV0dXJuIChtZWRpYUVsdCAmJiBpc0hUTUxW
aWRlb0VsZW1lbnQobWVkaWFFbHQpICYmIG1lZGlhRWx0LT5zdXBwb3J0c0Z1bGxzY3JlZW4oKSk7
CisgICAgcmV0dXJuIChtZWRpYUVsdCAmJiBpczxIVE1MVmlkZW9FbGVtZW50PihtZWRpYUVsdCkg
JiYgbWVkaWFFbHQtPnN1cHBvcnRzRnVsbHNjcmVlbigpKTsKICNlbHNlCiAgICAgcmV0dXJuIGZh
bHNlOwogI2VuZGlmCkBAIC0zNzcsNyArMzc3LDcgQEAgSFRNTE1lZGlhRWxlbWVudCogSGl0VGVz
dFJlc3VsdDo6bWVkaWFFbGVtZW50KCkgY29uc3QKICAgICBpZiAoIShtX2lubmVyTm9uU2hhcmVk
Tm9kZS0+cmVuZGVyZXIoKSAmJiBtX2lubmVyTm9uU2hhcmVkTm9kZS0+cmVuZGVyZXIoKS0+aXNN
ZWRpYSgpKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBpZiAoaXNIVE1MVmlkZW9FbGVtZW50
KG1faW5uZXJOb25TaGFyZWROb2RlLmdldCgpKSB8fCBpc0hUTUxBdWRpb0VsZW1lbnQobV9pbm5l
ck5vblNoYXJlZE5vZGUuZ2V0KCkpKQorICAgIGlmIChpczxIVE1MVmlkZW9FbGVtZW50PihtX2lu
bmVyTm9uU2hhcmVkTm9kZS5nZXQoKSkgfHwgaXM8SFRNTEF1ZGlvRWxlbWVudD4obV9pbm5lck5v
blNoYXJlZE5vZGUuZ2V0KCkpKQogICAgICAgICByZXR1cm4gdG9IVE1MTWVkaWFFbGVtZW50KG1f
aW5uZXJOb25TaGFyZWROb2RlLmdldCgpKTsKICAgICByZXR1cm4gMDsKIH0KQEAgLTQyNCw3ICs0
MjQsNyBAQCB2b2lkIEhpdFRlc3RSZXN1bHQ6OmVudGVyRnVsbHNjcmVlbkZvclZpZGVvKCkgY29u
c3QKIHsKICNpZiBFTkFCTEUoVklERU8pCiAgICAgSFRNTE1lZGlhRWxlbWVudCogbWVkaWFFbGVt
ZW50KHRoaXMtPm1lZGlhRWxlbWVudCgpKTsKLSAgICBpZiAobWVkaWFFbGVtZW50ICYmIGlzSFRN
TFZpZGVvRWxlbWVudChtZWRpYUVsZW1lbnQpKSB7CisgICAgaWYgKG1lZGlhRWxlbWVudCAmJiBp
czxIVE1MVmlkZW9FbGVtZW50PihtZWRpYUVsZW1lbnQpKSB7CiAgICAgICAgIEhUTUxWaWRlb0Vs
ZW1lbnQmIHZpZGVvRWxlbWVudCA9IGRvd25jYXN0PEhUTUxWaWRlb0VsZW1lbnQ+KCptZWRpYUVs
ZW1lbnQpOwogICAgICAgICBpZiAoIXZpZGVvRWxlbWVudC5pc0Z1bGxzY3JlZW4oKSAmJiBtZWRp
YUVsZW1lbnQtPnN1cHBvcnRzRnVsbHNjcmVlbigpKSB7CiAgICAgICAgICAgICBVc2VyR2VzdHVy
ZUluZGljYXRvciBpbmRpY2F0b3IoRGVmaW5pdGVseVByb2Nlc3NpbmdVc2VyR2VzdHVyZSk7CkBA
IC00ODIsNyArNDgyLDcgQEAgYm9vbCBIaXRUZXN0UmVzdWx0OjptZWRpYUlzVmlkZW8oKSBjb25z
dAogewogI2lmIEVOQUJMRShWSURFTykKICAgICBpZiAoSFRNTE1lZGlhRWxlbWVudCogbWVkaWFF
bHQgPSBtZWRpYUVsZW1lbnQoKSkKLSAgICAgICAgcmV0dXJuIGlzSFRNTFZpZGVvRWxlbWVudCht
ZWRpYUVsdCk7CisgICAgICAgIHJldHVybiBpczxIVE1MVmlkZW9FbGVtZW50PihtZWRpYUVsdCk7
CiAjZW5kaWYKICAgICByZXR1cm4gZmFsc2U7CiB9CkBAIC01MTYsNyArNTE2LDcgQEAgYm9vbCBI
aXRUZXN0UmVzdWx0Ojppc0xpdmVMaW5rKCkgY29uc3QKICAgICBpZiAoIW1faW5uZXJVUkxFbGVt
ZW50KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAoaXNIVE1MQW5jaG9yRWxlbWVu
dCgqbV9pbm5lclVSTEVsZW1lbnQpKQorICAgIGlmIChpczxIVE1MQW5jaG9yRWxlbWVudD4oKm1f
aW5uZXJVUkxFbGVtZW50KSkKICAgICAgICAgcmV0dXJuIGRvd25jYXN0PEhUTUxBbmNob3JFbGVt
ZW50PigqbV9pbm5lclVSTEVsZW1lbnQpLmlzTGl2ZUxpbmsoKTsKIAogICAgIGlmIChpczxTVkdB
RWxlbWVudD4oKm1faW5uZXJVUkxFbGVtZW50KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJDb3VudGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJDb3VudGVyLmNwcAppbmRleCA0OTcwYzA0ZWI4NTcwYzA5ODllOTU5NGRhY2QwNTFmNGY4
M2UyY2UxLi5lMzZhYWVjZjA3MmJhYmExYmY3OTE5MmZiMWY3ZDk0MDk4Y2Y4ODIxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ291bnRlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckNvdW50ZXIuY3BwCkBAIC0xNDIsNyArMTQyLDcg
QEAgc3RhdGljIGJvb2wgcGxhbkNvdW50ZXIoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIGNvbnN0
IEF0b21pY1N0cmluZyYgaWRlbnRpZmllciwKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAg
ICAgICB9CiAgICAgICAgIGlmIChFbGVtZW50KiBlbGVtZW50ID0gcmVuZGVyZXIuZWxlbWVudCgp
KSB7Ci0gICAgICAgICAgICBpZiAoaXNIVE1MT0xpc3RFbGVtZW50KGVsZW1lbnQpKSB7CisgICAg
ICAgICAgICBpZiAoaXM8SFRNTE9MaXN0RWxlbWVudD4oZWxlbWVudCkpIHsKICAgICAgICAgICAg
ICAgICB2YWx1ZSA9IGRvd25jYXN0PEhUTUxPTGlzdEVsZW1lbnQ+KCplbGVtZW50KS5zdGFydCgp
OwogICAgICAgICAgICAgICAgIGlzUmVzZXQgPSB0cnVlOwogICAgICAgICAgICAgICAgIHJldHVy
biB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKaW5kZXggNDJm
MzI5Y2M2YzE2OGQ3M2UxODE3MGVhNGMxMDc2MzJkMGZmZWVlMy4uN2ZjMzMzMGFiZjM1ZjA2NmQ2
MzRmNmNmYTllZGUzODBjMjFjNTc0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
SW1hZ2UuY3BwCkBAIC0xMzAsNyArMTMwLDcgQEAgUmVuZGVySW1hZ2U6OlJlbmRlckltYWdlKEVs
ZW1lbnQmIGVsZW1lbnQsIFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlLCBTdHlsZUltYWcKICAg
ICB1cGRhdGVBbHRUZXh0KCk7CiAgICAgaW1hZ2VSZXNvdXJjZSgpLmluaXRpYWxpemUodGhpcyk7
CiAKLSAgICBpZiAoaXNIVE1MSW1hZ2VFbGVtZW50KGVsZW1lbnQpKQorICAgIGlmIChpczxIVE1M
SW1hZ2VFbGVtZW50PihlbGVtZW50KSkKICAgICAgICAgbV9oYXNTaGFkb3dDb250cm9scyA9IGRv
d25jYXN0PEhUTUxJbWFnZUVsZW1lbnQ+KGVsZW1lbnQpLmhhc1NoYWRvd0NvbnRyb2xzKCk7CiB9
CiAKQEAgLTUxNCw3ICs1MTQsNyBAQCB2b2lkIFJlbmRlckltYWdlOjpwYWludEFyZWFFbGVtZW50
Rm9jdXNSaW5nKFBhaW50SW5mbyYgcGFpbnRJbmZvKQogICAgICAgICByZXR1cm47CiAKICAgICBF
bGVtZW50KiBmb2N1c2VkRWxlbWVudCA9IGRvY3VtZW50KCkuZm9jdXNlZEVsZW1lbnQoKTsKLSAg
ICBpZiAoIWZvY3VzZWRFbGVtZW50IHx8ICFpc0hUTUxBcmVhRWxlbWVudChmb2N1c2VkRWxlbWVu
dCkpCisgICAgaWYgKCFmb2N1c2VkRWxlbWVudCB8fCAhaXM8SFRNTEFyZWFFbGVtZW50Pihmb2N1
c2VkRWxlbWVudCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIEhUTUxBcmVhRWxlbWVudCYgYXJl
YUVsZW1lbnQgPSBkb3duY2FzdDxIVE1MQXJlYUVsZW1lbnQ+KCpmb2N1c2VkRWxlbWVudCk7CkBA
IC01NjAsNyArNTYwLDcgQEAgdm9pZCBSZW5kZXJJbWFnZTo6cGFpbnRJbnRvUmVjdChHcmFwaGlj
c0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKICAgICBpZiAoIWltZyB8
fCBpbWctPmlzTnVsbCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBIVE1MSW1hZ2VFbGVtZW50
KiBpbWFnZUVsZW1lbnQgPSAoZWxlbWVudCgpICYmIGlzSFRNTEltYWdlRWxlbWVudChlbGVtZW50
KCkpKSA/IGRvd25jYXN0PEhUTUxJbWFnZUVsZW1lbnQ+KGVsZW1lbnQoKSkgOiBudWxscHRyOwor
ICAgIEhUTUxJbWFnZUVsZW1lbnQqIGltYWdlRWxlbWVudCA9IChlbGVtZW50KCkgJiYgaXM8SFRN
TEltYWdlRWxlbWVudD4oZWxlbWVudCgpKSkgPyBkb3duY2FzdDxIVE1MSW1hZ2VFbGVtZW50Pihl
bGVtZW50KCkpIDogbnVsbHB0cjsKICAgICBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcGVy
YXRvciA9IGltYWdlRWxlbWVudCA/IGltYWdlRWxlbWVudC0+Y29tcG9zaXRlT3BlcmF0b3IoKSA6
IENvbXBvc2l0ZVNvdXJjZU92ZXI7CiAgICAgSW1hZ2UqIGltYWdlID0gaW1hZ2VSZXNvdXJjZSgp
LmltYWdlKCkuZ2V0KCk7CiAgICAgYm9vbCB1c2VMb3dRdWFsaXR5U2NhbGluZyA9IHNob3VsZFBh
aW50QXRMb3dRdWFsaXR5KGNvbnRleHQsIGltYWdlLCBpbWFnZSwgTGF5b3V0U2l6ZShyZWN0LnNp
emUoKSkpOwpAQCAtNjIyLDcgKzYyMiw3IEBAIExheW91dFVuaXQgUmVuZGVySW1hZ2U6Om1pbmlt
dW1SZXBsYWNlZEhlaWdodCgpIGNvbnN0CiAKIEhUTUxNYXBFbGVtZW50KiBSZW5kZXJJbWFnZTo6
aW1hZ2VNYXAoKSBjb25zdAogewotICAgIEhUTUxJbWFnZUVsZW1lbnQqIGltYWdlID0gZWxlbWVu
dCgpICYmIGlzSFRNTEltYWdlRWxlbWVudChlbGVtZW50KCkpID8gZG93bmNhc3Q8SFRNTEltYWdl
RWxlbWVudD4oZWxlbWVudCgpKSA6IG51bGxwdHI7CisgICAgSFRNTEltYWdlRWxlbWVudCogaW1h
Z2UgPSBlbGVtZW50KCkgJiYgaXM8SFRNTEltYWdlRWxlbWVudD4oZWxlbWVudCgpKSA/IGRvd25j
YXN0PEhUTUxJbWFnZUVsZW1lbnQ+KGVsZW1lbnQoKSkgOiBudWxscHRyOwogICAgIHJldHVybiBp
bWFnZSA/IGltYWdlLT50cmVlU2NvcGUoKS5nZXRJbWFnZU1hcChpbWFnZS0+ZmFzdEdldEF0dHJp
YnV0ZSh1c2VtYXBBdHRyKSkgOiBudWxscHRyOwogfQogCkBAIC02NTcsNyArNjU3LDcgQEAgdm9p
ZCBSZW5kZXJJbWFnZTo6dXBkYXRlQWx0VGV4dCgpCiAKICAgICBpZiAoaXM8SFRNTElucHV0RWxl
bWVudD4oKmVsZW1lbnQoKSkpCiAgICAgICAgIG1fYWx0VGV4dCA9IGRvd25jYXN0PEhUTUxJbnB1
dEVsZW1lbnQ+KCplbGVtZW50KCkpLmFsdFRleHQoKTsKLSAgICBlbHNlIGlmIChpc0hUTUxJbWFn
ZUVsZW1lbnQoKmVsZW1lbnQoKSkpCisgICAgZWxzZSBpZiAoaXM8SFRNTEltYWdlRWxlbWVudD4o
KmVsZW1lbnQoKSkpCiAgICAgICAgIG1fYWx0VGV4dCA9IGRvd25jYXN0PEhUTUxJbWFnZUVsZW1l
bnQ+KCplbGVtZW50KCkpLmFsdFRleHQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxpc3RCb3guY3BwCmluZGV4IGMxZTg0NDU5NzM4MjFiMzIzYWFiN2Q4ODZiNjYyYWE1
NzM0OWQ4M2QuLmQyYWQ3NDNkN2U4NWYxMzBkZjAzYWVjYWZiMWVjYTU2MzRjYmI4MWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAKQEAgLTExOCw3ICsxMTgs
NyBAQCB2b2lkIFJlbmRlckxpc3RCb3g6OnVwZGF0ZUZyb21FbGVtZW50KCkKICAgICAgICAgICAg
IEZvbnQgaXRlbUZvbnQgPSBzdHlsZSgpLmZvbnQoKTsKICAgICAgICAgICAgIGlmIChpczxIVE1M
T3B0aW9uRWxlbWVudD4oZWxlbWVudCkpCiAgICAgICAgICAgICAgICAgdGV4dCA9IGRvd25jYXN0
PEhUTUxPcHRpb25FbGVtZW50PigqZWxlbWVudCkudGV4dEluZGVudGVkVG9SZXNwZWN0R3JvdXBM
YWJlbCgpOwotICAgICAgICAgICAgZWxzZSBpZiAoaXNIVE1MT3B0R3JvdXBFbGVtZW50KGVsZW1l
bnQpKSB7CisgICAgICAgICAgICBlbHNlIGlmIChpczxIVE1MT3B0R3JvdXBFbGVtZW50PihlbGVt
ZW50KSkgewogICAgICAgICAgICAgICAgIHRleHQgPSBkb3duY2FzdDxIVE1MT3B0R3JvdXBFbGVt
ZW50PigqZWxlbWVudCkuZ3JvdXBMYWJlbFRleHQoKTsKICAgICAgICAgICAgICAgICBGb250RGVz
Y3JpcHRpb24gZCA9IGl0ZW1Gb250LmZvbnREZXNjcmlwdGlvbigpOwogICAgICAgICAgICAgICAg
IGQuc2V0V2VpZ2h0KGQuYm9sZGVyV2VpZ2h0KCkpOwpAQCAtMzg4LDcgKzM4OCw3IEBAIHZvaWQg
UmVuZGVyTGlzdEJveDo6cGFpbnRJdGVtRm9yZWdyb3VuZChQYWludEluZm8mIHBhaW50SW5mbywg
Y29uc3QgTGF5b3V0UG9pbnQmCiAgICAgYm9vbCBpc09wdGlvbkVsZW1lbnQgPSBpczxIVE1MT3B0
aW9uRWxlbWVudD4obGlzdEl0ZW1FbGVtZW50KTsKICAgICBpZiAoaXNPcHRpb25FbGVtZW50KQog
ICAgICAgICBpdGVtVGV4dCA9IGRvd25jYXN0PEhUTUxPcHRpb25FbGVtZW50PigqbGlzdEl0ZW1F
bGVtZW50KS50ZXh0SW5kZW50ZWRUb1Jlc3BlY3RHcm91cExhYmVsKCk7Ci0gICAgZWxzZSBpZiAo
aXNIVE1MT3B0R3JvdXBFbGVtZW50KGxpc3RJdGVtRWxlbWVudCkpCisgICAgZWxzZSBpZiAoaXM8
SFRNTE9wdEdyb3VwRWxlbWVudD4obGlzdEl0ZW1FbGVtZW50KSkKICAgICAgICAgaXRlbVRleHQg
PSBkb3duY2FzdDxIVE1MT3B0R3JvdXBFbGVtZW50PigqbGlzdEl0ZW1FbGVtZW50KS5ncm91cExh
YmVsVGV4dCgpOwogICAgIGFwcGx5VGV4dFRyYW5zZm9ybShzdHlsZSgpLCBpdGVtVGV4dCwgJyAn
KTsKIApAQCAtNDA5LDcgKzQwOSw3IEBAIHZvaWQgUmVuZGVyTGlzdEJveDo6cGFpbnRJdGVtRm9y
ZWdyb3VuZChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmCiAgICAgTGF5
b3V0UmVjdCByID0gaXRlbUJvdW5kaW5nQm94UmVjdChwYWludE9mZnNldCwgbGlzdEluZGV4KTsK
ICAgICByLm1vdmUoaXRlbU9mZnNldEZvckFsaWdubWVudCh0ZXh0UnVuLCBpdGVtU3R5bGUsIGl0
ZW1Gb250LCByKSk7CiAKLSAgICBpZiAoaXNIVE1MT3B0R3JvdXBFbGVtZW50KGxpc3RJdGVtRWxl
bWVudCkpIHsKKyAgICBpZiAoaXM8SFRNTE9wdEdyb3VwRWxlbWVudD4obGlzdEl0ZW1FbGVtZW50
KSkgewogICAgICAgICBGb250RGVzY3JpcHRpb24gZCA9IGl0ZW1Gb250LmZvbnREZXNjcmlwdGlv
bigpOwogICAgICAgICBkLnNldFdlaWdodChkLmJvbGRlcldlaWdodCgpKTsKICAgICAgICAgaXRl
bUZvbnQgPSBGb250KGQsIGl0ZW1Gb250LmxldHRlclNwYWNpbmcoKSwgaXRlbUZvbnQud29yZFNw
YWNpbmcoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWFy
cXVlZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWFycXVlZS5jcHAKaW5k
ZXggMjVhOTdlNmIzYTU4ZTk4OGQ2YWE0NjUxMzg5ZGY3NjgzYTAwMjQ0Yy4uZjRhZjcwZWM0MDg3
MjQxYTU0YzA5MWYzZGVjYmNkYmFjODdjZTIyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlck1hcnF1ZWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJNYXJxdWVlLmNwcApAQCAtNzMsNyArNzMsNyBAQCBpbnQgUmVuZGVyTWFycXVlZTo6
bWFycXVlZVNwZWVkKCkgY29uc3QKIHsKICAgICBpbnQgcmVzdWx0ID0gbV9sYXllci0+cmVuZGVy
ZXIoKS5zdHlsZSgpLm1hcnF1ZWVTcGVlZCgpOwogICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBtX2xh
eWVyLT5yZW5kZXJlcigpLmVsZW1lbnQoKTsKLSAgICBpZiAoZWxlbWVudCAmJiBpc0hUTUxNYXJx
dWVlRWxlbWVudChlbGVtZW50KSkKKyAgICBpZiAoZWxlbWVudCAmJiBpczxIVE1MTWFycXVlZUVs
ZW1lbnQ+KGVsZW1lbnQpKQogICAgICAgICByZXN1bHQgPSBzdGQ6Om1heChyZXN1bHQsIGRvd25j
YXN0PEhUTUxNYXJxdWVlRWxlbWVudD4oKmVsZW1lbnQpLm1pbmltdW1EZWxheSgpKTsKICAgICBy
ZXR1cm4gcmVzdWx0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlck1lbnVMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZW51TGlz
dC5jcHAKaW5kZXggNmVlMWIzMDEwMTM5NzVmMmY3OGQ5NjZkODhkNGE2OWY3MThlYjVkMi4uN2Nh
MzUyZGM3ZjI4NWI4MDMzYzQ3NDQ1ZGQwY2Q0ZjZjYjEyN2YwYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuY3BwCkBAIC00NTAsNyArNDUwLDcgQEAgU3RyaW5n
IFJlbmRlck1lbnVMaXN0OjppdGVtVGV4dCh1bnNpZ25lZCBsaXN0SW5kZXgpIGNvbnN0CiAKICAg
ICBTdHJpbmcgaXRlbVN0cmluZzsKICAgICBFbGVtZW50KiBlbGVtZW50ID0gbGlzdEl0ZW1zW2xp
c3RJbmRleF07Ci0gICAgaWYgKGlzSFRNTE9wdEdyb3VwRWxlbWVudChlbGVtZW50KSkKKyAgICBp
ZiAoaXM8SFRNTE9wdEdyb3VwRWxlbWVudD4oZWxlbWVudCkpCiAgICAgICAgIGl0ZW1TdHJpbmcg
PSBkb3duY2FzdDxIVE1MT3B0R3JvdXBFbGVtZW50PigqZWxlbWVudCkuZ3JvdXBMYWJlbFRleHQo
KTsKICAgICBlbHNlIGlmIChpczxIVE1MT3B0aW9uRWxlbWVudD4oZWxlbWVudCkpCiAgICAgICAg
IGl0ZW1TdHJpbmcgPSBkb3duY2FzdDxIVE1MT3B0aW9uRWxlbWVudD4oKmVsZW1lbnQpLnRleHRJ
bmRlbnRlZFRvUmVzcGVjdEdyb3VwTGFiZWwoKTsKQEAgLTQ5Nyw3ICs0OTcsNyBAQCBib29sIFJl
bmRlck1lbnVMaXN0OjppdGVtSXNFbmFibGVkKHVuc2lnbmVkIGxpc3RJbmRleCkgY29uc3QKIAog
ICAgIGJvb2wgZ3JvdXBFbmFibGVkID0gdHJ1ZTsKICAgICBpZiAoRWxlbWVudCogcGFyZW50RWxl
bWVudCA9IGVsZW1lbnQtPnBhcmVudEVsZW1lbnQoKSkgewotICAgICAgICBpZiAoaXNIVE1MT3B0
R3JvdXBFbGVtZW50KHBhcmVudEVsZW1lbnQpKQorICAgICAgICBpZiAoaXM8SFRNTE9wdEdyb3Vw
RWxlbWVudD4ocGFyZW50RWxlbWVudCkpCiAgICAgICAgICAgICBncm91cEVuYWJsZWQgPSAhcGFy
ZW50RWxlbWVudC0+aXNEaXNhYmxlZEZvcm1Db250cm9sKCk7CiAgICAgfQogICAgIGlmICghZ3Jv
dXBFbmFibGVkKQpAQCAtNjQ1LDcgKzY0NSw3IEBAIGJvb2wgUmVuZGVyTWVudUxpc3Q6Oml0ZW1J
c1NlcGFyYXRvcih1bnNpZ25lZCBsaXN0SW5kZXgpIGNvbnN0CiBib29sIFJlbmRlck1lbnVMaXN0
OjppdGVtSXNMYWJlbCh1bnNpZ25lZCBsaXN0SW5kZXgpIGNvbnN0CiB7CiAgICAgY29uc3QgVmVj
dG9yPEhUTUxFbGVtZW50Kj4mIGxpc3RJdGVtcyA9IHNlbGVjdEVsZW1lbnQoKS5saXN0SXRlbXMo
KTsKLSAgICByZXR1cm4gbGlzdEluZGV4IDwgbGlzdEl0ZW1zLnNpemUoKSAmJiBpc0hUTUxPcHRH
cm91cEVsZW1lbnQobGlzdEl0ZW1zW2xpc3RJbmRleF0pOworICAgIHJldHVybiBsaXN0SW5kZXgg
PCBsaXN0SXRlbXMuc2l6ZSgpICYmIGlzPEhUTUxPcHRHcm91cEVsZW1lbnQ+KGxpc3RJdGVtc1ts
aXN0SW5kZXhdKTsKIH0KIAogYm9vbCBSZW5kZXJNZW51TGlzdDo6aXRlbUlzU2VsZWN0ZWQodW5z
aWduZWQgbGlzdEluZGV4KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlck1ldGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZXRl
ci5jcHAKaW5kZXggOWVkYmJkOTliNTBmZmQwYTk0Zjc2ODg2OTM0OGI5ZmFhMzc4YmM5Ny4uOTkw
NTk2ZDllMTA1MzMwYTZmM2Q0MDU3ZGI5Zjc2YWZjNjllYzg5ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1ldGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTWV0ZXIuY3BwCkBAIC00Myw3ICs0Myw3IEBAIEhUTUxNZXRlckVsZW1l
bnQqIFJlbmRlck1ldGVyOjptZXRlckVsZW1lbnQoKSBjb25zdAogewogICAgIEFTU0VSVChlbGVt
ZW50KCkpOwogCi0gICAgaWYgKGlzSFRNTE1ldGVyRWxlbWVudChlbGVtZW50KCkpKQorICAgIGlm
IChpczxIVE1MTWV0ZXJFbGVtZW50PihlbGVtZW50KCkpKQogICAgICAgICByZXR1cm4gZG93bmNh
c3Q8SFRNTE1ldGVyRWxlbWVudD4oZWxlbWVudCgpKTsKIAogICAgIEFTU0VSVChlbGVtZW50KCkt
PnNoYWRvd0hvc3QoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3Bw
CmluZGV4IDdkMTQ1NjYyOGUzNGIyYmFiMjkxNDYzMGUwZTMyNTI5NTEwMjkxMDcuLmY3OGJhZjNk
ZWY1NWZlMDhjMTc0ZTQxNmNjMThhNGExM2FmNTkzYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJPYmplY3QuY3BwCkBAIC00MSw2ICs0MSw3IEBACiAjaW5jbHVkZSAiSFRNTEVs
ZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MSW1hZ2VFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5h
bWVzLmgiCisjaW5jbHVkZSAiSFRNTFRhYmxlQ2VsbEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1M
VGFibGVFbGVtZW50LmgiCiAjaW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5oIgogI2luY2x1ZGUgIkxv
Z2ljYWxTZWxlY3Rpb25PZmZzZXRDYWNoZXMuaCIKQEAgLTE5MTcsNyArMTkxOCw3IEBAIFJlc3Bl
Y3RJbWFnZU9yaWVudGF0aW9uRW51bSBSZW5kZXJPYmplY3Q6OnNob3VsZFJlc3BlY3RJbWFnZU9y
aWVudGF0aW9uKCkgY29uc3QKICNlbmRpZgogICAgIC8vIFJlc3BlY3QgdGhlIGltYWdlJ3Mgb3Jp
ZW50YXRpb24gaWYgaXQncyBiZWluZyB1c2VkIGFzIGEgZnVsbC1wYWdlIGltYWdlIG9yIGl0J3MK
ICAgICAvLyBhbiA8aW1nPiBhbmQgdGhlIHNldHRpbmcgdG8gcmVzcGVjdCBpdCBldmVyeXdoZXJl
IGlzIHNldC4KLSAgICByZXR1cm4gKGZyYW1lKCkuc2V0dGluZ3MoKS5zaG91bGRSZXNwZWN0SW1h
Z2VPcmllbnRhdGlvbigpICYmIG5vZGUoKSAmJiBpc0hUTUxJbWFnZUVsZW1lbnQobm9kZSgpKSkg
PyBSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbiA6IERvTm90UmVzcGVjdEltYWdlT3JpZW50YXRpb247
CisgICAgcmV0dXJuIChmcmFtZSgpLnNldHRpbmdzKCkuc2hvdWxkUmVzcGVjdEltYWdlT3JpZW50
YXRpb24oKSAmJiBub2RlKCkgJiYgaXM8SFRNTEltYWdlRWxlbWVudD4obm9kZSgpKSkgPyBSZXNw
ZWN0SW1hZ2VPcmllbnRhdGlvbiA6IERvTm90UmVzcGVjdEltYWdlT3JpZW50YXRpb247CiB9CiAK
IGJvb2wgUmVuZGVyT2JqZWN0OjpoYXNPdXRsaW5lQW5ub3RhdGlvbigpIGNvbnN0CkBAIC0yMjk3
LDcgKzIyOTgsNyBAQCB2b2lkIFJlbmRlck9iamVjdDo6Z2V0VGV4dERlY29yYXRpb25Db2xvcnMo
aW50IGRlY29yYXRpb25zLCBDb2xvciYgdW5kZXJsaW5lLCBDbwogICAgICAgICBjdXJyID0gY3Vy
ci0+cGFyZW50KCk7CiAgICAgICAgIGlmIChjdXJyICYmIGN1cnItPmlzQW5vbnltb3VzQmxvY2so
KSAmJiB0b1JlbmRlckJsb2NrKGN1cnIpLT5jb250aW51YXRpb24oKSkKICAgICAgICAgICAgIGN1
cnIgPSB0b1JlbmRlckJsb2NrKGN1cnIpLT5jb250aW51YXRpb24oKTsKLSAgICB9IHdoaWxlIChj
dXJyICYmIGRlY29yYXRpb25zICYmICghcXVpcmtzTW9kZSB8fCAhY3Vyci0+bm9kZSgpIHx8ICgh
aXNIVE1MQW5jaG9yRWxlbWVudChjdXJyLT5ub2RlKCkpICYmICFjdXJyLT5ub2RlKCktPmhhc1Rh
Z05hbWUoZm9udFRhZykpKSk7CisgICAgfSB3aGlsZSAoY3VyciAmJiBkZWNvcmF0aW9ucyAmJiAo
IXF1aXJrc01vZGUgfHwgIWN1cnItPm5vZGUoKSB8fCAoIWlzPEhUTUxBbmNob3JFbGVtZW50Pihj
dXJyLT5ub2RlKCkpICYmICFjdXJyLT5ub2RlKCktPmhhc1RhZ05hbWUoZm9udFRhZykpKSk7CiAK
ICAgICAvLyBJZiB3ZSBiYWlsZWQgb3V0LCB1c2UgdGhlIGVsZW1lbnQgd2UgYmFpbGVkIG91dCBh
dCAodHlwaWNhbGx5IGEgPGZvbnQ+IG9yIDxhPiBlbGVtZW50KS4KICAgICBpZiAoZGVjb3JhdGlv
bnMgJiYgY3VycikgewpAQCAtMjQ0Myw3ICsyNDQ0LDcgQEAgUmVuZGVyQm94TW9kZWxPYmplY3Qq
IFJlbmRlck9iamVjdDo6b2Zmc2V0UGFyZW50KCkgY29uc3QKICAgICBhdXRvIGN1cnIgPSBwYXJl
bnQoKTsKICAgICB3aGlsZSAoY3VyciAmJiAoIWN1cnItPmVsZW1lbnQoKSB8fCAoIWN1cnItPmlz
UG9zaXRpb25lZCgpICYmICFjdXJyLT5pc0JvZHkoKSkpICYmICFjdXJyLT5pc1JlbmRlck5hbWVk
Rmxvd1RocmVhZCgpKSB7CiAgICAgICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBjdXJyLT5lbGVtZW50
KCk7Ci0gICAgICAgIGlmICghc2tpcFRhYmxlcyAmJiBlbGVtZW50ICYmIChpc0hUTUxUYWJsZUVs
ZW1lbnQoZWxlbWVudCkgfHwgZWxlbWVudC0+aGFzVGFnTmFtZSh0ZFRhZykgfHwgZWxlbWVudC0+
aGFzVGFnTmFtZSh0aFRhZykpKQorICAgICAgICBpZiAoIXNraXBUYWJsZXMgJiYgZWxlbWVudCAm
JiAoaXM8SFRNTFRhYmxlRWxlbWVudD4oKmVsZW1lbnQpIHx8IGlzSFRNTFRhYmxlQ2VsbEVsZW1l
bnQoKmVsZW1lbnQpKSkKICAgICAgICAgICAgIGJyZWFrOwogIAogICAgICAgICBmbG9hdCBuZXda
b29tID0gY3Vyci0+c3R5bGUoKS5lZmZlY3RpdmVab29tKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUHJvZ3Jlc3MuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclByb2dyZXNzLmNwcAppbmRleCAyYjRmMDU3YWExM2U3Y2YzMzc2MjdjYjI3
MGYzMjcyMjQyYmQ2NmQ2Li42YjhjZDQyZGFlZTNlYzRlMDI1YWZhNjM2NDI3YWY2YmRmZGU4MGNl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUHJvZ3Jlc3MuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJQcm9ncmVzcy5jcHAKQEAgLTEx
MCw3ICsxMTAsNyBAQCBIVE1MUHJvZ3Jlc3NFbGVtZW50KiBSZW5kZXJQcm9ncmVzczo6cHJvZ3Jl
c3NFbGVtZW50KCkgY29uc3QKICAgICBpZiAoIWVsZW1lbnQoKSkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKLSAgICBpZiAoaXNIVE1MUHJvZ3Jlc3NFbGVtZW50KGVsZW1lbnQoKSkpCisgICAg
aWYgKGlzPEhUTUxQcm9ncmVzc0VsZW1lbnQ+KGVsZW1lbnQoKSkpCiAgICAgICAgIHJldHVybiBk
b3duY2FzdDxIVE1MUHJvZ3Jlc3NFbGVtZW50PihlbGVtZW50KCkpOwogCiAgICAgQVNTRVJUKGVs
ZW1lbnQoKS0+c2hhZG93SG9zdCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUYWJsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFi
bGUuY3BwCmluZGV4IDViNjE4NjdhODUyNDQxMjI4MDQxNWI3N2U2ODNmZDg0OTNmYTQzODIuLjU5
NzE3N2FhZDFmNzgyODllODIwODU5OTdhN2QzMmIzOWViOTYxNWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcApAQCAtMzUwLDcgKzM1MCw3IEBAIExheW91dFVuaXQg
UmVuZGVyVGFibGU6OmNvbnZlcnRTdHlsZUxvZ2ljYWxXaWR0aFRvQ29tcHV0ZWRXaWR0aChjb25z
dCBMZW5ndGgmIHN0CiAKICAgICAvLyBIVE1MIHRhYmxlcycgd2lkdGggc3R5bGVzIGFscmVhZHkg
aW5jbHVkZSBib3JkZXJzIGFuZCBwYWRkaW5ncywgYnV0IENTUyB0YWJsZXMnIHdpZHRoIHN0eWxl
cyBkbyBub3QuCiAgICAgTGF5b3V0VW5pdCBib3JkZXJzID0gMDsKLSAgICBib29sIGlzQ1NTVGFi
bGUgPSAhZWxlbWVudCgpIHx8ICFpc0hUTUxUYWJsZUVsZW1lbnQoZWxlbWVudCgpKTsKKyAgICBi
b29sIGlzQ1NTVGFibGUgPSAhZWxlbWVudCgpIHx8ICFpczxIVE1MVGFibGVFbGVtZW50PihlbGVt
ZW50KCkpOwogICAgIGlmIChpc0NTU1RhYmxlICYmIHN0eWxlTG9naWNhbFdpZHRoLmlzU3BlY2lm
aWVkKCkgJiYgc3R5bGVMb2dpY2FsV2lkdGguaXNQb3NpdGl2ZSgpICYmIHN0eWxlKCkuYm94U2l6
aW5nKCkgPT0gQ09OVEVOVF9CT1gpCiAgICAgICAgIGJvcmRlcnMgPSBib3JkZXJTdGFydCgpICsg
Ym9yZGVyRW5kKCkgKyAoY29sbGFwc2VCb3JkZXJzKCkgPyBMYXlvdXRVbml0KCkgOiBwYWRkaW5n
U3RhcnQoKSArIHBhZGRpbmdFbmQoKSk7CiAKQEAgLTM2NCw3ICszNjQsNyBAQCBMYXlvdXRVbml0
IFJlbmRlclRhYmxlOjpjb252ZXJ0U3R5bGVMb2dpY2FsSGVpZ2h0VG9Db21wdXRlZEhlaWdodChj
b25zdCBMZW5ndGgmCiAgICAgICAgIC8vIEhUTUwgdGFibGVzIHNpemUgYXMgdGhvdWdoIENTUyBo
ZWlnaHQgaW5jbHVkZXMgYm9yZGVyL3BhZGRpbmcsIENTUyB0YWJsZXMgZG8gbm90LgogICAgICAg
ICBMYXlvdXRVbml0IGJvcmRlcnMgPSBMYXlvdXRVbml0KCk7CiAgICAgICAgIC8vIEZJWE1FOiBX
ZSBjYW5ub3QgYXBwbHkgYm94LXNpemluZzogY29udGVudC1ib3ggb24gPHRhYmxlPiB3aGljaCBv
dGhlciBicm93c2VycyBhbGxvdy4KLSAgICAgICAgaWYgKChlbGVtZW50KCkgJiYgaXNIVE1MVGFi
bGVFbGVtZW50KGVsZW1lbnQoKSkpIHx8IHN0eWxlKCkuYm94U2l6aW5nKCkgPT0gQk9SREVSX0JP
WCkgeworICAgICAgICBpZiAoKGVsZW1lbnQoKSAmJiBpczxIVE1MVGFibGVFbGVtZW50PihlbGVt
ZW50KCkpKSB8fCBzdHlsZSgpLmJveFNpemluZygpID09IEJPUkRFUl9CT1gpIHsKICAgICAgICAg
ICAgIExheW91dFVuaXQgYm9yZGVyQW5kUGFkZGluZ0JlZm9yZSA9IGJvcmRlckJlZm9yZSgpICsg
KGNvbGxhcHNlQm9yZGVycygpID8gTGF5b3V0VW5pdCgpIDogcGFkZGluZ0JlZm9yZSgpKTsKICAg
ICAgICAgICAgIExheW91dFVuaXQgYm9yZGVyQW5kUGFkZGluZ0FmdGVyID0gYm9yZGVyQWZ0ZXIo
KSArIChjb2xsYXBzZUJvcmRlcnMoKSA/IExheW91dFVuaXQoKSA6IHBhZGRpbmdBZnRlcigpKTsK
ICAgICAgICAgICAgIGJvcmRlcnMgPSBib3JkZXJBbmRQYWRkaW5nQmVmb3JlICsgYm9yZGVyQW5k
UGFkZGluZ0FmdGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NW
R0ltYWdlQ2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlQ2Fj
aGUuY3BwCmluZGV4IDNmMjExMWY1M2Q0ZWViN2FkMDVjYjM2MDQ3NTlhNjQ4YzU4YjI3MjMuLjll
MWI3Yzg4M2FiZDEwZWE2ZWY2NGYwNTNkYjQ3MzliMTA1YzM2ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VDYWNoZS5jcHAKQEAgLTkyLDcgKzkyLDcgQEAgSW1h
Z2UqIFNWR0ltYWdlQ2FjaGU6OmltYWdlRm9yUmVuZGVyZXIoY29uc3QgUmVuZGVyT2JqZWN0KiBy
ZW5kZXJlcikKICAgICBSZWZQdHI8U1ZHSW1hZ2VGb3JDb250YWluZXI+IGltYWdlRm9yQ29udGFp
bmVyID0gaXQtPnZhbHVlOwogICAgIAogICAgIE5vZGUqIG5vZGUgPSByZW5kZXJlci0+bm9kZSgp
OwotICAgIGlmIChub2RlICYmIGlzSFRNTEltYWdlRWxlbWVudChub2RlKSkgeworICAgIGlmIChu
b2RlICYmIGlzPEhUTUxJbWFnZUVsZW1lbnQ+KG5vZGUpKSB7CiAgICAgICAgIGNvbnN0IEF0b21p
Y1N0cmluZyYgdXJsU3RyaW5nID0gZG93bmNhc3Q8SFRNTEltYWdlRWxlbWVudD4oKm5vZGUpLmlt
YWdlU291cmNlVVJMKCk7CiAgICAgICAgIFVSTCB1cmwgPSBub2RlLT5kb2N1bWVudCgpLmNvbXBs
ZXRlVVJMKHVybFN0cmluZyk7CiAgICAgICAgIGltYWdlRm9yQ29udGFpbmVyLT5zZXRVUkwodXJs
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCBhNWRkZTAzYTMwYjE4YjUz
YzMzNjcxNDUyZGEzODkzZTc5Mjg3YzIxLi5kMmFlMTMwYzlmNDIwNDBiYTVjMmViYWQxYzNkOGFh
NjY2MmQzMmIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC0xOTE4LDcg
KzE5MTgsNyBAQCB2b2lkIEludGVybmFsczo6dXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxl
c2hlZXRzQW5kUnVuUG9zdExheW91dFRhc2tzKE5vZGUqCiAgICAgICAgIGRvY3VtZW50ID0gY29u
dGV4dERvY3VtZW50KCk7CiAgICAgZWxzZSBpZiAobm9kZS0+aXNEb2N1bWVudE5vZGUoKSkKICAg
ICAgICAgZG9jdW1lbnQgPSB0b0RvY3VtZW50KG5vZGUpOwotICAgIGVsc2UgaWYgKGlzSFRNTElG
cmFtZUVsZW1lbnQobm9kZSkpCisgICAgZWxzZSBpZiAoaXM8SFRNTElGcmFtZUVsZW1lbnQ+KG5v
ZGUpKQogICAgICAgICBkb2N1bWVudCA9IGRvd25jYXN0PEhUTUxJRnJhbWVFbGVtZW50Pigqbm9k
ZSkuY29udGVudERvY3VtZW50KCk7CiAgICAgZWxzZSB7CiAgICAgICAgIGVjID0gVHlwZUVycm9y
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNl
ckxpYnhtbDIuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNl
ckxpYnhtbDIuY3BwCmluZGV4IGMzN2NmODBlZGIwYmZhOGExYmZkYzU2NTlhYWJlZTFhNzEwOTMy
YWIuLjhhZTUxMWRhOGUzNGM2NTY0NGYwNjIxYjk4N2FlMDFmYTk2MWE0N2QgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5j
cHAKQEAgLTg1MCw3ICs4NTAsNyBAQCB2b2lkIFhNTERvY3VtZW50UGFyc2VyOjpzdGFydEVsZW1l
bnROcyhjb25zdCB4bWxDaGFyKiB4bWxMb2NhbE5hbWUsIGNvbnN0IHhtbENoYQogICAgICAgICBy
ZXR1cm47CiAKICNpZiBFTkFCTEUoVEVNUExBVEVfRUxFTUVOVCkKLSAgICBpZiAoaXNIVE1MVGVt
cGxhdGVFbGVtZW50KCpuZXdFbGVtZW50KSkKKyAgICBpZiAoaXM8SFRNTFRlbXBsYXRlRWxlbWVu
dD4oKm5ld0VsZW1lbnQpKQogICAgICAgICBwdXNoQ3VycmVudE5vZGUoZG93bmNhc3Q8SFRNTFRl
bXBsYXRlRWxlbWVudD4oKm5ld0VsZW1lbnQpLmNvbnRlbnQoKSk7CiAgICAgZWxzZQogICAgICAg
ICBwdXNoQ3VycmVudE5vZGUobmV3RWxlbWVudC5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L3dpbi9ET01Db3JlQ2xhc3Nlcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9ET01Db3Jl
Q2xhc3Nlcy5jcHAKaW5kZXggOWZjM2NlNmIxY2U5MzhjNWUwZmY1MDRkZDIwYTcxOTlhMjZlZTJh
My4uMzM3Y2RhMTkxOWMyMmQyMzIyZWY3MDgwNDE0MjVmMTk0OGE5YjE3YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC93aW4vRE9NQ29yZUNsYXNzZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
d2luL0RPTUNvcmVDbGFzc2VzLmNwcApAQCAtMTUwMCw3ICsxNTAwLDcgQEAgSURPTUVsZW1lbnQq
IERPTUVsZW1lbnQ6OmNyZWF0ZUluc3RhbmNlKFdlYkNvcmU6OkVsZW1lbnQqIGUpCiAgICAgSFJF
U1VMVCBocjsKICAgICBJRE9NRWxlbWVudCogZG9tRWxlbWVudCA9IDA7CiAKLSAgICBpZiAoaXNI
VE1MRm9ybUVsZW1lbnQoZSkpIHsKKyAgICBpZiAoV2ViQ29yZTo6aXM8V2ViQ29yZTo6SFRNTEZv
cm1FbGVtZW50PihlKSkgewogICAgICAgICBET01IVE1MRm9ybUVsZW1lbnQqIG5ld0VsZW1lbnQg
PSBuZXcgRE9NSFRNTEZvcm1FbGVtZW50KGUpOwogICAgICAgICBociA9IG5ld0VsZW1lbnQtPlF1
ZXJ5SW50ZXJmYWNlKElJRF9JRE9NRWxlbWVudCwgKHZvaWQqKikmZG9tRWxlbWVudCk7CiAgICAg
fSBlbHNlIGlmIChlLT5oYXNUYWdOYW1lKGlmcmFtZVRhZykpIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvd2luL0RPTUhUTUxDbGFzc2VzLmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL0RPTUhU
TUxDbGFzc2VzLmNwcAppbmRleCA3ZmZhZWFjMjFiOTg4M2JhYzk5ZTI4OTQ1ODhhNzJkOGQ4Mjg1
NmUxLi4xZDFkMjQwNjNjMzYxYjViNmM4MzJlODU2N2EyNmU0NWNiYWQzNzBiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L3dpbi9ET01IVE1MQ2xhc3Nlcy5jcHAKKysrIGIvU291cmNlL1dlYktp
dC93aW4vRE9NSFRNTENsYXNzZXMuY3BwCkBAIC01NTksNyArNTU5LDcgQEAgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBET01IVE1MRm9ybUVsZW1lbnQ6OnNldEFjY2VwdENoYXJzZXQoCiBIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIERPTUhUTUxGb3JtRWxlbWVudDo6YWN0aW9uKCAKICAgICAg
ICAgLyogW3JldHZhbF1bb3V0XSAqLyBCU1RSKiByZXN1bHQpCiB7Ci0gICAgQVNTRVJUKG1fZWxl
bWVudCAmJiBpc0hUTUxGb3JtRWxlbWVudChtX2VsZW1lbnQpKTsKKyAgICBBU1NFUlQobV9lbGVt
ZW50ICYmIGlzPEhUTUxGb3JtRWxlbWVudD4obV9lbGVtZW50KSk7CiAgICAgV1RGOjpTdHJpbmcg
YWN0aW9uU3RyaW5nID0gZG93bmNhc3Q8SFRNTEZvcm1FbGVtZW50PigqbV9lbGVtZW50KS5hY3Rp
b24oKTsKICAgICAqcmVzdWx0ID0gQlN0cmluZyhhY3Rpb25TdHJpbmcpLnJlbGVhc2UoKTsKICAg
ICByZXR1cm4gU19PSzsKQEAgLTU4OSw3ICs1ODksNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIERPTUhUTUxGb3JtRWxlbWVudDo6c2V0RW5jdHlwZSgKIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgRE9NSFRNTEZvcm1FbGVtZW50OjptZXRob2QoIAogICAgICAgICAvKiBbcmV0dmFsXVtv
dXRdICovIEJTVFIqIHJlc3VsdCkKIHsKLSAgICBBU1NFUlQobV9lbGVtZW50ICYmIGlzSFRNTEZv
cm1FbGVtZW50KG1fZWxlbWVudCkpOworICAgIEFTU0VSVChtX2VsZW1lbnQgJiYgaXM8SFRNTEZv
cm1FbGVtZW50PihtX2VsZW1lbnQpKTsKICAgICBXVEY6OlN0cmluZyBtZXRob2RTdHJpbmcgPSBk
b3duY2FzdDxIVE1MRm9ybUVsZW1lbnQ+KCptX2VsZW1lbnQpLm1ldGhvZCgpOwogICAgICpyZXN1
bHQgPSBCU3RyaW5nKG1ldGhvZFN0cmluZykucmVsZWFzZSgpOwogICAgIHJldHVybiBTX09LOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vV2ViRnJhbWUuY3BwIGIvU291cmNlL1dlYktp
dC93aW4vV2ViRnJhbWUuY3BwCmluZGV4IGUzMzA0OGFkODA3MzE2YTg1OTlmOGQwYzczN2ZjMDcw
YTMwN2NhOGEuLmM1NzUyMmE3NjRlYzNjMTllYzI2NmE3NGVjNTdmODY1ODE5YzEzNmYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L3dpbi9XZWJGcmFtZS5jcHAKQEAgLTIwMiw3ICsyMDIsNyBAQCBzdGF0aWMgSFRNTEZvcm1FbGVt
ZW50ICpmb3JtRWxlbWVudEZyb21ET01FbGVtZW50KElET01FbGVtZW50ICplbGVtZW50KQogICAg
ICAgICBFbGVtZW50KiBlbGU7CiAgICAgICAgIGhyID0gZWxlUHJpdi0+Y29yZUVsZW1lbnQoKHZv
aWQqKikmZWxlKTsKICAgICAgICAgZWxlUHJpdi0+UmVsZWFzZSgpOwotICAgICAgICBpZiAoU1VD
Q0VFREVEKGhyKSAmJiBlbGUgJiYgaXNIVE1MRm9ybUVsZW1lbnQoZWxlKSkKKyAgICAgICAgaWYg
KFNVQ0NFRURFRChocikgJiYgZWxlICYmIGlzPEhUTUxGb3JtRWxlbWVudD4oZWxlKSkKICAgICAg
ICAgICAgIHJldHVybiBkb3duY2FzdDxIVE1MRm9ybUVsZW1lbnQ+KGVsZSk7CiAgICAgfQogICAg
IHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlLmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlTm9kZUhh
bmRsZS5jcHAKaW5kZXggY2VkOTBhYzZlMWFlNGUxYWFlOWU4ZDYxZGM4ZDJjNzYwMGU5NmY1MS4u
MzJlMTg3YmNjOWJlMWE2NjkzZDcwM2M4ZWZlODBmNTM2YjE2OTBmNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVO
b2RlSGFuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0RPTS9JbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGUuY3BwCkBAIC0yNzYsNyArMjc2LDcgQEAg
UGFzc1JlZlB0cjxXZWJGcmFtZT4gSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlOjpodG1sRnJhbWVF
bGVtZW50Q29udGVudEZyYW1lKCkKIAogUGFzc1JlZlB0cjxXZWJGcmFtZT4gSW5qZWN0ZWRCdW5k
bGVOb2RlSGFuZGxlOjpodG1sSUZyYW1lRWxlbWVudENvbnRlbnRGcmFtZSgpCiB7Ci0gICAgaWYg
KCFpc0hUTUxJRnJhbWVFbGVtZW50KCptX25vZGUpKQorICAgIGlmICghaXM8SFRNTElGcmFtZUVs
ZW1lbnQ+KCptX25vZGUpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIEZyYW1lKiBm
cmFtZSA9IGRvd25jYXN0PEhUTUxJRnJhbWVFbGVtZW50PigqbV9ub2RlKS5jb250ZW50RnJhbWUo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFt
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCmlu
ZGV4IDM3MmRlNDNlMmFmNGE3MDg1ZDQ4MmJjMjgyMmFjZjRmYzhkZTk2YTYuLmQ5YWRjYzYxNjkz
ZTNlNTliNzM3NDFmOTk0OTQzZGMyNGVmMWE2ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcApAQCAtNjE1LDcgKzYxNSw3IEBAIGJvb2wgV2Vi
RnJhbWU6OmNvbnRhaW5zQW55Rm9ybUVsZW1lbnRzKCkgY29uc3QKICAgICBmb3IgKE5vZGUqIG5v
ZGUgPSBkb2N1bWVudC0+ZG9jdW1lbnRFbGVtZW50KCk7IG5vZGU7IG5vZGUgPSBOb2RlVHJhdmVy
c2FsOjpuZXh0KG5vZGUpKSB7CiAgICAgICAgIGlmICghbm9kZS0+aXNFbGVtZW50Tm9kZSgpKQog
ICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGlmIChpc0hUTUxGb3JtRWxlbWVudChub2Rl
KSkKKyAgICAgICAgaWYgKGlzPEhUTUxGb3JtRWxlbWVudD4obm9kZSkpCiAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IGNjYzYzYjUzMTQ2NTM4ODk4NTg5
ZjNhMmJlODVmNjQ0OTc5NjlhOTcuLmI1M2RlYzIwNThlN2JjOWRiNjBlODk3OTgxNGMwMDMxZmFi
MGM4Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHAKQEAgLTQ2MDksNyArNDYwOSw3IEBAIHZvaWQgV2ViUGFnZTo6ZGV0ZXJtaW5lUHJpbWFyeVNu
YXBzaG90dGVkUGx1Z0luKCkKICAgICAgICAgICAgIGluZmxhdGVkUGx1Z2luUmVjdC5pbmZsYXRl
WSh5T2Zmc2V0KTsKIAogICAgICAgICAgICAgaWYgKGVsZW1lbnQgIT0gJnBsdWdJbkltYWdlRWxl
bWVudCkgewotICAgICAgICAgICAgICAgIGlmICghKGlzSFRNTEltYWdlRWxlbWVudChlbGVtZW50
KQorICAgICAgICAgICAgICAgIGlmICghKGlzPEhUTUxJbWFnZUVsZW1lbnQ+KGVsZW1lbnQpCiAg
ICAgICAgICAgICAgICAgICAgICYmIGluZmxhdGVkUGx1Z2luUmVjdC5jb250YWlucyhlbGVtZW50
UmVjdFJlbGF0aXZlVG9Ub3BEb2N1bWVudCkKICAgICAgICAgICAgICAgICAgICAgJiYgZWxlbWVu
dFJlY3RSZWxhdGl2ZVRvVG9wRG9jdW1lbnQud2lkdGgoKSA+IHBsdWdpblJlbmRlckJveC53aWR0
aCgpICogbWluaW11bU92ZXJsYXBwaW5nSW1hZ2VUb1BsdWdpbkRpbWVuc2lvblNjYWxlCiAgICAg
ICAgICAgICAgICAgICAgICYmIGVsZW1lbnRSZWN0UmVsYXRpdmVUb1RvcERvY3VtZW50LmhlaWdo
dCgpID4gcGx1Z2luUmVuZGVyQm94LmhlaWdodCgpICogbWluaW11bU92ZXJsYXBwaW5nSW1hZ2VU
b1BsdWdpbkRpbWVuc2lvblNjYWxlKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQppbmRleCBlN2FmMWFkNjYyYmNkMzdlNGRlODM5
YTE2NmNlMzE4NDg0MzNkOGMwLi5iNjlmODY2NTQ4NzRkZmUxODg5MDUxYTA3NDNlMjI0ODg5OWY3
ZGNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dl
YlBhZ2VJT1MubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9X
ZWJQYWdlSU9TLm1tCkBAIC0yMDgwLDcgKzIwODAsNyBAQCB2b2lkIFdlYlBhZ2U6OmdldEFzc2lz
dGVkTm9kZUluZm9ybWF0aW9uKEFzc2lzdGVkTm9kZUluZm9ybWF0aW9uJiBpbmZvcm1hdGlvbikK
ICAgICAgICAgICAgIGlmIChpczxIVE1MT3B0aW9uRWxlbWVudD4oaXRlbSkpIHsKICAgICAgICAg
ICAgICAgICBIVE1MT3B0aW9uRWxlbWVudCYgb3B0aW9uID0gZG93bmNhc3Q8SFRNTE9wdGlvbkVs
ZW1lbnQ+KCppdGVtKTsKICAgICAgICAgICAgICAgICBpbmZvcm1hdGlvbi5zZWxlY3RPcHRpb25z
LmFwcGVuZChPcHRpb25JdGVtKG9wdGlvbi50ZXh0KCksIGZhbHNlLCBwYXJlbnRHcm91cElELCBv
cHRpb24uc2VsZWN0ZWQoKSwgb3B0aW9uLmZhc3RIYXNBdHRyaWJ1dGUoV2ViQ29yZTo6SFRNTE5h
bWVzOjpkaXNhYmxlZEF0dHIpKSk7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKGlzSFRNTE9wdEdy
b3VwRWxlbWVudChpdGVtKSkgeworICAgICAgICAgICAgfSBlbHNlIGlmIChpczxIVE1MT3B0R3Jv
dXBFbGVtZW50PihpdGVtKSkgewogICAgICAgICAgICAgICAgIEhUTUxPcHRHcm91cEVsZW1lbnQm
IGdyb3VwID0gZG93bmNhc3Q8SFRNTE9wdEdyb3VwRWxlbWVudD4oKml0ZW0pOwogICAgICAgICAg
ICAgICAgIHBhcmVudEdyb3VwSUQrKzsKICAgICAgICAgICAgICAgICBpbmZvcm1hdGlvbi5zZWxl
Y3RPcHRpb25zLmFwcGVuZChPcHRpb25JdGVtKGdyb3VwLmdyb3VwTGFiZWxUZXh0KCksIHRydWUs
IDAsIGZhbHNlLCBncm91cC5mYXN0SGFzQXR0cmlidXRlKFdlYkNvcmU6OkhUTUxOYW1lczo6ZGlz
YWJsZWRBdHRyKSkpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>238662</attachid>
            <date>2014-09-25 10:29:30 -0700</date>
            <delta_ts>2014-09-25 10:30:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-137103-20140925102930.patch</filename>
            <type>text/plain</type>
            <size>122850</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTczOTcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2FhMWYzMWU0NTIwYWQ0
M2ZjNjNmNDczMmY5ZDVlNGVmMTlmM2I4OC4uYmVhNzg0MTk0ZWJhZTY1Y2VmZDU1YmRjMTNiNDlk
Yjk2YWU0YTExZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0NyBAQAorMjAxNC0wOS0yNCAgQ2hy
aXN0b3BoZSBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIGlzPEhUTUwq
RWxlbWVudD4oKSBpbnN0ZWFkIG9mIGlzSFRNTCpFbGVtZW50KCkgLSBQYXJ0IDIKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNzEwMworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSBpczxIVE1MKkVsZW1l
bnQ+KCkgaW5zdGVhZCBvZiBpc0hUTUwqRWxlbWVudCgpIGFuZCBkcm9wIHN1cHBvcnQgZm9yCisg
ICAgICAgIHRoZSBnZW5lcmF0ZWQgaXNIVE1MKkVsZW1lbnQoKSBtYWNyb3MuCisKKyAgICAgICAg
Tm8gbmV3IHRlc3RzLCBubyBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAgKiBhY2Nlc3NpYmls
aXR5L0FYT2JqZWN0Q2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6
Zm9jdXNlZFVJRWxlbWVudEZvclBhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6QVhPYmplY3RDYWNo
ZTo6Z2V0T3JDcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6aGFuZGxl
QXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpsYWJl
bENoYW5nZWQpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUxpc3RCb3hP
cHRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eUxpc3RCb3hPcHRpb246
OmlzRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlv
bjo6c3RyaW5nVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eUxpc3RCb3hP
cHRpb246Omxpc3RCb3hPcHRpb25QYXJlbnROb2RlKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlOb2RlT2JqZWN0OjpkZXRlcm1pbmVBY2Nlc3NpYmlsaXR5Um9sZSk6CisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6aXNOYXRpdmVJbWFnZSk6CisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6YW5jaG9yRWxlbWVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6YWx0ZXJuYXRpdmVUZXh0KToK
KyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6YW5jaG9yRWxlbWVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpsYWJlbEVs
ZW1lbnRDb250YWluZXIpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9i
amVjdDo6aW50ZXJuYWxMaW5rRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmls
aXR5UmVuZGVyT2JqZWN0Ojpjb21wdXRlQWNjZXNzaWJpbGl0eUlzSWdub3JlZCk6CisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojp1cmwpOgorICAgICAgICAoV2Vi
Q29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6Z2V0RG9jdW1lbnRMaW5rcyk6CisgICAg
ICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjphY2Nlc3NpYmlsaXR5SW1h
Z2VNYXBIaXRUZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3Q6OmFjY2Vzc2liaWxpdHlIaXRUZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3Q6OmRldGVybWluZUFjY2Vzc2liaWxpdHlSb2xlKToKKyAgICAgICAgKFdl
YkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnN0cmluZ1ZhbHVlRm9yTVNBQSk6Cisg
ICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojppc0xpbmtlZCk6Cisg
ICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlOjp0YWJsZUVsZW1lbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlOjppc1RhYmxlRXhwb3NhYmxlVGhyb3VnaEFjY2Vzc2li
aWxpdHkpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlOjp0aXRsZSk6Cisg
ICAgICAgICogYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZVRhYmxl
LmNwcDoKKyAgICAgICAgKHdlYmtpdEFjY2Vzc2libGVUYWJsZUdldENhcHRpb24pOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTSFRNTERvY3VtZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkpTSFRNTERvY3VtZW50OjpuYW1lR2V0dGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U05vZGVDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNSZWFjaGFibGVGcm9tRE9NKToK
KyAgICAgICAgKiBjc3MvQ1NTRGVmYXVsdFN0eWxlU2hlZXRzLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmVsZW1lbnRDYW5Vc2VTaW1wbGVEZWZhdWx0U3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTRGVmYXVsdFN0eWxlU2hlZXRzOjplbnN1cmVEZWZhdWx0U3R5bGVTaGVldHNGb3JFbGVtZW50
KToKKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpp
c0FjY2VwdGFibGVDU1NTdHlsZVNoZWV0UGFyZW50KToKKyAgICAgICAgKiBjc3MvU3R5bGVSZXNv
bHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjphZGp1c3RSZW5kZXJT
dHlsZSk6CisgICAgICAgICogY3NzL1N0eWxlU2hlZXRMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlN0eWxlU2hlZXRMaXN0OjpnZXROYW1lZEl0ZW0pOgorICAgICAgICAqIGRvbS9DdXJyZW50
U2NyaXB0SW5jcmVtZW50ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkN1cnJlbnRTY3JpcHRJbmNy
ZW1lbnRlcjo6Q3VycmVudFNjcmlwdEluY3JlbWVudGVyKToKKyAgICAgICAgKiBkb20vRGF0YVRy
YW5zZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFUcmFuc2Zlcjo6c2V0RHJhZ0ltYWdl
KToKKyAgICAgICAgKiBkb20vRG9jdW1lbnRPcmRlcmVkTWFwLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmtleU1hdGNoZXNNYXBOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OmtleU1hdGNoZXNMb3dl
cmNhc2VkTWFwTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjprZXlNYXRjaGVzTG93ZXJjYXNlZFVz
ZW1hcCk6CisgICAgICAgIChXZWJDb3JlOjprZXlNYXRjaGVzTGFiZWxGb3JBdHRyaWJ1dGUpOgor
ICAgICAgICAqIGRvbS9Eb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkRvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb246OmNvbGxlY3RBY3RpdmVTdHls
ZVNoZWV0cyk6CisgICAgICAgICogZG9tL05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm9k
ZTo6ZW5jbG9zaW5nTGlua0V2ZW50UGFyZW50T3JTZWxmKToKKyAgICAgICAgKiBkb20vUG9zaXRp
b24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZW5kc09mTm9kZUFyZVZpc3VhbGx5RGlzdGluY3RQ
b3NpdGlvbnMpOgorICAgICAgICAqIGRvbS9TY3JpcHRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OnRvU2NyaXB0RWxlbWVudElmUG9zc2libGUpOgorICAgICAgICAqIGRvbS9WaXNpdGVk
TGlua1N0YXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmxpbmtIYXNoRm9yRWxlbWVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpWaXNpdGVkTGlua1N0YXRlOjpkZXRlcm1pbmVMaW5rU3RhdGVTbG93
Q2FzZSk6CisgICAgICAgICogZG9tL21ha2VfbmFtZXMucGw6CisgICAgICAgIChwcmludFR5cGVI
ZWxwZXJzKToKKyAgICAgICAgKiBlZGl0aW5nL0RlbGV0ZVNlbGVjdGlvbkNvbW1hbmQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RGVsZXRlU2VsZWN0aW9uQ29tbWFuZDo6aGFuZGxlR2VuZXJhbERl
bGV0ZSk6CisgICAgICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
aW1hZ2VFbGVtZW50RnJvbUltYWdlRG9jdW1lbnQpOgorICAgICAgICAqIGVkaXRpbmcvRnJhbWVT
ZWxlY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2NhbkZvckZvcm0pOgorICAgICAgICAq
IGVkaXRpbmcvSW5zZXJ0TGluZUJyZWFrQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNlcnRMaW5lQnJlYWtDb21tYW5kOjpkb0FwcGx5KToKKyAgICAgICAgKiBlZGl0aW5nL0luc2Vy
dFBhcmFncmFwaFNlcGFyYXRvckNvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zZXJ0
UGFyYWdyYXBoU2VwYXJhdG9yQ29tbWFuZDo6ZG9BcHBseSk6CisgICAgICAgICogZWRpdGluZy9S
ZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZW1vdmVIZWFk
Q29udGVudHMpOgorICAgICAgICAqIGVkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbToKKyAg
ICAgICAgKEhUTUxDb252ZXJ0ZXI6Ol9wcm9jZXNzRWxlbWVudCk6CisgICAgICAgICogZWRpdGlu
Zy9odG1sZWRpdGluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjppc05vblRhYmxlQ2VsbEhUTUxC
bG9ja0VsZW1lbnQpOgorICAgICAgICAqIGVkaXRpbmcvbWFya3VwLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmFuY2VzdG9yVG9SZXRhaW5TdHJ1Y3R1cmVBbmRBcHBlYXJhbmNlRm9yQmxvY2spOgor
ICAgICAgICAoV2ViQ29yZTo6Y29sbGVjdEVsZW1lbnRzVG9SZW1vdmVGcm9tRnJhZ21lbnQpOgor
ICAgICAgICAqIGh0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RlRQRGlyZWN0b3J5RG9jdW1lbnRQYXJzZXI6OmxvYWREb2N1bWVudFRlbXBsYXRlKToKKyAg
ICAgICAgKiBodG1sL0Zvcm1Bc3NvY2lhdGVkRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpGb3JtQXNzb2NpYXRlZEVsZW1lbnQ6OmZpbmRBc3NvY2lhdGVkRm9ybSk6CisgICAgICAgICog
aHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjphcHBlbmRTZXJ2
ZXJNYXBNb3VzZVBvc2l0aW9uKToKKyAgICAgICAgKiBodG1sL0hUTUxBcmVhRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MQXJlYUVsZW1lbnQ6OmltYWdlRWxlbWVudCk6CisgICAg
ICAgICogaHRtbC9IVE1MRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTERvY3Vt
ZW50OjpiZ0NvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxEb2N1bWVudDo6c2V0QmdDb2xv
cik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRG9jdW1lbnQ6OmZnQ29sb3IpOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTERvY3VtZW50OjpzZXRGZ0NvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxEb2N1bWVudDo6YWxpbmtDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRG9jdW1lbnQ6
OnNldEFsaW5rQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTERvY3VtZW50OjpsaW5rQ29s
b3IpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTERvY3VtZW50OjpzZXRMaW5rQ29sb3IpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTERvY3VtZW50Ojp2bGlua0NvbG9yKToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxEb2N1bWVudDo6c2V0VmxpbmtDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
RG9jdW1lbnQ6OmlzRnJhbWVTZXQpOgorICAgICAgICAqIGh0bWwvSFRNTEVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTEVsZW1lbnQ6OnNldElubmVySFRNTCk6CisgICAgICAgICog
aHRtbC9IVE1MRmllbGRTZXRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnVwZGF0ZUZy
b21Db250cm9sRWxlbWVudHNBbmNlc3RvckRpc2FibGVkU3RhdGVVbmRlcik6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MRmllbGRTZXRFbGVtZW50OjpkaXNhYmxlZFN0YXRlQ2hhbmdlZCk6CisgICAg
ICAgICogaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OmNvbXB1dGVJc0Rpc2FibGVkQnlGaWVsZHNldEFuY2Vz
dG9yKToKKyAgICAgICAgKiBodG1sL0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uOjpIVE1MRm9ybUNvbnRy
b2xzQ29sbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUNvbnRyb2xzQ29sbGVj
dGlvbjo6Zm9ybUNvbnRyb2xFbGVtZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUNv
bnRyb2xzQ29sbGVjdGlvbjo6Zm9ybUltYWdlRWxlbWVudHMpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb246Om5hbWVkSXRlbSk6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbjo6dXBkYXRlTmFtZWRFbGVtZW50Q2FjaGUpOgor
ICAgICAgICAqIGh0bWwvSFRNTEZvcm1FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxGb3JtRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZCk6CisgICAgICAgICogaHRtbC9IVE1MRnJh
bWVFbGVtZW50QmFzZS5oOgorICAgICAgICAoV2ViQ29yZTo6aXNIVE1MRnJhbWVFbGVtZW50QmFz
ZSk6CisgICAgICAgICogaHRtbC9IVE1MSW1hZ2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTEltYWdlTG9hZGVyOjpkaXNwYXRjaExvYWRFdmVudCk6CisgICAgICAgICogaHRtbC9I
VE1MSW5wdXRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6
OmRhdGFMaXN0KToKKyAgICAgICAgKiBodG1sL0hUTUxMZWdlbmRFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxMZWdlbmRFbGVtZW50Ojp2aXJ0dWFsRm9ybSk6CisgICAgICAgICog
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVs
ZW1lbnQ6OnBhcnNlQXR0cmlidXRlKToKKyAgICAgICAgKiBodG1sL0hUTUxOYW1lQ29sbGVjdGlv
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXaW5kb3dOYW1lQ29sbGVjdGlvbjo6ZWxlbWVudE1h
dGNoZXNJZk5hbWVBdHRyaWJ1dGVNYXRjaCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudE5h
bWVDb2xsZWN0aW9uOjplbGVtZW50TWF0Y2hlcyk6CisgICAgICAgICogaHRtbC9IVE1MT3B0aW9u
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MT3B0aW9uRWxlbWVudDo6b3duZXJE
YXRhTGlzdEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE9wdGlvbkVsZW1lbnQ6OnRl
eHRJbmRlbnRlZFRvUmVzcGVjdEdyb3VwTGFiZWwpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE9w
dGlvbkVsZW1lbnQ6OmlzRGlzYWJsZWRGb3JtQ29udHJvbCk6CisgICAgICAgICogaHRtbC9IVE1M
U2VsZWN0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2VsZWN0RWxlbWVudDo6
cmVjYWxjTGlzdEl0ZW1zKToKKyAgICAgICAgKiBodG1sL0hUTUxUYWJsZUVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTFRhYmxlRWxlbWVudDo6Y2FwdGlvbik6CisgICAgICAgICog
aHRtbC9IVE1MVGFibGVQYXJ0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVGFi
bGVQYXJ0RWxlbWVudDo6ZmluZFBhcmVudFRhYmxlKToKKyAgICAgICAgKiBodG1sL0hUTUxUYWJs
ZVJvd0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRhYmxlUm93RWxlbWVudDo6
cm93SW5kZXgpOgorICAgICAgICAqIGh0bWwvSFRNTFRhYmxlUm93c0NvbGxlY3Rpb24uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTFRhYmxlUm93c0NvbGxlY3Rpb246OnJvd0FmdGVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxUYWJsZVJvd3NDb2xsZWN0aW9uOjpsYXN0Um93KToKKyAgICAg
ICAgKiBodG1sL0hUTUxUYWdOYW1lcy5pbjoKKyAgICAgICAgKiBodG1sL0xhYmVsc05vZGVMaXN0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxhYmVsc05vZGVMaXN0OjplbGVtZW50TWF0Y2hlcyk6
CisgICAgICAgICogaHRtbC9NZWRpYURvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRl
c2NlbmRlbnRWaWRlb0VsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6YW5jZXN0b3JWaWRlb0Vs
ZW1lbnQpOgorICAgICAgICAqIGh0bWwvUmFkaW9JbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmFkaW9JbnB1dFR5cGU6OmhhbmRsZUtleWRvd25FdmVudCk6CisgICAgICAgICogaHRt
bC9SYWRpb05vZGVMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJhZGlvTm9kZUxpc3Q6OlJh
ZGlvTm9kZUxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmFkaW9Ob2RlTGlzdDo6Y2hlY2tFbGVt
ZW50TWF0Y2hlc1JhZGlvTm9kZUxpc3RGaWx0ZXIpOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hU
TUxDb25zdHJ1Y3Rpb25TaXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Omhhc0ltcGxpZWRFbmRU
YWcpOgorICAgICAgICAoV2ViQ29yZTo6aW5zZXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxD
b25zdHJ1Y3Rpb25TaXRlOjppbnNlcnRIVE1MRm9ybUVsZW1lbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTENvbnN0cnVjdGlvblNpdGU6Omluc2VydFRleHROb2RlKToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxDb25zdHJ1Y3Rpb25TaXRlOjpvd25lckRvY3VtZW50Rm9yQ3VycmVudE5vZGUpOgor
ICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxFbGVtZW50U3RhY2suY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTE5hbWVzOjppc1Njb3BlTWFya2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxO
YW1lczo6aXNUYWJsZVNjb3BlTWFya2VyKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MVHJl
ZUJ1aWxkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpIVE1MVHJl
ZUJ1aWxkZXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzU3Rh
cnRUYWcpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpyZXNldEluc2VydGlv
bk1vZGVBcHByb3ByaWF0ZWx5KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6
cHJvY2Vzc0VuZFRhZyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OnByb2Nl
c3NDaGFyYWN0ZXJCdWZmZXIpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JET01BZ2Vu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6YnVpbGRPYmplY3RG
b3JOb2RlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JTdHlsZVNoZWV0OjppbmxpbmVTdHlsZVNoZWV0VGV4
dCk6CisgICAgICAgICogcGFnZS9EcmFnQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpEcmFnQ29udHJvbGxlcjo6ZHJhZ2dhYmxlRWxlbWVudCk6CisgICAgICAgICogcGFnZS9Gb2N1
c0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9jdXNDb250cm9sbGVyOjphZHZh
bmNlRm9jdXNEaXJlY3Rpb25hbGx5KToKKyAgICAgICAgKiBwYWdlL1BhZ2VTZXJpYWxpemVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VTZXJpYWxpemVyOjpzZXJpYWxpemVGcmFtZSk6Cisg
ICAgICAgICogcGFnZS9TcGF0aWFsTmF2aWdhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpG
b2N1c0NhbmRpZGF0ZTo6Rm9jdXNDYW5kaWRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6YXJlRWxl
bWVudHNPblNhbWVMaW5lKToKKyAgICAgICAgKiBwYWdlL2lvcy9GcmFtZUlPUy5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OmFuY2VzdG9yUmVzcG9uZGluZ1RvQ2xpY2tFdmVudHMpOgorICAgICAgICAq
IHJlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhpdFRlc3RS
ZXN1bHQ6OmFsdERpc3BsYXlTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6SGl0VGVzdFJlc3Vs
dDo6bWVkaWFTdXBwb3J0c0Z1bGxzY3JlZW4pOgorICAgICAgICAoV2ViQ29yZTo6SGl0VGVzdFJl
c3VsdDo6bWVkaWFFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQ6OmVu
dGVyRnVsbHNjcmVlbkZvclZpZGVvKToKKyAgICAgICAgKFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQ6
Om1lZGlhSXNWaWRlbyk6CisgICAgICAgIChXZWJDb3JlOjpIaXRUZXN0UmVzdWx0Ojppc0xpdmVM
aW5rKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQ291bnRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpwbGFuQ291bnRlcik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckltYWdlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjpSZW5kZXJJbWFnZSk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJJbWFnZTo6cGFpbnRBcmVhRWxlbWVudEZvY3VzUmluZyk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZTo6cGFpbnRJbnRvUmVjdCk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJJbWFnZTo6aW1hZ2VNYXApOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1h
Z2U6OnVwZGF0ZUFsdFRleHQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxpc3RCb3g6OnVwZGF0ZUZyb21FbGVtZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxpc3RCb3g6OnBhaW50SXRlbUZvcmVncm91bmQpOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJNYXJxdWVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlck1hcnF1ZWU6Om1hcnF1ZWVTcGVlZCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ck1lbnVMaXN0LmNwcDoKKyAgICAgICAgKFJlbmRlck1lbnVMaXN0OjppdGVtVGV4dCk6CisgICAg
ICAgIChSZW5kZXJNZW51TGlzdDo6aXRlbUlzRW5hYmxlZCk6CisgICAgICAgIChSZW5kZXJNZW51
TGlzdDo6aXRlbUlzTGFiZWwpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJNZXRlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNZXRlcjo6bWV0ZXJFbGVtZW50KToKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9i
amVjdDo6c2hvdWxkUmVzcGVjdEltYWdlT3JpZW50YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyT2JqZWN0OjpnZXRUZXh0RGVjb3JhdGlvbkNvbG9ycyk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJPYmplY3Q6Om9mZnNldFBhcmVudCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
clByb2dyZXNzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclByb2dyZXNzOjpwcm9ncmVz
c0VsZW1lbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUYWJsZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJUYWJsZTo6Y29udmVydFN0eWxlTG9naWNhbFdpZHRoVG9Db21wdXRl
ZFdpZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlOjpjb252ZXJ0U3R5bGVMb2dp
Y2FsSGVpZ2h0VG9Db21wdXRlZEhlaWdodCk6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL1NWR0lt
YWdlQ2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2VDYWNoZTo6aW1hZ2VGb3JS
ZW5kZXJlcik6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SW50ZXJuYWxzOjp1cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHNBbmRS
dW5Qb3N0TGF5b3V0VGFza3MpOgorICAgICAgICAqIHhtbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJz
ZXJMaWJ4bWwyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhNTERvY3VtZW50UGFyc2VyOjpzdGFy
dEVsZW1lbnROcyk6CisKIDIwMTQtMDktMjUgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNv
bT4KIAogICAgICAgICBVbnJldmlld2VkIGlPUyBidWlsZCBmaXggYWZ0ZXIgcjE3Mzk0NC4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvd2lu
L0NoYW5nZUxvZwppbmRleCA0MDQ2MGRmM2FmMzZhY2NlN2M5MTI1MDllNDA2MTI5NGQ3ZTE2YmQ2
Li5lNTUzMDM0MTdkNzkyNDQ5ZWE5Y2E1MDkyYWQ3MDE4M2QyNWEwYjdmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdl
TG9nCkBAIC0xLDUgKzEsMjIgQEAKIDIwMTQtMDktMjQgIENocmlzdG9waGUgRHVtZXogIDxjZHVt
ZXpAYXBwbGUuY29tPgogCisgICAgICAgIFVzZSBpczxIVE1MKkVsZW1lbnQ+KCkgaW5zdGVhZCBv
ZiBpc0hUTUwqRWxlbWVudCgpIC0gUGFydCAyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMzcxMDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBVc2UgaXM8SFRNTCpFbGVtZW50PigpIGluc3RlYWQgb2YgaXNI
VE1MKkVsZW1lbnQoKS4KKworICAgICAgICAqIERPTUNvcmVDbGFzc2VzLmNwcDoKKyAgICAgICAg
KERPTUVsZW1lbnQ6OmNyZWF0ZUluc3RhbmNlKToKKyAgICAgICAgKiBET01IVE1MQ2xhc3Nlcy5j
cHA6CisgICAgICAgIChET01IVE1MRm9ybUVsZW1lbnQ6OmFjdGlvbik6CisgICAgICAgIChET01I
VE1MRm9ybUVsZW1lbnQ6Om1ldGhvZCk6CisgICAgICAgICogV2ViRnJhbWUuY3BwOgorICAgICAg
ICAoZm9ybUVsZW1lbnRGcm9tRE9NRWxlbWVudCk6CisKKzIwMTQtMDktMjQgIENocmlzdG9waGUg
RHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCiAgICAgICAgIEFkZCBpbml0aWFsIGlzPD4oKSAv
IGRvd25jYXN0PD4oKSBzdXBwb3J0IGZvciBhbnkgdHlwZSBvZiBOb2RlcwogICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM3MDU2CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRl
eCBiNTAxZGE5MGRjYzRkZGRhYmFlOTAyNTVhYTQ3Y2E0NWZhMjgyNjFlLi5lNDIxZGMwMjZkNDNk
NmVkMGQ2MjZmMmFmNGZhMWE3ZjY0MjdkMWUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAK
KzIwMTQtMDktMjQgIENocmlzdG9waGUgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAg
ICAgIFVzZSBpczxIVE1MKkVsZW1lbnQ+KCkgaW5zdGVhZCBvZiBpc0hUTUwqRWxlbWVudCgpIC0g
UGFydCAyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MzcxMDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBV
c2UgaXM8SFRNTCpFbGVtZW50PigpIGluc3RlYWQgb2YgaXNIVE1MKkVsZW1lbnQoKS4KKworICAg
ICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlTm9kZUhh
bmRsZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlTm9kZUhhbmRsZTo6aHRt
bElGcmFtZUVsZW1lbnRDb250ZW50RnJhbWUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJGcmFtZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lOjpjb250YWluc0FueUZv
cm1FbGVtZW50cyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpkZXRlcm1pbmVQcmltYXJ5U25hcHNob3R0ZWRQbHVn
SW4pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0QXNzaXN0ZWROb2RlSW5mb3JtYXRpb24pOgorCiAy
MDE0LTA5LTI1ICBBbGJlcnRvIEdhcmNpYSAgPGJlcnRvQGlnYWxpYS5jb20+CiAKICAgICAgICAg
VW5yZXZpZXdlZCB0eXBvIGZpeC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQVhPYmplY3RDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FY
T2JqZWN0Q2FjaGUuY3BwCmluZGV4IGIwZWM1OWIyNTg0ZjdlYmI3NjU2ODQ0YWUxYzk1NWVlMjAx
MThkZDQuLjY3NDc1YzI3YmZjMDE1Nzg1YjlhMGMxMWMwNTFmYWUzM2ZjOGFmOGUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcApAQCAtMTc2LDcg
KzE3Niw3IEBAIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFYT2JqZWN0Q2FjaGU6OmZvY3VzZWRVSUVs
ZW1lbnRGb3JQYWdlKGNvbnN0IFBhZ2UqIHBhZ2UpCiAgICAgLy8gZ2V0IHRoZSBmb2N1c2VkIG5v
ZGUgaW4gdGhlIHBhZ2UKICAgICBEb2N1bWVudCogZm9jdXNlZERvY3VtZW50ID0gcGFnZS0+Zm9j
dXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCkuZG9jdW1lbnQoKTsKICAgICBFbGVt
ZW50KiBmb2N1c2VkRWxlbWVudCA9IGZvY3VzZWREb2N1bWVudC0+Zm9jdXNlZEVsZW1lbnQoKTsK
LSAgICBpZiAoZm9jdXNlZEVsZW1lbnQgJiYgaXNIVE1MQXJlYUVsZW1lbnQoZm9jdXNlZEVsZW1l
bnQpKQorICAgIGlmIChmb2N1c2VkRWxlbWVudCAmJiBpczxIVE1MQXJlYUVsZW1lbnQ+KGZvY3Vz
ZWRFbGVtZW50KSkKICAgICAgICAgcmV0dXJuIGZvY3VzZWRJbWFnZU1hcFVJRWxlbWVudChkb3du
Y2FzdDxIVE1MQXJlYUVsZW1lbnQ+KGZvY3VzZWRFbGVtZW50KSk7CiAKICAgICBBY2Nlc3NpYmls
aXR5T2JqZWN0KiBvYmogPSBmb2N1c2VkRG9jdW1lbnQtPmF4T2JqZWN0Q2FjaGUoKS0+Z2V0T3JD
cmVhdGUoZm9jdXNlZEVsZW1lbnQgPyBzdGF0aWNfY2FzdDxOb2RlKj4oZm9jdXNlZEVsZW1lbnQp
IDogZm9jdXNlZERvY3VtZW50KTsKQEAgLTM4Niw3ICszODYsNyBAQCBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0KiBBWE9iamVjdENhY2hlOjpnZXRPckNyZWF0ZShOb2RlKiBub2RlKQogCiAgICAgYm9vbCBp
bnNpZGVNZXRlckVsZW1lbnQgPSBmYWxzZTsKICNpZiBFTkFCTEUoTUVURVJfRUxFTUVOVCkKLSAg
ICBpbnNpZGVNZXRlckVsZW1lbnQgPSBpc0hUTUxNZXRlckVsZW1lbnQobm9kZS0+cGFyZW50RWxl
bWVudCgpKTsKKyAgICBpbnNpZGVNZXRlckVsZW1lbnQgPSBpczxIVE1MTWV0ZXJFbGVtZW50Pihu
b2RlLT5wYXJlbnRFbGVtZW50KCkpOwogI2VuZGlmCiAgICAgCiAgICAgaWYgKCFpbkNhbnZhc1N1
YnRyZWUgJiYgIWlzSGlkZGVuICYmICFpbnNpZGVNZXRlckVsZW1lbnQpCkBAIC05MTcsNyArOTE3
LDcgQEAgdm9pZCBBWE9iamVjdENhY2hlOjpoYW5kbGVBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1
YWxpZmllZE5hbWUmIGF0dHJOYW1lLCBFbGVtZW4KICAgICAgICAgaGFuZGxlQXJpYVJvbGVDaGFu
Z2VkKGVsZW1lbnQpOwogICAgIGVsc2UgaWYgKGF0dHJOYW1lID09IGFsdEF0dHIgfHwgYXR0ck5h
bWUgPT0gdGl0bGVBdHRyKQogICAgICAgICB0ZXh0Q2hhbmdlZChlbGVtZW50KTsKLSAgICBlbHNl
IGlmIChhdHRyTmFtZSA9PSBmb3JBdHRyICYmIGlzSFRNTExhYmVsRWxlbWVudChlbGVtZW50KSkK
KyAgICBlbHNlIGlmIChhdHRyTmFtZSA9PSBmb3JBdHRyICYmIGlzPEhUTUxMYWJlbEVsZW1lbnQ+
KGVsZW1lbnQpKQogICAgICAgICBsYWJlbENoYW5nZWQoZWxlbWVudCk7CiAKICAgICBpZiAoIWF0
dHJOYW1lLmxvY2FsTmFtZSgpLnN0cmluZygpLnN0YXJ0c1dpdGgoImFyaWEtIikpCkBAIC05NDcs
NyArOTQ3LDcgQEAgdm9pZCBBWE9iamVjdENhY2hlOjpoYW5kbGVBdHRyaWJ1dGVDaGFuZ2VkKGNv
bnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lLCBFbGVtZW4KIAogdm9pZCBBWE9iamVjdENhY2hl
OjpsYWJlbENoYW5nZWQoRWxlbWVudCogZWxlbWVudCkKIHsKLSAgICBBU1NFUlQoaXNIVE1MTGFi
ZWxFbGVtZW50KGVsZW1lbnQpKTsKKyAgICBBU1NFUlQoaXM8SFRNTExhYmVsRWxlbWVudD4oZWxl
bWVudCkpOwogICAgIEhUTUxFbGVtZW50KiBjb3JyZXNwb25kaW5nQ29udHJvbCA9IGRvd25jYXN0
PEhUTUxMYWJlbEVsZW1lbnQ+KGVsZW1lbnQpLT5jb250cm9sKCk7CiAgICAgdGV4dENoYW5nZWQo
Y29ycmVzcG9uZGluZ0NvbnRyb2wpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMaXN0Qm94T3B0aW9uLmNwcAppbmRleCBjMzI3
MDA4MDYwM2NmMGM3MmM5YjZjYmNmNGY4NTc5ZWM3MmYyY2EyLi5mMDM4ODdjYTZhMzVkMzZkYjUy
M2I3OGI0ZjViYTBlMjRjNTZkZmM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlMaXN0Qm94T3B0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMaXN0Qm94T3B0aW9uLmNwcApAQCAtNjQsNyAr
NjQsNyBAQCBib29sIEFjY2Vzc2liaWxpdHlMaXN0Qm94T3B0aW9uOjppc0VuYWJsZWQoKSBjb25z
dAogICAgIGlmICghbV9vcHRpb25FbGVtZW50KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
Ci0gICAgaWYgKGlzSFRNTE9wdEdyb3VwRWxlbWVudChtX29wdGlvbkVsZW1lbnQpKQorICAgIGlm
IChpczxIVE1MT3B0R3JvdXBFbGVtZW50PihtX29wdGlvbkVsZW1lbnQpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoZ2V0QXR0cmlidXRlKGFyaWFf
ZGlzYWJsZWRBdHRyKSwgInRydWUiKSkKQEAgLTE1OSw3ICsxNTksNyBAQCBTdHJpbmcgQWNjZXNz
aWJpbGl0eUxpc3RCb3hPcHRpb246OnN0cmluZ1ZhbHVlKCkgY29uc3QKICAgICBpZiAoaXM8SFRN
TE9wdGlvbkVsZW1lbnQ+KG1fb3B0aW9uRWxlbWVudCkpCiAgICAgICAgIHJldHVybiBkb3duY2Fz
dDxIVE1MT3B0aW9uRWxlbWVudD4oKm1fb3B0aW9uRWxlbWVudCkudGV4dCgpOwogICAgIAotICAg
IGlmIChpc0hUTUxPcHRHcm91cEVsZW1lbnQobV9vcHRpb25FbGVtZW50KSkKKyAgICBpZiAoaXM8
SFRNTE9wdEdyb3VwRWxlbWVudD4obV9vcHRpb25FbGVtZW50KSkKICAgICAgICAgcmV0dXJuIGRv
d25jYXN0PEhUTUxPcHRHcm91cEVsZW1lbnQ+KCptX29wdGlvbkVsZW1lbnQpLmdyb3VwTGFiZWxU
ZXh0KCk7CiAgICAgCiAgICAgcmV0dXJuIFN0cmluZygpOwpAQCAtMjA1LDcgKzIwNSw3IEBAIEhU
TUxTZWxlY3RFbGVtZW50KiBBY2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlvbjo6bGlzdEJveE9wdGlv
blBhcmVudE5vZGUoKSBjb25zdAogICAgIGlmIChpczxIVE1MT3B0aW9uRWxlbWVudD4obV9vcHRp
b25FbGVtZW50KSkKICAgICAgICAgcmV0dXJuIGRvd25jYXN0PEhUTUxPcHRpb25FbGVtZW50Pigq
bV9vcHRpb25FbGVtZW50KS5vd25lclNlbGVjdEVsZW1lbnQoKTsKIAotICAgIGlmIChpc0hUTUxP
cHRHcm91cEVsZW1lbnQobV9vcHRpb25FbGVtZW50KSkKKyAgICBpZiAoaXM8SFRNTE9wdEdyb3Vw
RWxlbWVudD4obV9vcHRpb25FbGVtZW50KSkKICAgICAgICAgcmV0dXJuIGRvd25jYXN0PEhUTUxP
cHRHcm91cEVsZW1lbnQ+KCptX29wdGlvbkVsZW1lbnQpLm93bmVyU2VsZWN0RWxlbWVudCgpOwog
CiAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuY3BwCmluZGV4IDI2MmZiOTc1ZDJiNjk3
YTdjMDZmMTYyZGFhYTAyNmZkMzhhODQ2Y2MuLmQ3NGMxMjBiZjIxZWU5YjRhYjExY2Q5YzU2NWI1
NjE1NjIwYmRmMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eU5vZGVPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuY3BwCkBAIC0zMjEsNyArMzIxLDcgQEAgQWNjZXNz
aWJpbGl0eVJvbGUgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmRldGVybWluZUFjY2Vzc2liaWxp
dHlSb2xlKCkKICAgICAgICAgcmV0dXJuIERpdlJvbGU7CiAgICAgaWYgKG5vZGUoKS0+aGFzVGFn
TmFtZShwVGFnKSkKICAgICAgICAgcmV0dXJuIFBhcmFncmFwaFJvbGU7Ci0gICAgaWYgKGlzSFRN
TExhYmVsRWxlbWVudChub2RlKCkpKQorICAgIGlmIChpczxIVE1MTGFiZWxFbGVtZW50Pihub2Rl
KCkpKQogICAgICAgICByZXR1cm4gTGFiZWxSb2xlOwogICAgIGlmIChub2RlKCktPmlzRWxlbWVu
dE5vZGUoKSAmJiB0b0VsZW1lbnQobm9kZSgpKS0+aXNGb2N1c2FibGUoKSkKICAgICAgICAgcmV0
dXJuIEdyb3VwUm9sZTsKQEAgLTUxMiw3ICs1MTIsNyBAQCBib29sIEFjY2Vzc2liaWxpdHlOb2Rl
T2JqZWN0Ojppc05hdGl2ZUltYWdlKCkgY29uc3QKICAgICBpZiAoIW5vZGUpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAotICAgIGlmIChpc0hUTUxJbWFnZUVsZW1lbnQobm9kZSkpCisgICAgaWYg
KGlzPEhUTUxJbWFnZUVsZW1lbnQ+KG5vZGUpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAg
IGlmIChub2RlLT5oYXNUYWdOYW1lKGFwcGxldFRhZykgfHwgbm9kZS0+aGFzVGFnTmFtZShlbWJl
ZFRhZykgfHwgbm9kZS0+aGFzVGFnTmFtZShvYmplY3RUYWcpKQpAQCAtOTYzLDcgKzk2Myw3IEBA
IEVsZW1lbnQqIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjphbmNob3JFbGVtZW50KCkgY29uc3QK
ICAgICAvLyBzZWFyY2ggdXAgdGhlIERPTSB0cmVlIGZvciBhbiBhbmNob3IgZWxlbWVudAogICAg
IC8vIE5PVEU6IHRoaXMgYXNzdW1lcyB0aGF0IGFueSBub24taW1hZ2Ugd2l0aCBhbiBhbmNob3Ig
aXMgYW4gSFRNTEFuY2hvckVsZW1lbnQKICAgICBmb3IgKCA7IG5vZGU7IG5vZGUgPSBub2RlLT5w
YXJlbnROb2RlKCkpIHsKLSAgICAgICAgaWYgKGlzSFRNTEFuY2hvckVsZW1lbnQobm9kZSkgfHwg
KG5vZGUtPnJlbmRlcmVyKCkgJiYgY2FjaGUtPmdldE9yQ3JlYXRlKG5vZGUtPnJlbmRlcmVyKCkp
LT5pc0FuY2hvcigpKSkKKyAgICAgICAgaWYgKGlzPEhUTUxBbmNob3JFbGVtZW50Pihub2RlKSB8
fCAobm9kZS0+cmVuZGVyZXIoKSAmJiBjYWNoZS0+Z2V0T3JDcmVhdGUobm9kZS0+cmVuZGVyZXIo
KSktPmlzQW5jaG9yKCkpKQogICAgICAgICAgICAgcmV0dXJuIHRvRWxlbWVudChub2RlKTsKICAg
ICB9CiAKQEAgLTEzMDUsNyArMTMwNSw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6
OmFsdGVybmF0aXZlVGV4dChWZWN0b3I8QWNjZXNzaWJpbGl0eVRleHQ+JiB0ZXh0T3JkCiAgICAg
ICAgIHJldHVybjsKICAgICAKICAgICAvLyBUaGUgZmllbGRzZXQgZWxlbWVudCBkZXJpdmVzIGl0
cyBhbHRlcm5hdGl2ZSB0ZXh0IGZyb20gdGhlIGZpcnN0IGFzc29jaWF0ZWQgbGVnZW5kIGVsZW1l
bnQgaWYgb25lIGlzIGF2YWlsYWJsZS4KLSAgICBpZiAoaXNIVE1MRmllbGRTZXRFbGVtZW50KG5v
ZGUpKSB7CisgICAgaWYgKGlzPEhUTUxGaWVsZFNldEVsZW1lbnQ+KG5vZGUpKSB7CiAgICAgICAg
IEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iamVjdCA9IGF4T2JqZWN0Q2FjaGUoKS0+Z2V0T3JDcmVh
dGUoZG93bmNhc3Q8SFRNTEZpZWxkU2V0RWxlbWVudD4oKm5vZGUpLmxlZ2VuZCgpKTsKICAgICAg
ICAgaWYgKG9iamVjdCAmJiAhb2JqZWN0LT5pc0hpZGRlbigpKQogICAgICAgICAgICAgdGV4dE9y
ZGVyLmFwcGVuZChBY2Nlc3NpYmlsaXR5VGV4dChhY2Nlc3NpYmxlTmFtZUZvck5vZGUob2JqZWN0
LT5ub2RlKCkpLCBBbHRlcm5hdGl2ZVRleHQpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCmluZGV4IDNl
MmE4ZjdhZTY1Y2IwOTRmOWIwNjZlODM5ZjUyNDE1N2FjNjZkZjEuLjQ0NGZhZmFlYTAxMjFkOWM2
OThhMDIzMzlhYWMxNmQzOGFkZjU1OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcApAQCAtNTg1LDcg
KzU4NSw3IEBAIEVsZW1lbnQqIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFuY2hvckVsZW1l
bnQoKSBjb25zdAogICAgIC8vIE5PVEU6IHRoaXMgYXNzdW1lcyB0aGF0IGFueSBub24taW1hZ2Ug
d2l0aCBhbiBhbmNob3IgaXMgYW4gSFRNTEFuY2hvckVsZW1lbnQKICAgICBOb2RlKiBub2RlID0g
Y3VyclJlbmRlcmVyLT5ub2RlKCk7CiAgICAgZm9yICggOyBub2RlOyBub2RlID0gbm9kZS0+cGFy
ZW50Tm9kZSgpKSB7Ci0gICAgICAgIGlmIChpc0hUTUxBbmNob3JFbGVtZW50KG5vZGUpIHx8IChu
b2RlLT5yZW5kZXJlcigpICYmIGNhY2hlLT5nZXRPckNyZWF0ZShub2RlLT5yZW5kZXJlcigpKS0+
aXNBbmNob3IoKSkpCisgICAgICAgIGlmIChpczxIVE1MQW5jaG9yRWxlbWVudD4obm9kZSkgfHwg
KG5vZGUtPnJlbmRlcmVyKCkgJiYgY2FjaGUtPmdldE9yQ3JlYXRlKG5vZGUtPnJlbmRlcmVyKCkp
LT5pc0FuY2hvcigpKSkKICAgICAgICAgICAgIHJldHVybiB0b0VsZW1lbnQobm9kZSk7CiAgICAg
fQogICAgIApAQCAtNzgyLDcgKzc4Miw3IEBAIEhUTUxMYWJlbEVsZW1lbnQqIEFjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3Q6OmxhYmVsRWxlbWVudENvbnRhaW5lcigpIGNvbnN0CiAgICAgCiAgICAg
Ly8gZmluZCBpZiB0aGlzIGhhcyBhIHBhcmVudCB0aGF0IGlzIGEgbGFiZWwKICAgICBmb3IgKE5v
ZGUqIHBhcmVudE5vZGUgPSBtX3JlbmRlcmVyLT5ub2RlKCk7IHBhcmVudE5vZGU7IHBhcmVudE5v
ZGUgPSBwYXJlbnROb2RlLT5wYXJlbnROb2RlKCkpIHsKLSAgICAgICAgaWYgKGlzSFRNTExhYmVs
RWxlbWVudChwYXJlbnROb2RlKSkKKyAgICAgICAgaWYgKGlzPEhUTUxMYWJlbEVsZW1lbnQ+KHBh
cmVudE5vZGUpKQogICAgICAgICAgICAgcmV0dXJuIGRvd25jYXN0PEhUTUxMYWJlbEVsZW1lbnQ+
KHBhcmVudE5vZGUpOwogICAgIH0KICAgICAKQEAgLTkxNCw3ICs5MTQsNyBAQCBBY2Nlc3NpYmls
aXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjppbnRlcm5hbExpbmtFbGVtZW50
KCkgY29uc3QKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgCiAgICAgLy8gUmlnaHQgbm93
LCB3ZSBkbyBub3Qgc3VwcG9ydCBBUklBIGxpbmtzIGFzIGludGVybmFsIGxpbmsgZWxlbWVudHMK
LSAgICBpZiAoIWlzSFRNTEFuY2hvckVsZW1lbnQoZWxlbWVudCkpCisgICAgaWYgKCFpczxIVE1M
QW5jaG9yRWxlbWVudD4oZWxlbWVudCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIEhU
TUxBbmNob3JFbGVtZW50JiBhbmNob3IgPSBkb3duY2FzdDxIVE1MQW5jaG9yRWxlbWVudD4oKmVs
ZW1lbnQpOwogICAgIApAQCAtMTI3NSw3ICsxMjc1LDcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5UmVu
ZGVyT2JqZWN0Ojpjb21wdXRlQWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpIGNvbnN0CiAgICAgCiAg
ICAgLy8gZG9uJ3QgaWdub3JlIGxhYmVscywgYmVjYXVzZSB0aGV5IHNlcnZlIGFzIFRpdGxlVUlF
bGVtZW50cwogICAgIE5vZGUqIG5vZGUgPSBtX3JlbmRlcmVyLT5ub2RlKCk7Ci0gICAgaWYgKG5v
ZGUgJiYgaXNIVE1MTGFiZWxFbGVtZW50KG5vZGUpKQorICAgIGlmIChub2RlICYmIGlzPEhUTUxM
YWJlbEVsZW1lbnQ+KG5vZGUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCiAgICAgLy8g
QW55dGhpbmcgdGhhdCBpcyBjb250ZW50IGVkaXRhYmxlIHNob3VsZCBub3QgYmUgaWdub3JlZC4K
QEAgLTE1MDcsNyArMTUwNyw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6c2V0
U2VsZWN0ZWRUZXh0UmFuZ2UoY29uc3QgUGxhaW5UZXh0UmFuZ2UmIHJhbmdlCiAKIFVSTCBBY2Nl
c3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojp1cmwoKSBjb25zdAogewotICAgIGlmIChpc0FuY2hvcigp
ICYmIGlzSFRNTEFuY2hvckVsZW1lbnQobV9yZW5kZXJlci0+bm9kZSgpKSkgeworICAgIGlmIChp
c0FuY2hvcigpICYmIGlzPEhUTUxBbmNob3JFbGVtZW50PihtX3JlbmRlcmVyLT5ub2RlKCkpKSB7
CiAgICAgICAgIGlmIChIVE1MQW5jaG9yRWxlbWVudCogYW5jaG9yID0gZG93bmNhc3Q8SFRNTEFu
Y2hvckVsZW1lbnQ+KGFuY2hvckVsZW1lbnQoKSkpCiAgICAgICAgICAgICByZXR1cm4gYW5jaG9y
LT5ocmVmKCk7CiAgICAgfQpAQCAtMTUxNSw3ICsxNTE1LDcgQEAgVVJMIEFjY2Vzc2liaWxpdHlS
ZW5kZXJPYmplY3Q6OnVybCgpIGNvbnN0CiAgICAgaWYgKGlzV2ViQXJlYSgpKQogICAgICAgICBy
ZXR1cm4gbV9yZW5kZXJlci0+ZG9jdW1lbnQoKS51cmwoKTsKICAgICAKLSAgICBpZiAoaXNJbWFn
ZSgpICYmIG1fcmVuZGVyZXItPm5vZGUoKSAmJiBpc0hUTUxJbWFnZUVsZW1lbnQobV9yZW5kZXJl
ci0+bm9kZSgpKSkKKyAgICBpZiAoaXNJbWFnZSgpICYmIG1fcmVuZGVyZXItPm5vZGUoKSAmJiBp
czxIVE1MSW1hZ2VFbGVtZW50PihtX3JlbmRlcmVyLT5ub2RlKCkpKQogICAgICAgICByZXR1cm4g
ZG93bmNhc3Q8SFRNTEltYWdlRWxlbWVudD4oKm1fcmVuZGVyZXItPm5vZGUoKSkuc3JjKCk7CiAg
ICAgCiAgICAgaWYgKGlzSW5wdXRJbWFnZSgpKQpAQCAtMTc1OSw3ICsxNzU5LDcgQEAgdm9pZCBB
Y2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpnZXREb2N1bWVudExpbmtzKEFjY2Vzc2liaWxpdHlD
aGlsZHJlblZlY3RvciYgcmUKICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKGF4b2JqKTsK
ICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIE5vZGUqIHBhcmVudCA9IGN1cnItPnBhcmVu
dE5vZGUoKTsKLSAgICAgICAgICAgIGlmIChwYXJlbnQgJiYgaXNIVE1MQXJlYUVsZW1lbnQoY3Vy
cikgJiYgaXNIVE1MTWFwRWxlbWVudChwYXJlbnQpKSB7CisgICAgICAgICAgICBpZiAocGFyZW50
ICYmIGlzPEhUTUxBcmVhRWxlbWVudD4oY3VycikgJiYgaXM8SFRNTE1hcEVsZW1lbnQ+KHBhcmVu
dCkpIHsKICAgICAgICAgICAgICAgICBBY2Nlc3NpYmlsaXR5SW1hZ2VNYXBMaW5rKiBhcmVhT2Jq
ZWN0ID0gdG9BY2Nlc3NpYmlsaXR5SW1hZ2VNYXBMaW5rKGF4T2JqZWN0Q2FjaGUoKS0+Z2V0T3JD
cmVhdGUoSW1hZ2VNYXBMaW5rUm9sZSkpOwogICAgICAgICAgICAgICAgIEhUTUxNYXBFbGVtZW50
JiBtYXAgPSBkb3duY2FzdDxIVE1MTWFwRWxlbWVudD4oKnBhcmVudCk7CiAgICAgICAgICAgICAg
ICAgYXJlYU9iamVjdC0+c2V0SFRNTEFyZWFFbGVtZW50KGRvd25jYXN0PEhUTUxBcmVhRWxlbWVu
dD4oY3VycikpOwpAQCAtMjE1OCw3ICsyMTU4LDcgQEAgQWNjZXNzaWJpbGl0eU9iamVjdCogQWNj
ZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6YWNjZXNzaWJpbGl0eUltYWdlTWFwSGl0VGVzdChIVE0K
IAogICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudCA9IG51bGxwdHI7CiAgICAgZm9yIChF
bGVtZW50KiBtYXBQYXJlbnQgPSBhcmVhLT5wYXJlbnRFbGVtZW50KCk7IG1hcFBhcmVudDsgbWFw
UGFyZW50ID0gbWFwUGFyZW50LT5wYXJlbnRFbGVtZW50KCkpIHsKLSAgICAgICAgaWYgKGlzSFRN
TE1hcEVsZW1lbnQobWFwUGFyZW50KSkgeworICAgICAgICBpZiAoaXM8SFRNTE1hcEVsZW1lbnQ+
KG1hcFBhcmVudCkpIHsKICAgICAgICAgICAgIHBhcmVudCA9IGFjY2Vzc2liaWxpdHlQYXJlbnRG
b3JJbWFnZU1hcChkb3duY2FzdDxIVE1MTWFwRWxlbWVudD4obWFwUGFyZW50KSk7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgfQpAQCAtMjIwOCw3ICsyMjA4LDcgQEAgQWNjZXNzaWJpbGl0
eU9iamVjdCogQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6YWNjZXNzaWJpbGl0eUhpdFRlc3Qo
Y29uc3QgSW50UG8KICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgTm9kZSogbm9kZSA9IGhp
dFRlc3RSZXN1bHQuaW5uZXJOb2RlKCktPmRlcHJlY2F0ZWRTaGFkb3dBbmNlc3Rvck5vZGUoKTsK
IAotICAgIGlmIChpc0hUTUxBcmVhRWxlbWVudChub2RlKSkKKyAgICBpZiAoaXM8SFRNTEFyZWFF
bGVtZW50Pihub2RlKSkKICAgICAgICAgcmV0dXJuIGFjY2Vzc2liaWxpdHlJbWFnZU1hcEhpdFRl
c3QoZG93bmNhc3Q8SFRNTEFyZWFFbGVtZW50Pihub2RlKSwgcG9pbnQpOwogICAgIAogICAgIGlm
IChpczxIVE1MT3B0aW9uRWxlbWVudD4obm9kZSkpCkBAIC0yNTcyLDcgKzI1NzIsNyBAQCBBY2Nl
c3NpYmlsaXR5Um9sZSBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpkZXRlcm1pbmVBY2Nlc3Np
YmlsaXR5Um9sZSgpCiAgICAgaWYgKG5vZGUgJiYgbm9kZS0+aGFzVGFnTmFtZSh0clRhZykpCiAg
ICAgICAgIHJldHVybiBSb3dSb2xlOwogCi0gICAgaWYgKG5vZGUgJiYgaXNIVE1MVGFibGVFbGVt
ZW50KG5vZGUpKQorICAgIGlmIChub2RlICYmIGlzPEhUTUxUYWJsZUVsZW1lbnQ+KG5vZGUpKQog
ICAgICAgICByZXR1cm4gVGFibGVSb2xlOwogI2VuZGlmCiAKQEAgLTI1ODYsNyArMjU4Niw3IEBA
IEFjY2Vzc2liaWxpdHlSb2xlIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmRldGVybWluZUFj
Y2Vzc2liaWxpdHlSb2xlKCkKICAgICBpZiAobm9kZSAmJiBub2RlLT5oYXNUYWdOYW1lKHBUYWcp
KQogICAgICAgICByZXR1cm4gUGFyYWdyYXBoUm9sZTsKIAotICAgIGlmIChub2RlICYmIGlzSFRN
TExhYmVsRWxlbWVudChub2RlKSkKKyAgICBpZiAobm9kZSAmJiBpczxIVE1MTGFiZWxFbGVtZW50
Pihub2RlKSkKICAgICAgICAgcmV0dXJuIExhYmVsUm9sZTsKIAogICAgIGlmIChub2RlICYmIG5v
ZGUtPmhhc1RhZ05hbWUoZGZuVGFnKSkKQEAgLTI1OTUsNyArMjU5NSw3IEBAIEFjY2Vzc2liaWxp
dHlSb2xlIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmRldGVybWluZUFjY2Vzc2liaWxpdHlS
b2xlKCkKICAgICBpZiAobm9kZSAmJiBub2RlLT5oYXNUYWdOYW1lKGRpdlRhZykpCiAgICAgICAg
IHJldHVybiBEaXZSb2xlOwogCi0gICAgaWYgKG5vZGUgJiYgaXNIVE1MRm9ybUVsZW1lbnQobm9k
ZSkpCisgICAgaWYgKG5vZGUgJiYgaXM8SFRNTEZvcm1FbGVtZW50Pihub2RlKSkKICAgICAgICAg
cmV0dXJuIEZvcm1Sb2xlOwogCiAgICAgaWYgKG5vZGUgJiYgbm9kZS0+aGFzVGFnTmFtZShhcnRp
Y2xlVGFnKSkKQEAgLTI2MTcsOSArMjYxNyw5IEBAIEFjY2Vzc2liaWxpdHlSb2xlIEFjY2Vzc2li
aWxpdHlSZW5kZXJPYmplY3Q6OmRldGVybWluZUFjY2Vzc2liaWxpdHlSb2xlKCkKICAgICAgICAg
cmV0dXJuIExhbmRtYXJrQ29udGVudEluZm9Sb2xlOwogCiAjaWYgRU5BQkxFKFZJREVPKQotICAg
IGlmIChub2RlICYmIGlzSFRNTFZpZGVvRWxlbWVudChub2RlKSkKKyAgICBpZiAobm9kZSAmJiBp
czxIVE1MVmlkZW9FbGVtZW50Pihub2RlKSkKICAgICAgICAgcmV0dXJuIFZpZGVvUm9sZTsKLSAg
ICBpZiAobm9kZSAmJiBpc0hUTUxBdWRpb0VsZW1lbnQobm9kZSkpCisgICAgaWYgKG5vZGUgJiYg
aXM8SFRNTEF1ZGlvRWxlbWVudD4obm9kZSkpCiAgICAgICAgIHJldHVybiBBdWRpb1JvbGU7CiAj
ZW5kaWYKICAgICAKQEAgLTMyNjksNyArMzI2OSw3IEBAIFN0cmluZyBBY2Nlc3NpYmlsaXR5UmVu
ZGVyT2JqZWN0OjpzdHJpbmdWYWx1ZUZvck1TQUEoKSBjb25zdAogewogICAgIGlmIChpc0xpbmth
YmxlKCp0aGlzKSkgewogICAgICAgICBFbGVtZW50KiBhbmNob3IgPSBhbmNob3JFbGVtZW50KCk7
Ci0gICAgICAgIGlmIChhbmNob3IgJiYgaXNIVE1MQW5jaG9yRWxlbWVudChhbmNob3IpKQorICAg
ICAgICBpZiAoYW5jaG9yICYmIGlzPEhUTUxBbmNob3JFbGVtZW50PihhbmNob3IpKQogICAgICAg
ICAgICAgcmV0dXJuIGRvd25jYXN0PEhUTUxBbmNob3JFbGVtZW50PigqYW5jaG9yKS5ocmVmKCk7
CiAgICAgfQogCkBAIC0zMjgyLDcgKzMyODIsNyBAQCBib29sIEFjY2Vzc2liaWxpdHlSZW5kZXJP
YmplY3Q6OmlzTGlua2VkKCkgY29uc3QKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgRWxl
bWVudCogYW5jaG9yID0gYW5jaG9yRWxlbWVudCgpOwotICAgIGlmICghYW5jaG9yIHx8ICFpc0hU
TUxBbmNob3JFbGVtZW50KGFuY2hvcikpCisgICAgaWYgKCFhbmNob3IgfHwgIWlzPEhUTUxBbmNo
b3JFbGVtZW50PihhbmNob3IpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICByZXR1cm4g
IWRvd25jYXN0PEhUTUxBbmNob3JFbGVtZW50PigqYW5jaG9yKS5ocmVmKCkuaXNFbXB0eSgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFi
bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUu
Y3BwCmluZGV4IGUyNTQ0M2NmYzc2Yzc5NjA4NzI5Njc4ZDI3NmFkZmY0NWExYWVjYWMuLjZiN2U2
Y2Y0ZDQ3NjY4NTQyOTAxMDc1ODlmZjllOTI4MDE0ZWUwZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZS5jcHAKQEAgLTk2LDcgKzk2
LDcgQEAgSFRNTFRhYmxlRWxlbWVudCogQWNjZXNzaWJpbGl0eVRhYmxlOjp0YWJsZUVsZW1lbnQo
KSBjb25zdAogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAKICAgICBSZW5kZXJUYWJsZSog
dGFibGUgPSB0b1JlbmRlclRhYmxlKG1fcmVuZGVyZXIpOwotICAgIGlmICh0YWJsZS0+ZWxlbWVu
dCgpICYmIGlzSFRNTFRhYmxlRWxlbWVudCh0YWJsZS0+ZWxlbWVudCgpKSkKKyAgICBpZiAodGFi
bGUtPmVsZW1lbnQoKSAmJiBpczxIVE1MVGFibGVFbGVtZW50Pih0YWJsZS0+ZWxlbWVudCgpKSkK
ICAgICAgICAgcmV0dXJuIGRvd25jYXN0PEhUTUxUYWJsZUVsZW1lbnQ+KHRhYmxlLT5lbGVtZW50
KCkpOwogICAgIAogICAgIC8vIElmIHRoZSB0YWJsZSBoYXMgYSBkaXNwbGF5OnRhYmxlLXJvdy1n
cm91cCwgdGhlbiB0aGUgUmVuZGVyVGFibGUgZG9lcyBub3QgaGF2ZSBhIHBvaW50ZXIgdG8gaXQn
cyBIVE1MVGFibGVFbGVtZW50LgpAQCAtMTA2LDcgKzEwNiw3IEBAIEhUTUxUYWJsZUVsZW1lbnQq
IEFjY2Vzc2liaWxpdHlUYWJsZTo6dGFibGVFbGVtZW50KCkgY29uc3QKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgCiAgICAgRWxlbWVudCogYWN0dWFsVGFibGUgPSBmaXJzdEJvZHktPmVs
ZW1lbnQoKS0+cGFyZW50RWxlbWVudCgpOwotICAgIGlmICghYWN0dWFsVGFibGUgfHwgIWlzSFRN
TFRhYmxlRWxlbWVudChhY3R1YWxUYWJsZSkpCisgICAgaWYgKCFhY3R1YWxUYWJsZSB8fCAhaXM8
SFRNTFRhYmxlRWxlbWVudD4oYWN0dWFsVGFibGUpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
ICAgICAKICAgICByZXR1cm4gZG93bmNhc3Q8SFRNTFRhYmxlRWxlbWVudD4oYWN0dWFsVGFibGUp
OwpAQCAtMzI4LDcgKzMyOCw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0eVRhYmxlOjppc1RhYmxlRXhw
b3NhYmxlVGhyb3VnaEFjY2Vzc2liaWxpdHkoKSBjb25zdAogICAgIC8vIEd0aysgQVRzIGV4cGVj
dCBhbGwgdGFibGVzIHRvIGJlIGV4cG9zZWQgYXMgdGFibGVzLgogI2lmIFBMQVRGT1JNKEdUSykg
fHwgUExBVEZPUk0oRUZMKQogICAgIEVsZW1lbnQqIHRhYmxlTm9kZSA9IHRvUmVuZGVyVGFibGUo
bV9yZW5kZXJlciktPmVsZW1lbnQoKTsKLSAgICByZXR1cm4gdGFibGVOb2RlICYmIGlzSFRNTFRh
YmxlRWxlbWVudCh0YWJsZU5vZGUpOworICAgIHJldHVybiB0YWJsZU5vZGUgJiYgaXM8SFRNTFRh
YmxlRWxlbWVudD4odGFibGVOb2RlKTsKICNlbmRpZgogCiAgICAgcmV0dXJuIGlzRGF0YVRhYmxl
KCk7CkBAIC02MDcsNyArNjA3LDcgQEAgU3RyaW5nIEFjY2Vzc2liaWxpdHlUYWJsZTo6dGl0bGUo
KSBjb25zdAogICAgIAogICAgIC8vIHNlZSBpZiB0aGVyZSBpcyBhIGNhcHRpb24KICAgICBOb2Rl
KiB0YWJsZUVsZW1lbnQgPSBtX3JlbmRlcmVyLT5ub2RlKCk7Ci0gICAgaWYgKHRhYmxlRWxlbWVu
dCAmJiBpc0hUTUxUYWJsZUVsZW1lbnQodGFibGVFbGVtZW50KSkgeworICAgIGlmICh0YWJsZUVs
ZW1lbnQgJiYgaXM8SFRNTFRhYmxlRWxlbWVudD4odGFibGVFbGVtZW50KSkgewogICAgICAgICBp
ZiAoSFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQqIGNhcHRpb24gPSBkb3duY2FzdDxIVE1MVGFibGVF
bGVtZW50PigqdGFibGVFbGVtZW50KS5jYXB0aW9uKCkpCiAgICAgICAgICAgICB0aXRsZSA9IGNh
cHRpb24tPmlubmVyVGV4dCgpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VUYWJsZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlVGFi
bGUuY3BwCmluZGV4IDY1OWI4OGY4Yzc5YWJhMWM0MDEwMWI2OTkyOTE2ZDRlYjQ2MzcxNWQuLjM0
OTJiN2UwZWYyYzc3ZjlkNDNlOWM3NmJmYTZlODZlY2VmYzYwYzggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VUYWJs
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNz
aWJsZUludGVyZmFjZVRhYmxlLmNwcApAQCAtMjQ0LDcgKzI0NCw3IEBAIHN0YXRpYyBBdGtPYmpl
Y3QqIHdlYmtpdEFjY2Vzc2libGVUYWJsZUdldENhcHRpb24oQXRrVGFibGUqIHRhYmxlKQogICAg
IEFjY2Vzc2liaWxpdHlPYmplY3QqIGFjY1RhYmxlID0gY29yZSh0YWJsZSk7CiAgICAgaWYgKGFj
Y1RhYmxlLT5pc0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QoKSkgewogICAgICAgICBOb2RlKiBu
b2RlID0gYWNjVGFibGUtPm5vZGUoKTsKLSAgICAgICAgaWYgKG5vZGUgJiYgaXNIVE1MVGFibGVF
bGVtZW50KG5vZGUpKSB7CisgICAgICAgIGlmIChub2RlICYmIGlzPEhUTUxUYWJsZUVsZW1lbnQ+
KG5vZGUpKSB7CiAgICAgICAgICAgICBIVE1MVGFibGVDYXB0aW9uRWxlbWVudCogY2FwdGlvbiA9
IGRvd25jYXN0PEhUTUxUYWJsZUVsZW1lbnQ+KCpub2RlKS5jYXB0aW9uKCk7CiAgICAgICAgICAg
ICBpZiAoY2FwdGlvbikKICAgICAgICAgICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eU9iamVj
dDo6Zmlyc3RBY2Nlc3NpYmxlT2JqZWN0RnJvbU5vZGUoY2FwdGlvbi0+cmVuZGVyZXIoKS0+ZWxl
bWVudCgpKS0+d3JhcHBlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNIVE1MRG9jdW1lbnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNIVE1MRG9jdW1lbnRDdXN0b20uY3BwCmluZGV4IDc5NTNjNmNkNWJlMzVjYjVhODU0YmEwMDJk
ZjBlYzllOTFjNjFkZWEuLjUyMjFlMWRlZDU0YmFiOWYxZjhhODNhZDU2MDExZDZjOGRlZjQ5OWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTERvY3VtZW50Q3Vz
dG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxEb2N1bWVudEN1
c3RvbS5jcHAKQEAgLTczLDcgKzczLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNIVE1MRG9jdW1lbnQ6
Om5hbWVHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2UsIEUKICAgICB9
CiAKICAgICBFbGVtZW50KiBlbGVtZW50ID0gZG9jdW1lbnQuZG9jdW1lbnROYW1lZEl0ZW0oKmF0
b21pY1Byb3BlcnR5TmFtZSk7Ci0gICAgaWYgKFVOTElLRUxZKGlzSFRNTElGcmFtZUVsZW1lbnQo
ZWxlbWVudCkpKSB7CisgICAgaWYgKFVOTElLRUxZKGlzPEhUTUxJRnJhbWVFbGVtZW50PihlbGVt
ZW50KSkpIHsKICAgICAgICAgaWYgKEZyYW1lKiBmcmFtZSA9IGRvd25jYXN0PEhUTUxJRnJhbWVF
bGVtZW50PigqZWxlbWVudCkuY29udGVudEZyYW1lKCkpCiAgICAgICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHRvSlMoZXhlYywgZnJhbWUpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNOb2RlQ3VzdG9tLmNwcAppbmRleCAyZTFkMTI2NmUzYzIzYjgxNGRhOTlm
ZWY5ODE1ODZlZDc5NTNmZjAwLi43Y2FiMTg0YzNlMDU4YjhlZTI3YjI3MTA4N2ZkYTliNGQ0YzRk
MmQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVDdXN0b20u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUN1c3RvbS5jcHAKQEAg
LTEwNSwxMiArMTA1LDEyIEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc1JlYWNoYWJsZUZyb21ET00o
SlNOb2RlKiBqc05vZGUsIE5vZGUqIG5vZGUsIFNsb3RWaXNpdG9yJiB2CiAgICAgICAgICAgICAv
LyBiZWNhdXNlIGl0IGlzIHRoZSBvbmx5IHRoaW5nIGtlZXBpbmcgdGhlIGltYWdlIGVsZW1lbnQg
YWxpdmUsIGFuZCBpZgogICAgICAgICAgICAgLy8gdGhlIGVsZW1lbnQgaXMgZGVzdHJveWVkLCBp
dHMgbG9hZCBldmVudCB3aWxsIG5vdCBmaXJlLgogICAgICAgICAgICAgLy8gRklYTUU6IFRoZSBE
T00gc2hvdWxkIG1hbmFnZSB0aGlzIGlzc3VlIHdpdGhvdXQgdGhlIGhlbHAgb2YgSmF2YVNjcmlw
dCB3cmFwcGVycy4KLSAgICAgICAgICAgIGlmIChpc0hUTUxJbWFnZUVsZW1lbnQoZWxlbWVudCkp
IHsKKyAgICAgICAgICAgIGlmIChpczxIVE1MSW1hZ2VFbGVtZW50PihlbGVtZW50KSkgewogICAg
ICAgICAgICAgICAgIGlmIChkb3duY2FzdDxIVE1MSW1hZ2VFbGVtZW50PihlbGVtZW50KS5oYXNQ
ZW5kaW5nQWN0aXZpdHkoKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
ICAgICAgICB9CiAjaWYgRU5BQkxFKFZJREVPKQotICAgICAgICAgICAgZWxzZSBpZiAoaXNIVE1M
QXVkaW9FbGVtZW50KGVsZW1lbnQpKSB7CisgICAgICAgICAgICBlbHNlIGlmIChpczxIVE1MQXVk
aW9FbGVtZW50PihlbGVtZW50KSkgewogICAgICAgICAgICAgICAgIGlmICghZG93bmNhc3Q8SFRN
TEF1ZGlvRWxlbWVudD4oZWxlbWVudCkucGF1c2VkKCkpCiAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0RlZmF1bHRTdHlsZVNoZWV0cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRGVmYXVs
dFN0eWxlU2hlZXRzLmNwcAppbmRleCA3MzlhYTYxMGM5MDVkMjRhYzcwNmE0MmQ5ODJmMjdiYWNm
MGQyMjk4Li4xNjRlMmFmNWFlNWRkYzcwZDFlNWVkZTc1ODZmZDFlMDI0YmEzZjVkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRGVmYXVsdFN0eWxlU2hlZXRzLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTRGVmYXVsdFN0eWxlU2hlZXRzLmNwcApAQCAtNjQsNyArNjQs
NyBAQCBzdGF0aWMgY29uc3QgY2hhciogc2ltcGxlVXNlckFnZW50U3R5bGVTaGVldCA9ICJodG1s
LGJvZHksZGl2e2Rpc3BsYXk6YmxvY2t9aGVhZAogCiBzdGF0aWMgaW5saW5lIGJvb2wgZWxlbWVu
dENhblVzZVNpbXBsZURlZmF1bHRTdHlsZShFbGVtZW50KiBlKQogewotICAgIHJldHVybiBlLT5o
YXNUYWdOYW1lKGh0bWxUYWcpIHx8IGUtPmhhc1RhZ05hbWUoaGVhZFRhZykgfHwgZS0+aGFzVGFn
TmFtZShib2R5VGFnKSB8fCBlLT5oYXNUYWdOYW1lKGRpdlRhZykgfHwgZS0+aGFzVGFnTmFtZShz
cGFuVGFnKSB8fCBlLT5oYXNUYWdOYW1lKGJyVGFnKSB8fCBpc0hUTUxBbmNob3JFbGVtZW50KGUp
OworICAgIHJldHVybiBlLT5oYXNUYWdOYW1lKGh0bWxUYWcpIHx8IGUtPmhhc1RhZ05hbWUoaGVh
ZFRhZykgfHwgZS0+aGFzVGFnTmFtZShib2R5VGFnKSB8fCBlLT5oYXNUYWdOYW1lKGRpdlRhZykg
fHwgZS0+aGFzVGFnTmFtZShzcGFuVGFnKSB8fCBlLT5oYXNUYWdOYW1lKGJyVGFnKSB8fCBpczxI
VE1MQW5jaG9yRWxlbWVudD4oZSk7CiB9CiAKIHN0YXRpYyBjb25zdCBNZWRpYVF1ZXJ5RXZhbHVh
dG9yJiBzY3JlZW5FdmFsKCkKQEAgLTE3Miw3ICsxNzIsNyBAQCB2b2lkIENTU0RlZmF1bHRTdHls
ZVNoZWV0czo6ZW5zdXJlRGVmYXVsdFN0eWxlU2hlZXRzRm9yRWxlbWVudChFbGVtZW50KiBlbGVt
ZW50LAogI2VuZGlmCiAKICNpZiBFTkFCTEUoVklERU8pCi0gICAgaWYgKCFtZWRpYUNvbnRyb2xz
U3R5bGVTaGVldCAmJiAoZWxlbWVudC0+aGFzVGFnTmFtZSh2aWRlb1RhZykgfHwgaXNIVE1MQXVk
aW9FbGVtZW50KGVsZW1lbnQpKSkgeworICAgIGlmICghbWVkaWFDb250cm9sc1N0eWxlU2hlZXQg
JiYgKGlzPEhUTUxWaWRlb0VsZW1lbnQ+KGVsZW1lbnQpIHx8IGlzPEhUTUxBdWRpb0VsZW1lbnQ+
KGVsZW1lbnQpKSkgewogICAgICAgICBTdHJpbmcgbWVkaWFSdWxlcyA9IFJlbmRlclRoZW1lOjp0
aGVtZUZvclBhZ2UoZWxlbWVudC0+ZG9jdW1lbnQoKS5wYWdlKCkpLT5tZWRpYUNvbnRyb2xzU3R5
bGVTaGVldCgpOwogICAgICAgICBpZiAobWVkaWFSdWxlcy5pc0VtcHR5KCkpCiAgICAgICAgICAg
ICBtZWRpYVJ1bGVzID0gU3RyaW5nKG1lZGlhQ29udHJvbHNVc2VyQWdlbnRTdHlsZVNoZWV0LCBz
aXplb2YobWVkaWFDb250cm9sc1VzZXJBZ2VudFN0eWxlU2hlZXQpKSArIFJlbmRlclRoZW1lOjp0
aGVtZUZvclBhZ2UoZWxlbWVudC0+ZG9jdW1lbnQoKS5wYWdlKCkpLT5leHRyYU1lZGlhQ29udHJv
bHNTdHlsZVNoZWV0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVT
aGVldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5jcHAKaW5kZXggYjgz
ODM1NTJjODliM2FjMTE4OTFhYzZiMTM5NTA1OTk5NTE0ODU4Mi4uZTNlOWUzMWVjODkyMjYzNjE5
M2MxODYwMjI4Zjc3NDA1ZTE5Njg1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1N0eWxlU2hlZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmNw
cApAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIk1lZGlhTGlzdC5oIgogI2luY2x1ZGUgIk5v
ZGUuaCIKICNpbmNsdWRlICJTVkdOYW1lcy5oIgorI2luY2x1ZGUgIlNWR1N0eWxlRWxlbWVudC5I
IgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiU3R5bGVSZXNvbHZlci5o
IgogI2luY2x1ZGUgIlN0eWxlUnVsZS5oIgpAQCAtNjcsOSArNjgsOSBAQCBzdGF0aWMgYm9vbCBp
c0FjY2VwdGFibGVDU1NTdHlsZVNoZWV0UGFyZW50KE5vZGUqIHBhcmVudE5vZGUpCiAgICAgLy8g
T25seSB0aGVzZSBub2RlcyBjYW4gYmUgcGFyZW50cyBvZiBTdHlsZVNoZWV0cywgYW5kIHRoZXkg
bmVlZCB0byBjYWxsIGNsZWFyT3duZXJOb2RlKCkgd2hlbiBtb3ZlZCBvdXQgb2YgZG9jdW1lbnQu
CiAgICAgcmV0dXJuICFwYXJlbnROb2RlCiAgICAgICAgIHx8IHBhcmVudE5vZGUtPmlzRG9jdW1l
bnROb2RlKCkKLSAgICAgICAgfHwgcGFyZW50Tm9kZS0+aGFzVGFnTmFtZShIVE1MTmFtZXM6Omxp
bmtUYWcpCi0gICAgICAgIHx8IGlzSFRNTFN0eWxlRWxlbWVudChwYXJlbnROb2RlKQotICAgICAg
ICB8fCBwYXJlbnROb2RlLT5oYXNUYWdOYW1lKFNWR05hbWVzOjpzdHlsZVRhZykKKyAgICAgICAg
fHwgaXM8SFRNTExpbmtFbGVtZW50PihwYXJlbnROb2RlKQorICAgICAgICB8fCBpczxIVE1MU3R5
bGVFbGVtZW50PihwYXJlbnROb2RlKQorICAgICAgICB8fCBpczxTVkdTdHlsZUVsZW1lbnQ+KHBh
cmVudE5vZGUpCiAgICAgICAgIHx8IHBhcmVudE5vZGUtPm5vZGVUeXBlKCkgPT0gTm9kZTo6UFJP
Q0VTU0lOR19JTlNUUlVDVElPTl9OT0RFOwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVS
ZXNvbHZlci5jcHAKaW5kZXggOTA3NjZiYjdjMWVkNWU0NGRhNTU0NzExNmQyNTlmNDFjMzg3ODdj
Ny4uNjdhOGQ3M2I4MGM5ZTNiYmI2YTkyZTYzM2U0ZjZhNzRhMGFmMDZiNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9TdHlsZVJlc29sdmVyLmNwcApAQCAtMTE3MCw3ICsxMTcwLDcgQEAgdm9pZCBTdHlsZVJl
c29sdmVyOjphZGp1c3RSZW5kZXJTdHlsZShSZW5kZXJTdHlsZSYgc3R5bGUsIGNvbnN0IFJlbmRl
clN0eWxlJiBwYXIKICAgICAgICAgICAgIGlmIChlLT5oYXNUYWdOYW1lKHRkVGFnKSkgewogICAg
ICAgICAgICAgICAgIHN0eWxlLnNldERpc3BsYXkoVEFCTEVfQ0VMTCk7CiAgICAgICAgICAgICAg
ICAgc3R5bGUuc2V0RmxvYXRpbmcoTm9GbG9hdCk7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKGlz
SFRNTFRhYmxlRWxlbWVudChlKSkKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoaXM8SFRNTFRhYmxl
RWxlbWVudD4oZSkpCiAgICAgICAgICAgICAgICAgc3R5bGUuc2V0RGlzcGxheShzdHlsZS5pc0Rp
c3BsYXlJbmxpbmVUeXBlKCkgPyBJTkxJTkVfVEFCTEUgOiBUQUJMRSk7CiAgICAgICAgIH0KIApA
QCAtMTE4Nyw3ICsxMTg3LDcgQEAgdm9pZCBTdHlsZVJlc29sdmVyOjphZGp1c3RSZW5kZXJTdHls
ZShSZW5kZXJTdHlsZSYgc3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlJiBwYXIKICAgICAgICAgfQog
CiAgICAgICAgIC8vIFRhYmxlcyBuZXZlciBzdXBwb3J0IHRoZSAtd2Via2l0LSogdmFsdWVzIGZv
ciB0ZXh0LWFsaWduIGFuZCB3aWxsIHJlc2V0IGJhY2sgdG8gdGhlIGRlZmF1bHQuCi0gICAgICAg
IGlmIChlICYmIGlzSFRNTFRhYmxlRWxlbWVudChlKSAmJiAoc3R5bGUudGV4dEFsaWduKCkgPT0g
V0VCS0lUX0xFRlQgfHwgc3R5bGUudGV4dEFsaWduKCkgPT0gV0VCS0lUX0NFTlRFUiB8fCBzdHls
ZS50ZXh0QWxpZ24oKSA9PSBXRUJLSVRfUklHSFQpKQorICAgICAgICBpZiAoZSAmJiBpczxIVE1M
VGFibGVFbGVtZW50PihlKSAmJiAoc3R5bGUudGV4dEFsaWduKCkgPT0gV0VCS0lUX0xFRlQgfHwg
c3R5bGUudGV4dEFsaWduKCkgPT0gV0VCS0lUX0NFTlRFUiB8fCBzdHlsZS50ZXh0QWxpZ24oKSA9
PSBXRUJLSVRfUklHSFQpKQogICAgICAgICAgICAgc3R5bGUuc2V0VGV4dEFsaWduKFRBU1RBUlQp
OwogCiAgICAgICAgIC8vIEZyYW1lcyBhbmQgZnJhbWVzZXRzIG5ldmVyIGhvbm9yIHBvc2l0aW9u
OnJlbGF0aXZlIG9yIHBvc2l0aW9uOmFic29sdXRlLiBUaGlzIGlzIG5lY2Vzc2FyeSB0bwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hlZXRMaXN0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9TdHlsZVNoZWV0TGlzdC5jcHAKaW5kZXggMDcyMDAzN2U5YTg3ZDAzNDBkZDEw
OTgwNDViZDgyYTMyM2VkYjJjZC4uZTkwMTZkOTVmMDViYWMzNGZkMjQwNDVhNWQyN2M1ZGI1MDk4
OWE2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hlZXRMaXN0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTaGVldExpc3QuY3BwCkBAIC03Niw3ICs3Niw3
IEBAIEhUTUxTdHlsZUVsZW1lbnQqIFN0eWxlU2hlZXRMaXN0OjpnZXROYW1lZEl0ZW0oY29uc3Qg
U3RyaW5nJiBuYW1lKSBjb25zdAogICAgIC8vIGFuZCBkb2Vzbid0IGxvb2sgZm9yIG5hbWUgYXR0
cmlidXRlLgogICAgIC8vIEJ1dCB1bmljaXR5IG9mIHN0eWxlc2hlZXQgaWRzIGlzIGdvb2QgcHJh
Y3RpY2UgYW55d2F5IDspCiAgICAgRWxlbWVudCogZWxlbWVudCA9IG1fZG9jdW1lbnQtPmdldEVs
ZW1lbnRCeUlkKG5hbWUpOwotICAgIGlmIChlbGVtZW50ICYmIGlzSFRNTFN0eWxlRWxlbWVudChl
bGVtZW50KSkKKyAgICBpZiAoZWxlbWVudCAmJiBpczxIVE1MU3R5bGVFbGVtZW50PihlbGVtZW50
KSkKICAgICAgICAgcmV0dXJuIGRvd25jYXN0PEhUTUxTdHlsZUVsZW1lbnQ+KGVsZW1lbnQpOwog
ICAgIHJldHVybiBudWxscHRyOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0N1
cnJlbnRTY3JpcHRJbmNyZW1lbnRlci5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0N1cnJlbnRTY3Jp
cHRJbmNyZW1lbnRlci5oCmluZGV4IDdjNDg4YzA3MTg3MmUyN2RjODM3NWY0MGMwOGU0YTA0NzZl
ZGI5YzcuLmJkN2RlMDcwZjRjYWM3N2Q3YjUxYjI5ZDBhNmZkMTEzNzdhY2M5OTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DdXJyZW50U2NyaXB0SW5jcmVtZW50ZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vQ3VycmVudFNjcmlwdEluY3JlbWVudGVyLmgKQEAgLTM5LDcgKzM5
LDcgQEAgY2xhc3MgQ3VycmVudFNjcmlwdEluY3JlbWVudGVyIHsKIHB1YmxpYzoKICAgICBDdXJy
ZW50U2NyaXB0SW5jcmVtZW50ZXIoRG9jdW1lbnQqIGRvY3VtZW50LCBFbGVtZW50KiBlbGVtZW50
KQogICAgICAgICA6IG1fZG9jdW1lbnQoZG9jdW1lbnQpCi0gICAgICAgICwgbV9pc0hUTUxTY3Jp
cHRFbGVtZW50KGlzSFRNTFNjcmlwdEVsZW1lbnQoZWxlbWVudCkpCisgICAgICAgICwgbV9pc0hU
TUxTY3JpcHRFbGVtZW50KGlzPEhUTUxTY3JpcHRFbGVtZW50PihlbGVtZW50KSkKICAgICB7CiAg
ICAgICAgIGlmIChtX2lzSFRNTFNjcmlwdEVsZW1lbnQpCiAgICAgICAgICAgICBtX2RvY3VtZW50
LT5wdXNoQ3VycmVudFNjcmlwdChkb3duY2FzdDxIVE1MU2NyaXB0RWxlbWVudD4oZWxlbWVudCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmNwcAppbmRleCBhYTAxYWUxMDlkNWVmMTJmOTJl
OGFjZWFlZmQ0YmU0NzFiYzA0Nzg5Li5jNzgzOTU5M2NkMzJiNjhhMGFiZTY2OGYwMTg3YTI4ZmIz
ZGQ3MjI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmNwcApAQCAtMjU0LDcgKzI1NCw3
IEBAIHZvaWQgRGF0YVRyYW5zZmVyOjpzZXREcmFnSW1hZ2UoRWxlbWVudCogZWxlbWVudCwgaW50
IHgsIGludCB5KQogICAgICAgICByZXR1cm47CiAKICAgICBDYWNoZWRJbWFnZSogaW1hZ2UgPSBu
dWxscHRyOwotICAgIGlmIChlbGVtZW50ICYmIGlzSFRNTEltYWdlRWxlbWVudChlbGVtZW50KSAm
JiAhZWxlbWVudC0+aW5Eb2N1bWVudCgpKQorICAgIGlmIChlbGVtZW50ICYmIGlzPEhUTUxJbWFn
ZUVsZW1lbnQ+KGVsZW1lbnQpICYmICFlbGVtZW50LT5pbkRvY3VtZW50KCkpCiAgICAgICAgIGlt
YWdlID0gZG93bmNhc3Q8SFRNTEltYWdlRWxlbWVudD4oKmVsZW1lbnQpLmNhY2hlZEltYWdlKCk7
CiAKICAgICBtX2RyYWdMb2NhdGlvbiA9IEludFBvaW50KHgsIHkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50T3JkZXJlZE1hcC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnRPcmRlcmVkTWFwLmNwcAppbmRleCA3N2VlYzNiNzVmNDlhODAwMjRkNmIwOTEx
NWMyM2ExOWZkMjliM2ZhLi4zNGNlOWMyZWFjOGRmMmQxYzk0NmZjNTFlYmRiMjQzYWU1ZDU4ZmVi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRPcmRlcmVkTWFwLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRPcmRlcmVkTWFwLmNwcApAQCAtNTMsMjMg
KzUzLDIzIEBAIGlubGluZSBib29sIGtleU1hdGNoZXNOYW1lKGNvbnN0IEF0b21pY1N0cmluZ0lt
cGwmIGtleSwgY29uc3QgRWxlbWVudCYgZWxlbWVudCkKIAogaW5saW5lIGJvb2wga2V5TWF0Y2hl
c01hcE5hbWUoY29uc3QgQXRvbWljU3RyaW5nSW1wbCYga2V5LCBjb25zdCBFbGVtZW50JiBlbGVt
ZW50KQogewotICAgIHJldHVybiBpc0hUTUxNYXBFbGVtZW50KGVsZW1lbnQpICYmIGRvd25jYXN0
PEhUTUxNYXBFbGVtZW50PihlbGVtZW50KS5nZXROYW1lKCkuaW1wbCgpID09ICZrZXk7CisgICAg
cmV0dXJuIGlzPEhUTUxNYXBFbGVtZW50PihlbGVtZW50KSAmJiBkb3duY2FzdDxIVE1MTWFwRWxl
bWVudD4oZWxlbWVudCkuZ2V0TmFtZSgpLmltcGwoKSA9PSAma2V5OwogfQogCiBpbmxpbmUgYm9v
bCBrZXlNYXRjaGVzTG93ZXJjYXNlZE1hcE5hbWUoY29uc3QgQXRvbWljU3RyaW5nSW1wbCYga2V5
LCBjb25zdCBFbGVtZW50JiBlbGVtZW50KQogewotICAgIHJldHVybiBpc0hUTUxNYXBFbGVtZW50
KGVsZW1lbnQpICYmIGRvd25jYXN0PEhUTUxNYXBFbGVtZW50PihlbGVtZW50KS5nZXROYW1lKCku
bG93ZXIoKS5pbXBsKCkgPT0gJmtleTsKKyAgICByZXR1cm4gaXM8SFRNTE1hcEVsZW1lbnQ+KGVs
ZW1lbnQpICYmIGRvd25jYXN0PEhUTUxNYXBFbGVtZW50PihlbGVtZW50KS5nZXROYW1lKCkubG93
ZXIoKS5pbXBsKCkgPT0gJmtleTsKIH0KIAogaW5saW5lIGJvb2wga2V5TWF0Y2hlc0xvd2VyY2Fz
ZWRVc2VtYXAoY29uc3QgQXRvbWljU3RyaW5nSW1wbCYga2V5LCBjb25zdCBFbGVtZW50JiBlbGVt
ZW50KQogewogICAgIC8vIEZJWE1FOiBIVE1MNSBzcGVjaWZpY2F0aW9uIHNheXMgd2Ugc2hvdWxk
IG1hdGNoIGJvdGggaW1hZ2UgYW5kIG9iamVjdCBlbGVtZW50cy4KLSAgICByZXR1cm4gaXNIVE1M
SW1hZ2VFbGVtZW50KGVsZW1lbnQpICYmIGRvd25jYXN0PEhUTUxJbWFnZUVsZW1lbnQ+KGVsZW1l
bnQpLm1hdGNoZXNMb3dlcmNhc2VkVXNlbWFwKGtleSk7CisgICAgcmV0dXJuIGlzPEhUTUxJbWFn
ZUVsZW1lbnQ+KGVsZW1lbnQpICYmIGRvd25jYXN0PEhUTUxJbWFnZUVsZW1lbnQ+KGVsZW1lbnQp
Lm1hdGNoZXNMb3dlcmNhc2VkVXNlbWFwKGtleSk7CiB9CiAKIGlubGluZSBib29sIGtleU1hdGNo
ZXNMYWJlbEZvckF0dHJpYnV0ZShjb25zdCBBdG9taWNTdHJpbmdJbXBsJiBrZXksIGNvbnN0IEVs
ZW1lbnQmIGVsZW1lbnQpCiB7Ci0gICAgcmV0dXJuIGlzSFRNTExhYmVsRWxlbWVudChlbGVtZW50
KSAmJiBlbGVtZW50LmZhc3RHZXRBdHRyaWJ1dGUoZm9yQXR0cikuaW1wbCgpID09ICZrZXk7Cisg
ICAgcmV0dXJuIGlzPEhUTUxMYWJlbEVsZW1lbnQ+KGVsZW1lbnQpICYmIGVsZW1lbnQuZmFzdEdl
dEF0dHJpYnV0ZShmb3JBdHRyKS5pbXBsKCkgPT0gJmtleTsKIH0KIAogaW5saW5lIGJvb2wga2V5
TWF0Y2hlc1dpbmRvd05hbWVkSXRlbShjb25zdCBBdG9taWNTdHJpbmdJbXBsJiBrZXksIGNvbnN0
IEVsZW1lbnQmIGVsZW1lbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnRTdHlsZVNoZWV0Q29sbGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRT
dHlsZVNoZWV0Q29sbGVjdGlvbi5jcHAKaW5kZXggODg5YWU2MmIwYjAwYjVkZjgyNzE2NmY0OTVi
MGNmYWM0MDViMjc0OC4uODNhNDMwMzRlZTFkZGU4ODVhNzQyYmM0MDg5OGZmMGRhNDE1M2FkZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rp
b24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0
aW9uLmNwcApAQCAtMjg0LDcgKzI4NCw3IEBAIHZvaWQgRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVj
dGlvbjo6Y29sbGVjdEFjdGl2ZVN0eWxlU2hlZXRzKFZlY3RvcjxSZWZQdHI8U3R5bGVTCiAgICAg
ICAgICAgICBFbGVtZW50JiBlbGVtZW50ID0gdG9FbGVtZW50KCpub2RlKTsKICAgICAgICAgICAg
IEF0b21pY1N0cmluZyB0aXRsZSA9IGVsZW1lbnQuZmFzdEdldEF0dHJpYnV0ZSh0aXRsZUF0dHIp
OwogICAgICAgICAgICAgYm9vbCBlbmFibGVkVmlhU2NyaXB0ID0gZmFsc2U7Ci0gICAgICAgICAg
ICBpZiAoaXNIVE1MTGlua0VsZW1lbnQoZWxlbWVudCkpIHsKKyAgICAgICAgICAgIGlmIChpczxI
VE1MTGlua0VsZW1lbnQ+KGVsZW1lbnQpKSB7CiAgICAgICAgICAgICAgICAgLy8gPExJTks+IGVs
ZW1lbnQKICAgICAgICAgICAgICAgICBIVE1MTGlua0VsZW1lbnQmIGxpbmtFbGVtZW50ID0gZG93
bmNhc3Q8SFRNTExpbmtFbGVtZW50PihlbGVtZW50KTsKICAgICAgICAgICAgICAgICBpZiAobGlu
a0VsZW1lbnQuaXNEaXNhYmxlZCgpKQpAQCAtMzA3LDcgKzMwNyw3IEBAIHZvaWQgRG9jdW1lbnRT
dHlsZVNoZWV0Q29sbGVjdGlvbjo6Y29sbGVjdEFjdGl2ZVN0eWxlU2hlZXRzKFZlY3RvcjxSZWZQ
dHI8U3R5bGVTCiAgICAgICAgICAgICAvLyBzZXQgb2Ygc2hlZXRzIHRoYXQgd2lsbCBiZSBlbmFi
bGVkLgogICAgICAgICAgICAgaWYgKGlzPFNWR1N0eWxlRWxlbWVudD4oZWxlbWVudCkpCiAgICAg
ICAgICAgICAgICAgc2hlZXQgPSBkb3duY2FzdDxTVkdTdHlsZUVsZW1lbnQ+KGVsZW1lbnQpLnNo
ZWV0KCk7Ci0gICAgICAgICAgICBlbHNlIGlmIChpc0hUTUxMaW5rRWxlbWVudChlbGVtZW50KSkK
KyAgICAgICAgICAgIGVsc2UgaWYgKGlzPEhUTUxMaW5rRWxlbWVudD4oZWxlbWVudCkpCiAgICAg
ICAgICAgICAgICAgc2hlZXQgPSBkb3duY2FzdDxIVE1MTGlua0VsZW1lbnQ+KGVsZW1lbnQpLnNo
ZWV0KCk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgc2hlZXQgPSBkb3duY2Fz
dDxIVE1MU3R5bGVFbGVtZW50PihlbGVtZW50KS5zaGVldCgpOwpAQCAtMzIyLDcgKzMyMiw3IEBA
IHZvaWQgRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbjo6Y29sbGVjdEFjdGl2ZVN0eWxlU2hl
ZXRzKFZlY3RvcjxSZWZQdHI8U3R5bGVTCiAgICAgICAgICAgICAgICAgICAgIC8vIHdlIGFyZSBO
T1QgYW4gYWx0ZXJuYXRlIHNoZWV0LCB0aGVuIGVzdGFibGlzaAogICAgICAgICAgICAgICAgICAg
ICAvLyB1cyBhcyB0aGUgcHJlZmVycmVkIHNldC4gT3RoZXJ3aXNlLCBqdXN0IGlnbm9yZQogICAg
ICAgICAgICAgICAgICAgICAvLyB0aGlzIHNoZWV0LgotICAgICAgICAgICAgICAgICAgICBpZiAo
aXNIVE1MU3R5bGVFbGVtZW50KGVsZW1lbnQpIHx8ICFyZWwuY29udGFpbnMoImFsdGVybmF0ZSIp
KQorICAgICAgICAgICAgICAgICAgICBpZiAoaXM8SFRNTFN0eWxlRWxlbWVudD4oZWxlbWVudCkg
fHwgIXJlbC5jb250YWlucygiYWx0ZXJuYXRlIikpCiAgICAgICAgICAgICAgICAgICAgICAgICBt
X3ByZWZlcnJlZFN0eWxlc2hlZXRTZXROYW1lID0gbV9zZWxlY3RlZFN0eWxlc2hlZXRTZXROYW1l
ID0gdGl0bGU7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGlmICh0aXRsZSAh
PSBtX3ByZWZlcnJlZFN0eWxlc2hlZXRTZXROYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL05vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCmluZGV4IGQxY2Ni
OTRmNDc5MzRlZTMyZDNiOTFhMmQ0YWQ2OWEwOGQ2NjM2MzUuLmQxNTAzZmY3NGI4OTc5YzRhYzkz
YjEyNTc3YjU0MGU3ZWIxZGEzYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2Rl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKQEAgLTE3MTYsNyArMTcxNiw3
IEBAIEVsZW1lbnQqIE5vZGU6OmVuY2xvc2luZ0xpbmtFdmVudFBhcmVudE9yU2VsZigpCiAgICAg
ICAgIC8vIEZvciBpbWFnZW1hcHMsIHRoZSBlbmNsb3NpbmcgbGluayBlbGVtZW50IGlzIHRoZSBh
c3NvY2lhdGVkIGFyZWEgZWxlbWVudCBub3QgdGhlIGltYWdlIGl0c2VsZi4KICAgICAgICAgLy8g
U28gd2UgZG9uJ3QgbGV0IGltYWdlcyBiZSB0aGUgZW5jbG9zaW5nIGxpbmsgZWxlbWVudCwgZXZl
biB0aG91Z2ggaXNMaW5rIHNvbWV0aW1lcyByZXR1cm5zCiAgICAgICAgIC8vIHRydWUgZm9yIHRo
ZW0uCi0gICAgICAgIGlmIChub2RlLT5pc0xpbmsoKSAmJiAhaXNIVE1MSW1hZ2VFbGVtZW50KG5v
ZGUpKQorICAgICAgICBpZiAobm9kZS0+aXNMaW5rKCkgJiYgIWlzPEhUTUxJbWFnZUVsZW1lbnQ+
KG5vZGUpKQogICAgICAgICAgICAgcmV0dXJuIHRvRWxlbWVudChub2RlKTsKICAgICB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vUG9zaXRpb24uY3BwCmluZGV4IDIzMmQ3NzcwM2E4ODgzZGZhYmEzMDVlZGVhNzg5ODli
ZTUzZDY2YzIuLjY3NmQxYzc0ODBlYmQ0MDk2OGEzYmE2ZTlmN2RhMTZhYjdkNjFkZGUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL1Bvc2l0aW9uLmNwcApAQCAtNTI5LDcgKzUyOSw3IEBAIHN0YXRpYyBib29sIGVuZHNP
Zk5vZGVBcmVWaXN1YWxseURpc3RpbmN0UG9zaXRpb25zKE5vZGUqIG5vZGUpCiAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgICAgICAKICAgICAvLyBEb24ndCBpbmNsdWRlIGlubGluZSB0YWJsZXMu
Ci0gICAgaWYgKGlzSFRNTFRhYmxlRWxlbWVudChub2RlKSkKKyAgICBpZiAoaXM8SFRNTFRhYmxl
RWxlbWVudD4obm9kZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKICAgICAvLyBUaGVy
ZSBpcyBhIFZpc2libGVQb3NpdGlvbiBpbnNpZGUgYW4gZW1wdHkgaW5saW5lLWJsb2NrIGNvbnRh
aW5lci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmNwcAppbmRleCBhNWMyZDMyYmZhMDY0
ZTNiNThkYTY2MGM5N2VkNjE5YTQxYmE2ZGY3Li5lN2E2NzE2ZDI5ZWViNmE1YzQzYWM0Mzk2YjNl
MzFmYTI5NDFlOWRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQuY3BwCkBAIC0zODIs
NyArMzgyLDcgQEAgU3RyaW5nIFNjcmlwdEVsZW1lbnQ6OnNjcmlwdENvbnRlbnQoKSBjb25zdAog
CiBTY3JpcHRFbGVtZW50KiB0b1NjcmlwdEVsZW1lbnRJZlBvc3NpYmxlKEVsZW1lbnQqIGVsZW1l
bnQpCiB7Ci0gICAgaWYgKGlzSFRNTFNjcmlwdEVsZW1lbnQoZWxlbWVudCkpCisgICAgaWYgKGlz
PEhUTUxTY3JpcHRFbGVtZW50PihlbGVtZW50KSkKICAgICAgICAgcmV0dXJuIGRvd25jYXN0PEhU
TUxTY3JpcHRFbGVtZW50PihlbGVtZW50KTsKIAogICAgIGlmIChpczxTVkdTY3JpcHRFbGVtZW50
PihlbGVtZW50KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9WaXNpdGVkTGlua1N0
YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9WaXNpdGVkTGlua1N0YXRlLmNwcAppbmRleCA0
YzIyZDAwNzM2ZGZmZTAzMjVlMWJhMTFjMDg4OTYwNGRlNjJlZTM1Li41ODY5MDlhNWMwYzk3MDU5
OTBkNDJjMGRiYjlmOGVlZWQ1ODg3NWM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
VmlzaXRlZExpbmtTdGF0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1Zpc2l0ZWRMaW5r
U3RhdGUuY3BwCkBAIC02OSw3ICs2OSw3IEBAIHZvaWQgVmlzaXRlZExpbmtTdGF0ZTo6aW52YWxp
ZGF0ZVN0eWxlRm9yQWxsTGlua3MoKQogCiBpbmxpbmUgc3RhdGljIExpbmtIYXNoIGxpbmtIYXNo
Rm9yRWxlbWVudChEb2N1bWVudCYgZG9jdW1lbnQsIEVsZW1lbnQmIGVsZW1lbnQpCiB7Ci0gICAg
aWYgKGlzSFRNTEFuY2hvckVsZW1lbnQoZWxlbWVudCkpCisgICAgaWYgKGlzPEhUTUxBbmNob3JF
bGVtZW50PihlbGVtZW50KSkKICAgICAgICAgcmV0dXJuIGRvd25jYXN0PEhUTUxBbmNob3JFbGVt
ZW50PihlbGVtZW50KS52aXNpdGVkTGlua0hhc2goKTsKICAgICBpZiAoY29uc3QgQXRvbWljU3Ry
aW5nKiBhdHRyaWJ1dGUgPSBsaW5rQXR0cmlidXRlKGVsZW1lbnQpKQogICAgICAgICByZXR1cm4g
V2ViQ29yZTo6dmlzaXRlZExpbmtIYXNoKGRvY3VtZW50LmJhc2VVUkwoKSwgKmF0dHJpYnV0ZSk7
CkBAIC0xMDAsNyArMTAwLDcgQEAgRUluc2lkZUxpbmsgVmlzaXRlZExpbmtTdGF0ZTo6ZGV0ZXJt
aW5lTGlua1N0YXRlU2xvd0Nhc2UoRWxlbWVudCYgZWxlbWVudCkKICAgICAgICAgcmV0dXJuIElu
c2lkZVZpc2l0ZWRMaW5rOwogCiAgICAgTGlua0hhc2ggaGFzaDsKLSAgICBpZiAoaXNIVE1MQW5j
aG9yRWxlbWVudChlbGVtZW50KSkKKyAgICBpZiAoaXM8SFRNTEFuY2hvckVsZW1lbnQ+KGVsZW1l
bnQpKQogICAgICAgICBoYXNoID0gZG93bmNhc3Q8SFRNTEFuY2hvckVsZW1lbnQ+KGVsZW1lbnQp
LnZpc2l0ZWRMaW5rSGFzaCgpOwogICAgIGVsc2UKICAgICAgICAgaGFzaCA9IFdlYkNvcmU6OnZp
c2l0ZWRMaW5rSGFzaChlbGVtZW50LmRvY3VtZW50KCkuYmFzZVVSTCgpLCAqYXR0cmlidXRlKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9tYWtlX25hbWVzLnBsIGIvU291cmNlL1dl
YkNvcmUvZG9tL21ha2VfbmFtZXMucGwKaW5kZXggNzk1N2VhNDRiZTY5NmQ0YjczOTQ3YTkwODBk
YzcwZTUzNzEzZjQ1Ny4uZmY1ZjE2NjNjN2EzZmRjY2Q1ZWU1NWJiY2Q0NmZmYzA3ZWNlOWI5OCAx
MDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL21ha2VfbmFtZXMucGwKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL21ha2VfbmFtZXMucGwKQEAgLTY1OSwxNSArNjU5LDcgQEAgRU5ECiB9Owog
RU5ECiAgICAgICAgOwotICAgICAgIGlmICgkcGFyYW1ldGVyc3tuYW1lc3BhY2V9IGVxICJIVE1M
IikgewotICAgICAgICAgICBwcmludCBGIDw8RU5ECi0vLyBGSVhNRTogUmVtb3ZlIHRoZXNlIG1h
Y3JvcyBvbmNlIHRoZSBjb2RlIGhhcyBiZWVuIHBvcnRlZCB0byB1c2luZwotLy8gaXM8KkVsZW1l
bnQ+KCkuCi0jZGVmaW5lIGlzJGNsYXNzKHgpIFdlYkNvcmU6OmlzPFdlYkNvcmU6OiRjbGFzcz4o
eCkKLUVORAotICAgICAgICAgICA7Ci0gICAgICAgIH0KLSAgICAgICAgcHJpbnQgRiAiXG4iOwor
ICAgICAgIHByaW50IEYgIlxuIjsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRGVsZXRlU2VsZWN0aW9uQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0RlbGV0ZVNlbGVjdGlvbkNvbW1hbmQuY3BwCmluZGV4IGY4YTY0NGEyNmE1NGQ5NTY2
MTEwZWUyZmNlN2RjODk2Mzk4Yjc0MDMuLjNhNTc5MzFmNjI1NDY3MmVhMzk0N2RkNjk4ZWZhYjFk
MzczMTcwMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRGVsZXRlU2VsZWN0
aW9uQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9EZWxldGVTZWxlY3Rp
b25Db21tYW5kLmNwcApAQCAtNDU3LDcgKzQ1Nyw3IEBAIHZvaWQgRGVsZXRlU2VsZWN0aW9uQ29t
bWFuZDo6aGFuZGxlR2VuZXJhbERlbGV0ZSgpCiAgICAgbWFrZVN0eWxpbmdFbGVtZW50c0RpcmVj
dENoaWxkcmVuT2ZFZGl0YWJsZVJvb3RUb1ByZXZlbnRTdHlsZUxvc3MoKTsKIAogICAgIC8vIE5l
dmVyIHJlbW92ZSB0aGUgc3RhcnQgYmxvY2sgdW5sZXNzIGl0J3MgYSB0YWJsZSwgaW4gd2hpY2gg
Y2FzZSB3ZSB3b24ndCBtZXJnZSBjb250ZW50IGluLgotICAgIGlmIChzdGFydE5vZGUgPT0gbV9z
dGFydEJsb2NrICYmIHN0YXJ0T2Zmc2V0ID09IDAgJiYgY2FuSGF2ZUNoaWxkcmVuRm9yRWRpdGlu
ZyhzdGFydE5vZGUpICYmICFpc0hUTUxUYWJsZUVsZW1lbnQoc3RhcnROb2RlKSkgeworICAgIGlm
IChzdGFydE5vZGUgPT0gbV9zdGFydEJsb2NrICYmICFzdGFydE9mZnNldCAmJiBjYW5IYXZlQ2hp
bGRyZW5Gb3JFZGl0aW5nKHN0YXJ0Tm9kZSkgJiYgIWlzPEhUTUxUYWJsZUVsZW1lbnQ+KHN0YXJ0
Tm9kZSkpIHsKICAgICAgICAgc3RhcnRPZmZzZXQgPSAwOwogICAgICAgICBzdGFydE5vZGUgPSBO
b2RlVHJhdmVyc2FsOjpuZXh0KHN0YXJ0Tm9kZSk7CiAgICAgICAgIGlmICghc3RhcnROb2RlKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCmluZGV4IDMwMmRlNDE4NjUzMDY1NmYzNjc4OGJiNzRh
YjA0NTJhZTA1MzYxMWIuLmU1YjViNzIyOTZhM2RiNDQ4MjkwMDBjYTEwNjIyMjRhY2FiOTZiMDMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKQEAgLTMzMCw3ICszMzAsNyBAQCBzdGF0aWMg
SFRNTEltYWdlRWxlbWVudCogaW1hZ2VFbGVtZW50RnJvbUltYWdlRG9jdW1lbnQoRG9jdW1lbnQm
IGRvY3VtZW50KQogICAgIE5vZGUqIG5vZGUgPSBib2R5LT5maXJzdENoaWxkKCk7CiAgICAgaWYg
KCFub2RlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBpZiAoIWlzSFRNTEltYWdlRWxl
bWVudChub2RlKSkKKyAgICBpZiAoIWlzPEhUTUxJbWFnZUVsZW1lbnQ+KG5vZGUpKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICAgICByZXR1cm4gZG93bmNhc3Q8SFRNTEltYWdlRWxlbWVudD4o
bm9kZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0
aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCmluZGV4
IDdlNjMzOTNiZjc1NGQ4YTMzZDFmNzk5MzdlYzhmNTYyZDRhNjBjNWEuLjY5MGI2OTE1ZjBkZGZm
ZGY3NmNiNzg5YzFkNDNhODk3MjY5N2ZjMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJh
bWVTZWxlY3Rpb24uY3BwCkBAIC0yMDIxLDcgKzIwMjEsNyBAQCBzdGF0aWMgSFRNTEZvcm1FbGVt
ZW50KiBzY2FuRm9yRm9ybShFbGVtZW50KiBzdGFydCkKICAgICBhdXRvIGRlc2NlbmRhbnRzID0g
ZGVzY2VuZGFudHNPZlR5cGU8SFRNTEVsZW1lbnQ+KHN0YXJ0LT5kb2N1bWVudCgpKTsKICAgICBm
b3IgKGF1dG8gaXQgPSBkZXNjZW5kYW50cy5mcm9tKCpzdGFydCksIGVuZCA9IGRlc2NlbmRhbnRz
LmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQpIHsKICAgICAgICAgSFRNTEVsZW1lbnQmIGVsZW1lbnQg
PSAqaXQ7Ci0gICAgICAgIGlmIChpc0hUTUxGb3JtRWxlbWVudCgmZWxlbWVudCkpCisgICAgICAg
IGlmIChpczxIVE1MRm9ybUVsZW1lbnQ+KCZlbGVtZW50KSkKICAgICAgICAgICAgIHJldHVybiBk
b3duY2FzdDxIVE1MRm9ybUVsZW1lbnQ+KCZlbGVtZW50KTsKICAgICAgICAgaWYgKGlzPEhUTUxG
b3JtQ29udHJvbEVsZW1lbnQ+KGVsZW1lbnQpKQogICAgICAgICAgICAgcmV0dXJuIGRvd25jYXN0
PEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ+KGVsZW1lbnQpLmZvcm0oKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0TGluZUJyZWFrQ29tbWFuZC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0luc2VydExpbmVCcmVha0NvbW1hbmQuY3BwCmluZGV4IGU1NjM5NTA5
YjBkY2E5NjZjM2U2MDIzY2Y2YWI0ZGQwMmNjYTFiZjEuLjExYTA3NDdhNzgyZGI4N2FlNmQ5YzVk
YmNiMmE3ZjY5ZDJhZGQ1OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5z
ZXJ0TGluZUJyZWFrQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9JbnNl
cnRMaW5lQnJlYWtDb21tYW5kLmNwcApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkZyYW1l
LmgiCiAjaW5jbHVkZSAiRnJhbWVTZWxlY3Rpb24uaCIKICNpbmNsdWRlICJIVE1MRWxlbWVudC5o
IgorI2luY2x1ZGUgIkhUTUxIUkVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNp
bmNsdWRlICJIVE1MVGFibGVFbGVtZW50LmgiCiAjaW5jbHVkZSAiUmVuZGVyRWxlbWVudC5oIgpA
QCAtMTE0LDcgKzExNSw3IEBAIHZvaWQgSW5zZXJ0TGluZUJyZWFrQ29tbWFuZDo6ZG9BcHBseSgp
CiAgICAgLy8gRklYTUU6IE5lZWQgdG8gbWVyZ2UgdGV4dCBub2RlcyB3aGVuIGluc2VydGluZyBq
dXN0IGFmdGVyIG9yIGJlZm9yZSB0ZXh0LgogICAgIAogICAgIGlmIChpc0VuZE9mUGFyYWdyYXBo
KGNhcmV0KSAmJiAhbGluZUJyZWFrRXhpc3RzQXRWaXNpYmxlUG9zaXRpb24oY2FyZXQpKSB7Ci0g
ICAgICAgIGJvb2wgbmVlZEV4dHJhTGluZUJyZWFrID0gIXBvcy5kZXByZWNhdGVkTm9kZSgpLT5o
YXNUYWdOYW1lKGhyVGFnKSAmJiAhaXNIVE1MVGFibGVFbGVtZW50KHBvcy5kZXByZWNhdGVkTm9k
ZSgpKTsKKyAgICAgICAgYm9vbCBuZWVkRXh0cmFMaW5lQnJlYWsgPSAhaXM8SFRNTEhSRWxlbWVu
dD4ocG9zLmRlcHJlY2F0ZWROb2RlKCkpICYmICFpczxIVE1MVGFibGVFbGVtZW50Pihwb3MuZGVw
cmVjYXRlZE5vZGUoKSk7CiAgICAgICAgIAogICAgICAgICBpbnNlcnROb2RlQXQobm9kZVRvSW5z
ZXJ0LmdldCgpLCBwb3MpOwogICAgICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvSW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9yQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0luc2VydFBhcmFncmFwaFNlcGFyYXRvckNvbW1hbmQuY3BwCmluZGV4IDdmYjc1
MDM4Yzk0NTg2NDAxYTc3MGMxMzcyOTA2NjdhMGQ1NTFiODIuLjQ5OWRhZDlhYjYzOGVlMWJkZWU0
ODE0NGQ1MzE0NGJiYjg1NjJkMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
SW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9yQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9JbnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3JDb21tYW5kLmNwcApAQCAtMTY5LDcgKzE2
OSw3IEBAIHZvaWQgSW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9yQ29tbWFuZDo6ZG9BcHBseSgpCiAg
ICAgaWYgKCFzdGFydEJsb2NrCiAgICAgICAgIHx8ICFzdGFydEJsb2NrLT5ub25TaGFkb3dCb3Vu
ZGFyeVBhcmVudE5vZGUoKQogICAgICAgICB8fCBpc1RhYmxlQ2VsbChzdGFydEJsb2NrLmdldCgp
KQotICAgICAgICB8fCBpc0hUTUxGb3JtRWxlbWVudChzdGFydEJsb2NrLmdldCgpKQorICAgICAg
ICB8fCBpczxIVE1MRm9ybUVsZW1lbnQ+KHN0YXJ0QmxvY2suZ2V0KCkpCiAgICAgICAgIC8vIEZJ
WE1FOiBJZiB0aGUgbm9kZSBpcyBoaWRkZW4sIHdlIGRvbid0IGhhdmUgYSBjYW5vbmljYWwgcG9z
aXRpb24gc28gd2Ugd2lsbCBkbyB0aGUgd3JvbmcgdGhpbmcgZm9yIHRhYmxlcyBhbmQgPGhyPi4g
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQwMzQyCiAgICAgICAgIHx8
ICghY2Fub25pY2FsUG9zLmlzTnVsbCgpICYmIGNhbm9uaWNhbFBvcy5kZXByZWNhdGVkTm9kZSgp
LT5yZW5kZXJlcigpICYmIGNhbm9uaWNhbFBvcy5kZXByZWNhdGVkTm9kZSgpLT5yZW5kZXJlcigp
LT5pc1RhYmxlKCkpCiAgICAgICAgIHx8ICghY2Fub25pY2FsUG9zLmlzTnVsbCgpICYmIGNhbm9u
aWNhbFBvcy5kZXByZWNhdGVkTm9kZSgpLT5oYXNUYWdOYW1lKGhyVGFnKSkpIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAKaW5kZXgg
MzExM2FmMzQwOTY2NGI0MGJmMTBmOGJjYzFjYWU4Njk0ZWNiNDgzNi4uODE2ZWEwYTZkYTUxMWQx
OTE4NDAxODMwMWIxYjQ5MDZlMGM1YjFhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAKQEAgLTcyMSw3ICs3MjEsNyBAQCBzdGF0
aWMgdm9pZCByZW1vdmVIZWFkQ29udGVudHMoUmVwbGFjZW1lbnRGcmFnbWVudCYgZnJhZ21lbnQp
CiAgICAgYXV0byBpdCA9IGRlc2NlbmRhbnRzT2ZUeXBlPEVsZW1lbnQ+KCpmcmFnbWVudC5mcmFn
bWVudCgpKS5iZWdpbigpOwogICAgIGF1dG8gZW5kID0gZGVzY2VuZGFudHNPZlR5cGU8RWxlbWVu
dD4oKmZyYWdtZW50LmZyYWdtZW50KCkpLmVuZCgpOwogICAgIHdoaWxlIChpdCAhPSBlbmQpIHsK
LSAgICAgICAgaWYgKGl0LT5oYXNUYWdOYW1lKGJhc2VUYWcpIHx8IGl0LT5oYXNUYWdOYW1lKGxp
bmtUYWcpIHx8IGl0LT5oYXNUYWdOYW1lKG1ldGFUYWcpIHx8IGl0LT5oYXNUYWdOYW1lKHN0eWxl
VGFnKSB8fCBpc0hUTUxUaXRsZUVsZW1lbnQoKml0KSkgeworICAgICAgICBpZiAoaXM8SFRNTEJh
c2VFbGVtZW50PigqaXQpIHx8IGlzPEhUTUxMaW5rRWxlbWVudD4oKml0KSB8fCBpczxIVE1MTWV0
YUVsZW1lbnQ+KCppdCkgfHwgaXM8SFRNTFN0eWxlRWxlbWVudD4oKml0KSB8fCBpczxIVE1MVGl0
bGVFbGVtZW50PigqaXQpKSB7CiAgICAgICAgICAgICB0b1JlbW92ZS5hcHBlbmQoJippdCk7CiAg
ICAgICAgICAgICBpdC50cmF2ZXJzZU5leHRTa2lwcGluZ0NoaWxkcmVuKCk7CiAgICAgICAgICAg
ICBjb250aW51ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRN
TENvbnZlcnRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRl
ci5tbQppbmRleCAzYmNhOTQ3NDEyMmQzYTFjMWY1OTJhYTlkM2YzMDI2N2QzNTE5MmQxLi4wNzlk
Yjk0NDE0OWRmZjA0MTY2YjBhMDUxMTAyMTVkOTJlMzI2YzFmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCkBAIC0yMDM0LDcgKzIwMzQsNyBAQCBC
T09MIEhUTUxDb252ZXJ0ZXI6Ol9wcm9jZXNzRWxlbWVudChFbGVtZW50JiBlbGVtZW50LCBOU0lu
dGVnZXIgZGVwdGgpCiAgICAgICAgIGlmICghbGlzdFN0eWxlVHlwZS5sZW5ndGgoKSkKICAgICAg
ICAgICAgIGxpc3RTdHlsZVR5cGUgPSAiZGVjaW1hbCI7CiAgICAgICAgIGxpc3QgPSBhZG9wdE5T
KFtbUGxhdGZvcm1OU1RleHRMaXN0IGFsbG9jXSBpbml0V2l0aE1hcmtlckZvcm1hdDpTdHJpbmco
InsiICsgbGlzdFN0eWxlVHlwZSArICJ9Iikgb3B0aW9uczowXSk7Ci0gICAgICAgIGlmIChpc0hU
TUxPTGlzdEVsZW1lbnQoZWxlbWVudCkpIHsKKyAgICAgICAgaWYgKGlzPEhUTUxPTGlzdEVsZW1l
bnQ+KGVsZW1lbnQpKSB7CiAgICAgICAgICAgICBOU0ludGVnZXIgc3RhcnRpbmdJdGVtTnVtYmVy
ID0gZG93bmNhc3Q8SFRNTE9MaXN0RWxlbWVudD4oZWxlbWVudCkuc3RhcnQoKTsKICAgICAgICAg
ICAgIFtsaXN0IHNldFN0YXJ0aW5nSXRlbU51bWJlcjpzdGFydGluZ0l0ZW1OdW1iZXJdOwogICAg
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2h0bWxlZGl0aW5nLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcuY3BwCmluZGV4IGU4YzYwOGJi
OTUxYThlY2UxMWE5MGRlMTllNDRmOWUzYTIxZWEzY2UuLjVlOGY1OTVkMmQyZjJiODk4NWIzMjIz
YmZhNzBlMjcxOWUwODU0NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaHRt
bGVkaXRpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcuY3Bw
CkBAIC0xMjA0LDcgKzEyMDQsNyBAQCBib29sIGlzTm9uVGFibGVDZWxsSFRNTEJsb2NrRWxlbWVu
dChjb25zdCBOb2RlKiBub2RlKQogICAgIHJldHVybiBlbGVtZW50LT5oYXNUYWdOYW1lKGxpc3Rp
bmdUYWcpCiAgICAgICAgIHx8IGVsZW1lbnQtPmhhc1RhZ05hbWUob2xUYWcpCiAgICAgICAgIHx8
IGVsZW1lbnQtPmhhc1RhZ05hbWUocHJlVGFnKQotICAgICAgICB8fCBpc0hUTUxUYWJsZUVsZW1l
bnQoZWxlbWVudCkKKyAgICAgICAgfHwgaXM8SFRNTFRhYmxlRWxlbWVudD4oZWxlbWVudCkKICAg
ICAgICAgfHwgZWxlbWVudC0+aGFzVGFnTmFtZSh1bFRhZykKICAgICAgICAgfHwgZWxlbWVudC0+
aGFzVGFnTmFtZSh4bXBUYWcpCiAgICAgICAgIHx8IGVsZW1lbnQtPmhhc1RhZ05hbWUoaDFUYWcp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKaW5kZXggNTZjNzAwNzNiNjNkNWQ5MmRhYTJkZmM4
ZTI1MTIzNDZhY2E3NmQyYi4uMDlmNDY4NzI0Y2I3NjM1MjE5ZWNkZTAzNjRmMTFmNmZjNDNmYWNh
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcApAQCAtNDUyLDcgKzQ1Miw3IEBAIHN0YXRp
YyBOb2RlKiBhbmNlc3RvclRvUmV0YWluU3RydWN0dXJlQW5kQXBwZWFyYW5jZUZvckJsb2NrKE5v
ZGUqIGNvbW1vbkFuY2VzdG9yCiAKICAgICBpZiAoY29tbW9uQW5jZXN0b3JCbG9jay0+aGFzVGFn
TmFtZSh0Ym9keVRhZykgfHwgY29tbW9uQW5jZXN0b3JCbG9jay0+aGFzVGFnTmFtZSh0clRhZykp
IHsKICAgICAgICAgQ29udGFpbmVyTm9kZSogdGFibGUgPSBjb21tb25BbmNlc3RvckJsb2NrLT5w
YXJlbnROb2RlKCk7Ci0gICAgICAgIHdoaWxlICh0YWJsZSAmJiAhaXNIVE1MVGFibGVFbGVtZW50
KHRhYmxlKSkKKyAgICAgICAgd2hpbGUgKHRhYmxlICYmICFpczxIVE1MVGFibGVFbGVtZW50Pih0
YWJsZSkpCiAgICAgICAgICAgICB0YWJsZSA9IHRhYmxlLT5wYXJlbnROb2RlKCk7CiAKICAgICAg
ICAgcmV0dXJuIHRhYmxlOwpAQCAtOTM0LDcgKzkzNCw3IEBAIHN0YXRpYyBWZWN0b3I8UmVmPEhU
TUxFbGVtZW50Pj4gY29sbGVjdEVsZW1lbnRzVG9SZW1vdmVGcm9tRnJhZ21lbnQoQ29udGFpbmVy
Tm9kCiAgICAgICAgICAgICBjb2xsZWN0RWxlbWVudHNUb1JlbW92ZUZyb21GcmFnbWVudChlbGVt
ZW50KTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9Ci0gICAgICAgIGlmIChpc0hU
TUxIZWFkRWxlbWVudChlbGVtZW50KSB8fCBpc0hUTUxCb2R5RWxlbWVudChlbGVtZW50KSkKKyAg
ICAgICAgaWYgKGlzPEhUTUxIZWFkRWxlbWVudD4oZWxlbWVudCkgfHwgaXM8SFRNTEJvZHlFbGVt
ZW50PihlbGVtZW50KSkKICAgICAgICAgICAgIHRvUmVtb3ZlLmFwcGVuZChlbGVtZW50KTsKICAg
ICB9CiAgICAgcmV0dXJuIHRvUmVtb3ZlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZUUERpcmVj
dG9yeURvY3VtZW50LmNwcAppbmRleCBkNmYxNGQ3MzUzNTMyMzY5MWZjOTZmOGIwZjhmY2YzYjM4
Njg4Zjg5Li45YjBmZGVhOTk2MDc4NWZlNTllNDRkZWQwOTlkMTU3MjFmOWQzNTBkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmNwcApAQCAtMzAwLDcgKzMw
MCw3IEBAIGJvb2wgRlRQRGlyZWN0b3J5RG9jdW1lbnRQYXJzZXI6OmxvYWREb2N1bWVudFRlbXBs
YXRlKCkKICAgICBSZWZQdHI8RWxlbWVudD4gdGFibGVFbGVtZW50ID0gZG9jdW1lbnQoKS0+Z2V0
RWxlbWVudEJ5SWQoU3RyaW5nKEFTQ0lJTGl0ZXJhbCgiZnRwRGlyZWN0b3J5VGFibGUiKSkpOwog
ICAgIGlmICghdGFibGVFbGVtZW50KQogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBmaW5k
IGVsZW1lbnQgYnkgaWQgXCJmdHBEaXJlY3RvcnlUYWJsZVwiIGluIHRoZSB0ZW1wbGF0ZSBkb2N1
bWVudC4iKTsKLSAgICBlbHNlIGlmICghaXNIVE1MVGFibGVFbGVtZW50KHRhYmxlRWxlbWVudC5n
ZXQoKSkpCisgICAgZWxzZSBpZiAoIWlzPEhUTUxUYWJsZUVsZW1lbnQ+KHRhYmxlRWxlbWVudC5n
ZXQoKSkpCiAgICAgICAgIExPR19FUlJPUigiRWxlbWVudCBvZiBpZCBcImZ0cERpcmVjdG9yeVRh
YmxlXCIgaXMgbm90IGEgdGFibGUgZWxlbWVudCIpOwogICAgIGVsc2UgCiAgICAgICAgIG1fdGFi
bGVFbGVtZW50ID0gZG93bmNhc3Q8SFRNTFRhYmxlRWxlbWVudD4odGFibGVFbGVtZW50LmdldCgp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUFzc29jaWF0ZWRFbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUFzc29jaWF0ZWRFbGVtZW50LmNwcAppbmRl
eCA5ZGY0MDU5ODkyNDk4Y2VkY2YyMzZkYzQ2YWNlYTNkYTEwM2QxMWE3Li43MDQ1YThmNWU4ZWNj
Yjc1N2ZmYzA3NzQ1YjIxNmQ1ODAwYTY3MGZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0Zvcm1Bc3NvY2lhdGVkRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9G
b3JtQXNzb2NpYXRlZEVsZW1lbnQuY3BwCkBAIC05OCw3ICs5OCw3IEBAIEhUTUxGb3JtRWxlbWVu
dCogRm9ybUFzc29jaWF0ZWRFbGVtZW50OjpmaW5kQXNzb2NpYXRlZEZvcm0oY29uc3QgSFRNTEVs
ZW1lbnQqIGVsCiAgICAgICAgIC8vIHRyZWVTY29wZSgpLmdldEVsZW1lbnRCeUlkKCkgb3ZlciB0
aGUgZ2l2ZW4gZWxlbWVudC4KICAgICAgICAgSFRNTEZvcm1FbGVtZW50KiBuZXdGb3JtID0gbnVs
bHB0cjsKICAgICAgICAgRWxlbWVudCogbmV3Rm9ybUNhbmRpZGF0ZSA9IGVsZW1lbnQtPnRyZWVT
Y29wZSgpLmdldEVsZW1lbnRCeUlkKGZvcm1JZCk7Ci0gICAgICAgIGlmIChuZXdGb3JtQ2FuZGlk
YXRlICYmIGlzSFRNTEZvcm1FbGVtZW50KG5ld0Zvcm1DYW5kaWRhdGUpKQorICAgICAgICBpZiAo
bmV3Rm9ybUNhbmRpZGF0ZSAmJiBpczxIVE1MRm9ybUVsZW1lbnQ+KG5ld0Zvcm1DYW5kaWRhdGUp
KQogICAgICAgICAgICAgbmV3Rm9ybSA9IGRvd25jYXN0PEhUTUxGb3JtRWxlbWVudD4obmV3Rm9y
bUNhbmRpZGF0ZSk7CiAgICAgICAgIHJldHVybiBuZXdGb3JtOwogICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHAKaW5kZXggMzRhZmViOWY4OWZkM2YyMzgxOTg0
NTQ3YzcwMjQ3MzA1YjhkMzg5ZS4uNjU1YWFiMDhiYWJhZmFiYjgzYTk5ZDk1NzZlOTNhMTVjZGEx
NWM0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHAKQEAgLTE1
OCw3ICsxNTgsNyBAQCBzdGF0aWMgdm9pZCBhcHBlbmRTZXJ2ZXJNYXBNb3VzZVBvc2l0aW9uKFN0
cmluZ0J1aWxkZXImIHVybCwgRXZlbnQqIGV2ZW50KQogICAgIEFTU0VSVChldmVudC0+dGFyZ2V0
KCkpOwogICAgIE5vZGUqIHRhcmdldCA9IGV2ZW50LT50YXJnZXQoKS0+dG9Ob2RlKCk7CiAgICAg
QVNTRVJUKHRhcmdldCk7Ci0gICAgaWYgKCFpc0hUTUxJbWFnZUVsZW1lbnQodGFyZ2V0KSkKKyAg
ICBpZiAoIWlzPEhUTUxJbWFnZUVsZW1lbnQ+KHRhcmdldCkpCiAgICAgICAgIHJldHVybjsKIAog
ICAgIEhUTUxJbWFnZUVsZW1lbnQmIGltYWdlRWxlbWVudCA9IGRvd25jYXN0PEhUTUxJbWFnZUVs
ZW1lbnQ+KCp0YXJnZXQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXJl
YUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXJlYUVsZW1lbnQuY3BwCmlu
ZGV4IGRkODRiZGM2ODQwYzdhYjc2OTQxM2ZmZDFmMWEzNzNjMTY5NTc0MDcuLmIxMTUzZTc1M2Qw
OWM5ZWU0ZTk4YWJhYjlmZDc5NjExZDA3NWQyMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEFyZWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxB
cmVhRWxlbWVudC5jcHAKQEAgLTE4Miw3ICsxODIsNyBAQCBQYXRoIEhUTUxBcmVhRWxlbWVudDo6
Z2V0UmVnaW9uKGNvbnN0IExheW91dFNpemUmIHNpemUpIGNvbnN0CiBIVE1MSW1hZ2VFbGVtZW50
KiBIVE1MQXJlYUVsZW1lbnQ6OmltYWdlRWxlbWVudCgpIGNvbnN0CiB7CiAgICAgTm9kZSogbWFw
RWxlbWVudCA9IHBhcmVudE5vZGUoKTsKLSAgICBpZiAoIW1hcEVsZW1lbnQgfHwgIWlzSFRNTE1h
cEVsZW1lbnQobWFwRWxlbWVudCkpCisgICAgaWYgKCFtYXBFbGVtZW50IHx8ICFpczxIVE1MTWFw
RWxlbWVudD4obWFwRWxlbWVudCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIAogICAg
IHJldHVybiBkb3duY2FzdDxIVE1MTWFwRWxlbWVudD4oKm1hcEVsZW1lbnQpLmltYWdlRWxlbWVu
dCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnQuY3BwCmluZGV4IDBjZTJiMDZmZmU4NTg2
MWYzNmVkNTEwNTIwMmRjZWRhZTc0ZDczZTcuLmIyZDY1OTVlYjE5NDRlYWMzMzFlMDI3OTg4YjQx
YjUyNGI1NGM1MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudC5jcHAKQEAgLTEzOSw3
ICsxMzksNyBAQCB2b2lkIEhUTUxEb2N1bWVudDo6c2V0RGVzaWduTW9kZShjb25zdCBTdHJpbmcm
IHZhbHVlKQogY29uc3QgQXRvbWljU3RyaW5nJiBIVE1MRG9jdW1lbnQ6OmJnQ29sb3IoKSBjb25z
dAogewogICAgIEhUTUxFbGVtZW50KiBib2R5RWxlbWVudCA9IGJvZHkoKTsKLSAgICBpZiAoIWJv
ZHlFbGVtZW50IHx8ICFpc0hUTUxCb2R5RWxlbWVudChib2R5RWxlbWVudCkpCisgICAgaWYgKCFi
b2R5RWxlbWVudCB8fCAhaXM8SFRNTEJvZHlFbGVtZW50Pihib2R5RWxlbWVudCkpCiAgICAgICAg
IHJldHVybiBlbXB0eUF0b207CiAgICAgcmV0dXJuIGJvZHlFbGVtZW50LT5mYXN0R2V0QXR0cmli
dXRlKGJnY29sb3JBdHRyKTsKIH0KQEAgLTE0Nyw3ICsxNDcsNyBAQCBjb25zdCBBdG9taWNTdHJp
bmcmIEhUTUxEb2N1bWVudDo6YmdDb2xvcigpIGNvbnN0CiB2b2lkIEhUTUxEb2N1bWVudDo6c2V0
QmdDb2xvcihjb25zdCBTdHJpbmcmIHZhbHVlKQogewogICAgIEhUTUxFbGVtZW50KiBib2R5RWxl
bWVudCA9IGJvZHkoKTsKLSAgICBpZiAoIWJvZHlFbGVtZW50IHx8ICFpc0hUTUxCb2R5RWxlbWVu
dChib2R5RWxlbWVudCkpCisgICAgaWYgKCFib2R5RWxlbWVudCB8fCAhaXM8SFRNTEJvZHlFbGVt
ZW50Pihib2R5RWxlbWVudCkpCiAgICAgICAgIHJldHVybjsKICAgICBib2R5RWxlbWVudC0+c2V0
QXR0cmlidXRlKGJnY29sb3JBdHRyLCB2YWx1ZSk7CiB9CkBAIC0xNTUsNyArMTU1LDcgQEAgdm9p
ZCBIVE1MRG9jdW1lbnQ6OnNldEJnQ29sb3IoY29uc3QgU3RyaW5nJiB2YWx1ZSkKIGNvbnN0IEF0
b21pY1N0cmluZyYgSFRNTERvY3VtZW50OjpmZ0NvbG9yKCkgY29uc3QKIHsKICAgICBIVE1MRWxl
bWVudCogYm9keUVsZW1lbnQgPSBib2R5KCk7Ci0gICAgaWYgKCFib2R5RWxlbWVudCB8fCAhaXNI
VE1MQm9keUVsZW1lbnQoYm9keUVsZW1lbnQpKQorICAgIGlmICghYm9keUVsZW1lbnQgfHwgIWlz
PEhUTUxCb2R5RWxlbWVudD4oYm9keUVsZW1lbnQpKQogICAgICAgICByZXR1cm4gZW1wdHlBdG9t
OwogICAgIHJldHVybiBib2R5RWxlbWVudC0+ZmFzdEdldEF0dHJpYnV0ZSh0ZXh0QXR0cik7CiB9
CkBAIC0xNjMsNyArMTYzLDcgQEAgY29uc3QgQXRvbWljU3RyaW5nJiBIVE1MRG9jdW1lbnQ6OmZn
Q29sb3IoKSBjb25zdAogdm9pZCBIVE1MRG9jdW1lbnQ6OnNldEZnQ29sb3IoY29uc3QgU3RyaW5n
JiB2YWx1ZSkKIHsKICAgICBIVE1MRWxlbWVudCogYm9keUVsZW1lbnQgPSBib2R5KCk7Ci0gICAg
aWYgKCFib2R5RWxlbWVudCB8fCAhaXNIVE1MQm9keUVsZW1lbnQoYm9keUVsZW1lbnQpKQorICAg
IGlmICghYm9keUVsZW1lbnQgfHwgIWlzPEhUTUxCb2R5RWxlbWVudD4oYm9keUVsZW1lbnQpKQog
ICAgICAgICByZXR1cm47CiAgICAgYm9keUVsZW1lbnQtPnNldEF0dHJpYnV0ZSh0ZXh0QXR0ciwg
dmFsdWUpOwogfQpAQCAtMTcxLDcgKzE3MSw3IEBAIHZvaWQgSFRNTERvY3VtZW50OjpzZXRGZ0Nv
bG9yKGNvbnN0IFN0cmluZyYgdmFsdWUpCiBjb25zdCBBdG9taWNTdHJpbmcmIEhUTUxEb2N1bWVu
dDo6YWxpbmtDb2xvcigpIGNvbnN0CiB7CiAgICAgSFRNTEVsZW1lbnQqIGJvZHlFbGVtZW50ID0g
Ym9keSgpOwotICAgIGlmICghYm9keUVsZW1lbnQgfHwgIWlzSFRNTEJvZHlFbGVtZW50KGJvZHlF
bGVtZW50KSkKKyAgICBpZiAoIWJvZHlFbGVtZW50IHx8ICFpczxIVE1MQm9keUVsZW1lbnQ+KGJv
ZHlFbGVtZW50KSkKICAgICAgICAgcmV0dXJuIGVtcHR5QXRvbTsKICAgICByZXR1cm4gYm9keUVs
ZW1lbnQtPmZhc3RHZXRBdHRyaWJ1dGUoYWxpbmtBdHRyKTsKIH0KQEAgLTE3OSw3ICsxNzksNyBA
QCBjb25zdCBBdG9taWNTdHJpbmcmIEhUTUxEb2N1bWVudDo6YWxpbmtDb2xvcigpIGNvbnN0CiB2
b2lkIEhUTUxEb2N1bWVudDo6c2V0QWxpbmtDb2xvcihjb25zdCBTdHJpbmcmIHZhbHVlKQogewog
ICAgIEhUTUxFbGVtZW50KiBib2R5RWxlbWVudCA9IGJvZHkoKTsKLSAgICBpZiAoIWJvZHlFbGVt
ZW50IHx8ICFpc0hUTUxCb2R5RWxlbWVudChib2R5RWxlbWVudCkpCisgICAgaWYgKCFib2R5RWxl
bWVudCB8fCAhaXM8SFRNTEJvZHlFbGVtZW50Pihib2R5RWxlbWVudCkpCiAgICAgICAgIHJldHVy
bjsKICAgICBib2R5RWxlbWVudC0+c2V0QXR0cmlidXRlKGFsaW5rQXR0ciwgdmFsdWUpOwogfQpA
QCAtMTg3LDcgKzE4Nyw3IEBAIHZvaWQgSFRNTERvY3VtZW50OjpzZXRBbGlua0NvbG9yKGNvbnN0
IFN0cmluZyYgdmFsdWUpCiBjb25zdCBBdG9taWNTdHJpbmcmIEhUTUxEb2N1bWVudDo6bGlua0Nv
bG9yKCkgY29uc3QKIHsKICAgICBIVE1MRWxlbWVudCogYm9keUVsZW1lbnQgPSBib2R5KCk7Ci0g
ICAgaWYgKCFib2R5RWxlbWVudCB8fCAhaXNIVE1MQm9keUVsZW1lbnQoYm9keUVsZW1lbnQpKQor
ICAgIGlmICghYm9keUVsZW1lbnQgfHwgIWlzPEhUTUxCb2R5RWxlbWVudD4oYm9keUVsZW1lbnQp
KQogICAgICAgICByZXR1cm4gZW1wdHlBdG9tOwogICAgIHJldHVybiBib2R5RWxlbWVudC0+ZmFz
dEdldEF0dHJpYnV0ZShsaW5rQXR0cik7CiB9CkBAIC0xOTUsNyArMTk1LDcgQEAgY29uc3QgQXRv
bWljU3RyaW5nJiBIVE1MRG9jdW1lbnQ6OmxpbmtDb2xvcigpIGNvbnN0CiB2b2lkIEhUTUxEb2N1
bWVudDo6c2V0TGlua0NvbG9yKGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7CiAgICAgSFRNTEVsZW1l
bnQqIGJvZHlFbGVtZW50ID0gYm9keSgpOwotICAgIGlmICghYm9keUVsZW1lbnQgfHwgIWlzSFRN
TEJvZHlFbGVtZW50KGJvZHlFbGVtZW50KSkKKyAgICBpZiAoIWJvZHlFbGVtZW50IHx8ICFpczxI
VE1MQm9keUVsZW1lbnQ+KGJvZHlFbGVtZW50KSkKICAgICAgICAgcmV0dXJuOwogICAgIHJldHVy
biBib2R5RWxlbWVudC0+c2V0QXR0cmlidXRlKGxpbmtBdHRyLCB2YWx1ZSk7CiB9CkBAIC0yMDMs
NyArMjAzLDcgQEAgdm9pZCBIVE1MRG9jdW1lbnQ6OnNldExpbmtDb2xvcihjb25zdCBTdHJpbmcm
IHZhbHVlKQogY29uc3QgQXRvbWljU3RyaW5nJiBIVE1MRG9jdW1lbnQ6OnZsaW5rQ29sb3IoKSBj
b25zdAogewogICAgIEhUTUxFbGVtZW50KiBib2R5RWxlbWVudCA9IGJvZHkoKTsKLSAgICBpZiAo
IWJvZHlFbGVtZW50IHx8ICFpc0hUTUxCb2R5RWxlbWVudChib2R5RWxlbWVudCkpCisgICAgaWYg
KCFib2R5RWxlbWVudCB8fCAhaXM8SFRNTEJvZHlFbGVtZW50Pihib2R5RWxlbWVudCkpCiAgICAg
ICAgIHJldHVybiBlbXB0eUF0b207CiAgICAgcmV0dXJuIGJvZHlFbGVtZW50LT5mYXN0R2V0QXR0
cmlidXRlKHZsaW5rQXR0cik7CiB9CkBAIC0yMTEsNyArMjExLDcgQEAgY29uc3QgQXRvbWljU3Ry
aW5nJiBIVE1MRG9jdW1lbnQ6OnZsaW5rQ29sb3IoKSBjb25zdAogdm9pZCBIVE1MRG9jdW1lbnQ6
OnNldFZsaW5rQ29sb3IoY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBIVE1MRWxlbWVudCog
Ym9keUVsZW1lbnQgPSBib2R5KCk7Ci0gICAgaWYgKCFib2R5RWxlbWVudCB8fCAhaXNIVE1MQm9k
eUVsZW1lbnQoYm9keUVsZW1lbnQpKQorICAgIGlmICghYm9keUVsZW1lbnQgfHwgIWlzPEhUTUxC
b2R5RWxlbWVudD4oYm9keUVsZW1lbnQpKQogICAgICAgICByZXR1cm47CiAgICAgcmV0dXJuIGJv
ZHlFbGVtZW50LT5zZXRBdHRyaWJ1dGUodmxpbmtBdHRyLCB2YWx1ZSk7CiB9CkBAIC0zNDAsNyAr
MzQwLDcgQEAgdm9pZCBIVE1MRG9jdW1lbnQ6OmNsZWFyKCkKIGJvb2wgSFRNTERvY3VtZW50Ojpp
c0ZyYW1lU2V0KCkgY29uc3QKIHsKICAgICBIVE1MRWxlbWVudCogYm9keUVsZW1lbnQgPSBib2R5
KCk7Ci0gICAgcmV0dXJuIGJvZHlFbGVtZW50ICYmIGlzSFRNTEZyYW1lU2V0RWxlbWVudChib2R5
RWxlbWVudCk7CisgICAgcmV0dXJuIGJvZHlFbGVtZW50ICYmIGlzPEhUTUxGcmFtZVNldEVsZW1l
bnQ+KGJvZHlFbGVtZW50KTsKIH0KIAogUGFzc1JlZlB0cjxEb2N1bWVudD4gSFRNTERvY3VtZW50
OjpjbG9uZURvY3VtZW50V2l0aG91dENoaWxkcmVuKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
RWxlbWVudC5jcHAKaW5kZXggZDhkNGQ5NmUyOTk0OGMzMjUxYjRmZTY3YjY0ZWJjZWRhMGU5YmUx
ZS4uY2Q5MmZmOGYyN2NmODM0ZmZlNTRlNTg2MDg5MWE1YzM0OTllN2QxZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MRWxlbWVudC5jcHAKQEAgLTQyNyw3ICs0MjcsNyBAQCB2b2lkIEhUTUxFbGVtZW50
OjpzZXRJbm5lckhUTUwoY29uc3QgU3RyaW5nJiBodG1sLCBFeGNlcHRpb25Db2RlJiBlYykKICAg
ICBpZiAoUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50ID0gY3JlYXRlRnJhZ21lbnRG
b3JJbm5lck91dGVySFRNTChodG1sLCB0aGlzLCBBbGxvd1NjcmlwdGluZ0NvbnRlbnQsIGVjKSkg
ewogICAgICAgICBDb250YWluZXJOb2RlKiBjb250YWluZXIgPSB0aGlzOwogI2lmIEVOQUJMRShU
RU1QTEFURV9FTEVNRU5UKQotICAgICAgICBpZiAoaXNIVE1MVGVtcGxhdGVFbGVtZW50KCp0aGlz
KSkKKyAgICAgICAgaWYgKGlzPEhUTUxUZW1wbGF0ZUVsZW1lbnQ+KCp0aGlzKSkKICAgICAgICAg
ICAgIGNvbnRhaW5lciA9IGRvd25jYXN0PEhUTUxUZW1wbGF0ZUVsZW1lbnQ+KCp0aGlzKS5jb250
ZW50KCk7CiAjZW5kaWYKICAgICAgICAgcmVwbGFjZUNoaWxkcmVuV2l0aEZyYWdtZW50KCpjb250
YWluZXIsIGZyYWdtZW50LnJlbGVhc2UoKSwgZWMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MRmllbGRTZXRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEZpZWxkU2V0RWxlbWVudC5jcHAKaW5kZXggNWZkMmQ0Y2Y3MDMyZGNkOTA5OGI4OWQ5NzY4OTQ4
Y2EyZDlmNTA3Yy4uYWMzNjUxZjE5MzVmNDk1MWExYzE1YWQ5Y2I3ZjdhZDZkYmI3YjRlMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRmllbGRTZXRFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGaWVsZFNldEVsZW1lbnQuY3BwCkBAIC02NSw3ICs2
NSw3IEBAIHN0YXRpYyB2b2lkIHVwZGF0ZUZyb21Db250cm9sRWxlbWVudHNBbmNlc3RvckRpc2Fi
bGVkU3RhdGVVbmRlcihIVE1MRWxlbWVudCYgc3RhCiAgICAgd2hpbGUgKGNvbnRyb2wpIHsKICAg
ICAgICAgY29udHJvbC0+c2V0QW5jZXN0b3JEaXNhYmxlZChpc0Rpc2FibGVkKTsKICAgICAgICAg
Ly8gRG9uJ3QgY2FsbCBzZXRBbmNlc3RvckRpc2FibGVkKGZhbHNlKSBvbiBmb3JtIGNvbnRvcmxz
IGluc2lkZSBkaXNhYmxlZCBmaWVsZHNldHMuCi0gICAgICAgIGlmIChpc0hUTUxGaWVsZFNldEVs
ZW1lbnQoY29udHJvbCkgJiYgY29udHJvbC0+ZmFzdEhhc0F0dHJpYnV0ZShkaXNhYmxlZEF0dHIp
KQorICAgICAgICBpZiAoaXM8SFRNTEZpZWxkU2V0RWxlbWVudD4oY29udHJvbCkgJiYgY29udHJv
bC0+ZmFzdEhhc0F0dHJpYnV0ZShkaXNhYmxlZEF0dHIpKQogICAgICAgICAgICAgY29udHJvbCA9
IFRyYXZlcnNhbDxIVE1MRm9ybUNvbnRyb2xFbGVtZW50Pjo6bmV4dFNraXBwaW5nQ2hpbGRyZW4o
Y29udHJvbCwgJnN0YXJ0Tm9kZSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGNvbnRyb2wg
PSBUcmF2ZXJzYWw8SFRNTEZvcm1Db250cm9sRWxlbWVudD46Om5leHQoY29udHJvbCwgJnN0YXJ0
Tm9kZSk7CkBAIC05Myw3ICs5Myw3IEBAIHZvaWQgSFRNTEZpZWxkU2V0RWxlbWVudDo6ZGlzYWJs
ZWRTdGF0ZUNoYW5nZWQoKQogICAgIGJvb2wgdGhpc0ZpZWxkc2V0SXNEaXNhYmxlZCA9IGZhc3RI
YXNBdHRyaWJ1dGUoZGlzYWJsZWRBdHRyKTsKICAgICBib29sIGhhc1NlZW5GaXJzdExlZ2VuZEVs
ZW1lbnQgPSBmYWxzZTsKICAgICBmb3IgKEhUTUxFbGVtZW50KiBjb250cm9sID0gVHJhdmVyc2Fs
PEhUTUxFbGVtZW50Pjo6Zmlyc3RDaGlsZCh0aGlzKTsgY29udHJvbDsgY29udHJvbCA9IFRyYXZl
cnNhbDxIVE1MRWxlbWVudD46Om5leHRTaWJsaW5nKGNvbnRyb2wpKSB7Ci0gICAgICAgIGlmICgh
aGFzU2VlbkZpcnN0TGVnZW5kRWxlbWVudCAmJiBpc0hUTUxMZWdlbmRFbGVtZW50KGNvbnRyb2wp
KSB7CisgICAgICAgIGlmICghaGFzU2VlbkZpcnN0TGVnZW5kRWxlbWVudCAmJiBpczxIVE1MTGVn
ZW5kRWxlbWVudD4oY29udHJvbCkpIHsKICAgICAgICAgICAgIGhhc1NlZW5GaXJzdExlZ2VuZEVs
ZW1lbnQgPSB0cnVlOwogICAgICAgICAgICAgdXBkYXRlRnJvbUNvbnRyb2xFbGVtZW50c0FuY2Vz
dG9yRGlzYWJsZWRTdGF0ZVVuZGVyKCpjb250cm9sLCBmYWxzZSAvKiBpc0Rpc2FibGVkICovKTsK
ICAgICAgICAgICAgIGNvbnRpbnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1D
b250cm9sRWxlbWVudC5jcHAKaW5kZXggOGM3YWYxNjNhMGQyZjdhYmY5MWNiMTQ5YTg3NjZlYmVm
NGY2YWUxMy4uMTViMDNkZGVjNWZmZTE0OTYyYjIxODM3YmNiOTgxYWM1OWY4MzUwMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwCkBAIC0xMDMs
OSArMTAzLDkgQEAgYm9vbCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50Ojpjb21wdXRlSXNEaXNhYmxl
ZEJ5RmllbGRzZXRBbmNlc3RvcigpIGNvbnN0CiB7CiAgICAgRWxlbWVudCogcHJldmlvdXNBbmNl
c3RvciA9IG51bGxwdHI7CiAgICAgZm9yIChFbGVtZW50KiBhbmNlc3RvciA9IHBhcmVudEVsZW1l
bnQoKTsgYW5jZXN0b3I7IGFuY2VzdG9yID0gYW5jZXN0b3ItPnBhcmVudEVsZW1lbnQoKSkgewot
ICAgICAgICBpZiAoaXNIVE1MRmllbGRTZXRFbGVtZW50KGFuY2VzdG9yKSAmJiBhbmNlc3Rvci0+
ZmFzdEhhc0F0dHJpYnV0ZShkaXNhYmxlZEF0dHIpKSB7CisgICAgICAgIGlmIChpczxIVE1MRmll
bGRTZXRFbGVtZW50PihhbmNlc3RvcikgJiYgYW5jZXN0b3ItPmZhc3RIYXNBdHRyaWJ1dGUoZGlz
YWJsZWRBdHRyKSkgewogICAgICAgICAgICAgSFRNTEZpZWxkU2V0RWxlbWVudCYgZmllbGRTZXRB
bmNlc3RvciA9IGRvd25jYXN0PEhUTUxGaWVsZFNldEVsZW1lbnQ+KCphbmNlc3Rvcik7Ci0gICAg
ICAgICAgICBib29sIGlzSW5GaXJzdExlZ2VuZCA9IHByZXZpb3VzQW5jZXN0b3IgJiYgaXNIVE1M
TGVnZW5kRWxlbWVudChwcmV2aW91c0FuY2VzdG9yKSAmJiBwcmV2aW91c0FuY2VzdG9yID09IGZp
ZWxkU2V0QW5jZXN0b3IubGVnZW5kKCk7CisgICAgICAgICAgICBib29sIGlzSW5GaXJzdExlZ2Vu
ZCA9IHByZXZpb3VzQW5jZXN0b3IgJiYgaXM8SFRNTExlZ2VuZEVsZW1lbnQ+KHByZXZpb3VzQW5j
ZXN0b3IpICYmIHByZXZpb3VzQW5jZXN0b3IgPT0gZmllbGRTZXRBbmNlc3Rvci5sZWdlbmQoKTsK
ICAgICAgICAgICAgIHJldHVybiAhaXNJbkZpcnN0TGVnZW5kOwogICAgICAgICB9CiAgICAgICAg
IHByZXZpb3VzQW5jZXN0b3IgPSBhbmNlc3RvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5jcHAKaW5kZXggNjhjMWRlZWYyNDc3MzI3MzFm
N2UwNTM2YTAzMDA3NWRkZjNmOTdmZi4uMDUyNDhhY2QxNzg2YjI4MWY2YjFlNjQ4OTFiOWZlZGY4
NzBkNjkyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xz
Q29sbGVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xz
Q29sbGVjdGlvbi5jcHAKQEAgLTQwLDcgKzQwLDcgQEAgSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rp
b246OkhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uKENvbnRhaW5lck5vZGUmIG93bmVyTm9kZSkK
ICAgICAsIG1fY2FjaGVkRWxlbWVudChudWxscHRyKQogICAgICwgbV9jYWNoZWRFbGVtZW50T2Zm
c2V0SW5BcnJheSgwKQogewotICAgIEFTU0VSVChpc0hUTUxGb3JtRWxlbWVudChvd25lck5vZGUp
IHx8IGlzSFRNTEZpZWxkU2V0RWxlbWVudChvd25lck5vZGUpKTsKKyAgICBBU1NFUlQoaXM8SFRN
TEZvcm1FbGVtZW50Pihvd25lck5vZGUpIHx8IGlzPEhUTUxGaWVsZFNldEVsZW1lbnQ+KG93bmVy
Tm9kZSkpOwogfQogCiBQYXNzUmVmPEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uPiBIVE1MRm9y
bUNvbnRyb2xzQ29sbGVjdGlvbjo6Y3JlYXRlKENvbnRhaW5lck5vZGUmIG93bmVyTm9kZSwgQ29s
bGVjdGlvblR5cGUpCkBAIC01NCwxNSArNTQsMTUgQEAgSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rp
b246On5IVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbigpCiAKIGNvbnN0IFZlY3RvcjxGb3JtQXNz
b2NpYXRlZEVsZW1lbnQqPiYgSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb246OmZvcm1Db250cm9s
RWxlbWVudHMoKSBjb25zdAogewotICAgIEFTU0VSVChpc0hUTUxGb3JtRWxlbWVudChvd25lck5v
ZGUoKSkgfHwgb3duZXJOb2RlKCkuaGFzVGFnTmFtZShmaWVsZHNldFRhZykpOwotICAgIGlmIChp
c0hUTUxGb3JtRWxlbWVudChvd25lck5vZGUoKSkpCisgICAgQVNTRVJUKGlzPEhUTUxGb3JtRWxl
bWVudD4ob3duZXJOb2RlKCkpIHx8IGlzPEhUTUxGaWVsZFNldEVsZW1lbnQ+KG93bmVyTm9kZSgp
KSk7CisgICAgaWYgKGlzPEhUTUxGb3JtRWxlbWVudD4ob3duZXJOb2RlKCkpKQogICAgICAgICBy
ZXR1cm4gZG93bmNhc3Q8SFRNTEZvcm1FbGVtZW50Pihvd25lck5vZGUoKSkuYXNzb2NpYXRlZEVs
ZW1lbnRzKCk7CiAgICAgcmV0dXJuIGRvd25jYXN0PEhUTUxGaWVsZFNldEVsZW1lbnQ+KG93bmVy
Tm9kZSgpKS5hc3NvY2lhdGVkRWxlbWVudHMoKTsKIH0KIAogY29uc3QgVmVjdG9yPEhUTUxJbWFn
ZUVsZW1lbnQqPiYgSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb246OmZvcm1JbWFnZUVsZW1lbnRz
KCkgY29uc3QKIHsKLSAgICBBU1NFUlQoaXNIVE1MRm9ybUVsZW1lbnQob3duZXJOb2RlKCkpKTsK
KyAgICBBU1NFUlQoaXM8SFRNTEZvcm1FbGVtZW50Pihvd25lck5vZGUoKSkpOwogICAgIHJldHVy
biBkb3duY2FzdDxIVE1MRm9ybUVsZW1lbnQ+KG93bmVyTm9kZSgpKS5pbWFnZUVsZW1lbnRzKCk7
CiB9CiAKQEAgLTEyOCw3ICsxMjgsNyBAQCBOb2RlKiBIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlv
bjo6bmFtZWRJdGVtKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkgY29uc3QKICAgICAvLyBhdHRy
aWJ1dGUuIElmIGEgbWF0Y2ggaXMgbm90IGZvdW5kLCB0aGUgbWV0aG9kIHRoZW4gc2VhcmNoZXMg
Zm9yIGFuCiAgICAgLy8gb2JqZWN0IHdpdGggYSBtYXRjaGluZyBuYW1lIGF0dHJpYnV0ZSwgYnV0
IG9ubHkgb24gdGhvc2UgZWxlbWVudHMKICAgICAvLyB0aGF0IGFyZSBhbGxvd2VkIGEgbmFtZSBh
dHRyaWJ1dGUuCi0gICAgY29uc3QgVmVjdG9yPEhUTUxJbWFnZUVsZW1lbnQqPiogaW1hZ2VzRWxl
bWVudHMgPSBvd25lck5vZGUoKS5oYXNUYWdOYW1lKGZpZWxkc2V0VGFnKSA/IG51bGxwdHIgOiAm
Zm9ybUltYWdlRWxlbWVudHMoKTsKKyAgICBjb25zdCBWZWN0b3I8SFRNTEltYWdlRWxlbWVudCo+
KiBpbWFnZXNFbGVtZW50cyA9IGlzPEhUTUxGaWVsZFNldEVsZW1lbnQ+KG93bmVyTm9kZSgpKSA/
IG51bGxwdHIgOiAmZm9ybUltYWdlRWxlbWVudHMoKTsKICAgICBpZiAoSFRNTEVsZW1lbnQqIGl0
ZW0gPSBmaXJzdE5hbWVkSXRlbShmb3JtQ29udHJvbEVsZW1lbnRzKCksIGltYWdlc0VsZW1lbnRz
LCBpZEF0dHIsIG5hbWUpKQogICAgICAgICByZXR1cm4gaXRlbTsKIApAQCAtMTYxLDcgKzE2MSw3
IEBAIHZvaWQgSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb246OnVwZGF0ZU5hbWVkRWxlbWVudENh
Y2hlKCkgY29uc3QKICAgICAgICAgfQogICAgIH0KIAotICAgIGlmIChpc0hUTUxGb3JtRWxlbWVu
dChvd25lck5vZGUoKSkpIHsKKyAgICBpZiAoaXM8SFRNTEZvcm1FbGVtZW50Pihvd25lck5vZGUo
KSkpIHsKICAgICAgICAgY29uc3QgVmVjdG9yPEhUTUxJbWFnZUVsZW1lbnQqPiYgaW1hZ2VFbGVt
ZW50c0FycmF5ID0gZm9ybUltYWdlRWxlbWVudHMoKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IGltYWdlRWxlbWVudHNBcnJheS5zaXplKCk7ICsraSkgewogICAgICAgICAgICAg
SFRNTEltYWdlRWxlbWVudCYgZWxlbWVudCA9ICppbWFnZUVsZW1lbnRzQXJyYXlbaV07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAKaW5kZXggZGNkMmE4ODZhOTViOTA0MzAz
M2E1Mzg1OGU5NjVjNDQ1ZDQ5NDQ5ZS4uZWFmZjcxZjE2N2NjNzc4YTNmNzIzZTE0NGIzZGNkMWI3
Y2IyNjRmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcApAQCAtMTEw
LDcgKzExMCw3IEBAIGJvb2wgSFRNTEZvcm1FbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKGNvbnN0
IFJlbmRlclN0eWxlJiBzdHlsZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgLy8gRklY
TUU6IFNob3VsZG4ndCB3ZSBhbHNvIGNoZWNrIGZvciB0YWJsZSBjYXB0aW9uIChzZWUgfGZvcm1J
c1RhYmxlUGFydHwgYmVsb3cpLgotICAgIGJvb2wgcGFyZW50SXNUYWJsZUVsZW1lbnRQYXJ0ID0g
KHBhcmVudFJlbmRlcmVyLT5pc1RhYmxlKCkgJiYgaXNIVE1MVGFibGVFbGVtZW50KHBhcmVudCkp
CisgICAgYm9vbCBwYXJlbnRJc1RhYmxlRWxlbWVudFBhcnQgPSAocGFyZW50UmVuZGVyZXItPmlz
VGFibGUoKSAmJiBpczxIVE1MVGFibGVFbGVtZW50PihwYXJlbnQpKQogICAgICAgICB8fCAocGFy
ZW50UmVuZGVyZXItPmlzVGFibGVSb3coKSAmJiBwYXJlbnQtPmhhc1RhZ05hbWUodHJUYWcpKQog
ICAgICAgICB8fCAocGFyZW50UmVuZGVyZXItPmlzVGFibGVTZWN0aW9uKCkgJiYgcGFyZW50LT5o
YXNUYWdOYW1lKHRib2R5VGFnKSkKICAgICAgICAgfHwgKHBhcmVudFJlbmRlcmVyLT5pc1JlbmRl
clRhYmxlQ29sKCkgJiYgcGFyZW50LT5oYXNUYWdOYW1lKGNvbFRhZykpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnRCYXNlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxGcmFtZUVsZW1lbnRCYXNlLmgKaW5kZXggMjc5ZWJkODJhODhjZjQyN2Q0MzY1
MGUyZTVlYjhhNzE0YWIyZDEwZC4uYjQ3NWJkNThiZDNjMmM0ZDAzNTNiOWZhZWUzMjVkOGE3Njgw
MTFjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50QmFz
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudEJhc2UuaApAQCAt
NzcsOCArNzcsOCBAQCBwcml2YXRlOgogfTsKIAogdm9pZCBpc0hUTUxGcmFtZUVsZW1lbnRCYXNl
KGNvbnN0IEhUTUxGcmFtZUVsZW1lbnRCYXNlJik7IC8vIENhdGNoIHVubmVjZXNzYXJ5IHJ1bnRp
bWUgY2hlY2sgb2YgdHlwZSBrbm93biBhdCBjb21waWxlIHRpbWUuCi1pbmxpbmUgYm9vbCBpc0hU
TUxGcmFtZUVsZW1lbnRCYXNlKGNvbnN0IEhUTUxFbGVtZW50JiBlbGVtZW50KSB7IHJldHVybiBp
c0hUTUxGcmFtZUVsZW1lbnQoZWxlbWVudCkgfHwgaXNIVE1MSUZyYW1lRWxlbWVudChlbGVtZW50
KTsgfQotaW5saW5lIGJvb2wgaXNIVE1MRnJhbWVFbGVtZW50QmFzZShjb25zdCBOb2RlJiBub2Rl
KSB7IHJldHVybiBpc0hUTUxGcmFtZUVsZW1lbnQobm9kZSkgfHwgaXNIVE1MSUZyYW1lRWxlbWVu
dChub2RlKTsgfQoraW5saW5lIGJvb2wgaXNIVE1MRnJhbWVFbGVtZW50QmFzZShjb25zdCBIVE1M
RWxlbWVudCYgZWxlbWVudCkgeyByZXR1cm4gaXM8SFRNTEZyYW1lRWxlbWVudD4oZWxlbWVudCkg
fHwgaXM8SFRNTElGcmFtZUVsZW1lbnQ+KGVsZW1lbnQpOyB9CitpbmxpbmUgYm9vbCBpc0hUTUxG
cmFtZUVsZW1lbnRCYXNlKGNvbnN0IE5vZGUmIG5vZGUpIHsgcmV0dXJuIGlzPEhUTUxGcmFtZUVs
ZW1lbnQ+KG5vZGUpIHx8IGlzPEhUTUxJRnJhbWVFbGVtZW50Pihub2RlKTsgfQogCiBOT0RFX1RZ
UEVfQ0FTVFMoSFRNTEZyYW1lRWxlbWVudEJhc2UpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEltYWdlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElt
YWdlTG9hZGVyLmNwcAppbmRleCAyOWZiY2RlOGM2ZDliZDY2ZjM5ZGIyZDQwMDdlODFlNGUwZmY3
M2Q5Li4zMGFhMTcwNGI5ZDJmMWIxMTc2NWFlYjUyZTU3N2MyZmE4MTQwMjg3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MSW1hZ2VMb2FkZXIuY3BwCkBAIC00OSw3ICs0OSw3IEBAIEhUTUxJbWFn
ZUxvYWRlcjo6fkhUTUxJbWFnZUxvYWRlcigpCiB2b2lkIEhUTUxJbWFnZUxvYWRlcjo6ZGlzcGF0
Y2hMb2FkRXZlbnQoKQogewogICAgIC8vIEhUTUxWaWRlb0VsZW1lbnQgdXNlcyB0aGlzIGNsYXNz
IHRvIGxvYWQgdGhlIHBvc3RlciBpbWFnZSwgYnV0IGl0IHNob3VsZCBub3QgZmlyZSBldmVudHMg
Zm9yIGxvYWRpbmcgb3IgZmFpbHVyZS4KLSAgICBpZiAoaXNIVE1MVmlkZW9FbGVtZW50KGVsZW1l
bnQoKSkpCisgICAgaWYgKGlzPEhUTUxWaWRlb0VsZW1lbnQ+KGVsZW1lbnQoKSkpCiAgICAgICAg
IHJldHVybjsKIAogICAgIGJvb2wgZXJyb3JPY2N1cnJlZCA9IGltYWdlKCktPmVycm9yT2NjdXJy
ZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCmluZGV4IGUyZDU1
ZTMzNTE0NWJhMjk5Y2I3MjFmN2Q4ZGE3N2Q2Y2JkZTY1MWQuLjQzOWEwYTFjZmI4N2VkZDhlMjdi
NTE5N2UxNmUzZTlmZWQ5ZWZjMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TElucHV0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVt
ZW50LmNwcApAQCAtMTUyMSw3ICsxNTIxLDcgQEAgSFRNTERhdGFMaXN0RWxlbWVudCogSFRNTElu
cHV0RWxlbWVudDo6ZGF0YUxpc3QoKSBjb25zdAogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAog
ICAgIEVsZW1lbnQqIGVsZW1lbnQgPSB0cmVlU2NvcGUoKS5nZXRFbGVtZW50QnlJZChmYXN0R2V0
QXR0cmlidXRlKGxpc3RBdHRyKSk7Ci0gICAgaWYgKCFlbGVtZW50IHx8ICFpc0hUTUxEYXRhTGlz
dEVsZW1lbnQoZWxlbWVudCkpCisgICAgaWYgKCFlbGVtZW50IHx8ICFpczxIVE1MRGF0YUxpc3RF
bGVtZW50PihlbGVtZW50KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICByZXR1cm4g
ZG93bmNhc3Q8SFRNTERhdGFMaXN0RWxlbWVudD4oZWxlbWVudCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxMZWdlbmRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTExlZ2VuZEVsZW1lbnQuY3BwCmluZGV4IDJmYjRkMjUwZjI1MWIwZmY5NTI5Zjg3YThl
ODg3ODMxYWQ3ZWU0MmMuLjhlOWM4MjkzMWMyNDRkMTk5YTg2NzkzNjM3ZGYzZDA2M2E1YWY2Njgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExlZ2VuZEVsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExlZ2VuZEVsZW1lbnQuY3BwCkBAIC03OSw3ICs3
OSw3IEBAIEhUTUxGb3JtRWxlbWVudCogSFRNTExlZ2VuZEVsZW1lbnQ6OnZpcnR1YWxGb3JtKCkg
Y29uc3QKICAgICAvLyBpdHMgcGFyZW50LCB0aGVuIHRoZSBmb3JtIGF0dHJpYnV0ZSBtdXN0IHJl
dHVybiB0aGUgc2FtZSB2YWx1ZSBhcyB0aGUKICAgICAvLyBmb3JtIGF0dHJpYnV0ZSBvbiB0aGF0
IGZpZWxkc2V0IGVsZW1lbnQuIE90aGVyd2lzZSwgaXQgbXVzdCByZXR1cm4gbnVsbC4KICAgICBD
b250YWluZXJOb2RlKiBmaWVsZHNldCA9IHBhcmVudE5vZGUoKTsKLSAgICBpZiAoIWZpZWxkc2V0
IHx8ICFpc0hUTUxGaWVsZFNldEVsZW1lbnQoZmllbGRzZXQpKQorICAgIGlmICghZmllbGRzZXQg
fHwgIWlzPEhUTUxGaWVsZFNldEVsZW1lbnQ+KGZpZWxkc2V0KSkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKICAgICByZXR1cm4gZG93bmNhc3Q8SFRNTEZpZWxkU2V0RWxlbWVudD4oKmZpZWxk
c2V0KS5mb3JtKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAppbmRl
eCA5YjQyMjkyMmNmYzU0ZjMyOTlkNzY2ZjZiNjY0NzVhOGE0YmMxMjcwLi43NGY5NDNlMDYwNjEy
ZWE1YTIxOWM4NzRmYmJhZjQxOGEyZDI1YjMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1l
ZGlhRWxlbWVudC5jcHAKQEAgLTQ4ODIsNyArNDg4Miw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVu
dDo6ZW50ZXJGdWxsc2NyZWVuKCkKICAgICBtX2lzSW5WaWRlb0Z1bGxzY3JlZW4gPSB0cnVlOwog
ICAgIGlmIChoYXNNZWRpYUNvbnRyb2xzKCkpCiAgICAgICAgIG1lZGlhQ29udHJvbHMoKS0+ZW50
ZXJlZEZ1bGxzY3JlZW4oKTsKLSAgICBpZiAoZG9jdW1lbnQoKS5wYWdlKCkgJiYgaXNIVE1MVmlk
ZW9FbGVtZW50KHRoaXMpKSB7CisgICAgaWYgKGRvY3VtZW50KCkucGFnZSgpICYmIGlzPEhUTUxW
aWRlb0VsZW1lbnQ+KHRoaXMpKSB7CiAgICAgICAgIEhUTUxWaWRlb0VsZW1lbnQmIGFzVmlkZW8g
PSBkb3duY2FzdDxIVE1MVmlkZW9FbGVtZW50PigqdGhpcyk7CiAgICAgICAgIGlmIChkb2N1bWVu
dCgpLnBhZ2UoKS0+Y2hyb21lKCkuY2xpZW50KCkuc3VwcG9ydHNWaWRlb0Z1bGxzY3JlZW4oKSkg
ewogICAgICAgICAgICAgZG9jdW1lbnQoKS5wYWdlKCktPmNocm9tZSgpLmNsaWVudCgpLmVudGVy
VmlkZW9GdWxsc2NyZWVuRm9yVmlkZW9FbGVtZW50KCZhc1ZpZGVvKTsKQEAgLTQ5MDYsNyArNDkw
Niw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6ZXhpdEZ1bGxzY3JlZW4oKQogICAgIG1faXNJ
blZpZGVvRnVsbHNjcmVlbiA9IGZhbHNlOwogICAgIGlmIChoYXNNZWRpYUNvbnRyb2xzKCkpCiAg
ICAgICAgIG1lZGlhQ29udHJvbHMoKS0+ZXhpdGVkRnVsbHNjcmVlbigpOwotICAgIGlmIChkb2N1
bWVudCgpLnBhZ2UoKSAmJiBpc0hUTUxWaWRlb0VsZW1lbnQodGhpcykpIHsKKyAgICBpZiAoZG9j
dW1lbnQoKS5wYWdlKCkgJiYgaXM8SFRNTFZpZGVvRWxlbWVudD4odGhpcykpIHsKICAgICAgICAg
aWYgKG1fbWVkaWFTZXNzaW9uLT5yZXF1aXJlc0Z1bGxzY3JlZW5Gb3JWaWRlb1BsYXliYWNrKCp0
aGlzKSkKICAgICAgICAgICAgIHBhdXNlSW50ZXJuYWwoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTmFtZUNvbGxlY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTmFtZUNvbGxlY3Rpb24uY3BwCmluZGV4IGFmM2MzNjM1MmFhMzY4NmJiZGZhYTM0ZTVk
NzhhYWRiM2I1NjcxZGYuLmU2YjJkOTVhNzA1NzViNzc3Nzg3ZmY4YzkyYzA3MjVmYjdiYjI4ZGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE5hbWVDb2xsZWN0aW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxOYW1lQ29sbGVjdGlvbi5jcHAKQEAgLTUxLDgg
KzUxLDggQEAgSFRNTE5hbWVDb2xsZWN0aW9uOjp+SFRNTE5hbWVDb2xsZWN0aW9uKCkKIAogYm9v
bCBXaW5kb3dOYW1lQ29sbGVjdGlvbjo6ZWxlbWVudE1hdGNoZXNJZk5hbWVBdHRyaWJ1dGVNYXRj
aChjb25zdCBFbGVtZW50JiBlbGVtZW50KQogewotICAgIHJldHVybiBpc0hUTUxJbWFnZUVsZW1l
bnQoZWxlbWVudCkgfHwgaXNIVE1MRm9ybUVsZW1lbnQoZWxlbWVudCkgfHwgZWxlbWVudC5oYXNU
YWdOYW1lKGFwcGxldFRhZykKLSAgICAgICAgfHwgZWxlbWVudC5oYXNUYWdOYW1lKGVtYmVkVGFn
KSB8fCBlbGVtZW50Lmhhc1RhZ05hbWUob2JqZWN0VGFnKTsKKyAgICByZXR1cm4gaXM8SFRNTElt
YWdlRWxlbWVudD4oZWxlbWVudCkgfHwgaXM8SFRNTEZvcm1FbGVtZW50PihlbGVtZW50KSB8fCBl
bGVtZW50Lmhhc1RhZ05hbWUoYXBwbGV0VGFnKQorICAgICAgICB8fCBpczxIVE1MRW1iZWRFbGVt
ZW50PihlbGVtZW50KSB8fCBpczxIVE1MT2JqZWN0RWxlbWVudD4oZWxlbWVudCk7CiB9CiAKIGJv
b2wgV2luZG93TmFtZUNvbGxlY3Rpb246OmVsZW1lbnRNYXRjaGVzKGNvbnN0IEVsZW1lbnQmIGVs
ZW1lbnQsIGNvbnN0IEF0b21pY1N0cmluZ0ltcGwqIG5hbWUpCkBAIC04MSwxMyArODEsMTMgQEAg
Ym9vbCBEb2N1bWVudE5hbWVDb2xsZWN0aW9uOjplbGVtZW50TWF0Y2hlcyhjb25zdCBFbGVtZW50
JiBlbGVtZW50LCBjb25zdCBBdG9taWMKIHsKICAgICAvLyBGaW5kIGltYWdlcywgZm9ybXMsIGFw
cGxldHMsIGVtYmVkcywgb2JqZWN0cyBhbmQgaWZyYW1lcyBieSBuYW1lLCBhcHBsZXRzIGFuZCBv
YmplY3QgYnkgaWQsIGFuZCBpbWFnZXMgYnkgaWQKICAgICAvLyBidXQgb25seSBpZiB0aGV5IGhh
dmUgYSBuYW1lIGF0dHJpYnV0ZSAodGhpcyB2ZXJ5IHN0cmFuZ2UgcnVsZSBtYXRjaGVzIElFKQot
ICAgIGlmIChpc0hUTUxGb3JtRWxlbWVudChlbGVtZW50KSB8fCBlbGVtZW50Lmhhc1RhZ05hbWUo
ZW1iZWRUYWcpIHx8IGVsZW1lbnQuaGFzVGFnTmFtZShpZnJhbWVUYWcpKQorICAgIGlmIChpczxI
VE1MRm9ybUVsZW1lbnQ+KGVsZW1lbnQpIHx8IGlzPEhUTUxFbWJlZEVsZW1lbnQ+KGVsZW1lbnQp
IHx8IGlzPEhUTUxJRnJhbWVFbGVtZW50PihlbGVtZW50KSkKICAgICAgICAgcmV0dXJuIGVsZW1l
bnQuZ2V0TmFtZUF0dHJpYnV0ZSgpLmltcGwoKSA9PSBuYW1lOwotICAgIGlmIChlbGVtZW50Lmhh
c1RhZ05hbWUoYXBwbGV0VGFnKSkKKyAgICBpZiAoaXM8SFRNTEFwcGxldEVsZW1lbnQ+KGVsZW1l
bnQpKQogICAgICAgICByZXR1cm4gZWxlbWVudC5nZXROYW1lQXR0cmlidXRlKCkuaW1wbCgpID09
IG5hbWUgfHwgZWxlbWVudC5nZXRJZEF0dHJpYnV0ZSgpLmltcGwoKSA9PSBuYW1lOwogICAgIGlm
IChpczxIVE1MT2JqZWN0RWxlbWVudD4oZWxlbWVudCkpCiAgICAgICAgIHJldHVybiAoZWxlbWVu
dC5nZXROYW1lQXR0cmlidXRlKCkuaW1wbCgpID09IG5hbWUgfHwgZWxlbWVudC5nZXRJZEF0dHJp
YnV0ZSgpLmltcGwoKSA9PSBuYW1lKSAmJiBkb3duY2FzdDxIVE1MT2JqZWN0RWxlbWVudD4oZWxl
bWVudCkuaXNEb2NOYW1lZEl0ZW0oKTsKLSAgICBpZiAoaXNIVE1MSW1hZ2VFbGVtZW50KGVsZW1l
bnQpKQorICAgIGlmIChpczxIVE1MSW1hZ2VFbGVtZW50PihlbGVtZW50KSkKICAgICAgICAgcmV0
dXJuIGVsZW1lbnQuZ2V0TmFtZUF0dHJpYnV0ZSgpLmltcGwoKSA9PSBuYW1lIHx8IChlbGVtZW50
LmdldElkQXR0cmlidXRlKCkuaW1wbCgpID09IG5hbWUgJiYgZWxlbWVudC5oYXNOYW1lKCkpOwog
ICAgIHJldHVybiBmYWxzZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE9wdGlvbkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uRWxlbWVu
dC5jcHAKaW5kZXggY2U2NTEyN2M1OGY4YWNhNjJhNjVmMTc3MjM4NDg0MmY2Y2UzY2QyOC4uM2Mz
NzcwOGFlZTI1Yjk5ZDkwZTVjYjEwN2FhYWM0NzZmYjIyMDkzZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MT3B0aW9uRWxlbWVudC5jcHAKQEAgLTI1Nyw3ICsyNTcsNyBAQCB2b2lkIEhUTUxP
cHRpb25FbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoY29uc3QgQ2hpbGRDaGFuZ2UmIGNoYW5nZSkK
IEhUTUxEYXRhTGlzdEVsZW1lbnQqIEhUTUxPcHRpb25FbGVtZW50Ojpvd25lckRhdGFMaXN0RWxl
bWVudCgpIGNvbnN0CiB7CiAgICAgZm9yIChDb250YWluZXJOb2RlKiBwYXJlbnQgPSBwYXJlbnRO
b2RlKCk7IHBhcmVudCA7IHBhcmVudCA9IHBhcmVudC0+cGFyZW50Tm9kZSgpKSB7Ci0gICAgICAg
IGlmIChpc0hUTUxEYXRhTGlzdEVsZW1lbnQocGFyZW50KSkKKyAgICAgICAgaWYgKGlzPEhUTUxE
YXRhTGlzdEVsZW1lbnQ+KHBhcmVudCkpCiAgICAgICAgICAgICByZXR1cm4gZG93bmNhc3Q8SFRN
TERhdGFMaXN0RWxlbWVudD4ocGFyZW50KTsKICAgICB9CiAgICAgcmV0dXJuIG51bGxwdHI7CkBA
IC0zMDIsNyArMzAyLDcgQEAgdm9pZCBIVE1MT3B0aW9uRWxlbWVudDo6d2lsbFJlc2V0Q29tcHV0
ZWRTdHlsZSgpCiBTdHJpbmcgSFRNTE9wdGlvbkVsZW1lbnQ6OnRleHRJbmRlbnRlZFRvUmVzcGVj
dEdyb3VwTGFiZWwoKSBjb25zdAogewogICAgIENvbnRhaW5lck5vZGUqIHBhcmVudCA9IHBhcmVu
dE5vZGUoKTsKLSAgICBpZiAocGFyZW50ICYmIGlzSFRNTE9wdEdyb3VwRWxlbWVudChwYXJlbnQp
KQorICAgIGlmIChwYXJlbnQgJiYgaXM8SFRNTE9wdEdyb3VwRWxlbWVudD4ocGFyZW50KSkKICAg
ICAgICAgcmV0dXJuICIgICAgIiArIHRleHQoKTsKICAgICByZXR1cm4gdGV4dCgpOwogfQpAQCAt
MzE2LDcgKzMxNiw3IEBAIGJvb2wgSFRNTE9wdGlvbkVsZW1lbnQ6OmlzRGlzYWJsZWRGb3JtQ29u
dHJvbCgpIGNvbnN0CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIEhUTUxFbGVtZW50JiBw
YXJlbnRFbGVtZW50ID0gdG9IVE1MRWxlbWVudCgqcGFyZW50Tm9kZSgpKTsKLSAgICByZXR1cm4g
aXNIVE1MT3B0R3JvdXBFbGVtZW50KHBhcmVudEVsZW1lbnQpICYmIHBhcmVudEVsZW1lbnQuaXNE
aXNhYmxlZEZvcm1Db250cm9sKCk7CisgICAgcmV0dXJuIGlzPEhUTUxPcHRHcm91cEVsZW1lbnQ+
KHBhcmVudEVsZW1lbnQpICYmIHBhcmVudEVsZW1lbnQuaXNEaXNhYmxlZEZvcm1Db250cm9sKCk7
CiB9CiAKIE5vZGU6Okluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgSFRNTE9wdGlvbkVsZW1l
bnQ6Omluc2VydGVkSW50byhDb250YWluZXJOb2RlJiBpbnNlcnRpb25Qb2ludCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5jcHAKaW5kZXggYzk2MzI2MjQ1MDA2YjhiNzA2
MGUxODBmY2ZjMDllMjVhMGVhMmRiZS4uNWQzMmUzODZmNDEwNWNmMjFiYmMzNDRlM2E2NzJmYjU3
NjIyZmQ0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5jcHAKQEAg
LTc5MCw3ICs3OTAsNyBAQCB2b2lkIEhUTUxTZWxlY3RFbGVtZW50OjpyZWNhbGNMaXN0SXRlbXMo
Ym9vbCB1cGRhdGVTZWxlY3RlZFN0YXRlcykgY29uc3QKICAgICAgICAgLy8gb3B0Z3JvdXAgdGFn
cyBtYXkgbm90IG5lc3QuIEhvd2V2ZXIsIGJvdGggRmlyZUZveCBhbmQgSUUgd2lsbAogICAgICAg
ICAvLyBmbGF0dGVuIHRoZSB0cmVlIGF1dG9tYXRpY2FsbHksIHNvIHdlIGZvbGxvdyBzdWl0Lgog
ICAgICAgICAvLyAoaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQwMS9pbnRlcmFjdC9mb3Jtcy5o
dG1sI2gtMTcuNikKLSAgICAgICAgaWYgKGlzSFRNTE9wdEdyb3VwRWxlbWVudChjdXJyZW50KSkg
eworICAgICAgICBpZiAoaXM8SFRNTE9wdEdyb3VwRWxlbWVudD4oY3VycmVudCkpIHsKICAgICAg
ICAgICAgIG1fbGlzdEl0ZW1zLmFwcGVuZChjdXJyZW50KTsKICAgICAgICAgICAgIGlmIChFbGVt
ZW50KiBuZXh0RWxlbWVudCA9IEVsZW1lbnRUcmF2ZXJzYWw6OmZpcnN0V2l0aGluKGN1cnJlbnQp
KSB7CiAgICAgICAgICAgICAgICAgY3VycmVudEVsZW1lbnQgPSBuZXh0RWxlbWVudDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlRWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxUYWJsZUVsZW1lbnQuY3BwCmluZGV4IGFiNzAxZjMyNGNmMjZlYzQy
ZWU2MWViZDkwOWU5NzdiZjIxOWVhMTcuLjYyODRjZWNkYTcwNmU4M2RmNmQ2YjUxMzFhZTExN2I0
ZTUwODgzMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlRWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVFbGVtZW50LmNwcApAQCAt
NzAsNyArNzAsNyBAQCBQYXNzUmVmUHRyPEhUTUxUYWJsZUVsZW1lbnQ+IEhUTUxUYWJsZUVsZW1l
bnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYQogSFRNTFRhYmxlQ2FwdGlvbkVs
ZW1lbnQqIEhUTUxUYWJsZUVsZW1lbnQ6OmNhcHRpb24oKSBjb25zdAogewogICAgIGZvciAoTm9k
ZSogY2hpbGQgPSBmaXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGlu
ZygpKSB7Ci0gICAgICAgIGlmIChpc0hUTUxUYWJsZUNhcHRpb25FbGVtZW50KGNoaWxkKSkKKyAg
ICAgICAgaWYgKGlzPEhUTUxUYWJsZUNhcHRpb25FbGVtZW50PihjaGlsZCkpCiAgICAgICAgICAg
ICByZXR1cm4gZG93bmNhc3Q8SFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQ+KGNoaWxkKTsKICAgICB9
CiAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxUYWJsZVBhcnRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlUGFy
dEVsZW1lbnQuY3BwCmluZGV4IGY1MTA4MjRlZGJhNWFhYTdkZTA0NDYzN2ViZDNmNDU1MDA5Nzc0
OTQuLmJiZGQ4NGJjMzdiYTI4YjhjZTg0YmIyNWI0YjMxOGE0NjQ2ZTY0ZGUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlUGFydEVsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlUGFydEVsZW1lbnQuY3BwCkBAIC04Niw3ICs4Niw3IEBA
IHZvaWQgSFRNTFRhYmxlUGFydEVsZW1lbnQ6OmNvbGxlY3RTdHlsZUZvclByZXNlbnRhdGlvbkF0
dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROCiBIVE1MVGFibGVFbGVtZW50KiBIVE1MVGFibGVQYXJ0
RWxlbWVudDo6ZmluZFBhcmVudFRhYmxlKCkgY29uc3QKIHsKICAgICBDb250YWluZXJOb2RlKiBw
YXJlbnQgPSBwYXJlbnROb2RlKCk7Ci0gICAgd2hpbGUgKHBhcmVudCAmJiAhaXNIVE1MVGFibGVF
bGVtZW50KHBhcmVudCkpCisgICAgd2hpbGUgKHBhcmVudCAmJiAhaXM8SFRNTFRhYmxlRWxlbWVu
dD4ocGFyZW50KSkKICAgICAgICAgcGFyZW50ID0gcGFyZW50LT5wYXJlbnROb2RlKCk7CiAgICAg
cmV0dXJuIGRvd25jYXN0PEhUTUxUYWJsZUVsZW1lbnQ+KHBhcmVudCk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZVJvd0VsZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MVGFibGVSb3dFbGVtZW50LmNwcAppbmRleCA0N2ZmMzNiZDc1M2RiNDkz
ZTY5NDU5M2NiNjUwN2IzNDIzNzhiNDU4Li4xZmY2NzFjMjU0MjVlNzVlYmRiZWYzNWFiMTU5N2Nl
NDNlMzRhOWUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZVJvd0Vs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlUm93RWxlbWVudC5j
cHAKQEAgLTYwLDcgKzYwLDcgQEAgaW50IEhUTUxUYWJsZVJvd0VsZW1lbnQ6OnJvd0luZGV4KCkg
Y29uc3QKICAgICBpZiAoIXRhYmxlKQogICAgICAgICByZXR1cm4gLTE7CiAgICAgdGFibGUgPSB0
YWJsZS0+cGFyZW50Tm9kZSgpOwotICAgIGlmICghdGFibGUgfHwgIWlzSFRNTFRhYmxlRWxlbWVu
dCh0YWJsZSkpCisgICAgaWYgKCF0YWJsZSB8fCAhaXM8SFRNTFRhYmxlRWxlbWVudD4odGFibGUp
KQogICAgICAgICByZXR1cm4gLTE7CiAKICAgICAvLyBUbyBtYXRjaCBGaXJlZm94LCB0aGUgcm93
IGluZGljZXMgd29yayBsaWtlIHRoaXM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxUYWJsZVJvd3NDb2xsZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRh
YmxlUm93c0NvbGxlY3Rpb24uY3BwCmluZGV4IDA0YTk2MDQzNmUxMDU3NjE4NDM5N2Q4OTZhMzE2
NWQ1ODljMWMxMzkuLjNhZDIyYTU0NjU4MjkyMjUzODc3YmJjNTJkZmVmMzYxY2E4NGYxZjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlUm93c0NvbGxlY3Rpb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlUm93c0NvbGxlY3Rpb24uY3BwCkBA
IC05Nyw3ICs5Nyw3IEBAIEhUTUxUYWJsZVJvd0VsZW1lbnQqIEhUTUxUYWJsZVJvd3NDb2xsZWN0
aW9uOjpyb3dBZnRlcihIVE1MVGFibGVFbGVtZW50KiB0YWJsZSwKICAgICBlbHNlIGlmIChpc0lu
U2VjdGlvbigqcHJldmlvdXMsIHRib2R5VGFnKSkKICAgICAgICAgY2hpbGQgPSBFbGVtZW50VHJh
dmVyc2FsOjpuZXh0U2libGluZyhwcmV2aW91cy0+cGFyZW50Tm9kZSgpKTsKICAgICBmb3IgKDsg
Y2hpbGQ7IGNoaWxkID0gRWxlbWVudFRyYXZlcnNhbDo6bmV4dFNpYmxpbmcoY2hpbGQpKSB7Ci0g
ICAgICAgIGlmIChpc0hUTUxUYWJsZVJvd0VsZW1lbnQoY2hpbGQpKQorICAgICAgICBpZiAoaXM8
SFRNTFRhYmxlUm93RWxlbWVudD4oY2hpbGQpKQogICAgICAgICAgICAgcmV0dXJuIGRvd25jYXN0
PEhUTUxUYWJsZVJvd0VsZW1lbnQ+KGNoaWxkKTsKICAgICAgICAgaWYgKGNoaWxkLT5oYXNUYWdO
YW1lKHRib2R5VGFnKSkgewogICAgICAgICAgICAgaWYgKGF1dG8gcm93ID0gY2hpbGRyZW5PZlR5
cGU8SFRNTFRhYmxlUm93RWxlbWVudD4oKmNoaWxkKS5maXJzdCgpKQpAQCAtMTMwLDcgKzEzMCw3
IEBAIEhUTUxUYWJsZVJvd0VsZW1lbnQqIEhUTUxUYWJsZVJvd3NDb2xsZWN0aW9uOjpsYXN0Um93
KEhUTUxUYWJsZUVsZW1lbnQqIHRhYmxlKQogICAgIH0KIAogICAgIGZvciAoYXV0byogY2hpbGQg
PSBFbGVtZW50VHJhdmVyc2FsOjpsYXN0Q2hpbGQodGFibGUpOyBjaGlsZDsgY2hpbGQgPSBFbGVt
ZW50VHJhdmVyc2FsOjpwcmV2aW91c1NpYmxpbmcoY2hpbGQpKSB7Ci0gICAgICAgIGlmIChpc0hU
TUxUYWJsZVJvd0VsZW1lbnQoY2hpbGQpKQorICAgICAgICBpZiAoaXM8SFRNTFRhYmxlUm93RWxl
bWVudD4oY2hpbGQpKQogICAgICAgICAgICAgcmV0dXJuIGRvd25jYXN0PEhUTUxUYWJsZVJvd0Vs
ZW1lbnQ+KGNoaWxkKTsKICAgICAgICAgaWYgKGNoaWxkLT5oYXNUYWdOYW1lKHRib2R5VGFnKSkg
ewogICAgICAgICAgICAgaWYgKGF1dG8qIHJvdyA9IGNoaWxkcmVuT2ZUeXBlPEhUTUxUYWJsZVJv
d0VsZW1lbnQ+KCpjaGlsZCkubGFzdCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MVGFnTmFtZXMuaW4gYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWdOYW1lcy5pbgpp
bmRleCAxMmE1YzBmNzc1NTk5YzkwZDBjMzg2MTAwZTg1NTgzNDVkM2E1MDllLi5iYWQ0ZTFhNzY1
Mzg2YmE0YmQ3YjMyMjRiM2IwM2Y3OWU0NDY2MDM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxUYWdOYW1lcy5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWdO
YW1lcy5pbgpAQCAtNjAsNyArNjAsNyBAQCBoNiBpbnRlcmZhY2VOYW1lPUhUTUxIZWFkaW5nRWxl
bWVudAogaGVhZCBnZW5lcmF0ZVR5cGVIZWxwZXJzCiBoZWFkZXIgaW50ZXJmYWNlTmFtZT1IVE1M
RWxlbWVudAogaGdyb3VwIGludGVyZmFjZU5hbWU9SFRNTEVsZW1lbnQKLWhyIGludGVyZmFjZU5h
bWU9SFRNTEhSRWxlbWVudAoraHIgaW50ZXJmYWNlTmFtZT1IVE1MSFJFbGVtZW50LCBnZW5lcmF0
ZVR5cGVIZWxwZXJzCiBodG1sIGdlbmVyYXRlVHlwZUhlbHBlcnMKIGkgaW50ZXJmYWNlTmFtZT1I
VE1MRWxlbWVudAogaWZyYW1lIGludGVyZmFjZU5hbWU9SFRNTElGcmFtZUVsZW1lbnQsIGdlbmVy
YXRlVHlwZUhlbHBlcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTGFiZWxzTm9k
ZUxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9MYWJlbHNOb2RlTGlzdC5jcHAKaW5kZXgg
OGMyOTYyMDYwZjJiZDA4ZWRhNjc4YjBhMGIxNGNlYWE0YTQ1NDQ5YS4uMTFjZjA3YmE5YzUzMGE4
NmYyYjZkNjQ2Nzg1MWE2ZTJhNzQyZWE5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9MYWJlbHNOb2RlTGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9MYWJlbHNOb2Rl
TGlzdC5jcHAKQEAgLTQ1LDcgKzQ1LDcgQEAgTGFiZWxzTm9kZUxpc3Q6On5MYWJlbHNOb2RlTGlz
dCgpCiAgICAgCiBib29sIExhYmVsc05vZGVMaXN0OjplbGVtZW50TWF0Y2hlcyhFbGVtZW50JiB0
ZXN0Tm9kZSkgY29uc3QKIHsKLSAgICByZXR1cm4gaXNIVE1MTGFiZWxFbGVtZW50KHRlc3ROb2Rl
KSAmJiBkb3duY2FzdDxIVE1MTGFiZWxFbGVtZW50Pih0ZXN0Tm9kZSkuY29udHJvbCgpID09ICZv
d25lck5vZGUoKTsKKyAgICByZXR1cm4gaXM8SFRNTExhYmVsRWxlbWVudD4odGVzdE5vZGUpICYm
IGRvd25jYXN0PEhUTUxMYWJlbEVsZW1lbnQ+KHRlc3ROb2RlKS5jb250cm9sKCkgPT0gJm93bmVy
Tm9kZSgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL01lZGlhRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRp
YURvY3VtZW50LmNwcAppbmRleCAwYzI1YjNiZmJkZTI2MWZkMDJhNmFlNDk4NjRkNTUxYTIxYWY1
OGY5Li45NWFmZDkyNGNjYmMxMmI4ZTQ3ZDZhYTZhNzBlM2JiYmQ3ZTQ3ZDdmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvTWVkaWFEb2N1bWVudC5jcHAKQEAgLTE2MCw3ICsxNjAsNyBAQCBQYXNzUmVmUHRy
PERvY3VtZW50UGFyc2VyPiBNZWRpYURvY3VtZW50OjpjcmVhdGVQYXJzZXIoKQogCiBzdGF0aWMg
aW5saW5lIEhUTUxWaWRlb0VsZW1lbnQqIGRlc2NlbmRlbnRWaWRlb0VsZW1lbnQoQ29udGFpbmVy
Tm9kZSYgbm9kZSkKIHsKLSAgICBpZiAoaXNIVE1MVmlkZW9FbGVtZW50KG5vZGUpKQorICAgIGlm
IChpczxIVE1MVmlkZW9FbGVtZW50Pihub2RlKSkKICAgICAgICAgcmV0dXJuIGRvd25jYXN0PEhU
TUxWaWRlb0VsZW1lbnQ+KCZub2RlKTsKIAogICAgIFJlZlB0cjxOb2RlTGlzdD4gbm9kZUxpc3Qg
PSBub2RlLmdldEVsZW1lbnRzQnlUYWdOYW1lTlModmlkZW9UYWcubmFtZXNwYWNlVVJJKCksIHZp
ZGVvVGFnLmxvY2FsTmFtZSgpKTsKQEAgLTE3Myw3ICsxNzMsNyBAQCBzdGF0aWMgaW5saW5lIEhU
TUxWaWRlb0VsZW1lbnQqIGRlc2NlbmRlbnRWaWRlb0VsZW1lbnQoQ29udGFpbmVyTm9kZSYgbm9k
ZSkKIAogc3RhdGljIGlubGluZSBIVE1MVmlkZW9FbGVtZW50KiBhbmNlc3RvclZpZGVvRWxlbWVu
dChOb2RlKiBub2RlKQogewotICAgIHdoaWxlIChub2RlICYmICFpc0hUTUxWaWRlb0VsZW1lbnQo
bm9kZSkpCisgICAgd2hpbGUgKG5vZGUgJiYgIWlzPEhUTUxWaWRlb0VsZW1lbnQ+KG5vZGUpKQog
ICAgICAgICBub2RlID0gbm9kZS0+cGFyZW50T3JTaGFkb3dIb3N0Tm9kZSgpOwogCiAgICAgcmV0
dXJuIGRvd25jYXN0PEhUTUxWaWRlb0VsZW1lbnQ+KG5vZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9SYWRpb0lucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1Jh
ZGlvSW5wdXRUeXBlLmNwcAppbmRleCA4YTVlODg1MTBlMTZiOWRmZmIzZTQ2ZTg2NTgwY2MwNDEw
ZTg1NzYwLi41ZjVlYzc1NDJiZDE4MjgwZTdkZmU1NjUxNDgxZWE1Y2IxNDQxNTJiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1JhZGlvSW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL1JhZGlvSW5wdXRUeXBlLmNwcApAQCAtODEsNyArODEsNyBAQCB2b2lkIFJh
ZGlvSW5wdXRUeXBlOjpoYW5kbGVLZXlkb3duRXZlbnQoS2V5Ym9hcmRFdmVudCogZXZlbnQpCiAg
ICAgTm9kZSogbm9kZSA9ICZlbGVtZW50KCk7CiAgICAgd2hpbGUgKChub2RlID0gKGZvcndhcmQg
PyBOb2RlVHJhdmVyc2FsOjpuZXh0KG5vZGUpIDogTm9kZVRyYXZlcnNhbDo6cHJldmlvdXMobm9k
ZSkpKSkgewogICAgICAgICAvLyBPbmNlIHdlIGVuY291bnRlciBhIGZvcm0gZWxlbWVudCwgd2Ug
a25vdyB3ZSdyZSB0aHJvdWdoLgotICAgICAgICBpZiAoaXNIVE1MRm9ybUVsZW1lbnQobm9kZSkp
CisgICAgICAgIGlmIChpczxIVE1MRm9ybUVsZW1lbnQ+KG5vZGUpKQogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIC8vIExvb2sgZm9yIG1vcmUgcmFkaW8gYnV0dG9ucy4KICAgICAgICAgaWYg
KCFpczxIVE1MSW5wdXRFbGVtZW50Pihub2RlKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvUmFkaW9Ob2RlTGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1JhZGlvTm9kZUxp
c3QuY3BwCmluZGV4IDhkNDY5MjExZDZlMTFjOTgxYmJiYzNmODQ1MTdmMGYyODQ5ZjBkNzMuLjVl
NDAyNWVjYzA4ZDUzNjkzMDMzZDMwN2ZkMjVmZGEzMjZkZTYyNDEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvUmFkaW9Ob2RlTGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9SYWRpb05vZGVMaXN0LmNwcApAQCAtNDEsNyArNDEsNyBAQCB1c2luZyBuYW1lc3BhY2UgSFRN
TE5hbWVzOwogUmFkaW9Ob2RlTGlzdDo6UmFkaW9Ob2RlTGlzdChDb250YWluZXJOb2RlJiByb290
Tm9kZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKQogICAgIDogQ2FjaGVkTGl2ZU5vZGVMaXN0
KHJvb3ROb2RlLCBJbnZhbGlkYXRlRm9yRm9ybUNvbnRyb2xzKQogICAgICwgbV9uYW1lKG5hbWUp
Ci0gICAgLCBtX2lzUm9vdGVkQXREb2N1bWVudChpc0hUTUxGb3JtRWxlbWVudChvd25lck5vZGUo
KSkpCisgICAgLCBtX2lzUm9vdGVkQXREb2N1bWVudChpczxIVE1MRm9ybUVsZW1lbnQ+KG93bmVy
Tm9kZSgpKSkKIHsKIH0KIApAQCAtODYsNyArODYsNyBAQCB2b2lkIFJhZGlvTm9kZUxpc3Q6OnNl
dFZhbHVlKGNvbnN0IFN0cmluZyYgdmFsdWUpCiBib29sIFJhZGlvTm9kZUxpc3Q6OmNoZWNrRWxl
bWVudE1hdGNoZXNSYWRpb05vZGVMaXN0RmlsdGVyKGNvbnN0IEVsZW1lbnQmIHRlc3RFbGVtZW50
KSBjb25zdAogewogICAgIEFTU0VSVChpczxIVE1MT2JqZWN0RWxlbWVudD4odGVzdEVsZW1lbnQp
IHx8IGlzPEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ+KHRlc3RFbGVtZW50KSk7Ci0gICAgaWYgKGlz
SFRNTEZvcm1FbGVtZW50KG93bmVyTm9kZSgpKSkgeworICAgIGlmIChpczxIVE1MRm9ybUVsZW1l
bnQ+KG93bmVyTm9kZSgpKSkgewogICAgICAgICBIVE1MRm9ybUVsZW1lbnQqIGZvcm1FbGVtZW50
ID0gbnVsbHB0cjsKICAgICAgICAgaWYgKHRlc3RFbGVtZW50Lmhhc1RhZ05hbWUob2JqZWN0VGFn
KSkKICAgICAgICAgICAgIGZvcm1FbGVtZW50ID0gZG93bmNhc3Q8SFRNTE9iamVjdEVsZW1lbnQ+
KHRlc3RFbGVtZW50KS5mb3JtKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3Bh
cnNlci9IVE1MQ29uc3RydWN0aW9uU2l0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNl
ci9IVE1MQ29uc3RydWN0aW9uU2l0ZS5jcHAKaW5kZXggYjc4ZGU2MGI0MjdiYmRlMmViNmMyZjUx
M2Q5ZTRiZDU4ZjYwZjUyMi4uOTAzOTZmZmZiNTgyN2Y5NGE1NzljMjJjNTcyMTlhMWU4MGQyZTll
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTENvbnN0cnVjdGlv
blNpdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rp
b25TaXRlLmNwcApAQCAtNjIsNyArNjIsNyBAQCBzdGF0aWMgYm9vbCBoYXNJbXBsaWVkRW5kVGFn
KGNvbnN0IEhUTUxTdGFja0l0ZW0qIGl0ZW0pCiAgICAgICAgIHx8IGl0ZW0tPmhhc1RhZ05hbWUo
ZHRUYWcpCiAgICAgICAgIHx8IGl0ZW0tPmhhc1RhZ05hbWUobGlUYWcpCiAgICAgICAgIHx8IGlz
PEhUTUxPcHRpb25FbGVtZW50PihpdGVtLT5ub2RlKCkpCi0gICAgICAgIHx8IGlzSFRNTE9wdEdy
b3VwRWxlbWVudChpdGVtLT5ub2RlKCkpCisgICAgICAgIHx8IGlzPEhUTUxPcHRHcm91cEVsZW1l
bnQ+KGl0ZW0tPm5vZGUoKSkKICAgICAgICAgfHwgaXRlbS0+aGFzVGFnTmFtZShwVGFnKQogICAg
ICAgICB8fCBpdGVtLT5oYXNUYWdOYW1lKHJiVGFnKQogICAgICAgICB8fCBpdGVtLT5oYXNUYWdO
YW1lKHJwVGFnKQpAQCAtODUsNyArODUsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNBbGxXaGl0
ZXNwYWNlKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogc3RhdGljIGlubGluZSB2b2lkIGluc2VydChI
VE1MQ29uc3RydWN0aW9uU2l0ZVRhc2smIHRhc2spCiB7CiAjaWYgRU5BQkxFKFRFTVBMQVRFX0VM
RU1FTlQpCi0gICAgaWYgKGlzSFRNTFRlbXBsYXRlRWxlbWVudCgqdGFzay5wYXJlbnQpKQorICAg
IGlmIChpczxIVE1MVGVtcGxhdGVFbGVtZW50PigqdGFzay5wYXJlbnQpKQogICAgICAgICB0YXNr
LnBhcmVudCA9IGRvd25jYXN0PEhUTUxUZW1wbGF0ZUVsZW1lbnQ+KCp0YXNrLnBhcmVudCkuY29u
dGVudCgpOwogI2VuZGlmCiAKQEAgLTQ1OCw3ICs0NTgsNyBAQCB2b2lkIEhUTUxDb25zdHJ1Y3Rp
b25TaXRlOjppbnNlcnRIVE1MQm9keUVsZW1lbnQoQXRvbWljSFRNTFRva2VuKiB0b2tlbikKIHZv
aWQgSFRNTENvbnN0cnVjdGlvblNpdGU6Omluc2VydEhUTUxGb3JtRWxlbWVudChBdG9taWNIVE1M
VG9rZW4qIHRva2VuLCBib29sIGlzRGVtb3RlZCkKIHsKICAgICBSZWZQdHI8RWxlbWVudD4gZWxl
bWVudCA9IGNyZWF0ZUhUTUxFbGVtZW50KHRva2VuKTsKLSAgICBBU1NFUlQoaXNIVE1MRm9ybUVs
ZW1lbnQoZWxlbWVudC5nZXQoKSkpOworICAgIEFTU0VSVChpczxIVE1MRm9ybUVsZW1lbnQ+KGVs
ZW1lbnQuZ2V0KCkpKTsKICAgICBSZWZQdHI8SFRNTEZvcm1FbGVtZW50PiBmb3JtID0gc3RhdGlj
X3BvaW50ZXJfY2FzdDxIVE1MRm9ybUVsZW1lbnQ+KGVsZW1lbnQucmVsZWFzZSgpKTsKICAgICBp
ZiAoIWluc2lkZVRlbXBsYXRlRWxlbWVudCgpKQogICAgICAgICBtX2Zvcm0gPSBmb3JtOwpAQCAt
NTMxLDcgKzUzMSw3IEBAIHZvaWQgSFRNTENvbnN0cnVjdGlvblNpdGU6Omluc2VydFRleHROb2Rl
KGNvbnN0IFN0cmluZyYgY2hhcmFjdGVycywgV2hpdGVzcGFjZU1vCiAgICAgICAgIGZpbmRGb3N0
ZXJTaXRlKHRhc2spOwogCiAjaWYgRU5BQkxFKFRFTVBMQVRFX0VMRU1FTlQpCi0gICAgaWYgKGlz
SFRNTFRlbXBsYXRlRWxlbWVudCgqdGFzay5wYXJlbnQpKQorICAgIGlmIChpczxIVE1MVGVtcGxh
dGVFbGVtZW50PigqdGFzay5wYXJlbnQpKQogICAgICAgICB0YXNrLnBhcmVudCA9IGRvd25jYXN0
PEhUTUxUZW1wbGF0ZUVsZW1lbnQ+KCp0YXNrLnBhcmVudCkuY29udGVudCgpOwogI2VuZGlmCiAK
QEAgLTYxOCw3ICs2MTgsNyBAQCBQYXNzUmVmUHRyPEVsZW1lbnQ+IEhUTUxDb25zdHJ1Y3Rpb25T
aXRlOjpjcmVhdGVFbGVtZW50KEF0b21pY0hUTUxUb2tlbiogdG9rZW4sCiBpbmxpbmUgRG9jdW1l
bnQmIEhUTUxDb25zdHJ1Y3Rpb25TaXRlOjpvd25lckRvY3VtZW50Rm9yQ3VycmVudE5vZGUoKQog
ewogI2lmIEVOQUJMRShURU1QTEFURV9FTEVNRU5UKQotICAgIGlmIChpc0hUTUxUZW1wbGF0ZUVs
ZW1lbnQoY3VycmVudE5vZGUoKSkpCisgICAgaWYgKGlzPEhUTUxUZW1wbGF0ZUVsZW1lbnQ+KGN1
cnJlbnROb2RlKCkpKQogICAgICAgICByZXR1cm4gZG93bmNhc3Q8SFRNTFRlbXBsYXRlRWxlbWVu
dD4oKmN1cnJlbnRFbGVtZW50KCkpLmNvbnRlbnQoKS0+ZG9jdW1lbnQoKTsKICNlbmRpZgogICAg
IHJldHVybiBjdXJyZW50Tm9kZSgpLT5kb2N1bWVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9wYXJzZXIvSFRNTEVsZW1lbnRTdGFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3BhcnNlci9IVE1MRWxlbWVudFN0YWNrLmNwcAppbmRleCBhZGEyMGNkYWEzMjMzMjY3ZWM0
OWZmODM4MWU3MDAyYTU0NDc3ZTM1Li5jZDZhMjAxMGZkMTdlNjQwNWQ4YjNiMGQ0MjU3MzgwYjA5
OTQ5Y2I2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRWxlbWVu
dFN0YWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRWxlbWVudFN0
YWNrLmNwcApAQCAtNTEsNyArNTEsNyBAQCBpbmxpbmUgYm9vbCBpc1Njb3BlTWFya2VyKEhUTUxT
dGFja0l0ZW0qIGl0ZW0pCiAgICAgICAgIHx8IGl0ZW0tPmhhc1RhZ05hbWUoY2FwdGlvblRhZykK
ICAgICAgICAgfHwgaXRlbS0+aGFzVGFnTmFtZShtYXJxdWVlVGFnKQogICAgICAgICB8fCBpdGVt
LT5oYXNUYWdOYW1lKG9iamVjdFRhZykKLSAgICAgICAgfHwgaXNIVE1MVGFibGVFbGVtZW50KGl0
ZW0tPm5vZGUoKSkKKyAgICAgICAgfHwgaXM8SFRNTFRhYmxlRWxlbWVudD4oaXRlbS0+bm9kZSgp
KQogICAgICAgICB8fCBpdGVtLT5oYXNUYWdOYW1lKHRkVGFnKQogICAgICAgICB8fCBpdGVtLT5o
YXNUYWdOYW1lKHRoVGFnKQogICAgICAgICB8fCBpdGVtLT5oYXNUYWdOYW1lKE1hdGhNTE5hbWVz
OjptaVRhZykKQEAgLTc4LDcgKzc4LDcgQEAgaW5saW5lIGJvb2wgaXNMaXN0SXRlbVNjb3BlTWFy
a2VyKEhUTUxTdGFja0l0ZW0qIGl0ZW0pCiAKIGlubGluZSBib29sIGlzVGFibGVTY29wZU1hcmtl
cihIVE1MU3RhY2tJdGVtKiBpdGVtKQogewotICAgIHJldHVybiBpc0hUTUxUYWJsZUVsZW1lbnQo
aXRlbS0+bm9kZSgpKQorICAgIHJldHVybiBpczxIVE1MVGFibGVFbGVtZW50PihpdGVtLT5ub2Rl
KCkpCiAjaWYgRU5BQkxFKFRFTVBMQVRFX0VMRU1FTlQpCiAgICAgICAgIHx8IGl0ZW0tPmhhc1Rh
Z05hbWUodGVtcGxhdGVUYWcpCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNl
ci9IVE1MVHJlZUJ1aWxkZXIuY3BwCmluZGV4IGE0ODk2YzU4ZWE2NWVhOGE4OThlZmEwMGM2YjMz
Nzc2OGI0OTg2NzIuLmY3ZWNhYzg1ZDBiNDIxOTViZGUwY2Y2YzI1MDVjNTk2MTA2OTQ2OWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmNwcApAQCAt
Mjk4LDcgKzI5OCw3IEBAIEhUTUxUcmVlQnVpbGRlcjo6SFRNTFRyZWVCdWlsZGVyKEhUTUxEb2N1
bWVudFBhcnNlciYgcGFyc2VyLCBEb2N1bWVudEZyYWdtZW50JiBmCiAjZW5kaWYKIAogICAgICAg
ICByZXNldEluc2VydGlvbk1vZGVBcHByb3ByaWF0ZWx5KCk7Ci0gICAgICAgIG1fdHJlZS5zZXRG
b3JtKCFjb250ZXh0RWxlbWVudCB8fCBpc0hUTUxGb3JtRWxlbWVudChjb250ZXh0RWxlbWVudCkg
PyBkb3duY2FzdDxIVE1MRm9ybUVsZW1lbnQ+KGNvbnRleHRFbGVtZW50KSA6IEhUTUxGb3JtRWxl
bWVudDo6ZmluZENsb3Nlc3RGb3JtQW5jZXN0b3IoKmNvbnRleHRFbGVtZW50KSk7CisgICAgICAg
IG1fdHJlZS5zZXRGb3JtKCFjb250ZXh0RWxlbWVudCB8fCBpczxIVE1MRm9ybUVsZW1lbnQ+KGNv
bnRleHRFbGVtZW50KSA/IGRvd25jYXN0PEhUTUxGb3JtRWxlbWVudD4oY29udGV4dEVsZW1lbnQp
IDogSFRNTEZvcm1FbGVtZW50OjpmaW5kQ2xvc2VzdEZvcm1BbmNlc3RvcigqY29udGV4dEVsZW1l
bnQpKTsKICAgICB9CiB9CiAKQEAgLTEzNzIsNyArMTM3Miw3IEBAIHZvaWQgSFRNTFRyZWVCdWls
ZGVyOjpwcm9jZXNzU3RhcnRUYWcoQXRvbWljSFRNTFRva2VuKiB0b2tlbikKICAgICAgICAgICAg
ICAgICBBdG9taWNIVE1MVG9rZW4gZW5kT3B0aW9uKEhUTUxUb2tlbjo6RW5kVGFnLCBvcHRpb25U
YWcubG9jYWxOYW1lKCkpOwogICAgICAgICAgICAgICAgIHByb2Nlc3NFbmRUYWcoJmVuZE9wdGlv
bik7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoaXNIVE1MT3B0R3JvdXBFbGVtZW50
KG1fdHJlZS5jdXJyZW50U3RhY2tJdGVtKCktPm5vZGUoKSkpIHsKKyAgICAgICAgICAgIGlmIChp
czxIVE1MT3B0R3JvdXBFbGVtZW50PihtX3RyZWUuY3VycmVudFN0YWNrSXRlbSgpLT5ub2RlKCkp
KSB7CiAgICAgICAgICAgICAgICAgQXRvbWljSFRNTFRva2VuIGVuZE9wdGdyb3VwKEhUTUxUb2tl
bjo6RW5kVGFnLCBvcHRncm91cFRhZy5sb2NhbE5hbWUoKSk7CiAgICAgICAgICAgICAgICAgcHJv
Y2Vzc0VuZFRhZygmZW5kT3B0Z3JvdXApOwogICAgICAgICAgICAgfQpAQCAtMTYyOSw3ICsxNjI5
LDcgQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnJlc2V0SW5zZXJ0aW9uTW9kZUFwcHJvcHJpYXRl
bHkoKQogICAgICAgICAgICAgICAgIHdoaWxlIChpdGVtLT5ub2RlKCkgIT0gbV90cmVlLm9wZW5F
bGVtZW50cygpLT5yb290Tm9kZSgpICYmICFpdGVtLT5oYXNUYWdOYW1lKHRlbXBsYXRlVGFnKSkg
ewogICAgICAgICAgICAgICAgICAgICBub2RlUmVjb3JkID0gbm9kZVJlY29yZC0+bmV4dCgpOwog
ICAgICAgICAgICAgICAgICAgICBpdGVtID0gbm9kZVJlY29yZC0+c3RhY2tJdGVtKCk7Ci0gICAg
ICAgICAgICAgICAgICAgIGlmIChpc0hUTUxUYWJsZUVsZW1lbnQoaXRlbS0+bm9kZSgpKSkKKyAg
ICAgICAgICAgICAgICAgICAgaWYgKGlzPEhUTUxUYWJsZUVsZW1lbnQ+KGl0ZW0tPm5vZGUoKSkp
CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2V0SW5zZXJ0aW9uTW9kZShJbnNlcnRp
b25Nb2RlOjpJblNlbGVjdEluVGFibGUpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IH0KQEAgLTE2NDcsNyArMTY0Nyw3IEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpyZXNldEluc2Vy
dGlvbk1vZGVBcHByb3ByaWF0ZWx5KCkKICAgICAgICAgaWYgKGl0ZW0tPmhhc1RhZ05hbWUoY29s
Z3JvdXBUYWcpKSB7CiAgICAgICAgICAgICByZXR1cm4gc2V0SW5zZXJ0aW9uTW9kZShJbnNlcnRp
b25Nb2RlOjpJbkNvbHVtbkdyb3VwKTsKICAgICAgICAgfQotICAgICAgICBpZiAoaXNIVE1MVGFi
bGVFbGVtZW50KGl0ZW0tPm5vZGUoKSkpCisgICAgICAgIGlmIChpczxIVE1MVGFibGVFbGVtZW50
PihpdGVtLT5ub2RlKCkpKQogICAgICAgICAgICAgcmV0dXJuIHNldEluc2VydGlvbk1vZGUoSW5z
ZXJ0aW9uTW9kZTo6SW5UYWJsZSk7CiAgICAgICAgIGlmIChpdGVtLT5oYXNUYWdOYW1lKGhlYWRU
YWcpKSB7CiAjaWYgRU5BQkxFKFRFTVBMQVRFX0VMRU1FTlQpCkBAIC0yMjM0LDkgKzIyMzQsOSBA
QCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0VuZFRhZyhBdG9taWNIVE1MVG9rZW4qIHRv
a2VuKQogICAgIGNhc2UgSW5zZXJ0aW9uTW9kZTo6SW5TZWxlY3Q6CiAgICAgICAgIEFTU0VSVChp
bnNlcnRpb25Nb2RlKCkgPT0gSW5zZXJ0aW9uTW9kZTo6SW5TZWxlY3QgfHwgaW5zZXJ0aW9uTW9k
ZSgpID09IEluc2VydGlvbk1vZGU6OkluU2VsZWN0SW5UYWJsZSk7CiAgICAgICAgIGlmICh0b2tl
bi0+bmFtZSgpID09IG9wdGdyb3VwVGFnKSB7Ci0gICAgICAgICAgICBpZiAoaXM8SFRNTE9wdGlv
bkVsZW1lbnQ+KG1fdHJlZS5jdXJyZW50U3RhY2tJdGVtKCktPm5vZGUoKSkgJiYgbV90cmVlLm9u
ZUJlbG93VG9wKCkgJiYgaXNIVE1MT3B0R3JvdXBFbGVtZW50KG1fdHJlZS5vbmVCZWxvd1RvcCgp
LT5ub2RlKCkpKQorICAgICAgICAgICAgaWYgKGlzPEhUTUxPcHRpb25FbGVtZW50PihtX3RyZWUu
Y3VycmVudFN0YWNrSXRlbSgpLT5ub2RlKCkpICYmIG1fdHJlZS5vbmVCZWxvd1RvcCgpICYmIGlz
PEhUTUxPcHRHcm91cEVsZW1lbnQ+KG1fdHJlZS5vbmVCZWxvd1RvcCgpLT5ub2RlKCkpKQogICAg
ICAgICAgICAgICAgIHByb2Nlc3NGYWtlRW5kVGFnKG9wdGlvblRhZyk7Ci0gICAgICAgICAgICBp
ZiAoaXNIVE1MT3B0R3JvdXBFbGVtZW50KG1fdHJlZS5jdXJyZW50U3RhY2tJdGVtKCktPm5vZGUo
KSkpIHsKKyAgICAgICAgICAgIGlmIChpczxIVE1MT3B0R3JvdXBFbGVtZW50PihtX3RyZWUuY3Vy
cmVudFN0YWNrSXRlbSgpLT5ub2RlKCkpKSB7CiAgICAgICAgICAgICAgICAgbV90cmVlLm9wZW5F
bGVtZW50cygpLT5wb3AoKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9
CkBAIC0yNDg2LDcgKzI0ODYsNyBAQCBSZXByb2Nlc3NCdWZmZXI6CiAgICAgICAgIEFTU0VSVChp
bnNlcnRpb25Nb2RlKCkgPT0gSW5zZXJ0aW9uTW9kZTo6SW5UYWJsZSB8fCBpbnNlcnRpb25Nb2Rl
KCkgPT0gSW5zZXJ0aW9uTW9kZTo6SW5UYWJsZUJvZHkgfHwgaW5zZXJ0aW9uTW9kZSgpID09IElu
c2VydGlvbk1vZGU6OkluUm93KTsKICAgICAgICAgQVNTRVJUKG1fcGVuZGluZ1RhYmxlQ2hhcmFj
dGVycy5pc0VtcHR5KCkpOwogICAgICAgICBpZiAobV90cmVlLmN1cnJlbnRTdGFja0l0ZW0oKS0+
aXNFbGVtZW50Tm9kZSgpCi0gICAgICAgICAgICAmJiAoaXNIVE1MVGFibGVFbGVtZW50KG1fdHJl
ZS5jdXJyZW50U3RhY2tJdGVtKCktPm5vZGUoKSkKKyAgICAgICAgICAgICYmIChpczxIVE1MVGFi
bGVFbGVtZW50PihtX3RyZWUuY3VycmVudFN0YWNrSXRlbSgpLT5ub2RlKCkpCiAgICAgICAgICAg
ICAgICAgfHwgbV90cmVlLmN1cnJlbnRTdGFja0l0ZW0oKS0+aGFzVGFnTmFtZShIVE1MTmFtZXM6
OnRib2R5VGFnKQogICAgICAgICAgICAgICAgIHx8IG1fdHJlZS5jdXJyZW50U3RhY2tJdGVtKCkt
Pmhhc1RhZ05hbWUoSFRNTE5hbWVzOjp0Zm9vdFRhZykKICAgICAgICAgICAgICAgICB8fCBtX3Ry
ZWUuY3VycmVudFN0YWNrSXRlbSgpLT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6dGhlYWRUYWcpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcAppbmRleCBi
YmEzOWY2NmYxNTFiNTkyNmE0ZjBmM2E2NTAwZWRhYWY4ZTVmZTU1Li4wZjhhMjlkYjIwYzQ5MDJm
YzgxOTY0NjE4M2U1OTBiODI3YmI0YjU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JET01BZ2VudC5jcHAKQEAgLTEyOTcsNyArMTI5Nyw3IEBAIFBhc3NSZWZQdHI8
SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpOb2RlPiBJbnNwZWN0b3JET01BZ2VudDo6YnVpbGRP
YmplY3RGb3JOb2RlCiAgICAgICAgIH0KIAogI2lmIEVOQUJMRShURU1QTEFURV9FTEVNRU5UKQot
ICAgICAgICBpZiAoaXNIVE1MVGVtcGxhdGVFbGVtZW50KGVsZW1lbnQpKQorICAgICAgICBpZiAo
aXM8SFRNTFRlbXBsYXRlRWxlbWVudD4oZWxlbWVudCkpCiAgICAgICAgICAgICB2YWx1ZS0+c2V0
VGVtcGxhdGVDb250ZW50KGJ1aWxkT2JqZWN0Rm9yTm9kZShkb3duY2FzdDxIVE1MVGVtcGxhdGVF
bGVtZW50PigqZWxlbWVudCkuY29udGVudCgpLCAwLCBub2Rlc01hcCkpOwogI2VuZGlmCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcAppbmRl
eCBhMzVmMWU2NTdhZGMyOWIxNDVjMDljZjQ3ZTgzN2I5ZWZmYmM0MmNiLi43MjFhYmUzMmRkOTQ1
ZjQzYWZmOWQzYWQzY2QzZjcyZjIzYWU3NzIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwCkBAIC0xMzkyLDcgKzEzOTIsNyBAQCBib29s
IEluc3BlY3RvclN0eWxlU2hlZXQ6OmlubGluZVN0eWxlU2hlZXRUZXh0KFN0cmluZyogcmVzdWx0
KSBjb25zdAogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgRWxlbWVudCogb3duZXJFbGVtZW50
ID0gdG9FbGVtZW50KG93bmVyTm9kZSk7CiAKLSAgICBpZiAoIWlzSFRNTFN0eWxlRWxlbWVudChv
d25lckVsZW1lbnQpICYmICFvd25lckVsZW1lbnQtPmhhc1RhZ05hbWUoU1ZHTmFtZXM6OnN0eWxl
VGFnKSkKKyAgICBpZiAoIWlzPEhUTUxTdHlsZUVsZW1lbnQ+KG93bmVyRWxlbWVudCkgJiYgIWlz
PFNWR1N0eWxlRWxlbWVudD4ob3duZXJFbGVtZW50KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgICpyZXN1bHQgPSBvd25lckVsZW1lbnQtPnRleHRDb250ZW50KCk7CiAgICAgcmV0dXJuIHRy
dWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCmluZGV4IDVhZDMzYmMxNjhl
MThjZGZiNDJhOTRmZjMyMmQzZTY0MDlmOTIwMzAuLjE3OWVlYTU4ZTRjZmNlZGYxMWJmNjk5ZTkw
ZDE5ZjBkZDU4ODZiNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRy
b2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCkBA
IC02MzksMTMgKzYzOSwxMyBAQCBFbGVtZW50KiBEcmFnQ29udHJvbGxlcjo6ZHJhZ2dhYmxlRWxl
bWVudChjb25zdCBGcmFtZSogc291cmNlRnJhbWUsIEVsZW1lbnQqIHN0YQogICAgICAgICB9CiAg
ICAgICAgIGlmIChkcmFnTW9kZSA9PSBEUkFHX0FVVE8pIHsKICAgICAgICAgICAgIGlmICgobV9k
cmFnU291cmNlQWN0aW9uICYgRHJhZ1NvdXJjZUFjdGlvbkltYWdlKQotICAgICAgICAgICAgICAg
ICYmIGlzSFRNTEltYWdlRWxlbWVudChlbGVtZW50KQorICAgICAgICAgICAgICAgICYmIGlzPEhU
TUxJbWFnZUVsZW1lbnQ+KGVsZW1lbnQpCiAgICAgICAgICAgICAgICAgJiYgc291cmNlRnJhbWUt
PnNldHRpbmdzKCkubG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5KCkpIHsKICAgICAgICAgICAgICAg
ICBzdGF0ZS50eXBlID0gc3RhdGljX2Nhc3Q8RHJhZ1NvdXJjZUFjdGlvbj4oc3RhdGUudHlwZSB8
IERyYWdTb3VyY2VBY3Rpb25JbWFnZSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQ7
CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoKG1fZHJhZ1NvdXJjZUFjdGlvbiAmIERy
YWdTb3VyY2VBY3Rpb25MaW5rKQotICAgICAgICAgICAgICAgICYmIGlzSFRNTEFuY2hvckVsZW1l
bnQoZWxlbWVudCkKKyAgICAgICAgICAgICAgICAmJiBpczxIVE1MQW5jaG9yRWxlbWVudD4oZWxl
bWVudCkKICAgICAgICAgICAgICAgICAmJiBkb3duY2FzdDxIVE1MQW5jaG9yRWxlbWVudD4oKmVs
ZW1lbnQpLmlzTGl2ZUxpbmsoKSkgewogICAgICAgICAgICAgICAgIHN0YXRlLnR5cGUgPSBzdGF0
aWNfY2FzdDxEcmFnU291cmNlQWN0aW9uPihzdGF0ZS50eXBlIHwgRHJhZ1NvdXJjZUFjdGlvbkxp
bmspOwogICAgICAgICAgICAgICAgIHJldHVybiBlbGVtZW50OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9G
b2N1c0NvbnRyb2xsZXIuY3BwCmluZGV4IGY3YmQ3MjIxOTUzZjE5MTE5NDQwZjVhNzhjODMzMDM1
YTk3MzZmY2YuLmVjODU2MDZlOTk3Mjk5OTU2N2VhMTRmMzAwM2ZkNDQwYWY0NTY2MGYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9sbGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0ZvY3VzQ29udHJvbGxlci5jcHAKQEAgLTg4NCw3ICs4ODQsNyBAQCBi
b29sIEZvY3VzQ29udHJvbGxlcjo6YWR2YW5jZUZvY3VzRGlyZWN0aW9uYWxseShGb2N1c0RpcmVj
dGlvbiBkaXJlY3Rpb24sIEtleWJvYQogICAgICAgICBpZiAoIWhhc09mZnNjcmVlblJlY3QoZm9j
dXNlZEVsZW1lbnQpKSB7CiAgICAgICAgICAgICBjb250YWluZXIgPSBzY3JvbGxhYmxlRW5jbG9z
aW5nQm94T3JQYXJlbnRGcmFtZUZvck5vZGVJbkRpcmVjdGlvbihkaXJlY3Rpb24sIGZvY3VzZWRF
bGVtZW50KTsKICAgICAgICAgICAgIHN0YXJ0aW5nUmVjdCA9IG5vZGVSZWN0SW5BYnNvbHV0ZUNv
b3JkaW5hdGVzKGZvY3VzZWRFbGVtZW50LCB0cnVlIC8qIGlnbm9yZSBib3JkZXIgKi8pOwotICAg
ICAgICB9IGVsc2UgaWYgKGlzSFRNTEFyZWFFbGVtZW50KGZvY3VzZWRFbGVtZW50KSkgeworICAg
ICAgICB9IGVsc2UgaWYgKGlzPEhUTUxBcmVhRWxlbWVudD4oZm9jdXNlZEVsZW1lbnQpKSB7CiAg
ICAgICAgICAgICBIVE1MQXJlYUVsZW1lbnQmIGFyZWEgPSBkb3duY2FzdDxIVE1MQXJlYUVsZW1l
bnQ+KCpmb2N1c2VkRWxlbWVudCk7CiAgICAgICAgICAgICBjb250YWluZXIgPSBzY3JvbGxhYmxl
RW5jbG9zaW5nQm94T3JQYXJlbnRGcmFtZUZvck5vZGVJbkRpcmVjdGlvbihkaXJlY3Rpb24sIGFy
ZWEuaW1hZ2VFbGVtZW50KCkpOwogICAgICAgICAgICAgc3RhcnRpbmdSZWN0ID0gdmlydHVhbFJl
Y3RGb3JBcmVhRWxlbWVudEFuZERpcmVjdGlvbigmYXJlYSwgZGlyZWN0aW9uKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9QYWdlU2VyaWFsaXplci5jcHAKaW5kZXggOGNjNjhlOTk5MDMyMDVjY2Q3YzhlODU4
NWYzMjY2MmU2MzUzYjA4OC4uOGUxZGNlZmM5MzRjNGM5NGFlMjYzMDAxMmYxYTc4NGI0NmJhODhh
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5jcHAKQEAgLTIzMCwxOSArMjMw
LDE5IEBAIHZvaWQgUGFnZVNlcmlhbGl6ZXI6OnNlcmlhbGl6ZUZyYW1lKEZyYW1lKiBmcmFtZSkK
ICAgICAgICAgaWYgKGVsZW1lbnQtPmlzU3R5bGVkRWxlbWVudCgpKQogICAgICAgICAgICAgcmV0
cmlldmVSZXNvdXJjZXNGb3JQcm9wZXJ0aWVzKHRvU3R5bGVkRWxlbWVudChlbGVtZW50KS0+aW5s
aW5lU3R5bGUoKSwgZG9jdW1lbnQpOwogCi0gICAgICAgIGlmIChpc0hUTUxJbWFnZUVsZW1lbnQo
ZWxlbWVudCkpIHsKKyAgICAgICAgaWYgKGlzPEhUTUxJbWFnZUVsZW1lbnQ+KGVsZW1lbnQpKSB7
CiAgICAgICAgICAgICBIVE1MSW1hZ2VFbGVtZW50JiBpbWFnZUVsZW1lbnQgPSBkb3duY2FzdDxI
VE1MSW1hZ2VFbGVtZW50PigqZWxlbWVudCk7CiAgICAgICAgICAgICBVUkwgdXJsID0gZG9jdW1l
bnQtPmNvbXBsZXRlVVJMKGltYWdlRWxlbWVudC5mYXN0R2V0QXR0cmlidXRlKEhUTUxOYW1lczo6
c3JjQXR0cikpOwogICAgICAgICAgICAgQ2FjaGVkSW1hZ2UqIGNhY2hlZEltYWdlID0gaW1hZ2VF
bGVtZW50LmNhY2hlZEltYWdlKCk7CiAgICAgICAgICAgICBhZGRJbWFnZVRvUmVzb3VyY2VzKGNh
Y2hlZEltYWdlLCBpbWFnZUVsZW1lbnQucmVuZGVyZXIoKSwgdXJsKTsKLSAgICAgICAgfSBlbHNl
IGlmIChpc0hUTUxMaW5rRWxlbWVudChlbGVtZW50KSkgeworICAgICAgICB9IGVsc2UgaWYgKGlz
PEhUTUxMaW5rRWxlbWVudD4oZWxlbWVudCkpIHsKICAgICAgICAgICAgIEhUTUxMaW5rRWxlbWVu
dCYgbGlua0VsZW1lbnQgPSBkb3duY2FzdDxIVE1MTGlua0VsZW1lbnQ+KCplbGVtZW50KTsKICAg
ICAgICAgICAgIGlmIChDU1NTdHlsZVNoZWV0KiBzaGVldCA9IGxpbmtFbGVtZW50LnNoZWV0KCkp
IHsKICAgICAgICAgICAgICAgICBVUkwgdXJsID0gZG9jdW1lbnQtPmNvbXBsZXRlVVJMKGxpbmtF
bGVtZW50LmdldEF0dHJpYnV0ZShIVE1MTmFtZXM6OmhyZWZBdHRyKSk7CiAgICAgICAgICAgICAg
ICAgc2VyaWFsaXplQ1NTU3R5bGVTaGVldChzaGVldCwgdXJsKTsKICAgICAgICAgICAgICAgICBB
U1NFUlQobV9yZXNvdXJjZVVSTHMuY29udGFpbnModXJsKSk7CiAgICAgICAgICAgICB9Ci0gICAg
ICAgIH0gZWxzZSBpZiAoaXNIVE1MU3R5bGVFbGVtZW50KGVsZW1lbnQpKSB7CisgICAgICAgIH0g
ZWxzZSBpZiAoaXM8SFRNTFN0eWxlRWxlbWVudD4oZWxlbWVudCkpIHsKICAgICAgICAgICAgIGlm
IChDU1NTdHlsZVNoZWV0KiBzaGVldCA9IGRvd25jYXN0PEhUTUxTdHlsZUVsZW1lbnQ+KCplbGVt
ZW50KS5zaGVldCgpKQogICAgICAgICAgICAgICAgIHNlcmlhbGl6ZUNTU1N0eWxlU2hlZXQoc2hl
ZXQsIFVSTCgpKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9T
cGF0aWFsTmF2aWdhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NwYXRpYWxOYXZpZ2F0
aW9uLmNwcAppbmRleCBkNTZjOWYwZDc4ZThhOTA3NDZhZDc3ZmM0ZWEyNzc4MmY3OTY5MjAwLi40
ZTM4OTI0MmYxOTU5MzgyOTdlYTEyYzQwOWI5ZGZhYzg3Y2I1MjY0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1NwYXRpYWxOYXZpZ2F0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1NwYXRpYWxOYXZpZ2F0aW9uLmNwcApAQCAtNjYsNyArNjYsNyBAQCBGb2N1c0NhbmRp
ZGF0ZTo6Rm9jdXNDYW5kaWRhdGUoTm9kZSogbm9kZSwgRm9jdXNEaXJlY3Rpb24gZGlyZWN0aW9u
KQogICAgIEFTU0VSVChub2RlKTsKICAgICBBU1NFUlQobm9kZS0+aXNFbGVtZW50Tm9kZSgpKTsK
IAotICAgIGlmIChpc0hUTUxBcmVhRWxlbWVudChub2RlKSkgeworICAgIGlmIChpczxIVE1MQXJl
YUVsZW1lbnQ+KG5vZGUpKSB7CiAgICAgICAgIEhUTUxBcmVhRWxlbWVudCYgYXJlYSA9IGRvd25j
YXN0PEhUTUxBcmVhRWxlbWVudD4oKm5vZGUpOwogICAgICAgICBIVE1MSW1hZ2VFbGVtZW50KiBp
bWFnZSA9IGFyZWEuaW1hZ2VFbGVtZW50KCk7CiAgICAgICAgIGlmICghaW1hZ2UgfHwgIWltYWdl
LT5yZW5kZXJlcigpKQpAQCAtNjA3LDcgKzYwNyw3IEBAIGJvb2wgYXJlRWxlbWVudHNPblNhbWVM
aW5lKGNvbnN0IEZvY3VzQ2FuZGlkYXRlJiBmaXJzdENhbmRpZGF0ZSwgY29uc3QgRm9jdXNDYW5k
CiAgICAgaWYgKCFmaXJzdENhbmRpZGF0ZS5yZWN0LmludGVyc2VjdHMoc2Vjb25kQ2FuZGlkYXRl
LnJlY3QpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAoaXNIVE1MQXJlYUVsZW1l
bnQoZmlyc3RDYW5kaWRhdGUuZm9jdXNhYmxlTm9kZSkgfHwgaXNIVE1MQXJlYUVsZW1lbnQoc2Vj
b25kQ2FuZGlkYXRlLmZvY3VzYWJsZU5vZGUpKQorICAgIGlmIChpczxIVE1MQXJlYUVsZW1lbnQ+
KGZpcnN0Q2FuZGlkYXRlLmZvY3VzYWJsZU5vZGUpIHx8IGlzPEhUTUxBcmVhRWxlbWVudD4oc2Vj
b25kQ2FuZGlkYXRlLmZvY3VzYWJsZU5vZGUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAg
ICBpZiAoIWZpcnN0Q2FuZGlkYXRlLnZpc2libGVOb2RlLT5yZW5kZXJlcigpLT5pc1JlbmRlcklu
bGluZSgpIHx8ICFzZWNvbmRDYW5kaWRhdGUudmlzaWJsZU5vZGUtPnJlbmRlcmVyKCktPmlzUmVu
ZGVySW5saW5lKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2lvcy9GcmFtZUlP
Uy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvaW9zL0ZyYW1lSU9TLm1tCmluZGV4IGI4MmY5ZWIy
NGI4NzM2YmFmZTU1MzVkZTExZTNiNjY5MjA0MjlhNWEuLmUzYTBjNzExNzM4MmUzZTliZmZkZTU3
N2IxZTk1Yzg5ODVlMTUwNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvaW9zL0Zy
YW1lSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvaW9zL0ZyYW1lSU9TLm1tCkBAIC0z
NTEsNyArMzUxLDcgQEAgc3RhdGljIE5vZGUqIGFuY2VzdG9yUmVzcG9uZGluZ1RvQ2xpY2tFdmVu
dHMoY29uc3QgSGl0VGVzdFJlc3VsdCYgaGl0VGVzdFJlc3VsdCwKICAgICAgICAgICAgIC8vIElm
IHdlIGFyZSBpbnRlcmVzdGVkIGFib3V0IHRoZSBmcmFtZSwgdXNlIGl0LgogICAgICAgICAgICAg
aWYgKG5vZGVCb3VuZHMpIHsKICAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIGEgY2hlY2sgdG8g
c2VlIHdoZXRoZXIgdGhpcyBub2RlIGlzIGFuIGFyZWEgZWxlbWVudC4gIFRoZSBvbmx5IHdheSB0
aGlzIGNhbiBoYXBwZW4gaXMgaWYgdGhpcyBpcyB0aGUgZmlyc3QgY2hlY2suCi0gICAgICAgICAg
ICAgICAgaWYgKG5vZGUgPT0gaGl0VGVzdFJlc3VsdC5pbm5lck5vZGUoKSAmJiBub2RlICE9IGhp
dFRlc3RSZXN1bHQuaW5uZXJOb25TaGFyZWROb2RlKCkgJiYgaXNIVE1MQXJlYUVsZW1lbnQobm9k
ZSkpCisgICAgICAgICAgICAgICAgaWYgKG5vZGUgPT0gaGl0VGVzdFJlc3VsdC5pbm5lck5vZGUo
KSAmJiBub2RlICE9IGhpdFRlc3RSZXN1bHQuaW5uZXJOb25TaGFyZWROb2RlKCkgJiYgaXM8SFRN
TEFyZWFFbGVtZW50Pihub2RlKSkKICAgICAgICAgICAgICAgICAgICAgKm5vZGVCb3VuZHMgPSBz
bmFwcGVkSW50UmVjdChkb3duY2FzdDxIVE1MQXJlYUVsZW1lbnQ+KCpub2RlKS5jb21wdXRlUmVj
dChoaXRUZXN0UmVzdWx0LmlubmVyTm9uU2hhcmVkTm9kZSgpLT5yZW5kZXJlcigpKSk7CiAgICAg
ICAgICAgICAgICAgZWxzZSBpZiAobm9kZSAmJiBub2RlLT5yZW5kZXJlcigpKQogICAgICAgICAg
ICAgICAgICAgICAqbm9kZUJvdW5kcyA9IG5vZGUtPnJlbmRlcmVyKCktPmFic29sdXRlQm91bmRp
bmdCb3hSZWN0KHRydWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hp
dFRlc3RSZXN1bHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQu
Y3BwCmluZGV4IDA2Mzc4OWM4YzA3YWNkMWMxMTQxN2UxZDdkNzY1ZjU4NWZlNjA2ZTUuLjkzY2U0
OWRiMzJiMTIyYTE4OWZlMzE1ZTlhMjE1MDA2MjIzNGM2ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHAKQEAgLTI3Myw3ICsyNzMsNyBAQCBTdHJpbmcgSGl0
VGVzdFJlc3VsdDo6YWx0RGlzcGxheVN0cmluZygpIGNvbnN0CiAgICAgaWYgKCFtX2lubmVyTm9u
U2hhcmVkTm9kZSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogICAgIAotICAgIGlmIChpc0hU
TUxJbWFnZUVsZW1lbnQoKm1faW5uZXJOb25TaGFyZWROb2RlKSkgeworICAgIGlmIChpczxIVE1M
SW1hZ2VFbGVtZW50PigqbV9pbm5lck5vblNoYXJlZE5vZGUpKSB7CiAgICAgICAgIEhUTUxJbWFn
ZUVsZW1lbnQmIGltYWdlID0gZG93bmNhc3Q8SFRNTEltYWdlRWxlbWVudD4oKm1faW5uZXJOb25T
aGFyZWROb2RlKTsKICAgICAgICAgcmV0dXJuIGRpc3BsYXlTdHJpbmcoaW1hZ2UuZmFzdEdldEF0
dHJpYnV0ZShhbHRBdHRyKSwgbV9pbm5lck5vblNoYXJlZE5vZGUuZ2V0KCkpOwogICAgIH0KQEAg
LTM2Miw3ICszNjIsNyBAQCBib29sIEhpdFRlc3RSZXN1bHQ6Om1lZGlhU3VwcG9ydHNGdWxsc2Ny
ZWVuKCkgY29uc3QKIHsKICNpZiBFTkFCTEUoVklERU8pCiAgICAgSFRNTE1lZGlhRWxlbWVudCog
bWVkaWFFbHQobWVkaWFFbGVtZW50KCkpOwotICAgIHJldHVybiAobWVkaWFFbHQgJiYgaXNIVE1M
VmlkZW9FbGVtZW50KG1lZGlhRWx0KSAmJiBtZWRpYUVsdC0+c3VwcG9ydHNGdWxsc2NyZWVuKCkp
OworICAgIHJldHVybiAobWVkaWFFbHQgJiYgaXM8SFRNTFZpZGVvRWxlbWVudD4obWVkaWFFbHQp
ICYmIG1lZGlhRWx0LT5zdXBwb3J0c0Z1bGxzY3JlZW4oKSk7CiAjZWxzZQogICAgIHJldHVybiBm
YWxzZTsKICNlbmRpZgpAQCAtMzc3LDcgKzM3Nyw3IEBAIEhUTUxNZWRpYUVsZW1lbnQqIEhpdFRl
c3RSZXN1bHQ6Om1lZGlhRWxlbWVudCgpIGNvbnN0CiAgICAgaWYgKCEobV9pbm5lck5vblNoYXJl
ZE5vZGUtPnJlbmRlcmVyKCkgJiYgbV9pbm5lck5vblNoYXJlZE5vZGUtPnJlbmRlcmVyKCktPmlz
TWVkaWEoKSkpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgaWYgKGlzSFRNTFZpZGVvRWxlbWVu
dChtX2lubmVyTm9uU2hhcmVkTm9kZS5nZXQoKSkgfHwgaXNIVE1MQXVkaW9FbGVtZW50KG1faW5u
ZXJOb25TaGFyZWROb2RlLmdldCgpKSkKKyAgICBpZiAoaXM8SFRNTFZpZGVvRWxlbWVudD4obV9p
bm5lck5vblNoYXJlZE5vZGUuZ2V0KCkpIHx8IGlzPEhUTUxBdWRpb0VsZW1lbnQ+KG1faW5uZXJO
b25TaGFyZWROb2RlLmdldCgpKSkKICAgICAgICAgcmV0dXJuIHRvSFRNTE1lZGlhRWxlbWVudCht
X2lubmVyTm9uU2hhcmVkTm9kZS5nZXQoKSk7CiAgICAgcmV0dXJuIDA7CiB9CkBAIC00MjQsNyAr
NDI0LDcgQEAgdm9pZCBIaXRUZXN0UmVzdWx0OjplbnRlckZ1bGxzY3JlZW5Gb3JWaWRlbygpIGNv
bnN0CiB7CiAjaWYgRU5BQkxFKFZJREVPKQogICAgIEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxl
bWVudCh0aGlzLT5tZWRpYUVsZW1lbnQoKSk7Ci0gICAgaWYgKG1lZGlhRWxlbWVudCAmJiBpc0hU
TUxWaWRlb0VsZW1lbnQobWVkaWFFbGVtZW50KSkgeworICAgIGlmIChtZWRpYUVsZW1lbnQgJiYg
aXM8SFRNTFZpZGVvRWxlbWVudD4obWVkaWFFbGVtZW50KSkgewogICAgICAgICBIVE1MVmlkZW9F
bGVtZW50JiB2aWRlb0VsZW1lbnQgPSBkb3duY2FzdDxIVE1MVmlkZW9FbGVtZW50PigqbWVkaWFF
bGVtZW50KTsKICAgICAgICAgaWYgKCF2aWRlb0VsZW1lbnQuaXNGdWxsc2NyZWVuKCkgJiYgbWVk
aWFFbGVtZW50LT5zdXBwb3J0c0Z1bGxzY3JlZW4oKSkgewogICAgICAgICAgICAgVXNlckdlc3R1
cmVJbmRpY2F0b3IgaW5kaWNhdG9yKERlZmluaXRlbHlQcm9jZXNzaW5nVXNlckdlc3R1cmUpOwpA
QCAtNDgyLDcgKzQ4Miw3IEBAIGJvb2wgSGl0VGVzdFJlc3VsdDo6bWVkaWFJc1ZpZGVvKCkgY29u
c3QKIHsKICNpZiBFTkFCTEUoVklERU8pCiAgICAgaWYgKEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlh
RWx0ID0gbWVkaWFFbGVtZW50KCkpCi0gICAgICAgIHJldHVybiBpc0hUTUxWaWRlb0VsZW1lbnQo
bWVkaWFFbHQpOworICAgICAgICByZXR1cm4gaXM8SFRNTFZpZGVvRWxlbWVudD4obWVkaWFFbHQp
OwogI2VuZGlmCiAgICAgcmV0dXJuIGZhbHNlOwogfQpAQCAtNTE2LDcgKzUxNiw3IEBAIGJvb2wg
SGl0VGVzdFJlc3VsdDo6aXNMaXZlTGluaygpIGNvbnN0CiAgICAgaWYgKCFtX2lubmVyVVJMRWxl
bWVudCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaWYgKGlzSFRNTEFuY2hvckVsZW1l
bnQoKm1faW5uZXJVUkxFbGVtZW50KSkKKyAgICBpZiAoaXM8SFRNTEFuY2hvckVsZW1lbnQ+KCpt
X2lubmVyVVJMRWxlbWVudCkpCiAgICAgICAgIHJldHVybiBkb3duY2FzdDxIVE1MQW5jaG9yRWxl
bWVudD4oKm1faW5uZXJVUkxFbGVtZW50KS5pc0xpdmVMaW5rKCk7CiAKICAgICBpZiAoaXM8U1ZH
QUVsZW1lbnQ+KCptX2lubmVyVVJMRWxlbWVudCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQ291bnRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQ291bnRlci5jcHAKaW5kZXggNDk3MGMwNGViODU3MGMwOTg5ZTk1OTRkYWNkMDUxZjRm
ODNlMmNlMS4uZTM2YWFlY2YwNzJiYWJhMWJmNzkxOTJmYjFmN2Q5NDA5OGNmODgyMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckNvdW50ZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb3VudGVyLmNwcApAQCAtMTQyLDcgKzE0Miw3
IEBAIHN0YXRpYyBib29sIHBsYW5Db3VudGVyKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBjb25z
dCBBdG9taWNTdHJpbmcmIGlkZW50aWZpZXIsCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICAgICAgfQogICAgICAgICBpZiAoRWxlbWVudCogZWxlbWVudCA9IHJlbmRlcmVyLmVsZW1lbnQo
KSkgewotICAgICAgICAgICAgaWYgKGlzSFRNTE9MaXN0RWxlbWVudChlbGVtZW50KSkgeworICAg
ICAgICAgICAgaWYgKGlzPEhUTUxPTGlzdEVsZW1lbnQ+KGVsZW1lbnQpKSB7CiAgICAgICAgICAg
ICAgICAgdmFsdWUgPSBkb3duY2FzdDxIVE1MT0xpc3RFbGVtZW50PigqZWxlbWVudCkuc3RhcnQo
KTsKICAgICAgICAgICAgICAgICBpc1Jlc2V0ID0gdHJ1ZTsKICAgICAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFn
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCmluZGV4IDQy
ZjMyOWNjNmMxNjhkNzNlMTgxNzBlYTRjMTA3NjMyZDBmZmVlZTMuLjdmYzMzMzBhYmYzNWYwNjZk
NjM0ZjZjZmE5ZWRlMzgwYzIxYzU3NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckltYWdlLmNwcApAQCAtMTMwLDcgKzEzMCw3IEBAIFJlbmRlckltYWdlOjpSZW5kZXJJbWFnZShF
bGVtZW50JiBlbGVtZW50LCBQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSwgU3R5bGVJbWFnCiAg
ICAgdXBkYXRlQWx0VGV4dCgpOwogICAgIGltYWdlUmVzb3VyY2UoKS5pbml0aWFsaXplKHRoaXMp
OwogCi0gICAgaWYgKGlzSFRNTEltYWdlRWxlbWVudChlbGVtZW50KSkKKyAgICBpZiAoaXM8SFRN
TEltYWdlRWxlbWVudD4oZWxlbWVudCkpCiAgICAgICAgIG1faGFzU2hhZG93Q29udHJvbHMgPSBk
b3duY2FzdDxIVE1MSW1hZ2VFbGVtZW50PihlbGVtZW50KS5oYXNTaGFkb3dDb250cm9scygpOwog
fQogCkBAIC01MTQsNyArNTE0LDcgQEAgdm9pZCBSZW5kZXJJbWFnZTo6cGFpbnRBcmVhRWxlbWVu
dEZvY3VzUmluZyhQYWludEluZm8mIHBhaW50SW5mbykKICAgICAgICAgcmV0dXJuOwogCiAgICAg
RWxlbWVudCogZm9jdXNlZEVsZW1lbnQgPSBkb2N1bWVudCgpLmZvY3VzZWRFbGVtZW50KCk7Ci0g
ICAgaWYgKCFmb2N1c2VkRWxlbWVudCB8fCAhaXNIVE1MQXJlYUVsZW1lbnQoZm9jdXNlZEVsZW1l
bnQpKQorICAgIGlmICghZm9jdXNlZEVsZW1lbnQgfHwgIWlzPEhUTUxBcmVhRWxlbWVudD4oZm9j
dXNlZEVsZW1lbnQpKQogICAgICAgICByZXR1cm47CiAKICAgICBIVE1MQXJlYUVsZW1lbnQmIGFy
ZWFFbGVtZW50ID0gZG93bmNhc3Q8SFRNTEFyZWFFbGVtZW50PigqZm9jdXNlZEVsZW1lbnQpOwpA
QCAtNTYwLDcgKzU2MCw3IEBAIHZvaWQgUmVuZGVySW1hZ2U6OnBhaW50SW50b1JlY3QoR3JhcGhp
Y3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiAgICAgaWYgKCFpbWcg
fHwgaW1nLT5pc051bGwoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgSFRNTEltYWdlRWxlbWVu
dCogaW1hZ2VFbGVtZW50ID0gKGVsZW1lbnQoKSAmJiBpc0hUTUxJbWFnZUVsZW1lbnQoZWxlbWVu
dCgpKSkgPyBkb3duY2FzdDxIVE1MSW1hZ2VFbGVtZW50PihlbGVtZW50KCkpIDogbnVsbHB0cjsK
KyAgICBIVE1MSW1hZ2VFbGVtZW50KiBpbWFnZUVsZW1lbnQgPSAoZWxlbWVudCgpICYmIGlzPEhU
TUxJbWFnZUVsZW1lbnQ+KGVsZW1lbnQoKSkpID8gZG93bmNhc3Q8SFRNTEltYWdlRWxlbWVudD4o
ZWxlbWVudCgpKSA6IG51bGxwdHI7CiAgICAgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3Bl
cmF0b3IgPSBpbWFnZUVsZW1lbnQgPyBpbWFnZUVsZW1lbnQtPmNvbXBvc2l0ZU9wZXJhdG9yKCkg
OiBDb21wb3NpdGVTb3VyY2VPdmVyOwogICAgIEltYWdlKiBpbWFnZSA9IGltYWdlUmVzb3VyY2Uo
KS5pbWFnZSgpLmdldCgpOwogICAgIGJvb2wgdXNlTG93UXVhbGl0eVNjYWxpbmcgPSBzaG91bGRQ
YWludEF0TG93UXVhbGl0eShjb250ZXh0LCBpbWFnZSwgaW1hZ2UsIExheW91dFNpemUocmVjdC5z
aXplKCkpKTsKQEAgLTYyMiw3ICs2MjIsNyBAQCBMYXlvdXRVbml0IFJlbmRlckltYWdlOjptaW5p
bXVtUmVwbGFjZWRIZWlnaHQoKSBjb25zdAogCiBIVE1MTWFwRWxlbWVudCogUmVuZGVySW1hZ2U6
OmltYWdlTWFwKCkgY29uc3QKIHsKLSAgICBIVE1MSW1hZ2VFbGVtZW50KiBpbWFnZSA9IGVsZW1l
bnQoKSAmJiBpc0hUTUxJbWFnZUVsZW1lbnQoZWxlbWVudCgpKSA/IGRvd25jYXN0PEhUTUxJbWFn
ZUVsZW1lbnQ+KGVsZW1lbnQoKSkgOiBudWxscHRyOworICAgIEhUTUxJbWFnZUVsZW1lbnQqIGlt
YWdlID0gZWxlbWVudCgpICYmIGlzPEhUTUxJbWFnZUVsZW1lbnQ+KGVsZW1lbnQoKSkgPyBkb3du
Y2FzdDxIVE1MSW1hZ2VFbGVtZW50PihlbGVtZW50KCkpIDogbnVsbHB0cjsKICAgICByZXR1cm4g
aW1hZ2UgPyBpbWFnZS0+dHJlZVNjb3BlKCkuZ2V0SW1hZ2VNYXAoaW1hZ2UtPmZhc3RHZXRBdHRy
aWJ1dGUodXNlbWFwQXR0cikpIDogbnVsbHB0cjsKIH0KIApAQCAtNjU3LDcgKzY1Nyw3IEBAIHZv
aWQgUmVuZGVySW1hZ2U6OnVwZGF0ZUFsdFRleHQoKQogCiAgICAgaWYgKGlzPEhUTUxJbnB1dEVs
ZW1lbnQ+KCplbGVtZW50KCkpKQogICAgICAgICBtX2FsdFRleHQgPSBkb3duY2FzdDxIVE1MSW5w
dXRFbGVtZW50PigqZWxlbWVudCgpKS5hbHRUZXh0KCk7Ci0gICAgZWxzZSBpZiAoaXNIVE1MSW1h
Z2VFbGVtZW50KCplbGVtZW50KCkpKQorICAgIGVsc2UgaWYgKGlzPEhUTUxJbWFnZUVsZW1lbnQ+
KCplbGVtZW50KCkpKQogICAgICAgICBtX2FsdFRleHQgPSBkb3duY2FzdDxIVE1MSW1hZ2VFbGVt
ZW50PigqZWxlbWVudCgpKS5hbHRUZXh0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMaXN0Qm94LmNwcAppbmRleCBjMWU4NDQ1OTczODIxYjMyM2FhYjdkODg2YjY2MmFh
NTczNDlkODNkLi5kMmFkNzQzZDdlODVmMTMwZGYwM2FlY2FmYjFlY2E1NjM0Y2JiODFhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwCkBAIC0xMTgsNyArMTE4
LDcgQEAgdm9pZCBSZW5kZXJMaXN0Qm94Ojp1cGRhdGVGcm9tRWxlbWVudCgpCiAgICAgICAgICAg
ICBGb250IGl0ZW1Gb250ID0gc3R5bGUoKS5mb250KCk7CiAgICAgICAgICAgICBpZiAoaXM8SFRN
TE9wdGlvbkVsZW1lbnQ+KGVsZW1lbnQpKQogICAgICAgICAgICAgICAgIHRleHQgPSBkb3duY2Fz
dDxIVE1MT3B0aW9uRWxlbWVudD4oKmVsZW1lbnQpLnRleHRJbmRlbnRlZFRvUmVzcGVjdEdyb3Vw
TGFiZWwoKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKGlzSFRNTE9wdEdyb3VwRWxlbWVudChlbGVt
ZW50KSkgeworICAgICAgICAgICAgZWxzZSBpZiAoaXM8SFRNTE9wdEdyb3VwRWxlbWVudD4oZWxl
bWVudCkpIHsKICAgICAgICAgICAgICAgICB0ZXh0ID0gZG93bmNhc3Q8SFRNTE9wdEdyb3VwRWxl
bWVudD4oKmVsZW1lbnQpLmdyb3VwTGFiZWxUZXh0KCk7CiAgICAgICAgICAgICAgICAgRm9udERl
c2NyaXB0aW9uIGQgPSBpdGVtRm9udC5mb250RGVzY3JpcHRpb24oKTsKICAgICAgICAgICAgICAg
ICBkLnNldFdlaWdodChkLmJvbGRlcldlaWdodCgpKTsKQEAgLTM4OCw3ICszODgsNyBAQCB2b2lk
IFJlbmRlckxpc3RCb3g6OnBhaW50SXRlbUZvcmVncm91bmQoUGFpbnRJbmZvJiBwYWludEluZm8s
IGNvbnN0IExheW91dFBvaW50JgogICAgIGJvb2wgaXNPcHRpb25FbGVtZW50ID0gaXM8SFRNTE9w
dGlvbkVsZW1lbnQ+KGxpc3RJdGVtRWxlbWVudCk7CiAgICAgaWYgKGlzT3B0aW9uRWxlbWVudCkK
ICAgICAgICAgaXRlbVRleHQgPSBkb3duY2FzdDxIVE1MT3B0aW9uRWxlbWVudD4oKmxpc3RJdGVt
RWxlbWVudCkudGV4dEluZGVudGVkVG9SZXNwZWN0R3JvdXBMYWJlbCgpOwotICAgIGVsc2UgaWYg
KGlzSFRNTE9wdEdyb3VwRWxlbWVudChsaXN0SXRlbUVsZW1lbnQpKQorICAgIGVsc2UgaWYgKGlz
PEhUTUxPcHRHcm91cEVsZW1lbnQ+KGxpc3RJdGVtRWxlbWVudCkpCiAgICAgICAgIGl0ZW1UZXh0
ID0gZG93bmNhc3Q8SFRNTE9wdEdyb3VwRWxlbWVudD4oKmxpc3RJdGVtRWxlbWVudCkuZ3JvdXBM
YWJlbFRleHQoKTsKICAgICBhcHBseVRleHRUcmFuc2Zvcm0oc3R5bGUoKSwgaXRlbVRleHQsICcg
Jyk7CiAKQEAgLTQwOSw3ICs0MDksNyBAQCB2b2lkIFJlbmRlckxpc3RCb3g6OnBhaW50SXRlbUZv
cmVncm91bmQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JgogICAgIExh
eW91dFJlY3QgciA9IGl0ZW1Cb3VuZGluZ0JveFJlY3QocGFpbnRPZmZzZXQsIGxpc3RJbmRleCk7
CiAgICAgci5tb3ZlKGl0ZW1PZmZzZXRGb3JBbGlnbm1lbnQodGV4dFJ1biwgaXRlbVN0eWxlLCBp
dGVtRm9udCwgcikpOwogCi0gICAgaWYgKGlzSFRNTE9wdEdyb3VwRWxlbWVudChsaXN0SXRlbUVs
ZW1lbnQpKSB7CisgICAgaWYgKGlzPEhUTUxPcHRHcm91cEVsZW1lbnQ+KGxpc3RJdGVtRWxlbWVu
dCkpIHsKICAgICAgICAgRm9udERlc2NyaXB0aW9uIGQgPSBpdGVtRm9udC5mb250RGVzY3JpcHRp
b24oKTsKICAgICAgICAgZC5zZXRXZWlnaHQoZC5ib2xkZXJXZWlnaHQoKSk7CiAgICAgICAgIGl0
ZW1Gb250ID0gRm9udChkLCBpdGVtRm9udC5sZXR0ZXJTcGFjaW5nKCksIGl0ZW1Gb250LndvcmRT
cGFjaW5nKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1h
cnF1ZWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1hcnF1ZWUuY3BwCmlu
ZGV4IDI1YTk3ZTZiM2E1OGU5ODhkNmFhNDY1MTM4OWRmNzY4M2EwMDI0NGMuLmY0YWY3MGVjNDA4
NzI0MWE1NGMwOTFmM2RlY2JjZGJhYzg3Y2UyMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJNYXJxdWVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTWFycXVlZS5jcHAKQEAgLTczLDcgKzczLDcgQEAgaW50IFJlbmRlck1hcnF1ZWU6
Om1hcnF1ZWVTcGVlZCgpIGNvbnN0CiB7CiAgICAgaW50IHJlc3VsdCA9IG1fbGF5ZXItPnJlbmRl
cmVyKCkuc3R5bGUoKS5tYXJxdWVlU3BlZWQoKTsKICAgICBFbGVtZW50KiBlbGVtZW50ID0gbV9s
YXllci0+cmVuZGVyZXIoKS5lbGVtZW50KCk7Ci0gICAgaWYgKGVsZW1lbnQgJiYgaXNIVE1MTWFy
cXVlZUVsZW1lbnQoZWxlbWVudCkpCisgICAgaWYgKGVsZW1lbnQgJiYgaXM8SFRNTE1hcnF1ZWVF
bGVtZW50PihlbGVtZW50KSkKICAgICAgICAgcmVzdWx0ID0gc3RkOjptYXgocmVzdWx0LCBkb3du
Y2FzdDxIVE1MTWFycXVlZUVsZW1lbnQ+KCplbGVtZW50KS5taW5pbXVtRGVsYXkoKSk7CiAgICAg
cmV0dXJuIHJlc3VsdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJNZW51TGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVudUxp
c3QuY3BwCmluZGV4IDZlZTFiMzAxMDEzOTc1ZjJmNzhkOTY2ZDg4ZDRhNjlmNzE4ZWI1ZDIuLjdj
YTM1MmRjN2YyODViODAzM2M0NzQ0NWRkMGNkNGY2Y2IxMjdmMGEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmNwcApAQCAtNDUwLDcgKzQ1MCw3IEBAIFN0cmlu
ZyBSZW5kZXJNZW51TGlzdDo6aXRlbVRleHQodW5zaWduZWQgbGlzdEluZGV4KSBjb25zdAogCiAg
ICAgU3RyaW5nIGl0ZW1TdHJpbmc7CiAgICAgRWxlbWVudCogZWxlbWVudCA9IGxpc3RJdGVtc1ts
aXN0SW5kZXhdOwotICAgIGlmIChpc0hUTUxPcHRHcm91cEVsZW1lbnQoZWxlbWVudCkpCisgICAg
aWYgKGlzPEhUTUxPcHRHcm91cEVsZW1lbnQ+KGVsZW1lbnQpKQogICAgICAgICBpdGVtU3RyaW5n
ID0gZG93bmNhc3Q8SFRNTE9wdEdyb3VwRWxlbWVudD4oKmVsZW1lbnQpLmdyb3VwTGFiZWxUZXh0
KCk7CiAgICAgZWxzZSBpZiAoaXM8SFRNTE9wdGlvbkVsZW1lbnQ+KGVsZW1lbnQpKQogICAgICAg
ICBpdGVtU3RyaW5nID0gZG93bmNhc3Q8SFRNTE9wdGlvbkVsZW1lbnQ+KCplbGVtZW50KS50ZXh0
SW5kZW50ZWRUb1Jlc3BlY3RHcm91cExhYmVsKCk7CkBAIC00OTcsNyArNDk3LDcgQEAgYm9vbCBS
ZW5kZXJNZW51TGlzdDo6aXRlbUlzRW5hYmxlZCh1bnNpZ25lZCBsaXN0SW5kZXgpIGNvbnN0CiAK
ICAgICBib29sIGdyb3VwRW5hYmxlZCA9IHRydWU7CiAgICAgaWYgKEVsZW1lbnQqIHBhcmVudEVs
ZW1lbnQgPSBlbGVtZW50LT5wYXJlbnRFbGVtZW50KCkpIHsKLSAgICAgICAgaWYgKGlzSFRNTE9w
dEdyb3VwRWxlbWVudChwYXJlbnRFbGVtZW50KSkKKyAgICAgICAgaWYgKGlzPEhUTUxPcHRHcm91
cEVsZW1lbnQ+KHBhcmVudEVsZW1lbnQpKQogICAgICAgICAgICAgZ3JvdXBFbmFibGVkID0gIXBh
cmVudEVsZW1lbnQtPmlzRGlzYWJsZWRGb3JtQ29udHJvbCgpOwogICAgIH0KICAgICBpZiAoIWdy
b3VwRW5hYmxlZCkKQEAgLTY0NSw3ICs2NDUsNyBAQCBib29sIFJlbmRlck1lbnVMaXN0OjppdGVt
SXNTZXBhcmF0b3IodW5zaWduZWQgbGlzdEluZGV4KSBjb25zdAogYm9vbCBSZW5kZXJNZW51TGlz
dDo6aXRlbUlzTGFiZWwodW5zaWduZWQgbGlzdEluZGV4KSBjb25zdAogewogICAgIGNvbnN0IFZl
Y3RvcjxIVE1MRWxlbWVudCo+JiBsaXN0SXRlbXMgPSBzZWxlY3RFbGVtZW50KCkubGlzdEl0ZW1z
KCk7Ci0gICAgcmV0dXJuIGxpc3RJbmRleCA8IGxpc3RJdGVtcy5zaXplKCkgJiYgaXNIVE1MT3B0
R3JvdXBFbGVtZW50KGxpc3RJdGVtc1tsaXN0SW5kZXhdKTsKKyAgICByZXR1cm4gbGlzdEluZGV4
IDwgbGlzdEl0ZW1zLnNpemUoKSAmJiBpczxIVE1MT3B0R3JvdXBFbGVtZW50PihsaXN0SXRlbXNb
bGlzdEluZGV4XSk7CiB9CiAKIGJvb2wgUmVuZGVyTWVudUxpc3Q6Oml0ZW1Jc1NlbGVjdGVkKHVu
c2lnbmVkIGxpc3RJbmRleCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJNZXRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWV0
ZXIuY3BwCmluZGV4IDllZGJiZDk5YjUwZmZkMGE5NGY3Njg4NjkzNDhiOWZhYTM3OGJjOTcuLjk5
MDU5NmQ5ZTEwNTMzMGE2ZjNkNDA1N2RiOWY3NmFmYzY5ZWM4OWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZXRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlck1ldGVyLmNwcApAQCAtNDMsNyArNDMsNyBAQCBIVE1MTWV0ZXJFbGVt
ZW50KiBSZW5kZXJNZXRlcjo6bWV0ZXJFbGVtZW50KCkgY29uc3QKIHsKICAgICBBU1NFUlQoZWxl
bWVudCgpKTsKIAotICAgIGlmIChpc0hUTUxNZXRlckVsZW1lbnQoZWxlbWVudCgpKSkKKyAgICBp
ZiAoaXM8SFRNTE1ldGVyRWxlbWVudD4oZWxlbWVudCgpKSkKICAgICAgICAgcmV0dXJuIGRvd25j
YXN0PEhUTUxNZXRlckVsZW1lbnQ+KGVsZW1lbnQoKSk7CiAKICAgICBBU1NFUlQoZWxlbWVudCgp
LT5zaGFkb3dIb3N0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlck9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNw
cAppbmRleCA3ZDE0NTY2MjhlMzRiMmJhYjI5MTQ2MzBlMGUzMjUyOTUxMDI5MTA3Li5mNzhiYWYz
ZGVmNTVmZTA4YzE3NGU0MTZjYzE4YTRhMTNhZjU5M2FiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyT2JqZWN0LmNwcApAQCAtNDEsNiArNDEsNyBAQAogI2luY2x1ZGUgIkhUTUxF
bGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEltYWdlRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxO
YW1lcy5oIgorI2luY2x1ZGUgIkhUTUxUYWJsZUNlbGxFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRN
TFRhYmxlRWxlbWVudC5oIgogI2luY2x1ZGUgIkhpdFRlc3RSZXN1bHQuaCIKICNpbmNsdWRlICJM
b2dpY2FsU2VsZWN0aW9uT2Zmc2V0Q2FjaGVzLmgiCkBAIC0xOTE3LDcgKzE5MTgsNyBAQCBSZXNw
ZWN0SW1hZ2VPcmllbnRhdGlvbkVudW0gUmVuZGVyT2JqZWN0OjpzaG91bGRSZXNwZWN0SW1hZ2VP
cmllbnRhdGlvbigpIGNvbnN0CiAjZW5kaWYKICAgICAvLyBSZXNwZWN0IHRoZSBpbWFnZSdzIG9y
aWVudGF0aW9uIGlmIGl0J3MgYmVpbmcgdXNlZCBhcyBhIGZ1bGwtcGFnZSBpbWFnZSBvciBpdCdz
CiAgICAgLy8gYW4gPGltZz4gYW5kIHRoZSBzZXR0aW5nIHRvIHJlc3BlY3QgaXQgZXZlcnl3aGVy
ZSBpcyBzZXQuCi0gICAgcmV0dXJuIChmcmFtZSgpLnNldHRpbmdzKCkuc2hvdWxkUmVzcGVjdElt
YWdlT3JpZW50YXRpb24oKSAmJiBub2RlKCkgJiYgaXNIVE1MSW1hZ2VFbGVtZW50KG5vZGUoKSkp
ID8gUmVzcGVjdEltYWdlT3JpZW50YXRpb24gOiBEb05vdFJlc3BlY3RJbWFnZU9yaWVudGF0aW9u
OworICAgIHJldHVybiAoZnJhbWUoKS5zZXR0aW5ncygpLnNob3VsZFJlc3BlY3RJbWFnZU9yaWVu
dGF0aW9uKCkgJiYgbm9kZSgpICYmIGlzPEhUTUxJbWFnZUVsZW1lbnQ+KG5vZGUoKSkpID8gUmVz
cGVjdEltYWdlT3JpZW50YXRpb24gOiBEb05vdFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uOwogfQog
CiBib29sIFJlbmRlck9iamVjdDo6aGFzT3V0bGluZUFubm90YXRpb24oKSBjb25zdApAQCAtMjI5
Nyw3ICsyMjk4LDcgQEAgdm9pZCBSZW5kZXJPYmplY3Q6OmdldFRleHREZWNvcmF0aW9uQ29sb3Jz
KGludCBkZWNvcmF0aW9ucywgQ29sb3ImIHVuZGVybGluZSwgQ28KICAgICAgICAgY3VyciA9IGN1
cnItPnBhcmVudCgpOwogICAgICAgICBpZiAoY3VyciAmJiBjdXJyLT5pc0Fub255bW91c0Jsb2Nr
KCkgJiYgdG9SZW5kZXJCbG9jayhjdXJyKS0+Y29udGludWF0aW9uKCkpCiAgICAgICAgICAgICBj
dXJyID0gdG9SZW5kZXJCbG9jayhjdXJyKS0+Y29udGludWF0aW9uKCk7Ci0gICAgfSB3aGlsZSAo
Y3VyciAmJiBkZWNvcmF0aW9ucyAmJiAoIXF1aXJrc01vZGUgfHwgIWN1cnItPm5vZGUoKSB8fCAo
IWlzSFRNTEFuY2hvckVsZW1lbnQoY3Vyci0+bm9kZSgpKSAmJiAhY3Vyci0+bm9kZSgpLT5oYXNU
YWdOYW1lKGZvbnRUYWcpKSkpOworICAgIH0gd2hpbGUgKGN1cnIgJiYgZGVjb3JhdGlvbnMgJiYg
KCFxdWlya3NNb2RlIHx8ICFjdXJyLT5ub2RlKCkgfHwgKCFpczxIVE1MQW5jaG9yRWxlbWVudD4o
Y3Vyci0+bm9kZSgpKSAmJiAhY3Vyci0+bm9kZSgpLT5oYXNUYWdOYW1lKGZvbnRUYWcpKSkpOwog
CiAgICAgLy8gSWYgd2UgYmFpbGVkIG91dCwgdXNlIHRoZSBlbGVtZW50IHdlIGJhaWxlZCBvdXQg
YXQgKHR5cGljYWxseSBhIDxmb250PiBvciA8YT4gZWxlbWVudCkuCiAgICAgaWYgKGRlY29yYXRp
b25zICYmIGN1cnIpIHsKQEAgLTI0NDMsNyArMjQ0NCw3IEBAIFJlbmRlckJveE1vZGVsT2JqZWN0
KiBSZW5kZXJPYmplY3Q6Om9mZnNldFBhcmVudCgpIGNvbnN0CiAgICAgYXV0byBjdXJyID0gcGFy
ZW50KCk7CiAgICAgd2hpbGUgKGN1cnIgJiYgKCFjdXJyLT5lbGVtZW50KCkgfHwgKCFjdXJyLT5p
c1Bvc2l0aW9uZWQoKSAmJiAhY3Vyci0+aXNCb2R5KCkpKSAmJiAhY3Vyci0+aXNSZW5kZXJOYW1l
ZEZsb3dUaHJlYWQoKSkgewogICAgICAgICBFbGVtZW50KiBlbGVtZW50ID0gY3Vyci0+ZWxlbWVu
dCgpOwotICAgICAgICBpZiAoIXNraXBUYWJsZXMgJiYgZWxlbWVudCAmJiAoaXNIVE1MVGFibGVF
bGVtZW50KGVsZW1lbnQpIHx8IGVsZW1lbnQtPmhhc1RhZ05hbWUodGRUYWcpIHx8IGVsZW1lbnQt
Pmhhc1RhZ05hbWUodGhUYWcpKSkKKyAgICAgICAgaWYgKCFza2lwVGFibGVzICYmIGVsZW1lbnQg
JiYgKGlzPEhUTUxUYWJsZUVsZW1lbnQ+KCplbGVtZW50KSB8fCBpc0hUTUxUYWJsZUNlbGxFbGVt
ZW50KCplbGVtZW50KSkpCiAgICAgICAgICAgICBicmVhazsKICAKICAgICAgICAgZmxvYXQgbmV3
Wm9vbSA9IGN1cnItPnN0eWxlKCkuZWZmZWN0aXZlWm9vbSgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclByb2dyZXNzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJQcm9ncmVzcy5jcHAKaW5kZXggMmI0ZjA1N2FhMTNlN2NmMzM3NjI3Y2Iy
NzBmMzI3MjI0MmJkNjZkNi4uNmI4Y2Q0MmRhZWUzZWM0ZTAyNWFmYTYzNjQyN2FmNmJkZmRlODBj
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclByb2dyZXNzLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUHJvZ3Jlc3MuY3BwCkBAIC0x
MTAsNyArMTEwLDcgQEAgSFRNTFByb2dyZXNzRWxlbWVudCogUmVuZGVyUHJvZ3Jlc3M6OnByb2dy
ZXNzRWxlbWVudCgpIGNvbnN0CiAgICAgaWYgKCFlbGVtZW50KCkpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogCi0gICAgaWYgKGlzSFRNTFByb2dyZXNzRWxlbWVudChlbGVtZW50KCkpKQorICAg
IGlmIChpczxIVE1MUHJvZ3Jlc3NFbGVtZW50PihlbGVtZW50KCkpKQogICAgICAgICByZXR1cm4g
ZG93bmNhc3Q8SFRNTFByb2dyZXNzRWxlbWVudD4oZWxlbWVudCgpKTsKIAogICAgIEFTU0VSVChl
bGVtZW50KCktPnNoYWRvd0hvc3QoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGFibGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRh
YmxlLmNwcAppbmRleCA1YjYxODY3YTg1MjQ0MTIyODA0MTViNzdlNjgzZmQ4NDkzZmE0MzgyLi41
OTcxNzdhYWQxZjc4Mjg5ZTgyMDg1OTk3YTdkMzJiMzllYjk2MTVhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUYWJsZS5jcHAKQEAgLTM1MCw3ICszNTAsNyBAQCBMYXlvdXRVbml0
IFJlbmRlclRhYmxlOjpjb252ZXJ0U3R5bGVMb2dpY2FsV2lkdGhUb0NvbXB1dGVkV2lkdGgoY29u
c3QgTGVuZ3RoJiBzdAogCiAgICAgLy8gSFRNTCB0YWJsZXMnIHdpZHRoIHN0eWxlcyBhbHJlYWR5
IGluY2x1ZGUgYm9yZGVycyBhbmQgcGFkZGluZ3MsIGJ1dCBDU1MgdGFibGVzJyB3aWR0aCBzdHls
ZXMgZG8gbm90LgogICAgIExheW91dFVuaXQgYm9yZGVycyA9IDA7Ci0gICAgYm9vbCBpc0NTU1Rh
YmxlID0gIWVsZW1lbnQoKSB8fCAhaXNIVE1MVGFibGVFbGVtZW50KGVsZW1lbnQoKSk7CisgICAg
Ym9vbCBpc0NTU1RhYmxlID0gIWVsZW1lbnQoKSB8fCAhaXM8SFRNTFRhYmxlRWxlbWVudD4oZWxl
bWVudCgpKTsKICAgICBpZiAoaXNDU1NUYWJsZSAmJiBzdHlsZUxvZ2ljYWxXaWR0aC5pc1NwZWNp
ZmllZCgpICYmIHN0eWxlTG9naWNhbFdpZHRoLmlzUG9zaXRpdmUoKSAmJiBzdHlsZSgpLmJveFNp
emluZygpID09IENPTlRFTlRfQk9YKQogICAgICAgICBib3JkZXJzID0gYm9yZGVyU3RhcnQoKSAr
IGJvcmRlckVuZCgpICsgKGNvbGxhcHNlQm9yZGVycygpID8gTGF5b3V0VW5pdCgpIDogcGFkZGlu
Z1N0YXJ0KCkgKyBwYWRkaW5nRW5kKCkpOwogCkBAIC0zNjQsNyArMzY0LDcgQEAgTGF5b3V0VW5p
dCBSZW5kZXJUYWJsZTo6Y29udmVydFN0eWxlTG9naWNhbEhlaWdodFRvQ29tcHV0ZWRIZWlnaHQo
Y29uc3QgTGVuZ3RoJgogICAgICAgICAvLyBIVE1MIHRhYmxlcyBzaXplIGFzIHRob3VnaCBDU1Mg
aGVpZ2h0IGluY2x1ZGVzIGJvcmRlci9wYWRkaW5nLCBDU1MgdGFibGVzIGRvIG5vdC4KICAgICAg
ICAgTGF5b3V0VW5pdCBib3JkZXJzID0gTGF5b3V0VW5pdCgpOwogICAgICAgICAvLyBGSVhNRTog
V2UgY2Fubm90IGFwcGx5IGJveC1zaXppbmc6IGNvbnRlbnQtYm94IG9uIDx0YWJsZT4gd2hpY2gg
b3RoZXIgYnJvd3NlcnMgYWxsb3cuCi0gICAgICAgIGlmICgoZWxlbWVudCgpICYmIGlzSFRNTFRh
YmxlRWxlbWVudChlbGVtZW50KCkpKSB8fCBzdHlsZSgpLmJveFNpemluZygpID09IEJPUkRFUl9C
T1gpIHsKKyAgICAgICAgaWYgKChlbGVtZW50KCkgJiYgaXM8SFRNTFRhYmxlRWxlbWVudD4oZWxl
bWVudCgpKSkgfHwgc3R5bGUoKS5ib3hTaXppbmcoKSA9PSBCT1JERVJfQk9YKSB7CiAgICAgICAg
ICAgICBMYXlvdXRVbml0IGJvcmRlckFuZFBhZGRpbmdCZWZvcmUgPSBib3JkZXJCZWZvcmUoKSAr
IChjb2xsYXBzZUJvcmRlcnMoKSA/IExheW91dFVuaXQoKSA6IHBhZGRpbmdCZWZvcmUoKSk7CiAg
ICAgICAgICAgICBMYXlvdXRVbml0IGJvcmRlckFuZFBhZGRpbmdBZnRlciA9IGJvcmRlckFmdGVy
KCkgKyAoY29sbGFwc2VCb3JkZXJzKCkgPyBMYXlvdXRVbml0KCkgOiBwYWRkaW5nQWZ0ZXIoKSk7
CiAgICAgICAgICAgICBib3JkZXJzID0gYm9yZGVyQW5kUGFkZGluZ0JlZm9yZSArIGJvcmRlckFu
ZFBhZGRpbmdBZnRlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9T
VkdJbWFnZUNhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUNh
Y2hlLmNwcAppbmRleCAzZjIxMTFmNTNkNGVlYjdhZDA1Y2IzNjA0NzU5YTY0OGM1OGIyNzIzLi45
ZTFiN2M4ODNhYmQxMGVhNmVmNjRmMDUzZGI0NzM5YjEwNWMzNmVmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VDYWNoZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlQ2FjaGUuY3BwCkBAIC05Miw3ICs5Miw3IEBAIElt
YWdlKiBTVkdJbWFnZUNhY2hlOjppbWFnZUZvclJlbmRlcmVyKGNvbnN0IFJlbmRlck9iamVjdCog
cmVuZGVyZXIpCiAgICAgUmVmUHRyPFNWR0ltYWdlRm9yQ29udGFpbmVyPiBpbWFnZUZvckNvbnRh
aW5lciA9IGl0LT52YWx1ZTsKICAgICAKICAgICBOb2RlKiBub2RlID0gcmVuZGVyZXItPm5vZGUo
KTsKLSAgICBpZiAobm9kZSAmJiBpc0hUTUxJbWFnZUVsZW1lbnQobm9kZSkpIHsKKyAgICBpZiAo
bm9kZSAmJiBpczxIVE1MSW1hZ2VFbGVtZW50Pihub2RlKSkgewogICAgICAgICBjb25zdCBBdG9t
aWNTdHJpbmcmIHVybFN0cmluZyA9IGRvd25jYXN0PEhUTUxJbWFnZUVsZW1lbnQ+KCpub2RlKS5p
bWFnZVNvdXJjZVVSTCgpOwogICAgICAgICBVUkwgdXJsID0gbm9kZS0+ZG9jdW1lbnQoKS5jb21w
bGV0ZVVSTCh1cmxTdHJpbmcpOwogICAgICAgICBpbWFnZUZvckNvbnRhaW5lci0+c2V0VVJMKHVy
bCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXggYTVkZGUwM2EzMGIxOGI1
M2MzMzY3MTQ1MmRhMzg5M2U3OTI4N2MyMS4uZDJhZTEzMGM5ZjQyMDQwYmE1YzJlYmFkMWMzZDhh
YTY2NjJkMzJiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtMTkxOCw3
ICsxOTE4LDcgQEAgdm9pZCBJbnRlcm5hbHM6OnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHls
ZXNoZWV0c0FuZFJ1blBvc3RMYXlvdXRUYXNrcyhOb2RlKgogICAgICAgICBkb2N1bWVudCA9IGNv
bnRleHREb2N1bWVudCgpOwogICAgIGVsc2UgaWYgKG5vZGUtPmlzRG9jdW1lbnROb2RlKCkpCiAg
ICAgICAgIGRvY3VtZW50ID0gdG9Eb2N1bWVudChub2RlKTsKLSAgICBlbHNlIGlmIChpc0hUTUxJ
RnJhbWVFbGVtZW50KG5vZGUpKQorICAgIGVsc2UgaWYgKGlzPEhUTUxJRnJhbWVFbGVtZW50Pihu
b2RlKSkKICAgICAgICAgZG9jdW1lbnQgPSBkb3duY2FzdDxIVE1MSUZyYW1lRWxlbWVudD4oKm5v
ZGUpLmNvbnRlbnREb2N1bWVudCgpOwogICAgIGVsc2UgewogICAgICAgICBlYyA9IFR5cGVFcnJv
cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJz
ZXJMaWJ4bWwyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJz
ZXJMaWJ4bWwyLmNwcAppbmRleCBjMzdjZjgwZWRiMGJmYThhMWJmZGM1NjU5YWFiZWUxYTcxMDkz
MmFiLi44YWU1MTFkYThlMzRjNjU2NDRmMDYyMWI5ODdhZTAxZmE5NjFhNDdkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIu
Y3BwCkBAIC04NTAsNyArODUwLDcgQEAgdm9pZCBYTUxEb2N1bWVudFBhcnNlcjo6c3RhcnRFbGVt
ZW50TnMoY29uc3QgeG1sQ2hhciogeG1sTG9jYWxOYW1lLCBjb25zdCB4bWxDaGEKICAgICAgICAg
cmV0dXJuOwogCiAjaWYgRU5BQkxFKFRFTVBMQVRFX0VMRU1FTlQpCi0gICAgaWYgKGlzSFRNTFRl
bXBsYXRlRWxlbWVudCgqbmV3RWxlbWVudCkpCisgICAgaWYgKGlzPEhUTUxUZW1wbGF0ZUVsZW1l
bnQ+KCpuZXdFbGVtZW50KSkKICAgICAgICAgcHVzaEN1cnJlbnROb2RlKGRvd25jYXN0PEhUTUxU
ZW1wbGF0ZUVsZW1lbnQ+KCpuZXdFbGVtZW50KS5jb250ZW50KCkpOwogICAgIGVsc2UKICAgICAg
ICAgcHVzaEN1cnJlbnROb2RlKG5ld0VsZW1lbnQuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC93aW4vRE9NQ29yZUNsYXNzZXMuY3BwIGIvU291cmNlL1dlYktpdC93aW4vRE9NQ29y
ZUNsYXNzZXMuY3BwCmluZGV4IDlmYzNjZTZiMWNlOTM4YzVlMGZmNTA0ZGQyMGE3MTk5YTI2ZWUy
YTMuLjMzN2NkYTE5MTljMjJkMjMyMmVmNzA4MDQxNDI1ZjE5NDhhOWIxN2IgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvd2luL0RPTUNvcmVDbGFzc2VzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L3dpbi9ET01Db3JlQ2xhc3Nlcy5jcHAKQEAgLTE1MDAsNyArMTUwMCw3IEBAIElET01FbGVtZW50
KiBET01FbGVtZW50OjpjcmVhdGVJbnN0YW5jZShXZWJDb3JlOjpFbGVtZW50KiBlKQogICAgIEhS
RVNVTFQgaHI7CiAgICAgSURPTUVsZW1lbnQqIGRvbUVsZW1lbnQgPSAwOwogCi0gICAgaWYgKGlz
SFRNTEZvcm1FbGVtZW50KGUpKSB7CisgICAgaWYgKFdlYkNvcmU6OmlzPFdlYkNvcmU6OkhUTUxG
b3JtRWxlbWVudD4oZSkpIHsKICAgICAgICAgRE9NSFRNTEZvcm1FbGVtZW50KiBuZXdFbGVtZW50
ID0gbmV3IERPTUhUTUxGb3JtRWxlbWVudChlKTsKICAgICAgICAgaHIgPSBuZXdFbGVtZW50LT5R
dWVyeUludGVyZmFjZShJSURfSURPTUVsZW1lbnQsICh2b2lkKiopJmRvbUVsZW1lbnQpOwogICAg
IH0gZWxzZSBpZiAoZS0+aGFzVGFnTmFtZShpZnJhbWVUYWcpKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L3dpbi9ET01IVE1MQ2xhc3Nlcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9ET01I
VE1MQ2xhc3Nlcy5jcHAKaW5kZXggN2ZmYWVhYzIxYjk4ODNiYWM5OWUyODk0NTg4YTcyZDhkODI4
NTZlMS4uMWQxZDI0MDYzYzM2MWI1YjZjODMyZTg1NjdhMjZlNDVjYmFkMzcwYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC93aW4vRE9NSFRNTENsYXNzZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvd2luL0RPTUhUTUxDbGFzc2VzLmNwcApAQCAtNTU5LDcgKzU1OSw3IEBAIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgRE9NSFRNTEZvcm1FbGVtZW50OjpzZXRBY2NlcHRDaGFyc2V0KAogSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBET01IVE1MRm9ybUVsZW1lbnQ6OmFjdGlvbiggCiAgICAg
ICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQlNUUiogcmVzdWx0KQogewotICAgIEFTU0VSVChtX2Vs
ZW1lbnQgJiYgaXNIVE1MRm9ybUVsZW1lbnQobV9lbGVtZW50KSk7CisgICAgQVNTRVJUKG1fZWxl
bWVudCAmJiBpczxIVE1MRm9ybUVsZW1lbnQ+KG1fZWxlbWVudCkpOwogICAgIFdURjo6U3RyaW5n
IGFjdGlvblN0cmluZyA9IGRvd25jYXN0PEhUTUxGb3JtRWxlbWVudD4oKm1fZWxlbWVudCkuYWN0
aW9uKCk7CiAgICAgKnJlc3VsdCA9IEJTdHJpbmcoYWN0aW9uU3RyaW5nKS5yZWxlYXNlKCk7CiAg
ICAgcmV0dXJuIFNfT0s7CkBAIC01ODksNyArNTg5LDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBET01IVE1MRm9ybUVsZW1lbnQ6OnNldEVuY3R5cGUoCiBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIERPTUhUTUxGb3JtRWxlbWVudDo6bWV0aG9kKCAKICAgICAgICAgLyogW3JldHZhbF1b
b3V0XSAqLyBCU1RSKiByZXN1bHQpCiB7Ci0gICAgQVNTRVJUKG1fZWxlbWVudCAmJiBpc0hUTUxG
b3JtRWxlbWVudChtX2VsZW1lbnQpKTsKKyAgICBBU1NFUlQobV9lbGVtZW50ICYmIGlzPEhUTUxG
b3JtRWxlbWVudD4obV9lbGVtZW50KSk7CiAgICAgV1RGOjpTdHJpbmcgbWV0aG9kU3RyaW5nID0g
ZG93bmNhc3Q8SFRNTEZvcm1FbGVtZW50PigqbV9lbGVtZW50KS5tZXRob2QoKTsKICAgICAqcmVz
dWx0ID0gQlN0cmluZyhtZXRob2RTdHJpbmcpLnJlbGVhc2UoKTsKICAgICByZXR1cm4gU19PSzsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkZyYW1lLmNwcCBiL1NvdXJjZS9XZWJL
aXQvd2luL1dlYkZyYW1lLmNwcAppbmRleCBlMzMwNDhhZDgwNzMxNmE4NTk5ZjhkMGM3MzdmYzA3
MGEzMDdjYThhLi5jNTc1MjJhNzY0ZWMzYzE5ZWMyNjZhNzRlYzU3Zjg2NTgxOWMxMzZmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC93aW4vV2ViRnJhbWUuY3BwCkBAIC0yMDIsNyArMjAyLDcgQEAgc3RhdGljIEhUTUxGb3JtRWxl
bWVudCAqZm9ybUVsZW1lbnRGcm9tRE9NRWxlbWVudChJRE9NRWxlbWVudCAqZWxlbWVudCkKICAg
ICAgICAgRWxlbWVudCogZWxlOwogICAgICAgICBociA9IGVsZVByaXYtPmNvcmVFbGVtZW50KCh2
b2lkKiopJmVsZSk7CiAgICAgICAgIGVsZVByaXYtPlJlbGVhc2UoKTsKLSAgICAgICAgaWYgKFNV
Q0NFRURFRChocikgJiYgZWxlICYmIGlzSFRNTEZvcm1FbGVtZW50KGVsZSkpCisgICAgICAgIGlm
IChTVUNDRUVERUQoaHIpICYmIGVsZSAmJiBpczxIVE1MRm9ybUVsZW1lbnQ+KGVsZSkpCiAgICAg
ICAgICAgICByZXR1cm4gZG93bmNhc3Q8SFRNTEZvcm1FbGVtZW50PihlbGUpOwogICAgIH0KICAg
ICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlTm9kZUhhbmRsZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZU5vZGVI
YW5kbGUuY3BwCmluZGV4IGNlZDkwYWM2ZTFhZTRlMWFhZTllOGQ2MWRjOGQyYzc2MDBlOTZmNTEu
LjMyZTE4N2JjYzliZTFhNjY5M2Q3MDNjOGVmZTgwZjUzNmIxNjkwZjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxl
Tm9kZUhhbmRsZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlLmNwcApAQCAtMjc2LDcgKzI3Niw3IEBA
IFBhc3NSZWZQdHI8V2ViRnJhbWU+IEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZTo6aHRtbEZyYW1l
RWxlbWVudENvbnRlbnRGcmFtZSgpCiAKIFBhc3NSZWZQdHI8V2ViRnJhbWU+IEluamVjdGVkQnVu
ZGxlTm9kZUhhbmRsZTo6aHRtbElGcmFtZUVsZW1lbnRDb250ZW50RnJhbWUoKQogewotICAgIGlm
ICghaXNIVE1MSUZyYW1lRWxlbWVudCgqbV9ub2RlKSkKKyAgICBpZiAoIWlzPEhUTUxJRnJhbWVF
bGVtZW50PigqbV9ub2RlKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBGcmFtZSog
ZnJhbWUgPSBkb3duY2FzdDxIVE1MSUZyYW1lRWxlbWVudD4oKm1fbm9kZSkuY29udGVudEZyYW1l
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJh
bWUuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcApp
bmRleCAzNzJkZTQzZTJhZjRhNzA4NWQ0ODJiYzI4MjJhY2Y0ZmM4ZGU5NmE2Li5kOWFkY2M2MTY5
M2UzZTU5YjczNzQxZjk5NDk0M2RjMjRlZjFhNmUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKQEAgLTYxNSw3ICs2MTUsNyBAQCBib29sIFdl
YkZyYW1lOjpjb250YWluc0FueUZvcm1FbGVtZW50cygpIGNvbnN0CiAgICAgZm9yIChOb2RlKiBu
b2RlID0gZG9jdW1lbnQtPmRvY3VtZW50RWxlbWVudCgpOyBub2RlOyBub2RlID0gTm9kZVRyYXZl
cnNhbDo6bmV4dChub2RlKSkgewogICAgICAgICBpZiAoIW5vZGUtPmlzRWxlbWVudE5vZGUoKSkK
ICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBpZiAoaXNIVE1MRm9ybUVsZW1lbnQobm9k
ZSkpCisgICAgICAgIGlmIChpczxIVE1MRm9ybUVsZW1lbnQ+KG5vZGUpKQogICAgICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgfQogICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCBjY2M2M2I1MzE0NjUzODg5ODU4
OWYzYTJiZTg1ZjY0NDk3OTY5YTk3Li5iNTNkZWMyMDU4ZTdiYzlkYjYwZTg5Nzk4MTRjMDAzMWZh
YjBjOGNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwCkBAIC00NjA5LDcgKzQ2MDksNyBAQCB2b2lkIFdlYlBhZ2U6OmRldGVybWluZVByaW1hcnlT
bmFwc2hvdHRlZFBsdWdJbigpCiAgICAgICAgICAgICBpbmZsYXRlZFBsdWdpblJlY3QuaW5mbGF0
ZVkoeU9mZnNldCk7CiAKICAgICAgICAgICAgIGlmIChlbGVtZW50ICE9ICZwbHVnSW5JbWFnZUVs
ZW1lbnQpIHsKLSAgICAgICAgICAgICAgICBpZiAoIShpc0hUTUxJbWFnZUVsZW1lbnQoZWxlbWVu
dCkKKyAgICAgICAgICAgICAgICBpZiAoIShpczxIVE1MSW1hZ2VFbGVtZW50PihlbGVtZW50KQog
ICAgICAgICAgICAgICAgICAgICAmJiBpbmZsYXRlZFBsdWdpblJlY3QuY29udGFpbnMoZWxlbWVu
dFJlY3RSZWxhdGl2ZVRvVG9wRG9jdW1lbnQpCiAgICAgICAgICAgICAgICAgICAgICYmIGVsZW1l
bnRSZWN0UmVsYXRpdmVUb1RvcERvY3VtZW50LndpZHRoKCkgPiBwbHVnaW5SZW5kZXJCb3gud2lk
dGgoKSAqIG1pbmltdW1PdmVybGFwcGluZ0ltYWdlVG9QbHVnaW5EaW1lbnNpb25TY2FsZQogICAg
ICAgICAgICAgICAgICAgICAmJiBlbGVtZW50UmVjdFJlbGF0aXZlVG9Ub3BEb2N1bWVudC5oZWln
aHQoKSA+IHBsdWdpblJlbmRlckJveC5oZWlnaHQoKSAqIG1pbmltdW1PdmVybGFwcGluZ0ltYWdl
VG9QbHVnaW5EaW1lbnNpb25TY2FsZSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KaW5kZXggZTdhZjFhZDY2MmJjZDM3ZTRkZTgz
OWExNjZjZTMxODQ4NDMzZDhjMC4uYjY5Zjg2NjU0ODc0ZGZlMTg4OTA1MWEwNzQzZTIyNDg4OTlm
N2RjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9X
ZWJQYWdlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9pb3Mv
V2ViUGFnZUlPUy5tbQpAQCAtMjA4MCw3ICsyMDgwLDcgQEAgdm9pZCBXZWJQYWdlOjpnZXRBc3Np
c3RlZE5vZGVJbmZvcm1hdGlvbihBc3Npc3RlZE5vZGVJbmZvcm1hdGlvbiYgaW5mb3JtYXRpb24p
CiAgICAgICAgICAgICBpZiAoaXM8SFRNTE9wdGlvbkVsZW1lbnQ+KGl0ZW0pKSB7CiAgICAgICAg
ICAgICAgICAgSFRNTE9wdGlvbkVsZW1lbnQmIG9wdGlvbiA9IGRvd25jYXN0PEhUTUxPcHRpb25F
bGVtZW50PigqaXRlbSk7CiAgICAgICAgICAgICAgICAgaW5mb3JtYXRpb24uc2VsZWN0T3B0aW9u
cy5hcHBlbmQoT3B0aW9uSXRlbShvcHRpb24udGV4dCgpLCBmYWxzZSwgcGFyZW50R3JvdXBJRCwg
b3B0aW9uLnNlbGVjdGVkKCksIG9wdGlvbi5mYXN0SGFzQXR0cmlidXRlKFdlYkNvcmU6OkhUTUxO
YW1lczo6ZGlzYWJsZWRBdHRyKSkpOwotICAgICAgICAgICAgfSBlbHNlIGlmIChpc0hUTUxPcHRH
cm91cEVsZW1lbnQoaXRlbSkpIHsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoaXM8SFRNTE9wdEdy
b3VwRWxlbWVudD4oaXRlbSkpIHsKICAgICAgICAgICAgICAgICBIVE1MT3B0R3JvdXBFbGVtZW50
JiBncm91cCA9IGRvd25jYXN0PEhUTUxPcHRHcm91cEVsZW1lbnQ+KCppdGVtKTsKICAgICAgICAg
ICAgICAgICBwYXJlbnRHcm91cElEKys7CiAgICAgICAgICAgICAgICAgaW5mb3JtYXRpb24uc2Vs
ZWN0T3B0aW9ucy5hcHBlbmQoT3B0aW9uSXRlbShncm91cC5ncm91cExhYmVsVGV4dCgpLCB0cnVl
LCAwLCBmYWxzZSwgZ3JvdXAuZmFzdEhhc0F0dHJpYnV0ZShXZWJDb3JlOjpIVE1MTmFtZXM6OmRp
c2FibGVkQXR0cikpKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>238663</attachid>
            <date>2014-09-25 10:30:57 -0700</date>
            <delta_ts>2014-09-25 15:17:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-137103-20140925103057.patch</filename>
            <type>text/plain</type>
            <size>122850</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTczOTcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2FhMWYzMWU0NTIwYWQ0
M2ZjNjNmNDczMmY5ZDVlNGVmMTlmM2I4OC4uYmVhNzg0MTk0ZWJhZTY1Y2VmZDU1YmRjMTNiNDlk
Yjk2YWU0YTExZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0NyBAQAorMjAxNC0wOS0yNCAgQ2hy
aXN0b3BoZSBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIGlzPEhUTUwq
RWxlbWVudD4oKSBpbnN0ZWFkIG9mIGlzSFRNTCpFbGVtZW50KCkgLSBQYXJ0IDIKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNzEwMworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSBpczxIVE1MKkVsZW1l
bnQ+KCkgaW5zdGVhZCBvZiBpc0hUTUwqRWxlbWVudCgpIGFuZCBkcm9wIHN1cHBvcnQgZm9yCisg
ICAgICAgIHRoZSBnZW5lcmF0ZWQgaXNIVE1MKkVsZW1lbnQoKSBtYWNyb3MuCisKKyAgICAgICAg
Tm8gbmV3IHRlc3RzLCBubyBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAgKiBhY2Nlc3NpYmls
aXR5L0FYT2JqZWN0Q2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6
Zm9jdXNlZFVJRWxlbWVudEZvclBhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6QVhPYmplY3RDYWNo
ZTo6Z2V0T3JDcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6aGFuZGxl
QXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpsYWJl
bENoYW5nZWQpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUxpc3RCb3hP
cHRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eUxpc3RCb3hPcHRpb246
OmlzRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlv
bjo6c3RyaW5nVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eUxpc3RCb3hP
cHRpb246Omxpc3RCb3hPcHRpb25QYXJlbnROb2RlKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlOb2RlT2JqZWN0OjpkZXRlcm1pbmVBY2Nlc3NpYmlsaXR5Um9sZSk6CisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6aXNOYXRpdmVJbWFnZSk6CisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6YW5jaG9yRWxlbWVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6YWx0ZXJuYXRpdmVUZXh0KToK
KyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6YW5jaG9yRWxlbWVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpsYWJlbEVs
ZW1lbnRDb250YWluZXIpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9i
amVjdDo6aW50ZXJuYWxMaW5rRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmls
aXR5UmVuZGVyT2JqZWN0Ojpjb21wdXRlQWNjZXNzaWJpbGl0eUlzSWdub3JlZCk6CisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojp1cmwpOgorICAgICAgICAoV2Vi
Q29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6Z2V0RG9jdW1lbnRMaW5rcyk6CisgICAg
ICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjphY2Nlc3NpYmlsaXR5SW1h
Z2VNYXBIaXRUZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3Q6OmFjY2Vzc2liaWxpdHlIaXRUZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3Q6OmRldGVybWluZUFjY2Vzc2liaWxpdHlSb2xlKToKKyAgICAgICAgKFdl
YkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnN0cmluZ1ZhbHVlRm9yTVNBQSk6Cisg
ICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojppc0xpbmtlZCk6Cisg
ICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlOjp0YWJsZUVsZW1lbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlOjppc1RhYmxlRXhwb3NhYmxlVGhyb3VnaEFjY2Vzc2li
aWxpdHkpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlOjp0aXRsZSk6Cisg
ICAgICAgICogYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZVRhYmxl
LmNwcDoKKyAgICAgICAgKHdlYmtpdEFjY2Vzc2libGVUYWJsZUdldENhcHRpb24pOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTSFRNTERvY3VtZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkpTSFRNTERvY3VtZW50OjpuYW1lR2V0dGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U05vZGVDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNSZWFjaGFibGVGcm9tRE9NKToK
KyAgICAgICAgKiBjc3MvQ1NTRGVmYXVsdFN0eWxlU2hlZXRzLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmVsZW1lbnRDYW5Vc2VTaW1wbGVEZWZhdWx0U3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTRGVmYXVsdFN0eWxlU2hlZXRzOjplbnN1cmVEZWZhdWx0U3R5bGVTaGVldHNGb3JFbGVtZW50
KToKKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpp
c0FjY2VwdGFibGVDU1NTdHlsZVNoZWV0UGFyZW50KToKKyAgICAgICAgKiBjc3MvU3R5bGVSZXNv
bHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjphZGp1c3RSZW5kZXJT
dHlsZSk6CisgICAgICAgICogY3NzL1N0eWxlU2hlZXRMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlN0eWxlU2hlZXRMaXN0OjpnZXROYW1lZEl0ZW0pOgorICAgICAgICAqIGRvbS9DdXJyZW50
U2NyaXB0SW5jcmVtZW50ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkN1cnJlbnRTY3JpcHRJbmNy
ZW1lbnRlcjo6Q3VycmVudFNjcmlwdEluY3JlbWVudGVyKToKKyAgICAgICAgKiBkb20vRGF0YVRy
YW5zZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFUcmFuc2Zlcjo6c2V0RHJhZ0ltYWdl
KToKKyAgICAgICAgKiBkb20vRG9jdW1lbnRPcmRlcmVkTWFwLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmtleU1hdGNoZXNNYXBOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OmtleU1hdGNoZXNMb3dl
cmNhc2VkTWFwTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjprZXlNYXRjaGVzTG93ZXJjYXNlZFVz
ZW1hcCk6CisgICAgICAgIChXZWJDb3JlOjprZXlNYXRjaGVzTGFiZWxGb3JBdHRyaWJ1dGUpOgor
ICAgICAgICAqIGRvbS9Eb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkRvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb246OmNvbGxlY3RBY3RpdmVTdHls
ZVNoZWV0cyk6CisgICAgICAgICogZG9tL05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm9k
ZTo6ZW5jbG9zaW5nTGlua0V2ZW50UGFyZW50T3JTZWxmKToKKyAgICAgICAgKiBkb20vUG9zaXRp
b24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZW5kc09mTm9kZUFyZVZpc3VhbGx5RGlzdGluY3RQ
b3NpdGlvbnMpOgorICAgICAgICAqIGRvbS9TY3JpcHRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OnRvU2NyaXB0RWxlbWVudElmUG9zc2libGUpOgorICAgICAgICAqIGRvbS9WaXNpdGVk
TGlua1N0YXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmxpbmtIYXNoRm9yRWxlbWVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpWaXNpdGVkTGlua1N0YXRlOjpkZXRlcm1pbmVMaW5rU3RhdGVTbG93
Q2FzZSk6CisgICAgICAgICogZG9tL21ha2VfbmFtZXMucGw6CisgICAgICAgIChwcmludFR5cGVI
ZWxwZXJzKToKKyAgICAgICAgKiBlZGl0aW5nL0RlbGV0ZVNlbGVjdGlvbkNvbW1hbmQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RGVsZXRlU2VsZWN0aW9uQ29tbWFuZDo6aGFuZGxlR2VuZXJhbERl
bGV0ZSk6CisgICAgICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
aW1hZ2VFbGVtZW50RnJvbUltYWdlRG9jdW1lbnQpOgorICAgICAgICAqIGVkaXRpbmcvRnJhbWVT
ZWxlY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2NhbkZvckZvcm0pOgorICAgICAgICAq
IGVkaXRpbmcvSW5zZXJ0TGluZUJyZWFrQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNlcnRMaW5lQnJlYWtDb21tYW5kOjpkb0FwcGx5KToKKyAgICAgICAgKiBlZGl0aW5nL0luc2Vy
dFBhcmFncmFwaFNlcGFyYXRvckNvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zZXJ0
UGFyYWdyYXBoU2VwYXJhdG9yQ29tbWFuZDo6ZG9BcHBseSk6CisgICAgICAgICogZWRpdGluZy9S
ZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZW1vdmVIZWFk
Q29udGVudHMpOgorICAgICAgICAqIGVkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbToKKyAg
ICAgICAgKEhUTUxDb252ZXJ0ZXI6Ol9wcm9jZXNzRWxlbWVudCk6CisgICAgICAgICogZWRpdGlu
Zy9odG1sZWRpdGluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjppc05vblRhYmxlQ2VsbEhUTUxC
bG9ja0VsZW1lbnQpOgorICAgICAgICAqIGVkaXRpbmcvbWFya3VwLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmFuY2VzdG9yVG9SZXRhaW5TdHJ1Y3R1cmVBbmRBcHBlYXJhbmNlRm9yQmxvY2spOgor
ICAgICAgICAoV2ViQ29yZTo6Y29sbGVjdEVsZW1lbnRzVG9SZW1vdmVGcm9tRnJhZ21lbnQpOgor
ICAgICAgICAqIGh0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RlRQRGlyZWN0b3J5RG9jdW1lbnRQYXJzZXI6OmxvYWREb2N1bWVudFRlbXBsYXRlKToKKyAg
ICAgICAgKiBodG1sL0Zvcm1Bc3NvY2lhdGVkRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpGb3JtQXNzb2NpYXRlZEVsZW1lbnQ6OmZpbmRBc3NvY2lhdGVkRm9ybSk6CisgICAgICAgICog
aHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjphcHBlbmRTZXJ2
ZXJNYXBNb3VzZVBvc2l0aW9uKToKKyAgICAgICAgKiBodG1sL0hUTUxBcmVhRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MQXJlYUVsZW1lbnQ6OmltYWdlRWxlbWVudCk6CisgICAg
ICAgICogaHRtbC9IVE1MRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTERvY3Vt
ZW50OjpiZ0NvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxEb2N1bWVudDo6c2V0QmdDb2xv
cik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRG9jdW1lbnQ6OmZnQ29sb3IpOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTERvY3VtZW50OjpzZXRGZ0NvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxEb2N1bWVudDo6YWxpbmtDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRG9jdW1lbnQ6
OnNldEFsaW5rQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTERvY3VtZW50OjpsaW5rQ29s
b3IpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTERvY3VtZW50OjpzZXRMaW5rQ29sb3IpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTERvY3VtZW50Ojp2bGlua0NvbG9yKToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxEb2N1bWVudDo6c2V0VmxpbmtDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
RG9jdW1lbnQ6OmlzRnJhbWVTZXQpOgorICAgICAgICAqIGh0bWwvSFRNTEVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTEVsZW1lbnQ6OnNldElubmVySFRNTCk6CisgICAgICAgICog
aHRtbC9IVE1MRmllbGRTZXRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnVwZGF0ZUZy
b21Db250cm9sRWxlbWVudHNBbmNlc3RvckRpc2FibGVkU3RhdGVVbmRlcik6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MRmllbGRTZXRFbGVtZW50OjpkaXNhYmxlZFN0YXRlQ2hhbmdlZCk6CisgICAg
ICAgICogaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OmNvbXB1dGVJc0Rpc2FibGVkQnlGaWVsZHNldEFuY2Vz
dG9yKToKKyAgICAgICAgKiBodG1sL0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uOjpIVE1MRm9ybUNvbnRy
b2xzQ29sbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUNvbnRyb2xzQ29sbGVj
dGlvbjo6Zm9ybUNvbnRyb2xFbGVtZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUNv
bnRyb2xzQ29sbGVjdGlvbjo6Zm9ybUltYWdlRWxlbWVudHMpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb246Om5hbWVkSXRlbSk6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbjo6dXBkYXRlTmFtZWRFbGVtZW50Q2FjaGUpOgor
ICAgICAgICAqIGh0bWwvSFRNTEZvcm1FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxGb3JtRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZCk6CisgICAgICAgICogaHRtbC9IVE1MRnJh
bWVFbGVtZW50QmFzZS5oOgorICAgICAgICAoV2ViQ29yZTo6aXNIVE1MRnJhbWVFbGVtZW50QmFz
ZSk6CisgICAgICAgICogaHRtbC9IVE1MSW1hZ2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTEltYWdlTG9hZGVyOjpkaXNwYXRjaExvYWRFdmVudCk6CisgICAgICAgICogaHRtbC9I
VE1MSW5wdXRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6
OmRhdGFMaXN0KToKKyAgICAgICAgKiBodG1sL0hUTUxMZWdlbmRFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxMZWdlbmRFbGVtZW50Ojp2aXJ0dWFsRm9ybSk6CisgICAgICAgICog
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVs
ZW1lbnQ6OnBhcnNlQXR0cmlidXRlKToKKyAgICAgICAgKiBodG1sL0hUTUxOYW1lQ29sbGVjdGlv
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXaW5kb3dOYW1lQ29sbGVjdGlvbjo6ZWxlbWVudE1h
dGNoZXNJZk5hbWVBdHRyaWJ1dGVNYXRjaCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudE5h
bWVDb2xsZWN0aW9uOjplbGVtZW50TWF0Y2hlcyk6CisgICAgICAgICogaHRtbC9IVE1MT3B0aW9u
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MT3B0aW9uRWxlbWVudDo6b3duZXJE
YXRhTGlzdEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE9wdGlvbkVsZW1lbnQ6OnRl
eHRJbmRlbnRlZFRvUmVzcGVjdEdyb3VwTGFiZWwpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE9w
dGlvbkVsZW1lbnQ6OmlzRGlzYWJsZWRGb3JtQ29udHJvbCk6CisgICAgICAgICogaHRtbC9IVE1M
U2VsZWN0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2VsZWN0RWxlbWVudDo6
cmVjYWxjTGlzdEl0ZW1zKToKKyAgICAgICAgKiBodG1sL0hUTUxUYWJsZUVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTFRhYmxlRWxlbWVudDo6Y2FwdGlvbik6CisgICAgICAgICog
aHRtbC9IVE1MVGFibGVQYXJ0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVGFi
bGVQYXJ0RWxlbWVudDo6ZmluZFBhcmVudFRhYmxlKToKKyAgICAgICAgKiBodG1sL0hUTUxUYWJs
ZVJvd0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRhYmxlUm93RWxlbWVudDo6
cm93SW5kZXgpOgorICAgICAgICAqIGh0bWwvSFRNTFRhYmxlUm93c0NvbGxlY3Rpb24uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTFRhYmxlUm93c0NvbGxlY3Rpb246OnJvd0FmdGVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxUYWJsZVJvd3NDb2xsZWN0aW9uOjpsYXN0Um93KToKKyAgICAg
ICAgKiBodG1sL0hUTUxUYWdOYW1lcy5pbjoKKyAgICAgICAgKiBodG1sL0xhYmVsc05vZGVMaXN0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxhYmVsc05vZGVMaXN0OjplbGVtZW50TWF0Y2hlcyk6
CisgICAgICAgICogaHRtbC9NZWRpYURvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRl
c2NlbmRlbnRWaWRlb0VsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6YW5jZXN0b3JWaWRlb0Vs
ZW1lbnQpOgorICAgICAgICAqIGh0bWwvUmFkaW9JbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmFkaW9JbnB1dFR5cGU6OmhhbmRsZUtleWRvd25FdmVudCk6CisgICAgICAgICogaHRt
bC9SYWRpb05vZGVMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJhZGlvTm9kZUxpc3Q6OlJh
ZGlvTm9kZUxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmFkaW9Ob2RlTGlzdDo6Y2hlY2tFbGVt
ZW50TWF0Y2hlc1JhZGlvTm9kZUxpc3RGaWx0ZXIpOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hU
TUxDb25zdHJ1Y3Rpb25TaXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Omhhc0ltcGxpZWRFbmRU
YWcpOgorICAgICAgICAoV2ViQ29yZTo6aW5zZXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxD
b25zdHJ1Y3Rpb25TaXRlOjppbnNlcnRIVE1MRm9ybUVsZW1lbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTENvbnN0cnVjdGlvblNpdGU6Omluc2VydFRleHROb2RlKToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxDb25zdHJ1Y3Rpb25TaXRlOjpvd25lckRvY3VtZW50Rm9yQ3VycmVudE5vZGUpOgor
ICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxFbGVtZW50U3RhY2suY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTE5hbWVzOjppc1Njb3BlTWFya2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxO
YW1lczo6aXNUYWJsZVNjb3BlTWFya2VyKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MVHJl
ZUJ1aWxkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpIVE1MVHJl
ZUJ1aWxkZXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzU3Rh
cnRUYWcpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpyZXNldEluc2VydGlv
bk1vZGVBcHByb3ByaWF0ZWx5KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6
cHJvY2Vzc0VuZFRhZyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OnByb2Nl
c3NDaGFyYWN0ZXJCdWZmZXIpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JET01BZ2Vu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6YnVpbGRPYmplY3RG
b3JOb2RlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JTdHlsZVNoZWV0OjppbmxpbmVTdHlsZVNoZWV0VGV4
dCk6CisgICAgICAgICogcGFnZS9EcmFnQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpEcmFnQ29udHJvbGxlcjo6ZHJhZ2dhYmxlRWxlbWVudCk6CisgICAgICAgICogcGFnZS9Gb2N1
c0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9jdXNDb250cm9sbGVyOjphZHZh
bmNlRm9jdXNEaXJlY3Rpb25hbGx5KToKKyAgICAgICAgKiBwYWdlL1BhZ2VTZXJpYWxpemVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VTZXJpYWxpemVyOjpzZXJpYWxpemVGcmFtZSk6Cisg
ICAgICAgICogcGFnZS9TcGF0aWFsTmF2aWdhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpG
b2N1c0NhbmRpZGF0ZTo6Rm9jdXNDYW5kaWRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6YXJlRWxl
bWVudHNPblNhbWVMaW5lKToKKyAgICAgICAgKiBwYWdlL2lvcy9GcmFtZUlPUy5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OmFuY2VzdG9yUmVzcG9uZGluZ1RvQ2xpY2tFdmVudHMpOgorICAgICAgICAq
IHJlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhpdFRlc3RS
ZXN1bHQ6OmFsdERpc3BsYXlTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6SGl0VGVzdFJlc3Vs
dDo6bWVkaWFTdXBwb3J0c0Z1bGxzY3JlZW4pOgorICAgICAgICAoV2ViQ29yZTo6SGl0VGVzdFJl
c3VsdDo6bWVkaWFFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQ6OmVu
dGVyRnVsbHNjcmVlbkZvclZpZGVvKToKKyAgICAgICAgKFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQ6
Om1lZGlhSXNWaWRlbyk6CisgICAgICAgIChXZWJDb3JlOjpIaXRUZXN0UmVzdWx0Ojppc0xpdmVM
aW5rKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQ291bnRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpwbGFuQ291bnRlcik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckltYWdlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjpSZW5kZXJJbWFnZSk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJJbWFnZTo6cGFpbnRBcmVhRWxlbWVudEZvY3VzUmluZyk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZTo6cGFpbnRJbnRvUmVjdCk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJJbWFnZTo6aW1hZ2VNYXApOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1h
Z2U6OnVwZGF0ZUFsdFRleHQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxpc3RCb3g6OnVwZGF0ZUZyb21FbGVtZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxpc3RCb3g6OnBhaW50SXRlbUZvcmVncm91bmQpOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJNYXJxdWVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlck1hcnF1ZWU6Om1hcnF1ZWVTcGVlZCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ck1lbnVMaXN0LmNwcDoKKyAgICAgICAgKFJlbmRlck1lbnVMaXN0OjppdGVtVGV4dCk6CisgICAg
ICAgIChSZW5kZXJNZW51TGlzdDo6aXRlbUlzRW5hYmxlZCk6CisgICAgICAgIChSZW5kZXJNZW51
TGlzdDo6aXRlbUlzTGFiZWwpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJNZXRlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNZXRlcjo6bWV0ZXJFbGVtZW50KToKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9i
amVjdDo6c2hvdWxkUmVzcGVjdEltYWdlT3JpZW50YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyT2JqZWN0OjpnZXRUZXh0RGVjb3JhdGlvbkNvbG9ycyk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJPYmplY3Q6Om9mZnNldFBhcmVudCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
clByb2dyZXNzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclByb2dyZXNzOjpwcm9ncmVz
c0VsZW1lbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUYWJsZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJUYWJsZTo6Y29udmVydFN0eWxlTG9naWNhbFdpZHRoVG9Db21wdXRl
ZFdpZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlOjpjb252ZXJ0U3R5bGVMb2dp
Y2FsSGVpZ2h0VG9Db21wdXRlZEhlaWdodCk6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL1NWR0lt
YWdlQ2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2VDYWNoZTo6aW1hZ2VGb3JS
ZW5kZXJlcik6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SW50ZXJuYWxzOjp1cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHNBbmRS
dW5Qb3N0TGF5b3V0VGFza3MpOgorICAgICAgICAqIHhtbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJz
ZXJMaWJ4bWwyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhNTERvY3VtZW50UGFyc2VyOjpzdGFy
dEVsZW1lbnROcyk6CisKIDIwMTQtMDktMjUgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNv
bT4KIAogICAgICAgICBVbnJldmlld2VkIGlPUyBidWlsZCBmaXggYWZ0ZXIgcjE3Mzk0NC4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvd2lu
L0NoYW5nZUxvZwppbmRleCA0MDQ2MGRmM2FmMzZhY2NlN2M5MTI1MDllNDA2MTI5NGQ3ZTE2YmQ2
Li5lNTUzMDM0MTdkNzkyNDQ5ZWE5Y2E1MDkyYWQ3MDE4M2QyNWEwYjdmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdl
TG9nCkBAIC0xLDUgKzEsMjIgQEAKIDIwMTQtMDktMjQgIENocmlzdG9waGUgRHVtZXogIDxjZHVt
ZXpAYXBwbGUuY29tPgogCisgICAgICAgIFVzZSBpczxIVE1MKkVsZW1lbnQ+KCkgaW5zdGVhZCBv
ZiBpc0hUTUwqRWxlbWVudCgpIC0gUGFydCAyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMzcxMDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBVc2UgaXM8SFRNTCpFbGVtZW50PigpIGluc3RlYWQgb2YgaXNI
VE1MKkVsZW1lbnQoKS4KKworICAgICAgICAqIERPTUNvcmVDbGFzc2VzLmNwcDoKKyAgICAgICAg
KERPTUVsZW1lbnQ6OmNyZWF0ZUluc3RhbmNlKToKKyAgICAgICAgKiBET01IVE1MQ2xhc3Nlcy5j
cHA6CisgICAgICAgIChET01IVE1MRm9ybUVsZW1lbnQ6OmFjdGlvbik6CisgICAgICAgIChET01I
VE1MRm9ybUVsZW1lbnQ6Om1ldGhvZCk6CisgICAgICAgICogV2ViRnJhbWUuY3BwOgorICAgICAg
ICAoZm9ybUVsZW1lbnRGcm9tRE9NRWxlbWVudCk6CisKKzIwMTQtMDktMjQgIENocmlzdG9waGUg
RHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCiAgICAgICAgIEFkZCBpbml0aWFsIGlzPD4oKSAv
IGRvd25jYXN0PD4oKSBzdXBwb3J0IGZvciBhbnkgdHlwZSBvZiBOb2RlcwogICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM3MDU2CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRl
eCBiNTAxZGE5MGRjYzRkZGRhYmFlOTAyNTVhYTQ3Y2E0NWZhMjgyNjFlLi5lNDIxZGMwMjZkNDNk
NmVkMGQ2MjZmMmFmNGZhMWE3ZjY0MjdkMWUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAK
KzIwMTQtMDktMjQgIENocmlzdG9waGUgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAg
ICAgIFVzZSBpczxIVE1MKkVsZW1lbnQ+KCkgaW5zdGVhZCBvZiBpc0hUTUwqRWxlbWVudCgpIC0g
UGFydCAyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MzcxMDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBV
c2UgaXM8SFRNTCpFbGVtZW50PigpIGluc3RlYWQgb2YgaXNIVE1MKkVsZW1lbnQoKS4KKworICAg
ICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlTm9kZUhh
bmRsZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlTm9kZUhhbmRsZTo6aHRt
bElGcmFtZUVsZW1lbnRDb250ZW50RnJhbWUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJGcmFtZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lOjpjb250YWluc0FueUZv
cm1FbGVtZW50cyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpkZXRlcm1pbmVQcmltYXJ5U25hcHNob3R0ZWRQbHVn
SW4pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0QXNzaXN0ZWROb2RlSW5mb3JtYXRpb24pOgorCiAy
MDE0LTA5LTI1ICBBbGJlcnRvIEdhcmNpYSAgPGJlcnRvQGlnYWxpYS5jb20+CiAKICAgICAgICAg
VW5yZXZpZXdlZCB0eXBvIGZpeC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQVhPYmplY3RDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FY
T2JqZWN0Q2FjaGUuY3BwCmluZGV4IGIwZWM1OWIyNTg0ZjdlYmI3NjU2ODQ0YWUxYzk1NWVlMjAx
MThkZDQuLjY3NDc1YzI3YmZjMDE1Nzg1YjlhMGMxMWMwNTFmYWUzM2ZjOGFmOGUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcApAQCAtMTc2LDcg
KzE3Niw3IEBAIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFYT2JqZWN0Q2FjaGU6OmZvY3VzZWRVSUVs
ZW1lbnRGb3JQYWdlKGNvbnN0IFBhZ2UqIHBhZ2UpCiAgICAgLy8gZ2V0IHRoZSBmb2N1c2VkIG5v
ZGUgaW4gdGhlIHBhZ2UKICAgICBEb2N1bWVudCogZm9jdXNlZERvY3VtZW50ID0gcGFnZS0+Zm9j
dXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCkuZG9jdW1lbnQoKTsKICAgICBFbGVt
ZW50KiBmb2N1c2VkRWxlbWVudCA9IGZvY3VzZWREb2N1bWVudC0+Zm9jdXNlZEVsZW1lbnQoKTsK
LSAgICBpZiAoZm9jdXNlZEVsZW1lbnQgJiYgaXNIVE1MQXJlYUVsZW1lbnQoZm9jdXNlZEVsZW1l
bnQpKQorICAgIGlmIChmb2N1c2VkRWxlbWVudCAmJiBpczxIVE1MQXJlYUVsZW1lbnQ+KGZvY3Vz
ZWRFbGVtZW50KSkKICAgICAgICAgcmV0dXJuIGZvY3VzZWRJbWFnZU1hcFVJRWxlbWVudChkb3du
Y2FzdDxIVE1MQXJlYUVsZW1lbnQ+KGZvY3VzZWRFbGVtZW50KSk7CiAKICAgICBBY2Nlc3NpYmls
aXR5T2JqZWN0KiBvYmogPSBmb2N1c2VkRG9jdW1lbnQtPmF4T2JqZWN0Q2FjaGUoKS0+Z2V0T3JD
cmVhdGUoZm9jdXNlZEVsZW1lbnQgPyBzdGF0aWNfY2FzdDxOb2RlKj4oZm9jdXNlZEVsZW1lbnQp
IDogZm9jdXNlZERvY3VtZW50KTsKQEAgLTM4Niw3ICszODYsNyBAQCBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0KiBBWE9iamVjdENhY2hlOjpnZXRPckNyZWF0ZShOb2RlKiBub2RlKQogCiAgICAgYm9vbCBp
bnNpZGVNZXRlckVsZW1lbnQgPSBmYWxzZTsKICNpZiBFTkFCTEUoTUVURVJfRUxFTUVOVCkKLSAg
ICBpbnNpZGVNZXRlckVsZW1lbnQgPSBpc0hUTUxNZXRlckVsZW1lbnQobm9kZS0+cGFyZW50RWxl
bWVudCgpKTsKKyAgICBpbnNpZGVNZXRlckVsZW1lbnQgPSBpczxIVE1MTWV0ZXJFbGVtZW50Pihu
b2RlLT5wYXJlbnRFbGVtZW50KCkpOwogI2VuZGlmCiAgICAgCiAgICAgaWYgKCFpbkNhbnZhc1N1
YnRyZWUgJiYgIWlzSGlkZGVuICYmICFpbnNpZGVNZXRlckVsZW1lbnQpCkBAIC05MTcsNyArOTE3
LDcgQEAgdm9pZCBBWE9iamVjdENhY2hlOjpoYW5kbGVBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1
YWxpZmllZE5hbWUmIGF0dHJOYW1lLCBFbGVtZW4KICAgICAgICAgaGFuZGxlQXJpYVJvbGVDaGFu
Z2VkKGVsZW1lbnQpOwogICAgIGVsc2UgaWYgKGF0dHJOYW1lID09IGFsdEF0dHIgfHwgYXR0ck5h
bWUgPT0gdGl0bGVBdHRyKQogICAgICAgICB0ZXh0Q2hhbmdlZChlbGVtZW50KTsKLSAgICBlbHNl
IGlmIChhdHRyTmFtZSA9PSBmb3JBdHRyICYmIGlzSFRNTExhYmVsRWxlbWVudChlbGVtZW50KSkK
KyAgICBlbHNlIGlmIChhdHRyTmFtZSA9PSBmb3JBdHRyICYmIGlzPEhUTUxMYWJlbEVsZW1lbnQ+
KGVsZW1lbnQpKQogICAgICAgICBsYWJlbENoYW5nZWQoZWxlbWVudCk7CiAKICAgICBpZiAoIWF0
dHJOYW1lLmxvY2FsTmFtZSgpLnN0cmluZygpLnN0YXJ0c1dpdGgoImFyaWEtIikpCkBAIC05NDcs
NyArOTQ3LDcgQEAgdm9pZCBBWE9iamVjdENhY2hlOjpoYW5kbGVBdHRyaWJ1dGVDaGFuZ2VkKGNv
bnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lLCBFbGVtZW4KIAogdm9pZCBBWE9iamVjdENhY2hl
OjpsYWJlbENoYW5nZWQoRWxlbWVudCogZWxlbWVudCkKIHsKLSAgICBBU1NFUlQoaXNIVE1MTGFi
ZWxFbGVtZW50KGVsZW1lbnQpKTsKKyAgICBBU1NFUlQoaXM8SFRNTExhYmVsRWxlbWVudD4oZWxl
bWVudCkpOwogICAgIEhUTUxFbGVtZW50KiBjb3JyZXNwb25kaW5nQ29udHJvbCA9IGRvd25jYXN0
PEhUTUxMYWJlbEVsZW1lbnQ+KGVsZW1lbnQpLT5jb250cm9sKCk7CiAgICAgdGV4dENoYW5nZWQo
Y29ycmVzcG9uZGluZ0NvbnRyb2wpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMaXN0Qm94T3B0aW9uLmNwcAppbmRleCBjMzI3
MDA4MDYwM2NmMGM3MmM5YjZjYmNmNGY4NTc5ZWM3MmYyY2EyLi5mMDM4ODdjYTZhMzVkMzZkYjUy
M2I3OGI0ZjViYTBlMjRjNTZkZmM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlMaXN0Qm94T3B0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMaXN0Qm94T3B0aW9uLmNwcApAQCAtNjQsNyAr
NjQsNyBAQCBib29sIEFjY2Vzc2liaWxpdHlMaXN0Qm94T3B0aW9uOjppc0VuYWJsZWQoKSBjb25z
dAogICAgIGlmICghbV9vcHRpb25FbGVtZW50KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
Ci0gICAgaWYgKGlzSFRNTE9wdEdyb3VwRWxlbWVudChtX29wdGlvbkVsZW1lbnQpKQorICAgIGlm
IChpczxIVE1MT3B0R3JvdXBFbGVtZW50PihtX29wdGlvbkVsZW1lbnQpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoZ2V0QXR0cmlidXRlKGFyaWFf
ZGlzYWJsZWRBdHRyKSwgInRydWUiKSkKQEAgLTE1OSw3ICsxNTksNyBAQCBTdHJpbmcgQWNjZXNz
aWJpbGl0eUxpc3RCb3hPcHRpb246OnN0cmluZ1ZhbHVlKCkgY29uc3QKICAgICBpZiAoaXM8SFRN
TE9wdGlvbkVsZW1lbnQ+KG1fb3B0aW9uRWxlbWVudCkpCiAgICAgICAgIHJldHVybiBkb3duY2Fz
dDxIVE1MT3B0aW9uRWxlbWVudD4oKm1fb3B0aW9uRWxlbWVudCkudGV4dCgpOwogICAgIAotICAg
IGlmIChpc0hUTUxPcHRHcm91cEVsZW1lbnQobV9vcHRpb25FbGVtZW50KSkKKyAgICBpZiAoaXM8
SFRNTE9wdEdyb3VwRWxlbWVudD4obV9vcHRpb25FbGVtZW50KSkKICAgICAgICAgcmV0dXJuIGRv
d25jYXN0PEhUTUxPcHRHcm91cEVsZW1lbnQ+KCptX29wdGlvbkVsZW1lbnQpLmdyb3VwTGFiZWxU
ZXh0KCk7CiAgICAgCiAgICAgcmV0dXJuIFN0cmluZygpOwpAQCAtMjA1LDcgKzIwNSw3IEBAIEhU
TUxTZWxlY3RFbGVtZW50KiBBY2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlvbjo6bGlzdEJveE9wdGlv
blBhcmVudE5vZGUoKSBjb25zdAogICAgIGlmIChpczxIVE1MT3B0aW9uRWxlbWVudD4obV9vcHRp
b25FbGVtZW50KSkKICAgICAgICAgcmV0dXJuIGRvd25jYXN0PEhUTUxPcHRpb25FbGVtZW50Pigq
bV9vcHRpb25FbGVtZW50KS5vd25lclNlbGVjdEVsZW1lbnQoKTsKIAotICAgIGlmIChpc0hUTUxP
cHRHcm91cEVsZW1lbnQobV9vcHRpb25FbGVtZW50KSkKKyAgICBpZiAoaXM8SFRNTE9wdEdyb3Vw
RWxlbWVudD4obV9vcHRpb25FbGVtZW50KSkKICAgICAgICAgcmV0dXJuIGRvd25jYXN0PEhUTUxP
cHRHcm91cEVsZW1lbnQ+KCptX29wdGlvbkVsZW1lbnQpLm93bmVyU2VsZWN0RWxlbWVudCgpOwog
CiAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuY3BwCmluZGV4IDI2MmZiOTc1ZDJiNjk3
YTdjMDZmMTYyZGFhYTAyNmZkMzhhODQ2Y2MuLmQ3NGMxMjBiZjIxZWU5YjRhYjExY2Q5YzU2NWI1
NjE1NjIwYmRmMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eU5vZGVPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuY3BwCkBAIC0zMjEsNyArMzIxLDcgQEAgQWNjZXNz
aWJpbGl0eVJvbGUgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmRldGVybWluZUFjY2Vzc2liaWxp
dHlSb2xlKCkKICAgICAgICAgcmV0dXJuIERpdlJvbGU7CiAgICAgaWYgKG5vZGUoKS0+aGFzVGFn
TmFtZShwVGFnKSkKICAgICAgICAgcmV0dXJuIFBhcmFncmFwaFJvbGU7Ci0gICAgaWYgKGlzSFRN
TExhYmVsRWxlbWVudChub2RlKCkpKQorICAgIGlmIChpczxIVE1MTGFiZWxFbGVtZW50Pihub2Rl
KCkpKQogICAgICAgICByZXR1cm4gTGFiZWxSb2xlOwogICAgIGlmIChub2RlKCktPmlzRWxlbWVu
dE5vZGUoKSAmJiB0b0VsZW1lbnQobm9kZSgpKS0+aXNGb2N1c2FibGUoKSkKICAgICAgICAgcmV0
dXJuIEdyb3VwUm9sZTsKQEAgLTUxMiw3ICs1MTIsNyBAQCBib29sIEFjY2Vzc2liaWxpdHlOb2Rl
T2JqZWN0Ojppc05hdGl2ZUltYWdlKCkgY29uc3QKICAgICBpZiAoIW5vZGUpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAotICAgIGlmIChpc0hUTUxJbWFnZUVsZW1lbnQobm9kZSkpCisgICAgaWYg
KGlzPEhUTUxJbWFnZUVsZW1lbnQ+KG5vZGUpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAg
IGlmIChub2RlLT5oYXNUYWdOYW1lKGFwcGxldFRhZykgfHwgbm9kZS0+aGFzVGFnTmFtZShlbWJl
ZFRhZykgfHwgbm9kZS0+aGFzVGFnTmFtZShvYmplY3RUYWcpKQpAQCAtOTYzLDcgKzk2Myw3IEBA
IEVsZW1lbnQqIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjphbmNob3JFbGVtZW50KCkgY29uc3QK
ICAgICAvLyBzZWFyY2ggdXAgdGhlIERPTSB0cmVlIGZvciBhbiBhbmNob3IgZWxlbWVudAogICAg
IC8vIE5PVEU6IHRoaXMgYXNzdW1lcyB0aGF0IGFueSBub24taW1hZ2Ugd2l0aCBhbiBhbmNob3Ig
aXMgYW4gSFRNTEFuY2hvckVsZW1lbnQKICAgICBmb3IgKCA7IG5vZGU7IG5vZGUgPSBub2RlLT5w
YXJlbnROb2RlKCkpIHsKLSAgICAgICAgaWYgKGlzSFRNTEFuY2hvckVsZW1lbnQobm9kZSkgfHwg
KG5vZGUtPnJlbmRlcmVyKCkgJiYgY2FjaGUtPmdldE9yQ3JlYXRlKG5vZGUtPnJlbmRlcmVyKCkp
LT5pc0FuY2hvcigpKSkKKyAgICAgICAgaWYgKGlzPEhUTUxBbmNob3JFbGVtZW50Pihub2RlKSB8
fCAobm9kZS0+cmVuZGVyZXIoKSAmJiBjYWNoZS0+Z2V0T3JDcmVhdGUobm9kZS0+cmVuZGVyZXIo
KSktPmlzQW5jaG9yKCkpKQogICAgICAgICAgICAgcmV0dXJuIHRvRWxlbWVudChub2RlKTsKICAg
ICB9CiAKQEAgLTEzMDUsNyArMTMwNSw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6
OmFsdGVybmF0aXZlVGV4dChWZWN0b3I8QWNjZXNzaWJpbGl0eVRleHQ+JiB0ZXh0T3JkCiAgICAg
ICAgIHJldHVybjsKICAgICAKICAgICAvLyBUaGUgZmllbGRzZXQgZWxlbWVudCBkZXJpdmVzIGl0
cyBhbHRlcm5hdGl2ZSB0ZXh0IGZyb20gdGhlIGZpcnN0IGFzc29jaWF0ZWQgbGVnZW5kIGVsZW1l
bnQgaWYgb25lIGlzIGF2YWlsYWJsZS4KLSAgICBpZiAoaXNIVE1MRmllbGRTZXRFbGVtZW50KG5v
ZGUpKSB7CisgICAgaWYgKGlzPEhUTUxGaWVsZFNldEVsZW1lbnQ+KG5vZGUpKSB7CiAgICAgICAg
IEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iamVjdCA9IGF4T2JqZWN0Q2FjaGUoKS0+Z2V0T3JDcmVh
dGUoZG93bmNhc3Q8SFRNTEZpZWxkU2V0RWxlbWVudD4oKm5vZGUpLmxlZ2VuZCgpKTsKICAgICAg
ICAgaWYgKG9iamVjdCAmJiAhb2JqZWN0LT5pc0hpZGRlbigpKQogICAgICAgICAgICAgdGV4dE9y
ZGVyLmFwcGVuZChBY2Nlc3NpYmlsaXR5VGV4dChhY2Nlc3NpYmxlTmFtZUZvck5vZGUob2JqZWN0
LT5ub2RlKCkpLCBBbHRlcm5hdGl2ZVRleHQpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCmluZGV4IDNl
MmE4ZjdhZTY1Y2IwOTRmOWIwNjZlODM5ZjUyNDE1N2FjNjZkZjEuLjQ0NGZhZmFlYTAxMjFkOWM2
OThhMDIzMzlhYWMxNmQzOGFkZjU1OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcApAQCAtNTg1LDcg
KzU4NSw3IEBAIEVsZW1lbnQqIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFuY2hvckVsZW1l
bnQoKSBjb25zdAogICAgIC8vIE5PVEU6IHRoaXMgYXNzdW1lcyB0aGF0IGFueSBub24taW1hZ2Ug
d2l0aCBhbiBhbmNob3IgaXMgYW4gSFRNTEFuY2hvckVsZW1lbnQKICAgICBOb2RlKiBub2RlID0g
Y3VyclJlbmRlcmVyLT5ub2RlKCk7CiAgICAgZm9yICggOyBub2RlOyBub2RlID0gbm9kZS0+cGFy
ZW50Tm9kZSgpKSB7Ci0gICAgICAgIGlmIChpc0hUTUxBbmNob3JFbGVtZW50KG5vZGUpIHx8IChu
b2RlLT5yZW5kZXJlcigpICYmIGNhY2hlLT5nZXRPckNyZWF0ZShub2RlLT5yZW5kZXJlcigpKS0+
aXNBbmNob3IoKSkpCisgICAgICAgIGlmIChpczxIVE1MQW5jaG9yRWxlbWVudD4obm9kZSkgfHwg
KG5vZGUtPnJlbmRlcmVyKCkgJiYgY2FjaGUtPmdldE9yQ3JlYXRlKG5vZGUtPnJlbmRlcmVyKCkp
LT5pc0FuY2hvcigpKSkKICAgICAgICAgICAgIHJldHVybiB0b0VsZW1lbnQobm9kZSk7CiAgICAg
fQogICAgIApAQCAtNzgyLDcgKzc4Miw3IEBAIEhUTUxMYWJlbEVsZW1lbnQqIEFjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3Q6OmxhYmVsRWxlbWVudENvbnRhaW5lcigpIGNvbnN0CiAgICAgCiAgICAg
Ly8gZmluZCBpZiB0aGlzIGhhcyBhIHBhcmVudCB0aGF0IGlzIGEgbGFiZWwKICAgICBmb3IgKE5v
ZGUqIHBhcmVudE5vZGUgPSBtX3JlbmRlcmVyLT5ub2RlKCk7IHBhcmVudE5vZGU7IHBhcmVudE5v
ZGUgPSBwYXJlbnROb2RlLT5wYXJlbnROb2RlKCkpIHsKLSAgICAgICAgaWYgKGlzSFRNTExhYmVs
RWxlbWVudChwYXJlbnROb2RlKSkKKyAgICAgICAgaWYgKGlzPEhUTUxMYWJlbEVsZW1lbnQ+KHBh
cmVudE5vZGUpKQogICAgICAgICAgICAgcmV0dXJuIGRvd25jYXN0PEhUTUxMYWJlbEVsZW1lbnQ+
KHBhcmVudE5vZGUpOwogICAgIH0KICAgICAKQEAgLTkxNCw3ICs5MTQsNyBAQCBBY2Nlc3NpYmls
aXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjppbnRlcm5hbExpbmtFbGVtZW50
KCkgY29uc3QKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgCiAgICAgLy8gUmlnaHQgbm93
LCB3ZSBkbyBub3Qgc3VwcG9ydCBBUklBIGxpbmtzIGFzIGludGVybmFsIGxpbmsgZWxlbWVudHMK
LSAgICBpZiAoIWlzSFRNTEFuY2hvckVsZW1lbnQoZWxlbWVudCkpCisgICAgaWYgKCFpczxIVE1M
QW5jaG9yRWxlbWVudD4oZWxlbWVudCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIEhU
TUxBbmNob3JFbGVtZW50JiBhbmNob3IgPSBkb3duY2FzdDxIVE1MQW5jaG9yRWxlbWVudD4oKmVs
ZW1lbnQpOwogICAgIApAQCAtMTI3NSw3ICsxMjc1LDcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5UmVu
ZGVyT2JqZWN0Ojpjb21wdXRlQWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpIGNvbnN0CiAgICAgCiAg
ICAgLy8gZG9uJ3QgaWdub3JlIGxhYmVscywgYmVjYXVzZSB0aGV5IHNlcnZlIGFzIFRpdGxlVUlF
bGVtZW50cwogICAgIE5vZGUqIG5vZGUgPSBtX3JlbmRlcmVyLT5ub2RlKCk7Ci0gICAgaWYgKG5v
ZGUgJiYgaXNIVE1MTGFiZWxFbGVtZW50KG5vZGUpKQorICAgIGlmIChub2RlICYmIGlzPEhUTUxM
YWJlbEVsZW1lbnQ+KG5vZGUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCiAgICAgLy8g
QW55dGhpbmcgdGhhdCBpcyBjb250ZW50IGVkaXRhYmxlIHNob3VsZCBub3QgYmUgaWdub3JlZC4K
QEAgLTE1MDcsNyArMTUwNyw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6c2V0
U2VsZWN0ZWRUZXh0UmFuZ2UoY29uc3QgUGxhaW5UZXh0UmFuZ2UmIHJhbmdlCiAKIFVSTCBBY2Nl
c3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojp1cmwoKSBjb25zdAogewotICAgIGlmIChpc0FuY2hvcigp
ICYmIGlzSFRNTEFuY2hvckVsZW1lbnQobV9yZW5kZXJlci0+bm9kZSgpKSkgeworICAgIGlmIChp
c0FuY2hvcigpICYmIGlzPEhUTUxBbmNob3JFbGVtZW50PihtX3JlbmRlcmVyLT5ub2RlKCkpKSB7
CiAgICAgICAgIGlmIChIVE1MQW5jaG9yRWxlbWVudCogYW5jaG9yID0gZG93bmNhc3Q8SFRNTEFu
Y2hvckVsZW1lbnQ+KGFuY2hvckVsZW1lbnQoKSkpCiAgICAgICAgICAgICByZXR1cm4gYW5jaG9y
LT5ocmVmKCk7CiAgICAgfQpAQCAtMTUxNSw3ICsxNTE1LDcgQEAgVVJMIEFjY2Vzc2liaWxpdHlS
ZW5kZXJPYmplY3Q6OnVybCgpIGNvbnN0CiAgICAgaWYgKGlzV2ViQXJlYSgpKQogICAgICAgICBy
ZXR1cm4gbV9yZW5kZXJlci0+ZG9jdW1lbnQoKS51cmwoKTsKICAgICAKLSAgICBpZiAoaXNJbWFn
ZSgpICYmIG1fcmVuZGVyZXItPm5vZGUoKSAmJiBpc0hUTUxJbWFnZUVsZW1lbnQobV9yZW5kZXJl
ci0+bm9kZSgpKSkKKyAgICBpZiAoaXNJbWFnZSgpICYmIG1fcmVuZGVyZXItPm5vZGUoKSAmJiBp
czxIVE1MSW1hZ2VFbGVtZW50PihtX3JlbmRlcmVyLT5ub2RlKCkpKQogICAgICAgICByZXR1cm4g
ZG93bmNhc3Q8SFRNTEltYWdlRWxlbWVudD4oKm1fcmVuZGVyZXItPm5vZGUoKSkuc3JjKCk7CiAg
ICAgCiAgICAgaWYgKGlzSW5wdXRJbWFnZSgpKQpAQCAtMTc1OSw3ICsxNzU5LDcgQEAgdm9pZCBB
Y2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpnZXREb2N1bWVudExpbmtzKEFjY2Vzc2liaWxpdHlD
aGlsZHJlblZlY3RvciYgcmUKICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKGF4b2JqKTsK
ICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIE5vZGUqIHBhcmVudCA9IGN1cnItPnBhcmVu
dE5vZGUoKTsKLSAgICAgICAgICAgIGlmIChwYXJlbnQgJiYgaXNIVE1MQXJlYUVsZW1lbnQoY3Vy
cikgJiYgaXNIVE1MTWFwRWxlbWVudChwYXJlbnQpKSB7CisgICAgICAgICAgICBpZiAocGFyZW50
ICYmIGlzPEhUTUxBcmVhRWxlbWVudD4oY3VycikgJiYgaXM8SFRNTE1hcEVsZW1lbnQ+KHBhcmVu
dCkpIHsKICAgICAgICAgICAgICAgICBBY2Nlc3NpYmlsaXR5SW1hZ2VNYXBMaW5rKiBhcmVhT2Jq
ZWN0ID0gdG9BY2Nlc3NpYmlsaXR5SW1hZ2VNYXBMaW5rKGF4T2JqZWN0Q2FjaGUoKS0+Z2V0T3JD
cmVhdGUoSW1hZ2VNYXBMaW5rUm9sZSkpOwogICAgICAgICAgICAgICAgIEhUTUxNYXBFbGVtZW50
JiBtYXAgPSBkb3duY2FzdDxIVE1MTWFwRWxlbWVudD4oKnBhcmVudCk7CiAgICAgICAgICAgICAg
ICAgYXJlYU9iamVjdC0+c2V0SFRNTEFyZWFFbGVtZW50KGRvd25jYXN0PEhUTUxBcmVhRWxlbWVu
dD4oY3VycikpOwpAQCAtMjE1OCw3ICsyMTU4LDcgQEAgQWNjZXNzaWJpbGl0eU9iamVjdCogQWNj
ZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6YWNjZXNzaWJpbGl0eUltYWdlTWFwSGl0VGVzdChIVE0K
IAogICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudCA9IG51bGxwdHI7CiAgICAgZm9yIChF
bGVtZW50KiBtYXBQYXJlbnQgPSBhcmVhLT5wYXJlbnRFbGVtZW50KCk7IG1hcFBhcmVudDsgbWFw
UGFyZW50ID0gbWFwUGFyZW50LT5wYXJlbnRFbGVtZW50KCkpIHsKLSAgICAgICAgaWYgKGlzSFRN
TE1hcEVsZW1lbnQobWFwUGFyZW50KSkgeworICAgICAgICBpZiAoaXM8SFRNTE1hcEVsZW1lbnQ+
KG1hcFBhcmVudCkpIHsKICAgICAgICAgICAgIHBhcmVudCA9IGFjY2Vzc2liaWxpdHlQYXJlbnRG
b3JJbWFnZU1hcChkb3duY2FzdDxIVE1MTWFwRWxlbWVudD4obWFwUGFyZW50KSk7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgfQpAQCAtMjIwOCw3ICsyMjA4LDcgQEAgQWNjZXNzaWJpbGl0
eU9iamVjdCogQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6YWNjZXNzaWJpbGl0eUhpdFRlc3Qo
Y29uc3QgSW50UG8KICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgTm9kZSogbm9kZSA9IGhp
dFRlc3RSZXN1bHQuaW5uZXJOb2RlKCktPmRlcHJlY2F0ZWRTaGFkb3dBbmNlc3Rvck5vZGUoKTsK
IAotICAgIGlmIChpc0hUTUxBcmVhRWxlbWVudChub2RlKSkKKyAgICBpZiAoaXM8SFRNTEFyZWFF
bGVtZW50Pihub2RlKSkKICAgICAgICAgcmV0dXJuIGFjY2Vzc2liaWxpdHlJbWFnZU1hcEhpdFRl
c3QoZG93bmNhc3Q8SFRNTEFyZWFFbGVtZW50Pihub2RlKSwgcG9pbnQpOwogICAgIAogICAgIGlm
IChpczxIVE1MT3B0aW9uRWxlbWVudD4obm9kZSkpCkBAIC0yNTcyLDcgKzI1NzIsNyBAQCBBY2Nl
c3NpYmlsaXR5Um9sZSBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpkZXRlcm1pbmVBY2Nlc3Np
YmlsaXR5Um9sZSgpCiAgICAgaWYgKG5vZGUgJiYgbm9kZS0+aGFzVGFnTmFtZSh0clRhZykpCiAg
ICAgICAgIHJldHVybiBSb3dSb2xlOwogCi0gICAgaWYgKG5vZGUgJiYgaXNIVE1MVGFibGVFbGVt
ZW50KG5vZGUpKQorICAgIGlmIChub2RlICYmIGlzPEhUTUxUYWJsZUVsZW1lbnQ+KG5vZGUpKQog
ICAgICAgICByZXR1cm4gVGFibGVSb2xlOwogI2VuZGlmCiAKQEAgLTI1ODYsNyArMjU4Niw3IEBA
IEFjY2Vzc2liaWxpdHlSb2xlIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmRldGVybWluZUFj
Y2Vzc2liaWxpdHlSb2xlKCkKICAgICBpZiAobm9kZSAmJiBub2RlLT5oYXNUYWdOYW1lKHBUYWcp
KQogICAgICAgICByZXR1cm4gUGFyYWdyYXBoUm9sZTsKIAotICAgIGlmIChub2RlICYmIGlzSFRN
TExhYmVsRWxlbWVudChub2RlKSkKKyAgICBpZiAobm9kZSAmJiBpczxIVE1MTGFiZWxFbGVtZW50
Pihub2RlKSkKICAgICAgICAgcmV0dXJuIExhYmVsUm9sZTsKIAogICAgIGlmIChub2RlICYmIG5v
ZGUtPmhhc1RhZ05hbWUoZGZuVGFnKSkKQEAgLTI1OTUsNyArMjU5NSw3IEBAIEFjY2Vzc2liaWxp
dHlSb2xlIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmRldGVybWluZUFjY2Vzc2liaWxpdHlS
b2xlKCkKICAgICBpZiAobm9kZSAmJiBub2RlLT5oYXNUYWdOYW1lKGRpdlRhZykpCiAgICAgICAg
IHJldHVybiBEaXZSb2xlOwogCi0gICAgaWYgKG5vZGUgJiYgaXNIVE1MRm9ybUVsZW1lbnQobm9k
ZSkpCisgICAgaWYgKG5vZGUgJiYgaXM8SFRNTEZvcm1FbGVtZW50Pihub2RlKSkKICAgICAgICAg
cmV0dXJuIEZvcm1Sb2xlOwogCiAgICAgaWYgKG5vZGUgJiYgbm9kZS0+aGFzVGFnTmFtZShhcnRp
Y2xlVGFnKSkKQEAgLTI2MTcsOSArMjYxNyw5IEBAIEFjY2Vzc2liaWxpdHlSb2xlIEFjY2Vzc2li
aWxpdHlSZW5kZXJPYmplY3Q6OmRldGVybWluZUFjY2Vzc2liaWxpdHlSb2xlKCkKICAgICAgICAg
cmV0dXJuIExhbmRtYXJrQ29udGVudEluZm9Sb2xlOwogCiAjaWYgRU5BQkxFKFZJREVPKQotICAg
IGlmIChub2RlICYmIGlzSFRNTFZpZGVvRWxlbWVudChub2RlKSkKKyAgICBpZiAobm9kZSAmJiBp
czxIVE1MVmlkZW9FbGVtZW50Pihub2RlKSkKICAgICAgICAgcmV0dXJuIFZpZGVvUm9sZTsKLSAg
ICBpZiAobm9kZSAmJiBpc0hUTUxBdWRpb0VsZW1lbnQobm9kZSkpCisgICAgaWYgKG5vZGUgJiYg
aXM8SFRNTEF1ZGlvRWxlbWVudD4obm9kZSkpCiAgICAgICAgIHJldHVybiBBdWRpb1JvbGU7CiAj
ZW5kaWYKICAgICAKQEAgLTMyNjksNyArMzI2OSw3IEBAIFN0cmluZyBBY2Nlc3NpYmlsaXR5UmVu
ZGVyT2JqZWN0OjpzdHJpbmdWYWx1ZUZvck1TQUEoKSBjb25zdAogewogICAgIGlmIChpc0xpbmth
YmxlKCp0aGlzKSkgewogICAgICAgICBFbGVtZW50KiBhbmNob3IgPSBhbmNob3JFbGVtZW50KCk7
Ci0gICAgICAgIGlmIChhbmNob3IgJiYgaXNIVE1MQW5jaG9yRWxlbWVudChhbmNob3IpKQorICAg
ICAgICBpZiAoYW5jaG9yICYmIGlzPEhUTUxBbmNob3JFbGVtZW50PihhbmNob3IpKQogICAgICAg
ICAgICAgcmV0dXJuIGRvd25jYXN0PEhUTUxBbmNob3JFbGVtZW50PigqYW5jaG9yKS5ocmVmKCk7
CiAgICAgfQogCkBAIC0zMjgyLDcgKzMyODIsNyBAQCBib29sIEFjY2Vzc2liaWxpdHlSZW5kZXJP
YmplY3Q6OmlzTGlua2VkKCkgY29uc3QKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgRWxl
bWVudCogYW5jaG9yID0gYW5jaG9yRWxlbWVudCgpOwotICAgIGlmICghYW5jaG9yIHx8ICFpc0hU
TUxBbmNob3JFbGVtZW50KGFuY2hvcikpCisgICAgaWYgKCFhbmNob3IgfHwgIWlzPEhUTUxBbmNo
b3JFbGVtZW50PihhbmNob3IpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICByZXR1cm4g
IWRvd25jYXN0PEhUTUxBbmNob3JFbGVtZW50PigqYW5jaG9yKS5ocmVmKCkuaXNFbXB0eSgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFi
bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUu
Y3BwCmluZGV4IGUyNTQ0M2NmYzc2Yzc5NjA4NzI5Njc4ZDI3NmFkZmY0NWExYWVjYWMuLjZiN2U2
Y2Y0ZDQ3NjY4NTQyOTAxMDc1ODlmZjllOTI4MDE0ZWUwZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZS5jcHAKQEAgLTk2LDcgKzk2
LDcgQEAgSFRNTFRhYmxlRWxlbWVudCogQWNjZXNzaWJpbGl0eVRhYmxlOjp0YWJsZUVsZW1lbnQo
KSBjb25zdAogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAKICAgICBSZW5kZXJUYWJsZSog
dGFibGUgPSB0b1JlbmRlclRhYmxlKG1fcmVuZGVyZXIpOwotICAgIGlmICh0YWJsZS0+ZWxlbWVu
dCgpICYmIGlzSFRNTFRhYmxlRWxlbWVudCh0YWJsZS0+ZWxlbWVudCgpKSkKKyAgICBpZiAodGFi
bGUtPmVsZW1lbnQoKSAmJiBpczxIVE1MVGFibGVFbGVtZW50Pih0YWJsZS0+ZWxlbWVudCgpKSkK
ICAgICAgICAgcmV0dXJuIGRvd25jYXN0PEhUTUxUYWJsZUVsZW1lbnQ+KHRhYmxlLT5lbGVtZW50
KCkpOwogICAgIAogICAgIC8vIElmIHRoZSB0YWJsZSBoYXMgYSBkaXNwbGF5OnRhYmxlLXJvdy1n
cm91cCwgdGhlbiB0aGUgUmVuZGVyVGFibGUgZG9lcyBub3QgaGF2ZSBhIHBvaW50ZXIgdG8gaXQn
cyBIVE1MVGFibGVFbGVtZW50LgpAQCAtMTA2LDcgKzEwNiw3IEBAIEhUTUxUYWJsZUVsZW1lbnQq
IEFjY2Vzc2liaWxpdHlUYWJsZTo6dGFibGVFbGVtZW50KCkgY29uc3QKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgCiAgICAgRWxlbWVudCogYWN0dWFsVGFibGUgPSBmaXJzdEJvZHktPmVs
ZW1lbnQoKS0+cGFyZW50RWxlbWVudCgpOwotICAgIGlmICghYWN0dWFsVGFibGUgfHwgIWlzSFRN
TFRhYmxlRWxlbWVudChhY3R1YWxUYWJsZSkpCisgICAgaWYgKCFhY3R1YWxUYWJsZSB8fCAhaXM8
SFRNTFRhYmxlRWxlbWVudD4oYWN0dWFsVGFibGUpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
ICAgICAKICAgICByZXR1cm4gZG93bmNhc3Q8SFRNTFRhYmxlRWxlbWVudD4oYWN0dWFsVGFibGUp
OwpAQCAtMzI4LDcgKzMyOCw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0eVRhYmxlOjppc1RhYmxlRXhw
b3NhYmxlVGhyb3VnaEFjY2Vzc2liaWxpdHkoKSBjb25zdAogICAgIC8vIEd0aysgQVRzIGV4cGVj
dCBhbGwgdGFibGVzIHRvIGJlIGV4cG9zZWQgYXMgdGFibGVzLgogI2lmIFBMQVRGT1JNKEdUSykg
fHwgUExBVEZPUk0oRUZMKQogICAgIEVsZW1lbnQqIHRhYmxlTm9kZSA9IHRvUmVuZGVyVGFibGUo
bV9yZW5kZXJlciktPmVsZW1lbnQoKTsKLSAgICByZXR1cm4gdGFibGVOb2RlICYmIGlzSFRNTFRh
YmxlRWxlbWVudCh0YWJsZU5vZGUpOworICAgIHJldHVybiB0YWJsZU5vZGUgJiYgaXM8SFRNTFRh
YmxlRWxlbWVudD4odGFibGVOb2RlKTsKICNlbmRpZgogCiAgICAgcmV0dXJuIGlzRGF0YVRhYmxl
KCk7CkBAIC02MDcsNyArNjA3LDcgQEAgU3RyaW5nIEFjY2Vzc2liaWxpdHlUYWJsZTo6dGl0bGUo
KSBjb25zdAogICAgIAogICAgIC8vIHNlZSBpZiB0aGVyZSBpcyBhIGNhcHRpb24KICAgICBOb2Rl
KiB0YWJsZUVsZW1lbnQgPSBtX3JlbmRlcmVyLT5ub2RlKCk7Ci0gICAgaWYgKHRhYmxlRWxlbWVu
dCAmJiBpc0hUTUxUYWJsZUVsZW1lbnQodGFibGVFbGVtZW50KSkgeworICAgIGlmICh0YWJsZUVs
ZW1lbnQgJiYgaXM8SFRNTFRhYmxlRWxlbWVudD4odGFibGVFbGVtZW50KSkgewogICAgICAgICBp
ZiAoSFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQqIGNhcHRpb24gPSBkb3duY2FzdDxIVE1MVGFibGVF
bGVtZW50PigqdGFibGVFbGVtZW50KS5jYXB0aW9uKCkpCiAgICAgICAgICAgICB0aXRsZSA9IGNh
cHRpb24tPmlubmVyVGV4dCgpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VUYWJsZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlVGFi
bGUuY3BwCmluZGV4IDY1OWI4OGY4Yzc5YWJhMWM0MDEwMWI2OTkyOTE2ZDRlYjQ2MzcxNWQuLjM0
OTJiN2UwZWYyYzc3ZjlkNDNlOWM3NmJmYTZlODZlY2VmYzYwYzggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VUYWJs
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNz
aWJsZUludGVyZmFjZVRhYmxlLmNwcApAQCAtMjQ0LDcgKzI0NCw3IEBAIHN0YXRpYyBBdGtPYmpl
Y3QqIHdlYmtpdEFjY2Vzc2libGVUYWJsZUdldENhcHRpb24oQXRrVGFibGUqIHRhYmxlKQogICAg
IEFjY2Vzc2liaWxpdHlPYmplY3QqIGFjY1RhYmxlID0gY29yZSh0YWJsZSk7CiAgICAgaWYgKGFj
Y1RhYmxlLT5pc0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QoKSkgewogICAgICAgICBOb2RlKiBu
b2RlID0gYWNjVGFibGUtPm5vZGUoKTsKLSAgICAgICAgaWYgKG5vZGUgJiYgaXNIVE1MVGFibGVF
bGVtZW50KG5vZGUpKSB7CisgICAgICAgIGlmIChub2RlICYmIGlzPEhUTUxUYWJsZUVsZW1lbnQ+
KG5vZGUpKSB7CiAgICAgICAgICAgICBIVE1MVGFibGVDYXB0aW9uRWxlbWVudCogY2FwdGlvbiA9
IGRvd25jYXN0PEhUTUxUYWJsZUVsZW1lbnQ+KCpub2RlKS5jYXB0aW9uKCk7CiAgICAgICAgICAg
ICBpZiAoY2FwdGlvbikKICAgICAgICAgICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eU9iamVj
dDo6Zmlyc3RBY2Nlc3NpYmxlT2JqZWN0RnJvbU5vZGUoY2FwdGlvbi0+cmVuZGVyZXIoKS0+ZWxl
bWVudCgpKS0+d3JhcHBlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNIVE1MRG9jdW1lbnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNIVE1MRG9jdW1lbnRDdXN0b20uY3BwCmluZGV4IDc5NTNjNmNkNWJlMzVjYjVhODU0YmEwMDJk
ZjBlYzllOTFjNjFkZWEuLjUyMjFlMWRlZDU0YmFiOWYxZjhhODNhZDU2MDExZDZjOGRlZjQ5OWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTERvY3VtZW50Q3Vz
dG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxEb2N1bWVudEN1
c3RvbS5jcHAKQEAgLTczLDcgKzczLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNIVE1MRG9jdW1lbnQ6
Om5hbWVHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2UsIEUKICAgICB9
CiAKICAgICBFbGVtZW50KiBlbGVtZW50ID0gZG9jdW1lbnQuZG9jdW1lbnROYW1lZEl0ZW0oKmF0
b21pY1Byb3BlcnR5TmFtZSk7Ci0gICAgaWYgKFVOTElLRUxZKGlzSFRNTElGcmFtZUVsZW1lbnQo
ZWxlbWVudCkpKSB7CisgICAgaWYgKFVOTElLRUxZKGlzPEhUTUxJRnJhbWVFbGVtZW50PihlbGVt
ZW50KSkpIHsKICAgICAgICAgaWYgKEZyYW1lKiBmcmFtZSA9IGRvd25jYXN0PEhUTUxJRnJhbWVF
bGVtZW50PigqZWxlbWVudCkuY29udGVudEZyYW1lKCkpCiAgICAgICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHRvSlMoZXhlYywgZnJhbWUpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNOb2RlQ3VzdG9tLmNwcAppbmRleCAyZTFkMTI2NmUzYzIzYjgxNGRhOTlm
ZWY5ODE1ODZlZDc5NTNmZjAwLi43Y2FiMTg0YzNlMDU4YjhlZTI3YjI3MTA4N2ZkYTliNGQ0YzRk
MmQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVDdXN0b20u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUN1c3RvbS5jcHAKQEAg
LTEwNSwxMiArMTA1LDEyIEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc1JlYWNoYWJsZUZyb21ET00o
SlNOb2RlKiBqc05vZGUsIE5vZGUqIG5vZGUsIFNsb3RWaXNpdG9yJiB2CiAgICAgICAgICAgICAv
LyBiZWNhdXNlIGl0IGlzIHRoZSBvbmx5IHRoaW5nIGtlZXBpbmcgdGhlIGltYWdlIGVsZW1lbnQg
YWxpdmUsIGFuZCBpZgogICAgICAgICAgICAgLy8gdGhlIGVsZW1lbnQgaXMgZGVzdHJveWVkLCBp
dHMgbG9hZCBldmVudCB3aWxsIG5vdCBmaXJlLgogICAgICAgICAgICAgLy8gRklYTUU6IFRoZSBE
T00gc2hvdWxkIG1hbmFnZSB0aGlzIGlzc3VlIHdpdGhvdXQgdGhlIGhlbHAgb2YgSmF2YVNjcmlw
dCB3cmFwcGVycy4KLSAgICAgICAgICAgIGlmIChpc0hUTUxJbWFnZUVsZW1lbnQoZWxlbWVudCkp
IHsKKyAgICAgICAgICAgIGlmIChpczxIVE1MSW1hZ2VFbGVtZW50PihlbGVtZW50KSkgewogICAg
ICAgICAgICAgICAgIGlmIChkb3duY2FzdDxIVE1MSW1hZ2VFbGVtZW50PihlbGVtZW50KS5oYXNQ
ZW5kaW5nQWN0aXZpdHkoKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
ICAgICAgICB9CiAjaWYgRU5BQkxFKFZJREVPKQotICAgICAgICAgICAgZWxzZSBpZiAoaXNIVE1M
QXVkaW9FbGVtZW50KGVsZW1lbnQpKSB7CisgICAgICAgICAgICBlbHNlIGlmIChpczxIVE1MQXVk
aW9FbGVtZW50PihlbGVtZW50KSkgewogICAgICAgICAgICAgICAgIGlmICghZG93bmNhc3Q8SFRN
TEF1ZGlvRWxlbWVudD4oZWxlbWVudCkucGF1c2VkKCkpCiAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0RlZmF1bHRTdHlsZVNoZWV0cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRGVmYXVs
dFN0eWxlU2hlZXRzLmNwcAppbmRleCA3MzlhYTYxMGM5MDVkMjRhYzcwNmE0MmQ5ODJmMjdiYWNm
MGQyMjk4Li4xNjRlMmFmNWFlNWRkYzcwZDFlNWVkZTc1ODZmZDFlMDI0YmEzZjVkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRGVmYXVsdFN0eWxlU2hlZXRzLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTRGVmYXVsdFN0eWxlU2hlZXRzLmNwcApAQCAtNjQsNyArNjQs
NyBAQCBzdGF0aWMgY29uc3QgY2hhciogc2ltcGxlVXNlckFnZW50U3R5bGVTaGVldCA9ICJodG1s
LGJvZHksZGl2e2Rpc3BsYXk6YmxvY2t9aGVhZAogCiBzdGF0aWMgaW5saW5lIGJvb2wgZWxlbWVu
dENhblVzZVNpbXBsZURlZmF1bHRTdHlsZShFbGVtZW50KiBlKQogewotICAgIHJldHVybiBlLT5o
YXNUYWdOYW1lKGh0bWxUYWcpIHx8IGUtPmhhc1RhZ05hbWUoaGVhZFRhZykgfHwgZS0+aGFzVGFn
TmFtZShib2R5VGFnKSB8fCBlLT5oYXNUYWdOYW1lKGRpdlRhZykgfHwgZS0+aGFzVGFnTmFtZShz
cGFuVGFnKSB8fCBlLT5oYXNUYWdOYW1lKGJyVGFnKSB8fCBpc0hUTUxBbmNob3JFbGVtZW50KGUp
OworICAgIHJldHVybiBlLT5oYXNUYWdOYW1lKGh0bWxUYWcpIHx8IGUtPmhhc1RhZ05hbWUoaGVh
ZFRhZykgfHwgZS0+aGFzVGFnTmFtZShib2R5VGFnKSB8fCBlLT5oYXNUYWdOYW1lKGRpdlRhZykg
fHwgZS0+aGFzVGFnTmFtZShzcGFuVGFnKSB8fCBlLT5oYXNUYWdOYW1lKGJyVGFnKSB8fCBpczxI
VE1MQW5jaG9yRWxlbWVudD4oZSk7CiB9CiAKIHN0YXRpYyBjb25zdCBNZWRpYVF1ZXJ5RXZhbHVh
dG9yJiBzY3JlZW5FdmFsKCkKQEAgLTE3Miw3ICsxNzIsNyBAQCB2b2lkIENTU0RlZmF1bHRTdHls
ZVNoZWV0czo6ZW5zdXJlRGVmYXVsdFN0eWxlU2hlZXRzRm9yRWxlbWVudChFbGVtZW50KiBlbGVt
ZW50LAogI2VuZGlmCiAKICNpZiBFTkFCTEUoVklERU8pCi0gICAgaWYgKCFtZWRpYUNvbnRyb2xz
U3R5bGVTaGVldCAmJiAoZWxlbWVudC0+aGFzVGFnTmFtZSh2aWRlb1RhZykgfHwgaXNIVE1MQXVk
aW9FbGVtZW50KGVsZW1lbnQpKSkgeworICAgIGlmICghbWVkaWFDb250cm9sc1N0eWxlU2hlZXQg
JiYgKGlzPEhUTUxWaWRlb0VsZW1lbnQ+KGVsZW1lbnQpIHx8IGlzPEhUTUxBdWRpb0VsZW1lbnQ+
KGVsZW1lbnQpKSkgewogICAgICAgICBTdHJpbmcgbWVkaWFSdWxlcyA9IFJlbmRlclRoZW1lOjp0
aGVtZUZvclBhZ2UoZWxlbWVudC0+ZG9jdW1lbnQoKS5wYWdlKCkpLT5tZWRpYUNvbnRyb2xzU3R5
bGVTaGVldCgpOwogICAgICAgICBpZiAobWVkaWFSdWxlcy5pc0VtcHR5KCkpCiAgICAgICAgICAg
ICBtZWRpYVJ1bGVzID0gU3RyaW5nKG1lZGlhQ29udHJvbHNVc2VyQWdlbnRTdHlsZVNoZWV0LCBz
aXplb2YobWVkaWFDb250cm9sc1VzZXJBZ2VudFN0eWxlU2hlZXQpKSArIFJlbmRlclRoZW1lOjp0
aGVtZUZvclBhZ2UoZWxlbWVudC0+ZG9jdW1lbnQoKS5wYWdlKCkpLT5leHRyYU1lZGlhQ29udHJv
bHNTdHlsZVNoZWV0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVT
aGVldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5jcHAKaW5kZXggYjgz
ODM1NTJjODliM2FjMTE4OTFhYzZiMTM5NTA1OTk5NTE0ODU4Mi4uYWFkNmU1ODlmZjE1MWNiNjI2
NjZkNjllNGJlZjM3YzRkNjQzNGM1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1N0eWxlU2hlZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmNw
cApAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIk1lZGlhTGlzdC5oIgogI2luY2x1ZGUgIk5v
ZGUuaCIKICNpbmNsdWRlICJTVkdOYW1lcy5oIgorI2luY2x1ZGUgIlNWR1N0eWxlRWxlbWVudC5o
IgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiU3R5bGVSZXNvbHZlci5o
IgogI2luY2x1ZGUgIlN0eWxlUnVsZS5oIgpAQCAtNjcsOSArNjgsOSBAQCBzdGF0aWMgYm9vbCBp
c0FjY2VwdGFibGVDU1NTdHlsZVNoZWV0UGFyZW50KE5vZGUqIHBhcmVudE5vZGUpCiAgICAgLy8g
T25seSB0aGVzZSBub2RlcyBjYW4gYmUgcGFyZW50cyBvZiBTdHlsZVNoZWV0cywgYW5kIHRoZXkg
bmVlZCB0byBjYWxsIGNsZWFyT3duZXJOb2RlKCkgd2hlbiBtb3ZlZCBvdXQgb2YgZG9jdW1lbnQu
CiAgICAgcmV0dXJuICFwYXJlbnROb2RlCiAgICAgICAgIHx8IHBhcmVudE5vZGUtPmlzRG9jdW1l
bnROb2RlKCkKLSAgICAgICAgfHwgcGFyZW50Tm9kZS0+aGFzVGFnTmFtZShIVE1MTmFtZXM6Omxp
bmtUYWcpCi0gICAgICAgIHx8IGlzSFRNTFN0eWxlRWxlbWVudChwYXJlbnROb2RlKQotICAgICAg
ICB8fCBwYXJlbnROb2RlLT5oYXNUYWdOYW1lKFNWR05hbWVzOjpzdHlsZVRhZykKKyAgICAgICAg
fHwgaXM8SFRNTExpbmtFbGVtZW50PihwYXJlbnROb2RlKQorICAgICAgICB8fCBpczxIVE1MU3R5
bGVFbGVtZW50PihwYXJlbnROb2RlKQorICAgICAgICB8fCBpczxTVkdTdHlsZUVsZW1lbnQ+KHBh
cmVudE5vZGUpCiAgICAgICAgIHx8IHBhcmVudE5vZGUtPm5vZGVUeXBlKCkgPT0gTm9kZTo6UFJP
Q0VTU0lOR19JTlNUUlVDVElPTl9OT0RFOwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVS
ZXNvbHZlci5jcHAKaW5kZXggOTA3NjZiYjdjMWVkNWU0NGRhNTU0NzExNmQyNTlmNDFjMzg3ODdj
Ny4uNjdhOGQ3M2I4MGM5ZTNiYmI2YTkyZTYzM2U0ZjZhNzRhMGFmMDZiNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9TdHlsZVJlc29sdmVyLmNwcApAQCAtMTE3MCw3ICsxMTcwLDcgQEAgdm9pZCBTdHlsZVJl
c29sdmVyOjphZGp1c3RSZW5kZXJTdHlsZShSZW5kZXJTdHlsZSYgc3R5bGUsIGNvbnN0IFJlbmRl
clN0eWxlJiBwYXIKICAgICAgICAgICAgIGlmIChlLT5oYXNUYWdOYW1lKHRkVGFnKSkgewogICAg
ICAgICAgICAgICAgIHN0eWxlLnNldERpc3BsYXkoVEFCTEVfQ0VMTCk7CiAgICAgICAgICAgICAg
ICAgc3R5bGUuc2V0RmxvYXRpbmcoTm9GbG9hdCk7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKGlz
SFRNTFRhYmxlRWxlbWVudChlKSkKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoaXM8SFRNTFRhYmxl
RWxlbWVudD4oZSkpCiAgICAgICAgICAgICAgICAgc3R5bGUuc2V0RGlzcGxheShzdHlsZS5pc0Rp
c3BsYXlJbmxpbmVUeXBlKCkgPyBJTkxJTkVfVEFCTEUgOiBUQUJMRSk7CiAgICAgICAgIH0KIApA
QCAtMTE4Nyw3ICsxMTg3LDcgQEAgdm9pZCBTdHlsZVJlc29sdmVyOjphZGp1c3RSZW5kZXJTdHls
ZShSZW5kZXJTdHlsZSYgc3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlJiBwYXIKICAgICAgICAgfQog
CiAgICAgICAgIC8vIFRhYmxlcyBuZXZlciBzdXBwb3J0IHRoZSAtd2Via2l0LSogdmFsdWVzIGZv
ciB0ZXh0LWFsaWduIGFuZCB3aWxsIHJlc2V0IGJhY2sgdG8gdGhlIGRlZmF1bHQuCi0gICAgICAg
IGlmIChlICYmIGlzSFRNTFRhYmxlRWxlbWVudChlKSAmJiAoc3R5bGUudGV4dEFsaWduKCkgPT0g
V0VCS0lUX0xFRlQgfHwgc3R5bGUudGV4dEFsaWduKCkgPT0gV0VCS0lUX0NFTlRFUiB8fCBzdHls
ZS50ZXh0QWxpZ24oKSA9PSBXRUJLSVRfUklHSFQpKQorICAgICAgICBpZiAoZSAmJiBpczxIVE1M
VGFibGVFbGVtZW50PihlKSAmJiAoc3R5bGUudGV4dEFsaWduKCkgPT0gV0VCS0lUX0xFRlQgfHwg
c3R5bGUudGV4dEFsaWduKCkgPT0gV0VCS0lUX0NFTlRFUiB8fCBzdHlsZS50ZXh0QWxpZ24oKSA9
PSBXRUJLSVRfUklHSFQpKQogICAgICAgICAgICAgc3R5bGUuc2V0VGV4dEFsaWduKFRBU1RBUlQp
OwogCiAgICAgICAgIC8vIEZyYW1lcyBhbmQgZnJhbWVzZXRzIG5ldmVyIGhvbm9yIHBvc2l0aW9u
OnJlbGF0aXZlIG9yIHBvc2l0aW9uOmFic29sdXRlLiBUaGlzIGlzIG5lY2Vzc2FyeSB0bwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hlZXRMaXN0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9TdHlsZVNoZWV0TGlzdC5jcHAKaW5kZXggMDcyMDAzN2U5YTg3ZDAzNDBkZDEw
OTgwNDViZDgyYTMyM2VkYjJjZC4uZTkwMTZkOTVmMDViYWMzNGZkMjQwNDVhNWQyN2M1ZGI1MDk4
OWE2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hlZXRMaXN0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTaGVldExpc3QuY3BwCkBAIC03Niw3ICs3Niw3
IEBAIEhUTUxTdHlsZUVsZW1lbnQqIFN0eWxlU2hlZXRMaXN0OjpnZXROYW1lZEl0ZW0oY29uc3Qg
U3RyaW5nJiBuYW1lKSBjb25zdAogICAgIC8vIGFuZCBkb2Vzbid0IGxvb2sgZm9yIG5hbWUgYXR0
cmlidXRlLgogICAgIC8vIEJ1dCB1bmljaXR5IG9mIHN0eWxlc2hlZXQgaWRzIGlzIGdvb2QgcHJh
Y3RpY2UgYW55d2F5IDspCiAgICAgRWxlbWVudCogZWxlbWVudCA9IG1fZG9jdW1lbnQtPmdldEVs
ZW1lbnRCeUlkKG5hbWUpOwotICAgIGlmIChlbGVtZW50ICYmIGlzSFRNTFN0eWxlRWxlbWVudChl
bGVtZW50KSkKKyAgICBpZiAoZWxlbWVudCAmJiBpczxIVE1MU3R5bGVFbGVtZW50PihlbGVtZW50
KSkKICAgICAgICAgcmV0dXJuIGRvd25jYXN0PEhUTUxTdHlsZUVsZW1lbnQ+KGVsZW1lbnQpOwog
ICAgIHJldHVybiBudWxscHRyOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0N1
cnJlbnRTY3JpcHRJbmNyZW1lbnRlci5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0N1cnJlbnRTY3Jp
cHRJbmNyZW1lbnRlci5oCmluZGV4IDdjNDg4YzA3MTg3MmUyN2RjODM3NWY0MGMwOGU0YTA0NzZl
ZGI5YzcuLmJkN2RlMDcwZjRjYWM3N2Q3YjUxYjI5ZDBhNmZkMTEzNzdhY2M5OTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DdXJyZW50U2NyaXB0SW5jcmVtZW50ZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vQ3VycmVudFNjcmlwdEluY3JlbWVudGVyLmgKQEAgLTM5LDcgKzM5
LDcgQEAgY2xhc3MgQ3VycmVudFNjcmlwdEluY3JlbWVudGVyIHsKIHB1YmxpYzoKICAgICBDdXJy
ZW50U2NyaXB0SW5jcmVtZW50ZXIoRG9jdW1lbnQqIGRvY3VtZW50LCBFbGVtZW50KiBlbGVtZW50
KQogICAgICAgICA6IG1fZG9jdW1lbnQoZG9jdW1lbnQpCi0gICAgICAgICwgbV9pc0hUTUxTY3Jp
cHRFbGVtZW50KGlzSFRNTFNjcmlwdEVsZW1lbnQoZWxlbWVudCkpCisgICAgICAgICwgbV9pc0hU
TUxTY3JpcHRFbGVtZW50KGlzPEhUTUxTY3JpcHRFbGVtZW50PihlbGVtZW50KSkKICAgICB7CiAg
ICAgICAgIGlmIChtX2lzSFRNTFNjcmlwdEVsZW1lbnQpCiAgICAgICAgICAgICBtX2RvY3VtZW50
LT5wdXNoQ3VycmVudFNjcmlwdChkb3duY2FzdDxIVE1MU2NyaXB0RWxlbWVudD4oZWxlbWVudCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmNwcAppbmRleCBhYTAxYWUxMDlkNWVmMTJmOTJl
OGFjZWFlZmQ0YmU0NzFiYzA0Nzg5Li5jNzgzOTU5M2NkMzJiNjhhMGFiZTY2OGYwMTg3YTI4ZmIz
ZGQ3MjI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmNwcApAQCAtMjU0LDcgKzI1NCw3
IEBAIHZvaWQgRGF0YVRyYW5zZmVyOjpzZXREcmFnSW1hZ2UoRWxlbWVudCogZWxlbWVudCwgaW50
IHgsIGludCB5KQogICAgICAgICByZXR1cm47CiAKICAgICBDYWNoZWRJbWFnZSogaW1hZ2UgPSBu
dWxscHRyOwotICAgIGlmIChlbGVtZW50ICYmIGlzSFRNTEltYWdlRWxlbWVudChlbGVtZW50KSAm
JiAhZWxlbWVudC0+aW5Eb2N1bWVudCgpKQorICAgIGlmIChlbGVtZW50ICYmIGlzPEhUTUxJbWFn
ZUVsZW1lbnQ+KGVsZW1lbnQpICYmICFlbGVtZW50LT5pbkRvY3VtZW50KCkpCiAgICAgICAgIGlt
YWdlID0gZG93bmNhc3Q8SFRNTEltYWdlRWxlbWVudD4oKmVsZW1lbnQpLmNhY2hlZEltYWdlKCk7
CiAKICAgICBtX2RyYWdMb2NhdGlvbiA9IEludFBvaW50KHgsIHkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50T3JkZXJlZE1hcC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnRPcmRlcmVkTWFwLmNwcAppbmRleCA3N2VlYzNiNzVmNDlhODAwMjRkNmIwOTEx
NWMyM2ExOWZkMjliM2ZhLi4zNGNlOWMyZWFjOGRmMmQxYzk0NmZjNTFlYmRiMjQzYWU1ZDU4ZmVi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRPcmRlcmVkTWFwLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRPcmRlcmVkTWFwLmNwcApAQCAtNTMsMjMg
KzUzLDIzIEBAIGlubGluZSBib29sIGtleU1hdGNoZXNOYW1lKGNvbnN0IEF0b21pY1N0cmluZ0lt
cGwmIGtleSwgY29uc3QgRWxlbWVudCYgZWxlbWVudCkKIAogaW5saW5lIGJvb2wga2V5TWF0Y2hl
c01hcE5hbWUoY29uc3QgQXRvbWljU3RyaW5nSW1wbCYga2V5LCBjb25zdCBFbGVtZW50JiBlbGVt
ZW50KQogewotICAgIHJldHVybiBpc0hUTUxNYXBFbGVtZW50KGVsZW1lbnQpICYmIGRvd25jYXN0
PEhUTUxNYXBFbGVtZW50PihlbGVtZW50KS5nZXROYW1lKCkuaW1wbCgpID09ICZrZXk7CisgICAg
cmV0dXJuIGlzPEhUTUxNYXBFbGVtZW50PihlbGVtZW50KSAmJiBkb3duY2FzdDxIVE1MTWFwRWxl
bWVudD4oZWxlbWVudCkuZ2V0TmFtZSgpLmltcGwoKSA9PSAma2V5OwogfQogCiBpbmxpbmUgYm9v
bCBrZXlNYXRjaGVzTG93ZXJjYXNlZE1hcE5hbWUoY29uc3QgQXRvbWljU3RyaW5nSW1wbCYga2V5
LCBjb25zdCBFbGVtZW50JiBlbGVtZW50KQogewotICAgIHJldHVybiBpc0hUTUxNYXBFbGVtZW50
KGVsZW1lbnQpICYmIGRvd25jYXN0PEhUTUxNYXBFbGVtZW50PihlbGVtZW50KS5nZXROYW1lKCku
bG93ZXIoKS5pbXBsKCkgPT0gJmtleTsKKyAgICByZXR1cm4gaXM8SFRNTE1hcEVsZW1lbnQ+KGVs
ZW1lbnQpICYmIGRvd25jYXN0PEhUTUxNYXBFbGVtZW50PihlbGVtZW50KS5nZXROYW1lKCkubG93
ZXIoKS5pbXBsKCkgPT0gJmtleTsKIH0KIAogaW5saW5lIGJvb2wga2V5TWF0Y2hlc0xvd2VyY2Fz
ZWRVc2VtYXAoY29uc3QgQXRvbWljU3RyaW5nSW1wbCYga2V5LCBjb25zdCBFbGVtZW50JiBlbGVt
ZW50KQogewogICAgIC8vIEZJWE1FOiBIVE1MNSBzcGVjaWZpY2F0aW9uIHNheXMgd2Ugc2hvdWxk
IG1hdGNoIGJvdGggaW1hZ2UgYW5kIG9iamVjdCBlbGVtZW50cy4KLSAgICByZXR1cm4gaXNIVE1M
SW1hZ2VFbGVtZW50KGVsZW1lbnQpICYmIGRvd25jYXN0PEhUTUxJbWFnZUVsZW1lbnQ+KGVsZW1l
bnQpLm1hdGNoZXNMb3dlcmNhc2VkVXNlbWFwKGtleSk7CisgICAgcmV0dXJuIGlzPEhUTUxJbWFn
ZUVsZW1lbnQ+KGVsZW1lbnQpICYmIGRvd25jYXN0PEhUTUxJbWFnZUVsZW1lbnQ+KGVsZW1lbnQp
Lm1hdGNoZXNMb3dlcmNhc2VkVXNlbWFwKGtleSk7CiB9CiAKIGlubGluZSBib29sIGtleU1hdGNo
ZXNMYWJlbEZvckF0dHJpYnV0ZShjb25zdCBBdG9taWNTdHJpbmdJbXBsJiBrZXksIGNvbnN0IEVs
ZW1lbnQmIGVsZW1lbnQpCiB7Ci0gICAgcmV0dXJuIGlzSFRNTExhYmVsRWxlbWVudChlbGVtZW50
KSAmJiBlbGVtZW50LmZhc3RHZXRBdHRyaWJ1dGUoZm9yQXR0cikuaW1wbCgpID09ICZrZXk7Cisg
ICAgcmV0dXJuIGlzPEhUTUxMYWJlbEVsZW1lbnQ+KGVsZW1lbnQpICYmIGVsZW1lbnQuZmFzdEdl
dEF0dHJpYnV0ZShmb3JBdHRyKS5pbXBsKCkgPT0gJmtleTsKIH0KIAogaW5saW5lIGJvb2wga2V5
TWF0Y2hlc1dpbmRvd05hbWVkSXRlbShjb25zdCBBdG9taWNTdHJpbmdJbXBsJiBrZXksIGNvbnN0
IEVsZW1lbnQmIGVsZW1lbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnRTdHlsZVNoZWV0Q29sbGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRT
dHlsZVNoZWV0Q29sbGVjdGlvbi5jcHAKaW5kZXggODg5YWU2MmIwYjAwYjVkZjgyNzE2NmY0OTVi
MGNmYWM0MDViMjc0OC4uODNhNDMwMzRlZTFkZGU4ODVhNzQyYmM0MDg5OGZmMGRhNDE1M2FkZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rp
b24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0
aW9uLmNwcApAQCAtMjg0LDcgKzI4NCw3IEBAIHZvaWQgRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVj
dGlvbjo6Y29sbGVjdEFjdGl2ZVN0eWxlU2hlZXRzKFZlY3RvcjxSZWZQdHI8U3R5bGVTCiAgICAg
ICAgICAgICBFbGVtZW50JiBlbGVtZW50ID0gdG9FbGVtZW50KCpub2RlKTsKICAgICAgICAgICAg
IEF0b21pY1N0cmluZyB0aXRsZSA9IGVsZW1lbnQuZmFzdEdldEF0dHJpYnV0ZSh0aXRsZUF0dHIp
OwogICAgICAgICAgICAgYm9vbCBlbmFibGVkVmlhU2NyaXB0ID0gZmFsc2U7Ci0gICAgICAgICAg
ICBpZiAoaXNIVE1MTGlua0VsZW1lbnQoZWxlbWVudCkpIHsKKyAgICAgICAgICAgIGlmIChpczxI
VE1MTGlua0VsZW1lbnQ+KGVsZW1lbnQpKSB7CiAgICAgICAgICAgICAgICAgLy8gPExJTks+IGVs
ZW1lbnQKICAgICAgICAgICAgICAgICBIVE1MTGlua0VsZW1lbnQmIGxpbmtFbGVtZW50ID0gZG93
bmNhc3Q8SFRNTExpbmtFbGVtZW50PihlbGVtZW50KTsKICAgICAgICAgICAgICAgICBpZiAobGlu
a0VsZW1lbnQuaXNEaXNhYmxlZCgpKQpAQCAtMzA3LDcgKzMwNyw3IEBAIHZvaWQgRG9jdW1lbnRT
dHlsZVNoZWV0Q29sbGVjdGlvbjo6Y29sbGVjdEFjdGl2ZVN0eWxlU2hlZXRzKFZlY3RvcjxSZWZQ
dHI8U3R5bGVTCiAgICAgICAgICAgICAvLyBzZXQgb2Ygc2hlZXRzIHRoYXQgd2lsbCBiZSBlbmFi
bGVkLgogICAgICAgICAgICAgaWYgKGlzPFNWR1N0eWxlRWxlbWVudD4oZWxlbWVudCkpCiAgICAg
ICAgICAgICAgICAgc2hlZXQgPSBkb3duY2FzdDxTVkdTdHlsZUVsZW1lbnQ+KGVsZW1lbnQpLnNo
ZWV0KCk7Ci0gICAgICAgICAgICBlbHNlIGlmIChpc0hUTUxMaW5rRWxlbWVudChlbGVtZW50KSkK
KyAgICAgICAgICAgIGVsc2UgaWYgKGlzPEhUTUxMaW5rRWxlbWVudD4oZWxlbWVudCkpCiAgICAg
ICAgICAgICAgICAgc2hlZXQgPSBkb3duY2FzdDxIVE1MTGlua0VsZW1lbnQ+KGVsZW1lbnQpLnNo
ZWV0KCk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgc2hlZXQgPSBkb3duY2Fz
dDxIVE1MU3R5bGVFbGVtZW50PihlbGVtZW50KS5zaGVldCgpOwpAQCAtMzIyLDcgKzMyMiw3IEBA
IHZvaWQgRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbjo6Y29sbGVjdEFjdGl2ZVN0eWxlU2hl
ZXRzKFZlY3RvcjxSZWZQdHI8U3R5bGVTCiAgICAgICAgICAgICAgICAgICAgIC8vIHdlIGFyZSBO
T1QgYW4gYWx0ZXJuYXRlIHNoZWV0LCB0aGVuIGVzdGFibGlzaAogICAgICAgICAgICAgICAgICAg
ICAvLyB1cyBhcyB0aGUgcHJlZmVycmVkIHNldC4gT3RoZXJ3aXNlLCBqdXN0IGlnbm9yZQogICAg
ICAgICAgICAgICAgICAgICAvLyB0aGlzIHNoZWV0LgotICAgICAgICAgICAgICAgICAgICBpZiAo
aXNIVE1MU3R5bGVFbGVtZW50KGVsZW1lbnQpIHx8ICFyZWwuY29udGFpbnMoImFsdGVybmF0ZSIp
KQorICAgICAgICAgICAgICAgICAgICBpZiAoaXM8SFRNTFN0eWxlRWxlbWVudD4oZWxlbWVudCkg
fHwgIXJlbC5jb250YWlucygiYWx0ZXJuYXRlIikpCiAgICAgICAgICAgICAgICAgICAgICAgICBt
X3ByZWZlcnJlZFN0eWxlc2hlZXRTZXROYW1lID0gbV9zZWxlY3RlZFN0eWxlc2hlZXRTZXROYW1l
ID0gdGl0bGU7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGlmICh0aXRsZSAh
PSBtX3ByZWZlcnJlZFN0eWxlc2hlZXRTZXROYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL05vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCmluZGV4IGQxY2Ni
OTRmNDc5MzRlZTMyZDNiOTFhMmQ0YWQ2OWEwOGQ2NjM2MzUuLmQxNTAzZmY3NGI4OTc5YzRhYzkz
YjEyNTc3YjU0MGU3ZWIxZGEzYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2Rl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKQEAgLTE3MTYsNyArMTcxNiw3
IEBAIEVsZW1lbnQqIE5vZGU6OmVuY2xvc2luZ0xpbmtFdmVudFBhcmVudE9yU2VsZigpCiAgICAg
ICAgIC8vIEZvciBpbWFnZW1hcHMsIHRoZSBlbmNsb3NpbmcgbGluayBlbGVtZW50IGlzIHRoZSBh
c3NvY2lhdGVkIGFyZWEgZWxlbWVudCBub3QgdGhlIGltYWdlIGl0c2VsZi4KICAgICAgICAgLy8g
U28gd2UgZG9uJ3QgbGV0IGltYWdlcyBiZSB0aGUgZW5jbG9zaW5nIGxpbmsgZWxlbWVudCwgZXZl
biB0aG91Z2ggaXNMaW5rIHNvbWV0aW1lcyByZXR1cm5zCiAgICAgICAgIC8vIHRydWUgZm9yIHRo
ZW0uCi0gICAgICAgIGlmIChub2RlLT5pc0xpbmsoKSAmJiAhaXNIVE1MSW1hZ2VFbGVtZW50KG5v
ZGUpKQorICAgICAgICBpZiAobm9kZS0+aXNMaW5rKCkgJiYgIWlzPEhUTUxJbWFnZUVsZW1lbnQ+
KG5vZGUpKQogICAgICAgICAgICAgcmV0dXJuIHRvRWxlbWVudChub2RlKTsKICAgICB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vUG9zaXRpb24uY3BwCmluZGV4IDIzMmQ3NzcwM2E4ODgzZGZhYmEzMDVlZGVhNzg5ODli
ZTUzZDY2YzIuLjY3NmQxYzc0ODBlYmQ0MDk2OGEzYmE2ZTlmN2RhMTZhYjdkNjFkZGUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL1Bvc2l0aW9uLmNwcApAQCAtNTI5LDcgKzUyOSw3IEBAIHN0YXRpYyBib29sIGVuZHNP
Zk5vZGVBcmVWaXN1YWxseURpc3RpbmN0UG9zaXRpb25zKE5vZGUqIG5vZGUpCiAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgICAgICAKICAgICAvLyBEb24ndCBpbmNsdWRlIGlubGluZSB0YWJsZXMu
Ci0gICAgaWYgKGlzSFRNTFRhYmxlRWxlbWVudChub2RlKSkKKyAgICBpZiAoaXM8SFRNTFRhYmxl
RWxlbWVudD4obm9kZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKICAgICAvLyBUaGVy
ZSBpcyBhIFZpc2libGVQb3NpdGlvbiBpbnNpZGUgYW4gZW1wdHkgaW5saW5lLWJsb2NrIGNvbnRh
aW5lci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmNwcAppbmRleCBhNWMyZDMyYmZhMDY0
ZTNiNThkYTY2MGM5N2VkNjE5YTQxYmE2ZGY3Li5lN2E2NzE2ZDI5ZWViNmE1YzQzYWM0Mzk2YjNl
MzFmYTI5NDFlOWRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQuY3BwCkBAIC0zODIs
NyArMzgyLDcgQEAgU3RyaW5nIFNjcmlwdEVsZW1lbnQ6OnNjcmlwdENvbnRlbnQoKSBjb25zdAog
CiBTY3JpcHRFbGVtZW50KiB0b1NjcmlwdEVsZW1lbnRJZlBvc3NpYmxlKEVsZW1lbnQqIGVsZW1l
bnQpCiB7Ci0gICAgaWYgKGlzSFRNTFNjcmlwdEVsZW1lbnQoZWxlbWVudCkpCisgICAgaWYgKGlz
PEhUTUxTY3JpcHRFbGVtZW50PihlbGVtZW50KSkKICAgICAgICAgcmV0dXJuIGRvd25jYXN0PEhU
TUxTY3JpcHRFbGVtZW50PihlbGVtZW50KTsKIAogICAgIGlmIChpczxTVkdTY3JpcHRFbGVtZW50
PihlbGVtZW50KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9WaXNpdGVkTGlua1N0
YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9WaXNpdGVkTGlua1N0YXRlLmNwcAppbmRleCA0
YzIyZDAwNzM2ZGZmZTAzMjVlMWJhMTFjMDg4OTYwNGRlNjJlZTM1Li41ODY5MDlhNWMwYzk3MDU5
OTBkNDJjMGRiYjlmOGVlZWQ1ODg3NWM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
VmlzaXRlZExpbmtTdGF0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1Zpc2l0ZWRMaW5r
U3RhdGUuY3BwCkBAIC02OSw3ICs2OSw3IEBAIHZvaWQgVmlzaXRlZExpbmtTdGF0ZTo6aW52YWxp
ZGF0ZVN0eWxlRm9yQWxsTGlua3MoKQogCiBpbmxpbmUgc3RhdGljIExpbmtIYXNoIGxpbmtIYXNo
Rm9yRWxlbWVudChEb2N1bWVudCYgZG9jdW1lbnQsIEVsZW1lbnQmIGVsZW1lbnQpCiB7Ci0gICAg
aWYgKGlzSFRNTEFuY2hvckVsZW1lbnQoZWxlbWVudCkpCisgICAgaWYgKGlzPEhUTUxBbmNob3JF
bGVtZW50PihlbGVtZW50KSkKICAgICAgICAgcmV0dXJuIGRvd25jYXN0PEhUTUxBbmNob3JFbGVt
ZW50PihlbGVtZW50KS52aXNpdGVkTGlua0hhc2goKTsKICAgICBpZiAoY29uc3QgQXRvbWljU3Ry
aW5nKiBhdHRyaWJ1dGUgPSBsaW5rQXR0cmlidXRlKGVsZW1lbnQpKQogICAgICAgICByZXR1cm4g
V2ViQ29yZTo6dmlzaXRlZExpbmtIYXNoKGRvY3VtZW50LmJhc2VVUkwoKSwgKmF0dHJpYnV0ZSk7
CkBAIC0xMDAsNyArMTAwLDcgQEAgRUluc2lkZUxpbmsgVmlzaXRlZExpbmtTdGF0ZTo6ZGV0ZXJt
aW5lTGlua1N0YXRlU2xvd0Nhc2UoRWxlbWVudCYgZWxlbWVudCkKICAgICAgICAgcmV0dXJuIElu
c2lkZVZpc2l0ZWRMaW5rOwogCiAgICAgTGlua0hhc2ggaGFzaDsKLSAgICBpZiAoaXNIVE1MQW5j
aG9yRWxlbWVudChlbGVtZW50KSkKKyAgICBpZiAoaXM8SFRNTEFuY2hvckVsZW1lbnQ+KGVsZW1l
bnQpKQogICAgICAgICBoYXNoID0gZG93bmNhc3Q8SFRNTEFuY2hvckVsZW1lbnQ+KGVsZW1lbnQp
LnZpc2l0ZWRMaW5rSGFzaCgpOwogICAgIGVsc2UKICAgICAgICAgaGFzaCA9IFdlYkNvcmU6OnZp
c2l0ZWRMaW5rSGFzaChlbGVtZW50LmRvY3VtZW50KCkuYmFzZVVSTCgpLCAqYXR0cmlidXRlKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9tYWtlX25hbWVzLnBsIGIvU291cmNlL1dl
YkNvcmUvZG9tL21ha2VfbmFtZXMucGwKaW5kZXggNzk1N2VhNDRiZTY5NmQ0YjczOTQ3YTkwODBk
YzcwZTUzNzEzZjQ1Ny4uZmY1ZjE2NjNjN2EzZmRjY2Q1ZWU1NWJiY2Q0NmZmYzA3ZWNlOWI5OCAx
MDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL21ha2VfbmFtZXMucGwKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL21ha2VfbmFtZXMucGwKQEAgLTY1OSwxNSArNjU5LDcgQEAgRU5ECiB9Owog
RU5ECiAgICAgICAgOwotICAgICAgIGlmICgkcGFyYW1ldGVyc3tuYW1lc3BhY2V9IGVxICJIVE1M
IikgewotICAgICAgICAgICBwcmludCBGIDw8RU5ECi0vLyBGSVhNRTogUmVtb3ZlIHRoZXNlIG1h
Y3JvcyBvbmNlIHRoZSBjb2RlIGhhcyBiZWVuIHBvcnRlZCB0byB1c2luZwotLy8gaXM8KkVsZW1l
bnQ+KCkuCi0jZGVmaW5lIGlzJGNsYXNzKHgpIFdlYkNvcmU6OmlzPFdlYkNvcmU6OiRjbGFzcz4o
eCkKLUVORAotICAgICAgICAgICA7Ci0gICAgICAgIH0KLSAgICAgICAgcHJpbnQgRiAiXG4iOwor
ICAgICAgIHByaW50IEYgIlxuIjsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRGVsZXRlU2VsZWN0aW9uQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0RlbGV0ZVNlbGVjdGlvbkNvbW1hbmQuY3BwCmluZGV4IGY4YTY0NGEyNmE1NGQ5NTY2
MTEwZWUyZmNlN2RjODk2Mzk4Yjc0MDMuLjNhNTc5MzFmNjI1NDY3MmVhMzk0N2RkNjk4ZWZhYjFk
MzczMTcwMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRGVsZXRlU2VsZWN0
aW9uQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9EZWxldGVTZWxlY3Rp
b25Db21tYW5kLmNwcApAQCAtNDU3LDcgKzQ1Nyw3IEBAIHZvaWQgRGVsZXRlU2VsZWN0aW9uQ29t
bWFuZDo6aGFuZGxlR2VuZXJhbERlbGV0ZSgpCiAgICAgbWFrZVN0eWxpbmdFbGVtZW50c0RpcmVj
dENoaWxkcmVuT2ZFZGl0YWJsZVJvb3RUb1ByZXZlbnRTdHlsZUxvc3MoKTsKIAogICAgIC8vIE5l
dmVyIHJlbW92ZSB0aGUgc3RhcnQgYmxvY2sgdW5sZXNzIGl0J3MgYSB0YWJsZSwgaW4gd2hpY2gg
Y2FzZSB3ZSB3b24ndCBtZXJnZSBjb250ZW50IGluLgotICAgIGlmIChzdGFydE5vZGUgPT0gbV9z
dGFydEJsb2NrICYmIHN0YXJ0T2Zmc2V0ID09IDAgJiYgY2FuSGF2ZUNoaWxkcmVuRm9yRWRpdGlu
ZyhzdGFydE5vZGUpICYmICFpc0hUTUxUYWJsZUVsZW1lbnQoc3RhcnROb2RlKSkgeworICAgIGlm
IChzdGFydE5vZGUgPT0gbV9zdGFydEJsb2NrICYmICFzdGFydE9mZnNldCAmJiBjYW5IYXZlQ2hp
bGRyZW5Gb3JFZGl0aW5nKHN0YXJ0Tm9kZSkgJiYgIWlzPEhUTUxUYWJsZUVsZW1lbnQ+KHN0YXJ0
Tm9kZSkpIHsKICAgICAgICAgc3RhcnRPZmZzZXQgPSAwOwogICAgICAgICBzdGFydE5vZGUgPSBO
b2RlVHJhdmVyc2FsOjpuZXh0KHN0YXJ0Tm9kZSk7CiAgICAgICAgIGlmICghc3RhcnROb2RlKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCmluZGV4IDMwMmRlNDE4NjUzMDY1NmYzNjc4OGJiNzRh
YjA0NTJhZTA1MzYxMWIuLmU1YjViNzIyOTZhM2RiNDQ4MjkwMDBjYTEwNjIyMjRhY2FiOTZiMDMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKQEAgLTMzMCw3ICszMzAsNyBAQCBzdGF0aWMg
SFRNTEltYWdlRWxlbWVudCogaW1hZ2VFbGVtZW50RnJvbUltYWdlRG9jdW1lbnQoRG9jdW1lbnQm
IGRvY3VtZW50KQogICAgIE5vZGUqIG5vZGUgPSBib2R5LT5maXJzdENoaWxkKCk7CiAgICAgaWYg
KCFub2RlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBpZiAoIWlzSFRNTEltYWdlRWxl
bWVudChub2RlKSkKKyAgICBpZiAoIWlzPEhUTUxJbWFnZUVsZW1lbnQ+KG5vZGUpKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICAgICByZXR1cm4gZG93bmNhc3Q8SFRNTEltYWdlRWxlbWVudD4o
bm9kZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0
aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCmluZGV4
IDdlNjMzOTNiZjc1NGQ4YTMzZDFmNzk5MzdlYzhmNTYyZDRhNjBjNWEuLjY5MGI2OTE1ZjBkZGZm
ZGY3NmNiNzg5YzFkNDNhODk3MjY5N2ZjMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJh
bWVTZWxlY3Rpb24uY3BwCkBAIC0yMDIxLDcgKzIwMjEsNyBAQCBzdGF0aWMgSFRNTEZvcm1FbGVt
ZW50KiBzY2FuRm9yRm9ybShFbGVtZW50KiBzdGFydCkKICAgICBhdXRvIGRlc2NlbmRhbnRzID0g
ZGVzY2VuZGFudHNPZlR5cGU8SFRNTEVsZW1lbnQ+KHN0YXJ0LT5kb2N1bWVudCgpKTsKICAgICBm
b3IgKGF1dG8gaXQgPSBkZXNjZW5kYW50cy5mcm9tKCpzdGFydCksIGVuZCA9IGRlc2NlbmRhbnRz
LmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQpIHsKICAgICAgICAgSFRNTEVsZW1lbnQmIGVsZW1lbnQg
PSAqaXQ7Ci0gICAgICAgIGlmIChpc0hUTUxGb3JtRWxlbWVudCgmZWxlbWVudCkpCisgICAgICAg
IGlmIChpczxIVE1MRm9ybUVsZW1lbnQ+KCZlbGVtZW50KSkKICAgICAgICAgICAgIHJldHVybiBk
b3duY2FzdDxIVE1MRm9ybUVsZW1lbnQ+KCZlbGVtZW50KTsKICAgICAgICAgaWYgKGlzPEhUTUxG
b3JtQ29udHJvbEVsZW1lbnQ+KGVsZW1lbnQpKQogICAgICAgICAgICAgcmV0dXJuIGRvd25jYXN0
PEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ+KGVsZW1lbnQpLmZvcm0oKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0TGluZUJyZWFrQ29tbWFuZC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0luc2VydExpbmVCcmVha0NvbW1hbmQuY3BwCmluZGV4IGU1NjM5NTA5
YjBkY2E5NjZjM2U2MDIzY2Y2YWI0ZGQwMmNjYTFiZjEuLjExYTA3NDdhNzgyZGI4N2FlNmQ5YzVk
YmNiMmE3ZjY5ZDJhZGQ1OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5z
ZXJ0TGluZUJyZWFrQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9JbnNl
cnRMaW5lQnJlYWtDb21tYW5kLmNwcApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkZyYW1l
LmgiCiAjaW5jbHVkZSAiRnJhbWVTZWxlY3Rpb24uaCIKICNpbmNsdWRlICJIVE1MRWxlbWVudC5o
IgorI2luY2x1ZGUgIkhUTUxIUkVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNp
bmNsdWRlICJIVE1MVGFibGVFbGVtZW50LmgiCiAjaW5jbHVkZSAiUmVuZGVyRWxlbWVudC5oIgpA
QCAtMTE0LDcgKzExNSw3IEBAIHZvaWQgSW5zZXJ0TGluZUJyZWFrQ29tbWFuZDo6ZG9BcHBseSgp
CiAgICAgLy8gRklYTUU6IE5lZWQgdG8gbWVyZ2UgdGV4dCBub2RlcyB3aGVuIGluc2VydGluZyBq
dXN0IGFmdGVyIG9yIGJlZm9yZSB0ZXh0LgogICAgIAogICAgIGlmIChpc0VuZE9mUGFyYWdyYXBo
KGNhcmV0KSAmJiAhbGluZUJyZWFrRXhpc3RzQXRWaXNpYmxlUG9zaXRpb24oY2FyZXQpKSB7Ci0g
ICAgICAgIGJvb2wgbmVlZEV4dHJhTGluZUJyZWFrID0gIXBvcy5kZXByZWNhdGVkTm9kZSgpLT5o
YXNUYWdOYW1lKGhyVGFnKSAmJiAhaXNIVE1MVGFibGVFbGVtZW50KHBvcy5kZXByZWNhdGVkTm9k
ZSgpKTsKKyAgICAgICAgYm9vbCBuZWVkRXh0cmFMaW5lQnJlYWsgPSAhaXM8SFRNTEhSRWxlbWVu
dD4ocG9zLmRlcHJlY2F0ZWROb2RlKCkpICYmICFpczxIVE1MVGFibGVFbGVtZW50Pihwb3MuZGVw
cmVjYXRlZE5vZGUoKSk7CiAgICAgICAgIAogICAgICAgICBpbnNlcnROb2RlQXQobm9kZVRvSW5z
ZXJ0LmdldCgpLCBwb3MpOwogICAgICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvSW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9yQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0luc2VydFBhcmFncmFwaFNlcGFyYXRvckNvbW1hbmQuY3BwCmluZGV4IDdmYjc1
MDM4Yzk0NTg2NDAxYTc3MGMxMzcyOTA2NjdhMGQ1NTFiODIuLjQ5OWRhZDlhYjYzOGVlMWJkZWU0
ODE0NGQ1MzE0NGJiYjg1NjJkMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
SW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9yQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9JbnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3JDb21tYW5kLmNwcApAQCAtMTY5LDcgKzE2
OSw3IEBAIHZvaWQgSW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9yQ29tbWFuZDo6ZG9BcHBseSgpCiAg
ICAgaWYgKCFzdGFydEJsb2NrCiAgICAgICAgIHx8ICFzdGFydEJsb2NrLT5ub25TaGFkb3dCb3Vu
ZGFyeVBhcmVudE5vZGUoKQogICAgICAgICB8fCBpc1RhYmxlQ2VsbChzdGFydEJsb2NrLmdldCgp
KQotICAgICAgICB8fCBpc0hUTUxGb3JtRWxlbWVudChzdGFydEJsb2NrLmdldCgpKQorICAgICAg
ICB8fCBpczxIVE1MRm9ybUVsZW1lbnQ+KHN0YXJ0QmxvY2suZ2V0KCkpCiAgICAgICAgIC8vIEZJ
WE1FOiBJZiB0aGUgbm9kZSBpcyBoaWRkZW4sIHdlIGRvbid0IGhhdmUgYSBjYW5vbmljYWwgcG9z
aXRpb24gc28gd2Ugd2lsbCBkbyB0aGUgd3JvbmcgdGhpbmcgZm9yIHRhYmxlcyBhbmQgPGhyPi4g
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQwMzQyCiAgICAgICAgIHx8
ICghY2Fub25pY2FsUG9zLmlzTnVsbCgpICYmIGNhbm9uaWNhbFBvcy5kZXByZWNhdGVkTm9kZSgp
LT5yZW5kZXJlcigpICYmIGNhbm9uaWNhbFBvcy5kZXByZWNhdGVkTm9kZSgpLT5yZW5kZXJlcigp
LT5pc1RhYmxlKCkpCiAgICAgICAgIHx8ICghY2Fub25pY2FsUG9zLmlzTnVsbCgpICYmIGNhbm9u
aWNhbFBvcy5kZXByZWNhdGVkTm9kZSgpLT5oYXNUYWdOYW1lKGhyVGFnKSkpIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAKaW5kZXgg
MzExM2FmMzQwOTY2NGI0MGJmMTBmOGJjYzFjYWU4Njk0ZWNiNDgzNi4uODE2ZWEwYTZkYTUxMWQx
OTE4NDAxODMwMWIxYjQ5MDZlMGM1YjFhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAKQEAgLTcyMSw3ICs3MjEsNyBAQCBzdGF0
aWMgdm9pZCByZW1vdmVIZWFkQ29udGVudHMoUmVwbGFjZW1lbnRGcmFnbWVudCYgZnJhZ21lbnQp
CiAgICAgYXV0byBpdCA9IGRlc2NlbmRhbnRzT2ZUeXBlPEVsZW1lbnQ+KCpmcmFnbWVudC5mcmFn
bWVudCgpKS5iZWdpbigpOwogICAgIGF1dG8gZW5kID0gZGVzY2VuZGFudHNPZlR5cGU8RWxlbWVu
dD4oKmZyYWdtZW50LmZyYWdtZW50KCkpLmVuZCgpOwogICAgIHdoaWxlIChpdCAhPSBlbmQpIHsK
LSAgICAgICAgaWYgKGl0LT5oYXNUYWdOYW1lKGJhc2VUYWcpIHx8IGl0LT5oYXNUYWdOYW1lKGxp
bmtUYWcpIHx8IGl0LT5oYXNUYWdOYW1lKG1ldGFUYWcpIHx8IGl0LT5oYXNUYWdOYW1lKHN0eWxl
VGFnKSB8fCBpc0hUTUxUaXRsZUVsZW1lbnQoKml0KSkgeworICAgICAgICBpZiAoaXM8SFRNTEJh
c2VFbGVtZW50PigqaXQpIHx8IGlzPEhUTUxMaW5rRWxlbWVudD4oKml0KSB8fCBpczxIVE1MTWV0
YUVsZW1lbnQ+KCppdCkgfHwgaXM8SFRNTFN0eWxlRWxlbWVudD4oKml0KSB8fCBpczxIVE1MVGl0
bGVFbGVtZW50PigqaXQpKSB7CiAgICAgICAgICAgICB0b1JlbW92ZS5hcHBlbmQoJippdCk7CiAg
ICAgICAgICAgICBpdC50cmF2ZXJzZU5leHRTa2lwcGluZ0NoaWxkcmVuKCk7CiAgICAgICAgICAg
ICBjb250aW51ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRN
TENvbnZlcnRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRl
ci5tbQppbmRleCAzYmNhOTQ3NDEyMmQzYTFjMWY1OTJhYTlkM2YzMDI2N2QzNTE5MmQxLi4wNzlk
Yjk0NDE0OWRmZjA0MTY2YjBhMDUxMTAyMTVkOTJlMzI2YzFmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCkBAIC0yMDM0LDcgKzIwMzQsNyBAQCBC
T09MIEhUTUxDb252ZXJ0ZXI6Ol9wcm9jZXNzRWxlbWVudChFbGVtZW50JiBlbGVtZW50LCBOU0lu
dGVnZXIgZGVwdGgpCiAgICAgICAgIGlmICghbGlzdFN0eWxlVHlwZS5sZW5ndGgoKSkKICAgICAg
ICAgICAgIGxpc3RTdHlsZVR5cGUgPSAiZGVjaW1hbCI7CiAgICAgICAgIGxpc3QgPSBhZG9wdE5T
KFtbUGxhdGZvcm1OU1RleHRMaXN0IGFsbG9jXSBpbml0V2l0aE1hcmtlckZvcm1hdDpTdHJpbmco
InsiICsgbGlzdFN0eWxlVHlwZSArICJ9Iikgb3B0aW9uczowXSk7Ci0gICAgICAgIGlmIChpc0hU
TUxPTGlzdEVsZW1lbnQoZWxlbWVudCkpIHsKKyAgICAgICAgaWYgKGlzPEhUTUxPTGlzdEVsZW1l
bnQ+KGVsZW1lbnQpKSB7CiAgICAgICAgICAgICBOU0ludGVnZXIgc3RhcnRpbmdJdGVtTnVtYmVy
ID0gZG93bmNhc3Q8SFRNTE9MaXN0RWxlbWVudD4oZWxlbWVudCkuc3RhcnQoKTsKICAgICAgICAg
ICAgIFtsaXN0IHNldFN0YXJ0aW5nSXRlbU51bWJlcjpzdGFydGluZ0l0ZW1OdW1iZXJdOwogICAg
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2h0bWxlZGl0aW5nLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcuY3BwCmluZGV4IGU4YzYwOGJi
OTUxYThlY2UxMWE5MGRlMTllNDRmOWUzYTIxZWEzY2UuLjVlOGY1OTVkMmQyZjJiODk4NWIzMjIz
YmZhNzBlMjcxOWUwODU0NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaHRt
bGVkaXRpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcuY3Bw
CkBAIC0xMjA0LDcgKzEyMDQsNyBAQCBib29sIGlzTm9uVGFibGVDZWxsSFRNTEJsb2NrRWxlbWVu
dChjb25zdCBOb2RlKiBub2RlKQogICAgIHJldHVybiBlbGVtZW50LT5oYXNUYWdOYW1lKGxpc3Rp
bmdUYWcpCiAgICAgICAgIHx8IGVsZW1lbnQtPmhhc1RhZ05hbWUob2xUYWcpCiAgICAgICAgIHx8
IGVsZW1lbnQtPmhhc1RhZ05hbWUocHJlVGFnKQotICAgICAgICB8fCBpc0hUTUxUYWJsZUVsZW1l
bnQoZWxlbWVudCkKKyAgICAgICAgfHwgaXM8SFRNTFRhYmxlRWxlbWVudD4oZWxlbWVudCkKICAg
ICAgICAgfHwgZWxlbWVudC0+aGFzVGFnTmFtZSh1bFRhZykKICAgICAgICAgfHwgZWxlbWVudC0+
aGFzVGFnTmFtZSh4bXBUYWcpCiAgICAgICAgIHx8IGVsZW1lbnQtPmhhc1RhZ05hbWUoaDFUYWcp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKaW5kZXggNTZjNzAwNzNiNjNkNWQ5MmRhYTJkZmM4
ZTI1MTIzNDZhY2E3NmQyYi4uMDlmNDY4NzI0Y2I3NjM1MjE5ZWNkZTAzNjRmMTFmNmZjNDNmYWNh
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcApAQCAtNDUyLDcgKzQ1Miw3IEBAIHN0YXRp
YyBOb2RlKiBhbmNlc3RvclRvUmV0YWluU3RydWN0dXJlQW5kQXBwZWFyYW5jZUZvckJsb2NrKE5v
ZGUqIGNvbW1vbkFuY2VzdG9yCiAKICAgICBpZiAoY29tbW9uQW5jZXN0b3JCbG9jay0+aGFzVGFn
TmFtZSh0Ym9keVRhZykgfHwgY29tbW9uQW5jZXN0b3JCbG9jay0+aGFzVGFnTmFtZSh0clRhZykp
IHsKICAgICAgICAgQ29udGFpbmVyTm9kZSogdGFibGUgPSBjb21tb25BbmNlc3RvckJsb2NrLT5w
YXJlbnROb2RlKCk7Ci0gICAgICAgIHdoaWxlICh0YWJsZSAmJiAhaXNIVE1MVGFibGVFbGVtZW50
KHRhYmxlKSkKKyAgICAgICAgd2hpbGUgKHRhYmxlICYmICFpczxIVE1MVGFibGVFbGVtZW50Pih0
YWJsZSkpCiAgICAgICAgICAgICB0YWJsZSA9IHRhYmxlLT5wYXJlbnROb2RlKCk7CiAKICAgICAg
ICAgcmV0dXJuIHRhYmxlOwpAQCAtOTM0LDcgKzkzNCw3IEBAIHN0YXRpYyBWZWN0b3I8UmVmPEhU
TUxFbGVtZW50Pj4gY29sbGVjdEVsZW1lbnRzVG9SZW1vdmVGcm9tRnJhZ21lbnQoQ29udGFpbmVy
Tm9kCiAgICAgICAgICAgICBjb2xsZWN0RWxlbWVudHNUb1JlbW92ZUZyb21GcmFnbWVudChlbGVt
ZW50KTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9Ci0gICAgICAgIGlmIChpc0hU
TUxIZWFkRWxlbWVudChlbGVtZW50KSB8fCBpc0hUTUxCb2R5RWxlbWVudChlbGVtZW50KSkKKyAg
ICAgICAgaWYgKGlzPEhUTUxIZWFkRWxlbWVudD4oZWxlbWVudCkgfHwgaXM8SFRNTEJvZHlFbGVt
ZW50PihlbGVtZW50KSkKICAgICAgICAgICAgIHRvUmVtb3ZlLmFwcGVuZChlbGVtZW50KTsKICAg
ICB9CiAgICAgcmV0dXJuIHRvUmVtb3ZlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZUUERpcmVj
dG9yeURvY3VtZW50LmNwcAppbmRleCBkNmYxNGQ3MzUzNTMyMzY5MWZjOTZmOGIwZjhmY2YzYjM4
Njg4Zjg5Li45YjBmZGVhOTk2MDc4NWZlNTllNDRkZWQwOTlkMTU3MjFmOWQzNTBkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmNwcApAQCAtMzAwLDcgKzMw
MCw3IEBAIGJvb2wgRlRQRGlyZWN0b3J5RG9jdW1lbnRQYXJzZXI6OmxvYWREb2N1bWVudFRlbXBs
YXRlKCkKICAgICBSZWZQdHI8RWxlbWVudD4gdGFibGVFbGVtZW50ID0gZG9jdW1lbnQoKS0+Z2V0
RWxlbWVudEJ5SWQoU3RyaW5nKEFTQ0lJTGl0ZXJhbCgiZnRwRGlyZWN0b3J5VGFibGUiKSkpOwog
ICAgIGlmICghdGFibGVFbGVtZW50KQogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBmaW5k
IGVsZW1lbnQgYnkgaWQgXCJmdHBEaXJlY3RvcnlUYWJsZVwiIGluIHRoZSB0ZW1wbGF0ZSBkb2N1
bWVudC4iKTsKLSAgICBlbHNlIGlmICghaXNIVE1MVGFibGVFbGVtZW50KHRhYmxlRWxlbWVudC5n
ZXQoKSkpCisgICAgZWxzZSBpZiAoIWlzPEhUTUxUYWJsZUVsZW1lbnQ+KHRhYmxlRWxlbWVudC5n
ZXQoKSkpCiAgICAgICAgIExPR19FUlJPUigiRWxlbWVudCBvZiBpZCBcImZ0cERpcmVjdG9yeVRh
YmxlXCIgaXMgbm90IGEgdGFibGUgZWxlbWVudCIpOwogICAgIGVsc2UgCiAgICAgICAgIG1fdGFi
bGVFbGVtZW50ID0gZG93bmNhc3Q8SFRNTFRhYmxlRWxlbWVudD4odGFibGVFbGVtZW50LmdldCgp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUFzc29jaWF0ZWRFbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUFzc29jaWF0ZWRFbGVtZW50LmNwcAppbmRl
eCA5ZGY0MDU5ODkyNDk4Y2VkY2YyMzZkYzQ2YWNlYTNkYTEwM2QxMWE3Li43MDQ1YThmNWU4ZWNj
Yjc1N2ZmYzA3NzQ1YjIxNmQ1ODAwYTY3MGZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0Zvcm1Bc3NvY2lhdGVkRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9G
b3JtQXNzb2NpYXRlZEVsZW1lbnQuY3BwCkBAIC05OCw3ICs5OCw3IEBAIEhUTUxGb3JtRWxlbWVu
dCogRm9ybUFzc29jaWF0ZWRFbGVtZW50OjpmaW5kQXNzb2NpYXRlZEZvcm0oY29uc3QgSFRNTEVs
ZW1lbnQqIGVsCiAgICAgICAgIC8vIHRyZWVTY29wZSgpLmdldEVsZW1lbnRCeUlkKCkgb3ZlciB0
aGUgZ2l2ZW4gZWxlbWVudC4KICAgICAgICAgSFRNTEZvcm1FbGVtZW50KiBuZXdGb3JtID0gbnVs
bHB0cjsKICAgICAgICAgRWxlbWVudCogbmV3Rm9ybUNhbmRpZGF0ZSA9IGVsZW1lbnQtPnRyZWVT
Y29wZSgpLmdldEVsZW1lbnRCeUlkKGZvcm1JZCk7Ci0gICAgICAgIGlmIChuZXdGb3JtQ2FuZGlk
YXRlICYmIGlzSFRNTEZvcm1FbGVtZW50KG5ld0Zvcm1DYW5kaWRhdGUpKQorICAgICAgICBpZiAo
bmV3Rm9ybUNhbmRpZGF0ZSAmJiBpczxIVE1MRm9ybUVsZW1lbnQ+KG5ld0Zvcm1DYW5kaWRhdGUp
KQogICAgICAgICAgICAgbmV3Rm9ybSA9IGRvd25jYXN0PEhUTUxGb3JtRWxlbWVudD4obmV3Rm9y
bUNhbmRpZGF0ZSk7CiAgICAgICAgIHJldHVybiBuZXdGb3JtOwogICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHAKaW5kZXggMzRhZmViOWY4OWZkM2YyMzgxOTg0
NTQ3YzcwMjQ3MzA1YjhkMzg5ZS4uNjU1YWFiMDhiYWJhZmFiYjgzYTk5ZDk1NzZlOTNhMTVjZGEx
NWM0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHAKQEAgLTE1
OCw3ICsxNTgsNyBAQCBzdGF0aWMgdm9pZCBhcHBlbmRTZXJ2ZXJNYXBNb3VzZVBvc2l0aW9uKFN0
cmluZ0J1aWxkZXImIHVybCwgRXZlbnQqIGV2ZW50KQogICAgIEFTU0VSVChldmVudC0+dGFyZ2V0
KCkpOwogICAgIE5vZGUqIHRhcmdldCA9IGV2ZW50LT50YXJnZXQoKS0+dG9Ob2RlKCk7CiAgICAg
QVNTRVJUKHRhcmdldCk7Ci0gICAgaWYgKCFpc0hUTUxJbWFnZUVsZW1lbnQodGFyZ2V0KSkKKyAg
ICBpZiAoIWlzPEhUTUxJbWFnZUVsZW1lbnQ+KHRhcmdldCkpCiAgICAgICAgIHJldHVybjsKIAog
ICAgIEhUTUxJbWFnZUVsZW1lbnQmIGltYWdlRWxlbWVudCA9IGRvd25jYXN0PEhUTUxJbWFnZUVs
ZW1lbnQ+KCp0YXJnZXQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXJl
YUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXJlYUVsZW1lbnQuY3BwCmlu
ZGV4IGRkODRiZGM2ODQwYzdhYjc2OTQxM2ZmZDFmMWEzNzNjMTY5NTc0MDcuLmIxMTUzZTc1M2Qw
OWM5ZWU0ZTk4YWJhYjlmZDc5NjExZDA3NWQyMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEFyZWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxB
cmVhRWxlbWVudC5jcHAKQEAgLTE4Miw3ICsxODIsNyBAQCBQYXRoIEhUTUxBcmVhRWxlbWVudDo6
Z2V0UmVnaW9uKGNvbnN0IExheW91dFNpemUmIHNpemUpIGNvbnN0CiBIVE1MSW1hZ2VFbGVtZW50
KiBIVE1MQXJlYUVsZW1lbnQ6OmltYWdlRWxlbWVudCgpIGNvbnN0CiB7CiAgICAgTm9kZSogbWFw
RWxlbWVudCA9IHBhcmVudE5vZGUoKTsKLSAgICBpZiAoIW1hcEVsZW1lbnQgfHwgIWlzSFRNTE1h
cEVsZW1lbnQobWFwRWxlbWVudCkpCisgICAgaWYgKCFtYXBFbGVtZW50IHx8ICFpczxIVE1MTWFw
RWxlbWVudD4obWFwRWxlbWVudCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIAogICAg
IHJldHVybiBkb3duY2FzdDxIVE1MTWFwRWxlbWVudD4oKm1hcEVsZW1lbnQpLmltYWdlRWxlbWVu
dCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnQuY3BwCmluZGV4IDBjZTJiMDZmZmU4NTg2
MWYzNmVkNTEwNTIwMmRjZWRhZTc0ZDczZTcuLmIyZDY1OTVlYjE5NDRlYWMzMzFlMDI3OTg4YjQx
YjUyNGI1NGM1MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudC5jcHAKQEAgLTEzOSw3
ICsxMzksNyBAQCB2b2lkIEhUTUxEb2N1bWVudDo6c2V0RGVzaWduTW9kZShjb25zdCBTdHJpbmcm
IHZhbHVlKQogY29uc3QgQXRvbWljU3RyaW5nJiBIVE1MRG9jdW1lbnQ6OmJnQ29sb3IoKSBjb25z
dAogewogICAgIEhUTUxFbGVtZW50KiBib2R5RWxlbWVudCA9IGJvZHkoKTsKLSAgICBpZiAoIWJv
ZHlFbGVtZW50IHx8ICFpc0hUTUxCb2R5RWxlbWVudChib2R5RWxlbWVudCkpCisgICAgaWYgKCFi
b2R5RWxlbWVudCB8fCAhaXM8SFRNTEJvZHlFbGVtZW50Pihib2R5RWxlbWVudCkpCiAgICAgICAg
IHJldHVybiBlbXB0eUF0b207CiAgICAgcmV0dXJuIGJvZHlFbGVtZW50LT5mYXN0R2V0QXR0cmli
dXRlKGJnY29sb3JBdHRyKTsKIH0KQEAgLTE0Nyw3ICsxNDcsNyBAQCBjb25zdCBBdG9taWNTdHJp
bmcmIEhUTUxEb2N1bWVudDo6YmdDb2xvcigpIGNvbnN0CiB2b2lkIEhUTUxEb2N1bWVudDo6c2V0
QmdDb2xvcihjb25zdCBTdHJpbmcmIHZhbHVlKQogewogICAgIEhUTUxFbGVtZW50KiBib2R5RWxl
bWVudCA9IGJvZHkoKTsKLSAgICBpZiAoIWJvZHlFbGVtZW50IHx8ICFpc0hUTUxCb2R5RWxlbWVu
dChib2R5RWxlbWVudCkpCisgICAgaWYgKCFib2R5RWxlbWVudCB8fCAhaXM8SFRNTEJvZHlFbGVt
ZW50Pihib2R5RWxlbWVudCkpCiAgICAgICAgIHJldHVybjsKICAgICBib2R5RWxlbWVudC0+c2V0
QXR0cmlidXRlKGJnY29sb3JBdHRyLCB2YWx1ZSk7CiB9CkBAIC0xNTUsNyArMTU1LDcgQEAgdm9p
ZCBIVE1MRG9jdW1lbnQ6OnNldEJnQ29sb3IoY29uc3QgU3RyaW5nJiB2YWx1ZSkKIGNvbnN0IEF0
b21pY1N0cmluZyYgSFRNTERvY3VtZW50OjpmZ0NvbG9yKCkgY29uc3QKIHsKICAgICBIVE1MRWxl
bWVudCogYm9keUVsZW1lbnQgPSBib2R5KCk7Ci0gICAgaWYgKCFib2R5RWxlbWVudCB8fCAhaXNI
VE1MQm9keUVsZW1lbnQoYm9keUVsZW1lbnQpKQorICAgIGlmICghYm9keUVsZW1lbnQgfHwgIWlz
PEhUTUxCb2R5RWxlbWVudD4oYm9keUVsZW1lbnQpKQogICAgICAgICByZXR1cm4gZW1wdHlBdG9t
OwogICAgIHJldHVybiBib2R5RWxlbWVudC0+ZmFzdEdldEF0dHJpYnV0ZSh0ZXh0QXR0cik7CiB9
CkBAIC0xNjMsNyArMTYzLDcgQEAgY29uc3QgQXRvbWljU3RyaW5nJiBIVE1MRG9jdW1lbnQ6OmZn
Q29sb3IoKSBjb25zdAogdm9pZCBIVE1MRG9jdW1lbnQ6OnNldEZnQ29sb3IoY29uc3QgU3RyaW5n
JiB2YWx1ZSkKIHsKICAgICBIVE1MRWxlbWVudCogYm9keUVsZW1lbnQgPSBib2R5KCk7Ci0gICAg
aWYgKCFib2R5RWxlbWVudCB8fCAhaXNIVE1MQm9keUVsZW1lbnQoYm9keUVsZW1lbnQpKQorICAg
IGlmICghYm9keUVsZW1lbnQgfHwgIWlzPEhUTUxCb2R5RWxlbWVudD4oYm9keUVsZW1lbnQpKQog
ICAgICAgICByZXR1cm47CiAgICAgYm9keUVsZW1lbnQtPnNldEF0dHJpYnV0ZSh0ZXh0QXR0ciwg
dmFsdWUpOwogfQpAQCAtMTcxLDcgKzE3MSw3IEBAIHZvaWQgSFRNTERvY3VtZW50OjpzZXRGZ0Nv
bG9yKGNvbnN0IFN0cmluZyYgdmFsdWUpCiBjb25zdCBBdG9taWNTdHJpbmcmIEhUTUxEb2N1bWVu
dDo6YWxpbmtDb2xvcigpIGNvbnN0CiB7CiAgICAgSFRNTEVsZW1lbnQqIGJvZHlFbGVtZW50ID0g
Ym9keSgpOwotICAgIGlmICghYm9keUVsZW1lbnQgfHwgIWlzSFRNTEJvZHlFbGVtZW50KGJvZHlF
bGVtZW50KSkKKyAgICBpZiAoIWJvZHlFbGVtZW50IHx8ICFpczxIVE1MQm9keUVsZW1lbnQ+KGJv
ZHlFbGVtZW50KSkKICAgICAgICAgcmV0dXJuIGVtcHR5QXRvbTsKICAgICByZXR1cm4gYm9keUVs
ZW1lbnQtPmZhc3RHZXRBdHRyaWJ1dGUoYWxpbmtBdHRyKTsKIH0KQEAgLTE3OSw3ICsxNzksNyBA
QCBjb25zdCBBdG9taWNTdHJpbmcmIEhUTUxEb2N1bWVudDo6YWxpbmtDb2xvcigpIGNvbnN0CiB2
b2lkIEhUTUxEb2N1bWVudDo6c2V0QWxpbmtDb2xvcihjb25zdCBTdHJpbmcmIHZhbHVlKQogewog
ICAgIEhUTUxFbGVtZW50KiBib2R5RWxlbWVudCA9IGJvZHkoKTsKLSAgICBpZiAoIWJvZHlFbGVt
ZW50IHx8ICFpc0hUTUxCb2R5RWxlbWVudChib2R5RWxlbWVudCkpCisgICAgaWYgKCFib2R5RWxl
bWVudCB8fCAhaXM8SFRNTEJvZHlFbGVtZW50Pihib2R5RWxlbWVudCkpCiAgICAgICAgIHJldHVy
bjsKICAgICBib2R5RWxlbWVudC0+c2V0QXR0cmlidXRlKGFsaW5rQXR0ciwgdmFsdWUpOwogfQpA
QCAtMTg3LDcgKzE4Nyw3IEBAIHZvaWQgSFRNTERvY3VtZW50OjpzZXRBbGlua0NvbG9yKGNvbnN0
IFN0cmluZyYgdmFsdWUpCiBjb25zdCBBdG9taWNTdHJpbmcmIEhUTUxEb2N1bWVudDo6bGlua0Nv
bG9yKCkgY29uc3QKIHsKICAgICBIVE1MRWxlbWVudCogYm9keUVsZW1lbnQgPSBib2R5KCk7Ci0g
ICAgaWYgKCFib2R5RWxlbWVudCB8fCAhaXNIVE1MQm9keUVsZW1lbnQoYm9keUVsZW1lbnQpKQor
ICAgIGlmICghYm9keUVsZW1lbnQgfHwgIWlzPEhUTUxCb2R5RWxlbWVudD4oYm9keUVsZW1lbnQp
KQogICAgICAgICByZXR1cm4gZW1wdHlBdG9tOwogICAgIHJldHVybiBib2R5RWxlbWVudC0+ZmFz
dEdldEF0dHJpYnV0ZShsaW5rQXR0cik7CiB9CkBAIC0xOTUsNyArMTk1LDcgQEAgY29uc3QgQXRv
bWljU3RyaW5nJiBIVE1MRG9jdW1lbnQ6OmxpbmtDb2xvcigpIGNvbnN0CiB2b2lkIEhUTUxEb2N1
bWVudDo6c2V0TGlua0NvbG9yKGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7CiAgICAgSFRNTEVsZW1l
bnQqIGJvZHlFbGVtZW50ID0gYm9keSgpOwotICAgIGlmICghYm9keUVsZW1lbnQgfHwgIWlzSFRN
TEJvZHlFbGVtZW50KGJvZHlFbGVtZW50KSkKKyAgICBpZiAoIWJvZHlFbGVtZW50IHx8ICFpczxI
VE1MQm9keUVsZW1lbnQ+KGJvZHlFbGVtZW50KSkKICAgICAgICAgcmV0dXJuOwogICAgIHJldHVy
biBib2R5RWxlbWVudC0+c2V0QXR0cmlidXRlKGxpbmtBdHRyLCB2YWx1ZSk7CiB9CkBAIC0yMDMs
NyArMjAzLDcgQEAgdm9pZCBIVE1MRG9jdW1lbnQ6OnNldExpbmtDb2xvcihjb25zdCBTdHJpbmcm
IHZhbHVlKQogY29uc3QgQXRvbWljU3RyaW5nJiBIVE1MRG9jdW1lbnQ6OnZsaW5rQ29sb3IoKSBj
b25zdAogewogICAgIEhUTUxFbGVtZW50KiBib2R5RWxlbWVudCA9IGJvZHkoKTsKLSAgICBpZiAo
IWJvZHlFbGVtZW50IHx8ICFpc0hUTUxCb2R5RWxlbWVudChib2R5RWxlbWVudCkpCisgICAgaWYg
KCFib2R5RWxlbWVudCB8fCAhaXM8SFRNTEJvZHlFbGVtZW50Pihib2R5RWxlbWVudCkpCiAgICAg
ICAgIHJldHVybiBlbXB0eUF0b207CiAgICAgcmV0dXJuIGJvZHlFbGVtZW50LT5mYXN0R2V0QXR0
cmlidXRlKHZsaW5rQXR0cik7CiB9CkBAIC0yMTEsNyArMjExLDcgQEAgY29uc3QgQXRvbWljU3Ry
aW5nJiBIVE1MRG9jdW1lbnQ6OnZsaW5rQ29sb3IoKSBjb25zdAogdm9pZCBIVE1MRG9jdW1lbnQ6
OnNldFZsaW5rQ29sb3IoY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBIVE1MRWxlbWVudCog
Ym9keUVsZW1lbnQgPSBib2R5KCk7Ci0gICAgaWYgKCFib2R5RWxlbWVudCB8fCAhaXNIVE1MQm9k
eUVsZW1lbnQoYm9keUVsZW1lbnQpKQorICAgIGlmICghYm9keUVsZW1lbnQgfHwgIWlzPEhUTUxC
b2R5RWxlbWVudD4oYm9keUVsZW1lbnQpKQogICAgICAgICByZXR1cm47CiAgICAgcmV0dXJuIGJv
ZHlFbGVtZW50LT5zZXRBdHRyaWJ1dGUodmxpbmtBdHRyLCB2YWx1ZSk7CiB9CkBAIC0zNDAsNyAr
MzQwLDcgQEAgdm9pZCBIVE1MRG9jdW1lbnQ6OmNsZWFyKCkKIGJvb2wgSFRNTERvY3VtZW50Ojpp
c0ZyYW1lU2V0KCkgY29uc3QKIHsKICAgICBIVE1MRWxlbWVudCogYm9keUVsZW1lbnQgPSBib2R5
KCk7Ci0gICAgcmV0dXJuIGJvZHlFbGVtZW50ICYmIGlzSFRNTEZyYW1lU2V0RWxlbWVudChib2R5
RWxlbWVudCk7CisgICAgcmV0dXJuIGJvZHlFbGVtZW50ICYmIGlzPEhUTUxGcmFtZVNldEVsZW1l
bnQ+KGJvZHlFbGVtZW50KTsKIH0KIAogUGFzc1JlZlB0cjxEb2N1bWVudD4gSFRNTERvY3VtZW50
OjpjbG9uZURvY3VtZW50V2l0aG91dENoaWxkcmVuKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
RWxlbWVudC5jcHAKaW5kZXggZDhkNGQ5NmUyOTk0OGMzMjUxYjRmZTY3YjY0ZWJjZWRhMGU5YmUx
ZS4uY2Q5MmZmOGYyN2NmODM0ZmZlNTRlNTg2MDg5MWE1YzM0OTllN2QxZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MRWxlbWVudC5jcHAKQEAgLTQyNyw3ICs0MjcsNyBAQCB2b2lkIEhUTUxFbGVtZW50
OjpzZXRJbm5lckhUTUwoY29uc3QgU3RyaW5nJiBodG1sLCBFeGNlcHRpb25Db2RlJiBlYykKICAg
ICBpZiAoUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50ID0gY3JlYXRlRnJhZ21lbnRG
b3JJbm5lck91dGVySFRNTChodG1sLCB0aGlzLCBBbGxvd1NjcmlwdGluZ0NvbnRlbnQsIGVjKSkg
ewogICAgICAgICBDb250YWluZXJOb2RlKiBjb250YWluZXIgPSB0aGlzOwogI2lmIEVOQUJMRShU
RU1QTEFURV9FTEVNRU5UKQotICAgICAgICBpZiAoaXNIVE1MVGVtcGxhdGVFbGVtZW50KCp0aGlz
KSkKKyAgICAgICAgaWYgKGlzPEhUTUxUZW1wbGF0ZUVsZW1lbnQ+KCp0aGlzKSkKICAgICAgICAg
ICAgIGNvbnRhaW5lciA9IGRvd25jYXN0PEhUTUxUZW1wbGF0ZUVsZW1lbnQ+KCp0aGlzKS5jb250
ZW50KCk7CiAjZW5kaWYKICAgICAgICAgcmVwbGFjZUNoaWxkcmVuV2l0aEZyYWdtZW50KCpjb250
YWluZXIsIGZyYWdtZW50LnJlbGVhc2UoKSwgZWMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MRmllbGRTZXRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEZpZWxkU2V0RWxlbWVudC5jcHAKaW5kZXggNWZkMmQ0Y2Y3MDMyZGNkOTA5OGI4OWQ5NzY4OTQ4
Y2EyZDlmNTA3Yy4uYWMzNjUxZjE5MzVmNDk1MWExYzE1YWQ5Y2I3ZjdhZDZkYmI3YjRlMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRmllbGRTZXRFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGaWVsZFNldEVsZW1lbnQuY3BwCkBAIC02NSw3ICs2
NSw3IEBAIHN0YXRpYyB2b2lkIHVwZGF0ZUZyb21Db250cm9sRWxlbWVudHNBbmNlc3RvckRpc2Fi
bGVkU3RhdGVVbmRlcihIVE1MRWxlbWVudCYgc3RhCiAgICAgd2hpbGUgKGNvbnRyb2wpIHsKICAg
ICAgICAgY29udHJvbC0+c2V0QW5jZXN0b3JEaXNhYmxlZChpc0Rpc2FibGVkKTsKICAgICAgICAg
Ly8gRG9uJ3QgY2FsbCBzZXRBbmNlc3RvckRpc2FibGVkKGZhbHNlKSBvbiBmb3JtIGNvbnRvcmxz
IGluc2lkZSBkaXNhYmxlZCBmaWVsZHNldHMuCi0gICAgICAgIGlmIChpc0hUTUxGaWVsZFNldEVs
ZW1lbnQoY29udHJvbCkgJiYgY29udHJvbC0+ZmFzdEhhc0F0dHJpYnV0ZShkaXNhYmxlZEF0dHIp
KQorICAgICAgICBpZiAoaXM8SFRNTEZpZWxkU2V0RWxlbWVudD4oY29udHJvbCkgJiYgY29udHJv
bC0+ZmFzdEhhc0F0dHJpYnV0ZShkaXNhYmxlZEF0dHIpKQogICAgICAgICAgICAgY29udHJvbCA9
IFRyYXZlcnNhbDxIVE1MRm9ybUNvbnRyb2xFbGVtZW50Pjo6bmV4dFNraXBwaW5nQ2hpbGRyZW4o
Y29udHJvbCwgJnN0YXJ0Tm9kZSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGNvbnRyb2wg
PSBUcmF2ZXJzYWw8SFRNTEZvcm1Db250cm9sRWxlbWVudD46Om5leHQoY29udHJvbCwgJnN0YXJ0
Tm9kZSk7CkBAIC05Myw3ICs5Myw3IEBAIHZvaWQgSFRNTEZpZWxkU2V0RWxlbWVudDo6ZGlzYWJs
ZWRTdGF0ZUNoYW5nZWQoKQogICAgIGJvb2wgdGhpc0ZpZWxkc2V0SXNEaXNhYmxlZCA9IGZhc3RI
YXNBdHRyaWJ1dGUoZGlzYWJsZWRBdHRyKTsKICAgICBib29sIGhhc1NlZW5GaXJzdExlZ2VuZEVs
ZW1lbnQgPSBmYWxzZTsKICAgICBmb3IgKEhUTUxFbGVtZW50KiBjb250cm9sID0gVHJhdmVyc2Fs
PEhUTUxFbGVtZW50Pjo6Zmlyc3RDaGlsZCh0aGlzKTsgY29udHJvbDsgY29udHJvbCA9IFRyYXZl
cnNhbDxIVE1MRWxlbWVudD46Om5leHRTaWJsaW5nKGNvbnRyb2wpKSB7Ci0gICAgICAgIGlmICgh
aGFzU2VlbkZpcnN0TGVnZW5kRWxlbWVudCAmJiBpc0hUTUxMZWdlbmRFbGVtZW50KGNvbnRyb2wp
KSB7CisgICAgICAgIGlmICghaGFzU2VlbkZpcnN0TGVnZW5kRWxlbWVudCAmJiBpczxIVE1MTGVn
ZW5kRWxlbWVudD4oY29udHJvbCkpIHsKICAgICAgICAgICAgIGhhc1NlZW5GaXJzdExlZ2VuZEVs
ZW1lbnQgPSB0cnVlOwogICAgICAgICAgICAgdXBkYXRlRnJvbUNvbnRyb2xFbGVtZW50c0FuY2Vz
dG9yRGlzYWJsZWRTdGF0ZVVuZGVyKCpjb250cm9sLCBmYWxzZSAvKiBpc0Rpc2FibGVkICovKTsK
ICAgICAgICAgICAgIGNvbnRpbnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1D
b250cm9sRWxlbWVudC5jcHAKaW5kZXggOGM3YWYxNjNhMGQyZjdhYmY5MWNiMTQ5YTg3NjZlYmVm
NGY2YWUxMy4uMTViMDNkZGVjNWZmZTE0OTYyYjIxODM3YmNiOTgxYWM1OWY4MzUwMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwCkBAIC0xMDMs
OSArMTAzLDkgQEAgYm9vbCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50Ojpjb21wdXRlSXNEaXNhYmxl
ZEJ5RmllbGRzZXRBbmNlc3RvcigpIGNvbnN0CiB7CiAgICAgRWxlbWVudCogcHJldmlvdXNBbmNl
c3RvciA9IG51bGxwdHI7CiAgICAgZm9yIChFbGVtZW50KiBhbmNlc3RvciA9IHBhcmVudEVsZW1l
bnQoKTsgYW5jZXN0b3I7IGFuY2VzdG9yID0gYW5jZXN0b3ItPnBhcmVudEVsZW1lbnQoKSkgewot
ICAgICAgICBpZiAoaXNIVE1MRmllbGRTZXRFbGVtZW50KGFuY2VzdG9yKSAmJiBhbmNlc3Rvci0+
ZmFzdEhhc0F0dHJpYnV0ZShkaXNhYmxlZEF0dHIpKSB7CisgICAgICAgIGlmIChpczxIVE1MRmll
bGRTZXRFbGVtZW50PihhbmNlc3RvcikgJiYgYW5jZXN0b3ItPmZhc3RIYXNBdHRyaWJ1dGUoZGlz
YWJsZWRBdHRyKSkgewogICAgICAgICAgICAgSFRNTEZpZWxkU2V0RWxlbWVudCYgZmllbGRTZXRB
bmNlc3RvciA9IGRvd25jYXN0PEhUTUxGaWVsZFNldEVsZW1lbnQ+KCphbmNlc3Rvcik7Ci0gICAg
ICAgICAgICBib29sIGlzSW5GaXJzdExlZ2VuZCA9IHByZXZpb3VzQW5jZXN0b3IgJiYgaXNIVE1M
TGVnZW5kRWxlbWVudChwcmV2aW91c0FuY2VzdG9yKSAmJiBwcmV2aW91c0FuY2VzdG9yID09IGZp
ZWxkU2V0QW5jZXN0b3IubGVnZW5kKCk7CisgICAgICAgICAgICBib29sIGlzSW5GaXJzdExlZ2Vu
ZCA9IHByZXZpb3VzQW5jZXN0b3IgJiYgaXM8SFRNTExlZ2VuZEVsZW1lbnQ+KHByZXZpb3VzQW5j
ZXN0b3IpICYmIHByZXZpb3VzQW5jZXN0b3IgPT0gZmllbGRTZXRBbmNlc3Rvci5sZWdlbmQoKTsK
ICAgICAgICAgICAgIHJldHVybiAhaXNJbkZpcnN0TGVnZW5kOwogICAgICAgICB9CiAgICAgICAg
IHByZXZpb3VzQW5jZXN0b3IgPSBhbmNlc3RvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5jcHAKaW5kZXggNjhjMWRlZWYyNDc3MzI3MzFm
N2UwNTM2YTAzMDA3NWRkZjNmOTdmZi4uMDUyNDhhY2QxNzg2YjI4MWY2YjFlNjQ4OTFiOWZlZGY4
NzBkNjkyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xz
Q29sbGVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xz
Q29sbGVjdGlvbi5jcHAKQEAgLTQwLDcgKzQwLDcgQEAgSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rp
b246OkhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uKENvbnRhaW5lck5vZGUmIG93bmVyTm9kZSkK
ICAgICAsIG1fY2FjaGVkRWxlbWVudChudWxscHRyKQogICAgICwgbV9jYWNoZWRFbGVtZW50T2Zm
c2V0SW5BcnJheSgwKQogewotICAgIEFTU0VSVChpc0hUTUxGb3JtRWxlbWVudChvd25lck5vZGUp
IHx8IGlzSFRNTEZpZWxkU2V0RWxlbWVudChvd25lck5vZGUpKTsKKyAgICBBU1NFUlQoaXM8SFRN
TEZvcm1FbGVtZW50Pihvd25lck5vZGUpIHx8IGlzPEhUTUxGaWVsZFNldEVsZW1lbnQ+KG93bmVy
Tm9kZSkpOwogfQogCiBQYXNzUmVmPEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uPiBIVE1MRm9y
bUNvbnRyb2xzQ29sbGVjdGlvbjo6Y3JlYXRlKENvbnRhaW5lck5vZGUmIG93bmVyTm9kZSwgQ29s
bGVjdGlvblR5cGUpCkBAIC01NCwxNSArNTQsMTUgQEAgSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rp
b246On5IVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbigpCiAKIGNvbnN0IFZlY3RvcjxGb3JtQXNz
b2NpYXRlZEVsZW1lbnQqPiYgSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb246OmZvcm1Db250cm9s
RWxlbWVudHMoKSBjb25zdAogewotICAgIEFTU0VSVChpc0hUTUxGb3JtRWxlbWVudChvd25lck5v
ZGUoKSkgfHwgb3duZXJOb2RlKCkuaGFzVGFnTmFtZShmaWVsZHNldFRhZykpOwotICAgIGlmIChp
c0hUTUxGb3JtRWxlbWVudChvd25lck5vZGUoKSkpCisgICAgQVNTRVJUKGlzPEhUTUxGb3JtRWxl
bWVudD4ob3duZXJOb2RlKCkpIHx8IGlzPEhUTUxGaWVsZFNldEVsZW1lbnQ+KG93bmVyTm9kZSgp
KSk7CisgICAgaWYgKGlzPEhUTUxGb3JtRWxlbWVudD4ob3duZXJOb2RlKCkpKQogICAgICAgICBy
ZXR1cm4gZG93bmNhc3Q8SFRNTEZvcm1FbGVtZW50Pihvd25lck5vZGUoKSkuYXNzb2NpYXRlZEVs
ZW1lbnRzKCk7CiAgICAgcmV0dXJuIGRvd25jYXN0PEhUTUxGaWVsZFNldEVsZW1lbnQ+KG93bmVy
Tm9kZSgpKS5hc3NvY2lhdGVkRWxlbWVudHMoKTsKIH0KIAogY29uc3QgVmVjdG9yPEhUTUxJbWFn
ZUVsZW1lbnQqPiYgSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb246OmZvcm1JbWFnZUVsZW1lbnRz
KCkgY29uc3QKIHsKLSAgICBBU1NFUlQoaXNIVE1MRm9ybUVsZW1lbnQob3duZXJOb2RlKCkpKTsK
KyAgICBBU1NFUlQoaXM8SFRNTEZvcm1FbGVtZW50Pihvd25lck5vZGUoKSkpOwogICAgIHJldHVy
biBkb3duY2FzdDxIVE1MRm9ybUVsZW1lbnQ+KG93bmVyTm9kZSgpKS5pbWFnZUVsZW1lbnRzKCk7
CiB9CiAKQEAgLTEyOCw3ICsxMjgsNyBAQCBOb2RlKiBIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlv
bjo6bmFtZWRJdGVtKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkgY29uc3QKICAgICAvLyBhdHRy
aWJ1dGUuIElmIGEgbWF0Y2ggaXMgbm90IGZvdW5kLCB0aGUgbWV0aG9kIHRoZW4gc2VhcmNoZXMg
Zm9yIGFuCiAgICAgLy8gb2JqZWN0IHdpdGggYSBtYXRjaGluZyBuYW1lIGF0dHJpYnV0ZSwgYnV0
IG9ubHkgb24gdGhvc2UgZWxlbWVudHMKICAgICAvLyB0aGF0IGFyZSBhbGxvd2VkIGEgbmFtZSBh
dHRyaWJ1dGUuCi0gICAgY29uc3QgVmVjdG9yPEhUTUxJbWFnZUVsZW1lbnQqPiogaW1hZ2VzRWxl
bWVudHMgPSBvd25lck5vZGUoKS5oYXNUYWdOYW1lKGZpZWxkc2V0VGFnKSA/IG51bGxwdHIgOiAm
Zm9ybUltYWdlRWxlbWVudHMoKTsKKyAgICBjb25zdCBWZWN0b3I8SFRNTEltYWdlRWxlbWVudCo+
KiBpbWFnZXNFbGVtZW50cyA9IGlzPEhUTUxGaWVsZFNldEVsZW1lbnQ+KG93bmVyTm9kZSgpKSA/
IG51bGxwdHIgOiAmZm9ybUltYWdlRWxlbWVudHMoKTsKICAgICBpZiAoSFRNTEVsZW1lbnQqIGl0
ZW0gPSBmaXJzdE5hbWVkSXRlbShmb3JtQ29udHJvbEVsZW1lbnRzKCksIGltYWdlc0VsZW1lbnRz
LCBpZEF0dHIsIG5hbWUpKQogICAgICAgICByZXR1cm4gaXRlbTsKIApAQCAtMTYxLDcgKzE2MSw3
IEBAIHZvaWQgSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb246OnVwZGF0ZU5hbWVkRWxlbWVudENh
Y2hlKCkgY29uc3QKICAgICAgICAgfQogICAgIH0KIAotICAgIGlmIChpc0hUTUxGb3JtRWxlbWVu
dChvd25lck5vZGUoKSkpIHsKKyAgICBpZiAoaXM8SFRNTEZvcm1FbGVtZW50Pihvd25lck5vZGUo
KSkpIHsKICAgICAgICAgY29uc3QgVmVjdG9yPEhUTUxJbWFnZUVsZW1lbnQqPiYgaW1hZ2VFbGVt
ZW50c0FycmF5ID0gZm9ybUltYWdlRWxlbWVudHMoKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IGltYWdlRWxlbWVudHNBcnJheS5zaXplKCk7ICsraSkgewogICAgICAgICAgICAg
SFRNTEltYWdlRWxlbWVudCYgZWxlbWVudCA9ICppbWFnZUVsZW1lbnRzQXJyYXlbaV07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAKaW5kZXggZGNkMmE4ODZhOTViOTA0MzAz
M2E1Mzg1OGU5NjVjNDQ1ZDQ5NDQ5ZS4uZWFmZjcxZjE2N2NjNzc4YTNmNzIzZTE0NGIzZGNkMWI3
Y2IyNjRmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcApAQCAtMTEw
LDcgKzExMCw3IEBAIGJvb2wgSFRNTEZvcm1FbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKGNvbnN0
IFJlbmRlclN0eWxlJiBzdHlsZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgLy8gRklY
TUU6IFNob3VsZG4ndCB3ZSBhbHNvIGNoZWNrIGZvciB0YWJsZSBjYXB0aW9uIChzZWUgfGZvcm1J
c1RhYmxlUGFydHwgYmVsb3cpLgotICAgIGJvb2wgcGFyZW50SXNUYWJsZUVsZW1lbnRQYXJ0ID0g
KHBhcmVudFJlbmRlcmVyLT5pc1RhYmxlKCkgJiYgaXNIVE1MVGFibGVFbGVtZW50KHBhcmVudCkp
CisgICAgYm9vbCBwYXJlbnRJc1RhYmxlRWxlbWVudFBhcnQgPSAocGFyZW50UmVuZGVyZXItPmlz
VGFibGUoKSAmJiBpczxIVE1MVGFibGVFbGVtZW50PihwYXJlbnQpKQogICAgICAgICB8fCAocGFy
ZW50UmVuZGVyZXItPmlzVGFibGVSb3coKSAmJiBwYXJlbnQtPmhhc1RhZ05hbWUodHJUYWcpKQog
ICAgICAgICB8fCAocGFyZW50UmVuZGVyZXItPmlzVGFibGVTZWN0aW9uKCkgJiYgcGFyZW50LT5o
YXNUYWdOYW1lKHRib2R5VGFnKSkKICAgICAgICAgfHwgKHBhcmVudFJlbmRlcmVyLT5pc1JlbmRl
clRhYmxlQ29sKCkgJiYgcGFyZW50LT5oYXNUYWdOYW1lKGNvbFRhZykpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnRCYXNlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxGcmFtZUVsZW1lbnRCYXNlLmgKaW5kZXggMjc5ZWJkODJhODhjZjQyN2Q0MzY1
MGUyZTVlYjhhNzE0YWIyZDEwZC4uYjQ3NWJkNThiZDNjMmM0ZDAzNTNiOWZhZWUzMjVkOGE3Njgw
MTFjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50QmFz
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudEJhc2UuaApAQCAt
NzcsOCArNzcsOCBAQCBwcml2YXRlOgogfTsKIAogdm9pZCBpc0hUTUxGcmFtZUVsZW1lbnRCYXNl
KGNvbnN0IEhUTUxGcmFtZUVsZW1lbnRCYXNlJik7IC8vIENhdGNoIHVubmVjZXNzYXJ5IHJ1bnRp
bWUgY2hlY2sgb2YgdHlwZSBrbm93biBhdCBjb21waWxlIHRpbWUuCi1pbmxpbmUgYm9vbCBpc0hU
TUxGcmFtZUVsZW1lbnRCYXNlKGNvbnN0IEhUTUxFbGVtZW50JiBlbGVtZW50KSB7IHJldHVybiBp
c0hUTUxGcmFtZUVsZW1lbnQoZWxlbWVudCkgfHwgaXNIVE1MSUZyYW1lRWxlbWVudChlbGVtZW50
KTsgfQotaW5saW5lIGJvb2wgaXNIVE1MRnJhbWVFbGVtZW50QmFzZShjb25zdCBOb2RlJiBub2Rl
KSB7IHJldHVybiBpc0hUTUxGcmFtZUVsZW1lbnQobm9kZSkgfHwgaXNIVE1MSUZyYW1lRWxlbWVu
dChub2RlKTsgfQoraW5saW5lIGJvb2wgaXNIVE1MRnJhbWVFbGVtZW50QmFzZShjb25zdCBIVE1M
RWxlbWVudCYgZWxlbWVudCkgeyByZXR1cm4gaXM8SFRNTEZyYW1lRWxlbWVudD4oZWxlbWVudCkg
fHwgaXM8SFRNTElGcmFtZUVsZW1lbnQ+KGVsZW1lbnQpOyB9CitpbmxpbmUgYm9vbCBpc0hUTUxG
cmFtZUVsZW1lbnRCYXNlKGNvbnN0IE5vZGUmIG5vZGUpIHsgcmV0dXJuIGlzPEhUTUxGcmFtZUVs
ZW1lbnQ+KG5vZGUpIHx8IGlzPEhUTUxJRnJhbWVFbGVtZW50Pihub2RlKTsgfQogCiBOT0RFX1RZ
UEVfQ0FTVFMoSFRNTEZyYW1lRWxlbWVudEJhc2UpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEltYWdlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElt
YWdlTG9hZGVyLmNwcAppbmRleCAyOWZiY2RlOGM2ZDliZDY2ZjM5ZGIyZDQwMDdlODFlNGUwZmY3
M2Q5Li4zMGFhMTcwNGI5ZDJmMWIxMTc2NWFlYjUyZTU3N2MyZmE4MTQwMjg3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MSW1hZ2VMb2FkZXIuY3BwCkBAIC00OSw3ICs0OSw3IEBAIEhUTUxJbWFn
ZUxvYWRlcjo6fkhUTUxJbWFnZUxvYWRlcigpCiB2b2lkIEhUTUxJbWFnZUxvYWRlcjo6ZGlzcGF0
Y2hMb2FkRXZlbnQoKQogewogICAgIC8vIEhUTUxWaWRlb0VsZW1lbnQgdXNlcyB0aGlzIGNsYXNz
IHRvIGxvYWQgdGhlIHBvc3RlciBpbWFnZSwgYnV0IGl0IHNob3VsZCBub3QgZmlyZSBldmVudHMg
Zm9yIGxvYWRpbmcgb3IgZmFpbHVyZS4KLSAgICBpZiAoaXNIVE1MVmlkZW9FbGVtZW50KGVsZW1l
bnQoKSkpCisgICAgaWYgKGlzPEhUTUxWaWRlb0VsZW1lbnQ+KGVsZW1lbnQoKSkpCiAgICAgICAg
IHJldHVybjsKIAogICAgIGJvb2wgZXJyb3JPY2N1cnJlZCA9IGltYWdlKCktPmVycm9yT2NjdXJy
ZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCmluZGV4IGUyZDU1
ZTMzNTE0NWJhMjk5Y2I3MjFmN2Q4ZGE3N2Q2Y2JkZTY1MWQuLjQzOWEwYTFjZmI4N2VkZDhlMjdi
NTE5N2UxNmUzZTlmZWQ5ZWZjMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TElucHV0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVt
ZW50LmNwcApAQCAtMTUyMSw3ICsxNTIxLDcgQEAgSFRNTERhdGFMaXN0RWxlbWVudCogSFRNTElu
cHV0RWxlbWVudDo6ZGF0YUxpc3QoKSBjb25zdAogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAog
ICAgIEVsZW1lbnQqIGVsZW1lbnQgPSB0cmVlU2NvcGUoKS5nZXRFbGVtZW50QnlJZChmYXN0R2V0
QXR0cmlidXRlKGxpc3RBdHRyKSk7Ci0gICAgaWYgKCFlbGVtZW50IHx8ICFpc0hUTUxEYXRhTGlz
dEVsZW1lbnQoZWxlbWVudCkpCisgICAgaWYgKCFlbGVtZW50IHx8ICFpczxIVE1MRGF0YUxpc3RF
bGVtZW50PihlbGVtZW50KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICByZXR1cm4g
ZG93bmNhc3Q8SFRNTERhdGFMaXN0RWxlbWVudD4oZWxlbWVudCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxMZWdlbmRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTExlZ2VuZEVsZW1lbnQuY3BwCmluZGV4IDJmYjRkMjUwZjI1MWIwZmY5NTI5Zjg3YThl
ODg3ODMxYWQ3ZWU0MmMuLjhlOWM4MjkzMWMyNDRkMTk5YTg2NzkzNjM3ZGYzZDA2M2E1YWY2Njgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExlZ2VuZEVsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExlZ2VuZEVsZW1lbnQuY3BwCkBAIC03OSw3ICs3
OSw3IEBAIEhUTUxGb3JtRWxlbWVudCogSFRNTExlZ2VuZEVsZW1lbnQ6OnZpcnR1YWxGb3JtKCkg
Y29uc3QKICAgICAvLyBpdHMgcGFyZW50LCB0aGVuIHRoZSBmb3JtIGF0dHJpYnV0ZSBtdXN0IHJl
dHVybiB0aGUgc2FtZSB2YWx1ZSBhcyB0aGUKICAgICAvLyBmb3JtIGF0dHJpYnV0ZSBvbiB0aGF0
IGZpZWxkc2V0IGVsZW1lbnQuIE90aGVyd2lzZSwgaXQgbXVzdCByZXR1cm4gbnVsbC4KICAgICBD
b250YWluZXJOb2RlKiBmaWVsZHNldCA9IHBhcmVudE5vZGUoKTsKLSAgICBpZiAoIWZpZWxkc2V0
IHx8ICFpc0hUTUxGaWVsZFNldEVsZW1lbnQoZmllbGRzZXQpKQorICAgIGlmICghZmllbGRzZXQg
fHwgIWlzPEhUTUxGaWVsZFNldEVsZW1lbnQ+KGZpZWxkc2V0KSkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKICAgICByZXR1cm4gZG93bmNhc3Q8SFRNTEZpZWxkU2V0RWxlbWVudD4oKmZpZWxk
c2V0KS5mb3JtKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAppbmRl
eCA5YjQyMjkyMmNmYzU0ZjMyOTlkNzY2ZjZiNjY0NzVhOGE0YmMxMjcwLi43NGY5NDNlMDYwNjEy
ZWE1YTIxOWM4NzRmYmJhZjQxOGEyZDI1YjMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1l
ZGlhRWxlbWVudC5jcHAKQEAgLTQ4ODIsNyArNDg4Miw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVu
dDo6ZW50ZXJGdWxsc2NyZWVuKCkKICAgICBtX2lzSW5WaWRlb0Z1bGxzY3JlZW4gPSB0cnVlOwog
ICAgIGlmIChoYXNNZWRpYUNvbnRyb2xzKCkpCiAgICAgICAgIG1lZGlhQ29udHJvbHMoKS0+ZW50
ZXJlZEZ1bGxzY3JlZW4oKTsKLSAgICBpZiAoZG9jdW1lbnQoKS5wYWdlKCkgJiYgaXNIVE1MVmlk
ZW9FbGVtZW50KHRoaXMpKSB7CisgICAgaWYgKGRvY3VtZW50KCkucGFnZSgpICYmIGlzPEhUTUxW
aWRlb0VsZW1lbnQ+KHRoaXMpKSB7CiAgICAgICAgIEhUTUxWaWRlb0VsZW1lbnQmIGFzVmlkZW8g
PSBkb3duY2FzdDxIVE1MVmlkZW9FbGVtZW50PigqdGhpcyk7CiAgICAgICAgIGlmIChkb2N1bWVu
dCgpLnBhZ2UoKS0+Y2hyb21lKCkuY2xpZW50KCkuc3VwcG9ydHNWaWRlb0Z1bGxzY3JlZW4oKSkg
ewogICAgICAgICAgICAgZG9jdW1lbnQoKS5wYWdlKCktPmNocm9tZSgpLmNsaWVudCgpLmVudGVy
VmlkZW9GdWxsc2NyZWVuRm9yVmlkZW9FbGVtZW50KCZhc1ZpZGVvKTsKQEAgLTQ5MDYsNyArNDkw
Niw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6ZXhpdEZ1bGxzY3JlZW4oKQogICAgIG1faXNJ
blZpZGVvRnVsbHNjcmVlbiA9IGZhbHNlOwogICAgIGlmIChoYXNNZWRpYUNvbnRyb2xzKCkpCiAg
ICAgICAgIG1lZGlhQ29udHJvbHMoKS0+ZXhpdGVkRnVsbHNjcmVlbigpOwotICAgIGlmIChkb2N1
bWVudCgpLnBhZ2UoKSAmJiBpc0hUTUxWaWRlb0VsZW1lbnQodGhpcykpIHsKKyAgICBpZiAoZG9j
dW1lbnQoKS5wYWdlKCkgJiYgaXM8SFRNTFZpZGVvRWxlbWVudD4odGhpcykpIHsKICAgICAgICAg
aWYgKG1fbWVkaWFTZXNzaW9uLT5yZXF1aXJlc0Z1bGxzY3JlZW5Gb3JWaWRlb1BsYXliYWNrKCp0
aGlzKSkKICAgICAgICAgICAgIHBhdXNlSW50ZXJuYWwoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTmFtZUNvbGxlY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTmFtZUNvbGxlY3Rpb24uY3BwCmluZGV4IGFmM2MzNjM1MmFhMzY4NmJiZGZhYTM0ZTVk
NzhhYWRiM2I1NjcxZGYuLmU2YjJkOTVhNzA1NzViNzc3Nzg3ZmY4YzkyYzA3MjVmYjdiYjI4ZGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE5hbWVDb2xsZWN0aW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxOYW1lQ29sbGVjdGlvbi5jcHAKQEAgLTUxLDgg
KzUxLDggQEAgSFRNTE5hbWVDb2xsZWN0aW9uOjp+SFRNTE5hbWVDb2xsZWN0aW9uKCkKIAogYm9v
bCBXaW5kb3dOYW1lQ29sbGVjdGlvbjo6ZWxlbWVudE1hdGNoZXNJZk5hbWVBdHRyaWJ1dGVNYXRj
aChjb25zdCBFbGVtZW50JiBlbGVtZW50KQogewotICAgIHJldHVybiBpc0hUTUxJbWFnZUVsZW1l
bnQoZWxlbWVudCkgfHwgaXNIVE1MRm9ybUVsZW1lbnQoZWxlbWVudCkgfHwgZWxlbWVudC5oYXNU
YWdOYW1lKGFwcGxldFRhZykKLSAgICAgICAgfHwgZWxlbWVudC5oYXNUYWdOYW1lKGVtYmVkVGFn
KSB8fCBlbGVtZW50Lmhhc1RhZ05hbWUob2JqZWN0VGFnKTsKKyAgICByZXR1cm4gaXM8SFRNTElt
YWdlRWxlbWVudD4oZWxlbWVudCkgfHwgaXM8SFRNTEZvcm1FbGVtZW50PihlbGVtZW50KSB8fCBl
bGVtZW50Lmhhc1RhZ05hbWUoYXBwbGV0VGFnKQorICAgICAgICB8fCBpczxIVE1MRW1iZWRFbGVt
ZW50PihlbGVtZW50KSB8fCBpczxIVE1MT2JqZWN0RWxlbWVudD4oZWxlbWVudCk7CiB9CiAKIGJv
b2wgV2luZG93TmFtZUNvbGxlY3Rpb246OmVsZW1lbnRNYXRjaGVzKGNvbnN0IEVsZW1lbnQmIGVs
ZW1lbnQsIGNvbnN0IEF0b21pY1N0cmluZ0ltcGwqIG5hbWUpCkBAIC04MSwxMyArODEsMTMgQEAg
Ym9vbCBEb2N1bWVudE5hbWVDb2xsZWN0aW9uOjplbGVtZW50TWF0Y2hlcyhjb25zdCBFbGVtZW50
JiBlbGVtZW50LCBjb25zdCBBdG9taWMKIHsKICAgICAvLyBGaW5kIGltYWdlcywgZm9ybXMsIGFw
cGxldHMsIGVtYmVkcywgb2JqZWN0cyBhbmQgaWZyYW1lcyBieSBuYW1lLCBhcHBsZXRzIGFuZCBv
YmplY3QgYnkgaWQsIGFuZCBpbWFnZXMgYnkgaWQKICAgICAvLyBidXQgb25seSBpZiB0aGV5IGhh
dmUgYSBuYW1lIGF0dHJpYnV0ZSAodGhpcyB2ZXJ5IHN0cmFuZ2UgcnVsZSBtYXRjaGVzIElFKQot
ICAgIGlmIChpc0hUTUxGb3JtRWxlbWVudChlbGVtZW50KSB8fCBlbGVtZW50Lmhhc1RhZ05hbWUo
ZW1iZWRUYWcpIHx8IGVsZW1lbnQuaGFzVGFnTmFtZShpZnJhbWVUYWcpKQorICAgIGlmIChpczxI
VE1MRm9ybUVsZW1lbnQ+KGVsZW1lbnQpIHx8IGlzPEhUTUxFbWJlZEVsZW1lbnQ+KGVsZW1lbnQp
IHx8IGlzPEhUTUxJRnJhbWVFbGVtZW50PihlbGVtZW50KSkKICAgICAgICAgcmV0dXJuIGVsZW1l
bnQuZ2V0TmFtZUF0dHJpYnV0ZSgpLmltcGwoKSA9PSBuYW1lOwotICAgIGlmIChlbGVtZW50Lmhh
c1RhZ05hbWUoYXBwbGV0VGFnKSkKKyAgICBpZiAoaXM8SFRNTEFwcGxldEVsZW1lbnQ+KGVsZW1l
bnQpKQogICAgICAgICByZXR1cm4gZWxlbWVudC5nZXROYW1lQXR0cmlidXRlKCkuaW1wbCgpID09
IG5hbWUgfHwgZWxlbWVudC5nZXRJZEF0dHJpYnV0ZSgpLmltcGwoKSA9PSBuYW1lOwogICAgIGlm
IChpczxIVE1MT2JqZWN0RWxlbWVudD4oZWxlbWVudCkpCiAgICAgICAgIHJldHVybiAoZWxlbWVu
dC5nZXROYW1lQXR0cmlidXRlKCkuaW1wbCgpID09IG5hbWUgfHwgZWxlbWVudC5nZXRJZEF0dHJp
YnV0ZSgpLmltcGwoKSA9PSBuYW1lKSAmJiBkb3duY2FzdDxIVE1MT2JqZWN0RWxlbWVudD4oZWxl
bWVudCkuaXNEb2NOYW1lZEl0ZW0oKTsKLSAgICBpZiAoaXNIVE1MSW1hZ2VFbGVtZW50KGVsZW1l
bnQpKQorICAgIGlmIChpczxIVE1MSW1hZ2VFbGVtZW50PihlbGVtZW50KSkKICAgICAgICAgcmV0
dXJuIGVsZW1lbnQuZ2V0TmFtZUF0dHJpYnV0ZSgpLmltcGwoKSA9PSBuYW1lIHx8IChlbGVtZW50
LmdldElkQXR0cmlidXRlKCkuaW1wbCgpID09IG5hbWUgJiYgZWxlbWVudC5oYXNOYW1lKCkpOwog
ICAgIHJldHVybiBmYWxzZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE9wdGlvbkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uRWxlbWVu
dC5jcHAKaW5kZXggY2U2NTEyN2M1OGY4YWNhNjJhNjVmMTc3MjM4NDg0MmY2Y2UzY2QyOC4uM2Mz
NzcwOGFlZTI1Yjk5ZDkwZTVjYjEwN2FhYWM0NzZmYjIyMDkzZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MT3B0aW9uRWxlbWVudC5jcHAKQEAgLTI1Nyw3ICsyNTcsNyBAQCB2b2lkIEhUTUxP
cHRpb25FbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoY29uc3QgQ2hpbGRDaGFuZ2UmIGNoYW5nZSkK
IEhUTUxEYXRhTGlzdEVsZW1lbnQqIEhUTUxPcHRpb25FbGVtZW50Ojpvd25lckRhdGFMaXN0RWxl
bWVudCgpIGNvbnN0CiB7CiAgICAgZm9yIChDb250YWluZXJOb2RlKiBwYXJlbnQgPSBwYXJlbnRO
b2RlKCk7IHBhcmVudCA7IHBhcmVudCA9IHBhcmVudC0+cGFyZW50Tm9kZSgpKSB7Ci0gICAgICAg
IGlmIChpc0hUTUxEYXRhTGlzdEVsZW1lbnQocGFyZW50KSkKKyAgICAgICAgaWYgKGlzPEhUTUxE
YXRhTGlzdEVsZW1lbnQ+KHBhcmVudCkpCiAgICAgICAgICAgICByZXR1cm4gZG93bmNhc3Q8SFRN
TERhdGFMaXN0RWxlbWVudD4ocGFyZW50KTsKICAgICB9CiAgICAgcmV0dXJuIG51bGxwdHI7CkBA
IC0zMDIsNyArMzAyLDcgQEAgdm9pZCBIVE1MT3B0aW9uRWxlbWVudDo6d2lsbFJlc2V0Q29tcHV0
ZWRTdHlsZSgpCiBTdHJpbmcgSFRNTE9wdGlvbkVsZW1lbnQ6OnRleHRJbmRlbnRlZFRvUmVzcGVj
dEdyb3VwTGFiZWwoKSBjb25zdAogewogICAgIENvbnRhaW5lck5vZGUqIHBhcmVudCA9IHBhcmVu
dE5vZGUoKTsKLSAgICBpZiAocGFyZW50ICYmIGlzSFRNTE9wdEdyb3VwRWxlbWVudChwYXJlbnQp
KQorICAgIGlmIChwYXJlbnQgJiYgaXM8SFRNTE9wdEdyb3VwRWxlbWVudD4ocGFyZW50KSkKICAg
ICAgICAgcmV0dXJuICIgICAgIiArIHRleHQoKTsKICAgICByZXR1cm4gdGV4dCgpOwogfQpAQCAt
MzE2LDcgKzMxNiw3IEBAIGJvb2wgSFRNTE9wdGlvbkVsZW1lbnQ6OmlzRGlzYWJsZWRGb3JtQ29u
dHJvbCgpIGNvbnN0CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIEhUTUxFbGVtZW50JiBw
YXJlbnRFbGVtZW50ID0gdG9IVE1MRWxlbWVudCgqcGFyZW50Tm9kZSgpKTsKLSAgICByZXR1cm4g
aXNIVE1MT3B0R3JvdXBFbGVtZW50KHBhcmVudEVsZW1lbnQpICYmIHBhcmVudEVsZW1lbnQuaXNE
aXNhYmxlZEZvcm1Db250cm9sKCk7CisgICAgcmV0dXJuIGlzPEhUTUxPcHRHcm91cEVsZW1lbnQ+
KHBhcmVudEVsZW1lbnQpICYmIHBhcmVudEVsZW1lbnQuaXNEaXNhYmxlZEZvcm1Db250cm9sKCk7
CiB9CiAKIE5vZGU6Okluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgSFRNTE9wdGlvbkVsZW1l
bnQ6Omluc2VydGVkSW50byhDb250YWluZXJOb2RlJiBpbnNlcnRpb25Qb2ludCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5jcHAKaW5kZXggYzk2MzI2MjQ1MDA2YjhiNzA2
MGUxODBmY2ZjMDllMjVhMGVhMmRiZS4uNWQzMmUzODZmNDEwNWNmMjFiYmMzNDRlM2E2NzJmYjU3
NjIyZmQ0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5jcHAKQEAg
LTc5MCw3ICs3OTAsNyBAQCB2b2lkIEhUTUxTZWxlY3RFbGVtZW50OjpyZWNhbGNMaXN0SXRlbXMo
Ym9vbCB1cGRhdGVTZWxlY3RlZFN0YXRlcykgY29uc3QKICAgICAgICAgLy8gb3B0Z3JvdXAgdGFn
cyBtYXkgbm90IG5lc3QuIEhvd2V2ZXIsIGJvdGggRmlyZUZveCBhbmQgSUUgd2lsbAogICAgICAg
ICAvLyBmbGF0dGVuIHRoZSB0cmVlIGF1dG9tYXRpY2FsbHksIHNvIHdlIGZvbGxvdyBzdWl0Lgog
ICAgICAgICAvLyAoaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQwMS9pbnRlcmFjdC9mb3Jtcy5o
dG1sI2gtMTcuNikKLSAgICAgICAgaWYgKGlzSFRNTE9wdEdyb3VwRWxlbWVudChjdXJyZW50KSkg
eworICAgICAgICBpZiAoaXM8SFRNTE9wdEdyb3VwRWxlbWVudD4oY3VycmVudCkpIHsKICAgICAg
ICAgICAgIG1fbGlzdEl0ZW1zLmFwcGVuZChjdXJyZW50KTsKICAgICAgICAgICAgIGlmIChFbGVt
ZW50KiBuZXh0RWxlbWVudCA9IEVsZW1lbnRUcmF2ZXJzYWw6OmZpcnN0V2l0aGluKGN1cnJlbnQp
KSB7CiAgICAgICAgICAgICAgICAgY3VycmVudEVsZW1lbnQgPSBuZXh0RWxlbWVudDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlRWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxUYWJsZUVsZW1lbnQuY3BwCmluZGV4IGFiNzAxZjMyNGNmMjZlYzQy
ZWU2MWViZDkwOWU5NzdiZjIxOWVhMTcuLjYyODRjZWNkYTcwNmU4M2RmNmQ2YjUxMzFhZTExN2I0
ZTUwODgzMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlRWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVFbGVtZW50LmNwcApAQCAt
NzAsNyArNzAsNyBAQCBQYXNzUmVmUHRyPEhUTUxUYWJsZUVsZW1lbnQ+IEhUTUxUYWJsZUVsZW1l
bnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYQogSFRNTFRhYmxlQ2FwdGlvbkVs
ZW1lbnQqIEhUTUxUYWJsZUVsZW1lbnQ6OmNhcHRpb24oKSBjb25zdAogewogICAgIGZvciAoTm9k
ZSogY2hpbGQgPSBmaXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGlu
ZygpKSB7Ci0gICAgICAgIGlmIChpc0hUTUxUYWJsZUNhcHRpb25FbGVtZW50KGNoaWxkKSkKKyAg
ICAgICAgaWYgKGlzPEhUTUxUYWJsZUNhcHRpb25FbGVtZW50PihjaGlsZCkpCiAgICAgICAgICAg
ICByZXR1cm4gZG93bmNhc3Q8SFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQ+KGNoaWxkKTsKICAgICB9
CiAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxUYWJsZVBhcnRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlUGFy
dEVsZW1lbnQuY3BwCmluZGV4IGY1MTA4MjRlZGJhNWFhYTdkZTA0NDYzN2ViZDNmNDU1MDA5Nzc0
OTQuLmJiZGQ4NGJjMzdiYTI4YjhjZTg0YmIyNWI0YjMxOGE0NjQ2ZTY0ZGUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlUGFydEVsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlUGFydEVsZW1lbnQuY3BwCkBAIC04Niw3ICs4Niw3IEBA
IHZvaWQgSFRNTFRhYmxlUGFydEVsZW1lbnQ6OmNvbGxlY3RTdHlsZUZvclByZXNlbnRhdGlvbkF0
dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROCiBIVE1MVGFibGVFbGVtZW50KiBIVE1MVGFibGVQYXJ0
RWxlbWVudDo6ZmluZFBhcmVudFRhYmxlKCkgY29uc3QKIHsKICAgICBDb250YWluZXJOb2RlKiBw
YXJlbnQgPSBwYXJlbnROb2RlKCk7Ci0gICAgd2hpbGUgKHBhcmVudCAmJiAhaXNIVE1MVGFibGVF
bGVtZW50KHBhcmVudCkpCisgICAgd2hpbGUgKHBhcmVudCAmJiAhaXM8SFRNTFRhYmxlRWxlbWVu
dD4ocGFyZW50KSkKICAgICAgICAgcGFyZW50ID0gcGFyZW50LT5wYXJlbnROb2RlKCk7CiAgICAg
cmV0dXJuIGRvd25jYXN0PEhUTUxUYWJsZUVsZW1lbnQ+KHBhcmVudCk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZVJvd0VsZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MVGFibGVSb3dFbGVtZW50LmNwcAppbmRleCA0N2ZmMzNiZDc1M2RiNDkz
ZTY5NDU5M2NiNjUwN2IzNDIzNzhiNDU4Li4xZmY2NzFjMjU0MjVlNzVlYmRiZWYzNWFiMTU5N2Nl
NDNlMzRhOWUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZVJvd0Vs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlUm93RWxlbWVudC5j
cHAKQEAgLTYwLDcgKzYwLDcgQEAgaW50IEhUTUxUYWJsZVJvd0VsZW1lbnQ6OnJvd0luZGV4KCkg
Y29uc3QKICAgICBpZiAoIXRhYmxlKQogICAgICAgICByZXR1cm4gLTE7CiAgICAgdGFibGUgPSB0
YWJsZS0+cGFyZW50Tm9kZSgpOwotICAgIGlmICghdGFibGUgfHwgIWlzSFRNTFRhYmxlRWxlbWVu
dCh0YWJsZSkpCisgICAgaWYgKCF0YWJsZSB8fCAhaXM8SFRNTFRhYmxlRWxlbWVudD4odGFibGUp
KQogICAgICAgICByZXR1cm4gLTE7CiAKICAgICAvLyBUbyBtYXRjaCBGaXJlZm94LCB0aGUgcm93
IGluZGljZXMgd29yayBsaWtlIHRoaXM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxUYWJsZVJvd3NDb2xsZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRh
YmxlUm93c0NvbGxlY3Rpb24uY3BwCmluZGV4IDA0YTk2MDQzNmUxMDU3NjE4NDM5N2Q4OTZhMzE2
NWQ1ODljMWMxMzkuLjNhZDIyYTU0NjU4MjkyMjUzODc3YmJjNTJkZmVmMzYxY2E4NGYxZjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlUm93c0NvbGxlY3Rpb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlUm93c0NvbGxlY3Rpb24uY3BwCkBA
IC05Nyw3ICs5Nyw3IEBAIEhUTUxUYWJsZVJvd0VsZW1lbnQqIEhUTUxUYWJsZVJvd3NDb2xsZWN0
aW9uOjpyb3dBZnRlcihIVE1MVGFibGVFbGVtZW50KiB0YWJsZSwKICAgICBlbHNlIGlmIChpc0lu
U2VjdGlvbigqcHJldmlvdXMsIHRib2R5VGFnKSkKICAgICAgICAgY2hpbGQgPSBFbGVtZW50VHJh
dmVyc2FsOjpuZXh0U2libGluZyhwcmV2aW91cy0+cGFyZW50Tm9kZSgpKTsKICAgICBmb3IgKDsg
Y2hpbGQ7IGNoaWxkID0gRWxlbWVudFRyYXZlcnNhbDo6bmV4dFNpYmxpbmcoY2hpbGQpKSB7Ci0g
ICAgICAgIGlmIChpc0hUTUxUYWJsZVJvd0VsZW1lbnQoY2hpbGQpKQorICAgICAgICBpZiAoaXM8
SFRNTFRhYmxlUm93RWxlbWVudD4oY2hpbGQpKQogICAgICAgICAgICAgcmV0dXJuIGRvd25jYXN0
PEhUTUxUYWJsZVJvd0VsZW1lbnQ+KGNoaWxkKTsKICAgICAgICAgaWYgKGNoaWxkLT5oYXNUYWdO
YW1lKHRib2R5VGFnKSkgewogICAgICAgICAgICAgaWYgKGF1dG8gcm93ID0gY2hpbGRyZW5PZlR5
cGU8SFRNTFRhYmxlUm93RWxlbWVudD4oKmNoaWxkKS5maXJzdCgpKQpAQCAtMTMwLDcgKzEzMCw3
IEBAIEhUTUxUYWJsZVJvd0VsZW1lbnQqIEhUTUxUYWJsZVJvd3NDb2xsZWN0aW9uOjpsYXN0Um93
KEhUTUxUYWJsZUVsZW1lbnQqIHRhYmxlKQogICAgIH0KIAogICAgIGZvciAoYXV0byogY2hpbGQg
PSBFbGVtZW50VHJhdmVyc2FsOjpsYXN0Q2hpbGQodGFibGUpOyBjaGlsZDsgY2hpbGQgPSBFbGVt
ZW50VHJhdmVyc2FsOjpwcmV2aW91c1NpYmxpbmcoY2hpbGQpKSB7Ci0gICAgICAgIGlmIChpc0hU
TUxUYWJsZVJvd0VsZW1lbnQoY2hpbGQpKQorICAgICAgICBpZiAoaXM8SFRNTFRhYmxlUm93RWxl
bWVudD4oY2hpbGQpKQogICAgICAgICAgICAgcmV0dXJuIGRvd25jYXN0PEhUTUxUYWJsZVJvd0Vs
ZW1lbnQ+KGNoaWxkKTsKICAgICAgICAgaWYgKGNoaWxkLT5oYXNUYWdOYW1lKHRib2R5VGFnKSkg
ewogICAgICAgICAgICAgaWYgKGF1dG8qIHJvdyA9IGNoaWxkcmVuT2ZUeXBlPEhUTUxUYWJsZVJv
d0VsZW1lbnQ+KCpjaGlsZCkubGFzdCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MVGFnTmFtZXMuaW4gYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWdOYW1lcy5pbgpp
bmRleCAxMmE1YzBmNzc1NTk5YzkwZDBjMzg2MTAwZTg1NTgzNDVkM2E1MDllLi5iYWQ0ZTFhNzY1
Mzg2YmE0YmQ3YjMyMjRiM2IwM2Y3OWU0NDY2MDM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxUYWdOYW1lcy5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWdO
YW1lcy5pbgpAQCAtNjAsNyArNjAsNyBAQCBoNiBpbnRlcmZhY2VOYW1lPUhUTUxIZWFkaW5nRWxl
bWVudAogaGVhZCBnZW5lcmF0ZVR5cGVIZWxwZXJzCiBoZWFkZXIgaW50ZXJmYWNlTmFtZT1IVE1M
RWxlbWVudAogaGdyb3VwIGludGVyZmFjZU5hbWU9SFRNTEVsZW1lbnQKLWhyIGludGVyZmFjZU5h
bWU9SFRNTEhSRWxlbWVudAoraHIgaW50ZXJmYWNlTmFtZT1IVE1MSFJFbGVtZW50LCBnZW5lcmF0
ZVR5cGVIZWxwZXJzCiBodG1sIGdlbmVyYXRlVHlwZUhlbHBlcnMKIGkgaW50ZXJmYWNlTmFtZT1I
VE1MRWxlbWVudAogaWZyYW1lIGludGVyZmFjZU5hbWU9SFRNTElGcmFtZUVsZW1lbnQsIGdlbmVy
YXRlVHlwZUhlbHBlcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTGFiZWxzTm9k
ZUxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9MYWJlbHNOb2RlTGlzdC5jcHAKaW5kZXgg
OGMyOTYyMDYwZjJiZDA4ZWRhNjc4YjBhMGIxNGNlYWE0YTQ1NDQ5YS4uMTFjZjA3YmE5YzUzMGE4
NmYyYjZkNjQ2Nzg1MWE2ZTJhNzQyZWE5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9MYWJlbHNOb2RlTGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9MYWJlbHNOb2Rl
TGlzdC5jcHAKQEAgLTQ1LDcgKzQ1LDcgQEAgTGFiZWxzTm9kZUxpc3Q6On5MYWJlbHNOb2RlTGlz
dCgpCiAgICAgCiBib29sIExhYmVsc05vZGVMaXN0OjplbGVtZW50TWF0Y2hlcyhFbGVtZW50JiB0
ZXN0Tm9kZSkgY29uc3QKIHsKLSAgICByZXR1cm4gaXNIVE1MTGFiZWxFbGVtZW50KHRlc3ROb2Rl
KSAmJiBkb3duY2FzdDxIVE1MTGFiZWxFbGVtZW50Pih0ZXN0Tm9kZSkuY29udHJvbCgpID09ICZv
d25lck5vZGUoKTsKKyAgICByZXR1cm4gaXM8SFRNTExhYmVsRWxlbWVudD4odGVzdE5vZGUpICYm
IGRvd25jYXN0PEhUTUxMYWJlbEVsZW1lbnQ+KHRlc3ROb2RlKS5jb250cm9sKCkgPT0gJm93bmVy
Tm9kZSgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL01lZGlhRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRp
YURvY3VtZW50LmNwcAppbmRleCAwYzI1YjNiZmJkZTI2MWZkMDJhNmFlNDk4NjRkNTUxYTIxYWY1
OGY5Li45NWFmZDkyNGNjYmMxMmI4ZTQ3ZDZhYTZhNzBlM2JiYmQ3ZTQ3ZDdmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvTWVkaWFEb2N1bWVudC5jcHAKQEAgLTE2MCw3ICsxNjAsNyBAQCBQYXNzUmVmUHRy
PERvY3VtZW50UGFyc2VyPiBNZWRpYURvY3VtZW50OjpjcmVhdGVQYXJzZXIoKQogCiBzdGF0aWMg
aW5saW5lIEhUTUxWaWRlb0VsZW1lbnQqIGRlc2NlbmRlbnRWaWRlb0VsZW1lbnQoQ29udGFpbmVy
Tm9kZSYgbm9kZSkKIHsKLSAgICBpZiAoaXNIVE1MVmlkZW9FbGVtZW50KG5vZGUpKQorICAgIGlm
IChpczxIVE1MVmlkZW9FbGVtZW50Pihub2RlKSkKICAgICAgICAgcmV0dXJuIGRvd25jYXN0PEhU
TUxWaWRlb0VsZW1lbnQ+KCZub2RlKTsKIAogICAgIFJlZlB0cjxOb2RlTGlzdD4gbm9kZUxpc3Qg
PSBub2RlLmdldEVsZW1lbnRzQnlUYWdOYW1lTlModmlkZW9UYWcubmFtZXNwYWNlVVJJKCksIHZp
ZGVvVGFnLmxvY2FsTmFtZSgpKTsKQEAgLTE3Myw3ICsxNzMsNyBAQCBzdGF0aWMgaW5saW5lIEhU
TUxWaWRlb0VsZW1lbnQqIGRlc2NlbmRlbnRWaWRlb0VsZW1lbnQoQ29udGFpbmVyTm9kZSYgbm9k
ZSkKIAogc3RhdGljIGlubGluZSBIVE1MVmlkZW9FbGVtZW50KiBhbmNlc3RvclZpZGVvRWxlbWVu
dChOb2RlKiBub2RlKQogewotICAgIHdoaWxlIChub2RlICYmICFpc0hUTUxWaWRlb0VsZW1lbnQo
bm9kZSkpCisgICAgd2hpbGUgKG5vZGUgJiYgIWlzPEhUTUxWaWRlb0VsZW1lbnQ+KG5vZGUpKQog
ICAgICAgICBub2RlID0gbm9kZS0+cGFyZW50T3JTaGFkb3dIb3N0Tm9kZSgpOwogCiAgICAgcmV0
dXJuIGRvd25jYXN0PEhUTUxWaWRlb0VsZW1lbnQ+KG5vZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9SYWRpb0lucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1Jh
ZGlvSW5wdXRUeXBlLmNwcAppbmRleCA4YTVlODg1MTBlMTZiOWRmZmIzZTQ2ZTg2NTgwY2MwNDEw
ZTg1NzYwLi41ZjVlYzc1NDJiZDE4MjgwZTdkZmU1NjUxNDgxZWE1Y2IxNDQxNTJiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1JhZGlvSW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL1JhZGlvSW5wdXRUeXBlLmNwcApAQCAtODEsNyArODEsNyBAQCB2b2lkIFJh
ZGlvSW5wdXRUeXBlOjpoYW5kbGVLZXlkb3duRXZlbnQoS2V5Ym9hcmRFdmVudCogZXZlbnQpCiAg
ICAgTm9kZSogbm9kZSA9ICZlbGVtZW50KCk7CiAgICAgd2hpbGUgKChub2RlID0gKGZvcndhcmQg
PyBOb2RlVHJhdmVyc2FsOjpuZXh0KG5vZGUpIDogTm9kZVRyYXZlcnNhbDo6cHJldmlvdXMobm9k
ZSkpKSkgewogICAgICAgICAvLyBPbmNlIHdlIGVuY291bnRlciBhIGZvcm0gZWxlbWVudCwgd2Ug
a25vdyB3ZSdyZSB0aHJvdWdoLgotICAgICAgICBpZiAoaXNIVE1MRm9ybUVsZW1lbnQobm9kZSkp
CisgICAgICAgIGlmIChpczxIVE1MRm9ybUVsZW1lbnQ+KG5vZGUpKQogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIC8vIExvb2sgZm9yIG1vcmUgcmFkaW8gYnV0dG9ucy4KICAgICAgICAgaWYg
KCFpczxIVE1MSW5wdXRFbGVtZW50Pihub2RlKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvUmFkaW9Ob2RlTGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1JhZGlvTm9kZUxp
c3QuY3BwCmluZGV4IDhkNDY5MjExZDZlMTFjOTgxYmJiYzNmODQ1MTdmMGYyODQ5ZjBkNzMuLjVl
NDAyNWVjYzA4ZDUzNjkzMDMzZDMwN2ZkMjVmZGEzMjZkZTYyNDEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvUmFkaW9Ob2RlTGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9SYWRpb05vZGVMaXN0LmNwcApAQCAtNDEsNyArNDEsNyBAQCB1c2luZyBuYW1lc3BhY2UgSFRN
TE5hbWVzOwogUmFkaW9Ob2RlTGlzdDo6UmFkaW9Ob2RlTGlzdChDb250YWluZXJOb2RlJiByb290
Tm9kZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKQogICAgIDogQ2FjaGVkTGl2ZU5vZGVMaXN0
KHJvb3ROb2RlLCBJbnZhbGlkYXRlRm9yRm9ybUNvbnRyb2xzKQogICAgICwgbV9uYW1lKG5hbWUp
Ci0gICAgLCBtX2lzUm9vdGVkQXREb2N1bWVudChpc0hUTUxGb3JtRWxlbWVudChvd25lck5vZGUo
KSkpCisgICAgLCBtX2lzUm9vdGVkQXREb2N1bWVudChpczxIVE1MRm9ybUVsZW1lbnQ+KG93bmVy
Tm9kZSgpKSkKIHsKIH0KIApAQCAtODYsNyArODYsNyBAQCB2b2lkIFJhZGlvTm9kZUxpc3Q6OnNl
dFZhbHVlKGNvbnN0IFN0cmluZyYgdmFsdWUpCiBib29sIFJhZGlvTm9kZUxpc3Q6OmNoZWNrRWxl
bWVudE1hdGNoZXNSYWRpb05vZGVMaXN0RmlsdGVyKGNvbnN0IEVsZW1lbnQmIHRlc3RFbGVtZW50
KSBjb25zdAogewogICAgIEFTU0VSVChpczxIVE1MT2JqZWN0RWxlbWVudD4odGVzdEVsZW1lbnQp
IHx8IGlzPEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ+KHRlc3RFbGVtZW50KSk7Ci0gICAgaWYgKGlz
SFRNTEZvcm1FbGVtZW50KG93bmVyTm9kZSgpKSkgeworICAgIGlmIChpczxIVE1MRm9ybUVsZW1l
bnQ+KG93bmVyTm9kZSgpKSkgewogICAgICAgICBIVE1MRm9ybUVsZW1lbnQqIGZvcm1FbGVtZW50
ID0gbnVsbHB0cjsKICAgICAgICAgaWYgKHRlc3RFbGVtZW50Lmhhc1RhZ05hbWUob2JqZWN0VGFn
KSkKICAgICAgICAgICAgIGZvcm1FbGVtZW50ID0gZG93bmNhc3Q8SFRNTE9iamVjdEVsZW1lbnQ+
KHRlc3RFbGVtZW50KS5mb3JtKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3Bh
cnNlci9IVE1MQ29uc3RydWN0aW9uU2l0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNl
ci9IVE1MQ29uc3RydWN0aW9uU2l0ZS5jcHAKaW5kZXggYjc4ZGU2MGI0MjdiYmRlMmViNmMyZjUx
M2Q5ZTRiZDU4ZjYwZjUyMi4uOTAzOTZmZmZiNTgyN2Y5NGE1NzljMjJjNTcyMTlhMWU4MGQyZTll
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTENvbnN0cnVjdGlv
blNpdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rp
b25TaXRlLmNwcApAQCAtNjIsNyArNjIsNyBAQCBzdGF0aWMgYm9vbCBoYXNJbXBsaWVkRW5kVGFn
KGNvbnN0IEhUTUxTdGFja0l0ZW0qIGl0ZW0pCiAgICAgICAgIHx8IGl0ZW0tPmhhc1RhZ05hbWUo
ZHRUYWcpCiAgICAgICAgIHx8IGl0ZW0tPmhhc1RhZ05hbWUobGlUYWcpCiAgICAgICAgIHx8IGlz
PEhUTUxPcHRpb25FbGVtZW50PihpdGVtLT5ub2RlKCkpCi0gICAgICAgIHx8IGlzSFRNTE9wdEdy
b3VwRWxlbWVudChpdGVtLT5ub2RlKCkpCisgICAgICAgIHx8IGlzPEhUTUxPcHRHcm91cEVsZW1l
bnQ+KGl0ZW0tPm5vZGUoKSkKICAgICAgICAgfHwgaXRlbS0+aGFzVGFnTmFtZShwVGFnKQogICAg
ICAgICB8fCBpdGVtLT5oYXNUYWdOYW1lKHJiVGFnKQogICAgICAgICB8fCBpdGVtLT5oYXNUYWdO
YW1lKHJwVGFnKQpAQCAtODUsNyArODUsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNBbGxXaGl0
ZXNwYWNlKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogc3RhdGljIGlubGluZSB2b2lkIGluc2VydChI
VE1MQ29uc3RydWN0aW9uU2l0ZVRhc2smIHRhc2spCiB7CiAjaWYgRU5BQkxFKFRFTVBMQVRFX0VM
RU1FTlQpCi0gICAgaWYgKGlzSFRNTFRlbXBsYXRlRWxlbWVudCgqdGFzay5wYXJlbnQpKQorICAg
IGlmIChpczxIVE1MVGVtcGxhdGVFbGVtZW50PigqdGFzay5wYXJlbnQpKQogICAgICAgICB0YXNr
LnBhcmVudCA9IGRvd25jYXN0PEhUTUxUZW1wbGF0ZUVsZW1lbnQ+KCp0YXNrLnBhcmVudCkuY29u
dGVudCgpOwogI2VuZGlmCiAKQEAgLTQ1OCw3ICs0NTgsNyBAQCB2b2lkIEhUTUxDb25zdHJ1Y3Rp
b25TaXRlOjppbnNlcnRIVE1MQm9keUVsZW1lbnQoQXRvbWljSFRNTFRva2VuKiB0b2tlbikKIHZv
aWQgSFRNTENvbnN0cnVjdGlvblNpdGU6Omluc2VydEhUTUxGb3JtRWxlbWVudChBdG9taWNIVE1M
VG9rZW4qIHRva2VuLCBib29sIGlzRGVtb3RlZCkKIHsKICAgICBSZWZQdHI8RWxlbWVudD4gZWxl
bWVudCA9IGNyZWF0ZUhUTUxFbGVtZW50KHRva2VuKTsKLSAgICBBU1NFUlQoaXNIVE1MRm9ybUVs
ZW1lbnQoZWxlbWVudC5nZXQoKSkpOworICAgIEFTU0VSVChpczxIVE1MRm9ybUVsZW1lbnQ+KGVs
ZW1lbnQuZ2V0KCkpKTsKICAgICBSZWZQdHI8SFRNTEZvcm1FbGVtZW50PiBmb3JtID0gc3RhdGlj
X3BvaW50ZXJfY2FzdDxIVE1MRm9ybUVsZW1lbnQ+KGVsZW1lbnQucmVsZWFzZSgpKTsKICAgICBp
ZiAoIWluc2lkZVRlbXBsYXRlRWxlbWVudCgpKQogICAgICAgICBtX2Zvcm0gPSBmb3JtOwpAQCAt
NTMxLDcgKzUzMSw3IEBAIHZvaWQgSFRNTENvbnN0cnVjdGlvblNpdGU6Omluc2VydFRleHROb2Rl
KGNvbnN0IFN0cmluZyYgY2hhcmFjdGVycywgV2hpdGVzcGFjZU1vCiAgICAgICAgIGZpbmRGb3N0
ZXJTaXRlKHRhc2spOwogCiAjaWYgRU5BQkxFKFRFTVBMQVRFX0VMRU1FTlQpCi0gICAgaWYgKGlz
SFRNTFRlbXBsYXRlRWxlbWVudCgqdGFzay5wYXJlbnQpKQorICAgIGlmIChpczxIVE1MVGVtcGxh
dGVFbGVtZW50PigqdGFzay5wYXJlbnQpKQogICAgICAgICB0YXNrLnBhcmVudCA9IGRvd25jYXN0
PEhUTUxUZW1wbGF0ZUVsZW1lbnQ+KCp0YXNrLnBhcmVudCkuY29udGVudCgpOwogI2VuZGlmCiAK
QEAgLTYxOCw3ICs2MTgsNyBAQCBQYXNzUmVmUHRyPEVsZW1lbnQ+IEhUTUxDb25zdHJ1Y3Rpb25T
aXRlOjpjcmVhdGVFbGVtZW50KEF0b21pY0hUTUxUb2tlbiogdG9rZW4sCiBpbmxpbmUgRG9jdW1l
bnQmIEhUTUxDb25zdHJ1Y3Rpb25TaXRlOjpvd25lckRvY3VtZW50Rm9yQ3VycmVudE5vZGUoKQog
ewogI2lmIEVOQUJMRShURU1QTEFURV9FTEVNRU5UKQotICAgIGlmIChpc0hUTUxUZW1wbGF0ZUVs
ZW1lbnQoY3VycmVudE5vZGUoKSkpCisgICAgaWYgKGlzPEhUTUxUZW1wbGF0ZUVsZW1lbnQ+KGN1
cnJlbnROb2RlKCkpKQogICAgICAgICByZXR1cm4gZG93bmNhc3Q8SFRNTFRlbXBsYXRlRWxlbWVu
dD4oKmN1cnJlbnRFbGVtZW50KCkpLmNvbnRlbnQoKS0+ZG9jdW1lbnQoKTsKICNlbmRpZgogICAg
IHJldHVybiBjdXJyZW50Tm9kZSgpLT5kb2N1bWVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9wYXJzZXIvSFRNTEVsZW1lbnRTdGFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3BhcnNlci9IVE1MRWxlbWVudFN0YWNrLmNwcAppbmRleCBhZGEyMGNkYWEzMjMzMjY3ZWM0
OWZmODM4MWU3MDAyYTU0NDc3ZTM1Li5jZDZhMjAxMGZkMTdlNjQwNWQ4YjNiMGQ0MjU3MzgwYjA5
OTQ5Y2I2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRWxlbWVu
dFN0YWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRWxlbWVudFN0
YWNrLmNwcApAQCAtNTEsNyArNTEsNyBAQCBpbmxpbmUgYm9vbCBpc1Njb3BlTWFya2VyKEhUTUxT
dGFja0l0ZW0qIGl0ZW0pCiAgICAgICAgIHx8IGl0ZW0tPmhhc1RhZ05hbWUoY2FwdGlvblRhZykK
ICAgICAgICAgfHwgaXRlbS0+aGFzVGFnTmFtZShtYXJxdWVlVGFnKQogICAgICAgICB8fCBpdGVt
LT5oYXNUYWdOYW1lKG9iamVjdFRhZykKLSAgICAgICAgfHwgaXNIVE1MVGFibGVFbGVtZW50KGl0
ZW0tPm5vZGUoKSkKKyAgICAgICAgfHwgaXM8SFRNTFRhYmxlRWxlbWVudD4oaXRlbS0+bm9kZSgp
KQogICAgICAgICB8fCBpdGVtLT5oYXNUYWdOYW1lKHRkVGFnKQogICAgICAgICB8fCBpdGVtLT5o
YXNUYWdOYW1lKHRoVGFnKQogICAgICAgICB8fCBpdGVtLT5oYXNUYWdOYW1lKE1hdGhNTE5hbWVz
OjptaVRhZykKQEAgLTc4LDcgKzc4LDcgQEAgaW5saW5lIGJvb2wgaXNMaXN0SXRlbVNjb3BlTWFy
a2VyKEhUTUxTdGFja0l0ZW0qIGl0ZW0pCiAKIGlubGluZSBib29sIGlzVGFibGVTY29wZU1hcmtl
cihIVE1MU3RhY2tJdGVtKiBpdGVtKQogewotICAgIHJldHVybiBpc0hUTUxUYWJsZUVsZW1lbnQo
aXRlbS0+bm9kZSgpKQorICAgIHJldHVybiBpczxIVE1MVGFibGVFbGVtZW50PihpdGVtLT5ub2Rl
KCkpCiAjaWYgRU5BQkxFKFRFTVBMQVRFX0VMRU1FTlQpCiAgICAgICAgIHx8IGl0ZW0tPmhhc1Rh
Z05hbWUodGVtcGxhdGVUYWcpCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNl
ci9IVE1MVHJlZUJ1aWxkZXIuY3BwCmluZGV4IGE0ODk2YzU4ZWE2NWVhOGE4OThlZmEwMGM2YjMz
Nzc2OGI0OTg2NzIuLmY3ZWNhYzg1ZDBiNDIxOTViZGUwY2Y2YzI1MDVjNTk2MTA2OTQ2OWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmNwcApAQCAt
Mjk4LDcgKzI5OCw3IEBAIEhUTUxUcmVlQnVpbGRlcjo6SFRNTFRyZWVCdWlsZGVyKEhUTUxEb2N1
bWVudFBhcnNlciYgcGFyc2VyLCBEb2N1bWVudEZyYWdtZW50JiBmCiAjZW5kaWYKIAogICAgICAg
ICByZXNldEluc2VydGlvbk1vZGVBcHByb3ByaWF0ZWx5KCk7Ci0gICAgICAgIG1fdHJlZS5zZXRG
b3JtKCFjb250ZXh0RWxlbWVudCB8fCBpc0hUTUxGb3JtRWxlbWVudChjb250ZXh0RWxlbWVudCkg
PyBkb3duY2FzdDxIVE1MRm9ybUVsZW1lbnQ+KGNvbnRleHRFbGVtZW50KSA6IEhUTUxGb3JtRWxl
bWVudDo6ZmluZENsb3Nlc3RGb3JtQW5jZXN0b3IoKmNvbnRleHRFbGVtZW50KSk7CisgICAgICAg
IG1fdHJlZS5zZXRGb3JtKCFjb250ZXh0RWxlbWVudCB8fCBpczxIVE1MRm9ybUVsZW1lbnQ+KGNv
bnRleHRFbGVtZW50KSA/IGRvd25jYXN0PEhUTUxGb3JtRWxlbWVudD4oY29udGV4dEVsZW1lbnQp
IDogSFRNTEZvcm1FbGVtZW50OjpmaW5kQ2xvc2VzdEZvcm1BbmNlc3RvcigqY29udGV4dEVsZW1l
bnQpKTsKICAgICB9CiB9CiAKQEAgLTEzNzIsNyArMTM3Miw3IEBAIHZvaWQgSFRNTFRyZWVCdWls
ZGVyOjpwcm9jZXNzU3RhcnRUYWcoQXRvbWljSFRNTFRva2VuKiB0b2tlbikKICAgICAgICAgICAg
ICAgICBBdG9taWNIVE1MVG9rZW4gZW5kT3B0aW9uKEhUTUxUb2tlbjo6RW5kVGFnLCBvcHRpb25U
YWcubG9jYWxOYW1lKCkpOwogICAgICAgICAgICAgICAgIHByb2Nlc3NFbmRUYWcoJmVuZE9wdGlv
bik7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoaXNIVE1MT3B0R3JvdXBFbGVtZW50
KG1fdHJlZS5jdXJyZW50U3RhY2tJdGVtKCktPm5vZGUoKSkpIHsKKyAgICAgICAgICAgIGlmIChp
czxIVE1MT3B0R3JvdXBFbGVtZW50PihtX3RyZWUuY3VycmVudFN0YWNrSXRlbSgpLT5ub2RlKCkp
KSB7CiAgICAgICAgICAgICAgICAgQXRvbWljSFRNTFRva2VuIGVuZE9wdGdyb3VwKEhUTUxUb2tl
bjo6RW5kVGFnLCBvcHRncm91cFRhZy5sb2NhbE5hbWUoKSk7CiAgICAgICAgICAgICAgICAgcHJv
Y2Vzc0VuZFRhZygmZW5kT3B0Z3JvdXApOwogICAgICAgICAgICAgfQpAQCAtMTYyOSw3ICsxNjI5
LDcgQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnJlc2V0SW5zZXJ0aW9uTW9kZUFwcHJvcHJpYXRl
bHkoKQogICAgICAgICAgICAgICAgIHdoaWxlIChpdGVtLT5ub2RlKCkgIT0gbV90cmVlLm9wZW5F
bGVtZW50cygpLT5yb290Tm9kZSgpICYmICFpdGVtLT5oYXNUYWdOYW1lKHRlbXBsYXRlVGFnKSkg
ewogICAgICAgICAgICAgICAgICAgICBub2RlUmVjb3JkID0gbm9kZVJlY29yZC0+bmV4dCgpOwog
ICAgICAgICAgICAgICAgICAgICBpdGVtID0gbm9kZVJlY29yZC0+c3RhY2tJdGVtKCk7Ci0gICAg
ICAgICAgICAgICAgICAgIGlmIChpc0hUTUxUYWJsZUVsZW1lbnQoaXRlbS0+bm9kZSgpKSkKKyAg
ICAgICAgICAgICAgICAgICAgaWYgKGlzPEhUTUxUYWJsZUVsZW1lbnQ+KGl0ZW0tPm5vZGUoKSkp
CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2V0SW5zZXJ0aW9uTW9kZShJbnNlcnRp
b25Nb2RlOjpJblNlbGVjdEluVGFibGUpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IH0KQEAgLTE2NDcsNyArMTY0Nyw3IEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpyZXNldEluc2Vy
dGlvbk1vZGVBcHByb3ByaWF0ZWx5KCkKICAgICAgICAgaWYgKGl0ZW0tPmhhc1RhZ05hbWUoY29s
Z3JvdXBUYWcpKSB7CiAgICAgICAgICAgICByZXR1cm4gc2V0SW5zZXJ0aW9uTW9kZShJbnNlcnRp
b25Nb2RlOjpJbkNvbHVtbkdyb3VwKTsKICAgICAgICAgfQotICAgICAgICBpZiAoaXNIVE1MVGFi
bGVFbGVtZW50KGl0ZW0tPm5vZGUoKSkpCisgICAgICAgIGlmIChpczxIVE1MVGFibGVFbGVtZW50
PihpdGVtLT5ub2RlKCkpKQogICAgICAgICAgICAgcmV0dXJuIHNldEluc2VydGlvbk1vZGUoSW5z
ZXJ0aW9uTW9kZTo6SW5UYWJsZSk7CiAgICAgICAgIGlmIChpdGVtLT5oYXNUYWdOYW1lKGhlYWRU
YWcpKSB7CiAjaWYgRU5BQkxFKFRFTVBMQVRFX0VMRU1FTlQpCkBAIC0yMjM0LDkgKzIyMzQsOSBA
QCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0VuZFRhZyhBdG9taWNIVE1MVG9rZW4qIHRv
a2VuKQogICAgIGNhc2UgSW5zZXJ0aW9uTW9kZTo6SW5TZWxlY3Q6CiAgICAgICAgIEFTU0VSVChp
bnNlcnRpb25Nb2RlKCkgPT0gSW5zZXJ0aW9uTW9kZTo6SW5TZWxlY3QgfHwgaW5zZXJ0aW9uTW9k
ZSgpID09IEluc2VydGlvbk1vZGU6OkluU2VsZWN0SW5UYWJsZSk7CiAgICAgICAgIGlmICh0b2tl
bi0+bmFtZSgpID09IG9wdGdyb3VwVGFnKSB7Ci0gICAgICAgICAgICBpZiAoaXM8SFRNTE9wdGlv
bkVsZW1lbnQ+KG1fdHJlZS5jdXJyZW50U3RhY2tJdGVtKCktPm5vZGUoKSkgJiYgbV90cmVlLm9u
ZUJlbG93VG9wKCkgJiYgaXNIVE1MT3B0R3JvdXBFbGVtZW50KG1fdHJlZS5vbmVCZWxvd1RvcCgp
LT5ub2RlKCkpKQorICAgICAgICAgICAgaWYgKGlzPEhUTUxPcHRpb25FbGVtZW50PihtX3RyZWUu
Y3VycmVudFN0YWNrSXRlbSgpLT5ub2RlKCkpICYmIG1fdHJlZS5vbmVCZWxvd1RvcCgpICYmIGlz
PEhUTUxPcHRHcm91cEVsZW1lbnQ+KG1fdHJlZS5vbmVCZWxvd1RvcCgpLT5ub2RlKCkpKQogICAg
ICAgICAgICAgICAgIHByb2Nlc3NGYWtlRW5kVGFnKG9wdGlvblRhZyk7Ci0gICAgICAgICAgICBp
ZiAoaXNIVE1MT3B0R3JvdXBFbGVtZW50KG1fdHJlZS5jdXJyZW50U3RhY2tJdGVtKCktPm5vZGUo
KSkpIHsKKyAgICAgICAgICAgIGlmIChpczxIVE1MT3B0R3JvdXBFbGVtZW50PihtX3RyZWUuY3Vy
cmVudFN0YWNrSXRlbSgpLT5ub2RlKCkpKSB7CiAgICAgICAgICAgICAgICAgbV90cmVlLm9wZW5F
bGVtZW50cygpLT5wb3AoKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9
CkBAIC0yNDg2LDcgKzI0ODYsNyBAQCBSZXByb2Nlc3NCdWZmZXI6CiAgICAgICAgIEFTU0VSVChp
bnNlcnRpb25Nb2RlKCkgPT0gSW5zZXJ0aW9uTW9kZTo6SW5UYWJsZSB8fCBpbnNlcnRpb25Nb2Rl
KCkgPT0gSW5zZXJ0aW9uTW9kZTo6SW5UYWJsZUJvZHkgfHwgaW5zZXJ0aW9uTW9kZSgpID09IElu
c2VydGlvbk1vZGU6OkluUm93KTsKICAgICAgICAgQVNTRVJUKG1fcGVuZGluZ1RhYmxlQ2hhcmFj
dGVycy5pc0VtcHR5KCkpOwogICAgICAgICBpZiAobV90cmVlLmN1cnJlbnRTdGFja0l0ZW0oKS0+
aXNFbGVtZW50Tm9kZSgpCi0gICAgICAgICAgICAmJiAoaXNIVE1MVGFibGVFbGVtZW50KG1fdHJl
ZS5jdXJyZW50U3RhY2tJdGVtKCktPm5vZGUoKSkKKyAgICAgICAgICAgICYmIChpczxIVE1MVGFi
bGVFbGVtZW50PihtX3RyZWUuY3VycmVudFN0YWNrSXRlbSgpLT5ub2RlKCkpCiAgICAgICAgICAg
ICAgICAgfHwgbV90cmVlLmN1cnJlbnRTdGFja0l0ZW0oKS0+aGFzVGFnTmFtZShIVE1MTmFtZXM6
OnRib2R5VGFnKQogICAgICAgICAgICAgICAgIHx8IG1fdHJlZS5jdXJyZW50U3RhY2tJdGVtKCkt
Pmhhc1RhZ05hbWUoSFRNTE5hbWVzOjp0Zm9vdFRhZykKICAgICAgICAgICAgICAgICB8fCBtX3Ry
ZWUuY3VycmVudFN0YWNrSXRlbSgpLT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6dGhlYWRUYWcpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcAppbmRleCBi
YmEzOWY2NmYxNTFiNTkyNmE0ZjBmM2E2NTAwZWRhYWY4ZTVmZTU1Li4wZjhhMjlkYjIwYzQ5MDJm
YzgxOTY0NjE4M2U1OTBiODI3YmI0YjU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JET01BZ2VudC5jcHAKQEAgLTEyOTcsNyArMTI5Nyw3IEBAIFBhc3NSZWZQdHI8
SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpOb2RlPiBJbnNwZWN0b3JET01BZ2VudDo6YnVpbGRP
YmplY3RGb3JOb2RlCiAgICAgICAgIH0KIAogI2lmIEVOQUJMRShURU1QTEFURV9FTEVNRU5UKQot
ICAgICAgICBpZiAoaXNIVE1MVGVtcGxhdGVFbGVtZW50KGVsZW1lbnQpKQorICAgICAgICBpZiAo
aXM8SFRNTFRlbXBsYXRlRWxlbWVudD4oZWxlbWVudCkpCiAgICAgICAgICAgICB2YWx1ZS0+c2V0
VGVtcGxhdGVDb250ZW50KGJ1aWxkT2JqZWN0Rm9yTm9kZShkb3duY2FzdDxIVE1MVGVtcGxhdGVF
bGVtZW50PigqZWxlbWVudCkuY29udGVudCgpLCAwLCBub2Rlc01hcCkpOwogI2VuZGlmCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcAppbmRl
eCBhMzVmMWU2NTdhZGMyOWIxNDVjMDljZjQ3ZTgzN2I5ZWZmYmM0MmNiLi43MjFhYmUzMmRkOTQ1
ZjQzYWZmOWQzYWQzY2QzZjcyZjIzYWU3NzIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwCkBAIC0xMzkyLDcgKzEzOTIsNyBAQCBib29s
IEluc3BlY3RvclN0eWxlU2hlZXQ6OmlubGluZVN0eWxlU2hlZXRUZXh0KFN0cmluZyogcmVzdWx0
KSBjb25zdAogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgRWxlbWVudCogb3duZXJFbGVtZW50
ID0gdG9FbGVtZW50KG93bmVyTm9kZSk7CiAKLSAgICBpZiAoIWlzSFRNTFN0eWxlRWxlbWVudChv
d25lckVsZW1lbnQpICYmICFvd25lckVsZW1lbnQtPmhhc1RhZ05hbWUoU1ZHTmFtZXM6OnN0eWxl
VGFnKSkKKyAgICBpZiAoIWlzPEhUTUxTdHlsZUVsZW1lbnQ+KG93bmVyRWxlbWVudCkgJiYgIWlz
PFNWR1N0eWxlRWxlbWVudD4ob3duZXJFbGVtZW50KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgICpyZXN1bHQgPSBvd25lckVsZW1lbnQtPnRleHRDb250ZW50KCk7CiAgICAgcmV0dXJuIHRy
dWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCmluZGV4IDVhZDMzYmMxNjhl
MThjZGZiNDJhOTRmZjMyMmQzZTY0MDlmOTIwMzAuLjE3OWVlYTU4ZTRjZmNlZGYxMWJmNjk5ZTkw
ZDE5ZjBkZDU4ODZiNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRy
b2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCkBA
IC02MzksMTMgKzYzOSwxMyBAQCBFbGVtZW50KiBEcmFnQ29udHJvbGxlcjo6ZHJhZ2dhYmxlRWxl
bWVudChjb25zdCBGcmFtZSogc291cmNlRnJhbWUsIEVsZW1lbnQqIHN0YQogICAgICAgICB9CiAg
ICAgICAgIGlmIChkcmFnTW9kZSA9PSBEUkFHX0FVVE8pIHsKICAgICAgICAgICAgIGlmICgobV9k
cmFnU291cmNlQWN0aW9uICYgRHJhZ1NvdXJjZUFjdGlvbkltYWdlKQotICAgICAgICAgICAgICAg
ICYmIGlzSFRNTEltYWdlRWxlbWVudChlbGVtZW50KQorICAgICAgICAgICAgICAgICYmIGlzPEhU
TUxJbWFnZUVsZW1lbnQ+KGVsZW1lbnQpCiAgICAgICAgICAgICAgICAgJiYgc291cmNlRnJhbWUt
PnNldHRpbmdzKCkubG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5KCkpIHsKICAgICAgICAgICAgICAg
ICBzdGF0ZS50eXBlID0gc3RhdGljX2Nhc3Q8RHJhZ1NvdXJjZUFjdGlvbj4oc3RhdGUudHlwZSB8
IERyYWdTb3VyY2VBY3Rpb25JbWFnZSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQ7
CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoKG1fZHJhZ1NvdXJjZUFjdGlvbiAmIERy
YWdTb3VyY2VBY3Rpb25MaW5rKQotICAgICAgICAgICAgICAgICYmIGlzSFRNTEFuY2hvckVsZW1l
bnQoZWxlbWVudCkKKyAgICAgICAgICAgICAgICAmJiBpczxIVE1MQW5jaG9yRWxlbWVudD4oZWxl
bWVudCkKICAgICAgICAgICAgICAgICAmJiBkb3duY2FzdDxIVE1MQW5jaG9yRWxlbWVudD4oKmVs
ZW1lbnQpLmlzTGl2ZUxpbmsoKSkgewogICAgICAgICAgICAgICAgIHN0YXRlLnR5cGUgPSBzdGF0
aWNfY2FzdDxEcmFnU291cmNlQWN0aW9uPihzdGF0ZS50eXBlIHwgRHJhZ1NvdXJjZUFjdGlvbkxp
bmspOwogICAgICAgICAgICAgICAgIHJldHVybiBlbGVtZW50OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9G
b2N1c0NvbnRyb2xsZXIuY3BwCmluZGV4IGY3YmQ3MjIxOTUzZjE5MTE5NDQwZjVhNzhjODMzMDM1
YTk3MzZmY2YuLmVjODU2MDZlOTk3Mjk5OTU2N2VhMTRmMzAwM2ZkNDQwYWY0NTY2MGYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9sbGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0ZvY3VzQ29udHJvbGxlci5jcHAKQEAgLTg4NCw3ICs4ODQsNyBAQCBi
b29sIEZvY3VzQ29udHJvbGxlcjo6YWR2YW5jZUZvY3VzRGlyZWN0aW9uYWxseShGb2N1c0RpcmVj
dGlvbiBkaXJlY3Rpb24sIEtleWJvYQogICAgICAgICBpZiAoIWhhc09mZnNjcmVlblJlY3QoZm9j
dXNlZEVsZW1lbnQpKSB7CiAgICAgICAgICAgICBjb250YWluZXIgPSBzY3JvbGxhYmxlRW5jbG9z
aW5nQm94T3JQYXJlbnRGcmFtZUZvck5vZGVJbkRpcmVjdGlvbihkaXJlY3Rpb24sIGZvY3VzZWRF
bGVtZW50KTsKICAgICAgICAgICAgIHN0YXJ0aW5nUmVjdCA9IG5vZGVSZWN0SW5BYnNvbHV0ZUNv
b3JkaW5hdGVzKGZvY3VzZWRFbGVtZW50LCB0cnVlIC8qIGlnbm9yZSBib3JkZXIgKi8pOwotICAg
ICAgICB9IGVsc2UgaWYgKGlzSFRNTEFyZWFFbGVtZW50KGZvY3VzZWRFbGVtZW50KSkgeworICAg
ICAgICB9IGVsc2UgaWYgKGlzPEhUTUxBcmVhRWxlbWVudD4oZm9jdXNlZEVsZW1lbnQpKSB7CiAg
ICAgICAgICAgICBIVE1MQXJlYUVsZW1lbnQmIGFyZWEgPSBkb3duY2FzdDxIVE1MQXJlYUVsZW1l
bnQ+KCpmb2N1c2VkRWxlbWVudCk7CiAgICAgICAgICAgICBjb250YWluZXIgPSBzY3JvbGxhYmxl
RW5jbG9zaW5nQm94T3JQYXJlbnRGcmFtZUZvck5vZGVJbkRpcmVjdGlvbihkaXJlY3Rpb24sIGFy
ZWEuaW1hZ2VFbGVtZW50KCkpOwogICAgICAgICAgICAgc3RhcnRpbmdSZWN0ID0gdmlydHVhbFJl
Y3RGb3JBcmVhRWxlbWVudEFuZERpcmVjdGlvbigmYXJlYSwgZGlyZWN0aW9uKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9QYWdlU2VyaWFsaXplci5jcHAKaW5kZXggOGNjNjhlOTk5MDMyMDVjY2Q3YzhlODU4
NWYzMjY2MmU2MzUzYjA4OC4uOGUxZGNlZmM5MzRjNGM5NGFlMjYzMDAxMmYxYTc4NGI0NmJhODhh
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5jcHAKQEAgLTIzMCwxOSArMjMw
LDE5IEBAIHZvaWQgUGFnZVNlcmlhbGl6ZXI6OnNlcmlhbGl6ZUZyYW1lKEZyYW1lKiBmcmFtZSkK
ICAgICAgICAgaWYgKGVsZW1lbnQtPmlzU3R5bGVkRWxlbWVudCgpKQogICAgICAgICAgICAgcmV0
cmlldmVSZXNvdXJjZXNGb3JQcm9wZXJ0aWVzKHRvU3R5bGVkRWxlbWVudChlbGVtZW50KS0+aW5s
aW5lU3R5bGUoKSwgZG9jdW1lbnQpOwogCi0gICAgICAgIGlmIChpc0hUTUxJbWFnZUVsZW1lbnQo
ZWxlbWVudCkpIHsKKyAgICAgICAgaWYgKGlzPEhUTUxJbWFnZUVsZW1lbnQ+KGVsZW1lbnQpKSB7
CiAgICAgICAgICAgICBIVE1MSW1hZ2VFbGVtZW50JiBpbWFnZUVsZW1lbnQgPSBkb3duY2FzdDxI
VE1MSW1hZ2VFbGVtZW50PigqZWxlbWVudCk7CiAgICAgICAgICAgICBVUkwgdXJsID0gZG9jdW1l
bnQtPmNvbXBsZXRlVVJMKGltYWdlRWxlbWVudC5mYXN0R2V0QXR0cmlidXRlKEhUTUxOYW1lczo6
c3JjQXR0cikpOwogICAgICAgICAgICAgQ2FjaGVkSW1hZ2UqIGNhY2hlZEltYWdlID0gaW1hZ2VF
bGVtZW50LmNhY2hlZEltYWdlKCk7CiAgICAgICAgICAgICBhZGRJbWFnZVRvUmVzb3VyY2VzKGNh
Y2hlZEltYWdlLCBpbWFnZUVsZW1lbnQucmVuZGVyZXIoKSwgdXJsKTsKLSAgICAgICAgfSBlbHNl
IGlmIChpc0hUTUxMaW5rRWxlbWVudChlbGVtZW50KSkgeworICAgICAgICB9IGVsc2UgaWYgKGlz
PEhUTUxMaW5rRWxlbWVudD4oZWxlbWVudCkpIHsKICAgICAgICAgICAgIEhUTUxMaW5rRWxlbWVu
dCYgbGlua0VsZW1lbnQgPSBkb3duY2FzdDxIVE1MTGlua0VsZW1lbnQ+KCplbGVtZW50KTsKICAg
ICAgICAgICAgIGlmIChDU1NTdHlsZVNoZWV0KiBzaGVldCA9IGxpbmtFbGVtZW50LnNoZWV0KCkp
IHsKICAgICAgICAgICAgICAgICBVUkwgdXJsID0gZG9jdW1lbnQtPmNvbXBsZXRlVVJMKGxpbmtF
bGVtZW50LmdldEF0dHJpYnV0ZShIVE1MTmFtZXM6OmhyZWZBdHRyKSk7CiAgICAgICAgICAgICAg
ICAgc2VyaWFsaXplQ1NTU3R5bGVTaGVldChzaGVldCwgdXJsKTsKICAgICAgICAgICAgICAgICBB
U1NFUlQobV9yZXNvdXJjZVVSTHMuY29udGFpbnModXJsKSk7CiAgICAgICAgICAgICB9Ci0gICAg
ICAgIH0gZWxzZSBpZiAoaXNIVE1MU3R5bGVFbGVtZW50KGVsZW1lbnQpKSB7CisgICAgICAgIH0g
ZWxzZSBpZiAoaXM8SFRNTFN0eWxlRWxlbWVudD4oZWxlbWVudCkpIHsKICAgICAgICAgICAgIGlm
IChDU1NTdHlsZVNoZWV0KiBzaGVldCA9IGRvd25jYXN0PEhUTUxTdHlsZUVsZW1lbnQ+KCplbGVt
ZW50KS5zaGVldCgpKQogICAgICAgICAgICAgICAgIHNlcmlhbGl6ZUNTU1N0eWxlU2hlZXQoc2hl
ZXQsIFVSTCgpKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9T
cGF0aWFsTmF2aWdhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NwYXRpYWxOYXZpZ2F0
aW9uLmNwcAppbmRleCBkNTZjOWYwZDc4ZThhOTA3NDZhZDc3ZmM0ZWEyNzc4MmY3OTY5MjAwLi40
ZTM4OTI0MmYxOTU5MzgyOTdlYTEyYzQwOWI5ZGZhYzg3Y2I1MjY0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1NwYXRpYWxOYXZpZ2F0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1NwYXRpYWxOYXZpZ2F0aW9uLmNwcApAQCAtNjYsNyArNjYsNyBAQCBGb2N1c0NhbmRp
ZGF0ZTo6Rm9jdXNDYW5kaWRhdGUoTm9kZSogbm9kZSwgRm9jdXNEaXJlY3Rpb24gZGlyZWN0aW9u
KQogICAgIEFTU0VSVChub2RlKTsKICAgICBBU1NFUlQobm9kZS0+aXNFbGVtZW50Tm9kZSgpKTsK
IAotICAgIGlmIChpc0hUTUxBcmVhRWxlbWVudChub2RlKSkgeworICAgIGlmIChpczxIVE1MQXJl
YUVsZW1lbnQ+KG5vZGUpKSB7CiAgICAgICAgIEhUTUxBcmVhRWxlbWVudCYgYXJlYSA9IGRvd25j
YXN0PEhUTUxBcmVhRWxlbWVudD4oKm5vZGUpOwogICAgICAgICBIVE1MSW1hZ2VFbGVtZW50KiBp
bWFnZSA9IGFyZWEuaW1hZ2VFbGVtZW50KCk7CiAgICAgICAgIGlmICghaW1hZ2UgfHwgIWltYWdl
LT5yZW5kZXJlcigpKQpAQCAtNjA3LDcgKzYwNyw3IEBAIGJvb2wgYXJlRWxlbWVudHNPblNhbWVM
aW5lKGNvbnN0IEZvY3VzQ2FuZGlkYXRlJiBmaXJzdENhbmRpZGF0ZSwgY29uc3QgRm9jdXNDYW5k
CiAgICAgaWYgKCFmaXJzdENhbmRpZGF0ZS5yZWN0LmludGVyc2VjdHMoc2Vjb25kQ2FuZGlkYXRl
LnJlY3QpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAoaXNIVE1MQXJlYUVsZW1l
bnQoZmlyc3RDYW5kaWRhdGUuZm9jdXNhYmxlTm9kZSkgfHwgaXNIVE1MQXJlYUVsZW1lbnQoc2Vj
b25kQ2FuZGlkYXRlLmZvY3VzYWJsZU5vZGUpKQorICAgIGlmIChpczxIVE1MQXJlYUVsZW1lbnQ+
KGZpcnN0Q2FuZGlkYXRlLmZvY3VzYWJsZU5vZGUpIHx8IGlzPEhUTUxBcmVhRWxlbWVudD4oc2Vj
b25kQ2FuZGlkYXRlLmZvY3VzYWJsZU5vZGUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAg
ICBpZiAoIWZpcnN0Q2FuZGlkYXRlLnZpc2libGVOb2RlLT5yZW5kZXJlcigpLT5pc1JlbmRlcklu
bGluZSgpIHx8ICFzZWNvbmRDYW5kaWRhdGUudmlzaWJsZU5vZGUtPnJlbmRlcmVyKCktPmlzUmVu
ZGVySW5saW5lKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2lvcy9GcmFtZUlP
Uy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvaW9zL0ZyYW1lSU9TLm1tCmluZGV4IGI4MmY5ZWIy
NGI4NzM2YmFmZTU1MzVkZTExZTNiNjY5MjA0MjlhNWEuLmUzYTBjNzExNzM4MmUzZTliZmZkZTU3
N2IxZTk1Yzg5ODVlMTUwNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvaW9zL0Zy
YW1lSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvaW9zL0ZyYW1lSU9TLm1tCkBAIC0z
NTEsNyArMzUxLDcgQEAgc3RhdGljIE5vZGUqIGFuY2VzdG9yUmVzcG9uZGluZ1RvQ2xpY2tFdmVu
dHMoY29uc3QgSGl0VGVzdFJlc3VsdCYgaGl0VGVzdFJlc3VsdCwKICAgICAgICAgICAgIC8vIElm
IHdlIGFyZSBpbnRlcmVzdGVkIGFib3V0IHRoZSBmcmFtZSwgdXNlIGl0LgogICAgICAgICAgICAg
aWYgKG5vZGVCb3VuZHMpIHsKICAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIGEgY2hlY2sgdG8g
c2VlIHdoZXRoZXIgdGhpcyBub2RlIGlzIGFuIGFyZWEgZWxlbWVudC4gIFRoZSBvbmx5IHdheSB0
aGlzIGNhbiBoYXBwZW4gaXMgaWYgdGhpcyBpcyB0aGUgZmlyc3QgY2hlY2suCi0gICAgICAgICAg
ICAgICAgaWYgKG5vZGUgPT0gaGl0VGVzdFJlc3VsdC5pbm5lck5vZGUoKSAmJiBub2RlICE9IGhp
dFRlc3RSZXN1bHQuaW5uZXJOb25TaGFyZWROb2RlKCkgJiYgaXNIVE1MQXJlYUVsZW1lbnQobm9k
ZSkpCisgICAgICAgICAgICAgICAgaWYgKG5vZGUgPT0gaGl0VGVzdFJlc3VsdC5pbm5lck5vZGUo
KSAmJiBub2RlICE9IGhpdFRlc3RSZXN1bHQuaW5uZXJOb25TaGFyZWROb2RlKCkgJiYgaXM8SFRN
TEFyZWFFbGVtZW50Pihub2RlKSkKICAgICAgICAgICAgICAgICAgICAgKm5vZGVCb3VuZHMgPSBz
bmFwcGVkSW50UmVjdChkb3duY2FzdDxIVE1MQXJlYUVsZW1lbnQ+KCpub2RlKS5jb21wdXRlUmVj
dChoaXRUZXN0UmVzdWx0LmlubmVyTm9uU2hhcmVkTm9kZSgpLT5yZW5kZXJlcigpKSk7CiAgICAg
ICAgICAgICAgICAgZWxzZSBpZiAobm9kZSAmJiBub2RlLT5yZW5kZXJlcigpKQogICAgICAgICAg
ICAgICAgICAgICAqbm9kZUJvdW5kcyA9IG5vZGUtPnJlbmRlcmVyKCktPmFic29sdXRlQm91bmRp
bmdCb3hSZWN0KHRydWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hp
dFRlc3RSZXN1bHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQu
Y3BwCmluZGV4IDA2Mzc4OWM4YzA3YWNkMWMxMTQxN2UxZDdkNzY1ZjU4NWZlNjA2ZTUuLjkzY2U0
OWRiMzJiMTIyYTE4OWZlMzE1ZTlhMjE1MDA2MjIzNGM2ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHAKQEAgLTI3Myw3ICsyNzMsNyBAQCBTdHJpbmcgSGl0
VGVzdFJlc3VsdDo6YWx0RGlzcGxheVN0cmluZygpIGNvbnN0CiAgICAgaWYgKCFtX2lubmVyTm9u
U2hhcmVkTm9kZSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogICAgIAotICAgIGlmIChpc0hU
TUxJbWFnZUVsZW1lbnQoKm1faW5uZXJOb25TaGFyZWROb2RlKSkgeworICAgIGlmIChpczxIVE1M
SW1hZ2VFbGVtZW50PigqbV9pbm5lck5vblNoYXJlZE5vZGUpKSB7CiAgICAgICAgIEhUTUxJbWFn
ZUVsZW1lbnQmIGltYWdlID0gZG93bmNhc3Q8SFRNTEltYWdlRWxlbWVudD4oKm1faW5uZXJOb25T
aGFyZWROb2RlKTsKICAgICAgICAgcmV0dXJuIGRpc3BsYXlTdHJpbmcoaW1hZ2UuZmFzdEdldEF0
dHJpYnV0ZShhbHRBdHRyKSwgbV9pbm5lck5vblNoYXJlZE5vZGUuZ2V0KCkpOwogICAgIH0KQEAg
LTM2Miw3ICszNjIsNyBAQCBib29sIEhpdFRlc3RSZXN1bHQ6Om1lZGlhU3VwcG9ydHNGdWxsc2Ny
ZWVuKCkgY29uc3QKIHsKICNpZiBFTkFCTEUoVklERU8pCiAgICAgSFRNTE1lZGlhRWxlbWVudCog
bWVkaWFFbHQobWVkaWFFbGVtZW50KCkpOwotICAgIHJldHVybiAobWVkaWFFbHQgJiYgaXNIVE1M
VmlkZW9FbGVtZW50KG1lZGlhRWx0KSAmJiBtZWRpYUVsdC0+c3VwcG9ydHNGdWxsc2NyZWVuKCkp
OworICAgIHJldHVybiAobWVkaWFFbHQgJiYgaXM8SFRNTFZpZGVvRWxlbWVudD4obWVkaWFFbHQp
ICYmIG1lZGlhRWx0LT5zdXBwb3J0c0Z1bGxzY3JlZW4oKSk7CiAjZWxzZQogICAgIHJldHVybiBm
YWxzZTsKICNlbmRpZgpAQCAtMzc3LDcgKzM3Nyw3IEBAIEhUTUxNZWRpYUVsZW1lbnQqIEhpdFRl
c3RSZXN1bHQ6Om1lZGlhRWxlbWVudCgpIGNvbnN0CiAgICAgaWYgKCEobV9pbm5lck5vblNoYXJl
ZE5vZGUtPnJlbmRlcmVyKCkgJiYgbV9pbm5lck5vblNoYXJlZE5vZGUtPnJlbmRlcmVyKCktPmlz
TWVkaWEoKSkpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgaWYgKGlzSFRNTFZpZGVvRWxlbWVu
dChtX2lubmVyTm9uU2hhcmVkTm9kZS5nZXQoKSkgfHwgaXNIVE1MQXVkaW9FbGVtZW50KG1faW5u
ZXJOb25TaGFyZWROb2RlLmdldCgpKSkKKyAgICBpZiAoaXM8SFRNTFZpZGVvRWxlbWVudD4obV9p
bm5lck5vblNoYXJlZE5vZGUuZ2V0KCkpIHx8IGlzPEhUTUxBdWRpb0VsZW1lbnQ+KG1faW5uZXJO
b25TaGFyZWROb2RlLmdldCgpKSkKICAgICAgICAgcmV0dXJuIHRvSFRNTE1lZGlhRWxlbWVudCht
X2lubmVyTm9uU2hhcmVkTm9kZS5nZXQoKSk7CiAgICAgcmV0dXJuIDA7CiB9CkBAIC00MjQsNyAr
NDI0LDcgQEAgdm9pZCBIaXRUZXN0UmVzdWx0OjplbnRlckZ1bGxzY3JlZW5Gb3JWaWRlbygpIGNv
bnN0CiB7CiAjaWYgRU5BQkxFKFZJREVPKQogICAgIEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxl
bWVudCh0aGlzLT5tZWRpYUVsZW1lbnQoKSk7Ci0gICAgaWYgKG1lZGlhRWxlbWVudCAmJiBpc0hU
TUxWaWRlb0VsZW1lbnQobWVkaWFFbGVtZW50KSkgeworICAgIGlmIChtZWRpYUVsZW1lbnQgJiYg
aXM8SFRNTFZpZGVvRWxlbWVudD4obWVkaWFFbGVtZW50KSkgewogICAgICAgICBIVE1MVmlkZW9F
bGVtZW50JiB2aWRlb0VsZW1lbnQgPSBkb3duY2FzdDxIVE1MVmlkZW9FbGVtZW50PigqbWVkaWFF
bGVtZW50KTsKICAgICAgICAgaWYgKCF2aWRlb0VsZW1lbnQuaXNGdWxsc2NyZWVuKCkgJiYgbWVk
aWFFbGVtZW50LT5zdXBwb3J0c0Z1bGxzY3JlZW4oKSkgewogICAgICAgICAgICAgVXNlckdlc3R1
cmVJbmRpY2F0b3IgaW5kaWNhdG9yKERlZmluaXRlbHlQcm9jZXNzaW5nVXNlckdlc3R1cmUpOwpA
QCAtNDgyLDcgKzQ4Miw3IEBAIGJvb2wgSGl0VGVzdFJlc3VsdDo6bWVkaWFJc1ZpZGVvKCkgY29u
c3QKIHsKICNpZiBFTkFCTEUoVklERU8pCiAgICAgaWYgKEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlh
RWx0ID0gbWVkaWFFbGVtZW50KCkpCi0gICAgICAgIHJldHVybiBpc0hUTUxWaWRlb0VsZW1lbnQo
bWVkaWFFbHQpOworICAgICAgICByZXR1cm4gaXM8SFRNTFZpZGVvRWxlbWVudD4obWVkaWFFbHQp
OwogI2VuZGlmCiAgICAgcmV0dXJuIGZhbHNlOwogfQpAQCAtNTE2LDcgKzUxNiw3IEBAIGJvb2wg
SGl0VGVzdFJlc3VsdDo6aXNMaXZlTGluaygpIGNvbnN0CiAgICAgaWYgKCFtX2lubmVyVVJMRWxl
bWVudCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaWYgKGlzSFRNTEFuY2hvckVsZW1l
bnQoKm1faW5uZXJVUkxFbGVtZW50KSkKKyAgICBpZiAoaXM8SFRNTEFuY2hvckVsZW1lbnQ+KCpt
X2lubmVyVVJMRWxlbWVudCkpCiAgICAgICAgIHJldHVybiBkb3duY2FzdDxIVE1MQW5jaG9yRWxl
bWVudD4oKm1faW5uZXJVUkxFbGVtZW50KS5pc0xpdmVMaW5rKCk7CiAKICAgICBpZiAoaXM8U1ZH
QUVsZW1lbnQ+KCptX2lubmVyVVJMRWxlbWVudCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQ291bnRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQ291bnRlci5jcHAKaW5kZXggNDk3MGMwNGViODU3MGMwOTg5ZTk1OTRkYWNkMDUxZjRm
ODNlMmNlMS4uZTM2YWFlY2YwNzJiYWJhMWJmNzkxOTJmYjFmN2Q5NDA5OGNmODgyMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckNvdW50ZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb3VudGVyLmNwcApAQCAtMTQyLDcgKzE0Miw3
IEBAIHN0YXRpYyBib29sIHBsYW5Db3VudGVyKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBjb25z
dCBBdG9taWNTdHJpbmcmIGlkZW50aWZpZXIsCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICAgICAgfQogICAgICAgICBpZiAoRWxlbWVudCogZWxlbWVudCA9IHJlbmRlcmVyLmVsZW1lbnQo
KSkgewotICAgICAgICAgICAgaWYgKGlzSFRNTE9MaXN0RWxlbWVudChlbGVtZW50KSkgeworICAg
ICAgICAgICAgaWYgKGlzPEhUTUxPTGlzdEVsZW1lbnQ+KGVsZW1lbnQpKSB7CiAgICAgICAgICAg
ICAgICAgdmFsdWUgPSBkb3duY2FzdDxIVE1MT0xpc3RFbGVtZW50PigqZWxlbWVudCkuc3RhcnQo
KTsKICAgICAgICAgICAgICAgICBpc1Jlc2V0ID0gdHJ1ZTsKICAgICAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFn
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCmluZGV4IDQy
ZjMyOWNjNmMxNjhkNzNlMTgxNzBlYTRjMTA3NjMyZDBmZmVlZTMuLjdmYzMzMzBhYmYzNWYwNjZk
NjM0ZjZjZmE5ZWRlMzgwYzIxYzU3NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckltYWdlLmNwcApAQCAtMTMwLDcgKzEzMCw3IEBAIFJlbmRlckltYWdlOjpSZW5kZXJJbWFnZShF
bGVtZW50JiBlbGVtZW50LCBQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSwgU3R5bGVJbWFnCiAg
ICAgdXBkYXRlQWx0VGV4dCgpOwogICAgIGltYWdlUmVzb3VyY2UoKS5pbml0aWFsaXplKHRoaXMp
OwogCi0gICAgaWYgKGlzSFRNTEltYWdlRWxlbWVudChlbGVtZW50KSkKKyAgICBpZiAoaXM8SFRN
TEltYWdlRWxlbWVudD4oZWxlbWVudCkpCiAgICAgICAgIG1faGFzU2hhZG93Q29udHJvbHMgPSBk
b3duY2FzdDxIVE1MSW1hZ2VFbGVtZW50PihlbGVtZW50KS5oYXNTaGFkb3dDb250cm9scygpOwog
fQogCkBAIC01MTQsNyArNTE0LDcgQEAgdm9pZCBSZW5kZXJJbWFnZTo6cGFpbnRBcmVhRWxlbWVu
dEZvY3VzUmluZyhQYWludEluZm8mIHBhaW50SW5mbykKICAgICAgICAgcmV0dXJuOwogCiAgICAg
RWxlbWVudCogZm9jdXNlZEVsZW1lbnQgPSBkb2N1bWVudCgpLmZvY3VzZWRFbGVtZW50KCk7Ci0g
ICAgaWYgKCFmb2N1c2VkRWxlbWVudCB8fCAhaXNIVE1MQXJlYUVsZW1lbnQoZm9jdXNlZEVsZW1l
bnQpKQorICAgIGlmICghZm9jdXNlZEVsZW1lbnQgfHwgIWlzPEhUTUxBcmVhRWxlbWVudD4oZm9j
dXNlZEVsZW1lbnQpKQogICAgICAgICByZXR1cm47CiAKICAgICBIVE1MQXJlYUVsZW1lbnQmIGFy
ZWFFbGVtZW50ID0gZG93bmNhc3Q8SFRNTEFyZWFFbGVtZW50PigqZm9jdXNlZEVsZW1lbnQpOwpA
QCAtNTYwLDcgKzU2MCw3IEBAIHZvaWQgUmVuZGVySW1hZ2U6OnBhaW50SW50b1JlY3QoR3JhcGhp
Y3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiAgICAgaWYgKCFpbWcg
fHwgaW1nLT5pc051bGwoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgSFRNTEltYWdlRWxlbWVu
dCogaW1hZ2VFbGVtZW50ID0gKGVsZW1lbnQoKSAmJiBpc0hUTUxJbWFnZUVsZW1lbnQoZWxlbWVu
dCgpKSkgPyBkb3duY2FzdDxIVE1MSW1hZ2VFbGVtZW50PihlbGVtZW50KCkpIDogbnVsbHB0cjsK
KyAgICBIVE1MSW1hZ2VFbGVtZW50KiBpbWFnZUVsZW1lbnQgPSAoZWxlbWVudCgpICYmIGlzPEhU
TUxJbWFnZUVsZW1lbnQ+KGVsZW1lbnQoKSkpID8gZG93bmNhc3Q8SFRNTEltYWdlRWxlbWVudD4o
ZWxlbWVudCgpKSA6IG51bGxwdHI7CiAgICAgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3Bl
cmF0b3IgPSBpbWFnZUVsZW1lbnQgPyBpbWFnZUVsZW1lbnQtPmNvbXBvc2l0ZU9wZXJhdG9yKCkg
OiBDb21wb3NpdGVTb3VyY2VPdmVyOwogICAgIEltYWdlKiBpbWFnZSA9IGltYWdlUmVzb3VyY2Uo
KS5pbWFnZSgpLmdldCgpOwogICAgIGJvb2wgdXNlTG93UXVhbGl0eVNjYWxpbmcgPSBzaG91bGRQ
YWludEF0TG93UXVhbGl0eShjb250ZXh0LCBpbWFnZSwgaW1hZ2UsIExheW91dFNpemUocmVjdC5z
aXplKCkpKTsKQEAgLTYyMiw3ICs2MjIsNyBAQCBMYXlvdXRVbml0IFJlbmRlckltYWdlOjptaW5p
bXVtUmVwbGFjZWRIZWlnaHQoKSBjb25zdAogCiBIVE1MTWFwRWxlbWVudCogUmVuZGVySW1hZ2U6
OmltYWdlTWFwKCkgY29uc3QKIHsKLSAgICBIVE1MSW1hZ2VFbGVtZW50KiBpbWFnZSA9IGVsZW1l
bnQoKSAmJiBpc0hUTUxJbWFnZUVsZW1lbnQoZWxlbWVudCgpKSA/IGRvd25jYXN0PEhUTUxJbWFn
ZUVsZW1lbnQ+KGVsZW1lbnQoKSkgOiBudWxscHRyOworICAgIEhUTUxJbWFnZUVsZW1lbnQqIGlt
YWdlID0gZWxlbWVudCgpICYmIGlzPEhUTUxJbWFnZUVsZW1lbnQ+KGVsZW1lbnQoKSkgPyBkb3du
Y2FzdDxIVE1MSW1hZ2VFbGVtZW50PihlbGVtZW50KCkpIDogbnVsbHB0cjsKICAgICByZXR1cm4g
aW1hZ2UgPyBpbWFnZS0+dHJlZVNjb3BlKCkuZ2V0SW1hZ2VNYXAoaW1hZ2UtPmZhc3RHZXRBdHRy
aWJ1dGUodXNlbWFwQXR0cikpIDogbnVsbHB0cjsKIH0KIApAQCAtNjU3LDcgKzY1Nyw3IEBAIHZv
aWQgUmVuZGVySW1hZ2U6OnVwZGF0ZUFsdFRleHQoKQogCiAgICAgaWYgKGlzPEhUTUxJbnB1dEVs
ZW1lbnQ+KCplbGVtZW50KCkpKQogICAgICAgICBtX2FsdFRleHQgPSBkb3duY2FzdDxIVE1MSW5w
dXRFbGVtZW50PigqZWxlbWVudCgpKS5hbHRUZXh0KCk7Ci0gICAgZWxzZSBpZiAoaXNIVE1MSW1h
Z2VFbGVtZW50KCplbGVtZW50KCkpKQorICAgIGVsc2UgaWYgKGlzPEhUTUxJbWFnZUVsZW1lbnQ+
KCplbGVtZW50KCkpKQogICAgICAgICBtX2FsdFRleHQgPSBkb3duY2FzdDxIVE1MSW1hZ2VFbGVt
ZW50PigqZWxlbWVudCgpKS5hbHRUZXh0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMaXN0Qm94LmNwcAppbmRleCBjMWU4NDQ1OTczODIxYjMyM2FhYjdkODg2YjY2MmFh
NTczNDlkODNkLi5kMmFkNzQzZDdlODVmMTMwZGYwM2FlY2FmYjFlY2E1NjM0Y2JiODFhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwCkBAIC0xMTgsNyArMTE4
LDcgQEAgdm9pZCBSZW5kZXJMaXN0Qm94Ojp1cGRhdGVGcm9tRWxlbWVudCgpCiAgICAgICAgICAg
ICBGb250IGl0ZW1Gb250ID0gc3R5bGUoKS5mb250KCk7CiAgICAgICAgICAgICBpZiAoaXM8SFRN
TE9wdGlvbkVsZW1lbnQ+KGVsZW1lbnQpKQogICAgICAgICAgICAgICAgIHRleHQgPSBkb3duY2Fz
dDxIVE1MT3B0aW9uRWxlbWVudD4oKmVsZW1lbnQpLnRleHRJbmRlbnRlZFRvUmVzcGVjdEdyb3Vw
TGFiZWwoKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKGlzSFRNTE9wdEdyb3VwRWxlbWVudChlbGVt
ZW50KSkgeworICAgICAgICAgICAgZWxzZSBpZiAoaXM8SFRNTE9wdEdyb3VwRWxlbWVudD4oZWxl
bWVudCkpIHsKICAgICAgICAgICAgICAgICB0ZXh0ID0gZG93bmNhc3Q8SFRNTE9wdEdyb3VwRWxl
bWVudD4oKmVsZW1lbnQpLmdyb3VwTGFiZWxUZXh0KCk7CiAgICAgICAgICAgICAgICAgRm9udERl
c2NyaXB0aW9uIGQgPSBpdGVtRm9udC5mb250RGVzY3JpcHRpb24oKTsKICAgICAgICAgICAgICAg
ICBkLnNldFdlaWdodChkLmJvbGRlcldlaWdodCgpKTsKQEAgLTM4OCw3ICszODgsNyBAQCB2b2lk
IFJlbmRlckxpc3RCb3g6OnBhaW50SXRlbUZvcmVncm91bmQoUGFpbnRJbmZvJiBwYWludEluZm8s
IGNvbnN0IExheW91dFBvaW50JgogICAgIGJvb2wgaXNPcHRpb25FbGVtZW50ID0gaXM8SFRNTE9w
dGlvbkVsZW1lbnQ+KGxpc3RJdGVtRWxlbWVudCk7CiAgICAgaWYgKGlzT3B0aW9uRWxlbWVudCkK
ICAgICAgICAgaXRlbVRleHQgPSBkb3duY2FzdDxIVE1MT3B0aW9uRWxlbWVudD4oKmxpc3RJdGVt
RWxlbWVudCkudGV4dEluZGVudGVkVG9SZXNwZWN0R3JvdXBMYWJlbCgpOwotICAgIGVsc2UgaWYg
KGlzSFRNTE9wdEdyb3VwRWxlbWVudChsaXN0SXRlbUVsZW1lbnQpKQorICAgIGVsc2UgaWYgKGlz
PEhUTUxPcHRHcm91cEVsZW1lbnQ+KGxpc3RJdGVtRWxlbWVudCkpCiAgICAgICAgIGl0ZW1UZXh0
ID0gZG93bmNhc3Q8SFRNTE9wdEdyb3VwRWxlbWVudD4oKmxpc3RJdGVtRWxlbWVudCkuZ3JvdXBM
YWJlbFRleHQoKTsKICAgICBhcHBseVRleHRUcmFuc2Zvcm0oc3R5bGUoKSwgaXRlbVRleHQsICcg
Jyk7CiAKQEAgLTQwOSw3ICs0MDksNyBAQCB2b2lkIFJlbmRlckxpc3RCb3g6OnBhaW50SXRlbUZv
cmVncm91bmQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JgogICAgIExh
eW91dFJlY3QgciA9IGl0ZW1Cb3VuZGluZ0JveFJlY3QocGFpbnRPZmZzZXQsIGxpc3RJbmRleCk7
CiAgICAgci5tb3ZlKGl0ZW1PZmZzZXRGb3JBbGlnbm1lbnQodGV4dFJ1biwgaXRlbVN0eWxlLCBp
dGVtRm9udCwgcikpOwogCi0gICAgaWYgKGlzSFRNTE9wdEdyb3VwRWxlbWVudChsaXN0SXRlbUVs
ZW1lbnQpKSB7CisgICAgaWYgKGlzPEhUTUxPcHRHcm91cEVsZW1lbnQ+KGxpc3RJdGVtRWxlbWVu
dCkpIHsKICAgICAgICAgRm9udERlc2NyaXB0aW9uIGQgPSBpdGVtRm9udC5mb250RGVzY3JpcHRp
b24oKTsKICAgICAgICAgZC5zZXRXZWlnaHQoZC5ib2xkZXJXZWlnaHQoKSk7CiAgICAgICAgIGl0
ZW1Gb250ID0gRm9udChkLCBpdGVtRm9udC5sZXR0ZXJTcGFjaW5nKCksIGl0ZW1Gb250LndvcmRT
cGFjaW5nKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1h
cnF1ZWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1hcnF1ZWUuY3BwCmlu
ZGV4IDI1YTk3ZTZiM2E1OGU5ODhkNmFhNDY1MTM4OWRmNzY4M2EwMDI0NGMuLmY0YWY3MGVjNDA4
NzI0MWE1NGMwOTFmM2RlY2JjZGJhYzg3Y2UyMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJNYXJxdWVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTWFycXVlZS5jcHAKQEAgLTczLDcgKzczLDcgQEAgaW50IFJlbmRlck1hcnF1ZWU6
Om1hcnF1ZWVTcGVlZCgpIGNvbnN0CiB7CiAgICAgaW50IHJlc3VsdCA9IG1fbGF5ZXItPnJlbmRl
cmVyKCkuc3R5bGUoKS5tYXJxdWVlU3BlZWQoKTsKICAgICBFbGVtZW50KiBlbGVtZW50ID0gbV9s
YXllci0+cmVuZGVyZXIoKS5lbGVtZW50KCk7Ci0gICAgaWYgKGVsZW1lbnQgJiYgaXNIVE1MTWFy
cXVlZUVsZW1lbnQoZWxlbWVudCkpCisgICAgaWYgKGVsZW1lbnQgJiYgaXM8SFRNTE1hcnF1ZWVF
bGVtZW50PihlbGVtZW50KSkKICAgICAgICAgcmVzdWx0ID0gc3RkOjptYXgocmVzdWx0LCBkb3du
Y2FzdDxIVE1MTWFycXVlZUVsZW1lbnQ+KCplbGVtZW50KS5taW5pbXVtRGVsYXkoKSk7CiAgICAg
cmV0dXJuIHJlc3VsdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJNZW51TGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVudUxp
c3QuY3BwCmluZGV4IDZlZTFiMzAxMDEzOTc1ZjJmNzhkOTY2ZDg4ZDRhNjlmNzE4ZWI1ZDIuLjdj
YTM1MmRjN2YyODViODAzM2M0NzQ0NWRkMGNkNGY2Y2IxMjdmMGEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmNwcApAQCAtNDUwLDcgKzQ1MCw3IEBAIFN0cmlu
ZyBSZW5kZXJNZW51TGlzdDo6aXRlbVRleHQodW5zaWduZWQgbGlzdEluZGV4KSBjb25zdAogCiAg
ICAgU3RyaW5nIGl0ZW1TdHJpbmc7CiAgICAgRWxlbWVudCogZWxlbWVudCA9IGxpc3RJdGVtc1ts
aXN0SW5kZXhdOwotICAgIGlmIChpc0hUTUxPcHRHcm91cEVsZW1lbnQoZWxlbWVudCkpCisgICAg
aWYgKGlzPEhUTUxPcHRHcm91cEVsZW1lbnQ+KGVsZW1lbnQpKQogICAgICAgICBpdGVtU3RyaW5n
ID0gZG93bmNhc3Q8SFRNTE9wdEdyb3VwRWxlbWVudD4oKmVsZW1lbnQpLmdyb3VwTGFiZWxUZXh0
KCk7CiAgICAgZWxzZSBpZiAoaXM8SFRNTE9wdGlvbkVsZW1lbnQ+KGVsZW1lbnQpKQogICAgICAg
ICBpdGVtU3RyaW5nID0gZG93bmNhc3Q8SFRNTE9wdGlvbkVsZW1lbnQ+KCplbGVtZW50KS50ZXh0
SW5kZW50ZWRUb1Jlc3BlY3RHcm91cExhYmVsKCk7CkBAIC00OTcsNyArNDk3LDcgQEAgYm9vbCBS
ZW5kZXJNZW51TGlzdDo6aXRlbUlzRW5hYmxlZCh1bnNpZ25lZCBsaXN0SW5kZXgpIGNvbnN0CiAK
ICAgICBib29sIGdyb3VwRW5hYmxlZCA9IHRydWU7CiAgICAgaWYgKEVsZW1lbnQqIHBhcmVudEVs
ZW1lbnQgPSBlbGVtZW50LT5wYXJlbnRFbGVtZW50KCkpIHsKLSAgICAgICAgaWYgKGlzSFRNTE9w
dEdyb3VwRWxlbWVudChwYXJlbnRFbGVtZW50KSkKKyAgICAgICAgaWYgKGlzPEhUTUxPcHRHcm91
cEVsZW1lbnQ+KHBhcmVudEVsZW1lbnQpKQogICAgICAgICAgICAgZ3JvdXBFbmFibGVkID0gIXBh
cmVudEVsZW1lbnQtPmlzRGlzYWJsZWRGb3JtQ29udHJvbCgpOwogICAgIH0KICAgICBpZiAoIWdy
b3VwRW5hYmxlZCkKQEAgLTY0NSw3ICs2NDUsNyBAQCBib29sIFJlbmRlck1lbnVMaXN0OjppdGVt
SXNTZXBhcmF0b3IodW5zaWduZWQgbGlzdEluZGV4KSBjb25zdAogYm9vbCBSZW5kZXJNZW51TGlz
dDo6aXRlbUlzTGFiZWwodW5zaWduZWQgbGlzdEluZGV4KSBjb25zdAogewogICAgIGNvbnN0IFZl
Y3RvcjxIVE1MRWxlbWVudCo+JiBsaXN0SXRlbXMgPSBzZWxlY3RFbGVtZW50KCkubGlzdEl0ZW1z
KCk7Ci0gICAgcmV0dXJuIGxpc3RJbmRleCA8IGxpc3RJdGVtcy5zaXplKCkgJiYgaXNIVE1MT3B0
R3JvdXBFbGVtZW50KGxpc3RJdGVtc1tsaXN0SW5kZXhdKTsKKyAgICByZXR1cm4gbGlzdEluZGV4
IDwgbGlzdEl0ZW1zLnNpemUoKSAmJiBpczxIVE1MT3B0R3JvdXBFbGVtZW50PihsaXN0SXRlbXNb
bGlzdEluZGV4XSk7CiB9CiAKIGJvb2wgUmVuZGVyTWVudUxpc3Q6Oml0ZW1Jc1NlbGVjdGVkKHVu
c2lnbmVkIGxpc3RJbmRleCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJNZXRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWV0
ZXIuY3BwCmluZGV4IDllZGJiZDk5YjUwZmZkMGE5NGY3Njg4NjkzNDhiOWZhYTM3OGJjOTcuLjk5
MDU5NmQ5ZTEwNTMzMGE2ZjNkNDA1N2RiOWY3NmFmYzY5ZWM4OWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZXRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlck1ldGVyLmNwcApAQCAtNDMsNyArNDMsNyBAQCBIVE1MTWV0ZXJFbGVt
ZW50KiBSZW5kZXJNZXRlcjo6bWV0ZXJFbGVtZW50KCkgY29uc3QKIHsKICAgICBBU1NFUlQoZWxl
bWVudCgpKTsKIAotICAgIGlmIChpc0hUTUxNZXRlckVsZW1lbnQoZWxlbWVudCgpKSkKKyAgICBp
ZiAoaXM8SFRNTE1ldGVyRWxlbWVudD4oZWxlbWVudCgpKSkKICAgICAgICAgcmV0dXJuIGRvd25j
YXN0PEhUTUxNZXRlckVsZW1lbnQ+KGVsZW1lbnQoKSk7CiAKICAgICBBU1NFUlQoZWxlbWVudCgp
LT5zaGFkb3dIb3N0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlck9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNw
cAppbmRleCA3ZDE0NTY2MjhlMzRiMmJhYjI5MTQ2MzBlMGUzMjUyOTUxMDI5MTA3Li5mNzhiYWYz
ZGVmNTVmZTA4YzE3NGU0MTZjYzE4YTRhMTNhZjU5M2FiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyT2JqZWN0LmNwcApAQCAtNDEsNiArNDEsNyBAQAogI2luY2x1ZGUgIkhUTUxF
bGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEltYWdlRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxO
YW1lcy5oIgorI2luY2x1ZGUgIkhUTUxUYWJsZUNlbGxFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRN
TFRhYmxlRWxlbWVudC5oIgogI2luY2x1ZGUgIkhpdFRlc3RSZXN1bHQuaCIKICNpbmNsdWRlICJM
b2dpY2FsU2VsZWN0aW9uT2Zmc2V0Q2FjaGVzLmgiCkBAIC0xOTE3LDcgKzE5MTgsNyBAQCBSZXNw
ZWN0SW1hZ2VPcmllbnRhdGlvbkVudW0gUmVuZGVyT2JqZWN0OjpzaG91bGRSZXNwZWN0SW1hZ2VP
cmllbnRhdGlvbigpIGNvbnN0CiAjZW5kaWYKICAgICAvLyBSZXNwZWN0IHRoZSBpbWFnZSdzIG9y
aWVudGF0aW9uIGlmIGl0J3MgYmVpbmcgdXNlZCBhcyBhIGZ1bGwtcGFnZSBpbWFnZSBvciBpdCdz
CiAgICAgLy8gYW4gPGltZz4gYW5kIHRoZSBzZXR0aW5nIHRvIHJlc3BlY3QgaXQgZXZlcnl3aGVy
ZSBpcyBzZXQuCi0gICAgcmV0dXJuIChmcmFtZSgpLnNldHRpbmdzKCkuc2hvdWxkUmVzcGVjdElt
YWdlT3JpZW50YXRpb24oKSAmJiBub2RlKCkgJiYgaXNIVE1MSW1hZ2VFbGVtZW50KG5vZGUoKSkp
ID8gUmVzcGVjdEltYWdlT3JpZW50YXRpb24gOiBEb05vdFJlc3BlY3RJbWFnZU9yaWVudGF0aW9u
OworICAgIHJldHVybiAoZnJhbWUoKS5zZXR0aW5ncygpLnNob3VsZFJlc3BlY3RJbWFnZU9yaWVu
dGF0aW9uKCkgJiYgbm9kZSgpICYmIGlzPEhUTUxJbWFnZUVsZW1lbnQ+KG5vZGUoKSkpID8gUmVz
cGVjdEltYWdlT3JpZW50YXRpb24gOiBEb05vdFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uOwogfQog
CiBib29sIFJlbmRlck9iamVjdDo6aGFzT3V0bGluZUFubm90YXRpb24oKSBjb25zdApAQCAtMjI5
Nyw3ICsyMjk4LDcgQEAgdm9pZCBSZW5kZXJPYmplY3Q6OmdldFRleHREZWNvcmF0aW9uQ29sb3Jz
KGludCBkZWNvcmF0aW9ucywgQ29sb3ImIHVuZGVybGluZSwgQ28KICAgICAgICAgY3VyciA9IGN1
cnItPnBhcmVudCgpOwogICAgICAgICBpZiAoY3VyciAmJiBjdXJyLT5pc0Fub255bW91c0Jsb2Nr
KCkgJiYgdG9SZW5kZXJCbG9jayhjdXJyKS0+Y29udGludWF0aW9uKCkpCiAgICAgICAgICAgICBj
dXJyID0gdG9SZW5kZXJCbG9jayhjdXJyKS0+Y29udGludWF0aW9uKCk7Ci0gICAgfSB3aGlsZSAo
Y3VyciAmJiBkZWNvcmF0aW9ucyAmJiAoIXF1aXJrc01vZGUgfHwgIWN1cnItPm5vZGUoKSB8fCAo
IWlzSFRNTEFuY2hvckVsZW1lbnQoY3Vyci0+bm9kZSgpKSAmJiAhY3Vyci0+bm9kZSgpLT5oYXNU
YWdOYW1lKGZvbnRUYWcpKSkpOworICAgIH0gd2hpbGUgKGN1cnIgJiYgZGVjb3JhdGlvbnMgJiYg
KCFxdWlya3NNb2RlIHx8ICFjdXJyLT5ub2RlKCkgfHwgKCFpczxIVE1MQW5jaG9yRWxlbWVudD4o
Y3Vyci0+bm9kZSgpKSAmJiAhY3Vyci0+bm9kZSgpLT5oYXNUYWdOYW1lKGZvbnRUYWcpKSkpOwog
CiAgICAgLy8gSWYgd2UgYmFpbGVkIG91dCwgdXNlIHRoZSBlbGVtZW50IHdlIGJhaWxlZCBvdXQg
YXQgKHR5cGljYWxseSBhIDxmb250PiBvciA8YT4gZWxlbWVudCkuCiAgICAgaWYgKGRlY29yYXRp
b25zICYmIGN1cnIpIHsKQEAgLTI0NDMsNyArMjQ0NCw3IEBAIFJlbmRlckJveE1vZGVsT2JqZWN0
KiBSZW5kZXJPYmplY3Q6Om9mZnNldFBhcmVudCgpIGNvbnN0CiAgICAgYXV0byBjdXJyID0gcGFy
ZW50KCk7CiAgICAgd2hpbGUgKGN1cnIgJiYgKCFjdXJyLT5lbGVtZW50KCkgfHwgKCFjdXJyLT5p
c1Bvc2l0aW9uZWQoKSAmJiAhY3Vyci0+aXNCb2R5KCkpKSAmJiAhY3Vyci0+aXNSZW5kZXJOYW1l
ZEZsb3dUaHJlYWQoKSkgewogICAgICAgICBFbGVtZW50KiBlbGVtZW50ID0gY3Vyci0+ZWxlbWVu
dCgpOwotICAgICAgICBpZiAoIXNraXBUYWJsZXMgJiYgZWxlbWVudCAmJiAoaXNIVE1MVGFibGVF
bGVtZW50KGVsZW1lbnQpIHx8IGVsZW1lbnQtPmhhc1RhZ05hbWUodGRUYWcpIHx8IGVsZW1lbnQt
Pmhhc1RhZ05hbWUodGhUYWcpKSkKKyAgICAgICAgaWYgKCFza2lwVGFibGVzICYmIGVsZW1lbnQg
JiYgKGlzPEhUTUxUYWJsZUVsZW1lbnQ+KCplbGVtZW50KSB8fCBpc0hUTUxUYWJsZUNlbGxFbGVt
ZW50KCplbGVtZW50KSkpCiAgICAgICAgICAgICBicmVhazsKICAKICAgICAgICAgZmxvYXQgbmV3
Wm9vbSA9IGN1cnItPnN0eWxlKCkuZWZmZWN0aXZlWm9vbSgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclByb2dyZXNzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJQcm9ncmVzcy5jcHAKaW5kZXggMmI0ZjA1N2FhMTNlN2NmMzM3NjI3Y2Iy
NzBmMzI3MjI0MmJkNjZkNi4uNmI4Y2Q0MmRhZWUzZWM0ZTAyNWFmYTYzNjQyN2FmNmJkZmRlODBj
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclByb2dyZXNzLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUHJvZ3Jlc3MuY3BwCkBAIC0x
MTAsNyArMTEwLDcgQEAgSFRNTFByb2dyZXNzRWxlbWVudCogUmVuZGVyUHJvZ3Jlc3M6OnByb2dy
ZXNzRWxlbWVudCgpIGNvbnN0CiAgICAgaWYgKCFlbGVtZW50KCkpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogCi0gICAgaWYgKGlzSFRNTFByb2dyZXNzRWxlbWVudChlbGVtZW50KCkpKQorICAg
IGlmIChpczxIVE1MUHJvZ3Jlc3NFbGVtZW50PihlbGVtZW50KCkpKQogICAgICAgICByZXR1cm4g
ZG93bmNhc3Q8SFRNTFByb2dyZXNzRWxlbWVudD4oZWxlbWVudCgpKTsKIAogICAgIEFTU0VSVChl
bGVtZW50KCktPnNoYWRvd0hvc3QoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGFibGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRh
YmxlLmNwcAppbmRleCA1YjYxODY3YTg1MjQ0MTIyODA0MTViNzdlNjgzZmQ4NDkzZmE0MzgyLi41
OTcxNzdhYWQxZjc4Mjg5ZTgyMDg1OTk3YTdkMzJiMzllYjk2MTVhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUYWJsZS5jcHAKQEAgLTM1MCw3ICszNTAsNyBAQCBMYXlvdXRVbml0
IFJlbmRlclRhYmxlOjpjb252ZXJ0U3R5bGVMb2dpY2FsV2lkdGhUb0NvbXB1dGVkV2lkdGgoY29u
c3QgTGVuZ3RoJiBzdAogCiAgICAgLy8gSFRNTCB0YWJsZXMnIHdpZHRoIHN0eWxlcyBhbHJlYWR5
IGluY2x1ZGUgYm9yZGVycyBhbmQgcGFkZGluZ3MsIGJ1dCBDU1MgdGFibGVzJyB3aWR0aCBzdHls
ZXMgZG8gbm90LgogICAgIExheW91dFVuaXQgYm9yZGVycyA9IDA7Ci0gICAgYm9vbCBpc0NTU1Rh
YmxlID0gIWVsZW1lbnQoKSB8fCAhaXNIVE1MVGFibGVFbGVtZW50KGVsZW1lbnQoKSk7CisgICAg
Ym9vbCBpc0NTU1RhYmxlID0gIWVsZW1lbnQoKSB8fCAhaXM8SFRNTFRhYmxlRWxlbWVudD4oZWxl
bWVudCgpKTsKICAgICBpZiAoaXNDU1NUYWJsZSAmJiBzdHlsZUxvZ2ljYWxXaWR0aC5pc1NwZWNp
ZmllZCgpICYmIHN0eWxlTG9naWNhbFdpZHRoLmlzUG9zaXRpdmUoKSAmJiBzdHlsZSgpLmJveFNp
emluZygpID09IENPTlRFTlRfQk9YKQogICAgICAgICBib3JkZXJzID0gYm9yZGVyU3RhcnQoKSAr
IGJvcmRlckVuZCgpICsgKGNvbGxhcHNlQm9yZGVycygpID8gTGF5b3V0VW5pdCgpIDogcGFkZGlu
Z1N0YXJ0KCkgKyBwYWRkaW5nRW5kKCkpOwogCkBAIC0zNjQsNyArMzY0LDcgQEAgTGF5b3V0VW5p
dCBSZW5kZXJUYWJsZTo6Y29udmVydFN0eWxlTG9naWNhbEhlaWdodFRvQ29tcHV0ZWRIZWlnaHQo
Y29uc3QgTGVuZ3RoJgogICAgICAgICAvLyBIVE1MIHRhYmxlcyBzaXplIGFzIHRob3VnaCBDU1Mg
aGVpZ2h0IGluY2x1ZGVzIGJvcmRlci9wYWRkaW5nLCBDU1MgdGFibGVzIGRvIG5vdC4KICAgICAg
ICAgTGF5b3V0VW5pdCBib3JkZXJzID0gTGF5b3V0VW5pdCgpOwogICAgICAgICAvLyBGSVhNRTog
V2UgY2Fubm90IGFwcGx5IGJveC1zaXppbmc6IGNvbnRlbnQtYm94IG9uIDx0YWJsZT4gd2hpY2gg
b3RoZXIgYnJvd3NlcnMgYWxsb3cuCi0gICAgICAgIGlmICgoZWxlbWVudCgpICYmIGlzSFRNTFRh
YmxlRWxlbWVudChlbGVtZW50KCkpKSB8fCBzdHlsZSgpLmJveFNpemluZygpID09IEJPUkRFUl9C
T1gpIHsKKyAgICAgICAgaWYgKChlbGVtZW50KCkgJiYgaXM8SFRNTFRhYmxlRWxlbWVudD4oZWxl
bWVudCgpKSkgfHwgc3R5bGUoKS5ib3hTaXppbmcoKSA9PSBCT1JERVJfQk9YKSB7CiAgICAgICAg
ICAgICBMYXlvdXRVbml0IGJvcmRlckFuZFBhZGRpbmdCZWZvcmUgPSBib3JkZXJCZWZvcmUoKSAr
IChjb2xsYXBzZUJvcmRlcnMoKSA/IExheW91dFVuaXQoKSA6IHBhZGRpbmdCZWZvcmUoKSk7CiAg
ICAgICAgICAgICBMYXlvdXRVbml0IGJvcmRlckFuZFBhZGRpbmdBZnRlciA9IGJvcmRlckFmdGVy
KCkgKyAoY29sbGFwc2VCb3JkZXJzKCkgPyBMYXlvdXRVbml0KCkgOiBwYWRkaW5nQWZ0ZXIoKSk7
CiAgICAgICAgICAgICBib3JkZXJzID0gYm9yZGVyQW5kUGFkZGluZ0JlZm9yZSArIGJvcmRlckFu
ZFBhZGRpbmdBZnRlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9T
VkdJbWFnZUNhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUNh
Y2hlLmNwcAppbmRleCAzZjIxMTFmNTNkNGVlYjdhZDA1Y2IzNjA0NzU5YTY0OGM1OGIyNzIzLi45
ZTFiN2M4ODNhYmQxMGVhNmVmNjRmMDUzZGI0NzM5YjEwNWMzNmVmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VDYWNoZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlQ2FjaGUuY3BwCkBAIC05Miw3ICs5Miw3IEBAIElt
YWdlKiBTVkdJbWFnZUNhY2hlOjppbWFnZUZvclJlbmRlcmVyKGNvbnN0IFJlbmRlck9iamVjdCog
cmVuZGVyZXIpCiAgICAgUmVmUHRyPFNWR0ltYWdlRm9yQ29udGFpbmVyPiBpbWFnZUZvckNvbnRh
aW5lciA9IGl0LT52YWx1ZTsKICAgICAKICAgICBOb2RlKiBub2RlID0gcmVuZGVyZXItPm5vZGUo
KTsKLSAgICBpZiAobm9kZSAmJiBpc0hUTUxJbWFnZUVsZW1lbnQobm9kZSkpIHsKKyAgICBpZiAo
bm9kZSAmJiBpczxIVE1MSW1hZ2VFbGVtZW50Pihub2RlKSkgewogICAgICAgICBjb25zdCBBdG9t
aWNTdHJpbmcmIHVybFN0cmluZyA9IGRvd25jYXN0PEhUTUxJbWFnZUVsZW1lbnQ+KCpub2RlKS5p
bWFnZVNvdXJjZVVSTCgpOwogICAgICAgICBVUkwgdXJsID0gbm9kZS0+ZG9jdW1lbnQoKS5jb21w
bGV0ZVVSTCh1cmxTdHJpbmcpOwogICAgICAgICBpbWFnZUZvckNvbnRhaW5lci0+c2V0VVJMKHVy
bCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXggYTVkZGUwM2EzMGIxOGI1
M2MzMzY3MTQ1MmRhMzg5M2U3OTI4N2MyMS4uZDJhZTEzMGM5ZjQyMDQwYmE1YzJlYmFkMWMzZDhh
YTY2NjJkMzJiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtMTkxOCw3
ICsxOTE4LDcgQEAgdm9pZCBJbnRlcm5hbHM6OnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHls
ZXNoZWV0c0FuZFJ1blBvc3RMYXlvdXRUYXNrcyhOb2RlKgogICAgICAgICBkb2N1bWVudCA9IGNv
bnRleHREb2N1bWVudCgpOwogICAgIGVsc2UgaWYgKG5vZGUtPmlzRG9jdW1lbnROb2RlKCkpCiAg
ICAgICAgIGRvY3VtZW50ID0gdG9Eb2N1bWVudChub2RlKTsKLSAgICBlbHNlIGlmIChpc0hUTUxJ
RnJhbWVFbGVtZW50KG5vZGUpKQorICAgIGVsc2UgaWYgKGlzPEhUTUxJRnJhbWVFbGVtZW50Pihu
b2RlKSkKICAgICAgICAgZG9jdW1lbnQgPSBkb3duY2FzdDxIVE1MSUZyYW1lRWxlbWVudD4oKm5v
ZGUpLmNvbnRlbnREb2N1bWVudCgpOwogICAgIGVsc2UgewogICAgICAgICBlYyA9IFR5cGVFcnJv
cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJz
ZXJMaWJ4bWwyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJz
ZXJMaWJ4bWwyLmNwcAppbmRleCBjMzdjZjgwZWRiMGJmYThhMWJmZGM1NjU5YWFiZWUxYTcxMDkz
MmFiLi44YWU1MTFkYThlMzRjNjU2NDRmMDYyMWI5ODdhZTAxZmE5NjFhNDdkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIu
Y3BwCkBAIC04NTAsNyArODUwLDcgQEAgdm9pZCBYTUxEb2N1bWVudFBhcnNlcjo6c3RhcnRFbGVt
ZW50TnMoY29uc3QgeG1sQ2hhciogeG1sTG9jYWxOYW1lLCBjb25zdCB4bWxDaGEKICAgICAgICAg
cmV0dXJuOwogCiAjaWYgRU5BQkxFKFRFTVBMQVRFX0VMRU1FTlQpCi0gICAgaWYgKGlzSFRNTFRl
bXBsYXRlRWxlbWVudCgqbmV3RWxlbWVudCkpCisgICAgaWYgKGlzPEhUTUxUZW1wbGF0ZUVsZW1l
bnQ+KCpuZXdFbGVtZW50KSkKICAgICAgICAgcHVzaEN1cnJlbnROb2RlKGRvd25jYXN0PEhUTUxU
ZW1wbGF0ZUVsZW1lbnQ+KCpuZXdFbGVtZW50KS5jb250ZW50KCkpOwogICAgIGVsc2UKICAgICAg
ICAgcHVzaEN1cnJlbnROb2RlKG5ld0VsZW1lbnQuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC93aW4vRE9NQ29yZUNsYXNzZXMuY3BwIGIvU291cmNlL1dlYktpdC93aW4vRE9NQ29y
ZUNsYXNzZXMuY3BwCmluZGV4IDlmYzNjZTZiMWNlOTM4YzVlMGZmNTA0ZGQyMGE3MTk5YTI2ZWUy
YTMuLjMzN2NkYTE5MTljMjJkMjMyMmVmNzA4MDQxNDI1ZjE5NDhhOWIxN2IgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvd2luL0RPTUNvcmVDbGFzc2VzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L3dpbi9ET01Db3JlQ2xhc3Nlcy5jcHAKQEAgLTE1MDAsNyArMTUwMCw3IEBAIElET01FbGVtZW50
KiBET01FbGVtZW50OjpjcmVhdGVJbnN0YW5jZShXZWJDb3JlOjpFbGVtZW50KiBlKQogICAgIEhS
RVNVTFQgaHI7CiAgICAgSURPTUVsZW1lbnQqIGRvbUVsZW1lbnQgPSAwOwogCi0gICAgaWYgKGlz
SFRNTEZvcm1FbGVtZW50KGUpKSB7CisgICAgaWYgKFdlYkNvcmU6OmlzPFdlYkNvcmU6OkhUTUxG
b3JtRWxlbWVudD4oZSkpIHsKICAgICAgICAgRE9NSFRNTEZvcm1FbGVtZW50KiBuZXdFbGVtZW50
ID0gbmV3IERPTUhUTUxGb3JtRWxlbWVudChlKTsKICAgICAgICAgaHIgPSBuZXdFbGVtZW50LT5R
dWVyeUludGVyZmFjZShJSURfSURPTUVsZW1lbnQsICh2b2lkKiopJmRvbUVsZW1lbnQpOwogICAg
IH0gZWxzZSBpZiAoZS0+aGFzVGFnTmFtZShpZnJhbWVUYWcpKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L3dpbi9ET01IVE1MQ2xhc3Nlcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9ET01I
VE1MQ2xhc3Nlcy5jcHAKaW5kZXggN2ZmYWVhYzIxYjk4ODNiYWM5OWUyODk0NTg4YTcyZDhkODI4
NTZlMS4uMWQxZDI0MDYzYzM2MWI1YjZjODMyZTg1NjdhMjZlNDVjYmFkMzcwYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC93aW4vRE9NSFRNTENsYXNzZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvd2luL0RPTUhUTUxDbGFzc2VzLmNwcApAQCAtNTU5LDcgKzU1OSw3IEBAIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgRE9NSFRNTEZvcm1FbGVtZW50OjpzZXRBY2NlcHRDaGFyc2V0KAogSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBET01IVE1MRm9ybUVsZW1lbnQ6OmFjdGlvbiggCiAgICAg
ICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQlNUUiogcmVzdWx0KQogewotICAgIEFTU0VSVChtX2Vs
ZW1lbnQgJiYgaXNIVE1MRm9ybUVsZW1lbnQobV9lbGVtZW50KSk7CisgICAgQVNTRVJUKG1fZWxl
bWVudCAmJiBpczxIVE1MRm9ybUVsZW1lbnQ+KG1fZWxlbWVudCkpOwogICAgIFdURjo6U3RyaW5n
IGFjdGlvblN0cmluZyA9IGRvd25jYXN0PEhUTUxGb3JtRWxlbWVudD4oKm1fZWxlbWVudCkuYWN0
aW9uKCk7CiAgICAgKnJlc3VsdCA9IEJTdHJpbmcoYWN0aW9uU3RyaW5nKS5yZWxlYXNlKCk7CiAg
ICAgcmV0dXJuIFNfT0s7CkBAIC01ODksNyArNTg5LDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBET01IVE1MRm9ybUVsZW1lbnQ6OnNldEVuY3R5cGUoCiBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIERPTUhUTUxGb3JtRWxlbWVudDo6bWV0aG9kKCAKICAgICAgICAgLyogW3JldHZhbF1b
b3V0XSAqLyBCU1RSKiByZXN1bHQpCiB7Ci0gICAgQVNTRVJUKG1fZWxlbWVudCAmJiBpc0hUTUxG
b3JtRWxlbWVudChtX2VsZW1lbnQpKTsKKyAgICBBU1NFUlQobV9lbGVtZW50ICYmIGlzPEhUTUxG
b3JtRWxlbWVudD4obV9lbGVtZW50KSk7CiAgICAgV1RGOjpTdHJpbmcgbWV0aG9kU3RyaW5nID0g
ZG93bmNhc3Q8SFRNTEZvcm1FbGVtZW50PigqbV9lbGVtZW50KS5tZXRob2QoKTsKICAgICAqcmVz
dWx0ID0gQlN0cmluZyhtZXRob2RTdHJpbmcpLnJlbGVhc2UoKTsKICAgICByZXR1cm4gU19PSzsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkZyYW1lLmNwcCBiL1NvdXJjZS9XZWJL
aXQvd2luL1dlYkZyYW1lLmNwcAppbmRleCBlMzMwNDhhZDgwNzMxNmE4NTk5ZjhkMGM3MzdmYzA3
MGEzMDdjYThhLi5jNTc1MjJhNzY0ZWMzYzE5ZWMyNjZhNzRlYzU3Zjg2NTgxOWMxMzZmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC93aW4vV2ViRnJhbWUuY3BwCkBAIC0yMDIsNyArMjAyLDcgQEAgc3RhdGljIEhUTUxGb3JtRWxl
bWVudCAqZm9ybUVsZW1lbnRGcm9tRE9NRWxlbWVudChJRE9NRWxlbWVudCAqZWxlbWVudCkKICAg
ICAgICAgRWxlbWVudCogZWxlOwogICAgICAgICBociA9IGVsZVByaXYtPmNvcmVFbGVtZW50KCh2
b2lkKiopJmVsZSk7CiAgICAgICAgIGVsZVByaXYtPlJlbGVhc2UoKTsKLSAgICAgICAgaWYgKFNV
Q0NFRURFRChocikgJiYgZWxlICYmIGlzSFRNTEZvcm1FbGVtZW50KGVsZSkpCisgICAgICAgIGlm
IChTVUNDRUVERUQoaHIpICYmIGVsZSAmJiBpczxIVE1MRm9ybUVsZW1lbnQ+KGVsZSkpCiAgICAg
ICAgICAgICByZXR1cm4gZG93bmNhc3Q8SFRNTEZvcm1FbGVtZW50PihlbGUpOwogICAgIH0KICAg
ICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlTm9kZUhhbmRsZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZU5vZGVI
YW5kbGUuY3BwCmluZGV4IGNlZDkwYWM2ZTFhZTRlMWFhZTllOGQ2MWRjOGQyYzc2MDBlOTZmNTEu
LjMyZTE4N2JjYzliZTFhNjY5M2Q3MDNjOGVmZTgwZjUzNmIxNjkwZjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxl
Tm9kZUhhbmRsZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlLmNwcApAQCAtMjc2LDcgKzI3Niw3IEBA
IFBhc3NSZWZQdHI8V2ViRnJhbWU+IEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZTo6aHRtbEZyYW1l
RWxlbWVudENvbnRlbnRGcmFtZSgpCiAKIFBhc3NSZWZQdHI8V2ViRnJhbWU+IEluamVjdGVkQnVu
ZGxlTm9kZUhhbmRsZTo6aHRtbElGcmFtZUVsZW1lbnRDb250ZW50RnJhbWUoKQogewotICAgIGlm
ICghaXNIVE1MSUZyYW1lRWxlbWVudCgqbV9ub2RlKSkKKyAgICBpZiAoIWlzPEhUTUxJRnJhbWVF
bGVtZW50PigqbV9ub2RlKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBGcmFtZSog
ZnJhbWUgPSBkb3duY2FzdDxIVE1MSUZyYW1lRWxlbWVudD4oKm1fbm9kZSkuY29udGVudEZyYW1l
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJh
bWUuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcApp
bmRleCAzNzJkZTQzZTJhZjRhNzA4NWQ0ODJiYzI4MjJhY2Y0ZmM4ZGU5NmE2Li5kOWFkY2M2MTY5
M2UzZTU5YjczNzQxZjk5NDk0M2RjMjRlZjFhNmUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKQEAgLTYxNSw3ICs2MTUsNyBAQCBib29sIFdl
YkZyYW1lOjpjb250YWluc0FueUZvcm1FbGVtZW50cygpIGNvbnN0CiAgICAgZm9yIChOb2RlKiBu
b2RlID0gZG9jdW1lbnQtPmRvY3VtZW50RWxlbWVudCgpOyBub2RlOyBub2RlID0gTm9kZVRyYXZl
cnNhbDo6bmV4dChub2RlKSkgewogICAgICAgICBpZiAoIW5vZGUtPmlzRWxlbWVudE5vZGUoKSkK
ICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBpZiAoaXNIVE1MRm9ybUVsZW1lbnQobm9k
ZSkpCisgICAgICAgIGlmIChpczxIVE1MRm9ybUVsZW1lbnQ+KG5vZGUpKQogICAgICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgfQogICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCBjY2M2M2I1MzE0NjUzODg5ODU4
OWYzYTJiZTg1ZjY0NDk3OTY5YTk3Li5iNTNkZWMyMDU4ZTdiYzlkYjYwZTg5Nzk4MTRjMDAzMWZh
YjBjOGNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwCkBAIC00NjA5LDcgKzQ2MDksNyBAQCB2b2lkIFdlYlBhZ2U6OmRldGVybWluZVByaW1hcnlT
bmFwc2hvdHRlZFBsdWdJbigpCiAgICAgICAgICAgICBpbmZsYXRlZFBsdWdpblJlY3QuaW5mbGF0
ZVkoeU9mZnNldCk7CiAKICAgICAgICAgICAgIGlmIChlbGVtZW50ICE9ICZwbHVnSW5JbWFnZUVs
ZW1lbnQpIHsKLSAgICAgICAgICAgICAgICBpZiAoIShpc0hUTUxJbWFnZUVsZW1lbnQoZWxlbWVu
dCkKKyAgICAgICAgICAgICAgICBpZiAoIShpczxIVE1MSW1hZ2VFbGVtZW50PihlbGVtZW50KQog
ICAgICAgICAgICAgICAgICAgICAmJiBpbmZsYXRlZFBsdWdpblJlY3QuY29udGFpbnMoZWxlbWVu
dFJlY3RSZWxhdGl2ZVRvVG9wRG9jdW1lbnQpCiAgICAgICAgICAgICAgICAgICAgICYmIGVsZW1l
bnRSZWN0UmVsYXRpdmVUb1RvcERvY3VtZW50LndpZHRoKCkgPiBwbHVnaW5SZW5kZXJCb3gud2lk
dGgoKSAqIG1pbmltdW1PdmVybGFwcGluZ0ltYWdlVG9QbHVnaW5EaW1lbnNpb25TY2FsZQogICAg
ICAgICAgICAgICAgICAgICAmJiBlbGVtZW50UmVjdFJlbGF0aXZlVG9Ub3BEb2N1bWVudC5oZWln
aHQoKSA+IHBsdWdpblJlbmRlckJveC5oZWlnaHQoKSAqIG1pbmltdW1PdmVybGFwcGluZ0ltYWdl
VG9QbHVnaW5EaW1lbnNpb25TY2FsZSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KaW5kZXggZTdhZjFhZDY2MmJjZDM3ZTRkZTgz
OWExNjZjZTMxODQ4NDMzZDhjMC4uYjY5Zjg2NjU0ODc0ZGZlMTg4OTA1MWEwNzQzZTIyNDg4OTlm
N2RjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9X
ZWJQYWdlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9pb3Mv
V2ViUGFnZUlPUy5tbQpAQCAtMjA4MCw3ICsyMDgwLDcgQEAgdm9pZCBXZWJQYWdlOjpnZXRBc3Np
c3RlZE5vZGVJbmZvcm1hdGlvbihBc3Npc3RlZE5vZGVJbmZvcm1hdGlvbiYgaW5mb3JtYXRpb24p
CiAgICAgICAgICAgICBpZiAoaXM8SFRNTE9wdGlvbkVsZW1lbnQ+KGl0ZW0pKSB7CiAgICAgICAg
ICAgICAgICAgSFRNTE9wdGlvbkVsZW1lbnQmIG9wdGlvbiA9IGRvd25jYXN0PEhUTUxPcHRpb25F
bGVtZW50PigqaXRlbSk7CiAgICAgICAgICAgICAgICAgaW5mb3JtYXRpb24uc2VsZWN0T3B0aW9u
cy5hcHBlbmQoT3B0aW9uSXRlbShvcHRpb24udGV4dCgpLCBmYWxzZSwgcGFyZW50R3JvdXBJRCwg
b3B0aW9uLnNlbGVjdGVkKCksIG9wdGlvbi5mYXN0SGFzQXR0cmlidXRlKFdlYkNvcmU6OkhUTUxO
YW1lczo6ZGlzYWJsZWRBdHRyKSkpOwotICAgICAgICAgICAgfSBlbHNlIGlmIChpc0hUTUxPcHRH
cm91cEVsZW1lbnQoaXRlbSkpIHsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoaXM8SFRNTE9wdEdy
b3VwRWxlbWVudD4oaXRlbSkpIHsKICAgICAgICAgICAgICAgICBIVE1MT3B0R3JvdXBFbGVtZW50
JiBncm91cCA9IGRvd25jYXN0PEhUTUxPcHRHcm91cEVsZW1lbnQ+KCppdGVtKTsKICAgICAgICAg
ICAgICAgICBwYXJlbnRHcm91cElEKys7CiAgICAgICAgICAgICAgICAgaW5mb3JtYXRpb24uc2Vs
ZWN0T3B0aW9ucy5hcHBlbmQoT3B0aW9uSXRlbShncm91cC5ncm91cExhYmVsVGV4dCgpLCB0cnVl
LCAwLCBmYWxzZSwgZ3JvdXAuZmFzdEhhc0F0dHJpYnV0ZShXZWJDb3JlOjpIVE1MTmFtZXM6OmRp
c2FibGVkQXR0cikpKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>238677</attachid>
            <date>2014-09-25 15:17:59 -0700</date>
            <delta_ts>2014-09-25 15:36:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-137103-20140925151758.patch</filename>
            <type>text/plain</type>
            <size>129356</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTczOTc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjNhZDdiMmRlMDgyMGI1
NTZiZmIyMTY1NGQxNzg5Y2Y1ZGFkNWRmYS4uZjcxY2Q3MGVmYmM5MWNhYjQ3ZGUzODY5NWJhODU3
N2JiNTU0MGFmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0NyBAQAorMjAxNC0wOS0yNCAgQ2hy
aXN0b3BoZSBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIGlzPEhUTUwq
RWxlbWVudD4oKSBpbnN0ZWFkIG9mIGlzSFRNTCpFbGVtZW50KCkgLSBQYXJ0IDIKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNzEwMworCisgICAgICAg
IFJldmlld2VkIGJ5IEJlbmphbWluIFBvdWxhaW4uCisKKyAgICAgICAgVXNlIGlzPEhUTUwqRWxl
bWVudD4oKSBpbnN0ZWFkIG9mIGlzSFRNTCpFbGVtZW50KCkgYW5kIGRyb3Agc3VwcG9ydCBmb3IK
KyAgICAgICAgdGhlIGdlbmVyYXRlZCBpc0hUTUwqRWxlbWVudCgpIG1hY3Jvcy4KKworICAgICAg
ICBObyBuZXcgdGVzdHMsIG5vIGJlaGF2aW9yIGNoYW5nZS4KKworICAgICAgICAqIGFjY2Vzc2li
aWxpdHkvQVhPYmplY3RDYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hl
Ojpmb2N1c2VkVUlFbGVtZW50Rm9yUGFnZSk6CisgICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENh
Y2hlOjpnZXRPckNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpoYW5k
bGVBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6Omxh
YmVsQ2hhbmdlZCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdEJv
eE9wdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlv
bjo6aXNFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlMaXN0Qm94T3B0
aW9uOjpzdHJpbmdWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5TGlzdEJv
eE9wdGlvbjo6bGlzdEJveE9wdGlvblBhcmVudE5vZGUpOgorICAgICAgICAqIGFjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNz
aWJpbGl0eU5vZGVPYmplY3Q6OmRldGVybWluZUFjY2Vzc2liaWxpdHlSb2xlKToKKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojppc05hdGl2ZUltYWdlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjphbmNob3JFbGVtZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjphbHRlcm5hdGl2ZVRleHQp
OgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjphbmNob3JFbGVt
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmxhYmVs
RWxlbWVudENvbnRhaW5lcik6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVy
T2JqZWN0OjppbnRlcm5hbExpbmtFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlSZW5kZXJPYmplY3Q6OmNvbXB1dGVBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnVybCk6CisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpnZXREb2N1bWVudExpbmtzKToKKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFjY2Vzc2liaWxpdHlJ
bWFnZU1hcEhpdFRlc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9i
amVjdDo6YWNjZXNzaWJpbGl0eUhpdFRlc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJp
bGl0eVJlbmRlck9iamVjdDo6ZGV0ZXJtaW5lQWNjZXNzaWJpbGl0eVJvbGUpOgorICAgICAgICAo
V2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6c3RyaW5nVmFsdWVGb3JNU0FBKToK
KyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmlzTGlua2VkKToK
KyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFibGU6OnRhYmxlRWxlbWVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFibGU6OmlzVGFibGVFeHBvc2FibGVUaHJvdWdoQWNjZXNz
aWJpbGl0eSk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFibGU6OnRpdGxlKToK
KyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlVGFi
bGUuY3BwOgorICAgICAgICAod2Via2l0QWNjZXNzaWJsZVRhYmxlR2V0Q2FwdGlvbik6CisgICAg
ICAgICogYmluZGluZ3MvanMvSlNIVE1MRG9jdW1lbnRDdXN0b20uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SlNIVE1MRG9jdW1lbnQ6Om5hbWVHZXR0ZXIpOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTTm9kZUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjppc1JlYWNoYWJsZUZyb21ET00p
OgorICAgICAgICAqIGNzcy9DU1NEZWZhdWx0U3R5bGVTaGVldHMuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6ZWxlbWVudENhblVzZVNpbXBsZURlZmF1bHRTdHlsZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NEZWZhdWx0U3R5bGVTaGVldHM6OmVuc3VyZURlZmF1bHRTdHlsZVNoZWV0c0ZvckVsZW1l
bnQpOgorICAgICAgICAqIGNzcy9DU1NTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmlzQWNjZXB0YWJsZUNTU1N0eWxlU2hlZXRQYXJlbnQpOgorICAgICAgICAqIGNzcy9TdHlsZVJl
c29sdmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OmFkanVzdFJlbmRl
clN0eWxlKToKKyAgICAgICAgKiBjc3MvU3R5bGVTaGVldExpc3QuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U3R5bGVTaGVldExpc3Q6OmdldE5hbWVkSXRlbSk6CisgICAgICAgICogZG9tL0N1cnJl
bnRTY3JpcHRJbmNyZW1lbnRlci5oOgorICAgICAgICAoV2ViQ29yZTo6Q3VycmVudFNjcmlwdElu
Y3JlbWVudGVyOjpDdXJyZW50U2NyaXB0SW5jcmVtZW50ZXIpOgorICAgICAgICAqIGRvbS9EYXRh
VHJhbnNmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVyOjpzZXREcmFnSW1h
Z2UpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudE9yZGVyZWRNYXAuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6a2V5TWF0Y2hlc01hcE5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6a2V5TWF0Y2hlc0xv
d2VyY2FzZWRNYXBOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OmtleU1hdGNoZXNMb3dlcmNhc2Vk
VXNlbWFwKToKKyAgICAgICAgKFdlYkNvcmU6OmtleU1hdGNoZXNMYWJlbEZvckF0dHJpYnV0ZSk6
CisgICAgICAgICogZG9tL0RvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb24uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbjo6Y29sbGVjdEFjdGl2ZVN0
eWxlU2hlZXRzKToKKyAgICAgICAgKiBkb20vTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpO
b2RlOjplbmNsb3NpbmdMaW5rRXZlbnRQYXJlbnRPclNlbGYpOgorICAgICAgICAqIGRvbS9Qb3Np
dGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjplbmRzT2ZOb2RlQXJlVmlzdWFsbHlEaXN0aW5j
dFBvc2l0aW9ucyk6CisgICAgICAgICogZG9tL1NjcmlwdEVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6dG9TY3JpcHRFbGVtZW50SWZQb3NzaWJsZSk6CisgICAgICAgICogZG9tL1Zpc2l0
ZWRMaW5rU3RhdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bGlua0hhc2hGb3JFbGVtZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OlZpc2l0ZWRMaW5rU3RhdGU6OmRldGVybWluZUxpbmtTdGF0ZVNs
b3dDYXNlKToKKyAgICAgICAgKiBkb20vbWFrZV9uYW1lcy5wbDoKKyAgICAgICAgKHByaW50VHlw
ZUhlbHBlcnMpOgorICAgICAgICAqIGVkaXRpbmcvRGVsZXRlU2VsZWN0aW9uQ29tbWFuZC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpEZWxldGVTZWxlY3Rpb25Db21tYW5kOjpoYW5kbGVHZW5lcmFs
RGVsZXRlKToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjppbWFnZUVsZW1lbnRGcm9tSW1hZ2VEb2N1bWVudCk6CisgICAgICAgICogZWRpdGluZy9GcmFt
ZVNlbGVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzY2FuRm9yRm9ybSk6CisgICAgICAg
ICogZWRpdGluZy9JbnNlcnRMaW5lQnJlYWtDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Okluc2VydExpbmVCcmVha0NvbW1hbmQ6OmRvQXBwbHkpOgorICAgICAgICAqIGVkaXRpbmcvSW5z
ZXJ0UGFyYWdyYXBoU2VwYXJhdG9yQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNl
cnRQYXJhZ3JhcGhTZXBhcmF0b3JDb21tYW5kOjpkb0FwcGx5KToKKyAgICAgICAgKiBlZGl0aW5n
L1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJlbW92ZUhl
YWRDb250ZW50cyk6CisgICAgICAgICogZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tOgor
ICAgICAgICAoSFRNTENvbnZlcnRlcjo6X3Byb2Nlc3NFbGVtZW50KToKKyAgICAgICAgKiBlZGl0
aW5nL2h0bWxlZGl0aW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmlzTm9uVGFibGVDZWxsSFRN
TEJsb2NrRWxlbWVudCk6CisgICAgICAgICogZWRpdGluZy9tYXJrdXAuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6YW5jZXN0b3JUb1JldGFpblN0cnVjdHVyZUFuZEFwcGVhcmFuY2VGb3JCbG9jayk6
CisgICAgICAgIChXZWJDb3JlOjpjb2xsZWN0RWxlbWVudHNUb1JlbW92ZUZyb21GcmFnbWVudCk6
CisgICAgICAgICogaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGVFBEaXJlY3RvcnlEb2N1bWVudFBhcnNlcjo6bG9hZERvY3VtZW50VGVtcGxhdGUpOgor
ICAgICAgICAqIGh0bWwvRm9ybUFzc29jaWF0ZWRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkZvcm1Bc3NvY2lhdGVkRWxlbWVudDo6ZmluZEFzc29jaWF0ZWRGb3JtKToKKyAgICAgICAg
KiBodG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFwcGVuZFNl
cnZlck1hcE1vdXNlUG9zaXRpb24pOgorICAgICAgICAqIGh0bWwvSFRNTEFyZWFFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxBcmVhRWxlbWVudDo6aW1hZ2VFbGVtZW50KToKKyAg
ICAgICAgKiBodG1sL0hUTUxEb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRG9j
dW1lbnQ6OmJnQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTERvY3VtZW50OjpzZXRCZ0Nv
bG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxEb2N1bWVudDo6ZmdDb2xvcik6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MRG9jdW1lbnQ6OnNldEZnQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTERvY3VtZW50OjphbGlua0NvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxEb2N1bWVu
dDo6c2V0QWxpbmtDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRG9jdW1lbnQ6OmxpbmtD
b2xvcik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRG9jdW1lbnQ6OnNldExpbmtDb2xvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MRG9jdW1lbnQ6OnZsaW5rQ29sb3IpOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTERvY3VtZW50OjpzZXRWbGlua0NvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxEb2N1bWVudDo6aXNGcmFtZVNldCk6CisgICAgICAgICogaHRtbC9IVE1MRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MRWxlbWVudDo6c2V0SW5uZXJIVE1MKToKKyAgICAgICAg
KiBodG1sL0hUTUxGaWVsZFNldEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dXBkYXRl
RnJvbUNvbnRyb2xFbGVtZW50c0FuY2VzdG9yRGlzYWJsZWRTdGF0ZVVuZGVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxGaWVsZFNldEVsZW1lbnQ6OmRpc2FibGVkU3RhdGVDaGFuZ2VkKToKKyAg
ICAgICAgKiBodG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTEZvcm1Db250cm9sRWxlbWVudDo6Y29tcHV0ZUlzRGlzYWJsZWRCeUZpZWxkc2V0QW5j
ZXN0b3IpOgorICAgICAgICAqIGh0bWwvSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb246OkhUTUxGb3JtQ29u
dHJvbHNDb2xsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtQ29udHJvbHNDb2xs
ZWN0aW9uOjpmb3JtQ29udHJvbEVsZW1lbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3Jt
Q29udHJvbHNDb2xsZWN0aW9uOjpmb3JtSW1hZ2VFbGVtZW50cyk6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbjo6bmFtZWRJdGVtKToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uOjp1cGRhdGVOYW1lZEVsZW1lbnRDYWNoZSk6
CisgICAgICAgICogaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTEZvcm1FbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKToKKyAgICAgICAgKiBodG1sL0hUTUxG
cmFtZUVsZW1lbnRCYXNlLmg6CisgICAgICAgIChXZWJDb3JlOjppc0hUTUxGcmFtZUVsZW1lbnRC
YXNlKToKKyAgICAgICAgKiBodG1sL0hUTUxJbWFnZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MSW1hZ2VMb2FkZXI6OmRpc3BhdGNoTG9hZEV2ZW50KToKKyAgICAgICAgKiBodG1s
L0hUTUxJbnB1dEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVu
dDo6ZGF0YUxpc3QpOgorICAgICAgICAqIGh0bWwvSFRNTExlZ2VuZEVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTExlZ2VuZEVsZW1lbnQ6OnZpcnR1YWxGb3JtKToKKyAgICAgICAg
KiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlh
RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOgorICAgICAgICAqIGh0bWwvSFRNTE5hbWVDb2xsZWN0
aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldpbmRvd05hbWVDb2xsZWN0aW9uOjplbGVtZW50
TWF0Y2hlc0lmTmFtZUF0dHJpYnV0ZU1hdGNoKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50
TmFtZUNvbGxlY3Rpb246OmVsZW1lbnRNYXRjaGVzKToKKyAgICAgICAgKiBodG1sL0hUTUxPcHRp
b25FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxPcHRpb25FbGVtZW50Ojpvd25l
ckRhdGFMaXN0RWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MT3B0aW9uRWxlbWVudDo6
dGV4dEluZGVudGVkVG9SZXNwZWN0R3JvdXBMYWJlbCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
T3B0aW9uRWxlbWVudDo6aXNEaXNhYmxlZEZvcm1Db250cm9sKToKKyAgICAgICAgKiBodG1sL0hU
TUxTZWxlY3RFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTZWxlY3RFbGVtZW50
OjpyZWNhbGNMaXN0SXRlbXMpOgorICAgICAgICAqIGh0bWwvSFRNTFRhYmxlRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MVGFibGVFbGVtZW50OjpjYXB0aW9uKToKKyAgICAgICAg
KiBodG1sL0hUTUxUYWJsZVBhcnRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxU
YWJsZVBhcnRFbGVtZW50OjpmaW5kUGFyZW50VGFibGUpOgorICAgICAgICAqIGh0bWwvSFRNTFRh
YmxlUm93RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVGFibGVSb3dFbGVtZW50
Ojpyb3dJbmRleCk6CisgICAgICAgICogaHRtbC9IVE1MVGFibGVSb3dzQ29sbGVjdGlvbi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MVGFibGVSb3dzQ29sbGVjdGlvbjo6cm93QWZ0ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTFRhYmxlUm93c0NvbGxlY3Rpb246Omxhc3RSb3cpOgorICAg
ICAgICAqIGh0bWwvSFRNTFRhZ05hbWVzLmluOgorICAgICAgICAqIGh0bWwvTGFiZWxzTm9kZUxp
c3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGFiZWxzTm9kZUxpc3Q6OmVsZW1lbnRNYXRjaGVz
KToKKyAgICAgICAgKiBodG1sL01lZGlhRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
ZGVzY2VuZGVudFZpZGVvRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjphbmNlc3RvclZpZGVv
RWxlbWVudCk6CisgICAgICAgICogaHRtbC9SYWRpb0lucHV0VHlwZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSYWRpb0lucHV0VHlwZTo6aGFuZGxlS2V5ZG93bkV2ZW50KToKKyAgICAgICAgKiBo
dG1sL1JhZGlvTm9kZUxpc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmFkaW9Ob2RlTGlzdDo6
UmFkaW9Ob2RlTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpSYWRpb05vZGVMaXN0OjpjaGVja0Vs
ZW1lbnRNYXRjaGVzUmFkaW9Ob2RlTGlzdEZpbHRlcik6CisgICAgICAgICogaHRtbC9wYXJzZXIv
SFRNTENvbnN0cnVjdGlvblNpdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aGFzSW1wbGllZEVu
ZFRhZyk6CisgICAgICAgIChXZWJDb3JlOjppbnNlcnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TENvbnN0cnVjdGlvblNpdGU6Omluc2VydEhUTUxGb3JtRWxlbWVudCk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MQ29uc3RydWN0aW9uU2l0ZTo6aW5zZXJ0VGV4dE5vZGUpOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTENvbnN0cnVjdGlvblNpdGU6Om93bmVyRG9jdW1lbnRGb3JDdXJyZW50Tm9kZSk6
CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTEVsZW1lbnRTdGFjay5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MTmFtZXM6OmlzU2NvcGVNYXJrZXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TE5hbWVzOjppc1RhYmxlU2NvcGVNYXJrZXIpOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxU
cmVlQnVpbGRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OkhUTUxU
cmVlQnVpbGRlcik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NT
dGFydFRhZyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OnJlc2V0SW5zZXJ0
aW9uTW9kZUFwcHJvcHJpYXRlbHkpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVy
Ojpwcm9jZXNzRW5kVGFnKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6cHJv
Y2Vzc0NoYXJhY3RlckJ1ZmZlcik6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRPTUFn
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpidWlsZE9iamVj
dEZvck5vZGUpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclN0eWxlU2hlZXQ6OmlubGluZVN0eWxlU2hlZXRU
ZXh0KToKKyAgICAgICAgKiBwYWdlL0RyYWdDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkRyYWdDb250cm9sbGVyOjpkcmFnZ2FibGVFbGVtZW50KToKKyAgICAgICAgKiBwYWdlL0Zv
Y3VzQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb2N1c0NvbnRyb2xsZXI6OmFk
dmFuY2VGb2N1c0RpcmVjdGlvbmFsbHkpOgorICAgICAgICAqIHBhZ2UvUGFnZVNlcmlhbGl6ZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZVNlcmlhbGl6ZXI6OnNlcmlhbGl6ZUZyYW1lKToK
KyAgICAgICAgKiBwYWdlL1NwYXRpYWxOYXZpZ2F0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkZvY3VzQ2FuZGlkYXRlOjpGb2N1c0NhbmRpZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjphcmVF
bGVtZW50c09uU2FtZUxpbmUpOgorICAgICAgICAqIHBhZ2UvaW9zL0ZyYW1lSU9TLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6YW5jZXN0b3JSZXNwb25kaW5nVG9DbGlja0V2ZW50cyk6CisgICAgICAg
ICogcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SGl0VGVz
dFJlc3VsdDo6YWx0RGlzcGxheVN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpIaXRUZXN0UmVz
dWx0OjptZWRpYVN1cHBvcnRzRnVsbHNjcmVlbik6CisgICAgICAgIChXZWJDb3JlOjpIaXRUZXN0
UmVzdWx0OjptZWRpYUVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SGl0VGVzdFJlc3VsdDo6
ZW50ZXJGdWxsc2NyZWVuRm9yVmlkZW8pOgorICAgICAgICAoV2ViQ29yZTo6SGl0VGVzdFJlc3Vs
dDo6bWVkaWFJc1ZpZGVvKToKKyAgICAgICAgKFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQ6OmlzTGl2
ZUxpbmspOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJDb3VudGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OnBsYW5Db3VudGVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW1hZ2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2U6OlJlbmRlckltYWdlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjpwYWludEFyZWFFbGVtZW50Rm9jdXNSaW5nKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjpwYWludEludG9SZWN0KToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckltYWdlOjppbWFnZU1hcCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJ
bWFnZTo6dXBkYXRlQWx0VGV4dCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxpc3RCb3gu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGlzdEJveDo6dXBkYXRlRnJvbUVsZW1lbnQp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGlzdEJveDo6cGFpbnRJdGVtRm9yZWdyb3VuZCk6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck1hcnF1ZWUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyTWFycXVlZTo6bWFycXVlZVNwZWVkKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyTWVudUxpc3QuY3BwOgorICAgICAgICAoUmVuZGVyTWVudUxpc3Q6Oml0ZW1UZXh0KToKKyAg
ICAgICAgKFJlbmRlck1lbnVMaXN0OjppdGVtSXNFbmFibGVkKToKKyAgICAgICAgKFJlbmRlck1l
bnVMaXN0OjppdGVtSXNMYWJlbCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck1ldGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1ldGVyOjptZXRlckVsZW1lbnQpOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
T2JqZWN0OjpzaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJPYmplY3Q6OmdldFRleHREZWNvcmF0aW9uQ29sb3JzKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlck9iamVjdDo6b2Zmc2V0UGFyZW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyUHJvZ3Jlc3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyUHJvZ3Jlc3M6OnByb2dy
ZXNzRWxlbWVudCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlOjpjb252ZXJ0U3R5bGVMb2dpY2FsV2lkdGhUb0NvbXB1
dGVkV2lkdGgpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGU6OmNvbnZlcnRTdHlsZUxv
Z2ljYWxIZWlnaHRUb0NvbXB1dGVkSGVpZ2h0KToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZH
SW1hZ2VDYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZUNhY2hlOjppbWFnZUZv
clJlbmRlcmVyKToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbnRlcm5hbHM6OnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0c0Fu
ZFJ1blBvc3RMYXlvdXRUYXNrcyk6CisgICAgICAgICogeG1sL3BhcnNlci9YTUxEb2N1bWVudFBh
cnNlckxpYnhtbDIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1MRG9jdW1lbnRQYXJzZXI6OnN0
YXJ0RWxlbWVudE5zKToKKwogMjAxNC0wOS0yNSAgQnJpYW4gSi4gQnVyZyAgPGJ1cmdAY3Mud2Fz
aGluZ3Rvbi5lZHU+CiAKICAgICAgICAgV2ViIFJlcGxheTogQ2hlY2sgZXZlbnQgbG9vcCBpbnB1
dCBleHRlbnRzIGR1cmluZyByZXBsYXkgdG9vCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dp
bi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKaW5kZXggNDA0NjBkZjNh
ZjM2YWNjZTdjOTEyNTA5ZTQwNjEyOTRkN2UxNmJkNi4uZDljMjU5OWUxNDgxZmQ4YTY0OWVhNTdi
MmZkMjc1Y2NjYTU4ZTE1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDIyIEBACiAyMDE0
LTA5LTI0ICBDaHJpc3RvcGhlIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAorICAgICAgICBV
c2UgaXM8SFRNTCpFbGVtZW50PigpIGluc3RlYWQgb2YgaXNIVE1MKkVsZW1lbnQoKSAtIFBhcnQg
MgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM3MTAz
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQmVuamFtaW4gUG91bGFpbi4KKworICAgICAgICBVc2Ug
aXM8SFRNTCpFbGVtZW50PigpIGluc3RlYWQgb2YgaXNIVE1MKkVsZW1lbnQoKS4KKworICAgICAg
ICAqIERPTUNvcmVDbGFzc2VzLmNwcDoKKyAgICAgICAgKERPTUVsZW1lbnQ6OmNyZWF0ZUluc3Rh
bmNlKToKKyAgICAgICAgKiBET01IVE1MQ2xhc3Nlcy5jcHA6CisgICAgICAgIChET01IVE1MRm9y
bUVsZW1lbnQ6OmFjdGlvbik6CisgICAgICAgIChET01IVE1MRm9ybUVsZW1lbnQ6Om1ldGhvZCk6
CisgICAgICAgICogV2ViRnJhbWUuY3BwOgorICAgICAgICAoZm9ybUVsZW1lbnRGcm9tRE9NRWxl
bWVudCk6CisKKzIwMTQtMDktMjQgIENocmlzdG9waGUgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29t
PgorCiAgICAgICAgIEFkZCBpbml0aWFsIGlzPD4oKSAvIGRvd25jYXN0PD4oKSBzdXBwb3J0IGZv
ciBhbnkgdHlwZSBvZiBOb2RlcwogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTM3MDU2CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA0YjM3YWQ3M2YwYjg5MmJhMWQzZWRi
MzJhNTVjNWI1NmUxZmJmMjFjLi5kMjkwNjA0YjhmMzhhYThjMWU2YTI4MWUzMjUxMDg4ZGJlMjIw
NTBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTQtMDktMjQgIENocmlzdG9waGUg
RHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBpczxIVE1MKkVsZW1lbnQ+
KCkgaW5zdGVhZCBvZiBpc0hUTUwqRWxlbWVudCgpIC0gUGFydCAyCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzcxMDMKKworICAgICAgICBSZXZpZXdl
ZCBieSBCZW5qYW1pbiBQb3VsYWluLgorCisgICAgICAgIFVzZSBpczxIVE1MKkVsZW1lbnQ+KCkg
aW5zdGVhZCBvZiBpc0hUTUwqRWxlbWVudCgpLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6SW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlOjpodG1sSUZyYW1lRWxlbWVudENvbnRlbnRG
cmFtZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViRnJhbWU6OmNvbnRhaW5zQW55Rm9ybUVsZW1lbnRzKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2U6OmRldGVybWluZVByaW1hcnlTbmFwc2hvdHRlZFBsdWdJbik6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
OjpnZXRBc3Npc3RlZE5vZGVJbmZvcm1hdGlvbik6CisKIDIwMTQtMDktMjUgIEFuZGVycyBDYXJs
c3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBFeHBhbmQgV0tfTUFDX1RCQSBh
bmQgV0tfSU9TX1RCQSB0byB0aGUgY3VycmVudCBkZXBsb3ltZW50IHRhcmdldCB2ZXJzaW9uIChv
ciBOQSkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0
Q2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNw
cAppbmRleCBiMGVjNTliMjU4NGY3ZWJiNzY1Njg0NGFlMWM5NTVlZTIwMTE4ZGQ0Li42NzQ3NWMy
N2JmYzAxNTc4NWI5YTBjMTFjMDUxZmFlMzNmYzhhZjhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAKQEAgLTE3Niw3ICsxNzYsNyBAQCBBY2Nl
c3NpYmlsaXR5T2JqZWN0KiBBWE9iamVjdENhY2hlOjpmb2N1c2VkVUlFbGVtZW50Rm9yUGFnZShj
b25zdCBQYWdlKiBwYWdlKQogICAgIC8vIGdldCB0aGUgZm9jdXNlZCBub2RlIGluIHRoZSBwYWdl
CiAgICAgRG9jdW1lbnQqIGZvY3VzZWREb2N1bWVudCA9IHBhZ2UtPmZvY3VzQ29udHJvbGxlcigp
LmZvY3VzZWRPck1haW5GcmFtZSgpLmRvY3VtZW50KCk7CiAgICAgRWxlbWVudCogZm9jdXNlZEVs
ZW1lbnQgPSBmb2N1c2VkRG9jdW1lbnQtPmZvY3VzZWRFbGVtZW50KCk7Ci0gICAgaWYgKGZvY3Vz
ZWRFbGVtZW50ICYmIGlzSFRNTEFyZWFFbGVtZW50KGZvY3VzZWRFbGVtZW50KSkKKyAgICBpZiAo
Zm9jdXNlZEVsZW1lbnQgJiYgaXM8SFRNTEFyZWFFbGVtZW50Pihmb2N1c2VkRWxlbWVudCkpCiAg
ICAgICAgIHJldHVybiBmb2N1c2VkSW1hZ2VNYXBVSUVsZW1lbnQoZG93bmNhc3Q8SFRNTEFyZWFF
bGVtZW50Pihmb2N1c2VkRWxlbWVudCkpOwogCiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogb2Jq
ID0gZm9jdXNlZERvY3VtZW50LT5heE9iamVjdENhY2hlKCktPmdldE9yQ3JlYXRlKGZvY3VzZWRF
bGVtZW50ID8gc3RhdGljX2Nhc3Q8Tm9kZSo+KGZvY3VzZWRFbGVtZW50KSA6IGZvY3VzZWREb2N1
bWVudCk7CkBAIC0zODYsNyArMzg2LDcgQEAgQWNjZXNzaWJpbGl0eU9iamVjdCogQVhPYmplY3RD
YWNoZTo6Z2V0T3JDcmVhdGUoTm9kZSogbm9kZSkKIAogICAgIGJvb2wgaW5zaWRlTWV0ZXJFbGVt
ZW50ID0gZmFsc2U7CiAjaWYgRU5BQkxFKE1FVEVSX0VMRU1FTlQpCi0gICAgaW5zaWRlTWV0ZXJF
bGVtZW50ID0gaXNIVE1MTWV0ZXJFbGVtZW50KG5vZGUtPnBhcmVudEVsZW1lbnQoKSk7CisgICAg
aW5zaWRlTWV0ZXJFbGVtZW50ID0gaXM8SFRNTE1ldGVyRWxlbWVudD4obm9kZS0+cGFyZW50RWxl
bWVudCgpKTsKICNlbmRpZgogICAgIAogICAgIGlmICghaW5DYW52YXNTdWJ0cmVlICYmICFpc0hp
ZGRlbiAmJiAhaW5zaWRlTWV0ZXJFbGVtZW50KQpAQCAtOTE3LDcgKzkxNyw3IEBAIHZvaWQgQVhP
YmplY3RDYWNoZTo6aGFuZGxlQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBh
dHRyTmFtZSwgRWxlbWVuCiAgICAgICAgIGhhbmRsZUFyaWFSb2xlQ2hhbmdlZChlbGVtZW50KTsK
ICAgICBlbHNlIGlmIChhdHRyTmFtZSA9PSBhbHRBdHRyIHx8IGF0dHJOYW1lID09IHRpdGxlQXR0
cikKICAgICAgICAgdGV4dENoYW5nZWQoZWxlbWVudCk7Ci0gICAgZWxzZSBpZiAoYXR0ck5hbWUg
PT0gZm9yQXR0ciAmJiBpc0hUTUxMYWJlbEVsZW1lbnQoZWxlbWVudCkpCisgICAgZWxzZSBpZiAo
YXR0ck5hbWUgPT0gZm9yQXR0ciAmJiBpczxIVE1MTGFiZWxFbGVtZW50PihlbGVtZW50KSkKICAg
ICAgICAgbGFiZWxDaGFuZ2VkKGVsZW1lbnQpOwogCiAgICAgaWYgKCFhdHRyTmFtZS5sb2NhbE5h
bWUoKS5zdHJpbmcoKS5zdGFydHNXaXRoKCJhcmlhLSIpKQpAQCAtOTQ3LDcgKzk0Nyw3IEBAIHZv
aWQgQVhPYmplY3RDYWNoZTo6aGFuZGxlQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWRO
YW1lJiBhdHRyTmFtZSwgRWxlbWVuCiAKIHZvaWQgQVhPYmplY3RDYWNoZTo6bGFiZWxDaGFuZ2Vk
KEVsZW1lbnQqIGVsZW1lbnQpCiB7Ci0gICAgQVNTRVJUKGlzSFRNTExhYmVsRWxlbWVudChlbGVt
ZW50KSk7CisgICAgQVNTRVJUKGlzPEhUTUxMYWJlbEVsZW1lbnQ+KGVsZW1lbnQpKTsKICAgICBI
VE1MRWxlbWVudCogY29ycmVzcG9uZGluZ0NvbnRyb2wgPSBkb3duY2FzdDxIVE1MTGFiZWxFbGVt
ZW50PihlbGVtZW50KS0+Y29udHJvbCgpOwogICAgIHRleHRDaGFuZ2VkKGNvcnJlc3BvbmRpbmdD
b250cm9sKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eUxpc3RCb3hPcHRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlvbi5jcHAKaW5kZXggYzMyNzAwODA2MDNjZjBjNzJj
OWI2Y2JjZjRmODU3OWVjNzJmMmNhMi4uZjAzODg3Y2E2YTM1ZDM2ZGI1MjNiNzhiNGY1YmEwZTI0
YzU2ZGZjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5TGlzdEJveE9wdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlvbi5jcHAKQEAgLTY0LDcgKzY0LDcgQEAgYm9vbCBB
Y2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlvbjo6aXNFbmFibGVkKCkgY29uc3QKICAgICBpZiAoIW1f
b3B0aW9uRWxlbWVudCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAotICAgIGlmIChpc0hU
TUxPcHRHcm91cEVsZW1lbnQobV9vcHRpb25FbGVtZW50KSkKKyAgICBpZiAoaXM8SFRNTE9wdEdy
b3VwRWxlbWVudD4obV9vcHRpb25FbGVtZW50KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAg
ICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGdldEF0dHJpYnV0ZShhcmlhX2Rpc2FibGVkQXR0ciks
ICJ0cnVlIikpCkBAIC0xNTksNyArMTU5LDcgQEAgU3RyaW5nIEFjY2Vzc2liaWxpdHlMaXN0Qm94
T3B0aW9uOjpzdHJpbmdWYWx1ZSgpIGNvbnN0CiAgICAgaWYgKGlzPEhUTUxPcHRpb25FbGVtZW50
PihtX29wdGlvbkVsZW1lbnQpKQogICAgICAgICByZXR1cm4gZG93bmNhc3Q8SFRNTE9wdGlvbkVs
ZW1lbnQ+KCptX29wdGlvbkVsZW1lbnQpLnRleHQoKTsKICAgICAKLSAgICBpZiAoaXNIVE1MT3B0
R3JvdXBFbGVtZW50KG1fb3B0aW9uRWxlbWVudCkpCisgICAgaWYgKGlzPEhUTUxPcHRHcm91cEVs
ZW1lbnQ+KG1fb3B0aW9uRWxlbWVudCkpCiAgICAgICAgIHJldHVybiBkb3duY2FzdDxIVE1MT3B0
R3JvdXBFbGVtZW50PigqbV9vcHRpb25FbGVtZW50KS5ncm91cExhYmVsVGV4dCgpOwogICAgIAog
ICAgIHJldHVybiBTdHJpbmcoKTsKQEAgLTIwNSw3ICsyMDUsNyBAQCBIVE1MU2VsZWN0RWxlbWVu
dCogQWNjZXNzaWJpbGl0eUxpc3RCb3hPcHRpb246Omxpc3RCb3hPcHRpb25QYXJlbnROb2RlKCkg
Y29uc3QKICAgICBpZiAoaXM8SFRNTE9wdGlvbkVsZW1lbnQ+KG1fb3B0aW9uRWxlbWVudCkpCiAg
ICAgICAgIHJldHVybiBkb3duY2FzdDxIVE1MT3B0aW9uRWxlbWVudD4oKm1fb3B0aW9uRWxlbWVu
dCkub3duZXJTZWxlY3RFbGVtZW50KCk7CiAKLSAgICBpZiAoaXNIVE1MT3B0R3JvdXBFbGVtZW50
KG1fb3B0aW9uRWxlbWVudCkpCisgICAgaWYgKGlzPEhUTUxPcHRHcm91cEVsZW1lbnQ+KG1fb3B0
aW9uRWxlbWVudCkpCiAgICAgICAgIHJldHVybiBkb3duY2FzdDxIVE1MT3B0R3JvdXBFbGVtZW50
PigqbV9vcHRpb25FbGVtZW50KS5vd25lclNlbGVjdEVsZW1lbnQoKTsKIAogICAgIHJldHVybiBu
dWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5Tm9kZU9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlOb2RlT2JqZWN0LmNwcAppbmRleCAyNjJmYjk3NWQyYjY5N2E3YzA2ZjE2MmRhYWEw
MjZmZDM4YTg0NmNjLi5kNzRjMTIwYmYyMWVlOWI0YWIxMWNkOWM1NjViNTYxNTYyMGJkZjA1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2Rl
T2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlOb2RlT2JqZWN0LmNwcApAQCAtMzIxLDcgKzMyMSw3IEBAIEFjY2Vzc2liaWxpdHlSb2xlIEFj
Y2Vzc2liaWxpdHlOb2RlT2JqZWN0OjpkZXRlcm1pbmVBY2Nlc3NpYmlsaXR5Um9sZSgpCiAgICAg
ICAgIHJldHVybiBEaXZSb2xlOwogICAgIGlmIChub2RlKCktPmhhc1RhZ05hbWUocFRhZykpCiAg
ICAgICAgIHJldHVybiBQYXJhZ3JhcGhSb2xlOwotICAgIGlmIChpc0hUTUxMYWJlbEVsZW1lbnQo
bm9kZSgpKSkKKyAgICBpZiAoaXM8SFRNTExhYmVsRWxlbWVudD4obm9kZSgpKSkKICAgICAgICAg
cmV0dXJuIExhYmVsUm9sZTsKICAgICBpZiAobm9kZSgpLT5pc0VsZW1lbnROb2RlKCkgJiYgdG9F
bGVtZW50KG5vZGUoKSktPmlzRm9jdXNhYmxlKCkpCiAgICAgICAgIHJldHVybiBHcm91cFJvbGU7
CkBAIC01MTIsNyArNTEyLDcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6aXNOYXRp
dmVJbWFnZSgpIGNvbnN0CiAgICAgaWYgKCFub2RlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
LSAgICBpZiAoaXNIVE1MSW1hZ2VFbGVtZW50KG5vZGUpKQorICAgIGlmIChpczxIVE1MSW1hZ2VF
bGVtZW50Pihub2RlKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBpZiAobm9kZS0+aGFz
VGFnTmFtZShhcHBsZXRUYWcpIHx8IG5vZGUtPmhhc1RhZ05hbWUoZW1iZWRUYWcpIHx8IG5vZGUt
Pmhhc1RhZ05hbWUob2JqZWN0VGFnKSkKQEAgLTk2Myw3ICs5NjMsNyBAQCBFbGVtZW50KiBBY2Nl
c3NpYmlsaXR5Tm9kZU9iamVjdDo6YW5jaG9yRWxlbWVudCgpIGNvbnN0CiAgICAgLy8gc2VhcmNo
IHVwIHRoZSBET00gdHJlZSBmb3IgYW4gYW5jaG9yIGVsZW1lbnQKICAgICAvLyBOT1RFOiB0aGlz
IGFzc3VtZXMgdGhhdCBhbnkgbm9uLWltYWdlIHdpdGggYW4gYW5jaG9yIGlzIGFuIEhUTUxBbmNo
b3JFbGVtZW50CiAgICAgZm9yICggOyBub2RlOyBub2RlID0gbm9kZS0+cGFyZW50Tm9kZSgpKSB7
Ci0gICAgICAgIGlmIChpc0hUTUxBbmNob3JFbGVtZW50KG5vZGUpIHx8IChub2RlLT5yZW5kZXJl
cigpICYmIGNhY2hlLT5nZXRPckNyZWF0ZShub2RlLT5yZW5kZXJlcigpKS0+aXNBbmNob3IoKSkp
CisgICAgICAgIGlmIChpczxIVE1MQW5jaG9yRWxlbWVudD4obm9kZSkgfHwgKG5vZGUtPnJlbmRl
cmVyKCkgJiYgY2FjaGUtPmdldE9yQ3JlYXRlKG5vZGUtPnJlbmRlcmVyKCkpLT5pc0FuY2hvcigp
KSkKICAgICAgICAgICAgIHJldHVybiB0b0VsZW1lbnQobm9kZSk7CiAgICAgfQogCkBAIC0xMzA1
LDcgKzEzMDUsNyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjphbHRlcm5hdGl2ZVRl
eHQoVmVjdG9yPEFjY2Vzc2liaWxpdHlUZXh0PiYgdGV4dE9yZAogICAgICAgICByZXR1cm47CiAg
ICAgCiAgICAgLy8gVGhlIGZpZWxkc2V0IGVsZW1lbnQgZGVyaXZlcyBpdHMgYWx0ZXJuYXRpdmUg
dGV4dCBmcm9tIHRoZSBmaXJzdCBhc3NvY2lhdGVkIGxlZ2VuZCBlbGVtZW50IGlmIG9uZSBpcyBh
dmFpbGFibGUuCi0gICAgaWYgKGlzSFRNTEZpZWxkU2V0RWxlbWVudChub2RlKSkgeworICAgIGlm
IChpczxIVE1MRmllbGRTZXRFbGVtZW50Pihub2RlKSkgewogICAgICAgICBBY2Nlc3NpYmlsaXR5
T2JqZWN0KiBvYmplY3QgPSBheE9iamVjdENhY2hlKCktPmdldE9yQ3JlYXRlKGRvd25jYXN0PEhU
TUxGaWVsZFNldEVsZW1lbnQ+KCpub2RlKS5sZWdlbmQoKSk7CiAgICAgICAgIGlmIChvYmplY3Qg
JiYgIW9iamVjdC0+aXNIaWRkZW4oKSkKICAgICAgICAgICAgIHRleHRPcmRlci5hcHBlbmQoQWNj
ZXNzaWJpbGl0eVRleHQoYWNjZXNzaWJsZU5hbWVGb3JOb2RlKG9iamVjdC0+bm9kZSgpKSwgQWx0
ZXJuYXRpdmVUZXh0KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAppbmRleCAzZTJhOGY3YWU2NWNiMDk0
ZjliMDY2ZTgzOWY1MjQxNTdhYzY2ZGYxLi40NDRmYWZhZWEwMTIxZDljNjk4YTAyMzM5YWFjMTZk
MzhhZGY1NTkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKQEAgLTU4NSw3ICs1ODUsNyBAQCBFbGVt
ZW50KiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjphbmNob3JFbGVtZW50KCkgY29uc3QKICAg
ICAvLyBOT1RFOiB0aGlzIGFzc3VtZXMgdGhhdCBhbnkgbm9uLWltYWdlIHdpdGggYW4gYW5jaG9y
IGlzIGFuIEhUTUxBbmNob3JFbGVtZW50CiAgICAgTm9kZSogbm9kZSA9IGN1cnJSZW5kZXJlci0+
bm9kZSgpOwogICAgIGZvciAoIDsgbm9kZTsgbm9kZSA9IG5vZGUtPnBhcmVudE5vZGUoKSkgewot
ICAgICAgICBpZiAoaXNIVE1MQW5jaG9yRWxlbWVudChub2RlKSB8fCAobm9kZS0+cmVuZGVyZXIo
KSAmJiBjYWNoZS0+Z2V0T3JDcmVhdGUobm9kZS0+cmVuZGVyZXIoKSktPmlzQW5jaG9yKCkpKQor
ICAgICAgICBpZiAoaXM8SFRNTEFuY2hvckVsZW1lbnQ+KG5vZGUpIHx8IChub2RlLT5yZW5kZXJl
cigpICYmIGNhY2hlLT5nZXRPckNyZWF0ZShub2RlLT5yZW5kZXJlcigpKS0+aXNBbmNob3IoKSkp
CiAgICAgICAgICAgICByZXR1cm4gdG9FbGVtZW50KG5vZGUpOwogICAgIH0KICAgICAKQEAgLTc4
Miw3ICs3ODIsNyBAQCBIVE1MTGFiZWxFbGVtZW50KiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0
OjpsYWJlbEVsZW1lbnRDb250YWluZXIoKSBjb25zdAogICAgIAogICAgIC8vIGZpbmQgaWYgdGhp
cyBoYXMgYSBwYXJlbnQgdGhhdCBpcyBhIGxhYmVsCiAgICAgZm9yIChOb2RlKiBwYXJlbnROb2Rl
ID0gbV9yZW5kZXJlci0+bm9kZSgpOyBwYXJlbnROb2RlOyBwYXJlbnROb2RlID0gcGFyZW50Tm9k
ZS0+cGFyZW50Tm9kZSgpKSB7Ci0gICAgICAgIGlmIChpc0hUTUxMYWJlbEVsZW1lbnQocGFyZW50
Tm9kZSkpCisgICAgICAgIGlmIChpczxIVE1MTGFiZWxFbGVtZW50PihwYXJlbnROb2RlKSkKICAg
ICAgICAgICAgIHJldHVybiBkb3duY2FzdDxIVE1MTGFiZWxFbGVtZW50PihwYXJlbnROb2RlKTsK
ICAgICB9CiAgICAgCkBAIC05MTQsNyArOTE0LDcgQEAgQWNjZXNzaWJpbGl0eU9iamVjdCogQWNj
ZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aW50ZXJuYWxMaW5rRWxlbWVudCgpIGNvbnN0CiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogICAgIAogICAgIC8vIFJpZ2h0IG5vdywgd2UgZG8gbm90IHN1
cHBvcnQgQVJJQSBsaW5rcyBhcyBpbnRlcm5hbCBsaW5rIGVsZW1lbnRzCi0gICAgaWYgKCFpc0hU
TUxBbmNob3JFbGVtZW50KGVsZW1lbnQpKQorICAgIGlmICghaXM8SFRNTEFuY2hvckVsZW1lbnQ+
KGVsZW1lbnQpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBIVE1MQW5jaG9yRWxlbWVu
dCYgYW5jaG9yID0gZG93bmNhc3Q8SFRNTEFuY2hvckVsZW1lbnQ+KCplbGVtZW50KTsKICAgICAK
QEAgLTEyNzUsNyArMTI3NSw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6Y29t
cHV0ZUFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSBjb25zdAogICAgIAogICAgIC8vIGRvbid0IGln
bm9yZSBsYWJlbHMsIGJlY2F1c2UgdGhleSBzZXJ2ZSBhcyBUaXRsZVVJRWxlbWVudHMKICAgICBO
b2RlKiBub2RlID0gbV9yZW5kZXJlci0+bm9kZSgpOwotICAgIGlmIChub2RlICYmIGlzSFRNTExh
YmVsRWxlbWVudChub2RlKSkKKyAgICBpZiAobm9kZSAmJiBpczxIVE1MTGFiZWxFbGVtZW50Pihu
b2RlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAogICAgIC8vIEFueXRoaW5nIHRoYXQg
aXMgY29udGVudCBlZGl0YWJsZSBzaG91bGQgbm90IGJlIGlnbm9yZWQuCkBAIC0xNTA3LDcgKzE1
MDcsNyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnNldFNlbGVjdGVkVGV4dFJh
bmdlKGNvbnN0IFBsYWluVGV4dFJhbmdlJiByYW5nZQogCiBVUkwgQWNjZXNzaWJpbGl0eVJlbmRl
ck9iamVjdDo6dXJsKCkgY29uc3QKIHsKLSAgICBpZiAoaXNBbmNob3IoKSAmJiBpc0hUTUxBbmNo
b3JFbGVtZW50KG1fcmVuZGVyZXItPm5vZGUoKSkpIHsKKyAgICBpZiAoaXNBbmNob3IoKSAmJiBp
czxIVE1MQW5jaG9yRWxlbWVudD4obV9yZW5kZXJlci0+bm9kZSgpKSkgewogICAgICAgICBpZiAo
SFRNTEFuY2hvckVsZW1lbnQqIGFuY2hvciA9IGRvd25jYXN0PEhUTUxBbmNob3JFbGVtZW50Pihh
bmNob3JFbGVtZW50KCkpKQogICAgICAgICAgICAgcmV0dXJuIGFuY2hvci0+aHJlZigpOwogICAg
IH0KQEAgLTE1MTUsNyArMTUxNSw3IEBAIFVSTCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojp1
cmwoKSBjb25zdAogICAgIGlmIChpc1dlYkFyZWEoKSkKICAgICAgICAgcmV0dXJuIG1fcmVuZGVy
ZXItPmRvY3VtZW50KCkudXJsKCk7CiAgICAgCi0gICAgaWYgKGlzSW1hZ2UoKSAmJiBtX3JlbmRl
cmVyLT5ub2RlKCkgJiYgaXNIVE1MSW1hZ2VFbGVtZW50KG1fcmVuZGVyZXItPm5vZGUoKSkpCisg
ICAgaWYgKGlzSW1hZ2UoKSAmJiBtX3JlbmRlcmVyLT5ub2RlKCkgJiYgaXM8SFRNTEltYWdlRWxl
bWVudD4obV9yZW5kZXJlci0+bm9kZSgpKSkKICAgICAgICAgcmV0dXJuIGRvd25jYXN0PEhUTUxJ
bWFnZUVsZW1lbnQ+KCptX3JlbmRlcmVyLT5ub2RlKCkpLnNyYygpOwogICAgIAogICAgIGlmIChp
c0lucHV0SW1hZ2UoKSkKQEAgLTE3NTksNyArMTc1OSw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVJl
bmRlck9iamVjdDo6Z2V0RG9jdW1lbnRMaW5rcyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3Im
IHJlCiAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChheG9iaik7CiAgICAgICAgIH0gZWxz
ZSB7CiAgICAgICAgICAgICBOb2RlKiBwYXJlbnQgPSBjdXJyLT5wYXJlbnROb2RlKCk7Ci0gICAg
ICAgICAgICBpZiAocGFyZW50ICYmIGlzSFRNTEFyZWFFbGVtZW50KGN1cnIpICYmIGlzSFRNTE1h
cEVsZW1lbnQocGFyZW50KSkgeworICAgICAgICAgICAgaWYgKHBhcmVudCAmJiBpczxIVE1MQXJl
YUVsZW1lbnQ+KGN1cnIpICYmIGlzPEhUTUxNYXBFbGVtZW50PihwYXJlbnQpKSB7CiAgICAgICAg
ICAgICAgICAgQWNjZXNzaWJpbGl0eUltYWdlTWFwTGluayogYXJlYU9iamVjdCA9IHRvQWNjZXNz
aWJpbGl0eUltYWdlTWFwTGluayhheE9iamVjdENhY2hlKCktPmdldE9yQ3JlYXRlKEltYWdlTWFw
TGlua1JvbGUpKTsKICAgICAgICAgICAgICAgICBIVE1MTWFwRWxlbWVudCYgbWFwID0gZG93bmNh
c3Q8SFRNTE1hcEVsZW1lbnQ+KCpwYXJlbnQpOwogICAgICAgICAgICAgICAgIGFyZWFPYmplY3Qt
PnNldEhUTUxBcmVhRWxlbWVudChkb3duY2FzdDxIVE1MQXJlYUVsZW1lbnQ+KGN1cnIpKTsKQEAg
LTIxNTgsNyArMjE1OCw3IEBAIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlSZW5k
ZXJPYmplY3Q6OmFjY2Vzc2liaWxpdHlJbWFnZU1hcEhpdFRlc3QoSFRNCiAKICAgICBBY2Nlc3Np
YmlsaXR5T2JqZWN0KiBwYXJlbnQgPSBudWxscHRyOwogICAgIGZvciAoRWxlbWVudCogbWFwUGFy
ZW50ID0gYXJlYS0+cGFyZW50RWxlbWVudCgpOyBtYXBQYXJlbnQ7IG1hcFBhcmVudCA9IG1hcFBh
cmVudC0+cGFyZW50RWxlbWVudCgpKSB7Ci0gICAgICAgIGlmIChpc0hUTUxNYXBFbGVtZW50KG1h
cFBhcmVudCkpIHsKKyAgICAgICAgaWYgKGlzPEhUTUxNYXBFbGVtZW50PihtYXBQYXJlbnQpKSB7
CiAgICAgICAgICAgICBwYXJlbnQgPSBhY2Nlc3NpYmlsaXR5UGFyZW50Rm9ySW1hZ2VNYXAoZG93
bmNhc3Q8SFRNTE1hcEVsZW1lbnQ+KG1hcFBhcmVudCkpOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KQEAgLTIyMDgsNyArMjIwOCw3IEBAIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vz
c2liaWxpdHlSZW5kZXJPYmplY3Q6OmFjY2Vzc2liaWxpdHlIaXRUZXN0KGNvbnN0IEludFBvCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgIE5vZGUqIG5vZGUgPSBoaXRUZXN0UmVzdWx0Lmlu
bmVyTm9kZSgpLT5kZXByZWNhdGVkU2hhZG93QW5jZXN0b3JOb2RlKCk7CiAKLSAgICBpZiAoaXNI
VE1MQXJlYUVsZW1lbnQobm9kZSkpCisgICAgaWYgKGlzPEhUTUxBcmVhRWxlbWVudD4obm9kZSkp
CiAgICAgICAgIHJldHVybiBhY2Nlc3NpYmlsaXR5SW1hZ2VNYXBIaXRUZXN0KGRvd25jYXN0PEhU
TUxBcmVhRWxlbWVudD4obm9kZSksIHBvaW50KTsKICAgICAKICAgICBpZiAoaXM8SFRNTE9wdGlv
bkVsZW1lbnQ+KG5vZGUpKQpAQCAtMjU3Miw3ICsyNTcyLDcgQEAgQWNjZXNzaWJpbGl0eVJvbGUg
QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6ZGV0ZXJtaW5lQWNjZXNzaWJpbGl0eVJvbGUoKQog
ICAgIGlmIChub2RlICYmIG5vZGUtPmhhc1RhZ05hbWUodHJUYWcpKQogICAgICAgICByZXR1cm4g
Um93Um9sZTsKIAotICAgIGlmIChub2RlICYmIGlzSFRNTFRhYmxlRWxlbWVudChub2RlKSkKKyAg
ICBpZiAobm9kZSAmJiBpczxIVE1MVGFibGVFbGVtZW50Pihub2RlKSkKICAgICAgICAgcmV0dXJu
IFRhYmxlUm9sZTsKICNlbmRpZgogCkBAIC0yNTg2LDcgKzI1ODYsNyBAQCBBY2Nlc3NpYmlsaXR5
Um9sZSBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpkZXRlcm1pbmVBY2Nlc3NpYmlsaXR5Um9s
ZSgpCiAgICAgaWYgKG5vZGUgJiYgbm9kZS0+aGFzVGFnTmFtZShwVGFnKSkKICAgICAgICAgcmV0
dXJuIFBhcmFncmFwaFJvbGU7CiAKLSAgICBpZiAobm9kZSAmJiBpc0hUTUxMYWJlbEVsZW1lbnQo
bm9kZSkpCisgICAgaWYgKG5vZGUgJiYgaXM8SFRNTExhYmVsRWxlbWVudD4obm9kZSkpCiAgICAg
ICAgIHJldHVybiBMYWJlbFJvbGU7CiAKICAgICBpZiAobm9kZSAmJiBub2RlLT5oYXNUYWdOYW1l
KGRmblRhZykpCkBAIC0yNTk1LDcgKzI1OTUsNyBAQCBBY2Nlc3NpYmlsaXR5Um9sZSBBY2Nlc3Np
YmlsaXR5UmVuZGVyT2JqZWN0OjpkZXRlcm1pbmVBY2Nlc3NpYmlsaXR5Um9sZSgpCiAgICAgaWYg
KG5vZGUgJiYgbm9kZS0+aGFzVGFnTmFtZShkaXZUYWcpKQogICAgICAgICByZXR1cm4gRGl2Um9s
ZTsKIAotICAgIGlmIChub2RlICYmIGlzSFRNTEZvcm1FbGVtZW50KG5vZGUpKQorICAgIGlmIChu
b2RlICYmIGlzPEhUTUxGb3JtRWxlbWVudD4obm9kZSkpCiAgICAgICAgIHJldHVybiBGb3JtUm9s
ZTsKIAogICAgIGlmIChub2RlICYmIG5vZGUtPmhhc1RhZ05hbWUoYXJ0aWNsZVRhZykpCkBAIC0y
NjE3LDkgKzI2MTcsOSBAQCBBY2Nlc3NpYmlsaXR5Um9sZSBBY2Nlc3NpYmlsaXR5UmVuZGVyT2Jq
ZWN0OjpkZXRlcm1pbmVBY2Nlc3NpYmlsaXR5Um9sZSgpCiAgICAgICAgIHJldHVybiBMYW5kbWFy
a0NvbnRlbnRJbmZvUm9sZTsKIAogI2lmIEVOQUJMRShWSURFTykKLSAgICBpZiAobm9kZSAmJiBp
c0hUTUxWaWRlb0VsZW1lbnQobm9kZSkpCisgICAgaWYgKG5vZGUgJiYgaXM8SFRNTFZpZGVvRWxl
bWVudD4obm9kZSkpCiAgICAgICAgIHJldHVybiBWaWRlb1JvbGU7Ci0gICAgaWYgKG5vZGUgJiYg
aXNIVE1MQXVkaW9FbGVtZW50KG5vZGUpKQorICAgIGlmIChub2RlICYmIGlzPEhUTUxBdWRpb0Vs
ZW1lbnQ+KG5vZGUpKQogICAgICAgICByZXR1cm4gQXVkaW9Sb2xlOwogI2VuZGlmCiAgICAgCkBA
IC0zMjY5LDcgKzMyNjksNyBAQCBTdHJpbmcgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6c3Ry
aW5nVmFsdWVGb3JNU0FBKCkgY29uc3QKIHsKICAgICBpZiAoaXNMaW5rYWJsZSgqdGhpcykpIHsK
ICAgICAgICAgRWxlbWVudCogYW5jaG9yID0gYW5jaG9yRWxlbWVudCgpOwotICAgICAgICBpZiAo
YW5jaG9yICYmIGlzSFRNTEFuY2hvckVsZW1lbnQoYW5jaG9yKSkKKyAgICAgICAgaWYgKGFuY2hv
ciAmJiBpczxIVE1MQW5jaG9yRWxlbWVudD4oYW5jaG9yKSkKICAgICAgICAgICAgIHJldHVybiBk
b3duY2FzdDxIVE1MQW5jaG9yRWxlbWVudD4oKmFuY2hvcikuaHJlZigpOwogICAgIH0KIApAQCAt
MzI4Miw3ICszMjgyLDcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojppc0xpbmtl
ZCgpIGNvbnN0CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIEVsZW1lbnQqIGFuY2hvciA9
IGFuY2hvckVsZW1lbnQoKTsKLSAgICBpZiAoIWFuY2hvciB8fCAhaXNIVE1MQW5jaG9yRWxlbWVu
dChhbmNob3IpKQorICAgIGlmICghYW5jaG9yIHx8ICFpczxIVE1MQW5jaG9yRWxlbWVudD4oYW5j
aG9yKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgcmV0dXJuICFkb3duY2FzdDxIVE1M
QW5jaG9yRWxlbWVudD4oKmFuY2hvcikuaHJlZigpLmlzRW1wdHkoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmNwcAppbmRleCBlMjU0
NDNjZmM3NmM3OTYwODcyOTY3OGQyNzZhZGZmNDVhMWFlY2FjLi42YjdlNmNmNGQ0NzY2ODU0Mjkw
MTA3NTg5ZmY5ZTkyODAxNGVlMGQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuY3BwCkBAIC05Niw3ICs5Niw3IEBAIEhUTUxUYWJs
ZUVsZW1lbnQqIEFjY2Vzc2liaWxpdHlUYWJsZTo6dGFibGVFbGVtZW50KCkgY29uc3QKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgCiAgICAgUmVuZGVyVGFibGUqIHRhYmxlID0gdG9SZW5k
ZXJUYWJsZShtX3JlbmRlcmVyKTsKLSAgICBpZiAodGFibGUtPmVsZW1lbnQoKSAmJiBpc0hUTUxU
YWJsZUVsZW1lbnQodGFibGUtPmVsZW1lbnQoKSkpCisgICAgaWYgKHRhYmxlLT5lbGVtZW50KCkg
JiYgaXM8SFRNTFRhYmxlRWxlbWVudD4odGFibGUtPmVsZW1lbnQoKSkpCiAgICAgICAgIHJldHVy
biBkb3duY2FzdDxIVE1MVGFibGVFbGVtZW50Pih0YWJsZS0+ZWxlbWVudCgpKTsKICAgICAKICAg
ICAvLyBJZiB0aGUgdGFibGUgaGFzIGEgZGlzcGxheTp0YWJsZS1yb3ctZ3JvdXAsIHRoZW4gdGhl
IFJlbmRlclRhYmxlIGRvZXMgbm90IGhhdmUgYSBwb2ludGVyIHRvIGl0J3MgSFRNTFRhYmxlRWxl
bWVudC4KQEAgLTEwNiw3ICsxMDYsNyBAQCBIVE1MVGFibGVFbGVtZW50KiBBY2Nlc3NpYmlsaXR5
VGFibGU6OnRhYmxlRWxlbWVudCgpIGNvbnN0CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAg
IAogICAgIEVsZW1lbnQqIGFjdHVhbFRhYmxlID0gZmlyc3RCb2R5LT5lbGVtZW50KCktPnBhcmVu
dEVsZW1lbnQoKTsKLSAgICBpZiAoIWFjdHVhbFRhYmxlIHx8ICFpc0hUTUxUYWJsZUVsZW1lbnQo
YWN0dWFsVGFibGUpKQorICAgIGlmICghYWN0dWFsVGFibGUgfHwgIWlzPEhUTUxUYWJsZUVsZW1l
bnQ+KGFjdHVhbFRhYmxlKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgCiAgICAgcmV0
dXJuIGRvd25jYXN0PEhUTUxUYWJsZUVsZW1lbnQ+KGFjdHVhbFRhYmxlKTsKQEAgLTMyOCw3ICsz
MjgsNyBAQCBib29sIEFjY2Vzc2liaWxpdHlUYWJsZTo6aXNUYWJsZUV4cG9zYWJsZVRocm91Z2hB
Y2Nlc3NpYmlsaXR5KCkgY29uc3QKICAgICAvLyBHdGsrIEFUcyBleHBlY3QgYWxsIHRhYmxlcyB0
byBiZSBleHBvc2VkIGFzIHRhYmxlcy4KICNpZiBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKEVG
TCkKICAgICBFbGVtZW50KiB0YWJsZU5vZGUgPSB0b1JlbmRlclRhYmxlKG1fcmVuZGVyZXIpLT5l
bGVtZW50KCk7Ci0gICAgcmV0dXJuIHRhYmxlTm9kZSAmJiBpc0hUTUxUYWJsZUVsZW1lbnQodGFi
bGVOb2RlKTsKKyAgICByZXR1cm4gdGFibGVOb2RlICYmIGlzPEhUTUxUYWJsZUVsZW1lbnQ+KHRh
YmxlTm9kZSk7CiAjZW5kaWYKIAogICAgIHJldHVybiBpc0RhdGFUYWJsZSgpOwpAQCAtNjA3LDcg
KzYwNyw3IEBAIFN0cmluZyBBY2Nlc3NpYmlsaXR5VGFibGU6OnRpdGxlKCkgY29uc3QKICAgICAK
ICAgICAvLyBzZWUgaWYgdGhlcmUgaXMgYSBjYXB0aW9uCiAgICAgTm9kZSogdGFibGVFbGVtZW50
ID0gbV9yZW5kZXJlci0+bm9kZSgpOwotICAgIGlmICh0YWJsZUVsZW1lbnQgJiYgaXNIVE1MVGFi
bGVFbGVtZW50KHRhYmxlRWxlbWVudCkpIHsKKyAgICBpZiAodGFibGVFbGVtZW50ICYmIGlzPEhU
TUxUYWJsZUVsZW1lbnQ+KHRhYmxlRWxlbWVudCkpIHsKICAgICAgICAgaWYgKEhUTUxUYWJsZUNh
cHRpb25FbGVtZW50KiBjYXB0aW9uID0gZG93bmNhc3Q8SFRNTFRhYmxlRWxlbWVudD4oKnRhYmxl
RWxlbWVudCkuY2FwdGlvbigpKQogICAgICAgICAgICAgdGl0bGUgPSBjYXB0aW9uLT5pbm5lclRl
eHQoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0
ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlVGFibGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZVRhYmxlLmNwcAppbmRleCA2
NTliODhmOGM3OWFiYTFjNDAxMDFiNjk5MjkxNmQ0ZWI0NjM3MTVkLi4zNDkyYjdlMGVmMmM3N2Y5
ZDQzZTljNzZiZmE2ZTg2ZWNlZmM2MGM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlVGFibGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VU
YWJsZS5jcHAKQEAgLTI0NCw3ICsyNDQsNyBAQCBzdGF0aWMgQXRrT2JqZWN0KiB3ZWJraXRBY2Nl
c3NpYmxlVGFibGVHZXRDYXB0aW9uKEF0a1RhYmxlKiB0YWJsZSkKICAgICBBY2Nlc3NpYmlsaXR5
T2JqZWN0KiBhY2NUYWJsZSA9IGNvcmUodGFibGUpOwogICAgIGlmIChhY2NUYWJsZS0+aXNBY2Nl
c3NpYmlsaXR5UmVuZGVyT2JqZWN0KCkpIHsKICAgICAgICAgTm9kZSogbm9kZSA9IGFjY1RhYmxl
LT5ub2RlKCk7Ci0gICAgICAgIGlmIChub2RlICYmIGlzSFRNTFRhYmxlRWxlbWVudChub2RlKSkg
eworICAgICAgICBpZiAobm9kZSAmJiBpczxIVE1MVGFibGVFbGVtZW50Pihub2RlKSkgewogICAg
ICAgICAgICAgSFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQqIGNhcHRpb24gPSBkb3duY2FzdDxIVE1M
VGFibGVFbGVtZW50Pigqbm9kZSkuY2FwdGlvbigpOwogICAgICAgICAgICAgaWYgKGNhcHRpb24p
CiAgICAgICAgICAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmZpcnN0QWNjZXNz
aWJsZU9iamVjdEZyb21Ob2RlKGNhcHRpb24tPnJlbmRlcmVyKCktPmVsZW1lbnQoKSktPndyYXBw
ZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTERvY3Vt
ZW50Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTERvY3VtZW50
Q3VzdG9tLmNwcAppbmRleCA3OTUzYzZjZDViZTM1Y2I1YTg1NGJhMDAyZGYwZWM5ZTkxYzYxZGVh
Li41MjIxZTFkZWQ1NGJhYjlmMWY4YTgzYWQ1NjAxMWQ2YzhkZWY0OTlkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxEb2N1bWVudEN1c3RvbS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MRG9jdW1lbnRDdXN0b20uY3BwCkBAIC03
Myw3ICs3Myw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTSFRNTERvY3VtZW50OjpuYW1lR2V0dGVyKEV4
ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLCBFCiAgICAgfQogCiAgICAgRWxlbWVu
dCogZWxlbWVudCA9IGRvY3VtZW50LmRvY3VtZW50TmFtZWRJdGVtKCphdG9taWNQcm9wZXJ0eU5h
bWUpOwotICAgIGlmIChVTkxJS0VMWShpc0hUTUxJRnJhbWVFbGVtZW50KGVsZW1lbnQpKSkgewor
ICAgIGlmIChVTkxJS0VMWShpczxIVE1MSUZyYW1lRWxlbWVudD4oZWxlbWVudCkpKSB7CiAgICAg
ICAgIGlmIChGcmFtZSogZnJhbWUgPSBkb3duY2FzdDxIVE1MSUZyYW1lRWxlbWVudD4oKmVsZW1l
bnQpLmNvbnRlbnRGcmFtZSgpKQogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0
b0pTKGV4ZWMsIGZyYW1lKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNOb2RlQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
Tm9kZUN1c3RvbS5jcHAKaW5kZXggMmUxZDEyNjZlM2MyM2I4MTRkYTk5ZmVmOTgxNTg2ZWQ3OTUz
ZmYwMC4uN2NhYjE4NGMzZTA1OGI4ZWUyN2IyNzEwODdmZGE5YjRkNGM0ZDJkMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlQ3VzdG9tLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVDdXN0b20uY3BwCkBAIC0xMDUsMTIgKzEwNSwx
MiBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNSZWFjaGFibGVGcm9tRE9NKEpTTm9kZSoganNOb2Rl
LCBOb2RlKiBub2RlLCBTbG90VmlzaXRvciYgdgogICAgICAgICAgICAgLy8gYmVjYXVzZSBpdCBp
cyB0aGUgb25seSB0aGluZyBrZWVwaW5nIHRoZSBpbWFnZSBlbGVtZW50IGFsaXZlLCBhbmQgaWYK
ICAgICAgICAgICAgIC8vIHRoZSBlbGVtZW50IGlzIGRlc3Ryb3llZCwgaXRzIGxvYWQgZXZlbnQg
d2lsbCBub3QgZmlyZS4KICAgICAgICAgICAgIC8vIEZJWE1FOiBUaGUgRE9NIHNob3VsZCBtYW5h
Z2UgdGhpcyBpc3N1ZSB3aXRob3V0IHRoZSBoZWxwIG9mIEphdmFTY3JpcHQgd3JhcHBlcnMuCi0g
ICAgICAgICAgICBpZiAoaXNIVE1MSW1hZ2VFbGVtZW50KGVsZW1lbnQpKSB7CisgICAgICAgICAg
ICBpZiAoaXM8SFRNTEltYWdlRWxlbWVudD4oZWxlbWVudCkpIHsKICAgICAgICAgICAgICAgICBp
ZiAoZG93bmNhc3Q8SFRNTEltYWdlRWxlbWVudD4oZWxlbWVudCkuaGFzUGVuZGluZ0FjdGl2aXR5
KCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgfQogI2lm
IEVOQUJMRShWSURFTykKLSAgICAgICAgICAgIGVsc2UgaWYgKGlzSFRNTEF1ZGlvRWxlbWVudChl
bGVtZW50KSkgeworICAgICAgICAgICAgZWxzZSBpZiAoaXM8SFRNTEF1ZGlvRWxlbWVudD4oZWxl
bWVudCkpIHsKICAgICAgICAgICAgICAgICBpZiAoIWRvd25jYXN0PEhUTUxBdWRpb0VsZW1lbnQ+
KGVsZW1lbnQpLnBhdXNlZCgpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NEZWZhdWx0U3R5
bGVTaGVldHMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0RlZmF1bHRTdHlsZVNoZWV0cy5j
cHAKaW5kZXggNzM5YWE2MTBjOTA1ZDI0YWM3MDZhNDJkOTgyZjI3YmFjZjBkMjI5OC4uYTI0N2Nl
OTM5YjgwMzcwNmZiNTE0YzkxMTJiNTgwODU1MDQxYjBkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0RlZmF1bHRTdHlsZVNoZWV0cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0RlZmF1bHRTdHlsZVNoZWV0cy5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRl
ICJDaHJvbWVDbGllbnQuaCIKICNpbmNsdWRlICJIVE1MQW5jaG9yRWxlbWVudC5oIgogI2luY2x1
ZGUgIkhUTUxBdWRpb0VsZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1MQlJFbGVtZW50LmgiCiAjaW5j
bHVkZSAiTWVkaWFRdWVyeUV2YWx1YXRvci5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRl
ICJSZW5kZXJUaGVtZS5oIgpAQCAtNjIsOSArNjMsMTIgQEAgU3R5bGVTaGVldENvbnRlbnRzKiBD
U1NEZWZhdWx0U3R5bGVTaGVldHM6OmltYWdlQ29udHJvbHNTdHlsZVNoZWV0OwogLy8gRklYTUU6
IEl0IHdvdWxkIGJlIG5pY2UgdG8gdXNlIHNvbWUgbWVjaGFuaXNtIHRoYXQgZ3VhcmFudGVlcyB0
aGlzIGlzIGluIHN5bmMgd2l0aCB0aGUgcmVhbCBVQSBzdHlsZXNoZWV0Lgogc3RhdGljIGNvbnN0
IGNoYXIqIHNpbXBsZVVzZXJBZ2VudFN0eWxlU2hlZXQgPSAiaHRtbCxib2R5LGRpdntkaXNwbGF5
OmJsb2NrfWhlYWR7ZGlzcGxheTpub25lfWJvZHl7bWFyZ2luOjhweH1kaXY6Zm9jdXMsc3Bhbjpm
b2N1cyxhOmZvY3Vze291dGxpbmU6YXV0byA1cHggLXdlYmtpdC1mb2N1cy1yaW5nLWNvbG9yfWE6
LXdlYmtpdC1hbnktbGlua3tjb2xvcjotd2Via2l0LWxpbms7dGV4dC1kZWNvcmF0aW9uOnVuZGVy
bGluZX1hOi13ZWJraXQtYW55LWxpbms6YWN0aXZle2NvbG9yOi13ZWJraXQtYWN0aXZlbGlua30i
OwogCi1zdGF0aWMgaW5saW5lIGJvb2wgZWxlbWVudENhblVzZVNpbXBsZURlZmF1bHRTdHlsZShF
bGVtZW50KiBlKQorc3RhdGljIGlubGluZSBib29sIGVsZW1lbnRDYW5Vc2VTaW1wbGVEZWZhdWx0
U3R5bGUoRWxlbWVudCYgZWxlbWVudCkKIHsKLSAgICByZXR1cm4gZS0+aGFzVGFnTmFtZShodG1s
VGFnKSB8fCBlLT5oYXNUYWdOYW1lKGhlYWRUYWcpIHx8IGUtPmhhc1RhZ05hbWUoYm9keVRhZykg
fHwgZS0+aGFzVGFnTmFtZShkaXZUYWcpIHx8IGUtPmhhc1RhZ05hbWUoc3BhblRhZykgfHwgZS0+
aGFzVGFnTmFtZShiclRhZykgfHwgaXNIVE1MQW5jaG9yRWxlbWVudChlKTsKKyAgICByZXR1cm4g
aXM8SFRNTEh0bWxFbGVtZW50PihlbGVtZW50KSB8fCBpczxIVE1MSGVhZEVsZW1lbnQ+KGVsZW1l
bnQpCisgICAgICAgIHx8IGlzPEhUTUxCb2R5RWxlbWVudD4oZWxlbWVudCkgfHwgaXM8SFRNTERp
dkVsZW1lbnQ+KGVsZW1lbnQpCisgICAgICAgIHx8IGlzPEhUTUxTcGFuRWxlbWVudD4oZWxlbWVu
dCkgfHwgaXM8SFRNTEJSRWxlbWVudD4oZWxlbWVudCkKKyAgICAgICAgfHwgaXM8SFRNTEFuY2hv
ckVsZW1lbnQ+KGVsZW1lbnQpOwogfQogCiBzdGF0aWMgY29uc3QgTWVkaWFRdWVyeUV2YWx1YXRv
ciYgc2NyZWVuRXZhbCgpCkBAIC05NCw3ICs5OCw3IEBAIHN0YXRpYyBTdHlsZVNoZWV0Q29udGVu
dHMqIHBhcnNlVUFTaGVldChjb25zdCBjaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBzaXplKQog
dm9pZCBDU1NEZWZhdWx0U3R5bGVTaGVldHM6OmluaXREZWZhdWx0U3R5bGUoRWxlbWVudCogcm9v
dCkKIHsKICAgICBpZiAoIWRlZmF1bHRTdHlsZSkgewotICAgICAgICBpZiAoIXJvb3QgfHwgZWxl
bWVudENhblVzZVNpbXBsZURlZmF1bHRTdHlsZShyb290KSkKKyAgICAgICAgaWYgKCFyb290IHx8
IGVsZW1lbnRDYW5Vc2VTaW1wbGVEZWZhdWx0U3R5bGUoKnJvb3QpKQogICAgICAgICAgICAgbG9h
ZFNpbXBsZURlZmF1bHRTdHlsZSgpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBsb2FkRnVs
bERlZmF1bHRTdHlsZSgpOwpAQCAtMTQ2LDE0ICsxNTAsMTQgQEAgdm9pZCBDU1NEZWZhdWx0U3R5
bGVTaGVldHM6OmxvYWRTaW1wbGVEZWZhdWx0U3R5bGUoKQogICAgIC8vIE5vIG5lZWQgdG8gaW5p
dGlhbGl6ZSBxdWlya3Mgc2hlZXQgeWV0IGFzIHRoZXJlIGFyZSBubyBxdWlyayBydWxlcyBmb3Ig
ZWxlbWVudHMgYWxsb3dlZCBpbiBzaW1wbGUgZGVmYXVsdCBzdHlsZS4KIH0KIAotdm9pZCBDU1NE
ZWZhdWx0U3R5bGVTaGVldHM6OmVuc3VyZURlZmF1bHRTdHlsZVNoZWV0c0ZvckVsZW1lbnQoRWxl
bWVudCogZWxlbWVudCwgYm9vbCYgY2hhbmdlZERlZmF1bHRTdHlsZSkKK3ZvaWQgQ1NTRGVmYXVs
dFN0eWxlU2hlZXRzOjplbnN1cmVEZWZhdWx0U3R5bGVTaGVldHNGb3JFbGVtZW50KEVsZW1lbnQm
IGVsZW1lbnQsIGJvb2wmIGNoYW5nZWREZWZhdWx0U3R5bGUpCiB7CiAgICAgaWYgKHNpbXBsZURl
ZmF1bHRTdHlsZVNoZWV0ICYmICFlbGVtZW50Q2FuVXNlU2ltcGxlRGVmYXVsdFN0eWxlKGVsZW1l
bnQpKSB7CiAgICAgICAgIGxvYWRGdWxsRGVmYXVsdFN0eWxlKCk7CiAgICAgICAgIGNoYW5nZWRE
ZWZhdWx0U3R5bGUgPSB0cnVlOwogICAgIH0KIAotICAgIGlmIChlbGVtZW50LT5pc1NWR0VsZW1l
bnQoKSAmJiAhc3ZnU3R5bGVTaGVldCkgeworICAgIGlmIChlbGVtZW50LmlzU1ZHRWxlbWVudCgp
ICYmICFzdmdTdHlsZVNoZWV0KSB7CiAgICAgICAgIC8vIFNWRyBydWxlcy4KICAgICAgICAgc3Zn
U3R5bGVTaGVldCA9IHBhcnNlVUFTaGVldChzdmdVc2VyQWdlbnRTdHlsZVNoZWV0LCBzaXplb2Yo
c3ZnVXNlckFnZW50U3R5bGVTaGVldCkpOwogICAgICAgICBkZWZhdWx0U3R5bGUtPmFkZFJ1bGVz
RnJvbVNoZWV0KHN2Z1N0eWxlU2hlZXQsIHNjcmVlbkV2YWwoKSk7CkBAIC0xNjIsNyArMTY2LDcg
QEAgdm9pZCBDU1NEZWZhdWx0U3R5bGVTaGVldHM6OmVuc3VyZURlZmF1bHRTdHlsZVNoZWV0c0Zv
ckVsZW1lbnQoRWxlbWVudCogZWxlbWVudCwKICAgICB9CiAKICNpZiBFTkFCTEUoTUFUSE1MKQot
ICAgIGlmIChlbGVtZW50LT5pc01hdGhNTEVsZW1lbnQoKSAmJiAhbWF0aE1MU3R5bGVTaGVldCkg
eworICAgIGlmIChlbGVtZW50LmlzTWF0aE1MRWxlbWVudCgpICYmICFtYXRoTUxTdHlsZVNoZWV0
KSB7CiAgICAgICAgIC8vIE1hdGhNTCBydWxlcy4KICAgICAgICAgbWF0aE1MU3R5bGVTaGVldCA9
IHBhcnNlVUFTaGVldChtYXRobWxVc2VyQWdlbnRTdHlsZVNoZWV0LCBzaXplb2YobWF0aG1sVXNl
ckFnZW50U3R5bGVTaGVldCkpOwogICAgICAgICBkZWZhdWx0U3R5bGUtPmFkZFJ1bGVzRnJvbVNo
ZWV0KG1hdGhNTFN0eWxlU2hlZXQsIHNjcmVlbkV2YWwoKSk7CkBAIC0xNzIsMTAgKzE3NiwxMCBA
QCB2b2lkIENTU0RlZmF1bHRTdHlsZVNoZWV0czo6ZW5zdXJlRGVmYXVsdFN0eWxlU2hlZXRzRm9y
RWxlbWVudChFbGVtZW50KiBlbGVtZW50LAogI2VuZGlmCiAKICNpZiBFTkFCTEUoVklERU8pCi0g
ICAgaWYgKCFtZWRpYUNvbnRyb2xzU3R5bGVTaGVldCAmJiAoZWxlbWVudC0+aGFzVGFnTmFtZSh2
aWRlb1RhZykgfHwgaXNIVE1MQXVkaW9FbGVtZW50KGVsZW1lbnQpKSkgewotICAgICAgICBTdHJp
bmcgbWVkaWFSdWxlcyA9IFJlbmRlclRoZW1lOjp0aGVtZUZvclBhZ2UoZWxlbWVudC0+ZG9jdW1l
bnQoKS5wYWdlKCkpLT5tZWRpYUNvbnRyb2xzU3R5bGVTaGVldCgpOworICAgIGlmICghbWVkaWFD
b250cm9sc1N0eWxlU2hlZXQgJiYgKGlzPEhUTUxWaWRlb0VsZW1lbnQ+KGVsZW1lbnQpIHx8IGlz
PEhUTUxBdWRpb0VsZW1lbnQ+KGVsZW1lbnQpKSkgeworICAgICAgICBTdHJpbmcgbWVkaWFSdWxl
cyA9IFJlbmRlclRoZW1lOjp0aGVtZUZvclBhZ2UoZWxlbWVudC5kb2N1bWVudCgpLnBhZ2UoKSkt
Pm1lZGlhQ29udHJvbHNTdHlsZVNoZWV0KCk7CiAgICAgICAgIGlmIChtZWRpYVJ1bGVzLmlzRW1w
dHkoKSkKLSAgICAgICAgICAgIG1lZGlhUnVsZXMgPSBTdHJpbmcobWVkaWFDb250cm9sc1VzZXJB
Z2VudFN0eWxlU2hlZXQsIHNpemVvZihtZWRpYUNvbnRyb2xzVXNlckFnZW50U3R5bGVTaGVldCkp
ICsgUmVuZGVyVGhlbWU6OnRoZW1lRm9yUGFnZShlbGVtZW50LT5kb2N1bWVudCgpLnBhZ2UoKSkt
PmV4dHJhTWVkaWFDb250cm9sc1N0eWxlU2hlZXQoKTsKKyAgICAgICAgICAgIG1lZGlhUnVsZXMg
PSBTdHJpbmcobWVkaWFDb250cm9sc1VzZXJBZ2VudFN0eWxlU2hlZXQsIHNpemVvZihtZWRpYUNv
bnRyb2xzVXNlckFnZW50U3R5bGVTaGVldCkpICsgUmVuZGVyVGhlbWU6OnRoZW1lRm9yUGFnZShl
bGVtZW50LmRvY3VtZW50KCkucGFnZSgpKS0+ZXh0cmFNZWRpYUNvbnRyb2xzU3R5bGVTaGVldCgp
OwogICAgICAgICBtZWRpYUNvbnRyb2xzU3R5bGVTaGVldCA9IHBhcnNlVUFTaGVldChtZWRpYVJ1
bGVzKTsKICAgICAgICAgZGVmYXVsdFN0eWxlLT5hZGRSdWxlc0Zyb21TaGVldChtZWRpYUNvbnRy
b2xzU3R5bGVTaGVldCwgc2NyZWVuRXZhbCgpKTsKICAgICAgICAgZGVmYXVsdFByaW50U3R5bGUt
PmFkZFJ1bGVzRnJvbVNoZWV0KG1lZGlhQ29udHJvbHNTdHlsZVNoZWV0LCBwcmludEV2YWwoKSk7
CkBAIC0xODQsNyArMTg4LDcgQEAgdm9pZCBDU1NEZWZhdWx0U3R5bGVTaGVldHM6OmVuc3VyZURl
ZmF1bHRTdHlsZVNoZWV0c0ZvckVsZW1lbnQoRWxlbWVudCogZWxlbWVudCwKICNlbmRpZgogCiAj
aWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQotICAgIGlmICghZnVsbHNjcmVlblN0eWxlU2hlZXQg
JiYgZWxlbWVudC0+ZG9jdW1lbnQoKS53ZWJraXRJc0Z1bGxTY3JlZW4oKSkgeworICAgIGlmICgh
ZnVsbHNjcmVlblN0eWxlU2hlZXQgJiYgZWxlbWVudC5kb2N1bWVudCgpLndlYmtpdElzRnVsbFNj
cmVlbigpKSB7CiAgICAgICAgIFN0cmluZyBmdWxsc2NyZWVuUnVsZXMgPSBTdHJpbmcoZnVsbHNj
cmVlblVzZXJBZ2VudFN0eWxlU2hlZXQsIHNpemVvZihmdWxsc2NyZWVuVXNlckFnZW50U3R5bGVT
aGVldCkpICsgUmVuZGVyVGhlbWU6OmRlZmF1bHRUaGVtZSgpLT5leHRyYUZ1bGxTY3JlZW5TdHls
ZVNoZWV0KCk7CiAgICAgICAgIGZ1bGxzY3JlZW5TdHlsZVNoZWV0ID0gcGFyc2VVQVNoZWV0KGZ1
bGxzY3JlZW5SdWxlcyk7CiAgICAgICAgIGRlZmF1bHRTdHlsZS0+YWRkUnVsZXNGcm9tU2hlZXQo
ZnVsbHNjcmVlblN0eWxlU2hlZXQsIHNjcmVlbkV2YWwoKSk7CkBAIC0xOTQsOCArMTk4LDggQEAg
dm9pZCBDU1NEZWZhdWx0U3R5bGVTaGVldHM6OmVuc3VyZURlZmF1bHRTdHlsZVNoZWV0c0ZvckVs
ZW1lbnQoRWxlbWVudCogZWxlbWVudCwKICNlbmRpZgogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfQ09O
VFJPTFMpCi0gICAgaWYgKCFpbWFnZUNvbnRyb2xzU3R5bGVTaGVldCAmJiBlbGVtZW50LT5pc0lt
YWdlQ29udHJvbHNSb290RWxlbWVudCgpKSB7Ci0gICAgICAgIFN0cmluZyBpbWFnZUNvbnRyb2xz
UnVsZXMgPSBSZW5kZXJUaGVtZTo6dGhlbWVGb3JQYWdlKGVsZW1lbnQtPmRvY3VtZW50KCkucGFn
ZSgpKS0+aW1hZ2VDb250cm9sc1N0eWxlU2hlZXQoKTsKKyAgICBpZiAoIWltYWdlQ29udHJvbHNT
dHlsZVNoZWV0ICYmIGVsZW1lbnQuaXNJbWFnZUNvbnRyb2xzUm9vdEVsZW1lbnQoKSkgeworICAg
ICAgICBTdHJpbmcgaW1hZ2VDb250cm9sc1J1bGVzID0gUmVuZGVyVGhlbWU6OnRoZW1lRm9yUGFn
ZShlbGVtZW50LmRvY3VtZW50KCkucGFnZSgpKS0+aW1hZ2VDb250cm9sc1N0eWxlU2hlZXQoKTsK
ICAgICAgICAgaW1hZ2VDb250cm9sc1N0eWxlU2hlZXQgPSBwYXJzZVVBU2hlZXQoaW1hZ2VDb250
cm9sc1J1bGVzKTsKICAgICAgICAgZGVmYXVsdFN0eWxlLT5hZGRSdWxlc0Zyb21TaGVldChpbWFn
ZUNvbnRyb2xzU3R5bGVTaGVldCwgc2NyZWVuRXZhbCgpKTsKICAgICAgICAgZGVmYXVsdFByaW50
U3R5bGUtPmFkZFJ1bGVzRnJvbVNoZWV0KGltYWdlQ29udHJvbHNTdHlsZVNoZWV0LCBwcmludEV2
YWwoKSk7CkBAIC0yMDMsOCArMjA3LDggQEAgdm9pZCBDU1NEZWZhdWx0U3R5bGVTaGVldHM6OmVu
c3VyZURlZmF1bHRTdHlsZVNoZWV0c0ZvckVsZW1lbnQoRWxlbWVudCogZWxlbWVudCwKICAgICB9
CiAjZW5kaWYKIAotICAgIGlmICghcGx1Z0luc1N0eWxlU2hlZXQgJiYgKGVsZW1lbnQtPmhhc1Rh
Z05hbWUob2JqZWN0VGFnKSB8fCBlbGVtZW50LT5oYXNUYWdOYW1lKGVtYmVkVGFnKSkpIHsKLSAg
ICAgICAgU3RyaW5nIHBsdWdJbnNSdWxlcyA9IFJlbmRlclRoZW1lOjp0aGVtZUZvclBhZ2UoZWxl
bWVudC0+ZG9jdW1lbnQoKS5wYWdlKCkpLT5leHRyYVBsdWdJbnNTdHlsZVNoZWV0KCkgKyBlbGVt
ZW50LT5kb2N1bWVudCgpLnBhZ2UoKS0+Y2hyb21lKCkuY2xpZW50KCkucGx1Z0luRXh0cmFTdHls
ZVNoZWV0KCk7CisgICAgaWYgKCFwbHVnSW5zU3R5bGVTaGVldCAmJiAoaXM8SFRNTE9iamVjdEVs
ZW1lbnQ+KGVsZW1lbnQpIHx8IGlzPEhUTUxFbWJlZEVsZW1lbnQ+KGVsZW1lbnQpKSkgeworICAg
ICAgICBTdHJpbmcgcGx1Z0luc1J1bGVzID0gUmVuZGVyVGhlbWU6OnRoZW1lRm9yUGFnZShlbGVt
ZW50LmRvY3VtZW50KCkucGFnZSgpKS0+ZXh0cmFQbHVnSW5zU3R5bGVTaGVldCgpICsgZWxlbWVu
dC5kb2N1bWVudCgpLnBhZ2UoKS0+Y2hyb21lKCkuY2xpZW50KCkucGx1Z0luRXh0cmFTdHlsZVNo
ZWV0KCk7CiAgICAgICAgIGlmIChwbHVnSW5zUnVsZXMuaXNFbXB0eSgpKQogICAgICAgICAgICAg
cGx1Z0luc1J1bGVzID0gU3RyaW5nKHBsdWdJbnNVc2VyQWdlbnRTdHlsZVNoZWV0LCBzaXplb2Yo
cGx1Z0luc1VzZXJBZ2VudFN0eWxlU2hlZXQpKTsKICAgICAgICAgcGx1Z0luc1N0eWxlU2hlZXQg
PSBwYXJzZVVBU2hlZXQocGx1Z0luc1J1bGVzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NEZWZhdWx0U3R5bGVTaGVldHMuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NEZWZh
dWx0U3R5bGVTaGVldHMuaAppbmRleCBmZWNkNDZkM2RkNTBkZDQzNzY3NmZlOGQzNTgwNzlkZDY3
YmVlOTY2Li43OTNjYzlhYTEzOTlhNTMwYjFlMmNiM2I1ZWEzNTFjYjQ1MDk3NWQ3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRGVmYXVsdFN0eWxlU2hlZXRzLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0RlZmF1bHRTdHlsZVNoZWV0cy5oCkBAIC00NSw3ICs0NSw3IEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgU3R5bGVTaGVldENvbnRlbnRzKiBwbHVnSW5zU3R5bGVTaGVl
dDsKICAgICBzdGF0aWMgU3R5bGVTaGVldENvbnRlbnRzKiBpbWFnZUNvbnRyb2xzU3R5bGVTaGVl
dDsKIAotICAgIHN0YXRpYyB2b2lkIGVuc3VyZURlZmF1bHRTdHlsZVNoZWV0c0ZvckVsZW1lbnQo
RWxlbWVudCosIGJvb2wmIGNoYW5nZWREZWZhdWx0U3R5bGUpOworICAgIHN0YXRpYyB2b2lkIGVu
c3VyZURlZmF1bHRTdHlsZVNoZWV0c0ZvckVsZW1lbnQoRWxlbWVudCYsIGJvb2wmIGNoYW5nZWRE
ZWZhdWx0U3R5bGUpOwogICAgIHN0YXRpYyB2b2lkIGxvYWRGdWxsRGVmYXVsdFN0eWxlKCk7CiAg
ICAgc3RhdGljIHZvaWQgbG9hZFNpbXBsZURlZmF1bHRTdHlsZSgpOwogICAgIHN0YXRpYyB2b2lk
IGluaXREZWZhdWx0U3R5bGUoRWxlbWVudCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1N0eWxlU2hlZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQu
Y3BwCmluZGV4IGI4MzgzNTUyYzg5YjNhYzExODkxYWM2YjEzOTUwNTk5OTUxNDg1ODIuLmFhZDZl
NTg5ZmYxNTFjYjYyNjY2ZDY5ZTRiZWYzN2M0ZDY0MzRjNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
U3R5bGVTaGVldC5jcHAKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJNZWRpYUxpc3QuaCIK
ICNpbmNsdWRlICJOb2RlLmgiCiAjaW5jbHVkZSAiU1ZHTmFtZXMuaCIKKyNpbmNsdWRlICJTVkdT
dHlsZUVsZW1lbnQuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIlN0
eWxlUmVzb2x2ZXIuaCIKICNpbmNsdWRlICJTdHlsZVJ1bGUuaCIKQEAgLTY3LDkgKzY4LDkgQEAg
c3RhdGljIGJvb2wgaXNBY2NlcHRhYmxlQ1NTU3R5bGVTaGVldFBhcmVudChOb2RlKiBwYXJlbnRO
b2RlKQogICAgIC8vIE9ubHkgdGhlc2Ugbm9kZXMgY2FuIGJlIHBhcmVudHMgb2YgU3R5bGVTaGVl
dHMsIGFuZCB0aGV5IG5lZWQgdG8gY2FsbCBjbGVhck93bmVyTm9kZSgpIHdoZW4gbW92ZWQgb3V0
IG9mIGRvY3VtZW50LgogICAgIHJldHVybiAhcGFyZW50Tm9kZQogICAgICAgICB8fCBwYXJlbnRO
b2RlLT5pc0RvY3VtZW50Tm9kZSgpCi0gICAgICAgIHx8IHBhcmVudE5vZGUtPmhhc1RhZ05hbWUo
SFRNTE5hbWVzOjpsaW5rVGFnKQotICAgICAgICB8fCBpc0hUTUxTdHlsZUVsZW1lbnQocGFyZW50
Tm9kZSkKLSAgICAgICAgfHwgcGFyZW50Tm9kZS0+aGFzVGFnTmFtZShTVkdOYW1lczo6c3R5bGVU
YWcpCisgICAgICAgIHx8IGlzPEhUTUxMaW5rRWxlbWVudD4ocGFyZW50Tm9kZSkKKyAgICAgICAg
fHwgaXM8SFRNTFN0eWxlRWxlbWVudD4ocGFyZW50Tm9kZSkKKyAgICAgICAgfHwgaXM8U1ZHU3R5
bGVFbGVtZW50PihwYXJlbnROb2RlKQogICAgICAgICB8fCBwYXJlbnROb2RlLT5ub2RlVHlwZSgp
ID09IE5vZGU6OlBST0NFU1NJTkdfSU5TVFJVQ1RJT05fTk9ERTsKIH0KICNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCmluZGV4IDkwNzY2YmI3YzFlZDVlNDRkYTU1NDcxMTZk
MjU5ZjQxYzM4Nzg3YzcuLjg4NGY2OTRmMTMyMWNlMjM3YmFiZGJiOWFlMDlkNjUxYjg3NjA4YTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKQEAgLTc4Myw3ICs3ODMsNyBAQCBQ
YXNzUmVmPFJlbmRlclN0eWxlPiBTdHlsZVJlc29sdmVyOjpzdHlsZUZvckVsZW1lbnQoRWxlbWVu
dCogZWxlbWVudCwgUmVuZGVyU3R5bAogICAgIH0KIAogICAgIGJvb2wgbmVlZHNDb2xsZWN0aW9u
ID0gZmFsc2U7Ci0gICAgQ1NTRGVmYXVsdFN0eWxlU2hlZXRzOjplbnN1cmVEZWZhdWx0U3R5bGVT
aGVldHNGb3JFbGVtZW50KGVsZW1lbnQsIG5lZWRzQ29sbGVjdGlvbik7CisgICAgQ1NTRGVmYXVs
dFN0eWxlU2hlZXRzOjplbnN1cmVEZWZhdWx0U3R5bGVTaGVldHNGb3JFbGVtZW50KCplbGVtZW50
LCBuZWVkc0NvbGxlY3Rpb24pOwogICAgIGlmIChuZWVkc0NvbGxlY3Rpb24pCiAgICAgICAgIG1f
cnVsZVNldHMuY29sbGVjdEZlYXR1cmVzKCk7CiAKQEAgLTExNzAsNyArMTE3MCw3IEBAIHZvaWQg
U3R5bGVSZXNvbHZlcjo6YWRqdXN0UmVuZGVyU3R5bGUoUmVuZGVyU3R5bGUmIHN0eWxlLCBjb25z
dCBSZW5kZXJTdHlsZSYgcGFyCiAgICAgICAgICAgICBpZiAoZS0+aGFzVGFnTmFtZSh0ZFRhZykp
IHsKICAgICAgICAgICAgICAgICBzdHlsZS5zZXREaXNwbGF5KFRBQkxFX0NFTEwpOwogICAgICAg
ICAgICAgICAgIHN0eWxlLnNldEZsb2F0aW5nKE5vRmxvYXQpOwotICAgICAgICAgICAgfSBlbHNl
IGlmIChpc0hUTUxUYWJsZUVsZW1lbnQoZSkpCisgICAgICAgICAgICB9IGVsc2UgaWYgKGlzPEhU
TUxUYWJsZUVsZW1lbnQ+KGUpKQogICAgICAgICAgICAgICAgIHN0eWxlLnNldERpc3BsYXkoc3R5
bGUuaXNEaXNwbGF5SW5saW5lVHlwZSgpID8gSU5MSU5FX1RBQkxFIDogVEFCTEUpOwogICAgICAg
ICB9CiAKQEAgLTExODcsNyArMTE4Nyw3IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6YWRqdXN0UmVu
ZGVyU3R5bGUoUmVuZGVyU3R5bGUmIHN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSYgcGFyCiAgICAg
ICAgIH0KIAogICAgICAgICAvLyBUYWJsZXMgbmV2ZXIgc3VwcG9ydCB0aGUgLXdlYmtpdC0qIHZh
bHVlcyBmb3IgdGV4dC1hbGlnbiBhbmQgd2lsbCByZXNldCBiYWNrIHRvIHRoZSBkZWZhdWx0Lgot
ICAgICAgICBpZiAoZSAmJiBpc0hUTUxUYWJsZUVsZW1lbnQoZSkgJiYgKHN0eWxlLnRleHRBbGln
bigpID09IFdFQktJVF9MRUZUIHx8IHN0eWxlLnRleHRBbGlnbigpID09IFdFQktJVF9DRU5URVIg
fHwgc3R5bGUudGV4dEFsaWduKCkgPT0gV0VCS0lUX1JJR0hUKSkKKyAgICAgICAgaWYgKGUgJiYg
aXM8SFRNTFRhYmxlRWxlbWVudD4oZSkgJiYgKHN0eWxlLnRleHRBbGlnbigpID09IFdFQktJVF9M
RUZUIHx8IHN0eWxlLnRleHRBbGlnbigpID09IFdFQktJVF9DRU5URVIgfHwgc3R5bGUudGV4dEFs
aWduKCkgPT0gV0VCS0lUX1JJR0hUKSkKICAgICAgICAgICAgIHN0eWxlLnNldFRleHRBbGlnbihU
QVNUQVJUKTsKIAogICAgICAgICAvLyBGcmFtZXMgYW5kIGZyYW1lc2V0cyBuZXZlciBob25vciBw
b3NpdGlvbjpyZWxhdGl2ZSBvciBwb3NpdGlvbjphYnNvbHV0ZS4gVGhpcyBpcyBuZWNlc3Nhcnkg
dG8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNoZWV0TGlzdC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTaGVldExpc3QuY3BwCmluZGV4IDA3MjAwMzdlOWE4N2Qw
MzQwZGQxMDk4MDQ1YmQ4MmEzMjNlZGIyY2QuLmU5MDE2ZDk1ZjA1YmFjMzRmZDI0MDQ1YTVkMjdj
NWRiNTA5ODlhNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNoZWV0TGlz
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hlZXRMaXN0LmNwcApAQCAtNzYs
NyArNzYsNyBAQCBIVE1MU3R5bGVFbGVtZW50KiBTdHlsZVNoZWV0TGlzdDo6Z2V0TmFtZWRJdGVt
KGNvbnN0IFN0cmluZyYgbmFtZSkgY29uc3QKICAgICAvLyBhbmQgZG9lc24ndCBsb29rIGZvciBu
YW1lIGF0dHJpYnV0ZS4KICAgICAvLyBCdXQgdW5pY2l0eSBvZiBzdHlsZXNoZWV0IGlkcyBpcyBn
b29kIHByYWN0aWNlIGFueXdheSA7KQogICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBtX2RvY3VtZW50
LT5nZXRFbGVtZW50QnlJZChuYW1lKTsKLSAgICBpZiAoZWxlbWVudCAmJiBpc0hUTUxTdHlsZUVs
ZW1lbnQoZWxlbWVudCkpCisgICAgaWYgKGVsZW1lbnQgJiYgaXM8SFRNTFN0eWxlRWxlbWVudD4o
ZWxlbWVudCkpCiAgICAgICAgIHJldHVybiBkb3duY2FzdDxIVE1MU3R5bGVFbGVtZW50PihlbGVt
ZW50KTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9DdXJyZW50U2NyaXB0SW5jcmVtZW50ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DdXJy
ZW50U2NyaXB0SW5jcmVtZW50ZXIuaAppbmRleCA3YzQ4OGMwNzE4NzJlMjdkYzgzNzVmNDBjMDhl
NGEwNDc2ZWRiOWM3Li5iZDdkZTA3MGY0Y2FjNzdkN2I1MWIyOWQwYTZmZDExMzc3YWNjOTk1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ3VycmVudFNjcmlwdEluY3JlbWVudGVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0N1cnJlbnRTY3JpcHRJbmNyZW1lbnRlci5oCkBAIC0z
OSw3ICszOSw3IEBAIGNsYXNzIEN1cnJlbnRTY3JpcHRJbmNyZW1lbnRlciB7CiBwdWJsaWM6CiAg
ICAgQ3VycmVudFNjcmlwdEluY3JlbWVudGVyKERvY3VtZW50KiBkb2N1bWVudCwgRWxlbWVudCog
ZWxlbWVudCkKICAgICAgICAgOiBtX2RvY3VtZW50KGRvY3VtZW50KQotICAgICAgICAsIG1faXNI
VE1MU2NyaXB0RWxlbWVudChpc0hUTUxTY3JpcHRFbGVtZW50KGVsZW1lbnQpKQorICAgICAgICAs
IG1faXNIVE1MU2NyaXB0RWxlbWVudChpczxIVE1MU2NyaXB0RWxlbWVudD4oZWxlbWVudCkpCiAg
ICAgewogICAgICAgICBpZiAobV9pc0hUTUxTY3JpcHRFbGVtZW50KQogICAgICAgICAgICAgbV9k
b2N1bWVudC0+cHVzaEN1cnJlbnRTY3JpcHQoZG93bmNhc3Q8SFRNTFNjcmlwdEVsZW1lbnQ+KGVs
ZW1lbnQpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5jcHAKaW5kZXggYWEwMWFlMTA5ZDVl
ZjEyZjkyZThhY2VhZWZkNGJlNDcxYmMwNDc4OS4uYzc4Mzk1OTNjZDMyYjY4YTBhYmU2NjhmMDE4
N2EyOGZiM2RkNzIyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5jcHAKQEAgLTI1NCw3
ICsyNTQsNyBAQCB2b2lkIERhdGFUcmFuc2Zlcjo6c2V0RHJhZ0ltYWdlKEVsZW1lbnQqIGVsZW1l
bnQsIGludCB4LCBpbnQgeSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgQ2FjaGVkSW1hZ2UqIGlt
YWdlID0gbnVsbHB0cjsKLSAgICBpZiAoZWxlbWVudCAmJiBpc0hUTUxJbWFnZUVsZW1lbnQoZWxl
bWVudCkgJiYgIWVsZW1lbnQtPmluRG9jdW1lbnQoKSkKKyAgICBpZiAoZWxlbWVudCAmJiBpczxI
VE1MSW1hZ2VFbGVtZW50PihlbGVtZW50KSAmJiAhZWxlbWVudC0+aW5Eb2N1bWVudCgpKQogICAg
ICAgICBpbWFnZSA9IGRvd25jYXN0PEhUTUxJbWFnZUVsZW1lbnQ+KCplbGVtZW50KS5jYWNoZWRJ
bWFnZSgpOwogCiAgICAgbV9kcmFnTG9jYXRpb24gPSBJbnRQb2ludCh4LCB5KTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE9yZGVyZWRNYXAuY3BwIGIvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50T3JkZXJlZE1hcC5jcHAKaW5kZXggNzdlZWMzYjc1ZjQ5YTgwMDI0
ZDZiMDkxMTVjMjNhMTlmZDI5YjNmYS4uMzRjZTljMmVhYzhkZjJkMWM5NDZmYzUxZWJkYjI0M2Fl
NWQ1OGZlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50T3JkZXJlZE1h
cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50T3JkZXJlZE1hcC5jcHAKQEAg
LTUzLDIzICs1MywyMyBAQCBpbmxpbmUgYm9vbCBrZXlNYXRjaGVzTmFtZShjb25zdCBBdG9taWNT
dHJpbmdJbXBsJiBrZXksIGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQpCiAKIGlubGluZSBib29sIGtl
eU1hdGNoZXNNYXBOYW1lKGNvbnN0IEF0b21pY1N0cmluZ0ltcGwmIGtleSwgY29uc3QgRWxlbWVu
dCYgZWxlbWVudCkKIHsKLSAgICByZXR1cm4gaXNIVE1MTWFwRWxlbWVudChlbGVtZW50KSAmJiBk
b3duY2FzdDxIVE1MTWFwRWxlbWVudD4oZWxlbWVudCkuZ2V0TmFtZSgpLmltcGwoKSA9PSAma2V5
OworICAgIHJldHVybiBpczxIVE1MTWFwRWxlbWVudD4oZWxlbWVudCkgJiYgZG93bmNhc3Q8SFRN
TE1hcEVsZW1lbnQ+KGVsZW1lbnQpLmdldE5hbWUoKS5pbXBsKCkgPT0gJmtleTsKIH0KIAogaW5s
aW5lIGJvb2wga2V5TWF0Y2hlc0xvd2VyY2FzZWRNYXBOYW1lKGNvbnN0IEF0b21pY1N0cmluZ0lt
cGwmIGtleSwgY29uc3QgRWxlbWVudCYgZWxlbWVudCkKIHsKLSAgICByZXR1cm4gaXNIVE1MTWFw
RWxlbWVudChlbGVtZW50KSAmJiBkb3duY2FzdDxIVE1MTWFwRWxlbWVudD4oZWxlbWVudCkuZ2V0
TmFtZSgpLmxvd2VyKCkuaW1wbCgpID09ICZrZXk7CisgICAgcmV0dXJuIGlzPEhUTUxNYXBFbGVt
ZW50PihlbGVtZW50KSAmJiBkb3duY2FzdDxIVE1MTWFwRWxlbWVudD4oZWxlbWVudCkuZ2V0TmFt
ZSgpLmxvd2VyKCkuaW1wbCgpID09ICZrZXk7CiB9CiAKIGlubGluZSBib29sIGtleU1hdGNoZXNM
b3dlcmNhc2VkVXNlbWFwKGNvbnN0IEF0b21pY1N0cmluZ0ltcGwmIGtleSwgY29uc3QgRWxlbWVu
dCYgZWxlbWVudCkKIHsKICAgICAvLyBGSVhNRTogSFRNTDUgc3BlY2lmaWNhdGlvbiBzYXlzIHdl
IHNob3VsZCBtYXRjaCBib3RoIGltYWdlIGFuZCBvYmplY3QgZWxlbWVudHMuCi0gICAgcmV0dXJu
IGlzSFRNTEltYWdlRWxlbWVudChlbGVtZW50KSAmJiBkb3duY2FzdDxIVE1MSW1hZ2VFbGVtZW50
PihlbGVtZW50KS5tYXRjaGVzTG93ZXJjYXNlZFVzZW1hcChrZXkpOworICAgIHJldHVybiBpczxI
VE1MSW1hZ2VFbGVtZW50PihlbGVtZW50KSAmJiBkb3duY2FzdDxIVE1MSW1hZ2VFbGVtZW50Pihl
bGVtZW50KS5tYXRjaGVzTG93ZXJjYXNlZFVzZW1hcChrZXkpOwogfQogCiBpbmxpbmUgYm9vbCBr
ZXlNYXRjaGVzTGFiZWxGb3JBdHRyaWJ1dGUoY29uc3QgQXRvbWljU3RyaW5nSW1wbCYga2V5LCBj
b25zdCBFbGVtZW50JiBlbGVtZW50KQogewotICAgIHJldHVybiBpc0hUTUxMYWJlbEVsZW1lbnQo
ZWxlbWVudCkgJiYgZWxlbWVudC5mYXN0R2V0QXR0cmlidXRlKGZvckF0dHIpLmltcGwoKSA9PSAm
a2V5OworICAgIHJldHVybiBpczxIVE1MTGFiZWxFbGVtZW50PihlbGVtZW50KSAmJiBlbGVtZW50
LmZhc3RHZXRBdHRyaWJ1dGUoZm9yQXR0cikuaW1wbCgpID09ICZrZXk7CiB9CiAKIGlubGluZSBi
b29sIGtleU1hdGNoZXNXaW5kb3dOYW1lZEl0ZW0oY29uc3QgQXRvbWljU3RyaW5nSW1wbCYga2V5
LCBjb25zdCBFbGVtZW50JiBlbGVtZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb24uY3BwCmluZGV4IDg4OWFlNjJiMGIwMGI1ZGY4Mjcx
NjZmNDk1YjBjZmFjNDA1YjI3NDguLjgzYTQzMDM0ZWUxZGRlODg1YTc0MmJjNDA4OThmZjBkYTQx
NTNhZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFN0eWxlU2hlZXRD
b2xsZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRTdHlsZVNoZWV0
Q29sbGVjdGlvbi5jcHAKQEAgLTI4NCw3ICsyODQsNyBAQCB2b2lkIERvY3VtZW50U3R5bGVTaGVl
dENvbGxlY3Rpb246OmNvbGxlY3RBY3RpdmVTdHlsZVNoZWV0cyhWZWN0b3I8UmVmUHRyPFN0eWxl
UwogICAgICAgICAgICAgRWxlbWVudCYgZWxlbWVudCA9IHRvRWxlbWVudCgqbm9kZSk7CiAgICAg
ICAgICAgICBBdG9taWNTdHJpbmcgdGl0bGUgPSBlbGVtZW50LmZhc3RHZXRBdHRyaWJ1dGUodGl0
bGVBdHRyKTsKICAgICAgICAgICAgIGJvb2wgZW5hYmxlZFZpYVNjcmlwdCA9IGZhbHNlOwotICAg
ICAgICAgICAgaWYgKGlzSFRNTExpbmtFbGVtZW50KGVsZW1lbnQpKSB7CisgICAgICAgICAgICBp
ZiAoaXM8SFRNTExpbmtFbGVtZW50PihlbGVtZW50KSkgewogICAgICAgICAgICAgICAgIC8vIDxM
SU5LPiBlbGVtZW50CiAgICAgICAgICAgICAgICAgSFRNTExpbmtFbGVtZW50JiBsaW5rRWxlbWVu
dCA9IGRvd25jYXN0PEhUTUxMaW5rRWxlbWVudD4oZWxlbWVudCk7CiAgICAgICAgICAgICAgICAg
aWYgKGxpbmtFbGVtZW50LmlzRGlzYWJsZWQoKSkKQEAgLTMwNyw3ICszMDcsNyBAQCB2b2lkIERv
Y3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb246OmNvbGxlY3RBY3RpdmVTdHlsZVNoZWV0cyhWZWN0
b3I8UmVmUHRyPFN0eWxlUwogICAgICAgICAgICAgLy8gc2V0IG9mIHNoZWV0cyB0aGF0IHdpbGwg
YmUgZW5hYmxlZC4KICAgICAgICAgICAgIGlmIChpczxTVkdTdHlsZUVsZW1lbnQ+KGVsZW1lbnQp
KQogICAgICAgICAgICAgICAgIHNoZWV0ID0gZG93bmNhc3Q8U1ZHU3R5bGVFbGVtZW50PihlbGVt
ZW50KS5zaGVldCgpOwotICAgICAgICAgICAgZWxzZSBpZiAoaXNIVE1MTGlua0VsZW1lbnQoZWxl
bWVudCkpCisgICAgICAgICAgICBlbHNlIGlmIChpczxIVE1MTGlua0VsZW1lbnQ+KGVsZW1lbnQp
KQogICAgICAgICAgICAgICAgIHNoZWV0ID0gZG93bmNhc3Q8SFRNTExpbmtFbGVtZW50PihlbGVt
ZW50KS5zaGVldCgpOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIHNoZWV0ID0g
ZG93bmNhc3Q8SFRNTFN0eWxlRWxlbWVudD4oZWxlbWVudCkuc2hlZXQoKTsKQEAgLTMyMiw3ICsz
MjIsNyBAQCB2b2lkIERvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb246OmNvbGxlY3RBY3RpdmVT
dHlsZVNoZWV0cyhWZWN0b3I8UmVmUHRyPFN0eWxlUwogICAgICAgICAgICAgICAgICAgICAvLyB3
ZSBhcmUgTk9UIGFuIGFsdGVybmF0ZSBzaGVldCwgdGhlbiBlc3RhYmxpc2gKICAgICAgICAgICAg
ICAgICAgICAgLy8gdXMgYXMgdGhlIHByZWZlcnJlZCBzZXQuIE90aGVyd2lzZSwganVzdCBpZ25v
cmUKICAgICAgICAgICAgICAgICAgICAgLy8gdGhpcyBzaGVldC4KLSAgICAgICAgICAgICAgICAg
ICAgaWYgKGlzSFRNTFN0eWxlRWxlbWVudChlbGVtZW50KSB8fCAhcmVsLmNvbnRhaW5zKCJhbHRl
cm5hdGUiKSkKKyAgICAgICAgICAgICAgICAgICAgaWYgKGlzPEhUTUxTdHlsZUVsZW1lbnQ+KGVs
ZW1lbnQpIHx8ICFyZWwuY29udGFpbnMoImFsdGVybmF0ZSIpKQogICAgICAgICAgICAgICAgICAg
ICAgICAgbV9wcmVmZXJyZWRTdHlsZXNoZWV0U2V0TmFtZSA9IG1fc2VsZWN0ZWRTdHlsZXNoZWV0
U2V0TmFtZSA9IHRpdGxlOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBpZiAo
dGl0bGUgIT0gbV9wcmVmZXJyZWRTdHlsZXNoZWV0U2V0TmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAppbmRl
eCBkMWNjYjk0ZjQ3OTM0ZWUzMmQzYjkxYTJkNGFkNjlhMDhkNjYzNjM1Li5kMTUwM2ZmNzRiODk3
OWM0YWM5M2IxMjU3N2I1NDBlN2ViMWRhM2JhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCkBAIC0xNzE2LDcg
KzE3MTYsNyBAQCBFbGVtZW50KiBOb2RlOjplbmNsb3NpbmdMaW5rRXZlbnRQYXJlbnRPclNlbGYo
KQogICAgICAgICAvLyBGb3IgaW1hZ2VtYXBzLCB0aGUgZW5jbG9zaW5nIGxpbmsgZWxlbWVudCBp
cyB0aGUgYXNzb2NpYXRlZCBhcmVhIGVsZW1lbnQgbm90IHRoZSBpbWFnZSBpdHNlbGYuCiAgICAg
ICAgIC8vIFNvIHdlIGRvbid0IGxldCBpbWFnZXMgYmUgdGhlIGVuY2xvc2luZyBsaW5rIGVsZW1l
bnQsIGV2ZW4gdGhvdWdoIGlzTGluayBzb21ldGltZXMgcmV0dXJucwogICAgICAgICAvLyB0cnVl
IGZvciB0aGVtLgotICAgICAgICBpZiAobm9kZS0+aXNMaW5rKCkgJiYgIWlzSFRNTEltYWdlRWxl
bWVudChub2RlKSkKKyAgICAgICAgaWYgKG5vZGUtPmlzTGluaygpICYmICFpczxIVE1MSW1hZ2VF
bGVtZW50Pihub2RlKSkKICAgICAgICAgICAgIHJldHVybiB0b0VsZW1lbnQobm9kZSk7CiAgICAg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmNwcAppbmRleCAyMzJkNzc3MDNhODg4M2RmYWJhMzA1ZWRl
YTc4OTg5YmU1M2Q2NmMyLi42NzZkMWM3NDgwZWJkNDA5NjhhM2JhNmU5ZjdkYTE2YWI3ZDYxZGRl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5jcHAKQEAgLTUyOSw3ICs1MjksNyBAQCBzdGF0aWMgYm9v
bCBlbmRzT2ZOb2RlQXJlVmlzdWFsbHlEaXN0aW5jdFBvc2l0aW9ucyhOb2RlKiBub2RlKQogICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgCiAgICAgLy8gRG9uJ3QgaW5jbHVkZSBpbmxpbmUg
dGFibGVzLgotICAgIGlmIChpc0hUTUxUYWJsZUVsZW1lbnQobm9kZSkpCisgICAgaWYgKGlzPEhU
TUxUYWJsZUVsZW1lbnQ+KG5vZGUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCiAgICAg
Ly8gVGhlcmUgaXMgYSBWaXNpYmxlUG9zaXRpb24gaW5zaWRlIGFuIGVtcHR5IGlubGluZS1ibG9j
ayBjb250YWluZXIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5jcHAKaW5kZXggYTVjMmQz
MmJmYTA2NGUzYjU4ZGE2NjBjOTdlZDYxOWE0MWJhNmRmNy4uZTdhNjcxNmQyOWVlYjZhNWM0M2Fj
NDM5NmIzZTMxZmEyOTQxZTlkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1Njcmlw
dEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmNwcApA
QCAtMzgyLDcgKzM4Miw3IEBAIFN0cmluZyBTY3JpcHRFbGVtZW50OjpzY3JpcHRDb250ZW50KCkg
Y29uc3QKIAogU2NyaXB0RWxlbWVudCogdG9TY3JpcHRFbGVtZW50SWZQb3NzaWJsZShFbGVtZW50
KiBlbGVtZW50KQogewotICAgIGlmIChpc0hUTUxTY3JpcHRFbGVtZW50KGVsZW1lbnQpKQorICAg
IGlmIChpczxIVE1MU2NyaXB0RWxlbWVudD4oZWxlbWVudCkpCiAgICAgICAgIHJldHVybiBkb3du
Y2FzdDxIVE1MU2NyaXB0RWxlbWVudD4oZWxlbWVudCk7CiAKICAgICBpZiAoaXM8U1ZHU2NyaXB0
RWxlbWVudD4oZWxlbWVudCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVmlzaXRl
ZExpbmtTdGF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVmlzaXRlZExpbmtTdGF0ZS5jcHAK
aW5kZXggNGMyMmQwMDczNmRmZmUwMzI1ZTFiYTExYzA4ODk2MDRkZTYyZWUzNS4uNTg2OTA5YTVj
MGM5NzA1OTkwZDQyYzBkYmI5ZjhlZWVkNTg4NzVjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL1Zpc2l0ZWRMaW5rU3RhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9WaXNp
dGVkTGlua1N0YXRlLmNwcApAQCAtNjksNyArNjksNyBAQCB2b2lkIFZpc2l0ZWRMaW5rU3RhdGU6
OmludmFsaWRhdGVTdHlsZUZvckFsbExpbmtzKCkKIAogaW5saW5lIHN0YXRpYyBMaW5rSGFzaCBs
aW5rSGFzaEZvckVsZW1lbnQoRG9jdW1lbnQmIGRvY3VtZW50LCBFbGVtZW50JiBlbGVtZW50KQog
ewotICAgIGlmIChpc0hUTUxBbmNob3JFbGVtZW50KGVsZW1lbnQpKQorICAgIGlmIChpczxIVE1M
QW5jaG9yRWxlbWVudD4oZWxlbWVudCkpCiAgICAgICAgIHJldHVybiBkb3duY2FzdDxIVE1MQW5j
aG9yRWxlbWVudD4oZWxlbWVudCkudmlzaXRlZExpbmtIYXNoKCk7CiAgICAgaWYgKGNvbnN0IEF0
b21pY1N0cmluZyogYXR0cmlidXRlID0gbGlua0F0dHJpYnV0ZShlbGVtZW50KSkKICAgICAgICAg
cmV0dXJuIFdlYkNvcmU6OnZpc2l0ZWRMaW5rSGFzaChkb2N1bWVudC5iYXNlVVJMKCksICphdHRy
aWJ1dGUpOwpAQCAtMTAwLDcgKzEwMCw3IEBAIEVJbnNpZGVMaW5rIFZpc2l0ZWRMaW5rU3RhdGU6
OmRldGVybWluZUxpbmtTdGF0ZVNsb3dDYXNlKEVsZW1lbnQmIGVsZW1lbnQpCiAgICAgICAgIHJl
dHVybiBJbnNpZGVWaXNpdGVkTGluazsKIAogICAgIExpbmtIYXNoIGhhc2g7Ci0gICAgaWYgKGlz
SFRNTEFuY2hvckVsZW1lbnQoZWxlbWVudCkpCisgICAgaWYgKGlzPEhUTUxBbmNob3JFbGVtZW50
PihlbGVtZW50KSkKICAgICAgICAgaGFzaCA9IGRvd25jYXN0PEhUTUxBbmNob3JFbGVtZW50Pihl
bGVtZW50KS52aXNpdGVkTGlua0hhc2goKTsKICAgICBlbHNlCiAgICAgICAgIGhhc2ggPSBXZWJD
b3JlOjp2aXNpdGVkTGlua0hhc2goZWxlbWVudC5kb2N1bWVudCgpLmJhc2VVUkwoKSwgKmF0dHJp
YnV0ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vbWFrZV9uYW1lcy5wbCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9tYWtlX25hbWVzLnBsCmluZGV4IDc5NTdlYTQ0YmU2OTZkNGI3Mzk0
N2E5MDgwZGM3MGU1MzcxM2Y0NTcuLmZmNWYxNjYzYzdhM2ZkY2NkNWVlNTViYmNkNDZmZmMwN2Vj
ZTliOTggMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9tYWtlX25hbWVzLnBsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9tYWtlX25hbWVzLnBsCkBAIC02NTksMTUgKzY1OSw3IEBAIEVO
RAogfTsKIEVORAogICAgICAgIDsKLSAgICAgICBpZiAoJHBhcmFtZXRlcnN7bmFtZXNwYWNlfSBl
cSAiSFRNTCIpIHsKLSAgICAgICAgICAgcHJpbnQgRiA8PEVORAotLy8gRklYTUU6IFJlbW92ZSB0
aGVzZSBtYWNyb3Mgb25jZSB0aGUgY29kZSBoYXMgYmVlbiBwb3J0ZWQgdG8gdXNpbmcKLS8vIGlz
PCpFbGVtZW50PigpLgotI2RlZmluZSBpcyRjbGFzcyh4KSBXZWJDb3JlOjppczxXZWJDb3JlOjok
Y2xhc3M+KHgpCi1FTkQKLSAgICAgICAgICAgOwotICAgICAgICB9Ci0gICAgICAgIHByaW50IEYg
IlxuIjsKKyAgICAgICBwcmludCBGICJcbiI7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZVNlbGVjdGlvbkNvbW1hbmQuY3BwIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9EZWxldGVTZWxlY3Rpb25Db21tYW5kLmNwcAppbmRleCBmOGE2NDRhMjZh
NTRkOTU2NjExMGVlMmZjZTdkYzg5NjM5OGI3NDAzLi4zYTU3OTMxZjYyNTQ2NzJlYTM5NDdkZDY5
OGVmYWIxZDM3MzE3MDM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RlbGV0
ZVNlbGVjdGlvbkNvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRGVsZXRl
U2VsZWN0aW9uQ29tbWFuZC5jcHAKQEAgLTQ1Nyw3ICs0NTcsNyBAQCB2b2lkIERlbGV0ZVNlbGVj
dGlvbkNvbW1hbmQ6OmhhbmRsZUdlbmVyYWxEZWxldGUoKQogICAgIG1ha2VTdHlsaW5nRWxlbWVu
dHNEaXJlY3RDaGlsZHJlbk9mRWRpdGFibGVSb290VG9QcmV2ZW50U3R5bGVMb3NzKCk7CiAKICAg
ICAvLyBOZXZlciByZW1vdmUgdGhlIHN0YXJ0IGJsb2NrIHVubGVzcyBpdCdzIGEgdGFibGUsIGlu
IHdoaWNoIGNhc2Ugd2Ugd29uJ3QgbWVyZ2UgY29udGVudCBpbi4KLSAgICBpZiAoc3RhcnROb2Rl
ID09IG1fc3RhcnRCbG9jayAmJiBzdGFydE9mZnNldCA9PSAwICYmIGNhbkhhdmVDaGlsZHJlbkZv
ckVkaXRpbmcoc3RhcnROb2RlKSAmJiAhaXNIVE1MVGFibGVFbGVtZW50KHN0YXJ0Tm9kZSkpIHsK
KyAgICBpZiAoc3RhcnROb2RlID09IG1fc3RhcnRCbG9jayAmJiAhc3RhcnRPZmZzZXQgJiYgY2Fu
SGF2ZUNoaWxkcmVuRm9yRWRpdGluZyhzdGFydE5vZGUpICYmICFpczxIVE1MVGFibGVFbGVtZW50
PihzdGFydE5vZGUpKSB7CiAgICAgICAgIHN0YXJ0T2Zmc2V0ID0gMDsKICAgICAgICAgc3RhcnRO
b2RlID0gTm9kZVRyYXZlcnNhbDo6bmV4dChzdGFydE5vZGUpOwogICAgICAgICBpZiAoIXN0YXJ0
Tm9kZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAppbmRleCAzMDJkZTQxODY1MzA2NTZmMzY3
ODhiYjc0YWIwNDUyYWUwNTM2MTFiLi5lNWI1YjcyMjk2YTNkYjQ0ODI5MDAwY2ExMDYyMjI0YWNh
Yjk2YjAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCkBAIC0zMzAsNyArMzMwLDcgQEAg
c3RhdGljIEhUTUxJbWFnZUVsZW1lbnQqIGltYWdlRWxlbWVudEZyb21JbWFnZURvY3VtZW50KERv
Y3VtZW50JiBkb2N1bWVudCkKICAgICBOb2RlKiBub2RlID0gYm9keS0+Zmlyc3RDaGlsZCgpOwog
ICAgIGlmICghbm9kZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgaWYgKCFpc0hUTUxJ
bWFnZUVsZW1lbnQobm9kZSkpCisgICAgaWYgKCFpczxIVE1MSW1hZ2VFbGVtZW50Pihub2RlKSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgcmV0dXJuIGRvd25jYXN0PEhUTUxJbWFnZUVs
ZW1lbnQ+KG5vZGUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFt
ZVNlbGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNw
cAppbmRleCA3ZTYzMzkzYmY3NTRkOGEzM2QxZjc5OTM3ZWM4ZjU2MmQ0YTYwYzVhLi42OTBiNjkx
NWYwZGRmZmRmNzZjYjc4OWMxZDQzYTg5NzI2OTdmYzI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcApAQCAtMjAyMSw3ICsyMDIxLDcgQEAgc3RhdGljIEhUTUxG
b3JtRWxlbWVudCogc2NhbkZvckZvcm0oRWxlbWVudCogc3RhcnQpCiAgICAgYXV0byBkZXNjZW5k
YW50cyA9IGRlc2NlbmRhbnRzT2ZUeXBlPEhUTUxFbGVtZW50PihzdGFydC0+ZG9jdW1lbnQoKSk7
CiAgICAgZm9yIChhdXRvIGl0ID0gZGVzY2VuZGFudHMuZnJvbSgqc3RhcnQpLCBlbmQgPSBkZXNj
ZW5kYW50cy5lbmQoKTsgaXQgIT0gZW5kOyArK2l0KSB7CiAgICAgICAgIEhUTUxFbGVtZW50JiBl
bGVtZW50ID0gKml0OwotICAgICAgICBpZiAoaXNIVE1MRm9ybUVsZW1lbnQoJmVsZW1lbnQpKQor
ICAgICAgICBpZiAoaXM8SFRNTEZvcm1FbGVtZW50PigmZWxlbWVudCkpCiAgICAgICAgICAgICBy
ZXR1cm4gZG93bmNhc3Q8SFRNTEZvcm1FbGVtZW50PigmZWxlbWVudCk7CiAgICAgICAgIGlmIChp
czxIVE1MRm9ybUNvbnRyb2xFbGVtZW50PihlbGVtZW50KSkKICAgICAgICAgICAgIHJldHVybiBk
b3duY2FzdDxIVE1MRm9ybUNvbnRyb2xFbGVtZW50PihlbGVtZW50KS5mb3JtKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luc2VydExpbmVCcmVha0NvbW1hbmQuY3BwIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRMaW5lQnJlYWtDb21tYW5kLmNwcAppbmRleCBl
NTYzOTUwOWIwZGNhOTY2YzNlNjAyM2NmNmFiNGRkMDJjY2ExYmYxLi4xMWEwNzQ3YTc4MmRiODdh
ZTZkOWM1ZGJjYjJhN2Y2OWQyYWRkNThiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0luc2VydExpbmVCcmVha0NvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvSW5zZXJ0TGluZUJyZWFrQ29tbWFuZC5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRl
ICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lU2VsZWN0aW9uLmgiCiAjaW5jbHVkZSAiSFRNTEVs
ZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1MSFJFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVz
LmgiCiAjaW5jbHVkZSAiSFRNTFRhYmxlRWxlbWVudC5oIgogI2luY2x1ZGUgIlJlbmRlckVsZW1l
bnQuaCIKQEAgLTExNCw3ICsxMTUsNyBAQCB2b2lkIEluc2VydExpbmVCcmVha0NvbW1hbmQ6OmRv
QXBwbHkoKQogICAgIC8vIEZJWE1FOiBOZWVkIHRvIG1lcmdlIHRleHQgbm9kZXMgd2hlbiBpbnNl
cnRpbmcganVzdCBhZnRlciBvciBiZWZvcmUgdGV4dC4KICAgICAKICAgICBpZiAoaXNFbmRPZlBh
cmFncmFwaChjYXJldCkgJiYgIWxpbmVCcmVha0V4aXN0c0F0VmlzaWJsZVBvc2l0aW9uKGNhcmV0
KSkgewotICAgICAgICBib29sIG5lZWRFeHRyYUxpbmVCcmVhayA9ICFwb3MuZGVwcmVjYXRlZE5v
ZGUoKS0+aGFzVGFnTmFtZShoclRhZykgJiYgIWlzSFRNTFRhYmxlRWxlbWVudChwb3MuZGVwcmVj
YXRlZE5vZGUoKSk7CisgICAgICAgIGJvb2wgbmVlZEV4dHJhTGluZUJyZWFrID0gIWlzPEhUTUxI
UkVsZW1lbnQ+KHBvcy5kZXByZWNhdGVkTm9kZSgpKSAmJiAhaXM8SFRNTFRhYmxlRWxlbWVudD4o
cG9zLmRlcHJlY2F0ZWROb2RlKCkpOwogICAgICAgICAKICAgICAgICAgaW5zZXJ0Tm9kZUF0KG5v
ZGVUb0luc2VydC5nZXQoKSwgcG9zKTsKICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0luc2VydFBhcmFncmFwaFNlcGFyYXRvckNvbW1hbmQuY3BwIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9JbnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3JDb21tYW5kLmNwcAppbmRl
eCA3ZmI3NTAzOGM5NDU4NjQwMWE3NzBjMTM3MjkwNjY3YTBkNTUxYjgyLi40OTlkYWQ5YWI2Mzhl
ZTFiZGVlNDgxNDRkNTMxNDRiYmI4NTYyZDA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0luc2VydFBhcmFncmFwaFNlcGFyYXRvckNvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvSW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9yQ29tbWFuZC5jcHAKQEAgLTE2
OSw3ICsxNjksNyBAQCB2b2lkIEluc2VydFBhcmFncmFwaFNlcGFyYXRvckNvbW1hbmQ6OmRvQXBw
bHkoKQogICAgIGlmICghc3RhcnRCbG9jawogICAgICAgICB8fCAhc3RhcnRCbG9jay0+bm9uU2hh
ZG93Qm91bmRhcnlQYXJlbnROb2RlKCkKICAgICAgICAgfHwgaXNUYWJsZUNlbGwoc3RhcnRCbG9j
ay5nZXQoKSkKLSAgICAgICAgfHwgaXNIVE1MRm9ybUVsZW1lbnQoc3RhcnRCbG9jay5nZXQoKSkK
KyAgICAgICAgfHwgaXM8SFRNTEZvcm1FbGVtZW50PihzdGFydEJsb2NrLmdldCgpKQogICAgICAg
ICAvLyBGSVhNRTogSWYgdGhlIG5vZGUgaXMgaGlkZGVuLCB3ZSBkb24ndCBoYXZlIGEgY2Fub25p
Y2FsIHBvc2l0aW9uIHNvIHdlIHdpbGwgZG8gdGhlIHdyb25nIHRoaW5nIGZvciB0YWJsZXMgYW5k
IDxocj4uIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MDM0MgogICAg
ICAgICB8fCAoIWNhbm9uaWNhbFBvcy5pc051bGwoKSAmJiBjYW5vbmljYWxQb3MuZGVwcmVjYXRl
ZE5vZGUoKS0+cmVuZGVyZXIoKSAmJiBjYW5vbmljYWxQb3MuZGVwcmVjYXRlZE5vZGUoKS0+cmVu
ZGVyZXIoKS0+aXNUYWJsZSgpKQogICAgICAgICB8fCAoIWNhbm9uaWNhbFBvcy5pc051bGwoKSAm
JiBjYW5vbmljYWxQb3MuZGVwcmVjYXRlZE5vZGUoKS0+aGFzVGFnTmFtZShoclRhZykpKSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5k
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3Bw
CmluZGV4IDMxMTNhZjM0MDk2NjRiNDBiZjEwZjhiY2MxY2FlODY5NGVjYjQ4MzYuLjgxNmVhMGE2
ZGE1MTFkMTkxODQwMTgzMDFiMWI0OTA2ZTBjNWIxYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwCkBAIC03MjEsNyArNzIxLDcg
QEAgc3RhdGljIHZvaWQgcmVtb3ZlSGVhZENvbnRlbnRzKFJlcGxhY2VtZW50RnJhZ21lbnQmIGZy
YWdtZW50KQogICAgIGF1dG8gaXQgPSBkZXNjZW5kYW50c09mVHlwZTxFbGVtZW50PigqZnJhZ21l
bnQuZnJhZ21lbnQoKSkuYmVnaW4oKTsKICAgICBhdXRvIGVuZCA9IGRlc2NlbmRhbnRzT2ZUeXBl
PEVsZW1lbnQ+KCpmcmFnbWVudC5mcmFnbWVudCgpKS5lbmQoKTsKICAgICB3aGlsZSAoaXQgIT0g
ZW5kKSB7Ci0gICAgICAgIGlmIChpdC0+aGFzVGFnTmFtZShiYXNlVGFnKSB8fCBpdC0+aGFzVGFn
TmFtZShsaW5rVGFnKSB8fCBpdC0+aGFzVGFnTmFtZShtZXRhVGFnKSB8fCBpdC0+aGFzVGFnTmFt
ZShzdHlsZVRhZykgfHwgaXNIVE1MVGl0bGVFbGVtZW50KCppdCkpIHsKKyAgICAgICAgaWYgKGlz
PEhUTUxCYXNlRWxlbWVudD4oKml0KSB8fCBpczxIVE1MTGlua0VsZW1lbnQ+KCppdCkgfHwgaXM8
SFRNTE1ldGFFbGVtZW50PigqaXQpIHx8IGlzPEhUTUxTdHlsZUVsZW1lbnQ+KCppdCkgfHwgaXM8
SFRNTFRpdGxlRWxlbWVudD4oKml0KSkgewogICAgICAgICAgICAgdG9SZW1vdmUuYXBwZW5kKCYq
aXQpOwogICAgICAgICAgICAgaXQudHJhdmVyc2VOZXh0U2tpcHBpbmdDaGlsZHJlbigpOwogICAg
ICAgICAgICAgY29udGludWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2Nv
Y29hL0hUTUxDb252ZXJ0ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxD
b252ZXJ0ZXIubW0KaW5kZXggM2JjYTk0NzQxMjJkM2ExYzFmNTkyYWE5ZDNmMzAyNjdkMzUxOTJk
MS4uMDc5ZGI5NDQxNDlkZmYwNDE2NmIwYTA1MTEwMjE1ZDkyZTMyNmMxZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbQpAQCAtMjAzNCw3ICsyMDM0
LDcgQEAgQk9PTCBIVE1MQ29udmVydGVyOjpfcHJvY2Vzc0VsZW1lbnQoRWxlbWVudCYgZWxlbWVu
dCwgTlNJbnRlZ2VyIGRlcHRoKQogICAgICAgICBpZiAoIWxpc3RTdHlsZVR5cGUubGVuZ3RoKCkp
CiAgICAgICAgICAgICBsaXN0U3R5bGVUeXBlID0gImRlY2ltYWwiOwogICAgICAgICBsaXN0ID0g
YWRvcHROUyhbW1BsYXRmb3JtTlNUZXh0TGlzdCBhbGxvY10gaW5pdFdpdGhNYXJrZXJGb3JtYXQ6
U3RyaW5nKCJ7IiArIGxpc3RTdHlsZVR5cGUgKyAifSIpIG9wdGlvbnM6MF0pOwotICAgICAgICBp
ZiAoaXNIVE1MT0xpc3RFbGVtZW50KGVsZW1lbnQpKSB7CisgICAgICAgIGlmIChpczxIVE1MT0xp
c3RFbGVtZW50PihlbGVtZW50KSkgewogICAgICAgICAgICAgTlNJbnRlZ2VyIHN0YXJ0aW5nSXRl
bU51bWJlciA9IGRvd25jYXN0PEhUTUxPTGlzdEVsZW1lbnQ+KGVsZW1lbnQpLnN0YXJ0KCk7CiAg
ICAgICAgICAgICBbbGlzdCBzZXRTdGFydGluZ0l0ZW1OdW1iZXI6c3RhcnRpbmdJdGVtTnVtYmVy
XTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9odG1sZWRp
dGluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2h0bWxlZGl0aW5nLmNwcAppbmRleCBl
OGM2MDhiYjk1MWE4ZWNlMTFhOTBkZTE5ZTQ0ZjllM2EyMWVhM2NlLi41ZThmNTk1ZDJkMmYyYjg5
ODViMzIyM2JmYTcwZTI3MTllMDg1NDYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL2h0bWxlZGl0aW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2h0bWxlZGl0
aW5nLmNwcApAQCAtMTIwNCw3ICsxMjA0LDcgQEAgYm9vbCBpc05vblRhYmxlQ2VsbEhUTUxCbG9j
a0VsZW1lbnQoY29uc3QgTm9kZSogbm9kZSkKICAgICByZXR1cm4gZWxlbWVudC0+aGFzVGFnTmFt
ZShsaXN0aW5nVGFnKQogICAgICAgICB8fCBlbGVtZW50LT5oYXNUYWdOYW1lKG9sVGFnKQogICAg
ICAgICB8fCBlbGVtZW50LT5oYXNUYWdOYW1lKHByZVRhZykKLSAgICAgICAgfHwgaXNIVE1MVGFi
bGVFbGVtZW50KGVsZW1lbnQpCisgICAgICAgIHx8IGlzPEhUTUxUYWJsZUVsZW1lbnQ+KGVsZW1l
bnQpCiAgICAgICAgIHx8IGVsZW1lbnQtPmhhc1RhZ05hbWUodWxUYWcpCiAgICAgICAgIHx8IGVs
ZW1lbnQtPmhhc1RhZ05hbWUoeG1wVGFnKQogICAgICAgICB8fCBlbGVtZW50LT5oYXNUYWdOYW1l
KGgxVGFnKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCmluZGV4IDU2YzcwMDczYjYzZDVkOTJk
YWEyZGZjOGUyNTEyMzQ2YWNhNzZkMmIuLjA5ZjQ2ODcyNGNiNzYzNTIxOWVjZGUwMzY0ZjExZjZm
YzQzZmFjYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKQEAgLTQ1Miw3ICs0NTIsNyBA
QCBzdGF0aWMgTm9kZSogYW5jZXN0b3JUb1JldGFpblN0cnVjdHVyZUFuZEFwcGVhcmFuY2VGb3JC
bG9jayhOb2RlKiBjb21tb25BbmNlc3RvcgogCiAgICAgaWYgKGNvbW1vbkFuY2VzdG9yQmxvY2st
Pmhhc1RhZ05hbWUodGJvZHlUYWcpIHx8IGNvbW1vbkFuY2VzdG9yQmxvY2stPmhhc1RhZ05hbWUo
dHJUYWcpKSB7CiAgICAgICAgIENvbnRhaW5lck5vZGUqIHRhYmxlID0gY29tbW9uQW5jZXN0b3JC
bG9jay0+cGFyZW50Tm9kZSgpOwotICAgICAgICB3aGlsZSAodGFibGUgJiYgIWlzSFRNTFRhYmxl
RWxlbWVudCh0YWJsZSkpCisgICAgICAgIHdoaWxlICh0YWJsZSAmJiAhaXM8SFRNTFRhYmxlRWxl
bWVudD4odGFibGUpKQogICAgICAgICAgICAgdGFibGUgPSB0YWJsZS0+cGFyZW50Tm9kZSgpOwog
CiAgICAgICAgIHJldHVybiB0YWJsZTsKQEAgLTkzNCw3ICs5MzQsNyBAQCBzdGF0aWMgVmVjdG9y
PFJlZjxIVE1MRWxlbWVudD4+IGNvbGxlY3RFbGVtZW50c1RvUmVtb3ZlRnJvbUZyYWdtZW50KENv
bnRhaW5lck5vZAogICAgICAgICAgICAgY29sbGVjdEVsZW1lbnRzVG9SZW1vdmVGcm9tRnJhZ21l
bnQoZWxlbWVudCk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQotICAgICAgICBp
ZiAoaXNIVE1MSGVhZEVsZW1lbnQoZWxlbWVudCkgfHwgaXNIVE1MQm9keUVsZW1lbnQoZWxlbWVu
dCkpCisgICAgICAgIGlmIChpczxIVE1MSGVhZEVsZW1lbnQ+KGVsZW1lbnQpIHx8IGlzPEhUTUxC
b2R5RWxlbWVudD4oZWxlbWVudCkpCiAgICAgICAgICAgICB0b1JlbW92ZS5hcHBlbmQoZWxlbWVu
dCk7CiAgICAgfQogICAgIHJldHVybiB0b1JlbW92ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9G
VFBEaXJlY3RvcnlEb2N1bWVudC5jcHAKaW5kZXggZDZmMTRkNzM1MzUzMjM2OTFmYzk2ZjhiMGY4
ZmNmM2IzODY4OGY4OS4uOWIwZmRlYTk5NjA3ODVmZTU5ZTQ0ZGVkMDk5ZDE1NzIxZjlkMzUwZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHAKQEAgLTMw
MCw3ICszMDAsNyBAQCBib29sIEZUUERpcmVjdG9yeURvY3VtZW50UGFyc2VyOjpsb2FkRG9jdW1l
bnRUZW1wbGF0ZSgpCiAgICAgUmVmUHRyPEVsZW1lbnQ+IHRhYmxlRWxlbWVudCA9IGRvY3VtZW50
KCktPmdldEVsZW1lbnRCeUlkKFN0cmluZyhBU0NJSUxpdGVyYWwoImZ0cERpcmVjdG9yeVRhYmxl
IikpKTsKICAgICBpZiAoIXRhYmxlRWxlbWVudCkKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUg
dG8gZmluZCBlbGVtZW50IGJ5IGlkIFwiZnRwRGlyZWN0b3J5VGFibGVcIiBpbiB0aGUgdGVtcGxh
dGUgZG9jdW1lbnQuIik7Ci0gICAgZWxzZSBpZiAoIWlzSFRNTFRhYmxlRWxlbWVudCh0YWJsZUVs
ZW1lbnQuZ2V0KCkpKQorICAgIGVsc2UgaWYgKCFpczxIVE1MVGFibGVFbGVtZW50Pih0YWJsZUVs
ZW1lbnQuZ2V0KCkpKQogICAgICAgICBMT0dfRVJST1IoIkVsZW1lbnQgb2YgaWQgXCJmdHBEaXJl
Y3RvcnlUYWJsZVwiIGlzIG5vdCBhIHRhYmxlIGVsZW1lbnQiKTsKICAgICBlbHNlIAogICAgICAg
ICBtX3RhYmxlRWxlbWVudCA9IGRvd25jYXN0PEhUTUxUYWJsZUVsZW1lbnQ+KHRhYmxlRWxlbWVu
dC5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Bc3NvY2lhdGVk
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Bc3NvY2lhdGVkRWxlbWVudC5j
cHAKaW5kZXggOWRmNDA1OTg5MjQ5OGNlZGNmMjM2ZGM0NmFjZWEzZGExMDNkMTFhNy4uNzA0NWE4
ZjVlOGVjY2I3NTdmZmMwNzc0NWIyMTZkNTgwMGE2NzBmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9Gb3JtQXNzb2NpYXRlZEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvRm9ybUFzc29jaWF0ZWRFbGVtZW50LmNwcApAQCAtOTgsNyArOTgsNyBAQCBIVE1MRm9y
bUVsZW1lbnQqIEZvcm1Bc3NvY2lhdGVkRWxlbWVudDo6ZmluZEFzc29jaWF0ZWRGb3JtKGNvbnN0
IEhUTUxFbGVtZW50KiBlbAogICAgICAgICAvLyB0cmVlU2NvcGUoKS5nZXRFbGVtZW50QnlJZCgp
IG92ZXIgdGhlIGdpdmVuIGVsZW1lbnQuCiAgICAgICAgIEhUTUxGb3JtRWxlbWVudCogbmV3Rm9y
bSA9IG51bGxwdHI7CiAgICAgICAgIEVsZW1lbnQqIG5ld0Zvcm1DYW5kaWRhdGUgPSBlbGVtZW50
LT50cmVlU2NvcGUoKS5nZXRFbGVtZW50QnlJZChmb3JtSWQpOwotICAgICAgICBpZiAobmV3Rm9y
bUNhbmRpZGF0ZSAmJiBpc0hUTUxGb3JtRWxlbWVudChuZXdGb3JtQ2FuZGlkYXRlKSkKKyAgICAg
ICAgaWYgKG5ld0Zvcm1DYW5kaWRhdGUgJiYgaXM8SFRNTEZvcm1FbGVtZW50PihuZXdGb3JtQ2Fu
ZGlkYXRlKSkKICAgICAgICAgICAgIG5ld0Zvcm0gPSBkb3duY2FzdDxIVE1MRm9ybUVsZW1lbnQ+
KG5ld0Zvcm1DYW5kaWRhdGUpOwogICAgICAgICByZXR1cm4gbmV3Rm9ybTsKICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwCmluZGV4IDM0YWZlYjlmODlmZDNm
MjM4MTk4NDU0N2M3MDI0NzMwNWI4ZDM4OWUuLjY1NWFhYjA4YmFiYWZhYmI4M2E5OWQ5NTc2ZTkz
YTE1Y2RhMTVjNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3Bw
CkBAIC0xNTgsNyArMTU4LDcgQEAgc3RhdGljIHZvaWQgYXBwZW5kU2VydmVyTWFwTW91c2VQb3Np
dGlvbihTdHJpbmdCdWlsZGVyJiB1cmwsIEV2ZW50KiBldmVudCkKICAgICBBU1NFUlQoZXZlbnQt
PnRhcmdldCgpKTsKICAgICBOb2RlKiB0YXJnZXQgPSBldmVudC0+dGFyZ2V0KCktPnRvTm9kZSgp
OwogICAgIEFTU0VSVCh0YXJnZXQpOwotICAgIGlmICghaXNIVE1MSW1hZ2VFbGVtZW50KHRhcmdl
dCkpCisgICAgaWYgKCFpczxIVE1MSW1hZ2VFbGVtZW50Pih0YXJnZXQpKQogICAgICAgICByZXR1
cm47CiAKICAgICBIVE1MSW1hZ2VFbGVtZW50JiBpbWFnZUVsZW1lbnQgPSBkb3duY2FzdDxIVE1M
SW1hZ2VFbGVtZW50PigqdGFyZ2V0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEFyZWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFyZWFFbGVtZW50
LmNwcAppbmRleCBkZDg0YmRjNjg0MGM3YWI3Njk0MTNmZmQxZjFhMzczYzE2OTU3NDA3Li5iMTE1
M2U3NTNkMDljOWVlNGU5OGFiYWI5ZmQ3OTYxMWQwNzVkMjM5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxBcmVhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MQXJlYUVsZW1lbnQuY3BwCkBAIC0xODIsNyArMTgyLDcgQEAgUGF0aCBIVE1MQXJlYUVs
ZW1lbnQ6OmdldFJlZ2lvbihjb25zdCBMYXlvdXRTaXplJiBzaXplKSBjb25zdAogSFRNTEltYWdl
RWxlbWVudCogSFRNTEFyZWFFbGVtZW50OjppbWFnZUVsZW1lbnQoKSBjb25zdAogewogICAgIE5v
ZGUqIG1hcEVsZW1lbnQgPSBwYXJlbnROb2RlKCk7Ci0gICAgaWYgKCFtYXBFbGVtZW50IHx8ICFp
c0hUTUxNYXBFbGVtZW50KG1hcEVsZW1lbnQpKQorICAgIGlmICghbWFwRWxlbWVudCB8fCAhaXM8
SFRNTE1hcEVsZW1lbnQ+KG1hcEVsZW1lbnQpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICAKICAgICByZXR1cm4gZG93bmNhc3Q8SFRNTE1hcEVsZW1lbnQ+KCptYXBFbGVtZW50KS5pbWFn
ZUVsZW1lbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50LmNwcAppbmRleCAwY2UyYjA2
ZmZlODU4NjFmMzZlZDUxMDUyMDJkY2VkYWU3NGQ3M2U3Li5iMmQ2NTk1ZWIxOTQ0ZWFjMzMxZTAy
Nzk4OGI0MWI1MjRiNTRjNTJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxE
b2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnQuY3BwCkBA
IC0xMzksNyArMTM5LDcgQEAgdm9pZCBIVE1MRG9jdW1lbnQ6OnNldERlc2lnbk1vZGUoY29uc3Qg
U3RyaW5nJiB2YWx1ZSkKIGNvbnN0IEF0b21pY1N0cmluZyYgSFRNTERvY3VtZW50OjpiZ0NvbG9y
KCkgY29uc3QKIHsKICAgICBIVE1MRWxlbWVudCogYm9keUVsZW1lbnQgPSBib2R5KCk7Ci0gICAg
aWYgKCFib2R5RWxlbWVudCB8fCAhaXNIVE1MQm9keUVsZW1lbnQoYm9keUVsZW1lbnQpKQorICAg
IGlmICghYm9keUVsZW1lbnQgfHwgIWlzPEhUTUxCb2R5RWxlbWVudD4oYm9keUVsZW1lbnQpKQog
ICAgICAgICByZXR1cm4gZW1wdHlBdG9tOwogICAgIHJldHVybiBib2R5RWxlbWVudC0+ZmFzdEdl
dEF0dHJpYnV0ZShiZ2NvbG9yQXR0cik7CiB9CkBAIC0xNDcsNyArMTQ3LDcgQEAgY29uc3QgQXRv
bWljU3RyaW5nJiBIVE1MRG9jdW1lbnQ6OmJnQ29sb3IoKSBjb25zdAogdm9pZCBIVE1MRG9jdW1l
bnQ6OnNldEJnQ29sb3IoY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBIVE1MRWxlbWVudCog
Ym9keUVsZW1lbnQgPSBib2R5KCk7Ci0gICAgaWYgKCFib2R5RWxlbWVudCB8fCAhaXNIVE1MQm9k
eUVsZW1lbnQoYm9keUVsZW1lbnQpKQorICAgIGlmICghYm9keUVsZW1lbnQgfHwgIWlzPEhUTUxC
b2R5RWxlbWVudD4oYm9keUVsZW1lbnQpKQogICAgICAgICByZXR1cm47CiAgICAgYm9keUVsZW1l
bnQtPnNldEF0dHJpYnV0ZShiZ2NvbG9yQXR0ciwgdmFsdWUpOwogfQpAQCAtMTU1LDcgKzE1NSw3
IEBAIHZvaWQgSFRNTERvY3VtZW50OjpzZXRCZ0NvbG9yKGNvbnN0IFN0cmluZyYgdmFsdWUpCiBj
b25zdCBBdG9taWNTdHJpbmcmIEhUTUxEb2N1bWVudDo6ZmdDb2xvcigpIGNvbnN0CiB7CiAgICAg
SFRNTEVsZW1lbnQqIGJvZHlFbGVtZW50ID0gYm9keSgpOwotICAgIGlmICghYm9keUVsZW1lbnQg
fHwgIWlzSFRNTEJvZHlFbGVtZW50KGJvZHlFbGVtZW50KSkKKyAgICBpZiAoIWJvZHlFbGVtZW50
IHx8ICFpczxIVE1MQm9keUVsZW1lbnQ+KGJvZHlFbGVtZW50KSkKICAgICAgICAgcmV0dXJuIGVt
cHR5QXRvbTsKICAgICByZXR1cm4gYm9keUVsZW1lbnQtPmZhc3RHZXRBdHRyaWJ1dGUodGV4dEF0
dHIpOwogfQpAQCAtMTYzLDcgKzE2Myw3IEBAIGNvbnN0IEF0b21pY1N0cmluZyYgSFRNTERvY3Vt
ZW50OjpmZ0NvbG9yKCkgY29uc3QKIHZvaWQgSFRNTERvY3VtZW50OjpzZXRGZ0NvbG9yKGNvbnN0
IFN0cmluZyYgdmFsdWUpCiB7CiAgICAgSFRNTEVsZW1lbnQqIGJvZHlFbGVtZW50ID0gYm9keSgp
OwotICAgIGlmICghYm9keUVsZW1lbnQgfHwgIWlzSFRNTEJvZHlFbGVtZW50KGJvZHlFbGVtZW50
KSkKKyAgICBpZiAoIWJvZHlFbGVtZW50IHx8ICFpczxIVE1MQm9keUVsZW1lbnQ+KGJvZHlFbGVt
ZW50KSkKICAgICAgICAgcmV0dXJuOwogICAgIGJvZHlFbGVtZW50LT5zZXRBdHRyaWJ1dGUodGV4
dEF0dHIsIHZhbHVlKTsKIH0KQEAgLTE3MSw3ICsxNzEsNyBAQCB2b2lkIEhUTUxEb2N1bWVudDo6
c2V0RmdDb2xvcihjb25zdCBTdHJpbmcmIHZhbHVlKQogY29uc3QgQXRvbWljU3RyaW5nJiBIVE1M
RG9jdW1lbnQ6OmFsaW5rQ29sb3IoKSBjb25zdAogewogICAgIEhUTUxFbGVtZW50KiBib2R5RWxl
bWVudCA9IGJvZHkoKTsKLSAgICBpZiAoIWJvZHlFbGVtZW50IHx8ICFpc0hUTUxCb2R5RWxlbWVu
dChib2R5RWxlbWVudCkpCisgICAgaWYgKCFib2R5RWxlbWVudCB8fCAhaXM8SFRNTEJvZHlFbGVt
ZW50Pihib2R5RWxlbWVudCkpCiAgICAgICAgIHJldHVybiBlbXB0eUF0b207CiAgICAgcmV0dXJu
IGJvZHlFbGVtZW50LT5mYXN0R2V0QXR0cmlidXRlKGFsaW5rQXR0cik7CiB9CkBAIC0xNzksNyAr
MTc5LDcgQEAgY29uc3QgQXRvbWljU3RyaW5nJiBIVE1MRG9jdW1lbnQ6OmFsaW5rQ29sb3IoKSBj
b25zdAogdm9pZCBIVE1MRG9jdW1lbnQ6OnNldEFsaW5rQ29sb3IoY29uc3QgU3RyaW5nJiB2YWx1
ZSkKIHsKICAgICBIVE1MRWxlbWVudCogYm9keUVsZW1lbnQgPSBib2R5KCk7Ci0gICAgaWYgKCFi
b2R5RWxlbWVudCB8fCAhaXNIVE1MQm9keUVsZW1lbnQoYm9keUVsZW1lbnQpKQorICAgIGlmICgh
Ym9keUVsZW1lbnQgfHwgIWlzPEhUTUxCb2R5RWxlbWVudD4oYm9keUVsZW1lbnQpKQogICAgICAg
ICByZXR1cm47CiAgICAgYm9keUVsZW1lbnQtPnNldEF0dHJpYnV0ZShhbGlua0F0dHIsIHZhbHVl
KTsKIH0KQEAgLTE4Nyw3ICsxODcsNyBAQCB2b2lkIEhUTUxEb2N1bWVudDo6c2V0QWxpbmtDb2xv
cihjb25zdCBTdHJpbmcmIHZhbHVlKQogY29uc3QgQXRvbWljU3RyaW5nJiBIVE1MRG9jdW1lbnQ6
OmxpbmtDb2xvcigpIGNvbnN0CiB7CiAgICAgSFRNTEVsZW1lbnQqIGJvZHlFbGVtZW50ID0gYm9k
eSgpOwotICAgIGlmICghYm9keUVsZW1lbnQgfHwgIWlzSFRNTEJvZHlFbGVtZW50KGJvZHlFbGVt
ZW50KSkKKyAgICBpZiAoIWJvZHlFbGVtZW50IHx8ICFpczxIVE1MQm9keUVsZW1lbnQ+KGJvZHlF
bGVtZW50KSkKICAgICAgICAgcmV0dXJuIGVtcHR5QXRvbTsKICAgICByZXR1cm4gYm9keUVsZW1l
bnQtPmZhc3RHZXRBdHRyaWJ1dGUobGlua0F0dHIpOwogfQpAQCAtMTk1LDcgKzE5NSw3IEBAIGNv
bnN0IEF0b21pY1N0cmluZyYgSFRNTERvY3VtZW50OjpsaW5rQ29sb3IoKSBjb25zdAogdm9pZCBI
VE1MRG9jdW1lbnQ6OnNldExpbmtDb2xvcihjb25zdCBTdHJpbmcmIHZhbHVlKQogewogICAgIEhU
TUxFbGVtZW50KiBib2R5RWxlbWVudCA9IGJvZHkoKTsKLSAgICBpZiAoIWJvZHlFbGVtZW50IHx8
ICFpc0hUTUxCb2R5RWxlbWVudChib2R5RWxlbWVudCkpCisgICAgaWYgKCFib2R5RWxlbWVudCB8
fCAhaXM8SFRNTEJvZHlFbGVtZW50Pihib2R5RWxlbWVudCkpCiAgICAgICAgIHJldHVybjsKICAg
ICByZXR1cm4gYm9keUVsZW1lbnQtPnNldEF0dHJpYnV0ZShsaW5rQXR0ciwgdmFsdWUpOwogfQpA
QCAtMjAzLDcgKzIwMyw3IEBAIHZvaWQgSFRNTERvY3VtZW50OjpzZXRMaW5rQ29sb3IoY29uc3Qg
U3RyaW5nJiB2YWx1ZSkKIGNvbnN0IEF0b21pY1N0cmluZyYgSFRNTERvY3VtZW50Ojp2bGlua0Nv
bG9yKCkgY29uc3QKIHsKICAgICBIVE1MRWxlbWVudCogYm9keUVsZW1lbnQgPSBib2R5KCk7Ci0g
ICAgaWYgKCFib2R5RWxlbWVudCB8fCAhaXNIVE1MQm9keUVsZW1lbnQoYm9keUVsZW1lbnQpKQor
ICAgIGlmICghYm9keUVsZW1lbnQgfHwgIWlzPEhUTUxCb2R5RWxlbWVudD4oYm9keUVsZW1lbnQp
KQogICAgICAgICByZXR1cm4gZW1wdHlBdG9tOwogICAgIHJldHVybiBib2R5RWxlbWVudC0+ZmFz
dEdldEF0dHJpYnV0ZSh2bGlua0F0dHIpOwogfQpAQCAtMjExLDcgKzIxMSw3IEBAIGNvbnN0IEF0
b21pY1N0cmluZyYgSFRNTERvY3VtZW50Ojp2bGlua0NvbG9yKCkgY29uc3QKIHZvaWQgSFRNTERv
Y3VtZW50OjpzZXRWbGlua0NvbG9yKGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7CiAgICAgSFRNTEVs
ZW1lbnQqIGJvZHlFbGVtZW50ID0gYm9keSgpOwotICAgIGlmICghYm9keUVsZW1lbnQgfHwgIWlz
SFRNTEJvZHlFbGVtZW50KGJvZHlFbGVtZW50KSkKKyAgICBpZiAoIWJvZHlFbGVtZW50IHx8ICFp
czxIVE1MQm9keUVsZW1lbnQ+KGJvZHlFbGVtZW50KSkKICAgICAgICAgcmV0dXJuOwogICAgIHJl
dHVybiBib2R5RWxlbWVudC0+c2V0QXR0cmlidXRlKHZsaW5rQXR0ciwgdmFsdWUpOwogfQpAQCAt
MzQwLDcgKzM0MCw3IEBAIHZvaWQgSFRNTERvY3VtZW50OjpjbGVhcigpCiBib29sIEhUTUxEb2N1
bWVudDo6aXNGcmFtZVNldCgpIGNvbnN0CiB7CiAgICAgSFRNTEVsZW1lbnQqIGJvZHlFbGVtZW50
ID0gYm9keSgpOwotICAgIHJldHVybiBib2R5RWxlbWVudCAmJiBpc0hUTUxGcmFtZVNldEVsZW1l
bnQoYm9keUVsZW1lbnQpOworICAgIHJldHVybiBib2R5RWxlbWVudCAmJiBpczxIVE1MRnJhbWVT
ZXRFbGVtZW50Pihib2R5RWxlbWVudCk7CiB9CiAKIFBhc3NSZWZQdHI8RG9jdW1lbnQ+IEhUTUxE
b2N1bWVudDo6Y2xvbmVEb2N1bWVudFdpdGhvdXRDaGlsZHJlbigpIGNvbnN0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEVsZW1lbnQuY3BwCmluZGV4IGQ4ZDRkOTZlMjk5NDhjMzI1MWI0ZmU2N2I2NGViY2Vk
YTBlOWJlMWUuLmNkOTJmZjhmMjdjZjgzNGZmZTU0ZTU4NjA4OTFhNWMzNDk5ZTdkMWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCkBAIC00MjcsNyArNDI3LDcgQEAgdm9pZCBIVE1M
RWxlbWVudDo6c2V0SW5uZXJIVE1MKGNvbnN0IFN0cmluZyYgaHRtbCwgRXhjZXB0aW9uQ29kZSYg
ZWMpCiAgICAgaWYgKFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBmcmFnbWVudCA9IGNyZWF0ZUZy
YWdtZW50Rm9ySW5uZXJPdXRlckhUTUwoaHRtbCwgdGhpcywgQWxsb3dTY3JpcHRpbmdDb250ZW50
LCBlYykpIHsKICAgICAgICAgQ29udGFpbmVyTm9kZSogY29udGFpbmVyID0gdGhpczsKICNpZiBF
TkFCTEUoVEVNUExBVEVfRUxFTUVOVCkKLSAgICAgICAgaWYgKGlzSFRNTFRlbXBsYXRlRWxlbWVu
dCgqdGhpcykpCisgICAgICAgIGlmIChpczxIVE1MVGVtcGxhdGVFbGVtZW50PigqdGhpcykpCiAg
ICAgICAgICAgICBjb250YWluZXIgPSBkb3duY2FzdDxIVE1MVGVtcGxhdGVFbGVtZW50PigqdGhp
cykuY29udGVudCgpOwogI2VuZGlmCiAgICAgICAgIHJlcGxhY2VDaGlsZHJlbldpdGhGcmFnbWVu
dCgqY29udGFpbmVyLCBmcmFnbWVudC5yZWxlYXNlKCksIGVjKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEZpZWxkU2V0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxGaWVsZFNldEVsZW1lbnQuY3BwCmluZGV4IDVmZDJkNGNmNzAzMmRjZDkwOThiODlk
OTc2ODk0OGNhMmQ5ZjUwN2MuLmFjMzY1MWYxOTM1ZjQ5NTFhMWMxNWFkOWNiN2Y3YWQ2ZGJiN2I0
ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZpZWxkU2V0RWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRmllbGRTZXRFbGVtZW50LmNwcApAQCAt
NjUsNyArNjUsNyBAQCBzdGF0aWMgdm9pZCB1cGRhdGVGcm9tQ29udHJvbEVsZW1lbnRzQW5jZXN0
b3JEaXNhYmxlZFN0YXRlVW5kZXIoSFRNTEVsZW1lbnQmIHN0YQogICAgIHdoaWxlIChjb250cm9s
KSB7CiAgICAgICAgIGNvbnRyb2wtPnNldEFuY2VzdG9yRGlzYWJsZWQoaXNEaXNhYmxlZCk7CiAg
ICAgICAgIC8vIERvbid0IGNhbGwgc2V0QW5jZXN0b3JEaXNhYmxlZChmYWxzZSkgb24gZm9ybSBj
b250b3JscyBpbnNpZGUgZGlzYWJsZWQgZmllbGRzZXRzLgotICAgICAgICBpZiAoaXNIVE1MRmll
bGRTZXRFbGVtZW50KGNvbnRyb2wpICYmIGNvbnRyb2wtPmZhc3RIYXNBdHRyaWJ1dGUoZGlzYWJs
ZWRBdHRyKSkKKyAgICAgICAgaWYgKGlzPEhUTUxGaWVsZFNldEVsZW1lbnQ+KGNvbnRyb2wpICYm
IGNvbnRyb2wtPmZhc3RIYXNBdHRyaWJ1dGUoZGlzYWJsZWRBdHRyKSkKICAgICAgICAgICAgIGNv
bnRyb2wgPSBUcmF2ZXJzYWw8SFRNTEZvcm1Db250cm9sRWxlbWVudD46Om5leHRTa2lwcGluZ0No
aWxkcmVuKGNvbnRyb2wsICZzdGFydE5vZGUpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBj
b250cm9sID0gVHJhdmVyc2FsPEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ+OjpuZXh0KGNvbnRyb2ws
ICZzdGFydE5vZGUpOwpAQCAtOTMsNyArOTMsNyBAQCB2b2lkIEhUTUxGaWVsZFNldEVsZW1lbnQ6
OmRpc2FibGVkU3RhdGVDaGFuZ2VkKCkKICAgICBib29sIHRoaXNGaWVsZHNldElzRGlzYWJsZWQg
PSBmYXN0SGFzQXR0cmlidXRlKGRpc2FibGVkQXR0cik7CiAgICAgYm9vbCBoYXNTZWVuRmlyc3RM
ZWdlbmRFbGVtZW50ID0gZmFsc2U7CiAgICAgZm9yIChIVE1MRWxlbWVudCogY29udHJvbCA9IFRy
YXZlcnNhbDxIVE1MRWxlbWVudD46OmZpcnN0Q2hpbGQodGhpcyk7IGNvbnRyb2w7IGNvbnRyb2wg
PSBUcmF2ZXJzYWw8SFRNTEVsZW1lbnQ+OjpuZXh0U2libGluZyhjb250cm9sKSkgewotICAgICAg
ICBpZiAoIWhhc1NlZW5GaXJzdExlZ2VuZEVsZW1lbnQgJiYgaXNIVE1MTGVnZW5kRWxlbWVudChj
b250cm9sKSkgeworICAgICAgICBpZiAoIWhhc1NlZW5GaXJzdExlZ2VuZEVsZW1lbnQgJiYgaXM8
SFRNTExlZ2VuZEVsZW1lbnQ+KGNvbnRyb2wpKSB7CiAgICAgICAgICAgICBoYXNTZWVuRmlyc3RM
ZWdlbmRFbGVtZW50ID0gdHJ1ZTsKICAgICAgICAgICAgIHVwZGF0ZUZyb21Db250cm9sRWxlbWVu
dHNBbmNlc3RvckRpc2FibGVkU3RhdGVVbmRlcigqY29udHJvbCwgZmFsc2UgLyogaXNEaXNhYmxl
ZCAqLyk7CiAgICAgICAgICAgICBjb250aW51ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwCmluZGV4IDhjN2FmMTYzYTBkMmY3YWJmOTFjYjE0OWE4
NzY2ZWJlZjRmNmFlMTMuLjE1YjAzZGRlYzVmZmUxNDk2MmIyMTgzN2JjYjk4MWFjNTlmODM1MDMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcApA
QCAtMTAzLDkgKzEwMyw5IEBAIGJvb2wgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6Y29tcHV0ZUlz
RGlzYWJsZWRCeUZpZWxkc2V0QW5jZXN0b3IoKSBjb25zdAogewogICAgIEVsZW1lbnQqIHByZXZp
b3VzQW5jZXN0b3IgPSBudWxscHRyOwogICAgIGZvciAoRWxlbWVudCogYW5jZXN0b3IgPSBwYXJl
bnRFbGVtZW50KCk7IGFuY2VzdG9yOyBhbmNlc3RvciA9IGFuY2VzdG9yLT5wYXJlbnRFbGVtZW50
KCkpIHsKLSAgICAgICAgaWYgKGlzSFRNTEZpZWxkU2V0RWxlbWVudChhbmNlc3RvcikgJiYgYW5j
ZXN0b3ItPmZhc3RIYXNBdHRyaWJ1dGUoZGlzYWJsZWRBdHRyKSkgeworICAgICAgICBpZiAoaXM8
SFRNTEZpZWxkU2V0RWxlbWVudD4oYW5jZXN0b3IpICYmIGFuY2VzdG9yLT5mYXN0SGFzQXR0cmli
dXRlKGRpc2FibGVkQXR0cikpIHsKICAgICAgICAgICAgIEhUTUxGaWVsZFNldEVsZW1lbnQmIGZp
ZWxkU2V0QW5jZXN0b3IgPSBkb3duY2FzdDxIVE1MRmllbGRTZXRFbGVtZW50PigqYW5jZXN0b3Ip
OwotICAgICAgICAgICAgYm9vbCBpc0luRmlyc3RMZWdlbmQgPSBwcmV2aW91c0FuY2VzdG9yICYm
IGlzSFRNTExlZ2VuZEVsZW1lbnQocHJldmlvdXNBbmNlc3RvcikgJiYgcHJldmlvdXNBbmNlc3Rv
ciA9PSBmaWVsZFNldEFuY2VzdG9yLmxlZ2VuZCgpOworICAgICAgICAgICAgYm9vbCBpc0luRmly
c3RMZWdlbmQgPSBwcmV2aW91c0FuY2VzdG9yICYmIGlzPEhUTUxMZWdlbmRFbGVtZW50PihwcmV2
aW91c0FuY2VzdG9yKSAmJiBwcmV2aW91c0FuY2VzdG9yID09IGZpZWxkU2V0QW5jZXN0b3IubGVn
ZW5kKCk7CiAgICAgICAgICAgICByZXR1cm4gIWlzSW5GaXJzdExlZ2VuZDsKICAgICAgICAgfQog
ICAgICAgICBwcmV2aW91c0FuY2VzdG9yID0gYW5jZXN0b3I7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uY3BwCmluZGV4IDY4YzFkZWVmMjQ3
NzMyNzMxZjdlMDUzNmEwMzAwNzVkZGYzZjk3ZmYuLjA1MjQ4YWNkMTc4NmIyODFmNmIxZTY0ODkx
YjlmZWRmODcwZDY5MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1D
b250cm9sc0NvbGxlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1D
b250cm9sc0NvbGxlY3Rpb24uY3BwCkBAIC00MCw3ICs0MCw3IEBAIEhUTUxGb3JtQ29udHJvbHND
b2xsZWN0aW9uOjpIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbihDb250YWluZXJOb2RlJiBvd25l
ck5vZGUpCiAgICAgLCBtX2NhY2hlZEVsZW1lbnQobnVsbHB0cikKICAgICAsIG1fY2FjaGVkRWxl
bWVudE9mZnNldEluQXJyYXkoMCkKIHsKLSAgICBBU1NFUlQoaXNIVE1MRm9ybUVsZW1lbnQob3du
ZXJOb2RlKSB8fCBpc0hUTUxGaWVsZFNldEVsZW1lbnQob3duZXJOb2RlKSk7CisgICAgQVNTRVJU
KGlzPEhUTUxGb3JtRWxlbWVudD4ob3duZXJOb2RlKSB8fCBpczxIVE1MRmllbGRTZXRFbGVtZW50
Pihvd25lck5vZGUpKTsKIH0KIAogUGFzc1JlZjxIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbj4g
SFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb246OmNyZWF0ZShDb250YWluZXJOb2RlJiBvd25lck5v
ZGUsIENvbGxlY3Rpb25UeXBlKQpAQCAtNTQsMTUgKzU0LDE1IEBAIEhUTUxGb3JtQ29udHJvbHND
b2xsZWN0aW9uOjp+SFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24oKQogCiBjb25zdCBWZWN0b3I8
Rm9ybUFzc29jaWF0ZWRFbGVtZW50Kj4mIEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uOjpmb3Jt
Q29udHJvbEVsZW1lbnRzKCkgY29uc3QKIHsKLSAgICBBU1NFUlQoaXNIVE1MRm9ybUVsZW1lbnQo
b3duZXJOb2RlKCkpIHx8IG93bmVyTm9kZSgpLmhhc1RhZ05hbWUoZmllbGRzZXRUYWcpKTsKLSAg
ICBpZiAoaXNIVE1MRm9ybUVsZW1lbnQob3duZXJOb2RlKCkpKQorICAgIEFTU0VSVChpczxIVE1M
Rm9ybUVsZW1lbnQ+KG93bmVyTm9kZSgpKSB8fCBpczxIVE1MRmllbGRTZXRFbGVtZW50Pihvd25l
ck5vZGUoKSkpOworICAgIGlmIChpczxIVE1MRm9ybUVsZW1lbnQ+KG93bmVyTm9kZSgpKSkKICAg
ICAgICAgcmV0dXJuIGRvd25jYXN0PEhUTUxGb3JtRWxlbWVudD4ob3duZXJOb2RlKCkpLmFzc29j
aWF0ZWRFbGVtZW50cygpOwogICAgIHJldHVybiBkb3duY2FzdDxIVE1MRmllbGRTZXRFbGVtZW50
Pihvd25lck5vZGUoKSkuYXNzb2NpYXRlZEVsZW1lbnRzKCk7CiB9CiAKIGNvbnN0IFZlY3RvcjxI
VE1MSW1hZ2VFbGVtZW50Kj4mIEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uOjpmb3JtSW1hZ2VF
bGVtZW50cygpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKGlzSFRNTEZvcm1FbGVtZW50KG93bmVyTm9k
ZSgpKSk7CisgICAgQVNTRVJUKGlzPEhUTUxGb3JtRWxlbWVudD4ob3duZXJOb2RlKCkpKTsKICAg
ICByZXR1cm4gZG93bmNhc3Q8SFRNTEZvcm1FbGVtZW50Pihvd25lck5vZGUoKSkuaW1hZ2VFbGVt
ZW50cygpOwogfQogCkBAIC0xMjgsNyArMTI4LDcgQEAgTm9kZSogSFRNTEZvcm1Db250cm9sc0Nv
bGxlY3Rpb246Om5hbWVkSXRlbShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpIGNvbnN0CiAgICAg
Ly8gYXR0cmlidXRlLiBJZiBhIG1hdGNoIGlzIG5vdCBmb3VuZCwgdGhlIG1ldGhvZCB0aGVuIHNl
YXJjaGVzIGZvciBhbgogICAgIC8vIG9iamVjdCB3aXRoIGEgbWF0Y2hpbmcgbmFtZSBhdHRyaWJ1
dGUsIGJ1dCBvbmx5IG9uIHRob3NlIGVsZW1lbnRzCiAgICAgLy8gdGhhdCBhcmUgYWxsb3dlZCBh
IG5hbWUgYXR0cmlidXRlLgotICAgIGNvbnN0IFZlY3RvcjxIVE1MSW1hZ2VFbGVtZW50Kj4qIGlt
YWdlc0VsZW1lbnRzID0gb3duZXJOb2RlKCkuaGFzVGFnTmFtZShmaWVsZHNldFRhZykgPyBudWxs
cHRyIDogJmZvcm1JbWFnZUVsZW1lbnRzKCk7CisgICAgY29uc3QgVmVjdG9yPEhUTUxJbWFnZUVs
ZW1lbnQqPiogaW1hZ2VzRWxlbWVudHMgPSBpczxIVE1MRmllbGRTZXRFbGVtZW50Pihvd25lck5v
ZGUoKSkgPyBudWxscHRyIDogJmZvcm1JbWFnZUVsZW1lbnRzKCk7CiAgICAgaWYgKEhUTUxFbGVt
ZW50KiBpdGVtID0gZmlyc3ROYW1lZEl0ZW0oZm9ybUNvbnRyb2xFbGVtZW50cygpLCBpbWFnZXNF
bGVtZW50cywgaWRBdHRyLCBuYW1lKSkKICAgICAgICAgcmV0dXJuIGl0ZW07CiAKQEAgLTE2MSw3
ICsxNjEsNyBAQCB2b2lkIEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uOjp1cGRhdGVOYW1lZEVs
ZW1lbnRDYWNoZSgpIGNvbnN0CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAoaXNIVE1MRm9y
bUVsZW1lbnQob3duZXJOb2RlKCkpKSB7CisgICAgaWYgKGlzPEhUTUxGb3JtRWxlbWVudD4ob3du
ZXJOb2RlKCkpKSB7CiAgICAgICAgIGNvbnN0IFZlY3RvcjxIVE1MSW1hZ2VFbGVtZW50Kj4mIGlt
YWdlRWxlbWVudHNBcnJheSA9IGZvcm1JbWFnZUVsZW1lbnRzKCk7CiAgICAgICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBpbWFnZUVsZW1lbnRzQXJyYXkuc2l6ZSgpOyArK2kpIHsKICAgICAg
ICAgICAgIEhUTUxJbWFnZUVsZW1lbnQmIGVsZW1lbnQgPSAqaW1hZ2VFbGVtZW50c0FycmF5W2ld
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCmluZGV4IGRjZDJhODg2YTk1
YjkwNDMwMzNhNTM4NThlOTY1YzQ0NWQ0OTQ0OWUuLmVhZmY3MWYxNjdjYzc3OGEzZjcyM2UxNDRi
M2RjZDFiN2NiMjY0ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1F
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAK
QEAgLTExMCw3ICsxMTAsNyBAQCBib29sIEhUTUxGb3JtRWxlbWVudDo6cmVuZGVyZXJJc05lZWRl
ZChjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAg
IC8vIEZJWE1FOiBTaG91bGRuJ3Qgd2UgYWxzbyBjaGVjayBmb3IgdGFibGUgY2FwdGlvbiAoc2Vl
IHxmb3JtSXNUYWJsZVBhcnR8IGJlbG93KS4KLSAgICBib29sIHBhcmVudElzVGFibGVFbGVtZW50
UGFydCA9IChwYXJlbnRSZW5kZXJlci0+aXNUYWJsZSgpICYmIGlzSFRNTFRhYmxlRWxlbWVudChw
YXJlbnQpKQorICAgIGJvb2wgcGFyZW50SXNUYWJsZUVsZW1lbnRQYXJ0ID0gKHBhcmVudFJlbmRl
cmVyLT5pc1RhYmxlKCkgJiYgaXM8SFRNTFRhYmxlRWxlbWVudD4ocGFyZW50KSkKICAgICAgICAg
fHwgKHBhcmVudFJlbmRlcmVyLT5pc1RhYmxlUm93KCkgJiYgcGFyZW50LT5oYXNUYWdOYW1lKHRy
VGFnKSkKICAgICAgICAgfHwgKHBhcmVudFJlbmRlcmVyLT5pc1RhYmxlU2VjdGlvbigpICYmIHBh
cmVudC0+aGFzVGFnTmFtZSh0Ym9keVRhZykpCiAgICAgICAgIHx8IChwYXJlbnRSZW5kZXJlci0+
aXNSZW5kZXJUYWJsZUNvbCgpICYmIHBhcmVudC0+aGFzVGFnTmFtZShjb2xUYWcpKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50QmFzZS5oIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50QmFzZS5oCmluZGV4IDI3OWViZDgyYTg4Y2Y0
MjdkNDM2NTBlMmU1ZWI4YTcxNGFiMmQxMGQuLmI0NzViZDU4YmQzYzJjNGQwMzUzYjlmYWVlMzI1
ZDhhNzY4MDExYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxl
bWVudEJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnRCYXNl
LmgKQEAgLTc3LDggKzc3LDggQEAgcHJpdmF0ZToKIH07CiAKIHZvaWQgaXNIVE1MRnJhbWVFbGVt
ZW50QmFzZShjb25zdCBIVE1MRnJhbWVFbGVtZW50QmFzZSYpOyAvLyBDYXRjaCB1bm5lY2Vzc2Fy
eSBydW50aW1lIGNoZWNrIG9mIHR5cGUga25vd24gYXQgY29tcGlsZSB0aW1lLgotaW5saW5lIGJv
b2wgaXNIVE1MRnJhbWVFbGVtZW50QmFzZShjb25zdCBIVE1MRWxlbWVudCYgZWxlbWVudCkgeyBy
ZXR1cm4gaXNIVE1MRnJhbWVFbGVtZW50KGVsZW1lbnQpIHx8IGlzSFRNTElGcmFtZUVsZW1lbnQo
ZWxlbWVudCk7IH0KLWlubGluZSBib29sIGlzSFRNTEZyYW1lRWxlbWVudEJhc2UoY29uc3QgTm9k
ZSYgbm9kZSkgeyByZXR1cm4gaXNIVE1MRnJhbWVFbGVtZW50KG5vZGUpIHx8IGlzSFRNTElGcmFt
ZUVsZW1lbnQobm9kZSk7IH0KK2lubGluZSBib29sIGlzSFRNTEZyYW1lRWxlbWVudEJhc2UoY29u
c3QgSFRNTEVsZW1lbnQmIGVsZW1lbnQpIHsgcmV0dXJuIGlzPEhUTUxGcmFtZUVsZW1lbnQ+KGVs
ZW1lbnQpIHx8IGlzPEhUTUxJRnJhbWVFbGVtZW50PihlbGVtZW50KTsgfQoraW5saW5lIGJvb2wg
aXNIVE1MRnJhbWVFbGVtZW50QmFzZShjb25zdCBOb2RlJiBub2RlKSB7IHJldHVybiBpczxIVE1M
RnJhbWVFbGVtZW50Pihub2RlKSB8fCBpczxIVE1MSUZyYW1lRWxlbWVudD4obm9kZSk7IH0KIAog
Tk9ERV9UWVBFX0NBU1RTKEhUTUxGcmFtZUVsZW1lbnRCYXNlKQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxJbWFnZUxvYWRlci5jcHAKaW5kZXggMjlmYmNkZThjNmQ5YmQ2NmYzOWRiMmQ0MDA3ZTgx
ZTRlMGZmNzNkOS4uMzBhYTE3MDRiOWQyZjFiMTE3NjVhZWI1MmU1NzdjMmZhODE0MDI4NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VMb2FkZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlTG9hZGVyLmNwcApAQCAtNDksNyArNDksNyBAQCBI
VE1MSW1hZ2VMb2FkZXI6On5IVE1MSW1hZ2VMb2FkZXIoKQogdm9pZCBIVE1MSW1hZ2VMb2FkZXI6
OmRpc3BhdGNoTG9hZEV2ZW50KCkKIHsKICAgICAvLyBIVE1MVmlkZW9FbGVtZW50IHVzZXMgdGhp
cyBjbGFzcyB0byBsb2FkIHRoZSBwb3N0ZXIgaW1hZ2UsIGJ1dCBpdCBzaG91bGQgbm90IGZpcmUg
ZXZlbnRzIGZvciBsb2FkaW5nIG9yIGZhaWx1cmUuCi0gICAgaWYgKGlzSFRNTFZpZGVvRWxlbWVu
dChlbGVtZW50KCkpKQorICAgIGlmIChpczxIVE1MVmlkZW9FbGVtZW50PihlbGVtZW50KCkpKQog
ICAgICAgICByZXR1cm47CiAKICAgICBib29sIGVycm9yT2NjdXJyZWQgPSBpbWFnZSgpLT5lcnJv
ck9jY3VycmVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAppbmRl
eCBlMmQ1NWUzMzUxNDViYTI5OWNiNzIxZjdkOGRhNzdkNmNiZGU2NTFkLi40MzlhMGExY2ZiODdl
ZGQ4ZTI3YjUxOTdlMTZlM2U5ZmVkOWVmYzM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElu
cHV0RWxlbWVudC5jcHAKQEAgLTE1MjEsNyArMTUyMSw3IEBAIEhUTUxEYXRhTGlzdEVsZW1lbnQq
IEhUTUxJbnB1dEVsZW1lbnQ6OmRhdGFMaXN0KCkgY29uc3QKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAKICAgICBFbGVtZW50KiBlbGVtZW50ID0gdHJlZVNjb3BlKCkuZ2V0RWxlbWVudEJ5SWQo
ZmFzdEdldEF0dHJpYnV0ZShsaXN0QXR0cikpOwotICAgIGlmICghZWxlbWVudCB8fCAhaXNIVE1M
RGF0YUxpc3RFbGVtZW50KGVsZW1lbnQpKQorICAgIGlmICghZWxlbWVudCB8fCAhaXM8SFRNTERh
dGFMaXN0RWxlbWVudD4oZWxlbWVudCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAg
cmV0dXJuIGRvd25jYXN0PEhUTUxEYXRhTGlzdEVsZW1lbnQ+KGVsZW1lbnQpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGVnZW5kRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxMZWdlbmRFbGVtZW50LmNwcAppbmRleCAyZmI0ZDI1MGYyNTFiMGZmOTUy
OWY4N2E4ZTg4NzgzMWFkN2VlNDJjLi44ZTljODI5MzFjMjQ0ZDE5OWE4Njc5MzYzN2RmM2QwNjNh
NWFmNjY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMZWdlbmRFbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMZWdlbmRFbGVtZW50LmNwcApAQCAt
NzksNyArNzksNyBAQCBIVE1MRm9ybUVsZW1lbnQqIEhUTUxMZWdlbmRFbGVtZW50Ojp2aXJ0dWFs
Rm9ybSgpIGNvbnN0CiAgICAgLy8gaXRzIHBhcmVudCwgdGhlbiB0aGUgZm9ybSBhdHRyaWJ1dGUg
bXVzdCByZXR1cm4gdGhlIHNhbWUgdmFsdWUgYXMgdGhlCiAgICAgLy8gZm9ybSBhdHRyaWJ1dGUg
b24gdGhhdCBmaWVsZHNldCBlbGVtZW50LiBPdGhlcndpc2UsIGl0IG11c3QgcmV0dXJuIG51bGwu
CiAgICAgQ29udGFpbmVyTm9kZSogZmllbGRzZXQgPSBwYXJlbnROb2RlKCk7Ci0gICAgaWYgKCFm
aWVsZHNldCB8fCAhaXNIVE1MRmllbGRTZXRFbGVtZW50KGZpZWxkc2V0KSkKKyAgICBpZiAoIWZp
ZWxkc2V0IHx8ICFpczxIVE1MRmllbGRTZXRFbGVtZW50PihmaWVsZHNldCkpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogCiAgICAgcmV0dXJuIGRvd25jYXN0PEhUTUxGaWVsZFNldEVsZW1lbnQ+
KCpmaWVsZHNldCkuZm9ybSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5j
cHAKaW5kZXggOWI0MjI5MjJjZmM1NGYzMjk5ZDc2NmY2YjY2NDc1YThhNGJjMTI3MC4uNzRmOTQz
ZTA2MDYxMmVhNWEyMTljODc0ZmJiYWY0MThhMmQyNWIzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC00ODgyLDcgKzQ4ODIsNyBAQCB2b2lkIEhUTUxNZWRp
YUVsZW1lbnQ6OmVudGVyRnVsbHNjcmVlbigpCiAgICAgbV9pc0luVmlkZW9GdWxsc2NyZWVuID0g
dHJ1ZTsKICAgICBpZiAoaGFzTWVkaWFDb250cm9scygpKQogICAgICAgICBtZWRpYUNvbnRyb2xz
KCktPmVudGVyZWRGdWxsc2NyZWVuKCk7Ci0gICAgaWYgKGRvY3VtZW50KCkucGFnZSgpICYmIGlz
SFRNTFZpZGVvRWxlbWVudCh0aGlzKSkgeworICAgIGlmIChkb2N1bWVudCgpLnBhZ2UoKSAmJiBp
czxIVE1MVmlkZW9FbGVtZW50Pih0aGlzKSkgewogICAgICAgICBIVE1MVmlkZW9FbGVtZW50JiBh
c1ZpZGVvID0gZG93bmNhc3Q8SFRNTFZpZGVvRWxlbWVudD4oKnRoaXMpOwogICAgICAgICBpZiAo
ZG9jdW1lbnQoKS5wYWdlKCktPmNocm9tZSgpLmNsaWVudCgpLnN1cHBvcnRzVmlkZW9GdWxsc2Ny
ZWVuKCkpIHsKICAgICAgICAgICAgIGRvY3VtZW50KCkucGFnZSgpLT5jaHJvbWUoKS5jbGllbnQo
KS5lbnRlclZpZGVvRnVsbHNjcmVlbkZvclZpZGVvRWxlbWVudCgmYXNWaWRlbyk7CkBAIC00OTA2
LDcgKzQ5MDYsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmV4aXRGdWxsc2NyZWVuKCkKICAg
ICBtX2lzSW5WaWRlb0Z1bGxzY3JlZW4gPSBmYWxzZTsKICAgICBpZiAoaGFzTWVkaWFDb250cm9s
cygpKQogICAgICAgICBtZWRpYUNvbnRyb2xzKCktPmV4aXRlZEZ1bGxzY3JlZW4oKTsKLSAgICBp
ZiAoZG9jdW1lbnQoKS5wYWdlKCkgJiYgaXNIVE1MVmlkZW9FbGVtZW50KHRoaXMpKSB7CisgICAg
aWYgKGRvY3VtZW50KCkucGFnZSgpICYmIGlzPEhUTUxWaWRlb0VsZW1lbnQ+KHRoaXMpKSB7CiAg
ICAgICAgIGlmIChtX21lZGlhU2Vzc2lvbi0+cmVxdWlyZXNGdWxsc2NyZWVuRm9yVmlkZW9QbGF5
YmFjaygqdGhpcykpCiAgICAgICAgICAgICBwYXVzZUludGVybmFsKCk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE5hbWVDb2xsZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE5hbWVDb2xsZWN0aW9uLmNwcAppbmRleCBhZjNjMzYzNTJhYTM2ODZiYmRm
YWEzNGU1ZDc4YWFkYjNiNTY3MWRmLi4zN2Y1OGMxNGUxY2RjNWQ2MWMyMzU1MmFmZTYxNjY4MGU5
ZmY5ODUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxOYW1lQ29sbGVjdGlv
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTmFtZUNvbGxlY3Rpb24uY3BwCkBA
IC01MSw4ICs1MSw4IEBAIEhUTUxOYW1lQ29sbGVjdGlvbjo6fkhUTUxOYW1lQ29sbGVjdGlvbigp
CiAKIGJvb2wgV2luZG93TmFtZUNvbGxlY3Rpb246OmVsZW1lbnRNYXRjaGVzSWZOYW1lQXR0cmli
dXRlTWF0Y2goY29uc3QgRWxlbWVudCYgZWxlbWVudCkKIHsKLSAgICByZXR1cm4gaXNIVE1MSW1h
Z2VFbGVtZW50KGVsZW1lbnQpIHx8IGlzSFRNTEZvcm1FbGVtZW50KGVsZW1lbnQpIHx8IGVsZW1l
bnQuaGFzVGFnTmFtZShhcHBsZXRUYWcpCi0gICAgICAgIHx8IGVsZW1lbnQuaGFzVGFnTmFtZShl
bWJlZFRhZykgfHwgZWxlbWVudC5oYXNUYWdOYW1lKG9iamVjdFRhZyk7CisgICAgcmV0dXJuIGlz
PEhUTUxJbWFnZUVsZW1lbnQ+KGVsZW1lbnQpIHx8IGlzPEhUTUxGb3JtRWxlbWVudD4oZWxlbWVu
dCkgfHwgaXM8SFRNTEFwcGxldEVsZW1lbnQ+KGVsZW1lbnQpCisgICAgICAgIHx8IGlzPEhUTUxF
bWJlZEVsZW1lbnQ+KGVsZW1lbnQpIHx8IGlzPEhUTUxPYmplY3RFbGVtZW50PihlbGVtZW50KTsK
IH0KIAogYm9vbCBXaW5kb3dOYW1lQ29sbGVjdGlvbjo6ZWxlbWVudE1hdGNoZXMoY29uc3QgRWxl
bWVudCYgZWxlbWVudCwgY29uc3QgQXRvbWljU3RyaW5nSW1wbCogbmFtZSkKQEAgLTgxLDEzICs4
MSwxMyBAQCBib29sIERvY3VtZW50TmFtZUNvbGxlY3Rpb246OmVsZW1lbnRNYXRjaGVzKGNvbnN0
IEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IEF0b21pYwogewogICAgIC8vIEZpbmQgaW1hZ2VzLCBm
b3JtcywgYXBwbGV0cywgZW1iZWRzLCBvYmplY3RzIGFuZCBpZnJhbWVzIGJ5IG5hbWUsIGFwcGxl
dHMgYW5kIG9iamVjdCBieSBpZCwgYW5kIGltYWdlcyBieSBpZAogICAgIC8vIGJ1dCBvbmx5IGlm
IHRoZXkgaGF2ZSBhIG5hbWUgYXR0cmlidXRlICh0aGlzIHZlcnkgc3RyYW5nZSBydWxlIG1hdGNo
ZXMgSUUpCi0gICAgaWYgKGlzSFRNTEZvcm1FbGVtZW50KGVsZW1lbnQpIHx8IGVsZW1lbnQuaGFz
VGFnTmFtZShlbWJlZFRhZykgfHwgZWxlbWVudC5oYXNUYWdOYW1lKGlmcmFtZVRhZykpCisgICAg
aWYgKGlzPEhUTUxGb3JtRWxlbWVudD4oZWxlbWVudCkgfHwgaXM8SFRNTEVtYmVkRWxlbWVudD4o
ZWxlbWVudCkgfHwgaXM8SFRNTElGcmFtZUVsZW1lbnQ+KGVsZW1lbnQpKQogICAgICAgICByZXR1
cm4gZWxlbWVudC5nZXROYW1lQXR0cmlidXRlKCkuaW1wbCgpID09IG5hbWU7Ci0gICAgaWYgKGVs
ZW1lbnQuaGFzVGFnTmFtZShhcHBsZXRUYWcpKQorICAgIGlmIChpczxIVE1MQXBwbGV0RWxlbWVu
dD4oZWxlbWVudCkpCiAgICAgICAgIHJldHVybiBlbGVtZW50LmdldE5hbWVBdHRyaWJ1dGUoKS5p
bXBsKCkgPT0gbmFtZSB8fCBlbGVtZW50LmdldElkQXR0cmlidXRlKCkuaW1wbCgpID09IG5hbWU7
CiAgICAgaWYgKGlzPEhUTUxPYmplY3RFbGVtZW50PihlbGVtZW50KSkKICAgICAgICAgcmV0dXJu
IChlbGVtZW50LmdldE5hbWVBdHRyaWJ1dGUoKS5pbXBsKCkgPT0gbmFtZSB8fCBlbGVtZW50Lmdl
dElkQXR0cmlidXRlKCkuaW1wbCgpID09IG5hbWUpICYmIGRvd25jYXN0PEhUTUxPYmplY3RFbGVt
ZW50PihlbGVtZW50KS5pc0RvY05hbWVkSXRlbSgpOwotICAgIGlmIChpc0hUTUxJbWFnZUVsZW1l
bnQoZWxlbWVudCkpCisgICAgaWYgKGlzPEhUTUxJbWFnZUVsZW1lbnQ+KGVsZW1lbnQpKQogICAg
ICAgICByZXR1cm4gZWxlbWVudC5nZXROYW1lQXR0cmlidXRlKCkuaW1wbCgpID09IG5hbWUgfHwg
KGVsZW1lbnQuZ2V0SWRBdHRyaWJ1dGUoKS5pbXBsKCkgPT0gbmFtZSAmJiBlbGVtZW50Lmhhc05h
bWUoKSk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MT3B0aW9uRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRp
b25FbGVtZW50LmNwcAppbmRleCBjZTY1MTI3YzU4ZjhhY2E2MmE2NWYxNzcyMzg0ODQyZjZjZTNj
ZDI4Li4zYzM3NzA4YWVlMjViOTlkOTBlNWNiMTA3YWFhYzQ3NmZiMjIwOTNlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25FbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxPcHRpb25FbGVtZW50LmNwcApAQCAtMjU3LDcgKzI1Nyw3IEBAIHZv
aWQgSFRNTE9wdGlvbkVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChjb25zdCBDaGlsZENoYW5nZSYg
Y2hhbmdlKQogSFRNTERhdGFMaXN0RWxlbWVudCogSFRNTE9wdGlvbkVsZW1lbnQ6Om93bmVyRGF0
YUxpc3RFbGVtZW50KCkgY29uc3QKIHsKICAgICBmb3IgKENvbnRhaW5lck5vZGUqIHBhcmVudCA9
IHBhcmVudE5vZGUoKTsgcGFyZW50IDsgcGFyZW50ID0gcGFyZW50LT5wYXJlbnROb2RlKCkpIHsK
LSAgICAgICAgaWYgKGlzSFRNTERhdGFMaXN0RWxlbWVudChwYXJlbnQpKQorICAgICAgICBpZiAo
aXM8SFRNTERhdGFMaXN0RWxlbWVudD4ocGFyZW50KSkKICAgICAgICAgICAgIHJldHVybiBkb3du
Y2FzdDxIVE1MRGF0YUxpc3RFbGVtZW50PihwYXJlbnQpOwogICAgIH0KICAgICByZXR1cm4gbnVs
bHB0cjsKQEAgLTMwMiw3ICszMDIsNyBAQCB2b2lkIEhUTUxPcHRpb25FbGVtZW50Ojp3aWxsUmVz
ZXRDb21wdXRlZFN0eWxlKCkKIFN0cmluZyBIVE1MT3B0aW9uRWxlbWVudDo6dGV4dEluZGVudGVk
VG9SZXNwZWN0R3JvdXBMYWJlbCgpIGNvbnN0CiB7CiAgICAgQ29udGFpbmVyTm9kZSogcGFyZW50
ID0gcGFyZW50Tm9kZSgpOwotICAgIGlmIChwYXJlbnQgJiYgaXNIVE1MT3B0R3JvdXBFbGVtZW50
KHBhcmVudCkpCisgICAgaWYgKHBhcmVudCAmJiBpczxIVE1MT3B0R3JvdXBFbGVtZW50PihwYXJl
bnQpKQogICAgICAgICByZXR1cm4gIiAgICAiICsgdGV4dCgpOwogICAgIHJldHVybiB0ZXh0KCk7
CiB9CkBAIC0zMTYsNyArMzE2LDcgQEAgYm9vbCBIVE1MT3B0aW9uRWxlbWVudDo6aXNEaXNhYmxl
ZEZvcm1Db250cm9sKCkgY29uc3QKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgSFRNTEVs
ZW1lbnQmIHBhcmVudEVsZW1lbnQgPSB0b0hUTUxFbGVtZW50KCpwYXJlbnROb2RlKCkpOwotICAg
IHJldHVybiBpc0hUTUxPcHRHcm91cEVsZW1lbnQocGFyZW50RWxlbWVudCkgJiYgcGFyZW50RWxl
bWVudC5pc0Rpc2FibGVkRm9ybUNvbnRyb2woKTsKKyAgICByZXR1cm4gaXM8SFRNTE9wdEdyb3Vw
RWxlbWVudD4ocGFyZW50RWxlbWVudCkgJiYgcGFyZW50RWxlbWVudC5pc0Rpc2FibGVkRm9ybUNv
bnRyb2woKTsKIH0KIAogTm9kZTo6SW5zZXJ0aW9uTm90aWZpY2F0aW9uUmVxdWVzdCBIVE1MT3B0
aW9uRWxlbWVudDo6aW5zZXJ0ZWRJbnRvKENvbnRhaW5lck5vZGUmIGluc2VydGlvblBvaW50KQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmNwcAppbmRleCBjOTYzMjYyNDUw
MDZiOGI3MDYwZTE4MGZjZmMwOWUyNWEwZWEyZGJlLi41ZDMyZTM4NmY0MTA1Y2YyMWJiYzM0NGUz
YTY3MmZiNTc2MjJmZDQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxl
Y3RFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50
LmNwcApAQCAtNzkwLDcgKzc5MCw3IEBAIHZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6OnJlY2FsY0xp
c3RJdGVtcyhib29sIHVwZGF0ZVNlbGVjdGVkU3RhdGVzKSBjb25zdAogICAgICAgICAvLyBvcHRn
cm91cCB0YWdzIG1heSBub3QgbmVzdC4gSG93ZXZlciwgYm90aCBGaXJlRm94IGFuZCBJRSB3aWxs
CiAgICAgICAgIC8vIGZsYXR0ZW4gdGhlIHRyZWUgYXV0b21hdGljYWxseSwgc28gd2UgZm9sbG93
IHN1aXQuCiAgICAgICAgIC8vIChodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNDAxL2ludGVyYWN0
L2Zvcm1zLmh0bWwjaC0xNy42KQotICAgICAgICBpZiAoaXNIVE1MT3B0R3JvdXBFbGVtZW50KGN1
cnJlbnQpKSB7CisgICAgICAgIGlmIChpczxIVE1MT3B0R3JvdXBFbGVtZW50PihjdXJyZW50KSkg
ewogICAgICAgICAgICAgbV9saXN0SXRlbXMuYXBwZW5kKGN1cnJlbnQpOwogICAgICAgICAgICAg
aWYgKEVsZW1lbnQqIG5leHRFbGVtZW50ID0gRWxlbWVudFRyYXZlcnNhbDo6Zmlyc3RXaXRoaW4o
Y3VycmVudCkpIHsKICAgICAgICAgICAgICAgICBjdXJyZW50RWxlbWVudCA9IG5leHRFbGVtZW50
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVFbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlRWxlbWVudC5jcHAKaW5kZXggYWI3MDFmMzI0
Y2YyNmVjNDJlZTYxZWJkOTA5ZTk3N2JmMjE5ZWExNy4uNjI4NGNlY2RhNzA2ZTgzZGY2ZDZiNTEz
MWFlMTE3YjRlNTA4ODMwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFi
bGVFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUVsZW1lbnQu
Y3BwCkBAIC03MCw3ICs3MCw3IEBAIFBhc3NSZWZQdHI8SFRNTFRhYmxlRWxlbWVudD4gSFRNTFRh
YmxlRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hCiBIVE1MVGFibGVD
YXB0aW9uRWxlbWVudCogSFRNTFRhYmxlRWxlbWVudDo6Y2FwdGlvbigpIGNvbnN0CiB7CiAgICAg
Zm9yIChOb2RlKiBjaGlsZCA9IGZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5l
eHRTaWJsaW5nKCkpIHsKLSAgICAgICAgaWYgKGlzSFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQoY2hp
bGQpKQorICAgICAgICBpZiAoaXM8SFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQ+KGNoaWxkKSkKICAg
ICAgICAgICAgIHJldHVybiBkb3duY2FzdDxIVE1MVGFibGVDYXB0aW9uRWxlbWVudD4oY2hpbGQp
OwogICAgIH0KICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFRhYmxlUGFydEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
VGFibGVQYXJ0RWxlbWVudC5jcHAKaW5kZXggZjUxMDgyNGVkYmE1YWFhN2RlMDQ0NjM3ZWJkM2Y0
NTUwMDk3NzQ5NC4uYmJkZDg0YmMzN2JhMjhiOGNlODRiYjI1YjRiMzE4YTQ2NDZlNjRkZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVQYXJ0RWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVQYXJ0RWxlbWVudC5jcHAKQEAgLTg2LDcg
Kzg2LDcgQEAgdm9pZCBIVE1MVGFibGVQYXJ0RWxlbWVudDo6Y29sbGVjdFN0eWxlRm9yUHJlc2Vu
dGF0aW9uQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE4KIEhUTUxUYWJsZUVsZW1lbnQqIEhUTUxU
YWJsZVBhcnRFbGVtZW50OjpmaW5kUGFyZW50VGFibGUoKSBjb25zdAogewogICAgIENvbnRhaW5l
ck5vZGUqIHBhcmVudCA9IHBhcmVudE5vZGUoKTsKLSAgICB3aGlsZSAocGFyZW50ICYmICFpc0hU
TUxUYWJsZUVsZW1lbnQocGFyZW50KSkKKyAgICB3aGlsZSAocGFyZW50ICYmICFpczxIVE1MVGFi
bGVFbGVtZW50PihwYXJlbnQpKQogICAgICAgICBwYXJlbnQgPSBwYXJlbnQtPnBhcmVudE5vZGUo
KTsKICAgICByZXR1cm4gZG93bmNhc3Q8SFRNTFRhYmxlRWxlbWVudD4ocGFyZW50KTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlUm93RWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZVJvd0VsZW1lbnQuY3BwCmluZGV4IDQ3ZmYzM2Jk
NzUzZGI0OTNlNjk0NTkzY2I2NTA3YjM0MjM3OGI0NTguLjFmZjY3MWMyNTQyNWU3NWViZGJlZjM1
YWIxNTk3Y2U0M2UzNGE5ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRh
YmxlUm93RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVSb3dF
bGVtZW50LmNwcApAQCAtNjAsNyArNjAsNyBAQCBpbnQgSFRNTFRhYmxlUm93RWxlbWVudDo6cm93
SW5kZXgoKSBjb25zdAogICAgIGlmICghdGFibGUpCiAgICAgICAgIHJldHVybiAtMTsKICAgICB0
YWJsZSA9IHRhYmxlLT5wYXJlbnROb2RlKCk7Ci0gICAgaWYgKCF0YWJsZSB8fCAhaXNIVE1MVGFi
bGVFbGVtZW50KHRhYmxlKSkKKyAgICBpZiAoIXRhYmxlIHx8ICFpczxIVE1MVGFibGVFbGVtZW50
Pih0YWJsZSkpCiAgICAgICAgIHJldHVybiAtMTsKIAogICAgIC8vIFRvIG1hdGNoIEZpcmVmb3gs
IHRoZSByb3cgaW5kaWNlcyB3b3JrIGxpa2UgdGhpczoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFRhYmxlUm93c0NvbGxlY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MVGFibGVSb3dzQ29sbGVjdGlvbi5jcHAKaW5kZXggMDRhOTYwNDM2ZTEwNTc2MTg0Mzk3
ZDg5NmEzMTY1ZDU4OWMxYzEzOS4uM2FkMjJhNTQ2NTgyOTIyNTM4NzdiYmM1MmRmZWYzNjFjYTg0
ZjFmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVSb3dzQ29sbGVj
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVSb3dzQ29sbGVjdGlv
bi5jcHAKQEAgLTk3LDcgKzk3LDcgQEAgSFRNTFRhYmxlUm93RWxlbWVudCogSFRNTFRhYmxlUm93
c0NvbGxlY3Rpb246OnJvd0FmdGVyKEhUTUxUYWJsZUVsZW1lbnQqIHRhYmxlLAogICAgIGVsc2Ug
aWYgKGlzSW5TZWN0aW9uKCpwcmV2aW91cywgdGJvZHlUYWcpKQogICAgICAgICBjaGlsZCA9IEVs
ZW1lbnRUcmF2ZXJzYWw6Om5leHRTaWJsaW5nKHByZXZpb3VzLT5wYXJlbnROb2RlKCkpOwogICAg
IGZvciAoOyBjaGlsZDsgY2hpbGQgPSBFbGVtZW50VHJhdmVyc2FsOjpuZXh0U2libGluZyhjaGls
ZCkpIHsKLSAgICAgICAgaWYgKGlzSFRNTFRhYmxlUm93RWxlbWVudChjaGlsZCkpCisgICAgICAg
IGlmIChpczxIVE1MVGFibGVSb3dFbGVtZW50PihjaGlsZCkpCiAgICAgICAgICAgICByZXR1cm4g
ZG93bmNhc3Q8SFRNTFRhYmxlUm93RWxlbWVudD4oY2hpbGQpOwogICAgICAgICBpZiAoY2hpbGQt
Pmhhc1RhZ05hbWUodGJvZHlUYWcpKSB7CiAgICAgICAgICAgICBpZiAoYXV0byByb3cgPSBjaGls
ZHJlbk9mVHlwZTxIVE1MVGFibGVSb3dFbGVtZW50PigqY2hpbGQpLmZpcnN0KCkpCkBAIC0xMzAs
NyArMTMwLDcgQEAgSFRNTFRhYmxlUm93RWxlbWVudCogSFRNTFRhYmxlUm93c0NvbGxlY3Rpb246
Omxhc3RSb3coSFRNTFRhYmxlRWxlbWVudCogdGFibGUpCiAgICAgfQogCiAgICAgZm9yIChhdXRv
KiBjaGlsZCA9IEVsZW1lbnRUcmF2ZXJzYWw6Omxhc3RDaGlsZCh0YWJsZSk7IGNoaWxkOyBjaGls
ZCA9IEVsZW1lbnRUcmF2ZXJzYWw6OnByZXZpb3VzU2libGluZyhjaGlsZCkpIHsKLSAgICAgICAg
aWYgKGlzSFRNTFRhYmxlUm93RWxlbWVudChjaGlsZCkpCisgICAgICAgIGlmIChpczxIVE1MVGFi
bGVSb3dFbGVtZW50PihjaGlsZCkpCiAgICAgICAgICAgICByZXR1cm4gZG93bmNhc3Q8SFRNTFRh
YmxlUm93RWxlbWVudD4oY2hpbGQpOwogICAgICAgICBpZiAoY2hpbGQtPmhhc1RhZ05hbWUodGJv
ZHlUYWcpKSB7CiAgICAgICAgICAgICBpZiAoYXV0byogcm93ID0gY2hpbGRyZW5PZlR5cGU8SFRN
TFRhYmxlUm93RWxlbWVudD4oKmNoaWxkKS5sYXN0KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxUYWdOYW1lcy5pbiBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhZ05h
bWVzLmluCmluZGV4IDEyYTVjMGY3NzU1OTljOTBkMGMzODYxMDBlODU1ODM0NWQzYTUwOWUuLmJh
ZDRlMWE3NjUzODZiYTRiZDdiMzIyNGIzYjAzZjc5ZTQ0NjYwMzQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFRhZ05hbWVzLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFRhZ05hbWVzLmluCkBAIC02MCw3ICs2MCw3IEBAIGg2IGludGVyZmFjZU5hbWU9SFRNTEhl
YWRpbmdFbGVtZW50CiBoZWFkIGdlbmVyYXRlVHlwZUhlbHBlcnMKIGhlYWRlciBpbnRlcmZhY2VO
YW1lPUhUTUxFbGVtZW50CiBoZ3JvdXAgaW50ZXJmYWNlTmFtZT1IVE1MRWxlbWVudAotaHIgaW50
ZXJmYWNlTmFtZT1IVE1MSFJFbGVtZW50CitociBpbnRlcmZhY2VOYW1lPUhUTUxIUkVsZW1lbnQs
IGdlbmVyYXRlVHlwZUhlbHBlcnMKIGh0bWwgZ2VuZXJhdGVUeXBlSGVscGVycwogaSBpbnRlcmZh
Y2VOYW1lPUhUTUxFbGVtZW50CiBpZnJhbWUgaW50ZXJmYWNlTmFtZT1IVE1MSUZyYW1lRWxlbWVu
dCwgZ2VuZXJhdGVUeXBlSGVscGVycwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9M
YWJlbHNOb2RlTGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0xhYmVsc05vZGVMaXN0LmNw
cAppbmRleCA4YzI5NjIwNjBmMmJkMDhlZGE2NzhiMGEwYjE0Y2VhYTRhNDU0NDlhLi4xMWNmMDdi
YTljNTMwYTg2ZjJiNmQ2NDY3ODUxYTZlMmE3NDJlYTk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0xhYmVsc05vZGVMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0xh
YmVsc05vZGVMaXN0LmNwcApAQCAtNDUsNyArNDUsNyBAQCBMYWJlbHNOb2RlTGlzdDo6fkxhYmVs
c05vZGVMaXN0KCkKICAgICAKIGJvb2wgTGFiZWxzTm9kZUxpc3Q6OmVsZW1lbnRNYXRjaGVzKEVs
ZW1lbnQmIHRlc3ROb2RlKSBjb25zdAogewotICAgIHJldHVybiBpc0hUTUxMYWJlbEVsZW1lbnQo
dGVzdE5vZGUpICYmIGRvd25jYXN0PEhUTUxMYWJlbEVsZW1lbnQ+KHRlc3ROb2RlKS5jb250cm9s
KCkgPT0gJm93bmVyTm9kZSgpOworICAgIHJldHVybiBpczxIVE1MTGFiZWxFbGVtZW50Pih0ZXN0
Tm9kZSkgJiYgZG93bmNhc3Q8SFRNTExhYmVsRWxlbWVudD4odGVzdE5vZGUpLmNvbnRyb2woKSA9
PSAmb3duZXJOb2RlKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFEb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL01lZGlhRG9jdW1lbnQuY3BwCmluZGV4IDBjMjViM2JmYmRlMjYxZmQwMmE2YWU0OTg2NGQ1
NTFhMjFhZjU4ZjkuLjk1YWZkOTI0Y2NiYzEyYjhlNDdkNmFhNmE3MGUzYmJiZDdlNDdkN2YgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFEb2N1bWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9NZWRpYURvY3VtZW50LmNwcApAQCAtMTYwLDcgKzE2MCw3IEBAIFBh
c3NSZWZQdHI8RG9jdW1lbnRQYXJzZXI+IE1lZGlhRG9jdW1lbnQ6OmNyZWF0ZVBhcnNlcigpCiAK
IHN0YXRpYyBpbmxpbmUgSFRNTFZpZGVvRWxlbWVudCogZGVzY2VuZGVudFZpZGVvRWxlbWVudChD
b250YWluZXJOb2RlJiBub2RlKQogewotICAgIGlmIChpc0hUTUxWaWRlb0VsZW1lbnQobm9kZSkp
CisgICAgaWYgKGlzPEhUTUxWaWRlb0VsZW1lbnQ+KG5vZGUpKQogICAgICAgICByZXR1cm4gZG93
bmNhc3Q8SFRNTFZpZGVvRWxlbWVudD4oJm5vZGUpOwogCiAgICAgUmVmUHRyPE5vZGVMaXN0PiBu
b2RlTGlzdCA9IG5vZGUuZ2V0RWxlbWVudHNCeVRhZ05hbWVOUyh2aWRlb1RhZy5uYW1lc3BhY2VV
UkkoKSwgdmlkZW9UYWcubG9jYWxOYW1lKCkpOwpAQCAtMTczLDcgKzE3Myw3IEBAIHN0YXRpYyBp
bmxpbmUgSFRNTFZpZGVvRWxlbWVudCogZGVzY2VuZGVudFZpZGVvRWxlbWVudChDb250YWluZXJO
b2RlJiBub2RlKQogCiBzdGF0aWMgaW5saW5lIEhUTUxWaWRlb0VsZW1lbnQqIGFuY2VzdG9yVmlk
ZW9FbGVtZW50KE5vZGUqIG5vZGUpCiB7Ci0gICAgd2hpbGUgKG5vZGUgJiYgIWlzSFRNTFZpZGVv
RWxlbWVudChub2RlKSkKKyAgICB3aGlsZSAobm9kZSAmJiAhaXM8SFRNTFZpZGVvRWxlbWVudD4o
bm9kZSkpCiAgICAgICAgIG5vZGUgPSBub2RlLT5wYXJlbnRPclNoYWRvd0hvc3ROb2RlKCk7CiAK
ICAgICByZXR1cm4gZG93bmNhc3Q8SFRNTFZpZGVvRWxlbWVudD4obm9kZSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL1JhZGlvSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvUmFkaW9JbnB1dFR5cGUuY3BwCmluZGV4IDhhNWU4ODUxMGUxNmI5ZGZmYjNlNDZlODY1
ODBjYzA0MTBlODU3NjAuLjVmNWVjNzU0MmJkMTgyODBlN2RmZTU2NTE0ODFlYTVjYjE0NDE1MmIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFkaW9JbnB1dFR5cGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFkaW9JbnB1dFR5cGUuY3BwCkBAIC04MSw3ICs4MSw3IEBA
IHZvaWQgUmFkaW9JbnB1dFR5cGU6OmhhbmRsZUtleWRvd25FdmVudChLZXlib2FyZEV2ZW50KiBl
dmVudCkKICAgICBOb2RlKiBub2RlID0gJmVsZW1lbnQoKTsKICAgICB3aGlsZSAoKG5vZGUgPSAo
Zm9yd2FyZCA/IE5vZGVUcmF2ZXJzYWw6Om5leHQobm9kZSkgOiBOb2RlVHJhdmVyc2FsOjpwcmV2
aW91cyhub2RlKSkpKSB7CiAgICAgICAgIC8vIE9uY2Ugd2UgZW5jb3VudGVyIGEgZm9ybSBlbGVt
ZW50LCB3ZSBrbm93IHdlJ3JlIHRocm91Z2guCi0gICAgICAgIGlmIChpc0hUTUxGb3JtRWxlbWVu
dChub2RlKSkKKyAgICAgICAgaWYgKGlzPEhUTUxGb3JtRWxlbWVudD4obm9kZSkpCiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgLy8gTG9vayBmb3IgbW9yZSByYWRpbyBidXR0b25zLgogICAg
ICAgICBpZiAoIWlzPEhUTUxJbnB1dEVsZW1lbnQ+KG5vZGUpKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9SYWRpb05vZGVMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFk
aW9Ob2RlTGlzdC5jcHAKaW5kZXggOGQ0NjkyMTFkNmUxMWM5ODFiYmJjM2Y4NDUxN2YwZjI4NDlm
MGQ3My4uNWU0MDI1ZWNjMDhkNTM2OTMwMzNkMzA3ZmQyNWZkYTMyNmRlNjI0MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9SYWRpb05vZGVMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL1JhZGlvTm9kZUxpc3QuY3BwCkBAIC00MSw3ICs0MSw3IEBAIHVzaW5nIG5hbWVz
cGFjZSBIVE1MTmFtZXM7CiBSYWRpb05vZGVMaXN0OjpSYWRpb05vZGVMaXN0KENvbnRhaW5lck5v
ZGUmIHJvb3ROb2RlLCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpCiAgICAgOiBDYWNoZWRMaXZl
Tm9kZUxpc3Qocm9vdE5vZGUsIEludmFsaWRhdGVGb3JGb3JtQ29udHJvbHMpCiAgICAgLCBtX25h
bWUobmFtZSkKLSAgICAsIG1faXNSb290ZWRBdERvY3VtZW50KGlzSFRNTEZvcm1FbGVtZW50KG93
bmVyTm9kZSgpKSkKKyAgICAsIG1faXNSb290ZWRBdERvY3VtZW50KGlzPEhUTUxGb3JtRWxlbWVu
dD4ob3duZXJOb2RlKCkpKQogewogfQogCkBAIC04Niw3ICs4Niw3IEBAIHZvaWQgUmFkaW9Ob2Rl
TGlzdDo6c2V0VmFsdWUoY29uc3QgU3RyaW5nJiB2YWx1ZSkKIGJvb2wgUmFkaW9Ob2RlTGlzdDo6
Y2hlY2tFbGVtZW50TWF0Y2hlc1JhZGlvTm9kZUxpc3RGaWx0ZXIoY29uc3QgRWxlbWVudCYgdGVz
dEVsZW1lbnQpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGlzPEhUTUxPYmplY3RFbGVtZW50Pih0ZXN0
RWxlbWVudCkgfHwgaXM8SFRNTEZvcm1Db250cm9sRWxlbWVudD4odGVzdEVsZW1lbnQpKTsKLSAg
ICBpZiAoaXNIVE1MRm9ybUVsZW1lbnQob3duZXJOb2RlKCkpKSB7CisgICAgaWYgKGlzPEhUTUxG
b3JtRWxlbWVudD4ob3duZXJOb2RlKCkpKSB7CiAgICAgICAgIEhUTUxGb3JtRWxlbWVudCogZm9y
bUVsZW1lbnQgPSBudWxscHRyOwogICAgICAgICBpZiAodGVzdEVsZW1lbnQuaGFzVGFnTmFtZShv
YmplY3RUYWcpKQogICAgICAgICAgICAgZm9ybUVsZW1lbnQgPSBkb3duY2FzdDxIVE1MT2JqZWN0
RWxlbWVudD4odGVzdEVsZW1lbnQpLmZvcm0oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNwcAppbmRleCBiNzhkZTYwYjQyN2JiZGUy
ZWI2YzJmNTEzZDllNGJkNThmNjBmNTIyLi45MDM5NmZmZmI1ODI3Zjk0YTU3OWMyMmM1NzIxOWEx
ZTgwZDJlOWVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MQ29u
c3RydWN0aW9uU2l0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTENv
bnN0cnVjdGlvblNpdGUuY3BwCkBAIC02Miw3ICs2Miw3IEBAIHN0YXRpYyBib29sIGhhc0ltcGxp
ZWRFbmRUYWcoY29uc3QgSFRNTFN0YWNrSXRlbSogaXRlbSkKICAgICAgICAgfHwgaXRlbS0+aGFz
VGFnTmFtZShkdFRhZykKICAgICAgICAgfHwgaXRlbS0+aGFzVGFnTmFtZShsaVRhZykKICAgICAg
ICAgfHwgaXM8SFRNTE9wdGlvbkVsZW1lbnQ+KGl0ZW0tPm5vZGUoKSkKLSAgICAgICAgfHwgaXNI
VE1MT3B0R3JvdXBFbGVtZW50KGl0ZW0tPm5vZGUoKSkKKyAgICAgICAgfHwgaXM8SFRNTE9wdEdy
b3VwRWxlbWVudD4oaXRlbS0+bm9kZSgpKQogICAgICAgICB8fCBpdGVtLT5oYXNUYWdOYW1lKHBU
YWcpCiAgICAgICAgIHx8IGl0ZW0tPmhhc1RhZ05hbWUocmJUYWcpCiAgICAgICAgIHx8IGl0ZW0t
Pmhhc1RhZ05hbWUocnBUYWcpCkBAIC04NSw3ICs4NSw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBp
c0FsbFdoaXRlc3BhY2UoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiBzdGF0aWMgaW5saW5lIHZvaWQg
aW5zZXJ0KEhUTUxDb25zdHJ1Y3Rpb25TaXRlVGFzayYgdGFzaykKIHsKICNpZiBFTkFCTEUoVEVN
UExBVEVfRUxFTUVOVCkKLSAgICBpZiAoaXNIVE1MVGVtcGxhdGVFbGVtZW50KCp0YXNrLnBhcmVu
dCkpCisgICAgaWYgKGlzPEhUTUxUZW1wbGF0ZUVsZW1lbnQ+KCp0YXNrLnBhcmVudCkpCiAgICAg
ICAgIHRhc2sucGFyZW50ID0gZG93bmNhc3Q8SFRNTFRlbXBsYXRlRWxlbWVudD4oKnRhc2sucGFy
ZW50KS5jb250ZW50KCk7CiAjZW5kaWYKIApAQCAtNDU4LDcgKzQ1OCw3IEBAIHZvaWQgSFRNTENv
bnN0cnVjdGlvblNpdGU6Omluc2VydEhUTUxCb2R5RWxlbWVudChBdG9taWNIVE1MVG9rZW4qIHRv
a2VuKQogdm9pZCBIVE1MQ29uc3RydWN0aW9uU2l0ZTo6aW5zZXJ0SFRNTEZvcm1FbGVtZW50KEF0
b21pY0hUTUxUb2tlbiogdG9rZW4sIGJvb2wgaXNEZW1vdGVkKQogewogICAgIFJlZlB0cjxFbGVt
ZW50PiBlbGVtZW50ID0gY3JlYXRlSFRNTEVsZW1lbnQodG9rZW4pOwotICAgIEFTU0VSVChpc0hU
TUxGb3JtRWxlbWVudChlbGVtZW50LmdldCgpKSk7CisgICAgQVNTRVJUKGlzPEhUTUxGb3JtRWxl
bWVudD4oZWxlbWVudC5nZXQoKSkpOwogICAgIFJlZlB0cjxIVE1MRm9ybUVsZW1lbnQ+IGZvcm0g
PSBzdGF0aWNfcG9pbnRlcl9jYXN0PEhUTUxGb3JtRWxlbWVudD4oZWxlbWVudC5yZWxlYXNlKCkp
OwogICAgIGlmICghaW5zaWRlVGVtcGxhdGVFbGVtZW50KCkpCiAgICAgICAgIG1fZm9ybSA9IGZv
cm07CkBAIC01MzEsNyArNTMxLDcgQEAgdm9pZCBIVE1MQ29uc3RydWN0aW9uU2l0ZTo6aW5zZXJ0
VGV4dE5vZGUoY29uc3QgU3RyaW5nJiBjaGFyYWN0ZXJzLCBXaGl0ZXNwYWNlTW8KICAgICAgICAg
ZmluZEZvc3RlclNpdGUodGFzayk7CiAKICNpZiBFTkFCTEUoVEVNUExBVEVfRUxFTUVOVCkKLSAg
ICBpZiAoaXNIVE1MVGVtcGxhdGVFbGVtZW50KCp0YXNrLnBhcmVudCkpCisgICAgaWYgKGlzPEhU
TUxUZW1wbGF0ZUVsZW1lbnQ+KCp0YXNrLnBhcmVudCkpCiAgICAgICAgIHRhc2sucGFyZW50ID0g
ZG93bmNhc3Q8SFRNTFRlbXBsYXRlRWxlbWVudD4oKnRhc2sucGFyZW50KS5jb250ZW50KCk7CiAj
ZW5kaWYKIApAQCAtNjE4LDcgKzYxOCw3IEBAIFBhc3NSZWZQdHI8RWxlbWVudD4gSFRNTENvbnN0
cnVjdGlvblNpdGU6OmNyZWF0ZUVsZW1lbnQoQXRvbWljSFRNTFRva2VuKiB0b2tlbiwKIGlubGlu
ZSBEb2N1bWVudCYgSFRNTENvbnN0cnVjdGlvblNpdGU6Om93bmVyRG9jdW1lbnRGb3JDdXJyZW50
Tm9kZSgpCiB7CiAjaWYgRU5BQkxFKFRFTVBMQVRFX0VMRU1FTlQpCi0gICAgaWYgKGlzSFRNTFRl
bXBsYXRlRWxlbWVudChjdXJyZW50Tm9kZSgpKSkKKyAgICBpZiAoaXM8SFRNTFRlbXBsYXRlRWxl
bWVudD4oY3VycmVudE5vZGUoKSkpCiAgICAgICAgIHJldHVybiBkb3duY2FzdDxIVE1MVGVtcGxh
dGVFbGVtZW50PigqY3VycmVudEVsZW1lbnQoKSkuY29udGVudCgpLT5kb2N1bWVudCgpOwogI2Vu
ZGlmCiAgICAgcmV0dXJuIGN1cnJlbnROb2RlKCktPmRvY3VtZW50KCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRWxlbWVudFN0YWNrLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxFbGVtZW50U3RhY2suY3BwCmluZGV4IGFkYTIwY2RhYTMy
MzMyNjdlYzQ5ZmY4MzgxZTcwMDJhNTQ0NzdlMzUuLmNkNmEyMDEwZmQxN2U2NDA1ZDhiM2IwZDQy
NTczODBiMDk5NDljYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hU
TUxFbGVtZW50U3RhY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxF
bGVtZW50U3RhY2suY3BwCkBAIC01MSw3ICs1MSw3IEBAIGlubGluZSBib29sIGlzU2NvcGVNYXJr
ZXIoSFRNTFN0YWNrSXRlbSogaXRlbSkKICAgICAgICAgfHwgaXRlbS0+aGFzVGFnTmFtZShjYXB0
aW9uVGFnKQogICAgICAgICB8fCBpdGVtLT5oYXNUYWdOYW1lKG1hcnF1ZWVUYWcpCiAgICAgICAg
IHx8IGl0ZW0tPmhhc1RhZ05hbWUob2JqZWN0VGFnKQotICAgICAgICB8fCBpc0hUTUxUYWJsZUVs
ZW1lbnQoaXRlbS0+bm9kZSgpKQorICAgICAgICB8fCBpczxIVE1MVGFibGVFbGVtZW50PihpdGVt
LT5ub2RlKCkpCiAgICAgICAgIHx8IGl0ZW0tPmhhc1RhZ05hbWUodGRUYWcpCiAgICAgICAgIHx8
IGl0ZW0tPmhhc1RhZ05hbWUodGhUYWcpCiAgICAgICAgIHx8IGl0ZW0tPmhhc1RhZ05hbWUoTWF0
aE1MTmFtZXM6Om1pVGFnKQpAQCAtNzgsNyArNzgsNyBAQCBpbmxpbmUgYm9vbCBpc0xpc3RJdGVt
U2NvcGVNYXJrZXIoSFRNTFN0YWNrSXRlbSogaXRlbSkKIAogaW5saW5lIGJvb2wgaXNUYWJsZVNj
b3BlTWFya2VyKEhUTUxTdGFja0l0ZW0qIGl0ZW0pCiB7Ci0gICAgcmV0dXJuIGlzSFRNTFRhYmxl
RWxlbWVudChpdGVtLT5ub2RlKCkpCisgICAgcmV0dXJuIGlzPEhUTUxUYWJsZUVsZW1lbnQ+KGl0
ZW0tPm5vZGUoKSkKICNpZiBFTkFCTEUoVEVNUExBVEVfRUxFTUVOVCkKICAgICAgICAgfHwgaXRl
bS0+aGFzVGFnTmFtZSh0ZW1wbGF0ZVRhZykKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5jcHAKaW5kZXggYTQ4OTZjNThlYTY1ZWE4YTg5OGVm
YTAwYzZiMzM3NzY4YjQ5ODY3Mi4uZjdlY2FjODVkMGI0MjE5NWJkZTBjZjZjMjUwNWM1OTYxMDY5
NDY5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWls
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIu
Y3BwCkBAIC0yOTgsNyArMjk4LDcgQEAgSFRNTFRyZWVCdWlsZGVyOjpIVE1MVHJlZUJ1aWxkZXIo
SFRNTERvY3VtZW50UGFyc2VyJiBwYXJzZXIsIERvY3VtZW50RnJhZ21lbnQmIGYKICNlbmRpZgog
CiAgICAgICAgIHJlc2V0SW5zZXJ0aW9uTW9kZUFwcHJvcHJpYXRlbHkoKTsKLSAgICAgICAgbV90
cmVlLnNldEZvcm0oIWNvbnRleHRFbGVtZW50IHx8IGlzSFRNTEZvcm1FbGVtZW50KGNvbnRleHRF
bGVtZW50KSA/IGRvd25jYXN0PEhUTUxGb3JtRWxlbWVudD4oY29udGV4dEVsZW1lbnQpIDogSFRN
TEZvcm1FbGVtZW50OjpmaW5kQ2xvc2VzdEZvcm1BbmNlc3RvcigqY29udGV4dEVsZW1lbnQpKTsK
KyAgICAgICAgbV90cmVlLnNldEZvcm0oIWNvbnRleHRFbGVtZW50IHx8IGlzPEhUTUxGb3JtRWxl
bWVudD4oY29udGV4dEVsZW1lbnQpID8gZG93bmNhc3Q8SFRNTEZvcm1FbGVtZW50Pihjb250ZXh0
RWxlbWVudCkgOiBIVE1MRm9ybUVsZW1lbnQ6OmZpbmRDbG9zZXN0Rm9ybUFuY2VzdG9yKCpjb250
ZXh0RWxlbWVudCkpOwogICAgIH0KIH0KIApAQCAtMTM3Miw3ICsxMzcyLDcgQEAgdm9pZCBIVE1M
VHJlZUJ1aWxkZXI6OnByb2Nlc3NTdGFydFRhZyhBdG9taWNIVE1MVG9rZW4qIHRva2VuKQogICAg
ICAgICAgICAgICAgIEF0b21pY0hUTUxUb2tlbiBlbmRPcHRpb24oSFRNTFRva2VuOjpFbmRUYWcs
IG9wdGlvblRhZy5sb2NhbE5hbWUoKSk7CiAgICAgICAgICAgICAgICAgcHJvY2Vzc0VuZFRhZygm
ZW5kT3B0aW9uKTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChpc0hUTUxPcHRHcm91
cEVsZW1lbnQobV90cmVlLmN1cnJlbnRTdGFja0l0ZW0oKS0+bm9kZSgpKSkgeworICAgICAgICAg
ICAgaWYgKGlzPEhUTUxPcHRHcm91cEVsZW1lbnQ+KG1fdHJlZS5jdXJyZW50U3RhY2tJdGVtKCkt
Pm5vZGUoKSkpIHsKICAgICAgICAgICAgICAgICBBdG9taWNIVE1MVG9rZW4gZW5kT3B0Z3JvdXAo
SFRNTFRva2VuOjpFbmRUYWcsIG9wdGdyb3VwVGFnLmxvY2FsTmFtZSgpKTsKICAgICAgICAgICAg
ICAgICBwcm9jZXNzRW5kVGFnKCZlbmRPcHRncm91cCk7CiAgICAgICAgICAgICB9CkBAIC0xNjI5
LDcgKzE2MjksNyBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cmVzZXRJbnNlcnRpb25Nb2RlQXBw
cm9wcmlhdGVseSgpCiAgICAgICAgICAgICAgICAgd2hpbGUgKGl0ZW0tPm5vZGUoKSAhPSBtX3Ry
ZWUub3BlbkVsZW1lbnRzKCktPnJvb3ROb2RlKCkgJiYgIWl0ZW0tPmhhc1RhZ05hbWUodGVtcGxh
dGVUYWcpKSB7CiAgICAgICAgICAgICAgICAgICAgIG5vZGVSZWNvcmQgPSBub2RlUmVjb3JkLT5u
ZXh0KCk7CiAgICAgICAgICAgICAgICAgICAgIGl0ZW0gPSBub2RlUmVjb3JkLT5zdGFja0l0ZW0o
KTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGlzSFRNTFRhYmxlRWxlbWVudChpdGVtLT5ub2Rl
KCkpKQorICAgICAgICAgICAgICAgICAgICBpZiAoaXM8SFRNTFRhYmxlRWxlbWVudD4oaXRlbS0+
bm9kZSgpKSkKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzZXRJbnNlcnRpb25Nb2Rl
KEluc2VydGlvbk1vZGU6OkluU2VsZWN0SW5UYWJsZSk7CiAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgfQpAQCAtMTY0Nyw3ICsxNjQ3LDcgQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnJl
c2V0SW5zZXJ0aW9uTW9kZUFwcHJvcHJpYXRlbHkoKQogICAgICAgICBpZiAoaXRlbS0+aGFzVGFn
TmFtZShjb2xncm91cFRhZykpIHsKICAgICAgICAgICAgIHJldHVybiBzZXRJbnNlcnRpb25Nb2Rl
KEluc2VydGlvbk1vZGU6OkluQ29sdW1uR3JvdXApOwogICAgICAgICB9Ci0gICAgICAgIGlmIChp
c0hUTUxUYWJsZUVsZW1lbnQoaXRlbS0+bm9kZSgpKSkKKyAgICAgICAgaWYgKGlzPEhUTUxUYWJs
ZUVsZW1lbnQ+KGl0ZW0tPm5vZGUoKSkpCiAgICAgICAgICAgICByZXR1cm4gc2V0SW5zZXJ0aW9u
TW9kZShJbnNlcnRpb25Nb2RlOjpJblRhYmxlKTsKICAgICAgICAgaWYgKGl0ZW0tPmhhc1RhZ05h
bWUoaGVhZFRhZykpIHsKICNpZiBFTkFCTEUoVEVNUExBVEVfRUxFTUVOVCkKQEAgLTIyMzQsOSAr
MjIzNCw5IEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzRW5kVGFnKEF0b21pY0hUTUxU
b2tlbiogdG9rZW4pCiAgICAgY2FzZSBJbnNlcnRpb25Nb2RlOjpJblNlbGVjdDoKICAgICAgICAg
QVNTRVJUKGluc2VydGlvbk1vZGUoKSA9PSBJbnNlcnRpb25Nb2RlOjpJblNlbGVjdCB8fCBpbnNl
cnRpb25Nb2RlKCkgPT0gSW5zZXJ0aW9uTW9kZTo6SW5TZWxlY3RJblRhYmxlKTsKICAgICAgICAg
aWYgKHRva2VuLT5uYW1lKCkgPT0gb3B0Z3JvdXBUYWcpIHsKLSAgICAgICAgICAgIGlmIChpczxI
VE1MT3B0aW9uRWxlbWVudD4obV90cmVlLmN1cnJlbnRTdGFja0l0ZW0oKS0+bm9kZSgpKSAmJiBt
X3RyZWUub25lQmVsb3dUb3AoKSAmJiBpc0hUTUxPcHRHcm91cEVsZW1lbnQobV90cmVlLm9uZUJl
bG93VG9wKCktPm5vZGUoKSkpCisgICAgICAgICAgICBpZiAoaXM8SFRNTE9wdGlvbkVsZW1lbnQ+
KG1fdHJlZS5jdXJyZW50U3RhY2tJdGVtKCktPm5vZGUoKSkgJiYgbV90cmVlLm9uZUJlbG93VG9w
KCkgJiYgaXM8SFRNTE9wdEdyb3VwRWxlbWVudD4obV90cmVlLm9uZUJlbG93VG9wKCktPm5vZGUo
KSkpCiAgICAgICAgICAgICAgICAgcHJvY2Vzc0Zha2VFbmRUYWcob3B0aW9uVGFnKTsKLSAgICAg
ICAgICAgIGlmIChpc0hUTUxPcHRHcm91cEVsZW1lbnQobV90cmVlLmN1cnJlbnRTdGFja0l0ZW0o
KS0+bm9kZSgpKSkgeworICAgICAgICAgICAgaWYgKGlzPEhUTUxPcHRHcm91cEVsZW1lbnQ+KG1f
dHJlZS5jdXJyZW50U3RhY2tJdGVtKCktPm5vZGUoKSkpIHsKICAgICAgICAgICAgICAgICBtX3Ry
ZWUub3BlbkVsZW1lbnRzKCktPnBvcCgpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgICAgIH0KQEAgLTI0ODYsNyArMjQ4Niw3IEBAIFJlcHJvY2Vzc0J1ZmZlcjoKICAgICAgICAg
QVNTRVJUKGluc2VydGlvbk1vZGUoKSA9PSBJbnNlcnRpb25Nb2RlOjpJblRhYmxlIHx8IGluc2Vy
dGlvbk1vZGUoKSA9PSBJbnNlcnRpb25Nb2RlOjpJblRhYmxlQm9keSB8fCBpbnNlcnRpb25Nb2Rl
KCkgPT0gSW5zZXJ0aW9uTW9kZTo6SW5Sb3cpOwogICAgICAgICBBU1NFUlQobV9wZW5kaW5nVGFi
bGVDaGFyYWN0ZXJzLmlzRW1wdHkoKSk7CiAgICAgICAgIGlmIChtX3RyZWUuY3VycmVudFN0YWNr
SXRlbSgpLT5pc0VsZW1lbnROb2RlKCkKLSAgICAgICAgICAgICYmIChpc0hUTUxUYWJsZUVsZW1l
bnQobV90cmVlLmN1cnJlbnRTdGFja0l0ZW0oKS0+bm9kZSgpKQorICAgICAgICAgICAgJiYgKGlz
PEhUTUxUYWJsZUVsZW1lbnQ+KG1fdHJlZS5jdXJyZW50U3RhY2tJdGVtKCktPm5vZGUoKSkKICAg
ICAgICAgICAgICAgICB8fCBtX3RyZWUuY3VycmVudFN0YWNrSXRlbSgpLT5oYXNUYWdOYW1lKEhU
TUxOYW1lczo6dGJvZHlUYWcpCiAgICAgICAgICAgICAgICAgfHwgbV90cmVlLmN1cnJlbnRTdGFj
a0l0ZW0oKS0+aGFzVGFnTmFtZShIVE1MTmFtZXM6OnRmb290VGFnKQogICAgICAgICAgICAgICAg
IHx8IG1fdHJlZS5jdXJyZW50U3RhY2tJdGVtKCktPmhhc1RhZ05hbWUoSFRNTE5hbWVzOjp0aGVh
ZFRhZykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01B
Z2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3Bw
CmluZGV4IGJiYTM5ZjY2ZjE1MWI1OTI2YTRmMGYzYTY1MDBlZGFhZjhlNWZlNTUuLjBmOGEyOWRi
MjBjNDkwMmZjODE5NjQ2MTgzZTU5MGI4MjdiYjRiNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcApAQCAtMTI5Nyw3ICsxMjk3LDcgQEAgUGFz
c1JlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpET006Ok5vZGU+IEluc3BlY3RvckRPTUFnZW50
OjpidWlsZE9iamVjdEZvck5vZGUKICAgICAgICAgfQogCiAjaWYgRU5BQkxFKFRFTVBMQVRFX0VM
RU1FTlQpCi0gICAgICAgIGlmIChpc0hUTUxUZW1wbGF0ZUVsZW1lbnQoZWxlbWVudCkpCisgICAg
ICAgIGlmIChpczxIVE1MVGVtcGxhdGVFbGVtZW50PihlbGVtZW50KSkKICAgICAgICAgICAgIHZh
bHVlLT5zZXRUZW1wbGF0ZUNvbnRlbnQoYnVpbGRPYmplY3RGb3JOb2RlKGRvd25jYXN0PEhUTUxU
ZW1wbGF0ZUVsZW1lbnQ+KCplbGVtZW50KS5jb250ZW50KCksIDAsIG5vZGVzTWFwKSk7CiAjZW5k
aWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxl
U2hlZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQu
Y3BwCmluZGV4IGEzNWYxZTY1N2FkYzI5YjE0NWMwOWNmNDdlODM3YjllZmZiYzQyY2IuLjcyMWFi
ZTMyZGQ5NDVmNDNhZmY5ZDNhZDNjZDNmNzJmMjNhZTc3MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAKQEAgLTEzOTIsNyArMTM5Miw3
IEBAIGJvb2wgSW5zcGVjdG9yU3R5bGVTaGVldDo6aW5saW5lU3R5bGVTaGVldFRleHQoU3RyaW5n
KiByZXN1bHQpIGNvbnN0CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBFbGVtZW50KiBvd25l
ckVsZW1lbnQgPSB0b0VsZW1lbnQob3duZXJOb2RlKTsKIAotICAgIGlmICghaXNIVE1MU3R5bGVF
bGVtZW50KG93bmVyRWxlbWVudCkgJiYgIW93bmVyRWxlbWVudC0+aGFzVGFnTmFtZShTVkdOYW1l
czo6c3R5bGVUYWcpKQorICAgIGlmICghaXM8SFRNTFN0eWxlRWxlbWVudD4ob3duZXJFbGVtZW50
KSAmJiAhaXM8U1ZHU3R5bGVFbGVtZW50Pihvd25lckVsZW1lbnQpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgKnJlc3VsdCA9IG93bmVyRWxlbWVudC0+dGV4dENvbnRlbnQoKTsKICAgICBy
ZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xs
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKaW5kZXggNWFk
MzNiYzE2OGUxOGNkZmI0MmE5NGZmMzIyZDNlNjQwOWY5MjAzMC4uMTc5ZWVhNThlNGNmY2VkZjEx
YmY2OTllOTBkMTlmMGRkNTg4NmI1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9E
cmFnQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxl
ci5jcHAKQEAgLTYzOSwxMyArNjM5LDEzIEBAIEVsZW1lbnQqIERyYWdDb250cm9sbGVyOjpkcmFn
Z2FibGVFbGVtZW50KGNvbnN0IEZyYW1lKiBzb3VyY2VGcmFtZSwgRWxlbWVudCogc3RhCiAgICAg
ICAgIH0KICAgICAgICAgaWYgKGRyYWdNb2RlID09IERSQUdfQVVUTykgewogICAgICAgICAgICAg
aWYgKChtX2RyYWdTb3VyY2VBY3Rpb24gJiBEcmFnU291cmNlQWN0aW9uSW1hZ2UpCi0gICAgICAg
ICAgICAgICAgJiYgaXNIVE1MSW1hZ2VFbGVtZW50KGVsZW1lbnQpCisgICAgICAgICAgICAgICAg
JiYgaXM8SFRNTEltYWdlRWxlbWVudD4oZWxlbWVudCkKICAgICAgICAgICAgICAgICAmJiBzb3Vy
Y2VGcmFtZS0+c2V0dGluZ3MoKS5sb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHkoKSkgewogICAgICAg
ICAgICAgICAgIHN0YXRlLnR5cGUgPSBzdGF0aWNfY2FzdDxEcmFnU291cmNlQWN0aW9uPihzdGF0
ZS50eXBlIHwgRHJhZ1NvdXJjZUFjdGlvbkltYWdlKTsKICAgICAgICAgICAgICAgICByZXR1cm4g
ZWxlbWVudDsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmICgobV9kcmFnU291cmNlQWN0
aW9uICYgRHJhZ1NvdXJjZUFjdGlvbkxpbmspCi0gICAgICAgICAgICAgICAgJiYgaXNIVE1MQW5j
aG9yRWxlbWVudChlbGVtZW50KQorICAgICAgICAgICAgICAgICYmIGlzPEhUTUxBbmNob3JFbGVt
ZW50PihlbGVtZW50KQogICAgICAgICAgICAgICAgICYmIGRvd25jYXN0PEhUTUxBbmNob3JFbGVt
ZW50PigqZWxlbWVudCkuaXNMaXZlTGluaygpKSB7CiAgICAgICAgICAgICAgICAgc3RhdGUudHlw
ZSA9IHN0YXRpY19jYXN0PERyYWdTb3VyY2VBY3Rpb24+KHN0YXRlLnR5cGUgfCBEcmFnU291cmNl
QWN0aW9uTGluayk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQ7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZvY3VzQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0ZvY3VzQ29udHJvbGxlci5jcHAKaW5kZXggZjdiZDcyMjE5NTNmMTkxMTk0NDBmNWE3
OGM4MzMwMzVhOTczNmZjZi4uZWM4NTYwNmU5OTcyOTk5NTY3ZWExNGYzMDAzZmQ0NDBhZjQ1NjYw
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9sbGVyLmNwcApAQCAtODg0LDcgKzg4
NCw3IEBAIGJvb2wgRm9jdXNDb250cm9sbGVyOjphZHZhbmNlRm9jdXNEaXJlY3Rpb25hbGx5KEZv
Y3VzRGlyZWN0aW9uIGRpcmVjdGlvbiwgS2V5Ym9hCiAgICAgICAgIGlmICghaGFzT2Zmc2NyZWVu
UmVjdChmb2N1c2VkRWxlbWVudCkpIHsKICAgICAgICAgICAgIGNvbnRhaW5lciA9IHNjcm9sbGFi
bGVFbmNsb3NpbmdCb3hPclBhcmVudEZyYW1lRm9yTm9kZUluRGlyZWN0aW9uKGRpcmVjdGlvbiwg
Zm9jdXNlZEVsZW1lbnQpOwogICAgICAgICAgICAgc3RhcnRpbmdSZWN0ID0gbm9kZVJlY3RJbkFi
c29sdXRlQ29vcmRpbmF0ZXMoZm9jdXNlZEVsZW1lbnQsIHRydWUgLyogaWdub3JlIGJvcmRlciAq
Lyk7Ci0gICAgICAgIH0gZWxzZSBpZiAoaXNIVE1MQXJlYUVsZW1lbnQoZm9jdXNlZEVsZW1lbnQp
KSB7CisgICAgICAgIH0gZWxzZSBpZiAoaXM8SFRNTEFyZWFFbGVtZW50Pihmb2N1c2VkRWxlbWVu
dCkpIHsKICAgICAgICAgICAgIEhUTUxBcmVhRWxlbWVudCYgYXJlYSA9IGRvd25jYXN0PEhUTUxB
cmVhRWxlbWVudD4oKmZvY3VzZWRFbGVtZW50KTsKICAgICAgICAgICAgIGNvbnRhaW5lciA9IHNj
cm9sbGFibGVFbmNsb3NpbmdCb3hPclBhcmVudEZyYW1lRm9yTm9kZUluRGlyZWN0aW9uKGRpcmVj
dGlvbiwgYXJlYS5pbWFnZUVsZW1lbnQoKSk7CiAgICAgICAgICAgICBzdGFydGluZ1JlY3QgPSB2
aXJ0dWFsUmVjdEZvckFyZWFFbGVtZW50QW5kRGlyZWN0aW9uKCZhcmVhLCBkaXJlY3Rpb24pOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmNwcAppbmRleCA4Y2M2OGU5OTkwMzIwNWNj
ZDdjOGU4NTg1ZjMyNjYyZTYzNTNiMDg4Li44ZTFkY2VmYzkzNGM0Yzk0YWUyNjMwMDEyZjFhNzg0
YjQ2YmE4OGExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmNwcApAQCAtMjMw
LDE5ICsyMzAsMTkgQEAgdm9pZCBQYWdlU2VyaWFsaXplcjo6c2VyaWFsaXplRnJhbWUoRnJhbWUq
IGZyYW1lKQogICAgICAgICBpZiAoZWxlbWVudC0+aXNTdHlsZWRFbGVtZW50KCkpCiAgICAgICAg
ICAgICByZXRyaWV2ZVJlc291cmNlc0ZvclByb3BlcnRpZXModG9TdHlsZWRFbGVtZW50KGVsZW1l
bnQpLT5pbmxpbmVTdHlsZSgpLCBkb2N1bWVudCk7CiAKLSAgICAgICAgaWYgKGlzSFRNTEltYWdl
RWxlbWVudChlbGVtZW50KSkgeworICAgICAgICBpZiAoaXM8SFRNTEltYWdlRWxlbWVudD4oZWxl
bWVudCkpIHsKICAgICAgICAgICAgIEhUTUxJbWFnZUVsZW1lbnQmIGltYWdlRWxlbWVudCA9IGRv
d25jYXN0PEhUTUxJbWFnZUVsZW1lbnQ+KCplbGVtZW50KTsKICAgICAgICAgICAgIFVSTCB1cmwg
PSBkb2N1bWVudC0+Y29tcGxldGVVUkwoaW1hZ2VFbGVtZW50LmZhc3RHZXRBdHRyaWJ1dGUoSFRN
TE5hbWVzOjpzcmNBdHRyKSk7CiAgICAgICAgICAgICBDYWNoZWRJbWFnZSogY2FjaGVkSW1hZ2Ug
PSBpbWFnZUVsZW1lbnQuY2FjaGVkSW1hZ2UoKTsKICAgICAgICAgICAgIGFkZEltYWdlVG9SZXNv
dXJjZXMoY2FjaGVkSW1hZ2UsIGltYWdlRWxlbWVudC5yZW5kZXJlcigpLCB1cmwpOwotICAgICAg
ICB9IGVsc2UgaWYgKGlzSFRNTExpbmtFbGVtZW50KGVsZW1lbnQpKSB7CisgICAgICAgIH0gZWxz
ZSBpZiAoaXM8SFRNTExpbmtFbGVtZW50PihlbGVtZW50KSkgewogICAgICAgICAgICAgSFRNTExp
bmtFbGVtZW50JiBsaW5rRWxlbWVudCA9IGRvd25jYXN0PEhUTUxMaW5rRWxlbWVudD4oKmVsZW1l
bnQpOwogICAgICAgICAgICAgaWYgKENTU1N0eWxlU2hlZXQqIHNoZWV0ID0gbGlua0VsZW1lbnQu
c2hlZXQoKSkgewogICAgICAgICAgICAgICAgIFVSTCB1cmwgPSBkb2N1bWVudC0+Y29tcGxldGVV
UkwobGlua0VsZW1lbnQuZ2V0QXR0cmlidXRlKEhUTUxOYW1lczo6aHJlZkF0dHIpKTsKICAgICAg
ICAgICAgICAgICBzZXJpYWxpemVDU1NTdHlsZVNoZWV0KHNoZWV0LCB1cmwpOwogICAgICAgICAg
ICAgICAgIEFTU0VSVChtX3Jlc291cmNlVVJMcy5jb250YWlucyh1cmwpKTsKICAgICAgICAgICAg
IH0KLSAgICAgICAgfSBlbHNlIGlmIChpc0hUTUxTdHlsZUVsZW1lbnQoZWxlbWVudCkpIHsKKyAg
ICAgICAgfSBlbHNlIGlmIChpczxIVE1MU3R5bGVFbGVtZW50PihlbGVtZW50KSkgewogICAgICAg
ICAgICAgaWYgKENTU1N0eWxlU2hlZXQqIHNoZWV0ID0gZG93bmNhc3Q8SFRNTFN0eWxlRWxlbWVu
dD4oKmVsZW1lbnQpLnNoZWV0KCkpCiAgICAgICAgICAgICAgICAgc2VyaWFsaXplQ1NTU3R5bGVT
aGVldChzaGVldCwgVVJMKCkpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1NwYXRpYWxOYXZpZ2F0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU3BhdGlh
bE5hdmlnYXRpb24uY3BwCmluZGV4IGQ1NmM5ZjBkNzhlOGE5MDc0NmFkNzdmYzRlYTI3NzgyZjc5
NjkyMDAuLjRlMzg5MjQyZjE5NTkzODI5N2VhMTJjNDA5YjlkZmFjODdjYjUyNjQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU3BhdGlhbE5hdmlnYXRpb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvU3BhdGlhbE5hdmlnYXRpb24uY3BwCkBAIC02Niw3ICs2Niw3IEBAIEZv
Y3VzQ2FuZGlkYXRlOjpGb2N1c0NhbmRpZGF0ZShOb2RlKiBub2RlLCBGb2N1c0RpcmVjdGlvbiBk
aXJlY3Rpb24pCiAgICAgQVNTRVJUKG5vZGUpOwogICAgIEFTU0VSVChub2RlLT5pc0VsZW1lbnRO
b2RlKCkpOwogCi0gICAgaWYgKGlzSFRNTEFyZWFFbGVtZW50KG5vZGUpKSB7CisgICAgaWYgKGlz
PEhUTUxBcmVhRWxlbWVudD4obm9kZSkpIHsKICAgICAgICAgSFRNTEFyZWFFbGVtZW50JiBhcmVh
ID0gZG93bmNhc3Q8SFRNTEFyZWFFbGVtZW50Pigqbm9kZSk7CiAgICAgICAgIEhUTUxJbWFnZUVs
ZW1lbnQqIGltYWdlID0gYXJlYS5pbWFnZUVsZW1lbnQoKTsKICAgICAgICAgaWYgKCFpbWFnZSB8
fCAhaW1hZ2UtPnJlbmRlcmVyKCkpCkBAIC02MDcsNyArNjA3LDcgQEAgYm9vbCBhcmVFbGVtZW50
c09uU2FtZUxpbmUoY29uc3QgRm9jdXNDYW5kaWRhdGUmIGZpcnN0Q2FuZGlkYXRlLCBjb25zdCBG
b2N1c0NhbmQKICAgICBpZiAoIWZpcnN0Q2FuZGlkYXRlLnJlY3QuaW50ZXJzZWN0cyhzZWNvbmRD
YW5kaWRhdGUucmVjdCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGlmIChpc0hUTUxB
cmVhRWxlbWVudChmaXJzdENhbmRpZGF0ZS5mb2N1c2FibGVOb2RlKSB8fCBpc0hUTUxBcmVhRWxl
bWVudChzZWNvbmRDYW5kaWRhdGUuZm9jdXNhYmxlTm9kZSkpCisgICAgaWYgKGlzPEhUTUxBcmVh
RWxlbWVudD4oZmlyc3RDYW5kaWRhdGUuZm9jdXNhYmxlTm9kZSkgfHwgaXM8SFRNTEFyZWFFbGVt
ZW50PihzZWNvbmRDYW5kaWRhdGUuZm9jdXNhYmxlTm9kZSkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAogICAgIGlmICghZmlyc3RDYW5kaWRhdGUudmlzaWJsZU5vZGUtPnJlbmRlcmVyKCktPmlz
UmVuZGVySW5saW5lKCkgfHwgIXNlY29uZENhbmRpZGF0ZS52aXNpYmxlTm9kZS0+cmVuZGVyZXIo
KS0+aXNSZW5kZXJJbmxpbmUoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvaW9z
L0ZyYW1lSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGFnZS9pb3MvRnJhbWVJT1MubW0KaW5kZXgg
YjgyZjllYjI0Yjg3MzZiYWZlNTUzNWRlMTFlM2I2NjkyMDQyOWE1YS4uZTNhMGM3MTE3MzgyZTNl
OWJmZmRlNTc3YjFlOTVjODk4NWUxNTA3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9pb3MvRnJhbWVJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9pb3MvRnJhbWVJT1Mu
bW0KQEAgLTM1MSw3ICszNTEsNyBAQCBzdGF0aWMgTm9kZSogYW5jZXN0b3JSZXNwb25kaW5nVG9D
bGlja0V2ZW50cyhjb25zdCBIaXRUZXN0UmVzdWx0JiBoaXRUZXN0UmVzdWx0LAogICAgICAgICAg
ICAgLy8gSWYgd2UgYXJlIGludGVyZXN0ZWQgYWJvdXQgdGhlIGZyYW1lLCB1c2UgaXQuCiAgICAg
ICAgICAgICBpZiAobm9kZUJvdW5kcykgewogICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgYSBj
aGVjayB0byBzZWUgd2hldGhlciB0aGlzIG5vZGUgaXMgYW4gYXJlYSBlbGVtZW50LiAgVGhlIG9u
bHkgd2F5IHRoaXMgY2FuIGhhcHBlbiBpcyBpZiB0aGlzIGlzIHRoZSBmaXJzdCBjaGVjay4KLSAg
ICAgICAgICAgICAgICBpZiAobm9kZSA9PSBoaXRUZXN0UmVzdWx0LmlubmVyTm9kZSgpICYmIG5v
ZGUgIT0gaGl0VGVzdFJlc3VsdC5pbm5lck5vblNoYXJlZE5vZGUoKSAmJiBpc0hUTUxBcmVhRWxl
bWVudChub2RlKSkKKyAgICAgICAgICAgICAgICBpZiAobm9kZSA9PSBoaXRUZXN0UmVzdWx0Lmlu
bmVyTm9kZSgpICYmIG5vZGUgIT0gaGl0VGVzdFJlc3VsdC5pbm5lck5vblNoYXJlZE5vZGUoKSAm
JiBpczxIVE1MQXJlYUVsZW1lbnQ+KG5vZGUpKQogICAgICAgICAgICAgICAgICAgICAqbm9kZUJv
dW5kcyA9IHNuYXBwZWRJbnRSZWN0KGRvd25jYXN0PEhUTUxBcmVhRWxlbWVudD4oKm5vZGUpLmNv
bXB1dGVSZWN0KGhpdFRlc3RSZXN1bHQuaW5uZXJOb25TaGFyZWROb2RlKCktPnJlbmRlcmVyKCkp
KTsKICAgICAgICAgICAgICAgICBlbHNlIGlmIChub2RlICYmIG5vZGUtPnJlbmRlcmVyKCkpCiAg
ICAgICAgICAgICAgICAgICAgICpub2RlQm91bmRzID0gbm9kZS0+cmVuZGVyZXIoKS0+YWJzb2x1
dGVCb3VuZGluZ0JveFJlY3QodHJ1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVz
dFJlc3VsdC5jcHAKaW5kZXggMDYzNzg5YzhjMDdhY2QxYzExNDE3ZTFkN2Q3NjVmNTg1ZmU2MDZl
NS4uOTNjZTQ5ZGIzMmIxMjJhMTg5ZmUzMTVlOWEyMTUwMDYyMjM0YzZmZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcApAQCAtMjczLDcgKzI3Myw3IEBAIFN0
cmluZyBIaXRUZXN0UmVzdWx0OjphbHREaXNwbGF5U3RyaW5nKCkgY29uc3QKICAgICBpZiAoIW1f
aW5uZXJOb25TaGFyZWROb2RlKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAgICAgCi0gICAg
aWYgKGlzSFRNTEltYWdlRWxlbWVudCgqbV9pbm5lck5vblNoYXJlZE5vZGUpKSB7CisgICAgaWYg
KGlzPEhUTUxJbWFnZUVsZW1lbnQ+KCptX2lubmVyTm9uU2hhcmVkTm9kZSkpIHsKICAgICAgICAg
SFRNTEltYWdlRWxlbWVudCYgaW1hZ2UgPSBkb3duY2FzdDxIVE1MSW1hZ2VFbGVtZW50PigqbV9p
bm5lck5vblNoYXJlZE5vZGUpOwogICAgICAgICByZXR1cm4gZGlzcGxheVN0cmluZyhpbWFnZS5m
YXN0R2V0QXR0cmlidXRlKGFsdEF0dHIpLCBtX2lubmVyTm9uU2hhcmVkTm9kZS5nZXQoKSk7CiAg
ICAgfQpAQCAtMzYyLDcgKzM2Miw3IEBAIGJvb2wgSGl0VGVzdFJlc3VsdDo6bWVkaWFTdXBwb3J0
c0Z1bGxzY3JlZW4oKSBjb25zdAogewogI2lmIEVOQUJMRShWSURFTykKICAgICBIVE1MTWVkaWFF
bGVtZW50KiBtZWRpYUVsdChtZWRpYUVsZW1lbnQoKSk7Ci0gICAgcmV0dXJuIChtZWRpYUVsdCAm
JiBpc0hUTUxWaWRlb0VsZW1lbnQobWVkaWFFbHQpICYmIG1lZGlhRWx0LT5zdXBwb3J0c0Z1bGxz
Y3JlZW4oKSk7CisgICAgcmV0dXJuIChtZWRpYUVsdCAmJiBpczxIVE1MVmlkZW9FbGVtZW50Piht
ZWRpYUVsdCkgJiYgbWVkaWFFbHQtPnN1cHBvcnRzRnVsbHNjcmVlbigpKTsKICNlbHNlCiAgICAg
cmV0dXJuIGZhbHNlOwogI2VuZGlmCkBAIC0zNzcsNyArMzc3LDcgQEAgSFRNTE1lZGlhRWxlbWVu
dCogSGl0VGVzdFJlc3VsdDo6bWVkaWFFbGVtZW50KCkgY29uc3QKICAgICBpZiAoIShtX2lubmVy
Tm9uU2hhcmVkTm9kZS0+cmVuZGVyZXIoKSAmJiBtX2lubmVyTm9uU2hhcmVkTm9kZS0+cmVuZGVy
ZXIoKS0+aXNNZWRpYSgpKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBpZiAoaXNIVE1MVmlk
ZW9FbGVtZW50KG1faW5uZXJOb25TaGFyZWROb2RlLmdldCgpKSB8fCBpc0hUTUxBdWRpb0VsZW1l
bnQobV9pbm5lck5vblNoYXJlZE5vZGUuZ2V0KCkpKQorICAgIGlmIChpczxIVE1MVmlkZW9FbGVt
ZW50PihtX2lubmVyTm9uU2hhcmVkTm9kZS5nZXQoKSkgfHwgaXM8SFRNTEF1ZGlvRWxlbWVudD4o
bV9pbm5lck5vblNoYXJlZE5vZGUuZ2V0KCkpKQogICAgICAgICByZXR1cm4gdG9IVE1MTWVkaWFF
bGVtZW50KG1faW5uZXJOb25TaGFyZWROb2RlLmdldCgpKTsKICAgICByZXR1cm4gMDsKIH0KQEAg
LTQyNCw3ICs0MjQsNyBAQCB2b2lkIEhpdFRlc3RSZXN1bHQ6OmVudGVyRnVsbHNjcmVlbkZvclZp
ZGVvKCkgY29uc3QKIHsKICNpZiBFTkFCTEUoVklERU8pCiAgICAgSFRNTE1lZGlhRWxlbWVudCog
bWVkaWFFbGVtZW50KHRoaXMtPm1lZGlhRWxlbWVudCgpKTsKLSAgICBpZiAobWVkaWFFbGVtZW50
ICYmIGlzSFRNTFZpZGVvRWxlbWVudChtZWRpYUVsZW1lbnQpKSB7CisgICAgaWYgKG1lZGlhRWxl
bWVudCAmJiBpczxIVE1MVmlkZW9FbGVtZW50PihtZWRpYUVsZW1lbnQpKSB7CiAgICAgICAgIEhU
TUxWaWRlb0VsZW1lbnQmIHZpZGVvRWxlbWVudCA9IGRvd25jYXN0PEhUTUxWaWRlb0VsZW1lbnQ+
KCptZWRpYUVsZW1lbnQpOwogICAgICAgICBpZiAoIXZpZGVvRWxlbWVudC5pc0Z1bGxzY3JlZW4o
KSAmJiBtZWRpYUVsZW1lbnQtPnN1cHBvcnRzRnVsbHNjcmVlbigpKSB7CiAgICAgICAgICAgICBV
c2VyR2VzdHVyZUluZGljYXRvciBpbmRpY2F0b3IoRGVmaW5pdGVseVByb2Nlc3NpbmdVc2VyR2Vz
dHVyZSk7CkBAIC00ODIsNyArNDgyLDcgQEAgYm9vbCBIaXRUZXN0UmVzdWx0OjptZWRpYUlzVmlk
ZW8oKSBjb25zdAogewogI2lmIEVOQUJMRShWSURFTykKICAgICBpZiAoSFRNTE1lZGlhRWxlbWVu
dCogbWVkaWFFbHQgPSBtZWRpYUVsZW1lbnQoKSkKLSAgICAgICAgcmV0dXJuIGlzSFRNTFZpZGVv
RWxlbWVudChtZWRpYUVsdCk7CisgICAgICAgIHJldHVybiBpczxIVE1MVmlkZW9FbGVtZW50Piht
ZWRpYUVsdCk7CiAjZW5kaWYKICAgICByZXR1cm4gZmFsc2U7CiB9CkBAIC01MTYsNyArNTE2LDcg
QEAgYm9vbCBIaXRUZXN0UmVzdWx0Ojppc0xpdmVMaW5rKCkgY29uc3QKICAgICBpZiAoIW1faW5u
ZXJVUkxFbGVtZW50KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAoaXNIVE1MQW5j
aG9yRWxlbWVudCgqbV9pbm5lclVSTEVsZW1lbnQpKQorICAgIGlmIChpczxIVE1MQW5jaG9yRWxl
bWVudD4oKm1faW5uZXJVUkxFbGVtZW50KSkKICAgICAgICAgcmV0dXJuIGRvd25jYXN0PEhUTUxB
bmNob3JFbGVtZW50PigqbV9pbm5lclVSTEVsZW1lbnQpLmlzTGl2ZUxpbmsoKTsKIAogICAgIGlm
IChpczxTVkdBRWxlbWVudD4oKm1faW5uZXJVUkxFbGVtZW50KSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb3VudGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJDb3VudGVyLmNwcAppbmRleCA0OTcwYzA0ZWI4NTcwYzA5ODllOTU5NGRh
Y2QwNTFmNGY4M2UyY2UxLi5lMzZhYWVjZjA3MmJhYmExYmY3OTE5MmZiMWY3ZDk0MDk4Y2Y4ODIx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ291bnRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckNvdW50ZXIuY3BwCkBAIC0xNDIs
NyArMTQyLDcgQEAgc3RhdGljIGJvb2wgcGxhbkNvdW50ZXIoUmVuZGVyRWxlbWVudCYgcmVuZGVy
ZXIsIGNvbnN0IEF0b21pY1N0cmluZyYgaWRlbnRpZmllciwKICAgICAgICAgICAgIHJldHVybiB0
cnVlOwogICAgICAgICB9CiAgICAgICAgIGlmIChFbGVtZW50KiBlbGVtZW50ID0gcmVuZGVyZXIu
ZWxlbWVudCgpKSB7Ci0gICAgICAgICAgICBpZiAoaXNIVE1MT0xpc3RFbGVtZW50KGVsZW1lbnQp
KSB7CisgICAgICAgICAgICBpZiAoaXM8SFRNTE9MaXN0RWxlbWVudD4oZWxlbWVudCkpIHsKICAg
ICAgICAgICAgICAgICB2YWx1ZSA9IGRvd25jYXN0PEhUTUxPTGlzdEVsZW1lbnQ+KCplbGVtZW50
KS5zdGFydCgpOwogICAgICAgICAgICAgICAgIGlzUmVzZXQgPSB0cnVlOwogICAgICAgICAgICAg
ICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAK
aW5kZXggNDJmMzI5Y2M2YzE2OGQ3M2UxODE3MGVhNGMxMDc2MzJkMGZmZWVlMy4uN2ZjMzMzMGFi
ZjM1ZjA2NmQ2MzRmNmNmYTllZGUzODBjMjFjNTc0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVySW1hZ2UuY3BwCkBAIC0xMzAsNyArMTMwLDcgQEAgUmVuZGVySW1hZ2U6OlJlbmRl
ckltYWdlKEVsZW1lbnQmIGVsZW1lbnQsIFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlLCBTdHls
ZUltYWcKICAgICB1cGRhdGVBbHRUZXh0KCk7CiAgICAgaW1hZ2VSZXNvdXJjZSgpLmluaXRpYWxp
emUodGhpcyk7CiAKLSAgICBpZiAoaXNIVE1MSW1hZ2VFbGVtZW50KGVsZW1lbnQpKQorICAgIGlm
IChpczxIVE1MSW1hZ2VFbGVtZW50PihlbGVtZW50KSkKICAgICAgICAgbV9oYXNTaGFkb3dDb250
cm9scyA9IGRvd25jYXN0PEhUTUxJbWFnZUVsZW1lbnQ+KGVsZW1lbnQpLmhhc1NoYWRvd0NvbnRy
b2xzKCk7CiB9CiAKQEAgLTUxNCw3ICs1MTQsNyBAQCB2b2lkIFJlbmRlckltYWdlOjpwYWludEFy
ZWFFbGVtZW50Rm9jdXNSaW5nKFBhaW50SW5mbyYgcGFpbnRJbmZvKQogICAgICAgICByZXR1cm47
CiAKICAgICBFbGVtZW50KiBmb2N1c2VkRWxlbWVudCA9IGRvY3VtZW50KCkuZm9jdXNlZEVsZW1l
bnQoKTsKLSAgICBpZiAoIWZvY3VzZWRFbGVtZW50IHx8ICFpc0hUTUxBcmVhRWxlbWVudChmb2N1
c2VkRWxlbWVudCkpCisgICAgaWYgKCFmb2N1c2VkRWxlbWVudCB8fCAhaXM8SFRNTEFyZWFFbGVt
ZW50Pihmb2N1c2VkRWxlbWVudCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIEhUTUxBcmVhRWxl
bWVudCYgYXJlYUVsZW1lbnQgPSBkb3duY2FzdDxIVE1MQXJlYUVsZW1lbnQ+KCpmb2N1c2VkRWxl
bWVudCk7CkBAIC01NjAsNyArNTYwLDcgQEAgdm9pZCBSZW5kZXJJbWFnZTo6cGFpbnRJbnRvUmVj
dChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKICAgICBp
ZiAoIWltZyB8fCBpbWctPmlzTnVsbCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBIVE1MSW1h
Z2VFbGVtZW50KiBpbWFnZUVsZW1lbnQgPSAoZWxlbWVudCgpICYmIGlzSFRNTEltYWdlRWxlbWVu
dChlbGVtZW50KCkpKSA/IGRvd25jYXN0PEhUTUxJbWFnZUVsZW1lbnQ+KGVsZW1lbnQoKSkgOiBu
dWxscHRyOworICAgIEhUTUxJbWFnZUVsZW1lbnQqIGltYWdlRWxlbWVudCA9IChlbGVtZW50KCkg
JiYgaXM8SFRNTEltYWdlRWxlbWVudD4oZWxlbWVudCgpKSkgPyBkb3duY2FzdDxIVE1MSW1hZ2VF
bGVtZW50PihlbGVtZW50KCkpIDogbnVsbHB0cjsKICAgICBDb21wb3NpdGVPcGVyYXRvciBjb21w
b3NpdGVPcGVyYXRvciA9IGltYWdlRWxlbWVudCA/IGltYWdlRWxlbWVudC0+Y29tcG9zaXRlT3Bl
cmF0b3IoKSA6IENvbXBvc2l0ZVNvdXJjZU92ZXI7CiAgICAgSW1hZ2UqIGltYWdlID0gaW1hZ2VS
ZXNvdXJjZSgpLmltYWdlKCkuZ2V0KCk7CiAgICAgYm9vbCB1c2VMb3dRdWFsaXR5U2NhbGluZyA9
IHNob3VsZFBhaW50QXRMb3dRdWFsaXR5KGNvbnRleHQsIGltYWdlLCBpbWFnZSwgTGF5b3V0U2l6
ZShyZWN0LnNpemUoKSkpOwpAQCAtNjIyLDcgKzYyMiw3IEBAIExheW91dFVuaXQgUmVuZGVySW1h
Z2U6Om1pbmltdW1SZXBsYWNlZEhlaWdodCgpIGNvbnN0CiAKIEhUTUxNYXBFbGVtZW50KiBSZW5k
ZXJJbWFnZTo6aW1hZ2VNYXAoKSBjb25zdAogewotICAgIEhUTUxJbWFnZUVsZW1lbnQqIGltYWdl
ID0gZWxlbWVudCgpICYmIGlzSFRNTEltYWdlRWxlbWVudChlbGVtZW50KCkpID8gZG93bmNhc3Q8
SFRNTEltYWdlRWxlbWVudD4oZWxlbWVudCgpKSA6IG51bGxwdHI7CisgICAgSFRNTEltYWdlRWxl
bWVudCogaW1hZ2UgPSBlbGVtZW50KCkgJiYgaXM8SFRNTEltYWdlRWxlbWVudD4oZWxlbWVudCgp
KSA/IGRvd25jYXN0PEhUTUxJbWFnZUVsZW1lbnQ+KGVsZW1lbnQoKSkgOiBudWxscHRyOwogICAg
IHJldHVybiBpbWFnZSA/IGltYWdlLT50cmVlU2NvcGUoKS5nZXRJbWFnZU1hcChpbWFnZS0+ZmFz
dEdldEF0dHJpYnV0ZSh1c2VtYXBBdHRyKSkgOiBudWxscHRyOwogfQogCkBAIC02NTcsNyArNjU3
LDcgQEAgdm9pZCBSZW5kZXJJbWFnZTo6dXBkYXRlQWx0VGV4dCgpCiAKICAgICBpZiAoaXM8SFRN
TElucHV0RWxlbWVudD4oKmVsZW1lbnQoKSkpCiAgICAgICAgIG1fYWx0VGV4dCA9IGRvd25jYXN0
PEhUTUxJbnB1dEVsZW1lbnQ+KCplbGVtZW50KCkpLmFsdFRleHQoKTsKLSAgICBlbHNlIGlmIChp
c0hUTUxJbWFnZUVsZW1lbnQoKmVsZW1lbnQoKSkpCisgICAgZWxzZSBpZiAoaXM8SFRNTEltYWdl
RWxlbWVudD4oKmVsZW1lbnQoKSkpCiAgICAgICAgIG1fYWx0VGV4dCA9IGRvd25jYXN0PEhUTUxJ
bWFnZUVsZW1lbnQ+KCplbGVtZW50KCkpLmFsdFRleHQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwCmluZGV4IGMxZTg0NDU5NzM4MjFiMzIzYWFiN2Q4
ODZiNjYyYWE1NzM0OWQ4M2QuLmQyYWQ3NDNkN2U4NWYxMzBkZjAzYWVjYWZiMWVjYTU2MzRjYmI4
MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAKQEAgLTEx
OCw3ICsxMTgsNyBAQCB2b2lkIFJlbmRlckxpc3RCb3g6OnVwZGF0ZUZyb21FbGVtZW50KCkKICAg
ICAgICAgICAgIEZvbnQgaXRlbUZvbnQgPSBzdHlsZSgpLmZvbnQoKTsKICAgICAgICAgICAgIGlm
IChpczxIVE1MT3B0aW9uRWxlbWVudD4oZWxlbWVudCkpCiAgICAgICAgICAgICAgICAgdGV4dCA9
IGRvd25jYXN0PEhUTUxPcHRpb25FbGVtZW50PigqZWxlbWVudCkudGV4dEluZGVudGVkVG9SZXNw
ZWN0R3JvdXBMYWJlbCgpOwotICAgICAgICAgICAgZWxzZSBpZiAoaXNIVE1MT3B0R3JvdXBFbGVt
ZW50KGVsZW1lbnQpKSB7CisgICAgICAgICAgICBlbHNlIGlmIChpczxIVE1MT3B0R3JvdXBFbGVt
ZW50PihlbGVtZW50KSkgewogICAgICAgICAgICAgICAgIHRleHQgPSBkb3duY2FzdDxIVE1MT3B0
R3JvdXBFbGVtZW50PigqZWxlbWVudCkuZ3JvdXBMYWJlbFRleHQoKTsKICAgICAgICAgICAgICAg
ICBGb250RGVzY3JpcHRpb24gZCA9IGl0ZW1Gb250LmZvbnREZXNjcmlwdGlvbigpOwogICAgICAg
ICAgICAgICAgIGQuc2V0V2VpZ2h0KGQuYm9sZGVyV2VpZ2h0KCkpOwpAQCAtMzg4LDcgKzM4OCw3
IEBAIHZvaWQgUmVuZGVyTGlzdEJveDo6cGFpbnRJdGVtRm9yZWdyb3VuZChQYWludEluZm8mIHBh
aW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmCiAgICAgYm9vbCBpc09wdGlvbkVsZW1lbnQgPSBp
czxIVE1MT3B0aW9uRWxlbWVudD4obGlzdEl0ZW1FbGVtZW50KTsKICAgICBpZiAoaXNPcHRpb25F
bGVtZW50KQogICAgICAgICBpdGVtVGV4dCA9IGRvd25jYXN0PEhUTUxPcHRpb25FbGVtZW50Pigq
bGlzdEl0ZW1FbGVtZW50KS50ZXh0SW5kZW50ZWRUb1Jlc3BlY3RHcm91cExhYmVsKCk7Ci0gICAg
ZWxzZSBpZiAoaXNIVE1MT3B0R3JvdXBFbGVtZW50KGxpc3RJdGVtRWxlbWVudCkpCisgICAgZWxz
ZSBpZiAoaXM8SFRNTE9wdEdyb3VwRWxlbWVudD4obGlzdEl0ZW1FbGVtZW50KSkKICAgICAgICAg
aXRlbVRleHQgPSBkb3duY2FzdDxIVE1MT3B0R3JvdXBFbGVtZW50PigqbGlzdEl0ZW1FbGVtZW50
KS5ncm91cExhYmVsVGV4dCgpOwogICAgIGFwcGx5VGV4dFRyYW5zZm9ybShzdHlsZSgpLCBpdGVt
VGV4dCwgJyAnKTsKIApAQCAtNDA5LDcgKzQwOSw3IEBAIHZvaWQgUmVuZGVyTGlzdEJveDo6cGFp
bnRJdGVtRm9yZWdyb3VuZChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQm
CiAgICAgTGF5b3V0UmVjdCByID0gaXRlbUJvdW5kaW5nQm94UmVjdChwYWludE9mZnNldCwgbGlz
dEluZGV4KTsKICAgICByLm1vdmUoaXRlbU9mZnNldEZvckFsaWdubWVudCh0ZXh0UnVuLCBpdGVt
U3R5bGUsIGl0ZW1Gb250LCByKSk7CiAKLSAgICBpZiAoaXNIVE1MT3B0R3JvdXBFbGVtZW50KGxp
c3RJdGVtRWxlbWVudCkpIHsKKyAgICBpZiAoaXM8SFRNTE9wdEdyb3VwRWxlbWVudD4obGlzdEl0
ZW1FbGVtZW50KSkgewogICAgICAgICBGb250RGVzY3JpcHRpb24gZCA9IGl0ZW1Gb250LmZvbnRE
ZXNjcmlwdGlvbigpOwogICAgICAgICBkLnNldFdlaWdodChkLmJvbGRlcldlaWdodCgpKTsKICAg
ICAgICAgaXRlbUZvbnQgPSBGb250KGQsIGl0ZW1Gb250LmxldHRlclNwYWNpbmcoKSwgaXRlbUZv
bnQud29yZFNwYWNpbmcoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTWFycXVlZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWFycXVl
ZS5jcHAKaW5kZXggMjVhOTdlNmIzYTU4ZTk4OGQ2YWE0NjUxMzg5ZGY3NjgzYTAwMjQ0Yy4uZjRh
ZjcwZWM0MDg3MjQxYTU0YzA5MWYzZGVjYmNkYmFjODdjZTIyZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1hcnF1ZWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJNYXJxdWVlLmNwcApAQCAtNzMsNyArNzMsNyBAQCBpbnQgUmVuZGVy
TWFycXVlZTo6bWFycXVlZVNwZWVkKCkgY29uc3QKIHsKICAgICBpbnQgcmVzdWx0ID0gbV9sYXll
ci0+cmVuZGVyZXIoKS5zdHlsZSgpLm1hcnF1ZWVTcGVlZCgpOwogICAgIEVsZW1lbnQqIGVsZW1l
bnQgPSBtX2xheWVyLT5yZW5kZXJlcigpLmVsZW1lbnQoKTsKLSAgICBpZiAoZWxlbWVudCAmJiBp
c0hUTUxNYXJxdWVlRWxlbWVudChlbGVtZW50KSkKKyAgICBpZiAoZWxlbWVudCAmJiBpczxIVE1M
TWFycXVlZUVsZW1lbnQ+KGVsZW1lbnQpKQogICAgICAgICByZXN1bHQgPSBzdGQ6Om1heChyZXN1
bHQsIGRvd25jYXN0PEhUTUxNYXJxdWVlRWxlbWVudD4oKmVsZW1lbnQpLm1pbmltdW1EZWxheSgp
KTsKICAgICByZXR1cm4gcmVzdWx0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlck1lbnVMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJNZW51TGlzdC5jcHAKaW5kZXggNmVlMWIzMDEwMTM5NzVmMmY3OGQ5NjZkODhkNGE2OWY3MThl
YjVkMi4uN2NhMzUyZGM3ZjI4NWI4MDMzYzQ3NDQ1ZGQwY2Q0ZjZjYjEyN2YwYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuY3BwCkBAIC00NTAsNyArNDUwLDcg
QEAgU3RyaW5nIFJlbmRlck1lbnVMaXN0OjppdGVtVGV4dCh1bnNpZ25lZCBsaXN0SW5kZXgpIGNv
bnN0CiAKICAgICBTdHJpbmcgaXRlbVN0cmluZzsKICAgICBFbGVtZW50KiBlbGVtZW50ID0gbGlz
dEl0ZW1zW2xpc3RJbmRleF07Ci0gICAgaWYgKGlzSFRNTE9wdEdyb3VwRWxlbWVudChlbGVtZW50
KSkKKyAgICBpZiAoaXM8SFRNTE9wdEdyb3VwRWxlbWVudD4oZWxlbWVudCkpCiAgICAgICAgIGl0
ZW1TdHJpbmcgPSBkb3duY2FzdDxIVE1MT3B0R3JvdXBFbGVtZW50PigqZWxlbWVudCkuZ3JvdXBM
YWJlbFRleHQoKTsKICAgICBlbHNlIGlmIChpczxIVE1MT3B0aW9uRWxlbWVudD4oZWxlbWVudCkp
CiAgICAgICAgIGl0ZW1TdHJpbmcgPSBkb3duY2FzdDxIVE1MT3B0aW9uRWxlbWVudD4oKmVsZW1l
bnQpLnRleHRJbmRlbnRlZFRvUmVzcGVjdEdyb3VwTGFiZWwoKTsKQEAgLTQ5Nyw3ICs0OTcsNyBA
QCBib29sIFJlbmRlck1lbnVMaXN0OjppdGVtSXNFbmFibGVkKHVuc2lnbmVkIGxpc3RJbmRleCkg
Y29uc3QKIAogICAgIGJvb2wgZ3JvdXBFbmFibGVkID0gdHJ1ZTsKICAgICBpZiAoRWxlbWVudCog
cGFyZW50RWxlbWVudCA9IGVsZW1lbnQtPnBhcmVudEVsZW1lbnQoKSkgewotICAgICAgICBpZiAo
aXNIVE1MT3B0R3JvdXBFbGVtZW50KHBhcmVudEVsZW1lbnQpKQorICAgICAgICBpZiAoaXM8SFRN
TE9wdEdyb3VwRWxlbWVudD4ocGFyZW50RWxlbWVudCkpCiAgICAgICAgICAgICBncm91cEVuYWJs
ZWQgPSAhcGFyZW50RWxlbWVudC0+aXNEaXNhYmxlZEZvcm1Db250cm9sKCk7CiAgICAgfQogICAg
IGlmICghZ3JvdXBFbmFibGVkKQpAQCAtNjQ1LDcgKzY0NSw3IEBAIGJvb2wgUmVuZGVyTWVudUxp
c3Q6Oml0ZW1Jc1NlcGFyYXRvcih1bnNpZ25lZCBsaXN0SW5kZXgpIGNvbnN0CiBib29sIFJlbmRl
ck1lbnVMaXN0OjppdGVtSXNMYWJlbCh1bnNpZ25lZCBsaXN0SW5kZXgpIGNvbnN0CiB7CiAgICAg
Y29uc3QgVmVjdG9yPEhUTUxFbGVtZW50Kj4mIGxpc3RJdGVtcyA9IHNlbGVjdEVsZW1lbnQoKS5s
aXN0SXRlbXMoKTsKLSAgICByZXR1cm4gbGlzdEluZGV4IDwgbGlzdEl0ZW1zLnNpemUoKSAmJiBp
c0hUTUxPcHRHcm91cEVsZW1lbnQobGlzdEl0ZW1zW2xpc3RJbmRleF0pOworICAgIHJldHVybiBs
aXN0SW5kZXggPCBsaXN0SXRlbXMuc2l6ZSgpICYmIGlzPEhUTUxPcHRHcm91cEVsZW1lbnQ+KGxp
c3RJdGVtc1tsaXN0SW5kZXhdKTsKIH0KIAogYm9vbCBSZW5kZXJNZW51TGlzdDo6aXRlbUlzU2Vs
ZWN0ZWQodW5zaWduZWQgbGlzdEluZGV4KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlck1ldGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJNZXRlci5jcHAKaW5kZXggOWVkYmJkOTliNTBmZmQwYTk0Zjc2ODg2OTM0OGI5ZmFhMzc4
YmM5Ny4uOTkwNTk2ZDllMTA1MzMwYTZmM2Q0MDU3ZGI5Zjc2YWZjNjllYzg5ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1ldGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWV0ZXIuY3BwCkBAIC00Myw3ICs0Myw3IEBAIEhUTUxN
ZXRlckVsZW1lbnQqIFJlbmRlck1ldGVyOjptZXRlckVsZW1lbnQoKSBjb25zdAogewogICAgIEFT
U0VSVChlbGVtZW50KCkpOwogCi0gICAgaWYgKGlzSFRNTE1ldGVyRWxlbWVudChlbGVtZW50KCkp
KQorICAgIGlmIChpczxIVE1MTWV0ZXJFbGVtZW50PihlbGVtZW50KCkpKQogICAgICAgICByZXR1
cm4gZG93bmNhc3Q8SFRNTE1ldGVyRWxlbWVudD4oZWxlbWVudCgpKTsKIAogICAgIEFTU0VSVChl
bGVtZW50KCktPnNoYWRvd0hvc3QoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJP
YmplY3QuY3BwCmluZGV4IDdkMTQ1NjYyOGUzNGIyYmFiMjkxNDYzMGUwZTMyNTI5NTEwMjkxMDcu
LmY3OGJhZjNkZWY1NWZlMDhjMTc0ZTQxNmNjMThhNGExM2FmNTkzYWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCkBAIC00MSw2ICs0MSw3IEBACiAjaW5jbHVk
ZSAiSFRNTEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MSW1hZ2VFbGVtZW50LmgiCiAjaW5jbHVk
ZSAiSFRNTE5hbWVzLmgiCisjaW5jbHVkZSAiSFRNTFRhYmxlQ2VsbEVsZW1lbnQuaCIKICNpbmNs
dWRlICJIVE1MVGFibGVFbGVtZW50LmgiCiAjaW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5oIgogI2lu
Y2x1ZGUgIkxvZ2ljYWxTZWxlY3Rpb25PZmZzZXRDYWNoZXMuaCIKQEAgLTE5MTcsNyArMTkxOCw3
IEBAIFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uRW51bSBSZW5kZXJPYmplY3Q6OnNob3VsZFJlc3Bl
Y3RJbWFnZU9yaWVudGF0aW9uKCkgY29uc3QKICNlbmRpZgogICAgIC8vIFJlc3BlY3QgdGhlIGlt
YWdlJ3Mgb3JpZW50YXRpb24gaWYgaXQncyBiZWluZyB1c2VkIGFzIGEgZnVsbC1wYWdlIGltYWdl
IG9yIGl0J3MKICAgICAvLyBhbiA8aW1nPiBhbmQgdGhlIHNldHRpbmcgdG8gcmVzcGVjdCBpdCBl
dmVyeXdoZXJlIGlzIHNldC4KLSAgICByZXR1cm4gKGZyYW1lKCkuc2V0dGluZ3MoKS5zaG91bGRS
ZXNwZWN0SW1hZ2VPcmllbnRhdGlvbigpICYmIG5vZGUoKSAmJiBpc0hUTUxJbWFnZUVsZW1lbnQo
bm9kZSgpKSkgPyBSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbiA6IERvTm90UmVzcGVjdEltYWdlT3Jp
ZW50YXRpb247CisgICAgcmV0dXJuIChmcmFtZSgpLnNldHRpbmdzKCkuc2hvdWxkUmVzcGVjdElt
YWdlT3JpZW50YXRpb24oKSAmJiBub2RlKCkgJiYgaXM8SFRNTEltYWdlRWxlbWVudD4obm9kZSgp
KSkgPyBSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbiA6IERvTm90UmVzcGVjdEltYWdlT3JpZW50YXRp
b247CiB9CiAKIGJvb2wgUmVuZGVyT2JqZWN0OjpoYXNPdXRsaW5lQW5ub3RhdGlvbigpIGNvbnN0
CkBAIC0yMjk3LDcgKzIyOTgsNyBAQCB2b2lkIFJlbmRlck9iamVjdDo6Z2V0VGV4dERlY29yYXRp
b25Db2xvcnMoaW50IGRlY29yYXRpb25zLCBDb2xvciYgdW5kZXJsaW5lLCBDbwogICAgICAgICBj
dXJyID0gY3Vyci0+cGFyZW50KCk7CiAgICAgICAgIGlmIChjdXJyICYmIGN1cnItPmlzQW5vbnlt
b3VzQmxvY2soKSAmJiB0b1JlbmRlckJsb2NrKGN1cnIpLT5jb250aW51YXRpb24oKSkKICAgICAg
ICAgICAgIGN1cnIgPSB0b1JlbmRlckJsb2NrKGN1cnIpLT5jb250aW51YXRpb24oKTsKLSAgICB9
IHdoaWxlIChjdXJyICYmIGRlY29yYXRpb25zICYmICghcXVpcmtzTW9kZSB8fCAhY3Vyci0+bm9k
ZSgpIHx8ICghaXNIVE1MQW5jaG9yRWxlbWVudChjdXJyLT5ub2RlKCkpICYmICFjdXJyLT5ub2Rl
KCktPmhhc1RhZ05hbWUoZm9udFRhZykpKSk7CisgICAgfSB3aGlsZSAoY3VyciAmJiBkZWNvcmF0
aW9ucyAmJiAoIXF1aXJrc01vZGUgfHwgIWN1cnItPm5vZGUoKSB8fCAoIWlzPEhUTUxBbmNob3JF
bGVtZW50PihjdXJyLT5ub2RlKCkpICYmICFjdXJyLT5ub2RlKCktPmhhc1RhZ05hbWUoZm9udFRh
ZykpKSk7CiAKICAgICAvLyBJZiB3ZSBiYWlsZWQgb3V0LCB1c2UgdGhlIGVsZW1lbnQgd2UgYmFp
bGVkIG91dCBhdCAodHlwaWNhbGx5IGEgPGZvbnQ+IG9yIDxhPiBlbGVtZW50KS4KICAgICBpZiAo
ZGVjb3JhdGlvbnMgJiYgY3VycikgewpAQCAtMjQ0Myw3ICsyNDQ0LDcgQEAgUmVuZGVyQm94TW9k
ZWxPYmplY3QqIFJlbmRlck9iamVjdDo6b2Zmc2V0UGFyZW50KCkgY29uc3QKICAgICBhdXRvIGN1
cnIgPSBwYXJlbnQoKTsKICAgICB3aGlsZSAoY3VyciAmJiAoIWN1cnItPmVsZW1lbnQoKSB8fCAo
IWN1cnItPmlzUG9zaXRpb25lZCgpICYmICFjdXJyLT5pc0JvZHkoKSkpICYmICFjdXJyLT5pc1Jl
bmRlck5hbWVkRmxvd1RocmVhZCgpKSB7CiAgICAgICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBjdXJy
LT5lbGVtZW50KCk7Ci0gICAgICAgIGlmICghc2tpcFRhYmxlcyAmJiBlbGVtZW50ICYmIChpc0hU
TUxUYWJsZUVsZW1lbnQoZWxlbWVudCkgfHwgZWxlbWVudC0+aGFzVGFnTmFtZSh0ZFRhZykgfHwg
ZWxlbWVudC0+aGFzVGFnTmFtZSh0aFRhZykpKQorICAgICAgICBpZiAoIXNraXBUYWJsZXMgJiYg
ZWxlbWVudCAmJiAoaXM8SFRNTFRhYmxlRWxlbWVudD4oKmVsZW1lbnQpIHx8IGlzSFRNTFRhYmxl
Q2VsbEVsZW1lbnQoKmVsZW1lbnQpKSkKICAgICAgICAgICAgIGJyZWFrOwogIAogICAgICAgICBm
bG9hdCBuZXdab29tID0gY3Vyci0+c3R5bGUoKS5lZmZlY3RpdmVab29tKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUHJvZ3Jlc3MuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclByb2dyZXNzLmNwcAppbmRleCAyYjRmMDU3YWExM2U3Y2Yz
Mzc2MjdjYjI3MGYzMjcyMjQyYmQ2NmQ2Li42YjhjZDQyZGFlZTNlYzRlMDI1YWZhNjM2NDI3YWY2
YmRmZGU4MGNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUHJv
Z3Jlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJQcm9ncmVzcy5j
cHAKQEAgLTExMCw3ICsxMTAsNyBAQCBIVE1MUHJvZ3Jlc3NFbGVtZW50KiBSZW5kZXJQcm9ncmVz
czo6cHJvZ3Jlc3NFbGVtZW50KCkgY29uc3QKICAgICBpZiAoIWVsZW1lbnQoKSkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKLSAgICBpZiAoaXNIVE1MUHJvZ3Jlc3NFbGVtZW50KGVsZW1lbnQo
KSkpCisgICAgaWYgKGlzPEhUTUxQcm9ncmVzc0VsZW1lbnQ+KGVsZW1lbnQoKSkpCiAgICAgICAg
IHJldHVybiBkb3duY2FzdDxIVE1MUHJvZ3Jlc3NFbGVtZW50PihlbGVtZW50KCkpOwogCiAgICAg
QVNTRVJUKGVsZW1lbnQoKS0+c2hhZG93SG9zdCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGFibGUuY3BwCmluZGV4IDViNjE4NjdhODUyNDQxMjI4MDQxNWI3N2U2ODNmZDg0OTNm
YTQzODIuLjU5NzE3N2FhZDFmNzgyODllODIwODU5OTdhN2QzMmIzOWViOTYxNWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcApAQCAtMzUwLDcgKzM1MCw3IEBAIExh
eW91dFVuaXQgUmVuZGVyVGFibGU6OmNvbnZlcnRTdHlsZUxvZ2ljYWxXaWR0aFRvQ29tcHV0ZWRX
aWR0aChjb25zdCBMZW5ndGgmIHN0CiAKICAgICAvLyBIVE1MIHRhYmxlcycgd2lkdGggc3R5bGVz
IGFscmVhZHkgaW5jbHVkZSBib3JkZXJzIGFuZCBwYWRkaW5ncywgYnV0IENTUyB0YWJsZXMnIHdp
ZHRoIHN0eWxlcyBkbyBub3QuCiAgICAgTGF5b3V0VW5pdCBib3JkZXJzID0gMDsKLSAgICBib29s
IGlzQ1NTVGFibGUgPSAhZWxlbWVudCgpIHx8ICFpc0hUTUxUYWJsZUVsZW1lbnQoZWxlbWVudCgp
KTsKKyAgICBib29sIGlzQ1NTVGFibGUgPSAhZWxlbWVudCgpIHx8ICFpczxIVE1MVGFibGVFbGVt
ZW50PihlbGVtZW50KCkpOwogICAgIGlmIChpc0NTU1RhYmxlICYmIHN0eWxlTG9naWNhbFdpZHRo
LmlzU3BlY2lmaWVkKCkgJiYgc3R5bGVMb2dpY2FsV2lkdGguaXNQb3NpdGl2ZSgpICYmIHN0eWxl
KCkuYm94U2l6aW5nKCkgPT0gQ09OVEVOVF9CT1gpCiAgICAgICAgIGJvcmRlcnMgPSBib3JkZXJT
dGFydCgpICsgYm9yZGVyRW5kKCkgKyAoY29sbGFwc2VCb3JkZXJzKCkgPyBMYXlvdXRVbml0KCkg
OiBwYWRkaW5nU3RhcnQoKSArIHBhZGRpbmdFbmQoKSk7CiAKQEAgLTM2NCw3ICszNjQsNyBAQCBM
YXlvdXRVbml0IFJlbmRlclRhYmxlOjpjb252ZXJ0U3R5bGVMb2dpY2FsSGVpZ2h0VG9Db21wdXRl
ZEhlaWdodChjb25zdCBMZW5ndGgmCiAgICAgICAgIC8vIEhUTUwgdGFibGVzIHNpemUgYXMgdGhv
dWdoIENTUyBoZWlnaHQgaW5jbHVkZXMgYm9yZGVyL3BhZGRpbmcsIENTUyB0YWJsZXMgZG8gbm90
LgogICAgICAgICBMYXlvdXRVbml0IGJvcmRlcnMgPSBMYXlvdXRVbml0KCk7CiAgICAgICAgIC8v
IEZJWE1FOiBXZSBjYW5ub3QgYXBwbHkgYm94LXNpemluZzogY29udGVudC1ib3ggb24gPHRhYmxl
PiB3aGljaCBvdGhlciBicm93c2VycyBhbGxvdy4KLSAgICAgICAgaWYgKChlbGVtZW50KCkgJiYg
aXNIVE1MVGFibGVFbGVtZW50KGVsZW1lbnQoKSkpIHx8IHN0eWxlKCkuYm94U2l6aW5nKCkgPT0g
Qk9SREVSX0JPWCkgeworICAgICAgICBpZiAoKGVsZW1lbnQoKSAmJiBpczxIVE1MVGFibGVFbGVt
ZW50PihlbGVtZW50KCkpKSB8fCBzdHlsZSgpLmJveFNpemluZygpID09IEJPUkRFUl9CT1gpIHsK
ICAgICAgICAgICAgIExheW91dFVuaXQgYm9yZGVyQW5kUGFkZGluZ0JlZm9yZSA9IGJvcmRlckJl
Zm9yZSgpICsgKGNvbGxhcHNlQm9yZGVycygpID8gTGF5b3V0VW5pdCgpIDogcGFkZGluZ0JlZm9y
ZSgpKTsKICAgICAgICAgICAgIExheW91dFVuaXQgYm9yZGVyQW5kUGFkZGluZ0FmdGVyID0gYm9y
ZGVyQWZ0ZXIoKSArIChjb2xsYXBzZUJvcmRlcnMoKSA/IExheW91dFVuaXQoKSA6IHBhZGRpbmdB
ZnRlcigpKTsKICAgICAgICAgICAgIGJvcmRlcnMgPSBib3JkZXJBbmRQYWRkaW5nQmVmb3JlICsg
Ym9yZGVyQW5kUGFkZGluZ0FmdGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dy
YXBoaWNzL1NWR0ltYWdlQ2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NW
R0ltYWdlQ2FjaGUuY3BwCmluZGV4IDNmMjExMWY1M2Q0ZWViN2FkMDVjYjM2MDQ3NTlhNjQ4YzU4
YjI3MjMuLjllMWI3Yzg4M2FiZDEwZWE2ZWY2NGYwNTNkYjQ3MzliMTA1YzM2ZWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUNhY2hlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VDYWNoZS5jcHAKQEAgLTkyLDcgKzky
LDcgQEAgSW1hZ2UqIFNWR0ltYWdlQ2FjaGU6OmltYWdlRm9yUmVuZGVyZXIoY29uc3QgUmVuZGVy
T2JqZWN0KiByZW5kZXJlcikKICAgICBSZWZQdHI8U1ZHSW1hZ2VGb3JDb250YWluZXI+IGltYWdl
Rm9yQ29udGFpbmVyID0gaXQtPnZhbHVlOwogICAgIAogICAgIE5vZGUqIG5vZGUgPSByZW5kZXJl
ci0+bm9kZSgpOwotICAgIGlmIChub2RlICYmIGlzSFRNTEltYWdlRWxlbWVudChub2RlKSkgewor
ICAgIGlmIChub2RlICYmIGlzPEhUTUxJbWFnZUVsZW1lbnQ+KG5vZGUpKSB7CiAgICAgICAgIGNv
bnN0IEF0b21pY1N0cmluZyYgdXJsU3RyaW5nID0gZG93bmNhc3Q8SFRNTEltYWdlRWxlbWVudD4o
Km5vZGUpLmltYWdlU291cmNlVVJMKCk7CiAgICAgICAgIFVSTCB1cmwgPSBub2RlLT5kb2N1bWVu
dCgpLmNvbXBsZXRlVVJMKHVybFN0cmluZyk7CiAgICAgICAgIGltYWdlRm9yQ29udGFpbmVyLT5z
ZXRVUkwodXJsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCBhNWRkZTAz
YTMwYjE4YjUzYzMzNjcxNDUyZGEzODkzZTc5Mjg3YzIxLi5kMmFlMTMwYzlmNDIwNDBiYTVjMmVi
YWQxYzNkOGFhNjY2MmQzMmIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBA
IC0xOTE4LDcgKzE5MTgsNyBAQCB2b2lkIEludGVybmFsczo6dXBkYXRlTGF5b3V0SWdub3JlUGVu
ZGluZ1N0eWxlc2hlZXRzQW5kUnVuUG9zdExheW91dFRhc2tzKE5vZGUqCiAgICAgICAgIGRvY3Vt
ZW50ID0gY29udGV4dERvY3VtZW50KCk7CiAgICAgZWxzZSBpZiAobm9kZS0+aXNEb2N1bWVudE5v
ZGUoKSkKICAgICAgICAgZG9jdW1lbnQgPSB0b0RvY3VtZW50KG5vZGUpOwotICAgIGVsc2UgaWYg
KGlzSFRNTElGcmFtZUVsZW1lbnQobm9kZSkpCisgICAgZWxzZSBpZiAoaXM8SFRNTElGcmFtZUVs
ZW1lbnQ+KG5vZGUpKQogICAgICAgICBkb2N1bWVudCA9IGRvd25jYXN0PEhUTUxJRnJhbWVFbGVt
ZW50Pigqbm9kZSkuY29udGVudERvY3VtZW50KCk7CiAgICAgZWxzZSB7CiAgICAgICAgIGVjID0g
VHlwZUVycm9yOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1
bWVudFBhcnNlckxpYnhtbDIuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1
bWVudFBhcnNlckxpYnhtbDIuY3BwCmluZGV4IGMzN2NmODBlZGIwYmZhOGExYmZkYzU2NTlhYWJl
ZTFhNzEwOTMyYWIuLjhhZTUxMWRhOGUzNGM2NTY0NGYwNjIxYjk4N2FlMDFmYTk2MWE0N2QgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4
bWwyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2Vy
TGlieG1sMi5jcHAKQEAgLTg1MCw3ICs4NTAsNyBAQCB2b2lkIFhNTERvY3VtZW50UGFyc2VyOjpz
dGFydEVsZW1lbnROcyhjb25zdCB4bWxDaGFyKiB4bWxMb2NhbE5hbWUsIGNvbnN0IHhtbENoYQog
ICAgICAgICByZXR1cm47CiAKICNpZiBFTkFCTEUoVEVNUExBVEVfRUxFTUVOVCkKLSAgICBpZiAo
aXNIVE1MVGVtcGxhdGVFbGVtZW50KCpuZXdFbGVtZW50KSkKKyAgICBpZiAoaXM8SFRNTFRlbXBs
YXRlRWxlbWVudD4oKm5ld0VsZW1lbnQpKQogICAgICAgICBwdXNoQ3VycmVudE5vZGUoZG93bmNh
c3Q8SFRNTFRlbXBsYXRlRWxlbWVudD4oKm5ld0VsZW1lbnQpLmNvbnRlbnQoKSk7CiAgICAgZWxz
ZQogICAgICAgICBwdXNoQ3VycmVudE5vZGUobmV3RWxlbWVudC5nZXQoKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L3dpbi9ET01Db3JlQ2xhc3Nlcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dp
bi9ET01Db3JlQ2xhc3Nlcy5jcHAKaW5kZXggOWZjM2NlNmIxY2U5MzhjNWUwZmY1MDRkZDIwYTcx
OTlhMjZlZTJhMy4uMzM3Y2RhMTkxOWMyMmQyMzIyZWY3MDgwNDE0MjVmMTk0OGE5YjE3YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vRE9NQ29yZUNsYXNzZXMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvd2luL0RPTUNvcmVDbGFzc2VzLmNwcApAQCAtMTUwMCw3ICsxNTAwLDcgQEAgSURP
TUVsZW1lbnQqIERPTUVsZW1lbnQ6OmNyZWF0ZUluc3RhbmNlKFdlYkNvcmU6OkVsZW1lbnQqIGUp
CiAgICAgSFJFU1VMVCBocjsKICAgICBJRE9NRWxlbWVudCogZG9tRWxlbWVudCA9IDA7CiAKLSAg
ICBpZiAoaXNIVE1MRm9ybUVsZW1lbnQoZSkpIHsKKyAgICBpZiAoV2ViQ29yZTo6aXM8V2ViQ29y
ZTo6SFRNTEZvcm1FbGVtZW50PihlKSkgewogICAgICAgICBET01IVE1MRm9ybUVsZW1lbnQqIG5l
d0VsZW1lbnQgPSBuZXcgRE9NSFRNTEZvcm1FbGVtZW50KGUpOwogICAgICAgICBociA9IG5ld0Vs
ZW1lbnQtPlF1ZXJ5SW50ZXJmYWNlKElJRF9JRE9NRWxlbWVudCwgKHZvaWQqKikmZG9tRWxlbWVu
dCk7CiAgICAgfSBlbHNlIGlmIChlLT5oYXNUYWdOYW1lKGlmcmFtZVRhZykpIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvd2luL0RPTUhUTUxDbGFzc2VzLmNwcCBiL1NvdXJjZS9XZWJLaXQv
d2luL0RPTUhUTUxDbGFzc2VzLmNwcAppbmRleCA3ZmZhZWFjMjFiOTg4M2JhYzk5ZTI4OTQ1ODhh
NzJkOGQ4Mjg1NmUxLi4xZDFkMjQwNjNjMzYxYjViNmM4MzJlODU2N2EyNmU0NWNiYWQzNzBiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9ET01IVE1MQ2xhc3Nlcy5jcHAKKysrIGIvU291
cmNlL1dlYktpdC93aW4vRE9NSFRNTENsYXNzZXMuY3BwCkBAIC01NTksNyArNTU5LDcgQEAgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBET01IVE1MRm9ybUVsZW1lbnQ6OnNldEFjY2VwdENoYXJz
ZXQoCiBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERPTUhUTUxGb3JtRWxlbWVudDo6YWN0aW9u
KCAKICAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCU1RSKiByZXN1bHQpCiB7Ci0gICAgQVNT
RVJUKG1fZWxlbWVudCAmJiBpc0hUTUxGb3JtRWxlbWVudChtX2VsZW1lbnQpKTsKKyAgICBBU1NF
UlQobV9lbGVtZW50ICYmIGlzPEhUTUxGb3JtRWxlbWVudD4obV9lbGVtZW50KSk7CiAgICAgV1RG
OjpTdHJpbmcgYWN0aW9uU3RyaW5nID0gZG93bmNhc3Q8SFRNTEZvcm1FbGVtZW50PigqbV9lbGVt
ZW50KS5hY3Rpb24oKTsKICAgICAqcmVzdWx0ID0gQlN0cmluZyhhY3Rpb25TdHJpbmcpLnJlbGVh
c2UoKTsKICAgICByZXR1cm4gU19PSzsKQEAgLTU4OSw3ICs1ODksNyBAQCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIERPTUhUTUxGb3JtRWxlbWVudDo6c2V0RW5jdHlwZSgKIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgRE9NSFRNTEZvcm1FbGVtZW50OjptZXRob2QoIAogICAgICAgICAvKiBb
cmV0dmFsXVtvdXRdICovIEJTVFIqIHJlc3VsdCkKIHsKLSAgICBBU1NFUlQobV9lbGVtZW50ICYm
IGlzSFRNTEZvcm1FbGVtZW50KG1fZWxlbWVudCkpOworICAgIEFTU0VSVChtX2VsZW1lbnQgJiYg
aXM8SFRNTEZvcm1FbGVtZW50PihtX2VsZW1lbnQpKTsKICAgICBXVEY6OlN0cmluZyBtZXRob2RT
dHJpbmcgPSBkb3duY2FzdDxIVE1MRm9ybUVsZW1lbnQ+KCptX2VsZW1lbnQpLm1ldGhvZCgpOwog
ICAgICpyZXN1bHQgPSBCU3RyaW5nKG1ldGhvZFN0cmluZykucmVsZWFzZSgpOwogICAgIHJldHVy
biBTX09LOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vV2ViRnJhbWUuY3BwIGIvU291
cmNlL1dlYktpdC93aW4vV2ViRnJhbWUuY3BwCmluZGV4IGUzMzA0OGFkODA3MzE2YTg1OTlmOGQw
YzczN2ZjMDcwYTMwN2NhOGEuLmM1NzUyMmE3NjRlYzNjMTllYzI2NmE3NGVjNTdmODY1ODE5YzEz
NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkZyYW1lLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L3dpbi9XZWJGcmFtZS5jcHAKQEAgLTIwMiw3ICsyMDIsNyBAQCBzdGF0aWMgSFRN
TEZvcm1FbGVtZW50ICpmb3JtRWxlbWVudEZyb21ET01FbGVtZW50KElET01FbGVtZW50ICplbGVt
ZW50KQogICAgICAgICBFbGVtZW50KiBlbGU7CiAgICAgICAgIGhyID0gZWxlUHJpdi0+Y29yZUVs
ZW1lbnQoKHZvaWQqKikmZWxlKTsKICAgICAgICAgZWxlUHJpdi0+UmVsZWFzZSgpOwotICAgICAg
ICBpZiAoU1VDQ0VFREVEKGhyKSAmJiBlbGUgJiYgaXNIVE1MRm9ybUVsZW1lbnQoZWxlKSkKKyAg
ICAgICAgaWYgKFNVQ0NFRURFRChocikgJiYgZWxlICYmIGlzPEhUTUxGb3JtRWxlbWVudD4oZWxl
KSkKICAgICAgICAgICAgIHJldHVybiBkb3duY2FzdDxIVE1MRm9ybUVsZW1lbnQ+KGVsZSk7CiAg
ICAgfQogICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlLmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVu
ZGxlTm9kZUhhbmRsZS5jcHAKaW5kZXggY2VkOTBhYzZlMWFlNGUxYWFlOWU4ZDYxZGM4ZDJjNzYw
MGU5NmY1MS4uMzJlMTg3YmNjOWJlMWE2NjkzZDcwM2M4ZWZlODBmNTM2YjE2OTBmNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0
ZWRCdW5kbGVOb2RlSGFuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGUuY3BwCkBAIC0yNzYsNyAr
Mjc2LDcgQEAgUGFzc1JlZlB0cjxXZWJGcmFtZT4gSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlOjpo
dG1sRnJhbWVFbGVtZW50Q29udGVudEZyYW1lKCkKIAogUGFzc1JlZlB0cjxXZWJGcmFtZT4gSW5q
ZWN0ZWRCdW5kbGVOb2RlSGFuZGxlOjpodG1sSUZyYW1lRWxlbWVudENvbnRlbnRGcmFtZSgpCiB7
Ci0gICAgaWYgKCFpc0hUTUxJRnJhbWVFbGVtZW50KCptX25vZGUpKQorICAgIGlmICghaXM8SFRN
TElGcmFtZUVsZW1lbnQ+KCptX25vZGUpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAg
IEZyYW1lKiBmcmFtZSA9IGRvd25jYXN0PEhUTUxJRnJhbWVFbGVtZW50PigqbV9ub2RlKS5jb250
ZW50RnJhbWUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJh
bWUuY3BwCmluZGV4IDM3MmRlNDNlMmFmNGE3MDg1ZDQ4MmJjMjgyMmFjZjRmYzhkZTk2YTYuLmQ5
YWRjYzYxNjkzZTNlNTliNzM3NDFmOTk0OTQzZGMyNGVmMWE2ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcApAQCAtNjE1LDcgKzYxNSw3IEBA
IGJvb2wgV2ViRnJhbWU6OmNvbnRhaW5zQW55Rm9ybUVsZW1lbnRzKCkgY29uc3QKICAgICBmb3Ig
KE5vZGUqIG5vZGUgPSBkb2N1bWVudC0+ZG9jdW1lbnRFbGVtZW50KCk7IG5vZGU7IG5vZGUgPSBO
b2RlVHJhdmVyc2FsOjpuZXh0KG5vZGUpKSB7CiAgICAgICAgIGlmICghbm9kZS0+aXNFbGVtZW50
Tm9kZSgpKQogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGlmIChpc0hUTUxGb3JtRWxl
bWVudChub2RlKSkKKyAgICAgICAgaWYgKGlzPEhUTUxGb3JtRWxlbWVudD4obm9kZSkpCiAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IGNjYzYzYjUzMTQ2
NTM4ODk4NTg5ZjNhMmJlODVmNjQ0OTc5NjlhOTcuLmI1M2RlYzIwNThlN2JjOWRiNjBlODk3OTgx
NGMwMDMxZmFiMGM4Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHAKQEAgLTQ2MDksNyArNDYwOSw3IEBAIHZvaWQgV2ViUGFnZTo6ZGV0ZXJtaW5l
UHJpbWFyeVNuYXBzaG90dGVkUGx1Z0luKCkKICAgICAgICAgICAgIGluZmxhdGVkUGx1Z2luUmVj
dC5pbmZsYXRlWSh5T2Zmc2V0KTsKIAogICAgICAgICAgICAgaWYgKGVsZW1lbnQgIT0gJnBsdWdJ
bkltYWdlRWxlbWVudCkgewotICAgICAgICAgICAgICAgIGlmICghKGlzSFRNTEltYWdlRWxlbWVu
dChlbGVtZW50KQorICAgICAgICAgICAgICAgIGlmICghKGlzPEhUTUxJbWFnZUVsZW1lbnQ+KGVs
ZW1lbnQpCiAgICAgICAgICAgICAgICAgICAgICYmIGluZmxhdGVkUGx1Z2luUmVjdC5jb250YWlu
cyhlbGVtZW50UmVjdFJlbGF0aXZlVG9Ub3BEb2N1bWVudCkKICAgICAgICAgICAgICAgICAgICAg
JiYgZWxlbWVudFJlY3RSZWxhdGl2ZVRvVG9wRG9jdW1lbnQud2lkdGgoKSA+IHBsdWdpblJlbmRl
ckJveC53aWR0aCgpICogbWluaW11bU92ZXJsYXBwaW5nSW1hZ2VUb1BsdWdpbkRpbWVuc2lvblNj
YWxlCiAgICAgICAgICAgICAgICAgICAgICYmIGVsZW1lbnRSZWN0UmVsYXRpdmVUb1RvcERvY3Vt
ZW50LmhlaWdodCgpID4gcGx1Z2luUmVuZGVyQm94LmhlaWdodCgpICogbWluaW11bU92ZXJsYXBw
aW5nSW1hZ2VUb1BsdWdpbkRpbWVuc2lvblNjYWxlKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQppbmRleCBlN2FmMWFkNjYyYmNk
MzdlNGRlODM5YTE2NmNlMzE4NDg0MzNkOGMwLi5iNjlmODY2NTQ4NzRkZmUxODg5MDUxYTA3NDNl
MjI0ODg5OWY3ZGNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvaW9zL1dlYlBhZ2VJT1MubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL2lvcy9XZWJQYWdlSU9TLm1tCkBAIC0yMDgwLDcgKzIwODAsNyBAQCB2b2lkIFdlYlBhZ2U6
OmdldEFzc2lzdGVkTm9kZUluZm9ybWF0aW9uKEFzc2lzdGVkTm9kZUluZm9ybWF0aW9uJiBpbmZv
cm1hdGlvbikKICAgICAgICAgICAgIGlmIChpczxIVE1MT3B0aW9uRWxlbWVudD4oaXRlbSkpIHsK
ICAgICAgICAgICAgICAgICBIVE1MT3B0aW9uRWxlbWVudCYgb3B0aW9uID0gZG93bmNhc3Q8SFRN
TE9wdGlvbkVsZW1lbnQ+KCppdGVtKTsKICAgICAgICAgICAgICAgICBpbmZvcm1hdGlvbi5zZWxl
Y3RPcHRpb25zLmFwcGVuZChPcHRpb25JdGVtKG9wdGlvbi50ZXh0KCksIGZhbHNlLCBwYXJlbnRH
cm91cElELCBvcHRpb24uc2VsZWN0ZWQoKSwgb3B0aW9uLmZhc3RIYXNBdHRyaWJ1dGUoV2ViQ29y
ZTo6SFRNTE5hbWVzOjpkaXNhYmxlZEF0dHIpKSk7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKGlz
SFRNTE9wdEdyb3VwRWxlbWVudChpdGVtKSkgeworICAgICAgICAgICAgfSBlbHNlIGlmIChpczxI
VE1MT3B0R3JvdXBFbGVtZW50PihpdGVtKSkgewogICAgICAgICAgICAgICAgIEhUTUxPcHRHcm91
cEVsZW1lbnQmIGdyb3VwID0gZG93bmNhc3Q8SFRNTE9wdEdyb3VwRWxlbWVudD4oKml0ZW0pOwog
ICAgICAgICAgICAgICAgIHBhcmVudEdyb3VwSUQrKzsKICAgICAgICAgICAgICAgICBpbmZvcm1h
dGlvbi5zZWxlY3RPcHRpb25zLmFwcGVuZChPcHRpb25JdGVtKGdyb3VwLmdyb3VwTGFiZWxUZXh0
KCksIHRydWUsIDAsIGZhbHNlLCBncm91cC5mYXN0SGFzQXR0cmlidXRlKFdlYkNvcmU6OkhUTUxO
YW1lczo6ZGlzYWJsZWRBdHRyKSkpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>238678</attachid>
            <date>2014-09-25 15:36:54 -0700</date>
            <delta_ts>2014-09-25 16:37:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-137103-20140925153653.patch</filename>
            <type>text/plain</type>
            <size>130128</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTczOTc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjNhZDdiMmRlMDgyMGI1
NTZiZmIyMTY1NGQxNzg5Y2Y1ZGFkNWRmYS4uZjcxY2Q3MGVmYmM5MWNhYjQ3ZGUzODY5NWJhODU3
N2JiNTU0MGFmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0NyBAQAorMjAxNC0wOS0yNCAgQ2hy
aXN0b3BoZSBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIGlzPEhUTUwq
RWxlbWVudD4oKSBpbnN0ZWFkIG9mIGlzSFRNTCpFbGVtZW50KCkgLSBQYXJ0IDIKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNzEwMworCisgICAgICAg
IFJldmlld2VkIGJ5IEJlbmphbWluIFBvdWxhaW4uCisKKyAgICAgICAgVXNlIGlzPEhUTUwqRWxl
bWVudD4oKSBpbnN0ZWFkIG9mIGlzSFRNTCpFbGVtZW50KCkgYW5kIGRyb3Agc3VwcG9ydCBmb3IK
KyAgICAgICAgdGhlIGdlbmVyYXRlZCBpc0hUTUwqRWxlbWVudCgpIG1hY3Jvcy4KKworICAgICAg
ICBObyBuZXcgdGVzdHMsIG5vIGJlaGF2aW9yIGNoYW5nZS4KKworICAgICAgICAqIGFjY2Vzc2li
aWxpdHkvQVhPYmplY3RDYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hl
Ojpmb2N1c2VkVUlFbGVtZW50Rm9yUGFnZSk6CisgICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENh
Y2hlOjpnZXRPckNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpoYW5k
bGVBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6Omxh
YmVsQ2hhbmdlZCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdEJv
eE9wdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlv
bjo6aXNFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlMaXN0Qm94T3B0
aW9uOjpzdHJpbmdWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5TGlzdEJv
eE9wdGlvbjo6bGlzdEJveE9wdGlvblBhcmVudE5vZGUpOgorICAgICAgICAqIGFjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNz
aWJpbGl0eU5vZGVPYmplY3Q6OmRldGVybWluZUFjY2Vzc2liaWxpdHlSb2xlKToKKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojppc05hdGl2ZUltYWdlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjphbmNob3JFbGVtZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjphbHRlcm5hdGl2ZVRleHQp
OgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjphbmNob3JFbGVt
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmxhYmVs
RWxlbWVudENvbnRhaW5lcik6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVy
T2JqZWN0OjppbnRlcm5hbExpbmtFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlSZW5kZXJPYmplY3Q6OmNvbXB1dGVBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnVybCk6CisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpnZXREb2N1bWVudExpbmtzKToKKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFjY2Vzc2liaWxpdHlJ
bWFnZU1hcEhpdFRlc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9i
amVjdDo6YWNjZXNzaWJpbGl0eUhpdFRlc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJp
bGl0eVJlbmRlck9iamVjdDo6ZGV0ZXJtaW5lQWNjZXNzaWJpbGl0eVJvbGUpOgorICAgICAgICAo
V2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6c3RyaW5nVmFsdWVGb3JNU0FBKToK
KyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmlzTGlua2VkKToK
KyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFibGU6OnRhYmxlRWxlbWVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFibGU6OmlzVGFibGVFeHBvc2FibGVUaHJvdWdoQWNjZXNz
aWJpbGl0eSk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFibGU6OnRpdGxlKToK
KyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlVGFi
bGUuY3BwOgorICAgICAgICAod2Via2l0QWNjZXNzaWJsZVRhYmxlR2V0Q2FwdGlvbik6CisgICAg
ICAgICogYmluZGluZ3MvanMvSlNIVE1MRG9jdW1lbnRDdXN0b20uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SlNIVE1MRG9jdW1lbnQ6Om5hbWVHZXR0ZXIpOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTTm9kZUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjppc1JlYWNoYWJsZUZyb21ET00p
OgorICAgICAgICAqIGNzcy9DU1NEZWZhdWx0U3R5bGVTaGVldHMuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6ZWxlbWVudENhblVzZVNpbXBsZURlZmF1bHRTdHlsZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NEZWZhdWx0U3R5bGVTaGVldHM6OmVuc3VyZURlZmF1bHRTdHlsZVNoZWV0c0ZvckVsZW1l
bnQpOgorICAgICAgICAqIGNzcy9DU1NTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmlzQWNjZXB0YWJsZUNTU1N0eWxlU2hlZXRQYXJlbnQpOgorICAgICAgICAqIGNzcy9TdHlsZVJl
c29sdmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OmFkanVzdFJlbmRl
clN0eWxlKToKKyAgICAgICAgKiBjc3MvU3R5bGVTaGVldExpc3QuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U3R5bGVTaGVldExpc3Q6OmdldE5hbWVkSXRlbSk6CisgICAgICAgICogZG9tL0N1cnJl
bnRTY3JpcHRJbmNyZW1lbnRlci5oOgorICAgICAgICAoV2ViQ29yZTo6Q3VycmVudFNjcmlwdElu
Y3JlbWVudGVyOjpDdXJyZW50U2NyaXB0SW5jcmVtZW50ZXIpOgorICAgICAgICAqIGRvbS9EYXRh
VHJhbnNmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVyOjpzZXREcmFnSW1h
Z2UpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudE9yZGVyZWRNYXAuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6a2V5TWF0Y2hlc01hcE5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6a2V5TWF0Y2hlc0xv
d2VyY2FzZWRNYXBOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OmtleU1hdGNoZXNMb3dlcmNhc2Vk
VXNlbWFwKToKKyAgICAgICAgKFdlYkNvcmU6OmtleU1hdGNoZXNMYWJlbEZvckF0dHJpYnV0ZSk6
CisgICAgICAgICogZG9tL0RvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb24uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbjo6Y29sbGVjdEFjdGl2ZVN0
eWxlU2hlZXRzKToKKyAgICAgICAgKiBkb20vTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpO
b2RlOjplbmNsb3NpbmdMaW5rRXZlbnRQYXJlbnRPclNlbGYpOgorICAgICAgICAqIGRvbS9Qb3Np
dGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjplbmRzT2ZOb2RlQXJlVmlzdWFsbHlEaXN0aW5j
dFBvc2l0aW9ucyk6CisgICAgICAgICogZG9tL1NjcmlwdEVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6dG9TY3JpcHRFbGVtZW50SWZQb3NzaWJsZSk6CisgICAgICAgICogZG9tL1Zpc2l0
ZWRMaW5rU3RhdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bGlua0hhc2hGb3JFbGVtZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OlZpc2l0ZWRMaW5rU3RhdGU6OmRldGVybWluZUxpbmtTdGF0ZVNs
b3dDYXNlKToKKyAgICAgICAgKiBkb20vbWFrZV9uYW1lcy5wbDoKKyAgICAgICAgKHByaW50VHlw
ZUhlbHBlcnMpOgorICAgICAgICAqIGVkaXRpbmcvRGVsZXRlU2VsZWN0aW9uQ29tbWFuZC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpEZWxldGVTZWxlY3Rpb25Db21tYW5kOjpoYW5kbGVHZW5lcmFs
RGVsZXRlKToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjppbWFnZUVsZW1lbnRGcm9tSW1hZ2VEb2N1bWVudCk6CisgICAgICAgICogZWRpdGluZy9GcmFt
ZVNlbGVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzY2FuRm9yRm9ybSk6CisgICAgICAg
ICogZWRpdGluZy9JbnNlcnRMaW5lQnJlYWtDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Okluc2VydExpbmVCcmVha0NvbW1hbmQ6OmRvQXBwbHkpOgorICAgICAgICAqIGVkaXRpbmcvSW5z
ZXJ0UGFyYWdyYXBoU2VwYXJhdG9yQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNl
cnRQYXJhZ3JhcGhTZXBhcmF0b3JDb21tYW5kOjpkb0FwcGx5KToKKyAgICAgICAgKiBlZGl0aW5n
L1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJlbW92ZUhl
YWRDb250ZW50cyk6CisgICAgICAgICogZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tOgor
ICAgICAgICAoSFRNTENvbnZlcnRlcjo6X3Byb2Nlc3NFbGVtZW50KToKKyAgICAgICAgKiBlZGl0
aW5nL2h0bWxlZGl0aW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmlzTm9uVGFibGVDZWxsSFRN
TEJsb2NrRWxlbWVudCk6CisgICAgICAgICogZWRpdGluZy9tYXJrdXAuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6YW5jZXN0b3JUb1JldGFpblN0cnVjdHVyZUFuZEFwcGVhcmFuY2VGb3JCbG9jayk6
CisgICAgICAgIChXZWJDb3JlOjpjb2xsZWN0RWxlbWVudHNUb1JlbW92ZUZyb21GcmFnbWVudCk6
CisgICAgICAgICogaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGVFBEaXJlY3RvcnlEb2N1bWVudFBhcnNlcjo6bG9hZERvY3VtZW50VGVtcGxhdGUpOgor
ICAgICAgICAqIGh0bWwvRm9ybUFzc29jaWF0ZWRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkZvcm1Bc3NvY2lhdGVkRWxlbWVudDo6ZmluZEFzc29jaWF0ZWRGb3JtKToKKyAgICAgICAg
KiBodG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFwcGVuZFNl
cnZlck1hcE1vdXNlUG9zaXRpb24pOgorICAgICAgICAqIGh0bWwvSFRNTEFyZWFFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxBcmVhRWxlbWVudDo6aW1hZ2VFbGVtZW50KToKKyAg
ICAgICAgKiBodG1sL0hUTUxEb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRG9j
dW1lbnQ6OmJnQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTERvY3VtZW50OjpzZXRCZ0Nv
bG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxEb2N1bWVudDo6ZmdDb2xvcik6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MRG9jdW1lbnQ6OnNldEZnQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTERvY3VtZW50OjphbGlua0NvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxEb2N1bWVu
dDo6c2V0QWxpbmtDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRG9jdW1lbnQ6OmxpbmtD
b2xvcik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRG9jdW1lbnQ6OnNldExpbmtDb2xvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MRG9jdW1lbnQ6OnZsaW5rQ29sb3IpOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTERvY3VtZW50OjpzZXRWbGlua0NvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxEb2N1bWVudDo6aXNGcmFtZVNldCk6CisgICAgICAgICogaHRtbC9IVE1MRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MRWxlbWVudDo6c2V0SW5uZXJIVE1MKToKKyAgICAgICAg
KiBodG1sL0hUTUxGaWVsZFNldEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dXBkYXRl
RnJvbUNvbnRyb2xFbGVtZW50c0FuY2VzdG9yRGlzYWJsZWRTdGF0ZVVuZGVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxGaWVsZFNldEVsZW1lbnQ6OmRpc2FibGVkU3RhdGVDaGFuZ2VkKToKKyAg
ICAgICAgKiBodG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTEZvcm1Db250cm9sRWxlbWVudDo6Y29tcHV0ZUlzRGlzYWJsZWRCeUZpZWxkc2V0QW5j
ZXN0b3IpOgorICAgICAgICAqIGh0bWwvSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb246OkhUTUxGb3JtQ29u
dHJvbHNDb2xsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtQ29udHJvbHNDb2xs
ZWN0aW9uOjpmb3JtQ29udHJvbEVsZW1lbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3Jt
Q29udHJvbHNDb2xsZWN0aW9uOjpmb3JtSW1hZ2VFbGVtZW50cyk6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbjo6bmFtZWRJdGVtKToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uOjp1cGRhdGVOYW1lZEVsZW1lbnRDYWNoZSk6
CisgICAgICAgICogaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTEZvcm1FbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKToKKyAgICAgICAgKiBodG1sL0hUTUxG
cmFtZUVsZW1lbnRCYXNlLmg6CisgICAgICAgIChXZWJDb3JlOjppc0hUTUxGcmFtZUVsZW1lbnRC
YXNlKToKKyAgICAgICAgKiBodG1sL0hUTUxJbWFnZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MSW1hZ2VMb2FkZXI6OmRpc3BhdGNoTG9hZEV2ZW50KToKKyAgICAgICAgKiBodG1s
L0hUTUxJbnB1dEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVu
dDo6ZGF0YUxpc3QpOgorICAgICAgICAqIGh0bWwvSFRNTExlZ2VuZEVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTExlZ2VuZEVsZW1lbnQ6OnZpcnR1YWxGb3JtKToKKyAgICAgICAg
KiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlh
RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOgorICAgICAgICAqIGh0bWwvSFRNTE5hbWVDb2xsZWN0
aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldpbmRvd05hbWVDb2xsZWN0aW9uOjplbGVtZW50
TWF0Y2hlc0lmTmFtZUF0dHJpYnV0ZU1hdGNoKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50
TmFtZUNvbGxlY3Rpb246OmVsZW1lbnRNYXRjaGVzKToKKyAgICAgICAgKiBodG1sL0hUTUxPcHRp
b25FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxPcHRpb25FbGVtZW50Ojpvd25l
ckRhdGFMaXN0RWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MT3B0aW9uRWxlbWVudDo6
dGV4dEluZGVudGVkVG9SZXNwZWN0R3JvdXBMYWJlbCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
T3B0aW9uRWxlbWVudDo6aXNEaXNhYmxlZEZvcm1Db250cm9sKToKKyAgICAgICAgKiBodG1sL0hU
TUxTZWxlY3RFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTZWxlY3RFbGVtZW50
OjpyZWNhbGNMaXN0SXRlbXMpOgorICAgICAgICAqIGh0bWwvSFRNTFRhYmxlRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MVGFibGVFbGVtZW50OjpjYXB0aW9uKToKKyAgICAgICAg
KiBodG1sL0hUTUxUYWJsZVBhcnRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxU
YWJsZVBhcnRFbGVtZW50OjpmaW5kUGFyZW50VGFibGUpOgorICAgICAgICAqIGh0bWwvSFRNTFRh
YmxlUm93RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVGFibGVSb3dFbGVtZW50
Ojpyb3dJbmRleCk6CisgICAgICAgICogaHRtbC9IVE1MVGFibGVSb3dzQ29sbGVjdGlvbi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MVGFibGVSb3dzQ29sbGVjdGlvbjo6cm93QWZ0ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTFRhYmxlUm93c0NvbGxlY3Rpb246Omxhc3RSb3cpOgorICAg
ICAgICAqIGh0bWwvSFRNTFRhZ05hbWVzLmluOgorICAgICAgICAqIGh0bWwvTGFiZWxzTm9kZUxp
c3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGFiZWxzTm9kZUxpc3Q6OmVsZW1lbnRNYXRjaGVz
KToKKyAgICAgICAgKiBodG1sL01lZGlhRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
ZGVzY2VuZGVudFZpZGVvRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjphbmNlc3RvclZpZGVv
RWxlbWVudCk6CisgICAgICAgICogaHRtbC9SYWRpb0lucHV0VHlwZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSYWRpb0lucHV0VHlwZTo6aGFuZGxlS2V5ZG93bkV2ZW50KToKKyAgICAgICAgKiBo
dG1sL1JhZGlvTm9kZUxpc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmFkaW9Ob2RlTGlzdDo6
UmFkaW9Ob2RlTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpSYWRpb05vZGVMaXN0OjpjaGVja0Vs
ZW1lbnRNYXRjaGVzUmFkaW9Ob2RlTGlzdEZpbHRlcik6CisgICAgICAgICogaHRtbC9wYXJzZXIv
SFRNTENvbnN0cnVjdGlvblNpdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aGFzSW1wbGllZEVu
ZFRhZyk6CisgICAgICAgIChXZWJDb3JlOjppbnNlcnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TENvbnN0cnVjdGlvblNpdGU6Omluc2VydEhUTUxGb3JtRWxlbWVudCk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MQ29uc3RydWN0aW9uU2l0ZTo6aW5zZXJ0VGV4dE5vZGUpOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTENvbnN0cnVjdGlvblNpdGU6Om93bmVyRG9jdW1lbnRGb3JDdXJyZW50Tm9kZSk6
CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTEVsZW1lbnRTdGFjay5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MTmFtZXM6OmlzU2NvcGVNYXJrZXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TE5hbWVzOjppc1RhYmxlU2NvcGVNYXJrZXIpOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxU
cmVlQnVpbGRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OkhUTUxU
cmVlQnVpbGRlcik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NT
dGFydFRhZyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OnJlc2V0SW5zZXJ0
aW9uTW9kZUFwcHJvcHJpYXRlbHkpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVy
Ojpwcm9jZXNzRW5kVGFnKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6cHJv
Y2Vzc0NoYXJhY3RlckJ1ZmZlcik6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRPTUFn
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpidWlsZE9iamVj
dEZvck5vZGUpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclN0eWxlU2hlZXQ6OmlubGluZVN0eWxlU2hlZXRU
ZXh0KToKKyAgICAgICAgKiBwYWdlL0RyYWdDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkRyYWdDb250cm9sbGVyOjpkcmFnZ2FibGVFbGVtZW50KToKKyAgICAgICAgKiBwYWdlL0Zv
Y3VzQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb2N1c0NvbnRyb2xsZXI6OmFk
dmFuY2VGb2N1c0RpcmVjdGlvbmFsbHkpOgorICAgICAgICAqIHBhZ2UvUGFnZVNlcmlhbGl6ZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZVNlcmlhbGl6ZXI6OnNlcmlhbGl6ZUZyYW1lKToK
KyAgICAgICAgKiBwYWdlL1NwYXRpYWxOYXZpZ2F0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkZvY3VzQ2FuZGlkYXRlOjpGb2N1c0NhbmRpZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjphcmVF
bGVtZW50c09uU2FtZUxpbmUpOgorICAgICAgICAqIHBhZ2UvaW9zL0ZyYW1lSU9TLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6YW5jZXN0b3JSZXNwb25kaW5nVG9DbGlja0V2ZW50cyk6CisgICAgICAg
ICogcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SGl0VGVz
dFJlc3VsdDo6YWx0RGlzcGxheVN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpIaXRUZXN0UmVz
dWx0OjptZWRpYVN1cHBvcnRzRnVsbHNjcmVlbik6CisgICAgICAgIChXZWJDb3JlOjpIaXRUZXN0
UmVzdWx0OjptZWRpYUVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SGl0VGVzdFJlc3VsdDo6
ZW50ZXJGdWxsc2NyZWVuRm9yVmlkZW8pOgorICAgICAgICAoV2ViQ29yZTo6SGl0VGVzdFJlc3Vs
dDo6bWVkaWFJc1ZpZGVvKToKKyAgICAgICAgKFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQ6OmlzTGl2
ZUxpbmspOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJDb3VudGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OnBsYW5Db3VudGVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW1hZ2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2U6OlJlbmRlckltYWdlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjpwYWludEFyZWFFbGVtZW50Rm9jdXNSaW5nKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjpwYWludEludG9SZWN0KToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckltYWdlOjppbWFnZU1hcCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJ
bWFnZTo6dXBkYXRlQWx0VGV4dCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxpc3RCb3gu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGlzdEJveDo6dXBkYXRlRnJvbUVsZW1lbnQp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGlzdEJveDo6cGFpbnRJdGVtRm9yZWdyb3VuZCk6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck1hcnF1ZWUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyTWFycXVlZTo6bWFycXVlZVNwZWVkKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyTWVudUxpc3QuY3BwOgorICAgICAgICAoUmVuZGVyTWVudUxpc3Q6Oml0ZW1UZXh0KToKKyAg
ICAgICAgKFJlbmRlck1lbnVMaXN0OjppdGVtSXNFbmFibGVkKToKKyAgICAgICAgKFJlbmRlck1l
bnVMaXN0OjppdGVtSXNMYWJlbCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck1ldGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1ldGVyOjptZXRlckVsZW1lbnQpOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
T2JqZWN0OjpzaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJPYmplY3Q6OmdldFRleHREZWNvcmF0aW9uQ29sb3JzKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlck9iamVjdDo6b2Zmc2V0UGFyZW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyUHJvZ3Jlc3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyUHJvZ3Jlc3M6OnByb2dy
ZXNzRWxlbWVudCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlOjpjb252ZXJ0U3R5bGVMb2dpY2FsV2lkdGhUb0NvbXB1
dGVkV2lkdGgpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGU6OmNvbnZlcnRTdHlsZUxv
Z2ljYWxIZWlnaHRUb0NvbXB1dGVkSGVpZ2h0KToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZH
SW1hZ2VDYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZUNhY2hlOjppbWFnZUZv
clJlbmRlcmVyKToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbnRlcm5hbHM6OnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0c0Fu
ZFJ1blBvc3RMYXlvdXRUYXNrcyk6CisgICAgICAgICogeG1sL3BhcnNlci9YTUxEb2N1bWVudFBh
cnNlckxpYnhtbDIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1MRG9jdW1lbnRQYXJzZXI6OnN0
YXJ0RWxlbWVudE5zKToKKwogMjAxNC0wOS0yNSAgQnJpYW4gSi4gQnVyZyAgPGJ1cmdAY3Mud2Fz
aGluZ3Rvbi5lZHU+CiAKICAgICAgICAgV2ViIFJlcGxheTogQ2hlY2sgZXZlbnQgbG9vcCBpbnB1
dCBleHRlbnRzIGR1cmluZyByZXBsYXkgdG9vCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dp
bi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKaW5kZXggNDA0NjBkZjNh
ZjM2YWNjZTdjOTEyNTA5ZTQwNjEyOTRkN2UxNmJkNi4uZDljMjU5OWUxNDgxZmQ4YTY0OWVhNTdi
MmZkMjc1Y2NjYTU4ZTE1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDIyIEBACiAyMDE0
LTA5LTI0ICBDaHJpc3RvcGhlIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAorICAgICAgICBV
c2UgaXM8SFRNTCpFbGVtZW50PigpIGluc3RlYWQgb2YgaXNIVE1MKkVsZW1lbnQoKSAtIFBhcnQg
MgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM3MTAz
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQmVuamFtaW4gUG91bGFpbi4KKworICAgICAgICBVc2Ug
aXM8SFRNTCpFbGVtZW50PigpIGluc3RlYWQgb2YgaXNIVE1MKkVsZW1lbnQoKS4KKworICAgICAg
ICAqIERPTUNvcmVDbGFzc2VzLmNwcDoKKyAgICAgICAgKERPTUVsZW1lbnQ6OmNyZWF0ZUluc3Rh
bmNlKToKKyAgICAgICAgKiBET01IVE1MQ2xhc3Nlcy5jcHA6CisgICAgICAgIChET01IVE1MRm9y
bUVsZW1lbnQ6OmFjdGlvbik6CisgICAgICAgIChET01IVE1MRm9ybUVsZW1lbnQ6Om1ldGhvZCk6
CisgICAgICAgICogV2ViRnJhbWUuY3BwOgorICAgICAgICAoZm9ybUVsZW1lbnRGcm9tRE9NRWxl
bWVudCk6CisKKzIwMTQtMDktMjQgIENocmlzdG9waGUgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29t
PgorCiAgICAgICAgIEFkZCBpbml0aWFsIGlzPD4oKSAvIGRvd25jYXN0PD4oKSBzdXBwb3J0IGZv
ciBhbnkgdHlwZSBvZiBOb2RlcwogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTM3MDU2CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA0YjM3YWQ3M2YwYjg5MmJhMWQzZWRi
MzJhNTVjNWI1NmUxZmJmMjFjLi5kMjkwNjA0YjhmMzhhYThjMWU2YTI4MWUzMjUxMDg4ZGJlMjIw
NTBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTQtMDktMjQgIENocmlzdG9waGUg
RHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBpczxIVE1MKkVsZW1lbnQ+
KCkgaW5zdGVhZCBvZiBpc0hUTUwqRWxlbWVudCgpIC0gUGFydCAyCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzcxMDMKKworICAgICAgICBSZXZpZXdl
ZCBieSBCZW5qYW1pbiBQb3VsYWluLgorCisgICAgICAgIFVzZSBpczxIVE1MKkVsZW1lbnQ+KCkg
aW5zdGVhZCBvZiBpc0hUTUwqRWxlbWVudCgpLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6SW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlOjpodG1sSUZyYW1lRWxlbWVudENvbnRlbnRG
cmFtZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViRnJhbWU6OmNvbnRhaW5zQW55Rm9ybUVsZW1lbnRzKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2U6OmRldGVybWluZVByaW1hcnlTbmFwc2hvdHRlZFBsdWdJbik6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
OjpnZXRBc3Npc3RlZE5vZGVJbmZvcm1hdGlvbik6CisKIDIwMTQtMDktMjUgIEFuZGVycyBDYXJs
c3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBFeHBhbmQgV0tfTUFDX1RCQSBh
bmQgV0tfSU9TX1RCQSB0byB0aGUgY3VycmVudCBkZXBsb3ltZW50IHRhcmdldCB2ZXJzaW9uIChv
ciBOQSkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0
Q2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNw
cAppbmRleCBiMGVjNTliMjU4NGY3ZWJiNzY1Njg0NGFlMWM5NTVlZTIwMTE4ZGQ0Li42NzQ3NWMy
N2JmYzAxNTc4NWI5YTBjMTFjMDUxZmFlMzNmYzhhZjhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAKQEAgLTE3Niw3ICsxNzYsNyBAQCBBY2Nl
c3NpYmlsaXR5T2JqZWN0KiBBWE9iamVjdENhY2hlOjpmb2N1c2VkVUlFbGVtZW50Rm9yUGFnZShj
b25zdCBQYWdlKiBwYWdlKQogICAgIC8vIGdldCB0aGUgZm9jdXNlZCBub2RlIGluIHRoZSBwYWdl
CiAgICAgRG9jdW1lbnQqIGZvY3VzZWREb2N1bWVudCA9IHBhZ2UtPmZvY3VzQ29udHJvbGxlcigp
LmZvY3VzZWRPck1haW5GcmFtZSgpLmRvY3VtZW50KCk7CiAgICAgRWxlbWVudCogZm9jdXNlZEVs
ZW1lbnQgPSBmb2N1c2VkRG9jdW1lbnQtPmZvY3VzZWRFbGVtZW50KCk7Ci0gICAgaWYgKGZvY3Vz
ZWRFbGVtZW50ICYmIGlzSFRNTEFyZWFFbGVtZW50KGZvY3VzZWRFbGVtZW50KSkKKyAgICBpZiAo
Zm9jdXNlZEVsZW1lbnQgJiYgaXM8SFRNTEFyZWFFbGVtZW50Pihmb2N1c2VkRWxlbWVudCkpCiAg
ICAgICAgIHJldHVybiBmb2N1c2VkSW1hZ2VNYXBVSUVsZW1lbnQoZG93bmNhc3Q8SFRNTEFyZWFF
bGVtZW50Pihmb2N1c2VkRWxlbWVudCkpOwogCiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogb2Jq
ID0gZm9jdXNlZERvY3VtZW50LT5heE9iamVjdENhY2hlKCktPmdldE9yQ3JlYXRlKGZvY3VzZWRF
bGVtZW50ID8gc3RhdGljX2Nhc3Q8Tm9kZSo+KGZvY3VzZWRFbGVtZW50KSA6IGZvY3VzZWREb2N1
bWVudCk7CkBAIC0zODYsNyArMzg2LDcgQEAgQWNjZXNzaWJpbGl0eU9iamVjdCogQVhPYmplY3RD
YWNoZTo6Z2V0T3JDcmVhdGUoTm9kZSogbm9kZSkKIAogICAgIGJvb2wgaW5zaWRlTWV0ZXJFbGVt
ZW50ID0gZmFsc2U7CiAjaWYgRU5BQkxFKE1FVEVSX0VMRU1FTlQpCi0gICAgaW5zaWRlTWV0ZXJF
bGVtZW50ID0gaXNIVE1MTWV0ZXJFbGVtZW50KG5vZGUtPnBhcmVudEVsZW1lbnQoKSk7CisgICAg
aW5zaWRlTWV0ZXJFbGVtZW50ID0gaXM8SFRNTE1ldGVyRWxlbWVudD4obm9kZS0+cGFyZW50RWxl
bWVudCgpKTsKICNlbmRpZgogICAgIAogICAgIGlmICghaW5DYW52YXNTdWJ0cmVlICYmICFpc0hp
ZGRlbiAmJiAhaW5zaWRlTWV0ZXJFbGVtZW50KQpAQCAtOTE3LDcgKzkxNyw3IEBAIHZvaWQgQVhP
YmplY3RDYWNoZTo6aGFuZGxlQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBh
dHRyTmFtZSwgRWxlbWVuCiAgICAgICAgIGhhbmRsZUFyaWFSb2xlQ2hhbmdlZChlbGVtZW50KTsK
ICAgICBlbHNlIGlmIChhdHRyTmFtZSA9PSBhbHRBdHRyIHx8IGF0dHJOYW1lID09IHRpdGxlQXR0
cikKICAgICAgICAgdGV4dENoYW5nZWQoZWxlbWVudCk7Ci0gICAgZWxzZSBpZiAoYXR0ck5hbWUg
PT0gZm9yQXR0ciAmJiBpc0hUTUxMYWJlbEVsZW1lbnQoZWxlbWVudCkpCisgICAgZWxzZSBpZiAo
YXR0ck5hbWUgPT0gZm9yQXR0ciAmJiBpczxIVE1MTGFiZWxFbGVtZW50PihlbGVtZW50KSkKICAg
ICAgICAgbGFiZWxDaGFuZ2VkKGVsZW1lbnQpOwogCiAgICAgaWYgKCFhdHRyTmFtZS5sb2NhbE5h
bWUoKS5zdHJpbmcoKS5zdGFydHNXaXRoKCJhcmlhLSIpKQpAQCAtOTQ3LDcgKzk0Nyw3IEBAIHZv
aWQgQVhPYmplY3RDYWNoZTo6aGFuZGxlQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWRO
YW1lJiBhdHRyTmFtZSwgRWxlbWVuCiAKIHZvaWQgQVhPYmplY3RDYWNoZTo6bGFiZWxDaGFuZ2Vk
KEVsZW1lbnQqIGVsZW1lbnQpCiB7Ci0gICAgQVNTRVJUKGlzSFRNTExhYmVsRWxlbWVudChlbGVt
ZW50KSk7CisgICAgQVNTRVJUKGlzPEhUTUxMYWJlbEVsZW1lbnQ+KGVsZW1lbnQpKTsKICAgICBI
VE1MRWxlbWVudCogY29ycmVzcG9uZGluZ0NvbnRyb2wgPSBkb3duY2FzdDxIVE1MTGFiZWxFbGVt
ZW50PihlbGVtZW50KS0+Y29udHJvbCgpOwogICAgIHRleHRDaGFuZ2VkKGNvcnJlc3BvbmRpbmdD
b250cm9sKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eUxpc3RCb3hPcHRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlvbi5jcHAKaW5kZXggYzMyNzAwODA2MDNjZjBjNzJj
OWI2Y2JjZjRmODU3OWVjNzJmMmNhMi4uZjAzODg3Y2E2YTM1ZDM2ZGI1MjNiNzhiNGY1YmEwZTI0
YzU2ZGZjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5TGlzdEJveE9wdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlvbi5jcHAKQEAgLTY0LDcgKzY0LDcgQEAgYm9vbCBB
Y2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlvbjo6aXNFbmFibGVkKCkgY29uc3QKICAgICBpZiAoIW1f
b3B0aW9uRWxlbWVudCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAotICAgIGlmIChpc0hU
TUxPcHRHcm91cEVsZW1lbnQobV9vcHRpb25FbGVtZW50KSkKKyAgICBpZiAoaXM8SFRNTE9wdEdy
b3VwRWxlbWVudD4obV9vcHRpb25FbGVtZW50KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAg
ICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGdldEF0dHJpYnV0ZShhcmlhX2Rpc2FibGVkQXR0ciks
ICJ0cnVlIikpCkBAIC0xNTksNyArMTU5LDcgQEAgU3RyaW5nIEFjY2Vzc2liaWxpdHlMaXN0Qm94
T3B0aW9uOjpzdHJpbmdWYWx1ZSgpIGNvbnN0CiAgICAgaWYgKGlzPEhUTUxPcHRpb25FbGVtZW50
PihtX29wdGlvbkVsZW1lbnQpKQogICAgICAgICByZXR1cm4gZG93bmNhc3Q8SFRNTE9wdGlvbkVs
ZW1lbnQ+KCptX29wdGlvbkVsZW1lbnQpLnRleHQoKTsKICAgICAKLSAgICBpZiAoaXNIVE1MT3B0
R3JvdXBFbGVtZW50KG1fb3B0aW9uRWxlbWVudCkpCisgICAgaWYgKGlzPEhUTUxPcHRHcm91cEVs
ZW1lbnQ+KG1fb3B0aW9uRWxlbWVudCkpCiAgICAgICAgIHJldHVybiBkb3duY2FzdDxIVE1MT3B0
R3JvdXBFbGVtZW50PigqbV9vcHRpb25FbGVtZW50KS5ncm91cExhYmVsVGV4dCgpOwogICAgIAog
ICAgIHJldHVybiBTdHJpbmcoKTsKQEAgLTIwNSw3ICsyMDUsNyBAQCBIVE1MU2VsZWN0RWxlbWVu
dCogQWNjZXNzaWJpbGl0eUxpc3RCb3hPcHRpb246Omxpc3RCb3hPcHRpb25QYXJlbnROb2RlKCkg
Y29uc3QKICAgICBpZiAoaXM8SFRNTE9wdGlvbkVsZW1lbnQ+KG1fb3B0aW9uRWxlbWVudCkpCiAg
ICAgICAgIHJldHVybiBkb3duY2FzdDxIVE1MT3B0aW9uRWxlbWVudD4oKm1fb3B0aW9uRWxlbWVu
dCkub3duZXJTZWxlY3RFbGVtZW50KCk7CiAKLSAgICBpZiAoaXNIVE1MT3B0R3JvdXBFbGVtZW50
KG1fb3B0aW9uRWxlbWVudCkpCisgICAgaWYgKGlzPEhUTUxPcHRHcm91cEVsZW1lbnQ+KG1fb3B0
aW9uRWxlbWVudCkpCiAgICAgICAgIHJldHVybiBkb3duY2FzdDxIVE1MT3B0R3JvdXBFbGVtZW50
PigqbV9vcHRpb25FbGVtZW50KS5vd25lclNlbGVjdEVsZW1lbnQoKTsKIAogICAgIHJldHVybiBu
dWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5Tm9kZU9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlOb2RlT2JqZWN0LmNwcAppbmRleCAyNjJmYjk3NWQyYjY5N2E3YzA2ZjE2MmRhYWEw
MjZmZDM4YTg0NmNjLi5kNzRjMTIwYmYyMWVlOWI0YWIxMWNkOWM1NjViNTYxNTYyMGJkZjA1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2Rl
T2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlOb2RlT2JqZWN0LmNwcApAQCAtMzIxLDcgKzMyMSw3IEBAIEFjY2Vzc2liaWxpdHlSb2xlIEFj
Y2Vzc2liaWxpdHlOb2RlT2JqZWN0OjpkZXRlcm1pbmVBY2Nlc3NpYmlsaXR5Um9sZSgpCiAgICAg
ICAgIHJldHVybiBEaXZSb2xlOwogICAgIGlmIChub2RlKCktPmhhc1RhZ05hbWUocFRhZykpCiAg
ICAgICAgIHJldHVybiBQYXJhZ3JhcGhSb2xlOwotICAgIGlmIChpc0hUTUxMYWJlbEVsZW1lbnQo
bm9kZSgpKSkKKyAgICBpZiAoaXM8SFRNTExhYmVsRWxlbWVudD4obm9kZSgpKSkKICAgICAgICAg
cmV0dXJuIExhYmVsUm9sZTsKICAgICBpZiAobm9kZSgpLT5pc0VsZW1lbnROb2RlKCkgJiYgdG9F
bGVtZW50KG5vZGUoKSktPmlzRm9jdXNhYmxlKCkpCiAgICAgICAgIHJldHVybiBHcm91cFJvbGU7
CkBAIC01MTIsNyArNTEyLDcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6aXNOYXRp
dmVJbWFnZSgpIGNvbnN0CiAgICAgaWYgKCFub2RlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
LSAgICBpZiAoaXNIVE1MSW1hZ2VFbGVtZW50KG5vZGUpKQorICAgIGlmIChpczxIVE1MSW1hZ2VF
bGVtZW50Pihub2RlKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBpZiAobm9kZS0+aGFz
VGFnTmFtZShhcHBsZXRUYWcpIHx8IG5vZGUtPmhhc1RhZ05hbWUoZW1iZWRUYWcpIHx8IG5vZGUt
Pmhhc1RhZ05hbWUob2JqZWN0VGFnKSkKQEAgLTk2Myw3ICs5NjMsNyBAQCBFbGVtZW50KiBBY2Nl
c3NpYmlsaXR5Tm9kZU9iamVjdDo6YW5jaG9yRWxlbWVudCgpIGNvbnN0CiAgICAgLy8gc2VhcmNo
IHVwIHRoZSBET00gdHJlZSBmb3IgYW4gYW5jaG9yIGVsZW1lbnQKICAgICAvLyBOT1RFOiB0aGlz
IGFzc3VtZXMgdGhhdCBhbnkgbm9uLWltYWdlIHdpdGggYW4gYW5jaG9yIGlzIGFuIEhUTUxBbmNo
b3JFbGVtZW50CiAgICAgZm9yICggOyBub2RlOyBub2RlID0gbm9kZS0+cGFyZW50Tm9kZSgpKSB7
Ci0gICAgICAgIGlmIChpc0hUTUxBbmNob3JFbGVtZW50KG5vZGUpIHx8IChub2RlLT5yZW5kZXJl
cigpICYmIGNhY2hlLT5nZXRPckNyZWF0ZShub2RlLT5yZW5kZXJlcigpKS0+aXNBbmNob3IoKSkp
CisgICAgICAgIGlmIChpczxIVE1MQW5jaG9yRWxlbWVudD4obm9kZSkgfHwgKG5vZGUtPnJlbmRl
cmVyKCkgJiYgY2FjaGUtPmdldE9yQ3JlYXRlKG5vZGUtPnJlbmRlcmVyKCkpLT5pc0FuY2hvcigp
KSkKICAgICAgICAgICAgIHJldHVybiB0b0VsZW1lbnQobm9kZSk7CiAgICAgfQogCkBAIC0xMzA1
LDcgKzEzMDUsNyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjphbHRlcm5hdGl2ZVRl
eHQoVmVjdG9yPEFjY2Vzc2liaWxpdHlUZXh0PiYgdGV4dE9yZAogICAgICAgICByZXR1cm47CiAg
ICAgCiAgICAgLy8gVGhlIGZpZWxkc2V0IGVsZW1lbnQgZGVyaXZlcyBpdHMgYWx0ZXJuYXRpdmUg
dGV4dCBmcm9tIHRoZSBmaXJzdCBhc3NvY2lhdGVkIGxlZ2VuZCBlbGVtZW50IGlmIG9uZSBpcyBh
dmFpbGFibGUuCi0gICAgaWYgKGlzSFRNTEZpZWxkU2V0RWxlbWVudChub2RlKSkgeworICAgIGlm
IChpczxIVE1MRmllbGRTZXRFbGVtZW50Pihub2RlKSkgewogICAgICAgICBBY2Nlc3NpYmlsaXR5
T2JqZWN0KiBvYmplY3QgPSBheE9iamVjdENhY2hlKCktPmdldE9yQ3JlYXRlKGRvd25jYXN0PEhU
TUxGaWVsZFNldEVsZW1lbnQ+KCpub2RlKS5sZWdlbmQoKSk7CiAgICAgICAgIGlmIChvYmplY3Qg
JiYgIW9iamVjdC0+aXNIaWRkZW4oKSkKICAgICAgICAgICAgIHRleHRPcmRlci5hcHBlbmQoQWNj
ZXNzaWJpbGl0eVRleHQoYWNjZXNzaWJsZU5hbWVGb3JOb2RlKG9iamVjdC0+bm9kZSgpKSwgQWx0
ZXJuYXRpdmVUZXh0KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAppbmRleCAzZTJhOGY3YWU2NWNiMDk0
ZjliMDY2ZTgzOWY1MjQxNTdhYzY2ZGYxLi40NDRmYWZhZWEwMTIxZDljNjk4YTAyMzM5YWFjMTZk
MzhhZGY1NTkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKQEAgLTU4NSw3ICs1ODUsNyBAQCBFbGVt
ZW50KiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjphbmNob3JFbGVtZW50KCkgY29uc3QKICAg
ICAvLyBOT1RFOiB0aGlzIGFzc3VtZXMgdGhhdCBhbnkgbm9uLWltYWdlIHdpdGggYW4gYW5jaG9y
IGlzIGFuIEhUTUxBbmNob3JFbGVtZW50CiAgICAgTm9kZSogbm9kZSA9IGN1cnJSZW5kZXJlci0+
bm9kZSgpOwogICAgIGZvciAoIDsgbm9kZTsgbm9kZSA9IG5vZGUtPnBhcmVudE5vZGUoKSkgewot
ICAgICAgICBpZiAoaXNIVE1MQW5jaG9yRWxlbWVudChub2RlKSB8fCAobm9kZS0+cmVuZGVyZXIo
KSAmJiBjYWNoZS0+Z2V0T3JDcmVhdGUobm9kZS0+cmVuZGVyZXIoKSktPmlzQW5jaG9yKCkpKQor
ICAgICAgICBpZiAoaXM8SFRNTEFuY2hvckVsZW1lbnQ+KG5vZGUpIHx8IChub2RlLT5yZW5kZXJl
cigpICYmIGNhY2hlLT5nZXRPckNyZWF0ZShub2RlLT5yZW5kZXJlcigpKS0+aXNBbmNob3IoKSkp
CiAgICAgICAgICAgICByZXR1cm4gdG9FbGVtZW50KG5vZGUpOwogICAgIH0KICAgICAKQEAgLTc4
Miw3ICs3ODIsNyBAQCBIVE1MTGFiZWxFbGVtZW50KiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0
OjpsYWJlbEVsZW1lbnRDb250YWluZXIoKSBjb25zdAogICAgIAogICAgIC8vIGZpbmQgaWYgdGhp
cyBoYXMgYSBwYXJlbnQgdGhhdCBpcyBhIGxhYmVsCiAgICAgZm9yIChOb2RlKiBwYXJlbnROb2Rl
ID0gbV9yZW5kZXJlci0+bm9kZSgpOyBwYXJlbnROb2RlOyBwYXJlbnROb2RlID0gcGFyZW50Tm9k
ZS0+cGFyZW50Tm9kZSgpKSB7Ci0gICAgICAgIGlmIChpc0hUTUxMYWJlbEVsZW1lbnQocGFyZW50
Tm9kZSkpCisgICAgICAgIGlmIChpczxIVE1MTGFiZWxFbGVtZW50PihwYXJlbnROb2RlKSkKICAg
ICAgICAgICAgIHJldHVybiBkb3duY2FzdDxIVE1MTGFiZWxFbGVtZW50PihwYXJlbnROb2RlKTsK
ICAgICB9CiAgICAgCkBAIC05MTQsNyArOTE0LDcgQEAgQWNjZXNzaWJpbGl0eU9iamVjdCogQWNj
ZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aW50ZXJuYWxMaW5rRWxlbWVudCgpIGNvbnN0CiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogICAgIAogICAgIC8vIFJpZ2h0IG5vdywgd2UgZG8gbm90IHN1
cHBvcnQgQVJJQSBsaW5rcyBhcyBpbnRlcm5hbCBsaW5rIGVsZW1lbnRzCi0gICAgaWYgKCFpc0hU
TUxBbmNob3JFbGVtZW50KGVsZW1lbnQpKQorICAgIGlmICghaXM8SFRNTEFuY2hvckVsZW1lbnQ+
KGVsZW1lbnQpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBIVE1MQW5jaG9yRWxlbWVu
dCYgYW5jaG9yID0gZG93bmNhc3Q8SFRNTEFuY2hvckVsZW1lbnQ+KCplbGVtZW50KTsKICAgICAK
QEAgLTEyNzUsNyArMTI3NSw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6Y29t
cHV0ZUFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSBjb25zdAogICAgIAogICAgIC8vIGRvbid0IGln
bm9yZSBsYWJlbHMsIGJlY2F1c2UgdGhleSBzZXJ2ZSBhcyBUaXRsZVVJRWxlbWVudHMKICAgICBO
b2RlKiBub2RlID0gbV9yZW5kZXJlci0+bm9kZSgpOwotICAgIGlmIChub2RlICYmIGlzSFRNTExh
YmVsRWxlbWVudChub2RlKSkKKyAgICBpZiAobm9kZSAmJiBpczxIVE1MTGFiZWxFbGVtZW50Pihu
b2RlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAogICAgIC8vIEFueXRoaW5nIHRoYXQg
aXMgY29udGVudCBlZGl0YWJsZSBzaG91bGQgbm90IGJlIGlnbm9yZWQuCkBAIC0xNTA3LDcgKzE1
MDcsNyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnNldFNlbGVjdGVkVGV4dFJh
bmdlKGNvbnN0IFBsYWluVGV4dFJhbmdlJiByYW5nZQogCiBVUkwgQWNjZXNzaWJpbGl0eVJlbmRl
ck9iamVjdDo6dXJsKCkgY29uc3QKIHsKLSAgICBpZiAoaXNBbmNob3IoKSAmJiBpc0hUTUxBbmNo
b3JFbGVtZW50KG1fcmVuZGVyZXItPm5vZGUoKSkpIHsKKyAgICBpZiAoaXNBbmNob3IoKSAmJiBp
czxIVE1MQW5jaG9yRWxlbWVudD4obV9yZW5kZXJlci0+bm9kZSgpKSkgewogICAgICAgICBpZiAo
SFRNTEFuY2hvckVsZW1lbnQqIGFuY2hvciA9IGRvd25jYXN0PEhUTUxBbmNob3JFbGVtZW50Pihh
bmNob3JFbGVtZW50KCkpKQogICAgICAgICAgICAgcmV0dXJuIGFuY2hvci0+aHJlZigpOwogICAg
IH0KQEAgLTE1MTUsNyArMTUxNSw3IEBAIFVSTCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojp1
cmwoKSBjb25zdAogICAgIGlmIChpc1dlYkFyZWEoKSkKICAgICAgICAgcmV0dXJuIG1fcmVuZGVy
ZXItPmRvY3VtZW50KCkudXJsKCk7CiAgICAgCi0gICAgaWYgKGlzSW1hZ2UoKSAmJiBtX3JlbmRl
cmVyLT5ub2RlKCkgJiYgaXNIVE1MSW1hZ2VFbGVtZW50KG1fcmVuZGVyZXItPm5vZGUoKSkpCisg
ICAgaWYgKGlzSW1hZ2UoKSAmJiBtX3JlbmRlcmVyLT5ub2RlKCkgJiYgaXM8SFRNTEltYWdlRWxl
bWVudD4obV9yZW5kZXJlci0+bm9kZSgpKSkKICAgICAgICAgcmV0dXJuIGRvd25jYXN0PEhUTUxJ
bWFnZUVsZW1lbnQ+KCptX3JlbmRlcmVyLT5ub2RlKCkpLnNyYygpOwogICAgIAogICAgIGlmIChp
c0lucHV0SW1hZ2UoKSkKQEAgLTE3NTksNyArMTc1OSw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVJl
bmRlck9iamVjdDo6Z2V0RG9jdW1lbnRMaW5rcyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3Im
IHJlCiAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChheG9iaik7CiAgICAgICAgIH0gZWxz
ZSB7CiAgICAgICAgICAgICBOb2RlKiBwYXJlbnQgPSBjdXJyLT5wYXJlbnROb2RlKCk7Ci0gICAg
ICAgICAgICBpZiAocGFyZW50ICYmIGlzSFRNTEFyZWFFbGVtZW50KGN1cnIpICYmIGlzSFRNTE1h
cEVsZW1lbnQocGFyZW50KSkgeworICAgICAgICAgICAgaWYgKHBhcmVudCAmJiBpczxIVE1MQXJl
YUVsZW1lbnQ+KGN1cnIpICYmIGlzPEhUTUxNYXBFbGVtZW50PihwYXJlbnQpKSB7CiAgICAgICAg
ICAgICAgICAgQWNjZXNzaWJpbGl0eUltYWdlTWFwTGluayogYXJlYU9iamVjdCA9IHRvQWNjZXNz
aWJpbGl0eUltYWdlTWFwTGluayhheE9iamVjdENhY2hlKCktPmdldE9yQ3JlYXRlKEltYWdlTWFw
TGlua1JvbGUpKTsKICAgICAgICAgICAgICAgICBIVE1MTWFwRWxlbWVudCYgbWFwID0gZG93bmNh
c3Q8SFRNTE1hcEVsZW1lbnQ+KCpwYXJlbnQpOwogICAgICAgICAgICAgICAgIGFyZWFPYmplY3Qt
PnNldEhUTUxBcmVhRWxlbWVudChkb3duY2FzdDxIVE1MQXJlYUVsZW1lbnQ+KGN1cnIpKTsKQEAg
LTIxNTgsNyArMjE1OCw3IEBAIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlSZW5k
ZXJPYmplY3Q6OmFjY2Vzc2liaWxpdHlJbWFnZU1hcEhpdFRlc3QoSFRNCiAKICAgICBBY2Nlc3Np
YmlsaXR5T2JqZWN0KiBwYXJlbnQgPSBudWxscHRyOwogICAgIGZvciAoRWxlbWVudCogbWFwUGFy
ZW50ID0gYXJlYS0+cGFyZW50RWxlbWVudCgpOyBtYXBQYXJlbnQ7IG1hcFBhcmVudCA9IG1hcFBh
cmVudC0+cGFyZW50RWxlbWVudCgpKSB7Ci0gICAgICAgIGlmIChpc0hUTUxNYXBFbGVtZW50KG1h
cFBhcmVudCkpIHsKKyAgICAgICAgaWYgKGlzPEhUTUxNYXBFbGVtZW50PihtYXBQYXJlbnQpKSB7
CiAgICAgICAgICAgICBwYXJlbnQgPSBhY2Nlc3NpYmlsaXR5UGFyZW50Rm9ySW1hZ2VNYXAoZG93
bmNhc3Q8SFRNTE1hcEVsZW1lbnQ+KG1hcFBhcmVudCkpOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KQEAgLTIyMDgsNyArMjIwOCw3IEBAIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vz
c2liaWxpdHlSZW5kZXJPYmplY3Q6OmFjY2Vzc2liaWxpdHlIaXRUZXN0KGNvbnN0IEludFBvCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgIE5vZGUqIG5vZGUgPSBoaXRUZXN0UmVzdWx0Lmlu
bmVyTm9kZSgpLT5kZXByZWNhdGVkU2hhZG93QW5jZXN0b3JOb2RlKCk7CiAKLSAgICBpZiAoaXNI
VE1MQXJlYUVsZW1lbnQobm9kZSkpCisgICAgaWYgKGlzPEhUTUxBcmVhRWxlbWVudD4obm9kZSkp
CiAgICAgICAgIHJldHVybiBhY2Nlc3NpYmlsaXR5SW1hZ2VNYXBIaXRUZXN0KGRvd25jYXN0PEhU
TUxBcmVhRWxlbWVudD4obm9kZSksIHBvaW50KTsKICAgICAKICAgICBpZiAoaXM8SFRNTE9wdGlv
bkVsZW1lbnQ+KG5vZGUpKQpAQCAtMjU3Miw3ICsyNTcyLDcgQEAgQWNjZXNzaWJpbGl0eVJvbGUg
QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6ZGV0ZXJtaW5lQWNjZXNzaWJpbGl0eVJvbGUoKQog
ICAgIGlmIChub2RlICYmIG5vZGUtPmhhc1RhZ05hbWUodHJUYWcpKQogICAgICAgICByZXR1cm4g
Um93Um9sZTsKIAotICAgIGlmIChub2RlICYmIGlzSFRNTFRhYmxlRWxlbWVudChub2RlKSkKKyAg
ICBpZiAobm9kZSAmJiBpczxIVE1MVGFibGVFbGVtZW50Pihub2RlKSkKICAgICAgICAgcmV0dXJu
IFRhYmxlUm9sZTsKICNlbmRpZgogCkBAIC0yNTg2LDcgKzI1ODYsNyBAQCBBY2Nlc3NpYmlsaXR5
Um9sZSBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpkZXRlcm1pbmVBY2Nlc3NpYmlsaXR5Um9s
ZSgpCiAgICAgaWYgKG5vZGUgJiYgbm9kZS0+aGFzVGFnTmFtZShwVGFnKSkKICAgICAgICAgcmV0
dXJuIFBhcmFncmFwaFJvbGU7CiAKLSAgICBpZiAobm9kZSAmJiBpc0hUTUxMYWJlbEVsZW1lbnQo
bm9kZSkpCisgICAgaWYgKG5vZGUgJiYgaXM8SFRNTExhYmVsRWxlbWVudD4obm9kZSkpCiAgICAg
ICAgIHJldHVybiBMYWJlbFJvbGU7CiAKICAgICBpZiAobm9kZSAmJiBub2RlLT5oYXNUYWdOYW1l
KGRmblRhZykpCkBAIC0yNTk1LDcgKzI1OTUsNyBAQCBBY2Nlc3NpYmlsaXR5Um9sZSBBY2Nlc3Np
YmlsaXR5UmVuZGVyT2JqZWN0OjpkZXRlcm1pbmVBY2Nlc3NpYmlsaXR5Um9sZSgpCiAgICAgaWYg
KG5vZGUgJiYgbm9kZS0+aGFzVGFnTmFtZShkaXZUYWcpKQogICAgICAgICByZXR1cm4gRGl2Um9s
ZTsKIAotICAgIGlmIChub2RlICYmIGlzSFRNTEZvcm1FbGVtZW50KG5vZGUpKQorICAgIGlmIChu
b2RlICYmIGlzPEhUTUxGb3JtRWxlbWVudD4obm9kZSkpCiAgICAgICAgIHJldHVybiBGb3JtUm9s
ZTsKIAogICAgIGlmIChub2RlICYmIG5vZGUtPmhhc1RhZ05hbWUoYXJ0aWNsZVRhZykpCkBAIC0y
NjE3LDkgKzI2MTcsOSBAQCBBY2Nlc3NpYmlsaXR5Um9sZSBBY2Nlc3NpYmlsaXR5UmVuZGVyT2Jq
ZWN0OjpkZXRlcm1pbmVBY2Nlc3NpYmlsaXR5Um9sZSgpCiAgICAgICAgIHJldHVybiBMYW5kbWFy
a0NvbnRlbnRJbmZvUm9sZTsKIAogI2lmIEVOQUJMRShWSURFTykKLSAgICBpZiAobm9kZSAmJiBp
c0hUTUxWaWRlb0VsZW1lbnQobm9kZSkpCisgICAgaWYgKG5vZGUgJiYgaXM8SFRNTFZpZGVvRWxl
bWVudD4obm9kZSkpCiAgICAgICAgIHJldHVybiBWaWRlb1JvbGU7Ci0gICAgaWYgKG5vZGUgJiYg
aXNIVE1MQXVkaW9FbGVtZW50KG5vZGUpKQorICAgIGlmIChub2RlICYmIGlzPEhUTUxBdWRpb0Vs
ZW1lbnQ+KG5vZGUpKQogICAgICAgICByZXR1cm4gQXVkaW9Sb2xlOwogI2VuZGlmCiAgICAgCkBA
IC0zMjY5LDcgKzMyNjksNyBAQCBTdHJpbmcgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6c3Ry
aW5nVmFsdWVGb3JNU0FBKCkgY29uc3QKIHsKICAgICBpZiAoaXNMaW5rYWJsZSgqdGhpcykpIHsK
ICAgICAgICAgRWxlbWVudCogYW5jaG9yID0gYW5jaG9yRWxlbWVudCgpOwotICAgICAgICBpZiAo
YW5jaG9yICYmIGlzSFRNTEFuY2hvckVsZW1lbnQoYW5jaG9yKSkKKyAgICAgICAgaWYgKGFuY2hv
ciAmJiBpczxIVE1MQW5jaG9yRWxlbWVudD4oYW5jaG9yKSkKICAgICAgICAgICAgIHJldHVybiBk
b3duY2FzdDxIVE1MQW5jaG9yRWxlbWVudD4oKmFuY2hvcikuaHJlZigpOwogICAgIH0KIApAQCAt
MzI4Miw3ICszMjgyLDcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojppc0xpbmtl
ZCgpIGNvbnN0CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIEVsZW1lbnQqIGFuY2hvciA9
IGFuY2hvckVsZW1lbnQoKTsKLSAgICBpZiAoIWFuY2hvciB8fCAhaXNIVE1MQW5jaG9yRWxlbWVu
dChhbmNob3IpKQorICAgIGlmICghYW5jaG9yIHx8ICFpczxIVE1MQW5jaG9yRWxlbWVudD4oYW5j
aG9yKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgcmV0dXJuICFkb3duY2FzdDxIVE1M
QW5jaG9yRWxlbWVudD4oKmFuY2hvcikuaHJlZigpLmlzRW1wdHkoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmNwcAppbmRleCBlMjU0
NDNjZmM3NmM3OTYwODcyOTY3OGQyNzZhZGZmNDVhMWFlY2FjLi42YjdlNmNmNGQ0NzY2ODU0Mjkw
MTA3NTg5ZmY5ZTkyODAxNGVlMGQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuY3BwCkBAIC05Niw3ICs5Niw3IEBAIEhUTUxUYWJs
ZUVsZW1lbnQqIEFjY2Vzc2liaWxpdHlUYWJsZTo6dGFibGVFbGVtZW50KCkgY29uc3QKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgCiAgICAgUmVuZGVyVGFibGUqIHRhYmxlID0gdG9SZW5k
ZXJUYWJsZShtX3JlbmRlcmVyKTsKLSAgICBpZiAodGFibGUtPmVsZW1lbnQoKSAmJiBpc0hUTUxU
YWJsZUVsZW1lbnQodGFibGUtPmVsZW1lbnQoKSkpCisgICAgaWYgKHRhYmxlLT5lbGVtZW50KCkg
JiYgaXM8SFRNTFRhYmxlRWxlbWVudD4odGFibGUtPmVsZW1lbnQoKSkpCiAgICAgICAgIHJldHVy
biBkb3duY2FzdDxIVE1MVGFibGVFbGVtZW50Pih0YWJsZS0+ZWxlbWVudCgpKTsKICAgICAKICAg
ICAvLyBJZiB0aGUgdGFibGUgaGFzIGEgZGlzcGxheTp0YWJsZS1yb3ctZ3JvdXAsIHRoZW4gdGhl
IFJlbmRlclRhYmxlIGRvZXMgbm90IGhhdmUgYSBwb2ludGVyIHRvIGl0J3MgSFRNTFRhYmxlRWxl
bWVudC4KQEAgLTEwNiw3ICsxMDYsNyBAQCBIVE1MVGFibGVFbGVtZW50KiBBY2Nlc3NpYmlsaXR5
VGFibGU6OnRhYmxlRWxlbWVudCgpIGNvbnN0CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAg
IAogICAgIEVsZW1lbnQqIGFjdHVhbFRhYmxlID0gZmlyc3RCb2R5LT5lbGVtZW50KCktPnBhcmVu
dEVsZW1lbnQoKTsKLSAgICBpZiAoIWFjdHVhbFRhYmxlIHx8ICFpc0hUTUxUYWJsZUVsZW1lbnQo
YWN0dWFsVGFibGUpKQorICAgIGlmICghYWN0dWFsVGFibGUgfHwgIWlzPEhUTUxUYWJsZUVsZW1l
bnQ+KGFjdHVhbFRhYmxlKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgCiAgICAgcmV0
dXJuIGRvd25jYXN0PEhUTUxUYWJsZUVsZW1lbnQ+KGFjdHVhbFRhYmxlKTsKQEAgLTMyOCw3ICsz
MjgsNyBAQCBib29sIEFjY2Vzc2liaWxpdHlUYWJsZTo6aXNUYWJsZUV4cG9zYWJsZVRocm91Z2hB
Y2Nlc3NpYmlsaXR5KCkgY29uc3QKICAgICAvLyBHdGsrIEFUcyBleHBlY3QgYWxsIHRhYmxlcyB0
byBiZSBleHBvc2VkIGFzIHRhYmxlcy4KICNpZiBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKEVG
TCkKICAgICBFbGVtZW50KiB0YWJsZU5vZGUgPSB0b1JlbmRlclRhYmxlKG1fcmVuZGVyZXIpLT5l
bGVtZW50KCk7Ci0gICAgcmV0dXJuIHRhYmxlTm9kZSAmJiBpc0hUTUxUYWJsZUVsZW1lbnQodGFi
bGVOb2RlKTsKKyAgICByZXR1cm4gdGFibGVOb2RlICYmIGlzPEhUTUxUYWJsZUVsZW1lbnQ+KHRh
YmxlTm9kZSk7CiAjZW5kaWYKIAogICAgIHJldHVybiBpc0RhdGFUYWJsZSgpOwpAQCAtNjA3LDcg
KzYwNyw3IEBAIFN0cmluZyBBY2Nlc3NpYmlsaXR5VGFibGU6OnRpdGxlKCkgY29uc3QKICAgICAK
ICAgICAvLyBzZWUgaWYgdGhlcmUgaXMgYSBjYXB0aW9uCiAgICAgTm9kZSogdGFibGVFbGVtZW50
ID0gbV9yZW5kZXJlci0+bm9kZSgpOwotICAgIGlmICh0YWJsZUVsZW1lbnQgJiYgaXNIVE1MVGFi
bGVFbGVtZW50KHRhYmxlRWxlbWVudCkpIHsKKyAgICBpZiAodGFibGVFbGVtZW50ICYmIGlzPEhU
TUxUYWJsZUVsZW1lbnQ+KHRhYmxlRWxlbWVudCkpIHsKICAgICAgICAgaWYgKEhUTUxUYWJsZUNh
cHRpb25FbGVtZW50KiBjYXB0aW9uID0gZG93bmNhc3Q8SFRNTFRhYmxlRWxlbWVudD4oKnRhYmxl
RWxlbWVudCkuY2FwdGlvbigpKQogICAgICAgICAgICAgdGl0bGUgPSBjYXB0aW9uLT5pbm5lclRl
eHQoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0
ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlVGFibGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZVRhYmxlLmNwcAppbmRleCA2
NTliODhmOGM3OWFiYTFjNDAxMDFiNjk5MjkxNmQ0ZWI0NjM3MTVkLi4zNDkyYjdlMGVmMmM3N2Y5
ZDQzZTljNzZiZmE2ZTg2ZWNlZmM2MGM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlVGFibGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VU
YWJsZS5jcHAKQEAgLTI0NCw3ICsyNDQsNyBAQCBzdGF0aWMgQXRrT2JqZWN0KiB3ZWJraXRBY2Nl
c3NpYmxlVGFibGVHZXRDYXB0aW9uKEF0a1RhYmxlKiB0YWJsZSkKICAgICBBY2Nlc3NpYmlsaXR5
T2JqZWN0KiBhY2NUYWJsZSA9IGNvcmUodGFibGUpOwogICAgIGlmIChhY2NUYWJsZS0+aXNBY2Nl
c3NpYmlsaXR5UmVuZGVyT2JqZWN0KCkpIHsKICAgICAgICAgTm9kZSogbm9kZSA9IGFjY1RhYmxl
LT5ub2RlKCk7Ci0gICAgICAgIGlmIChub2RlICYmIGlzSFRNTFRhYmxlRWxlbWVudChub2RlKSkg
eworICAgICAgICBpZiAobm9kZSAmJiBpczxIVE1MVGFibGVFbGVtZW50Pihub2RlKSkgewogICAg
ICAgICAgICAgSFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQqIGNhcHRpb24gPSBkb3duY2FzdDxIVE1M
VGFibGVFbGVtZW50Pigqbm9kZSkuY2FwdGlvbigpOwogICAgICAgICAgICAgaWYgKGNhcHRpb24p
CiAgICAgICAgICAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmZpcnN0QWNjZXNz
aWJsZU9iamVjdEZyb21Ob2RlKGNhcHRpb24tPnJlbmRlcmVyKCktPmVsZW1lbnQoKSktPndyYXBw
ZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTERvY3Vt
ZW50Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTERvY3VtZW50
Q3VzdG9tLmNwcAppbmRleCA3OTUzYzZjZDViZTM1Y2I1YTg1NGJhMDAyZGYwZWM5ZTkxYzYxZGVh
Li41MjIxZTFkZWQ1NGJhYjlmMWY4YTgzYWQ1NjAxMWQ2YzhkZWY0OTlkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxEb2N1bWVudEN1c3RvbS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MRG9jdW1lbnRDdXN0b20uY3BwCkBAIC03
Myw3ICs3Myw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTSFRNTERvY3VtZW50OjpuYW1lR2V0dGVyKEV4
ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLCBFCiAgICAgfQogCiAgICAgRWxlbWVu
dCogZWxlbWVudCA9IGRvY3VtZW50LmRvY3VtZW50TmFtZWRJdGVtKCphdG9taWNQcm9wZXJ0eU5h
bWUpOwotICAgIGlmIChVTkxJS0VMWShpc0hUTUxJRnJhbWVFbGVtZW50KGVsZW1lbnQpKSkgewor
ICAgIGlmIChVTkxJS0VMWShpczxIVE1MSUZyYW1lRWxlbWVudD4oZWxlbWVudCkpKSB7CiAgICAg
ICAgIGlmIChGcmFtZSogZnJhbWUgPSBkb3duY2FzdDxIVE1MSUZyYW1lRWxlbWVudD4oKmVsZW1l
bnQpLmNvbnRlbnRGcmFtZSgpKQogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0
b0pTKGV4ZWMsIGZyYW1lKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNOb2RlQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
Tm9kZUN1c3RvbS5jcHAKaW5kZXggMmUxZDEyNjZlM2MyM2I4MTRkYTk5ZmVmOTgxNTg2ZWQ3OTUz
ZmYwMC4uN2NhYjE4NGMzZTA1OGI4ZWUyN2IyNzEwODdmZGE5YjRkNGM0ZDJkMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlQ3VzdG9tLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVDdXN0b20uY3BwCkBAIC0xMDUsMTIgKzEwNSwx
MiBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNSZWFjaGFibGVGcm9tRE9NKEpTTm9kZSoganNOb2Rl
LCBOb2RlKiBub2RlLCBTbG90VmlzaXRvciYgdgogICAgICAgICAgICAgLy8gYmVjYXVzZSBpdCBp
cyB0aGUgb25seSB0aGluZyBrZWVwaW5nIHRoZSBpbWFnZSBlbGVtZW50IGFsaXZlLCBhbmQgaWYK
ICAgICAgICAgICAgIC8vIHRoZSBlbGVtZW50IGlzIGRlc3Ryb3llZCwgaXRzIGxvYWQgZXZlbnQg
d2lsbCBub3QgZmlyZS4KICAgICAgICAgICAgIC8vIEZJWE1FOiBUaGUgRE9NIHNob3VsZCBtYW5h
Z2UgdGhpcyBpc3N1ZSB3aXRob3V0IHRoZSBoZWxwIG9mIEphdmFTY3JpcHQgd3JhcHBlcnMuCi0g
ICAgICAgICAgICBpZiAoaXNIVE1MSW1hZ2VFbGVtZW50KGVsZW1lbnQpKSB7CisgICAgICAgICAg
ICBpZiAoaXM8SFRNTEltYWdlRWxlbWVudD4oZWxlbWVudCkpIHsKICAgICAgICAgICAgICAgICBp
ZiAoZG93bmNhc3Q8SFRNTEltYWdlRWxlbWVudD4oZWxlbWVudCkuaGFzUGVuZGluZ0FjdGl2aXR5
KCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgfQogI2lm
IEVOQUJMRShWSURFTykKLSAgICAgICAgICAgIGVsc2UgaWYgKGlzSFRNTEF1ZGlvRWxlbWVudChl
bGVtZW50KSkgeworICAgICAgICAgICAgZWxzZSBpZiAoaXM8SFRNTEF1ZGlvRWxlbWVudD4oZWxl
bWVudCkpIHsKICAgICAgICAgICAgICAgICBpZiAoIWRvd25jYXN0PEhUTUxBdWRpb0VsZW1lbnQ+
KGVsZW1lbnQpLnBhdXNlZCgpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NEZWZhdWx0U3R5
bGVTaGVldHMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0RlZmF1bHRTdHlsZVNoZWV0cy5j
cHAKaW5kZXggNzM5YWE2MTBjOTA1ZDI0YWM3MDZhNDJkOTgyZjI3YmFjZjBkMjI5OC4uYTI0N2Nl
OTM5YjgwMzcwNmZiNTE0YzkxMTJiNTgwODU1MDQxYjBkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0RlZmF1bHRTdHlsZVNoZWV0cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0RlZmF1bHRTdHlsZVNoZWV0cy5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRl
ICJDaHJvbWVDbGllbnQuaCIKICNpbmNsdWRlICJIVE1MQW5jaG9yRWxlbWVudC5oIgogI2luY2x1
ZGUgIkhUTUxBdWRpb0VsZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1MQlJFbGVtZW50LmgiCiAjaW5j
bHVkZSAiTWVkaWFRdWVyeUV2YWx1YXRvci5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRl
ICJSZW5kZXJUaGVtZS5oIgpAQCAtNjIsOSArNjMsMTIgQEAgU3R5bGVTaGVldENvbnRlbnRzKiBD
U1NEZWZhdWx0U3R5bGVTaGVldHM6OmltYWdlQ29udHJvbHNTdHlsZVNoZWV0OwogLy8gRklYTUU6
IEl0IHdvdWxkIGJlIG5pY2UgdG8gdXNlIHNvbWUgbWVjaGFuaXNtIHRoYXQgZ3VhcmFudGVlcyB0
aGlzIGlzIGluIHN5bmMgd2l0aCB0aGUgcmVhbCBVQSBzdHlsZXNoZWV0Lgogc3RhdGljIGNvbnN0
IGNoYXIqIHNpbXBsZVVzZXJBZ2VudFN0eWxlU2hlZXQgPSAiaHRtbCxib2R5LGRpdntkaXNwbGF5
OmJsb2NrfWhlYWR7ZGlzcGxheTpub25lfWJvZHl7bWFyZ2luOjhweH1kaXY6Zm9jdXMsc3Bhbjpm
b2N1cyxhOmZvY3Vze291dGxpbmU6YXV0byA1cHggLXdlYmtpdC1mb2N1cy1yaW5nLWNvbG9yfWE6
LXdlYmtpdC1hbnktbGlua3tjb2xvcjotd2Via2l0LWxpbms7dGV4dC1kZWNvcmF0aW9uOnVuZGVy
bGluZX1hOi13ZWJraXQtYW55LWxpbms6YWN0aXZle2NvbG9yOi13ZWJraXQtYWN0aXZlbGlua30i
OwogCi1zdGF0aWMgaW5saW5lIGJvb2wgZWxlbWVudENhblVzZVNpbXBsZURlZmF1bHRTdHlsZShF
bGVtZW50KiBlKQorc3RhdGljIGlubGluZSBib29sIGVsZW1lbnRDYW5Vc2VTaW1wbGVEZWZhdWx0
U3R5bGUoRWxlbWVudCYgZWxlbWVudCkKIHsKLSAgICByZXR1cm4gZS0+aGFzVGFnTmFtZShodG1s
VGFnKSB8fCBlLT5oYXNUYWdOYW1lKGhlYWRUYWcpIHx8IGUtPmhhc1RhZ05hbWUoYm9keVRhZykg
fHwgZS0+aGFzVGFnTmFtZShkaXZUYWcpIHx8IGUtPmhhc1RhZ05hbWUoc3BhblRhZykgfHwgZS0+
aGFzVGFnTmFtZShiclRhZykgfHwgaXNIVE1MQW5jaG9yRWxlbWVudChlKTsKKyAgICByZXR1cm4g
aXM8SFRNTEh0bWxFbGVtZW50PihlbGVtZW50KSB8fCBpczxIVE1MSGVhZEVsZW1lbnQ+KGVsZW1l
bnQpCisgICAgICAgIHx8IGlzPEhUTUxCb2R5RWxlbWVudD4oZWxlbWVudCkgfHwgaXM8SFRNTERp
dkVsZW1lbnQ+KGVsZW1lbnQpCisgICAgICAgIHx8IGlzPEhUTUxTcGFuRWxlbWVudD4oZWxlbWVu
dCkgfHwgaXM8SFRNTEJSRWxlbWVudD4oZWxlbWVudCkKKyAgICAgICAgfHwgaXM8SFRNTEFuY2hv
ckVsZW1lbnQ+KGVsZW1lbnQpOwogfQogCiBzdGF0aWMgY29uc3QgTWVkaWFRdWVyeUV2YWx1YXRv
ciYgc2NyZWVuRXZhbCgpCkBAIC05NCw3ICs5OCw3IEBAIHN0YXRpYyBTdHlsZVNoZWV0Q29udGVu
dHMqIHBhcnNlVUFTaGVldChjb25zdCBjaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBzaXplKQog
dm9pZCBDU1NEZWZhdWx0U3R5bGVTaGVldHM6OmluaXREZWZhdWx0U3R5bGUoRWxlbWVudCogcm9v
dCkKIHsKICAgICBpZiAoIWRlZmF1bHRTdHlsZSkgewotICAgICAgICBpZiAoIXJvb3QgfHwgZWxl
bWVudENhblVzZVNpbXBsZURlZmF1bHRTdHlsZShyb290KSkKKyAgICAgICAgaWYgKCFyb290IHx8
IGVsZW1lbnRDYW5Vc2VTaW1wbGVEZWZhdWx0U3R5bGUoKnJvb3QpKQogICAgICAgICAgICAgbG9h
ZFNpbXBsZURlZmF1bHRTdHlsZSgpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBsb2FkRnVs
bERlZmF1bHRTdHlsZSgpOwpAQCAtMTQ2LDE0ICsxNTAsMTQgQEAgdm9pZCBDU1NEZWZhdWx0U3R5
bGVTaGVldHM6OmxvYWRTaW1wbGVEZWZhdWx0U3R5bGUoKQogICAgIC8vIE5vIG5lZWQgdG8gaW5p
dGlhbGl6ZSBxdWlya3Mgc2hlZXQgeWV0IGFzIHRoZXJlIGFyZSBubyBxdWlyayBydWxlcyBmb3Ig
ZWxlbWVudHMgYWxsb3dlZCBpbiBzaW1wbGUgZGVmYXVsdCBzdHlsZS4KIH0KIAotdm9pZCBDU1NE
ZWZhdWx0U3R5bGVTaGVldHM6OmVuc3VyZURlZmF1bHRTdHlsZVNoZWV0c0ZvckVsZW1lbnQoRWxl
bWVudCogZWxlbWVudCwgYm9vbCYgY2hhbmdlZERlZmF1bHRTdHlsZSkKK3ZvaWQgQ1NTRGVmYXVs
dFN0eWxlU2hlZXRzOjplbnN1cmVEZWZhdWx0U3R5bGVTaGVldHNGb3JFbGVtZW50KEVsZW1lbnQm
IGVsZW1lbnQsIGJvb2wmIGNoYW5nZWREZWZhdWx0U3R5bGUpCiB7CiAgICAgaWYgKHNpbXBsZURl
ZmF1bHRTdHlsZVNoZWV0ICYmICFlbGVtZW50Q2FuVXNlU2ltcGxlRGVmYXVsdFN0eWxlKGVsZW1l
bnQpKSB7CiAgICAgICAgIGxvYWRGdWxsRGVmYXVsdFN0eWxlKCk7CiAgICAgICAgIGNoYW5nZWRE
ZWZhdWx0U3R5bGUgPSB0cnVlOwogICAgIH0KIAotICAgIGlmIChlbGVtZW50LT5pc1NWR0VsZW1l
bnQoKSAmJiAhc3ZnU3R5bGVTaGVldCkgeworICAgIGlmIChlbGVtZW50LmlzU1ZHRWxlbWVudCgp
ICYmICFzdmdTdHlsZVNoZWV0KSB7CiAgICAgICAgIC8vIFNWRyBydWxlcy4KICAgICAgICAgc3Zn
U3R5bGVTaGVldCA9IHBhcnNlVUFTaGVldChzdmdVc2VyQWdlbnRTdHlsZVNoZWV0LCBzaXplb2Yo
c3ZnVXNlckFnZW50U3R5bGVTaGVldCkpOwogICAgICAgICBkZWZhdWx0U3R5bGUtPmFkZFJ1bGVz
RnJvbVNoZWV0KHN2Z1N0eWxlU2hlZXQsIHNjcmVlbkV2YWwoKSk7CkBAIC0xNjIsNyArMTY2LDcg
QEAgdm9pZCBDU1NEZWZhdWx0U3R5bGVTaGVldHM6OmVuc3VyZURlZmF1bHRTdHlsZVNoZWV0c0Zv
ckVsZW1lbnQoRWxlbWVudCogZWxlbWVudCwKICAgICB9CiAKICNpZiBFTkFCTEUoTUFUSE1MKQot
ICAgIGlmIChlbGVtZW50LT5pc01hdGhNTEVsZW1lbnQoKSAmJiAhbWF0aE1MU3R5bGVTaGVldCkg
eworICAgIGlmIChlbGVtZW50LmlzTWF0aE1MRWxlbWVudCgpICYmICFtYXRoTUxTdHlsZVNoZWV0
KSB7CiAgICAgICAgIC8vIE1hdGhNTCBydWxlcy4KICAgICAgICAgbWF0aE1MU3R5bGVTaGVldCA9
IHBhcnNlVUFTaGVldChtYXRobWxVc2VyQWdlbnRTdHlsZVNoZWV0LCBzaXplb2YobWF0aG1sVXNl
ckFnZW50U3R5bGVTaGVldCkpOwogICAgICAgICBkZWZhdWx0U3R5bGUtPmFkZFJ1bGVzRnJvbVNo
ZWV0KG1hdGhNTFN0eWxlU2hlZXQsIHNjcmVlbkV2YWwoKSk7CkBAIC0xNzIsMTAgKzE3NiwxMCBA
QCB2b2lkIENTU0RlZmF1bHRTdHlsZVNoZWV0czo6ZW5zdXJlRGVmYXVsdFN0eWxlU2hlZXRzRm9y
RWxlbWVudChFbGVtZW50KiBlbGVtZW50LAogI2VuZGlmCiAKICNpZiBFTkFCTEUoVklERU8pCi0g
ICAgaWYgKCFtZWRpYUNvbnRyb2xzU3R5bGVTaGVldCAmJiAoZWxlbWVudC0+aGFzVGFnTmFtZSh2
aWRlb1RhZykgfHwgaXNIVE1MQXVkaW9FbGVtZW50KGVsZW1lbnQpKSkgewotICAgICAgICBTdHJp
bmcgbWVkaWFSdWxlcyA9IFJlbmRlclRoZW1lOjp0aGVtZUZvclBhZ2UoZWxlbWVudC0+ZG9jdW1l
bnQoKS5wYWdlKCkpLT5tZWRpYUNvbnRyb2xzU3R5bGVTaGVldCgpOworICAgIGlmICghbWVkaWFD
b250cm9sc1N0eWxlU2hlZXQgJiYgKGlzPEhUTUxWaWRlb0VsZW1lbnQ+KGVsZW1lbnQpIHx8IGlz
PEhUTUxBdWRpb0VsZW1lbnQ+KGVsZW1lbnQpKSkgeworICAgICAgICBTdHJpbmcgbWVkaWFSdWxl
cyA9IFJlbmRlclRoZW1lOjp0aGVtZUZvclBhZ2UoZWxlbWVudC5kb2N1bWVudCgpLnBhZ2UoKSkt
Pm1lZGlhQ29udHJvbHNTdHlsZVNoZWV0KCk7CiAgICAgICAgIGlmIChtZWRpYVJ1bGVzLmlzRW1w
dHkoKSkKLSAgICAgICAgICAgIG1lZGlhUnVsZXMgPSBTdHJpbmcobWVkaWFDb250cm9sc1VzZXJB
Z2VudFN0eWxlU2hlZXQsIHNpemVvZihtZWRpYUNvbnRyb2xzVXNlckFnZW50U3R5bGVTaGVldCkp
ICsgUmVuZGVyVGhlbWU6OnRoZW1lRm9yUGFnZShlbGVtZW50LT5kb2N1bWVudCgpLnBhZ2UoKSkt
PmV4dHJhTWVkaWFDb250cm9sc1N0eWxlU2hlZXQoKTsKKyAgICAgICAgICAgIG1lZGlhUnVsZXMg
PSBTdHJpbmcobWVkaWFDb250cm9sc1VzZXJBZ2VudFN0eWxlU2hlZXQsIHNpemVvZihtZWRpYUNv
bnRyb2xzVXNlckFnZW50U3R5bGVTaGVldCkpICsgUmVuZGVyVGhlbWU6OnRoZW1lRm9yUGFnZShl
bGVtZW50LmRvY3VtZW50KCkucGFnZSgpKS0+ZXh0cmFNZWRpYUNvbnRyb2xzU3R5bGVTaGVldCgp
OwogICAgICAgICBtZWRpYUNvbnRyb2xzU3R5bGVTaGVldCA9IHBhcnNlVUFTaGVldChtZWRpYVJ1
bGVzKTsKICAgICAgICAgZGVmYXVsdFN0eWxlLT5hZGRSdWxlc0Zyb21TaGVldChtZWRpYUNvbnRy
b2xzU3R5bGVTaGVldCwgc2NyZWVuRXZhbCgpKTsKICAgICAgICAgZGVmYXVsdFByaW50U3R5bGUt
PmFkZFJ1bGVzRnJvbVNoZWV0KG1lZGlhQ29udHJvbHNTdHlsZVNoZWV0LCBwcmludEV2YWwoKSk7
CkBAIC0xODQsNyArMTg4LDcgQEAgdm9pZCBDU1NEZWZhdWx0U3R5bGVTaGVldHM6OmVuc3VyZURl
ZmF1bHRTdHlsZVNoZWV0c0ZvckVsZW1lbnQoRWxlbWVudCogZWxlbWVudCwKICNlbmRpZgogCiAj
aWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQotICAgIGlmICghZnVsbHNjcmVlblN0eWxlU2hlZXQg
JiYgZWxlbWVudC0+ZG9jdW1lbnQoKS53ZWJraXRJc0Z1bGxTY3JlZW4oKSkgeworICAgIGlmICgh
ZnVsbHNjcmVlblN0eWxlU2hlZXQgJiYgZWxlbWVudC5kb2N1bWVudCgpLndlYmtpdElzRnVsbFNj
cmVlbigpKSB7CiAgICAgICAgIFN0cmluZyBmdWxsc2NyZWVuUnVsZXMgPSBTdHJpbmcoZnVsbHNj
cmVlblVzZXJBZ2VudFN0eWxlU2hlZXQsIHNpemVvZihmdWxsc2NyZWVuVXNlckFnZW50U3R5bGVT
aGVldCkpICsgUmVuZGVyVGhlbWU6OmRlZmF1bHRUaGVtZSgpLT5leHRyYUZ1bGxTY3JlZW5TdHls
ZVNoZWV0KCk7CiAgICAgICAgIGZ1bGxzY3JlZW5TdHlsZVNoZWV0ID0gcGFyc2VVQVNoZWV0KGZ1
bGxzY3JlZW5SdWxlcyk7CiAgICAgICAgIGRlZmF1bHRTdHlsZS0+YWRkUnVsZXNGcm9tU2hlZXQo
ZnVsbHNjcmVlblN0eWxlU2hlZXQsIHNjcmVlbkV2YWwoKSk7CkBAIC0xOTQsOCArMTk4LDggQEAg
dm9pZCBDU1NEZWZhdWx0U3R5bGVTaGVldHM6OmVuc3VyZURlZmF1bHRTdHlsZVNoZWV0c0ZvckVs
ZW1lbnQoRWxlbWVudCogZWxlbWVudCwKICNlbmRpZgogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfQ09O
VFJPTFMpCi0gICAgaWYgKCFpbWFnZUNvbnRyb2xzU3R5bGVTaGVldCAmJiBlbGVtZW50LT5pc0lt
YWdlQ29udHJvbHNSb290RWxlbWVudCgpKSB7Ci0gICAgICAgIFN0cmluZyBpbWFnZUNvbnRyb2xz
UnVsZXMgPSBSZW5kZXJUaGVtZTo6dGhlbWVGb3JQYWdlKGVsZW1lbnQtPmRvY3VtZW50KCkucGFn
ZSgpKS0+aW1hZ2VDb250cm9sc1N0eWxlU2hlZXQoKTsKKyAgICBpZiAoIWltYWdlQ29udHJvbHNT
dHlsZVNoZWV0ICYmIGVsZW1lbnQuaXNJbWFnZUNvbnRyb2xzUm9vdEVsZW1lbnQoKSkgeworICAg
ICAgICBTdHJpbmcgaW1hZ2VDb250cm9sc1J1bGVzID0gUmVuZGVyVGhlbWU6OnRoZW1lRm9yUGFn
ZShlbGVtZW50LmRvY3VtZW50KCkucGFnZSgpKS0+aW1hZ2VDb250cm9sc1N0eWxlU2hlZXQoKTsK
ICAgICAgICAgaW1hZ2VDb250cm9sc1N0eWxlU2hlZXQgPSBwYXJzZVVBU2hlZXQoaW1hZ2VDb250
cm9sc1J1bGVzKTsKICAgICAgICAgZGVmYXVsdFN0eWxlLT5hZGRSdWxlc0Zyb21TaGVldChpbWFn
ZUNvbnRyb2xzU3R5bGVTaGVldCwgc2NyZWVuRXZhbCgpKTsKICAgICAgICAgZGVmYXVsdFByaW50
U3R5bGUtPmFkZFJ1bGVzRnJvbVNoZWV0KGltYWdlQ29udHJvbHNTdHlsZVNoZWV0LCBwcmludEV2
YWwoKSk7CkBAIC0yMDMsOCArMjA3LDggQEAgdm9pZCBDU1NEZWZhdWx0U3R5bGVTaGVldHM6OmVu
c3VyZURlZmF1bHRTdHlsZVNoZWV0c0ZvckVsZW1lbnQoRWxlbWVudCogZWxlbWVudCwKICAgICB9
CiAjZW5kaWYKIAotICAgIGlmICghcGx1Z0luc1N0eWxlU2hlZXQgJiYgKGVsZW1lbnQtPmhhc1Rh
Z05hbWUob2JqZWN0VGFnKSB8fCBlbGVtZW50LT5oYXNUYWdOYW1lKGVtYmVkVGFnKSkpIHsKLSAg
ICAgICAgU3RyaW5nIHBsdWdJbnNSdWxlcyA9IFJlbmRlclRoZW1lOjp0aGVtZUZvclBhZ2UoZWxl
bWVudC0+ZG9jdW1lbnQoKS5wYWdlKCkpLT5leHRyYVBsdWdJbnNTdHlsZVNoZWV0KCkgKyBlbGVt
ZW50LT5kb2N1bWVudCgpLnBhZ2UoKS0+Y2hyb21lKCkuY2xpZW50KCkucGx1Z0luRXh0cmFTdHls
ZVNoZWV0KCk7CisgICAgaWYgKCFwbHVnSW5zU3R5bGVTaGVldCAmJiAoaXM8SFRNTE9iamVjdEVs
ZW1lbnQ+KGVsZW1lbnQpIHx8IGlzPEhUTUxFbWJlZEVsZW1lbnQ+KGVsZW1lbnQpKSkgeworICAg
ICAgICBTdHJpbmcgcGx1Z0luc1J1bGVzID0gUmVuZGVyVGhlbWU6OnRoZW1lRm9yUGFnZShlbGVt
ZW50LmRvY3VtZW50KCkucGFnZSgpKS0+ZXh0cmFQbHVnSW5zU3R5bGVTaGVldCgpICsgZWxlbWVu
dC5kb2N1bWVudCgpLnBhZ2UoKS0+Y2hyb21lKCkuY2xpZW50KCkucGx1Z0luRXh0cmFTdHlsZVNo
ZWV0KCk7CiAgICAgICAgIGlmIChwbHVnSW5zUnVsZXMuaXNFbXB0eSgpKQogICAgICAgICAgICAg
cGx1Z0luc1J1bGVzID0gU3RyaW5nKHBsdWdJbnNVc2VyQWdlbnRTdHlsZVNoZWV0LCBzaXplb2Yo
cGx1Z0luc1VzZXJBZ2VudFN0eWxlU2hlZXQpKTsKICAgICAgICAgcGx1Z0luc1N0eWxlU2hlZXQg
PSBwYXJzZVVBU2hlZXQocGx1Z0luc1J1bGVzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NEZWZhdWx0U3R5bGVTaGVldHMuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NEZWZh
dWx0U3R5bGVTaGVldHMuaAppbmRleCBmZWNkNDZkM2RkNTBkZDQzNzY3NmZlOGQzNTgwNzlkZDY3
YmVlOTY2Li43OTNjYzlhYTEzOTlhNTMwYjFlMmNiM2I1ZWEzNTFjYjQ1MDk3NWQ3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRGVmYXVsdFN0eWxlU2hlZXRzLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0RlZmF1bHRTdHlsZVNoZWV0cy5oCkBAIC00NSw3ICs0NSw3IEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgU3R5bGVTaGVldENvbnRlbnRzKiBwbHVnSW5zU3R5bGVTaGVl
dDsKICAgICBzdGF0aWMgU3R5bGVTaGVldENvbnRlbnRzKiBpbWFnZUNvbnRyb2xzU3R5bGVTaGVl
dDsKIAotICAgIHN0YXRpYyB2b2lkIGVuc3VyZURlZmF1bHRTdHlsZVNoZWV0c0ZvckVsZW1lbnQo
RWxlbWVudCosIGJvb2wmIGNoYW5nZWREZWZhdWx0U3R5bGUpOworICAgIHN0YXRpYyB2b2lkIGVu
c3VyZURlZmF1bHRTdHlsZVNoZWV0c0ZvckVsZW1lbnQoRWxlbWVudCYsIGJvb2wmIGNoYW5nZWRE
ZWZhdWx0U3R5bGUpOwogICAgIHN0YXRpYyB2b2lkIGxvYWRGdWxsRGVmYXVsdFN0eWxlKCk7CiAg
ICAgc3RhdGljIHZvaWQgbG9hZFNpbXBsZURlZmF1bHRTdHlsZSgpOwogICAgIHN0YXRpYyB2b2lk
IGluaXREZWZhdWx0U3R5bGUoRWxlbWVudCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1N0eWxlU2hlZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQu
Y3BwCmluZGV4IGI4MzgzNTUyYzg5YjNhYzExODkxYWM2YjEzOTUwNTk5OTUxNDg1ODIuLmFhZDZl
NTg5ZmYxNTFjYjYyNjY2ZDY5ZTRiZWYzN2M0ZDY0MzRjNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
U3R5bGVTaGVldC5jcHAKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJNZWRpYUxpc3QuaCIK
ICNpbmNsdWRlICJOb2RlLmgiCiAjaW5jbHVkZSAiU1ZHTmFtZXMuaCIKKyNpbmNsdWRlICJTVkdT
dHlsZUVsZW1lbnQuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIlN0
eWxlUmVzb2x2ZXIuaCIKICNpbmNsdWRlICJTdHlsZVJ1bGUuaCIKQEAgLTY3LDkgKzY4LDkgQEAg
c3RhdGljIGJvb2wgaXNBY2NlcHRhYmxlQ1NTU3R5bGVTaGVldFBhcmVudChOb2RlKiBwYXJlbnRO
b2RlKQogICAgIC8vIE9ubHkgdGhlc2Ugbm9kZXMgY2FuIGJlIHBhcmVudHMgb2YgU3R5bGVTaGVl
dHMsIGFuZCB0aGV5IG5lZWQgdG8gY2FsbCBjbGVhck93bmVyTm9kZSgpIHdoZW4gbW92ZWQgb3V0
IG9mIGRvY3VtZW50LgogICAgIHJldHVybiAhcGFyZW50Tm9kZQogICAgICAgICB8fCBwYXJlbnRO
b2RlLT5pc0RvY3VtZW50Tm9kZSgpCi0gICAgICAgIHx8IHBhcmVudE5vZGUtPmhhc1RhZ05hbWUo
SFRNTE5hbWVzOjpsaW5rVGFnKQotICAgICAgICB8fCBpc0hUTUxTdHlsZUVsZW1lbnQocGFyZW50
Tm9kZSkKLSAgICAgICAgfHwgcGFyZW50Tm9kZS0+aGFzVGFnTmFtZShTVkdOYW1lczo6c3R5bGVU
YWcpCisgICAgICAgIHx8IGlzPEhUTUxMaW5rRWxlbWVudD4ocGFyZW50Tm9kZSkKKyAgICAgICAg
fHwgaXM8SFRNTFN0eWxlRWxlbWVudD4ocGFyZW50Tm9kZSkKKyAgICAgICAgfHwgaXM8U1ZHU3R5
bGVFbGVtZW50PihwYXJlbnROb2RlKQogICAgICAgICB8fCBwYXJlbnROb2RlLT5ub2RlVHlwZSgp
ID09IE5vZGU6OlBST0NFU1NJTkdfSU5TVFJVQ1RJT05fTk9ERTsKIH0KICNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCmluZGV4IDkwNzY2YmI3YzFlZDVlNDRkYTU1NDcxMTZk
MjU5ZjQxYzM4Nzg3YzcuLjg4NGY2OTRmMTMyMWNlMjM3YmFiZGJiOWFlMDlkNjUxYjg3NjA4YTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKQEAgLTc4Myw3ICs3ODMsNyBAQCBQ
YXNzUmVmPFJlbmRlclN0eWxlPiBTdHlsZVJlc29sdmVyOjpzdHlsZUZvckVsZW1lbnQoRWxlbWVu
dCogZWxlbWVudCwgUmVuZGVyU3R5bAogICAgIH0KIAogICAgIGJvb2wgbmVlZHNDb2xsZWN0aW9u
ID0gZmFsc2U7Ci0gICAgQ1NTRGVmYXVsdFN0eWxlU2hlZXRzOjplbnN1cmVEZWZhdWx0U3R5bGVT
aGVldHNGb3JFbGVtZW50KGVsZW1lbnQsIG5lZWRzQ29sbGVjdGlvbik7CisgICAgQ1NTRGVmYXVs
dFN0eWxlU2hlZXRzOjplbnN1cmVEZWZhdWx0U3R5bGVTaGVldHNGb3JFbGVtZW50KCplbGVtZW50
LCBuZWVkc0NvbGxlY3Rpb24pOwogICAgIGlmIChuZWVkc0NvbGxlY3Rpb24pCiAgICAgICAgIG1f
cnVsZVNldHMuY29sbGVjdEZlYXR1cmVzKCk7CiAKQEAgLTExNzAsNyArMTE3MCw3IEBAIHZvaWQg
U3R5bGVSZXNvbHZlcjo6YWRqdXN0UmVuZGVyU3R5bGUoUmVuZGVyU3R5bGUmIHN0eWxlLCBjb25z
dCBSZW5kZXJTdHlsZSYgcGFyCiAgICAgICAgICAgICBpZiAoZS0+aGFzVGFnTmFtZSh0ZFRhZykp
IHsKICAgICAgICAgICAgICAgICBzdHlsZS5zZXREaXNwbGF5KFRBQkxFX0NFTEwpOwogICAgICAg
ICAgICAgICAgIHN0eWxlLnNldEZsb2F0aW5nKE5vRmxvYXQpOwotICAgICAgICAgICAgfSBlbHNl
IGlmIChpc0hUTUxUYWJsZUVsZW1lbnQoZSkpCisgICAgICAgICAgICB9IGVsc2UgaWYgKGlzPEhU
TUxUYWJsZUVsZW1lbnQ+KGUpKQogICAgICAgICAgICAgICAgIHN0eWxlLnNldERpc3BsYXkoc3R5
bGUuaXNEaXNwbGF5SW5saW5lVHlwZSgpID8gSU5MSU5FX1RBQkxFIDogVEFCTEUpOwogICAgICAg
ICB9CiAKQEAgLTExODcsNyArMTE4Nyw3IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6YWRqdXN0UmVu
ZGVyU3R5bGUoUmVuZGVyU3R5bGUmIHN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSYgcGFyCiAgICAg
ICAgIH0KIAogICAgICAgICAvLyBUYWJsZXMgbmV2ZXIgc3VwcG9ydCB0aGUgLXdlYmtpdC0qIHZh
bHVlcyBmb3IgdGV4dC1hbGlnbiBhbmQgd2lsbCByZXNldCBiYWNrIHRvIHRoZSBkZWZhdWx0Lgot
ICAgICAgICBpZiAoZSAmJiBpc0hUTUxUYWJsZUVsZW1lbnQoZSkgJiYgKHN0eWxlLnRleHRBbGln
bigpID09IFdFQktJVF9MRUZUIHx8IHN0eWxlLnRleHRBbGlnbigpID09IFdFQktJVF9DRU5URVIg
fHwgc3R5bGUudGV4dEFsaWduKCkgPT0gV0VCS0lUX1JJR0hUKSkKKyAgICAgICAgaWYgKGUgJiYg
aXM8SFRNTFRhYmxlRWxlbWVudD4oZSkgJiYgKHN0eWxlLnRleHRBbGlnbigpID09IFdFQktJVF9M
RUZUIHx8IHN0eWxlLnRleHRBbGlnbigpID09IFdFQktJVF9DRU5URVIgfHwgc3R5bGUudGV4dEFs
aWduKCkgPT0gV0VCS0lUX1JJR0hUKSkKICAgICAgICAgICAgIHN0eWxlLnNldFRleHRBbGlnbihU
QVNUQVJUKTsKIAogICAgICAgICAvLyBGcmFtZXMgYW5kIGZyYW1lc2V0cyBuZXZlciBob25vciBw
b3NpdGlvbjpyZWxhdGl2ZSBvciBwb3NpdGlvbjphYnNvbHV0ZS4gVGhpcyBpcyBuZWNlc3Nhcnkg
dG8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNoZWV0TGlzdC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTaGVldExpc3QuY3BwCmluZGV4IDA3MjAwMzdlOWE4N2Qw
MzQwZGQxMDk4MDQ1YmQ4MmEzMjNlZGIyY2QuLmU5MDE2ZDk1ZjA1YmFjMzRmZDI0MDQ1YTVkMjdj
NWRiNTA5ODlhNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNoZWV0TGlz
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hlZXRMaXN0LmNwcApAQCAtNzYs
NyArNzYsNyBAQCBIVE1MU3R5bGVFbGVtZW50KiBTdHlsZVNoZWV0TGlzdDo6Z2V0TmFtZWRJdGVt
KGNvbnN0IFN0cmluZyYgbmFtZSkgY29uc3QKICAgICAvLyBhbmQgZG9lc24ndCBsb29rIGZvciBu
YW1lIGF0dHJpYnV0ZS4KICAgICAvLyBCdXQgdW5pY2l0eSBvZiBzdHlsZXNoZWV0IGlkcyBpcyBn
b29kIHByYWN0aWNlIGFueXdheSA7KQogICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBtX2RvY3VtZW50
LT5nZXRFbGVtZW50QnlJZChuYW1lKTsKLSAgICBpZiAoZWxlbWVudCAmJiBpc0hUTUxTdHlsZUVs
ZW1lbnQoZWxlbWVudCkpCisgICAgaWYgKGVsZW1lbnQgJiYgaXM8SFRNTFN0eWxlRWxlbWVudD4o
ZWxlbWVudCkpCiAgICAgICAgIHJldHVybiBkb3duY2FzdDxIVE1MU3R5bGVFbGVtZW50PihlbGVt
ZW50KTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9DdXJyZW50U2NyaXB0SW5jcmVtZW50ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DdXJy
ZW50U2NyaXB0SW5jcmVtZW50ZXIuaAppbmRleCA3YzQ4OGMwNzE4NzJlMjdkYzgzNzVmNDBjMDhl
NGEwNDc2ZWRiOWM3Li5iZDdkZTA3MGY0Y2FjNzdkN2I1MWIyOWQwYTZmZDExMzc3YWNjOTk1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ3VycmVudFNjcmlwdEluY3JlbWVudGVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0N1cnJlbnRTY3JpcHRJbmNyZW1lbnRlci5oCkBAIC0z
OSw3ICszOSw3IEBAIGNsYXNzIEN1cnJlbnRTY3JpcHRJbmNyZW1lbnRlciB7CiBwdWJsaWM6CiAg
ICAgQ3VycmVudFNjcmlwdEluY3JlbWVudGVyKERvY3VtZW50KiBkb2N1bWVudCwgRWxlbWVudCog
ZWxlbWVudCkKICAgICAgICAgOiBtX2RvY3VtZW50KGRvY3VtZW50KQotICAgICAgICAsIG1faXNI
VE1MU2NyaXB0RWxlbWVudChpc0hUTUxTY3JpcHRFbGVtZW50KGVsZW1lbnQpKQorICAgICAgICAs
IG1faXNIVE1MU2NyaXB0RWxlbWVudChpczxIVE1MU2NyaXB0RWxlbWVudD4oZWxlbWVudCkpCiAg
ICAgewogICAgICAgICBpZiAobV9pc0hUTUxTY3JpcHRFbGVtZW50KQogICAgICAgICAgICAgbV9k
b2N1bWVudC0+cHVzaEN1cnJlbnRTY3JpcHQoZG93bmNhc3Q8SFRNTFNjcmlwdEVsZW1lbnQ+KGVs
ZW1lbnQpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5jcHAKaW5kZXggYWEwMWFlMTA5ZDVl
ZjEyZjkyZThhY2VhZWZkNGJlNDcxYmMwNDc4OS4uYzc4Mzk1OTNjZDMyYjY4YTBhYmU2NjhmMDE4
N2EyOGZiM2RkNzIyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5jcHAKQEAgLTI1NCw3
ICsyNTQsNyBAQCB2b2lkIERhdGFUcmFuc2Zlcjo6c2V0RHJhZ0ltYWdlKEVsZW1lbnQqIGVsZW1l
bnQsIGludCB4LCBpbnQgeSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgQ2FjaGVkSW1hZ2UqIGlt
YWdlID0gbnVsbHB0cjsKLSAgICBpZiAoZWxlbWVudCAmJiBpc0hUTUxJbWFnZUVsZW1lbnQoZWxl
bWVudCkgJiYgIWVsZW1lbnQtPmluRG9jdW1lbnQoKSkKKyAgICBpZiAoZWxlbWVudCAmJiBpczxI
VE1MSW1hZ2VFbGVtZW50PihlbGVtZW50KSAmJiAhZWxlbWVudC0+aW5Eb2N1bWVudCgpKQogICAg
ICAgICBpbWFnZSA9IGRvd25jYXN0PEhUTUxJbWFnZUVsZW1lbnQ+KCplbGVtZW50KS5jYWNoZWRJ
bWFnZSgpOwogCiAgICAgbV9kcmFnTG9jYXRpb24gPSBJbnRQb2ludCh4LCB5KTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE9yZGVyZWRNYXAuY3BwIGIvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50T3JkZXJlZE1hcC5jcHAKaW5kZXggNzdlZWMzYjc1ZjQ5YTgwMDI0
ZDZiMDkxMTVjMjNhMTlmZDI5YjNmYS4uMzRjZTljMmVhYzhkZjJkMWM5NDZmYzUxZWJkYjI0M2Fl
NWQ1OGZlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50T3JkZXJlZE1h
cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50T3JkZXJlZE1hcC5jcHAKQEAg
LTUzLDIzICs1MywyMyBAQCBpbmxpbmUgYm9vbCBrZXlNYXRjaGVzTmFtZShjb25zdCBBdG9taWNT
dHJpbmdJbXBsJiBrZXksIGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQpCiAKIGlubGluZSBib29sIGtl
eU1hdGNoZXNNYXBOYW1lKGNvbnN0IEF0b21pY1N0cmluZ0ltcGwmIGtleSwgY29uc3QgRWxlbWVu
dCYgZWxlbWVudCkKIHsKLSAgICByZXR1cm4gaXNIVE1MTWFwRWxlbWVudChlbGVtZW50KSAmJiBk
b3duY2FzdDxIVE1MTWFwRWxlbWVudD4oZWxlbWVudCkuZ2V0TmFtZSgpLmltcGwoKSA9PSAma2V5
OworICAgIHJldHVybiBpczxIVE1MTWFwRWxlbWVudD4oZWxlbWVudCkgJiYgZG93bmNhc3Q8SFRN
TE1hcEVsZW1lbnQ+KGVsZW1lbnQpLmdldE5hbWUoKS5pbXBsKCkgPT0gJmtleTsKIH0KIAogaW5s
aW5lIGJvb2wga2V5TWF0Y2hlc0xvd2VyY2FzZWRNYXBOYW1lKGNvbnN0IEF0b21pY1N0cmluZ0lt
cGwmIGtleSwgY29uc3QgRWxlbWVudCYgZWxlbWVudCkKIHsKLSAgICByZXR1cm4gaXNIVE1MTWFw
RWxlbWVudChlbGVtZW50KSAmJiBkb3duY2FzdDxIVE1MTWFwRWxlbWVudD4oZWxlbWVudCkuZ2V0
TmFtZSgpLmxvd2VyKCkuaW1wbCgpID09ICZrZXk7CisgICAgcmV0dXJuIGlzPEhUTUxNYXBFbGVt
ZW50PihlbGVtZW50KSAmJiBkb3duY2FzdDxIVE1MTWFwRWxlbWVudD4oZWxlbWVudCkuZ2V0TmFt
ZSgpLmxvd2VyKCkuaW1wbCgpID09ICZrZXk7CiB9CiAKIGlubGluZSBib29sIGtleU1hdGNoZXNM
b3dlcmNhc2VkVXNlbWFwKGNvbnN0IEF0b21pY1N0cmluZ0ltcGwmIGtleSwgY29uc3QgRWxlbWVu
dCYgZWxlbWVudCkKIHsKICAgICAvLyBGSVhNRTogSFRNTDUgc3BlY2lmaWNhdGlvbiBzYXlzIHdl
IHNob3VsZCBtYXRjaCBib3RoIGltYWdlIGFuZCBvYmplY3QgZWxlbWVudHMuCi0gICAgcmV0dXJu
IGlzSFRNTEltYWdlRWxlbWVudChlbGVtZW50KSAmJiBkb3duY2FzdDxIVE1MSW1hZ2VFbGVtZW50
PihlbGVtZW50KS5tYXRjaGVzTG93ZXJjYXNlZFVzZW1hcChrZXkpOworICAgIHJldHVybiBpczxI
VE1MSW1hZ2VFbGVtZW50PihlbGVtZW50KSAmJiBkb3duY2FzdDxIVE1MSW1hZ2VFbGVtZW50Pihl
bGVtZW50KS5tYXRjaGVzTG93ZXJjYXNlZFVzZW1hcChrZXkpOwogfQogCiBpbmxpbmUgYm9vbCBr
ZXlNYXRjaGVzTGFiZWxGb3JBdHRyaWJ1dGUoY29uc3QgQXRvbWljU3RyaW5nSW1wbCYga2V5LCBj
b25zdCBFbGVtZW50JiBlbGVtZW50KQogewotICAgIHJldHVybiBpc0hUTUxMYWJlbEVsZW1lbnQo
ZWxlbWVudCkgJiYgZWxlbWVudC5mYXN0R2V0QXR0cmlidXRlKGZvckF0dHIpLmltcGwoKSA9PSAm
a2V5OworICAgIHJldHVybiBpczxIVE1MTGFiZWxFbGVtZW50PihlbGVtZW50KSAmJiBlbGVtZW50
LmZhc3RHZXRBdHRyaWJ1dGUoZm9yQXR0cikuaW1wbCgpID09ICZrZXk7CiB9CiAKIGlubGluZSBi
b29sIGtleU1hdGNoZXNXaW5kb3dOYW1lZEl0ZW0oY29uc3QgQXRvbWljU3RyaW5nSW1wbCYga2V5
LCBjb25zdCBFbGVtZW50JiBlbGVtZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb24uY3BwCmluZGV4IDg4OWFlNjJiMGIwMGI1ZGY4Mjcx
NjZmNDk1YjBjZmFjNDA1YjI3NDguLjgzYTQzMDM0ZWUxZGRlODg1YTc0MmJjNDA4OThmZjBkYTQx
NTNhZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFN0eWxlU2hlZXRD
b2xsZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRTdHlsZVNoZWV0
Q29sbGVjdGlvbi5jcHAKQEAgLTI4NCw3ICsyODQsNyBAQCB2b2lkIERvY3VtZW50U3R5bGVTaGVl
dENvbGxlY3Rpb246OmNvbGxlY3RBY3RpdmVTdHlsZVNoZWV0cyhWZWN0b3I8UmVmUHRyPFN0eWxl
UwogICAgICAgICAgICAgRWxlbWVudCYgZWxlbWVudCA9IHRvRWxlbWVudCgqbm9kZSk7CiAgICAg
ICAgICAgICBBdG9taWNTdHJpbmcgdGl0bGUgPSBlbGVtZW50LmZhc3RHZXRBdHRyaWJ1dGUodGl0
bGVBdHRyKTsKICAgICAgICAgICAgIGJvb2wgZW5hYmxlZFZpYVNjcmlwdCA9IGZhbHNlOwotICAg
ICAgICAgICAgaWYgKGlzSFRNTExpbmtFbGVtZW50KGVsZW1lbnQpKSB7CisgICAgICAgICAgICBp
ZiAoaXM8SFRNTExpbmtFbGVtZW50PihlbGVtZW50KSkgewogICAgICAgICAgICAgICAgIC8vIDxM
SU5LPiBlbGVtZW50CiAgICAgICAgICAgICAgICAgSFRNTExpbmtFbGVtZW50JiBsaW5rRWxlbWVu
dCA9IGRvd25jYXN0PEhUTUxMaW5rRWxlbWVudD4oZWxlbWVudCk7CiAgICAgICAgICAgICAgICAg
aWYgKGxpbmtFbGVtZW50LmlzRGlzYWJsZWQoKSkKQEAgLTMwNyw3ICszMDcsNyBAQCB2b2lkIERv
Y3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb246OmNvbGxlY3RBY3RpdmVTdHlsZVNoZWV0cyhWZWN0
b3I8UmVmUHRyPFN0eWxlUwogICAgICAgICAgICAgLy8gc2V0IG9mIHNoZWV0cyB0aGF0IHdpbGwg
YmUgZW5hYmxlZC4KICAgICAgICAgICAgIGlmIChpczxTVkdTdHlsZUVsZW1lbnQ+KGVsZW1lbnQp
KQogICAgICAgICAgICAgICAgIHNoZWV0ID0gZG93bmNhc3Q8U1ZHU3R5bGVFbGVtZW50PihlbGVt
ZW50KS5zaGVldCgpOwotICAgICAgICAgICAgZWxzZSBpZiAoaXNIVE1MTGlua0VsZW1lbnQoZWxl
bWVudCkpCisgICAgICAgICAgICBlbHNlIGlmIChpczxIVE1MTGlua0VsZW1lbnQ+KGVsZW1lbnQp
KQogICAgICAgICAgICAgICAgIHNoZWV0ID0gZG93bmNhc3Q8SFRNTExpbmtFbGVtZW50PihlbGVt
ZW50KS5zaGVldCgpOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIHNoZWV0ID0g
ZG93bmNhc3Q8SFRNTFN0eWxlRWxlbWVudD4oZWxlbWVudCkuc2hlZXQoKTsKQEAgLTMyMiw3ICsz
MjIsNyBAQCB2b2lkIERvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb246OmNvbGxlY3RBY3RpdmVT
dHlsZVNoZWV0cyhWZWN0b3I8UmVmUHRyPFN0eWxlUwogICAgICAgICAgICAgICAgICAgICAvLyB3
ZSBhcmUgTk9UIGFuIGFsdGVybmF0ZSBzaGVldCwgdGhlbiBlc3RhYmxpc2gKICAgICAgICAgICAg
ICAgICAgICAgLy8gdXMgYXMgdGhlIHByZWZlcnJlZCBzZXQuIE90aGVyd2lzZSwganVzdCBpZ25v
cmUKICAgICAgICAgICAgICAgICAgICAgLy8gdGhpcyBzaGVldC4KLSAgICAgICAgICAgICAgICAg
ICAgaWYgKGlzSFRNTFN0eWxlRWxlbWVudChlbGVtZW50KSB8fCAhcmVsLmNvbnRhaW5zKCJhbHRl
cm5hdGUiKSkKKyAgICAgICAgICAgICAgICAgICAgaWYgKGlzPEhUTUxTdHlsZUVsZW1lbnQ+KGVs
ZW1lbnQpIHx8ICFyZWwuY29udGFpbnMoImFsdGVybmF0ZSIpKQogICAgICAgICAgICAgICAgICAg
ICAgICAgbV9wcmVmZXJyZWRTdHlsZXNoZWV0U2V0TmFtZSA9IG1fc2VsZWN0ZWRTdHlsZXNoZWV0
U2V0TmFtZSA9IHRpdGxlOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBpZiAo
dGl0bGUgIT0gbV9wcmVmZXJyZWRTdHlsZXNoZWV0U2V0TmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAppbmRl
eCBkMWNjYjk0ZjQ3OTM0ZWUzMmQzYjkxYTJkNGFkNjlhMDhkNjYzNjM1Li5kMTUwM2ZmNzRiODk3
OWM0YWM5M2IxMjU3N2I1NDBlN2ViMWRhM2JhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCkBAIC0xNzE2LDcg
KzE3MTYsNyBAQCBFbGVtZW50KiBOb2RlOjplbmNsb3NpbmdMaW5rRXZlbnRQYXJlbnRPclNlbGYo
KQogICAgICAgICAvLyBGb3IgaW1hZ2VtYXBzLCB0aGUgZW5jbG9zaW5nIGxpbmsgZWxlbWVudCBp
cyB0aGUgYXNzb2NpYXRlZCBhcmVhIGVsZW1lbnQgbm90IHRoZSBpbWFnZSBpdHNlbGYuCiAgICAg
ICAgIC8vIFNvIHdlIGRvbid0IGxldCBpbWFnZXMgYmUgdGhlIGVuY2xvc2luZyBsaW5rIGVsZW1l
bnQsIGV2ZW4gdGhvdWdoIGlzTGluayBzb21ldGltZXMgcmV0dXJucwogICAgICAgICAvLyB0cnVl
IGZvciB0aGVtLgotICAgICAgICBpZiAobm9kZS0+aXNMaW5rKCkgJiYgIWlzSFRNTEltYWdlRWxl
bWVudChub2RlKSkKKyAgICAgICAgaWYgKG5vZGUtPmlzTGluaygpICYmICFpczxIVE1MSW1hZ2VF
bGVtZW50Pihub2RlKSkKICAgICAgICAgICAgIHJldHVybiB0b0VsZW1lbnQobm9kZSk7CiAgICAg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmNwcAppbmRleCAyMzJkNzc3MDNhODg4M2RmYWJhMzA1ZWRl
YTc4OTg5YmU1M2Q2NmMyLi42NzZkMWM3NDgwZWJkNDA5NjhhM2JhNmU5ZjdkYTE2YWI3ZDYxZGRl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5jcHAKQEAgLTUyOSw3ICs1MjksNyBAQCBzdGF0aWMgYm9v
bCBlbmRzT2ZOb2RlQXJlVmlzdWFsbHlEaXN0aW5jdFBvc2l0aW9ucyhOb2RlKiBub2RlKQogICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgCiAgICAgLy8gRG9uJ3QgaW5jbHVkZSBpbmxpbmUg
dGFibGVzLgotICAgIGlmIChpc0hUTUxUYWJsZUVsZW1lbnQobm9kZSkpCisgICAgaWYgKGlzPEhU
TUxUYWJsZUVsZW1lbnQ+KG5vZGUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCiAgICAg
Ly8gVGhlcmUgaXMgYSBWaXNpYmxlUG9zaXRpb24gaW5zaWRlIGFuIGVtcHR5IGlubGluZS1ibG9j
ayBjb250YWluZXIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5jcHAKaW5kZXggYTVjMmQz
MmJmYTA2NGUzYjU4ZGE2NjBjOTdlZDYxOWE0MWJhNmRmNy4uZTdhNjcxNmQyOWVlYjZhNWM0M2Fj
NDM5NmIzZTMxZmEyOTQxZTlkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1Njcmlw
dEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmNwcApA
QCAtMzgyLDcgKzM4Miw3IEBAIFN0cmluZyBTY3JpcHRFbGVtZW50OjpzY3JpcHRDb250ZW50KCkg
Y29uc3QKIAogU2NyaXB0RWxlbWVudCogdG9TY3JpcHRFbGVtZW50SWZQb3NzaWJsZShFbGVtZW50
KiBlbGVtZW50KQogewotICAgIGlmIChpc0hUTUxTY3JpcHRFbGVtZW50KGVsZW1lbnQpKQorICAg
IGlmIChpczxIVE1MU2NyaXB0RWxlbWVudD4oZWxlbWVudCkpCiAgICAgICAgIHJldHVybiBkb3du
Y2FzdDxIVE1MU2NyaXB0RWxlbWVudD4oZWxlbWVudCk7CiAKICAgICBpZiAoaXM8U1ZHU2NyaXB0
RWxlbWVudD4oZWxlbWVudCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVmlzaXRl
ZExpbmtTdGF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVmlzaXRlZExpbmtTdGF0ZS5jcHAK
aW5kZXggNGMyMmQwMDczNmRmZmUwMzI1ZTFiYTExYzA4ODk2MDRkZTYyZWUzNS4uNTg2OTA5YTVj
MGM5NzA1OTkwZDQyYzBkYmI5ZjhlZWVkNTg4NzVjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL1Zpc2l0ZWRMaW5rU3RhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9WaXNp
dGVkTGlua1N0YXRlLmNwcApAQCAtNjksNyArNjksNyBAQCB2b2lkIFZpc2l0ZWRMaW5rU3RhdGU6
OmludmFsaWRhdGVTdHlsZUZvckFsbExpbmtzKCkKIAogaW5saW5lIHN0YXRpYyBMaW5rSGFzaCBs
aW5rSGFzaEZvckVsZW1lbnQoRG9jdW1lbnQmIGRvY3VtZW50LCBFbGVtZW50JiBlbGVtZW50KQog
ewotICAgIGlmIChpc0hUTUxBbmNob3JFbGVtZW50KGVsZW1lbnQpKQorICAgIGlmIChpczxIVE1M
QW5jaG9yRWxlbWVudD4oZWxlbWVudCkpCiAgICAgICAgIHJldHVybiBkb3duY2FzdDxIVE1MQW5j
aG9yRWxlbWVudD4oZWxlbWVudCkudmlzaXRlZExpbmtIYXNoKCk7CiAgICAgaWYgKGNvbnN0IEF0
b21pY1N0cmluZyogYXR0cmlidXRlID0gbGlua0F0dHJpYnV0ZShlbGVtZW50KSkKICAgICAgICAg
cmV0dXJuIFdlYkNvcmU6OnZpc2l0ZWRMaW5rSGFzaChkb2N1bWVudC5iYXNlVVJMKCksICphdHRy
aWJ1dGUpOwpAQCAtMTAwLDcgKzEwMCw3IEBAIEVJbnNpZGVMaW5rIFZpc2l0ZWRMaW5rU3RhdGU6
OmRldGVybWluZUxpbmtTdGF0ZVNsb3dDYXNlKEVsZW1lbnQmIGVsZW1lbnQpCiAgICAgICAgIHJl
dHVybiBJbnNpZGVWaXNpdGVkTGluazsKIAogICAgIExpbmtIYXNoIGhhc2g7Ci0gICAgaWYgKGlz
SFRNTEFuY2hvckVsZW1lbnQoZWxlbWVudCkpCisgICAgaWYgKGlzPEhUTUxBbmNob3JFbGVtZW50
PihlbGVtZW50KSkKICAgICAgICAgaGFzaCA9IGRvd25jYXN0PEhUTUxBbmNob3JFbGVtZW50Pihl
bGVtZW50KS52aXNpdGVkTGlua0hhc2goKTsKICAgICBlbHNlCiAgICAgICAgIGhhc2ggPSBXZWJD
b3JlOjp2aXNpdGVkTGlua0hhc2goZWxlbWVudC5kb2N1bWVudCgpLmJhc2VVUkwoKSwgKmF0dHJp
YnV0ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vbWFrZV9uYW1lcy5wbCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9tYWtlX25hbWVzLnBsCmluZGV4IDc5NTdlYTQ0YmU2OTZkNGI3Mzk0
N2E5MDgwZGM3MGU1MzcxM2Y0NTcuLmZmNWYxNjYzYzdhM2ZkY2NkNWVlNTViYmNkNDZmZmMwN2Vj
ZTliOTggMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9tYWtlX25hbWVzLnBsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9tYWtlX25hbWVzLnBsCkBAIC02NTksMTUgKzY1OSw3IEBAIEVO
RAogfTsKIEVORAogICAgICAgIDsKLSAgICAgICBpZiAoJHBhcmFtZXRlcnN7bmFtZXNwYWNlfSBl
cSAiSFRNTCIpIHsKLSAgICAgICAgICAgcHJpbnQgRiA8PEVORAotLy8gRklYTUU6IFJlbW92ZSB0
aGVzZSBtYWNyb3Mgb25jZSB0aGUgY29kZSBoYXMgYmVlbiBwb3J0ZWQgdG8gdXNpbmcKLS8vIGlz
PCpFbGVtZW50PigpLgotI2RlZmluZSBpcyRjbGFzcyh4KSBXZWJDb3JlOjppczxXZWJDb3JlOjok
Y2xhc3M+KHgpCi1FTkQKLSAgICAgICAgICAgOwotICAgICAgICB9Ci0gICAgICAgIHByaW50IEYg
IlxuIjsKKyAgICAgICBwcmludCBGICJcbiI7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZVNlbGVjdGlvbkNvbW1hbmQuY3BwIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9EZWxldGVTZWxlY3Rpb25Db21tYW5kLmNwcAppbmRleCBmOGE2NDRhMjZh
NTRkOTU2NjExMGVlMmZjZTdkYzg5NjM5OGI3NDAzLi4zYTU3OTMxZjYyNTQ2NzJlYTM5NDdkZDY5
OGVmYWIxZDM3MzE3MDM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RlbGV0
ZVNlbGVjdGlvbkNvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRGVsZXRl
U2VsZWN0aW9uQ29tbWFuZC5jcHAKQEAgLTQ1Nyw3ICs0NTcsNyBAQCB2b2lkIERlbGV0ZVNlbGVj
dGlvbkNvbW1hbmQ6OmhhbmRsZUdlbmVyYWxEZWxldGUoKQogICAgIG1ha2VTdHlsaW5nRWxlbWVu
dHNEaXJlY3RDaGlsZHJlbk9mRWRpdGFibGVSb290VG9QcmV2ZW50U3R5bGVMb3NzKCk7CiAKICAg
ICAvLyBOZXZlciByZW1vdmUgdGhlIHN0YXJ0IGJsb2NrIHVubGVzcyBpdCdzIGEgdGFibGUsIGlu
IHdoaWNoIGNhc2Ugd2Ugd29uJ3QgbWVyZ2UgY29udGVudCBpbi4KLSAgICBpZiAoc3RhcnROb2Rl
ID09IG1fc3RhcnRCbG9jayAmJiBzdGFydE9mZnNldCA9PSAwICYmIGNhbkhhdmVDaGlsZHJlbkZv
ckVkaXRpbmcoc3RhcnROb2RlKSAmJiAhaXNIVE1MVGFibGVFbGVtZW50KHN0YXJ0Tm9kZSkpIHsK
KyAgICBpZiAoc3RhcnROb2RlID09IG1fc3RhcnRCbG9jayAmJiAhc3RhcnRPZmZzZXQgJiYgY2Fu
SGF2ZUNoaWxkcmVuRm9yRWRpdGluZyhzdGFydE5vZGUpICYmICFpczxIVE1MVGFibGVFbGVtZW50
PihzdGFydE5vZGUpKSB7CiAgICAgICAgIHN0YXJ0T2Zmc2V0ID0gMDsKICAgICAgICAgc3RhcnRO
b2RlID0gTm9kZVRyYXZlcnNhbDo6bmV4dChzdGFydE5vZGUpOwogICAgICAgICBpZiAoIXN0YXJ0
Tm9kZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAppbmRleCAzMDJkZTQxODY1MzA2NTZmMzY3
ODhiYjc0YWIwNDUyYWUwNTM2MTFiLi5lNWI1YjcyMjk2YTNkYjQ0ODI5MDAwY2ExMDYyMjI0YWNh
Yjk2YjAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCkBAIC0zMzAsNyArMzMwLDcgQEAg
c3RhdGljIEhUTUxJbWFnZUVsZW1lbnQqIGltYWdlRWxlbWVudEZyb21JbWFnZURvY3VtZW50KERv
Y3VtZW50JiBkb2N1bWVudCkKICAgICBOb2RlKiBub2RlID0gYm9keS0+Zmlyc3RDaGlsZCgpOwog
ICAgIGlmICghbm9kZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgaWYgKCFpc0hUTUxJ
bWFnZUVsZW1lbnQobm9kZSkpCisgICAgaWYgKCFpczxIVE1MSW1hZ2VFbGVtZW50Pihub2RlKSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgcmV0dXJuIGRvd25jYXN0PEhUTUxJbWFnZUVs
ZW1lbnQ+KG5vZGUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFt
ZVNlbGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNw
cAppbmRleCA3ZTYzMzkzYmY3NTRkOGEzM2QxZjc5OTM3ZWM4ZjU2MmQ0YTYwYzVhLi42OTBiNjkx
NWYwZGRmZmRmNzZjYjc4OWMxZDQzYTg5NzI2OTdmYzI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcApAQCAtMjAyMSw3ICsyMDIxLDcgQEAgc3RhdGljIEhUTUxG
b3JtRWxlbWVudCogc2NhbkZvckZvcm0oRWxlbWVudCogc3RhcnQpCiAgICAgYXV0byBkZXNjZW5k
YW50cyA9IGRlc2NlbmRhbnRzT2ZUeXBlPEhUTUxFbGVtZW50PihzdGFydC0+ZG9jdW1lbnQoKSk7
CiAgICAgZm9yIChhdXRvIGl0ID0gZGVzY2VuZGFudHMuZnJvbSgqc3RhcnQpLCBlbmQgPSBkZXNj
ZW5kYW50cy5lbmQoKTsgaXQgIT0gZW5kOyArK2l0KSB7CiAgICAgICAgIEhUTUxFbGVtZW50JiBl
bGVtZW50ID0gKml0OwotICAgICAgICBpZiAoaXNIVE1MRm9ybUVsZW1lbnQoJmVsZW1lbnQpKQor
ICAgICAgICBpZiAoaXM8SFRNTEZvcm1FbGVtZW50PigmZWxlbWVudCkpCiAgICAgICAgICAgICBy
ZXR1cm4gZG93bmNhc3Q8SFRNTEZvcm1FbGVtZW50PigmZWxlbWVudCk7CiAgICAgICAgIGlmIChp
czxIVE1MRm9ybUNvbnRyb2xFbGVtZW50PihlbGVtZW50KSkKICAgICAgICAgICAgIHJldHVybiBk
b3duY2FzdDxIVE1MRm9ybUNvbnRyb2xFbGVtZW50PihlbGVtZW50KS5mb3JtKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luc2VydExpbmVCcmVha0NvbW1hbmQuY3BwIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRMaW5lQnJlYWtDb21tYW5kLmNwcAppbmRleCBl
NTYzOTUwOWIwZGNhOTY2YzNlNjAyM2NmNmFiNGRkMDJjY2ExYmYxLi4xMWEwNzQ3YTc4MmRiODdh
ZTZkOWM1ZGJjYjJhN2Y2OWQyYWRkNThiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0luc2VydExpbmVCcmVha0NvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvSW5zZXJ0TGluZUJyZWFrQ29tbWFuZC5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRl
ICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lU2VsZWN0aW9uLmgiCiAjaW5jbHVkZSAiSFRNTEVs
ZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1MSFJFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVz
LmgiCiAjaW5jbHVkZSAiSFRNTFRhYmxlRWxlbWVudC5oIgogI2luY2x1ZGUgIlJlbmRlckVsZW1l
bnQuaCIKQEAgLTExNCw3ICsxMTUsNyBAQCB2b2lkIEluc2VydExpbmVCcmVha0NvbW1hbmQ6OmRv
QXBwbHkoKQogICAgIC8vIEZJWE1FOiBOZWVkIHRvIG1lcmdlIHRleHQgbm9kZXMgd2hlbiBpbnNl
cnRpbmcganVzdCBhZnRlciBvciBiZWZvcmUgdGV4dC4KICAgICAKICAgICBpZiAoaXNFbmRPZlBh
cmFncmFwaChjYXJldCkgJiYgIWxpbmVCcmVha0V4aXN0c0F0VmlzaWJsZVBvc2l0aW9uKGNhcmV0
KSkgewotICAgICAgICBib29sIG5lZWRFeHRyYUxpbmVCcmVhayA9ICFwb3MuZGVwcmVjYXRlZE5v
ZGUoKS0+aGFzVGFnTmFtZShoclRhZykgJiYgIWlzSFRNTFRhYmxlRWxlbWVudChwb3MuZGVwcmVj
YXRlZE5vZGUoKSk7CisgICAgICAgIGJvb2wgbmVlZEV4dHJhTGluZUJyZWFrID0gIWlzPEhUTUxI
UkVsZW1lbnQ+KHBvcy5kZXByZWNhdGVkTm9kZSgpKSAmJiAhaXM8SFRNTFRhYmxlRWxlbWVudD4o
cG9zLmRlcHJlY2F0ZWROb2RlKCkpOwogICAgICAgICAKICAgICAgICAgaW5zZXJ0Tm9kZUF0KG5v
ZGVUb0luc2VydC5nZXQoKSwgcG9zKTsKICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0luc2VydFBhcmFncmFwaFNlcGFyYXRvckNvbW1hbmQuY3BwIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9JbnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3JDb21tYW5kLmNwcAppbmRl
eCA3ZmI3NTAzOGM5NDU4NjQwMWE3NzBjMTM3MjkwNjY3YTBkNTUxYjgyLi40OTlkYWQ5YWI2Mzhl
ZTFiZGVlNDgxNDRkNTMxNDRiYmI4NTYyZDA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0luc2VydFBhcmFncmFwaFNlcGFyYXRvckNvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvSW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9yQ29tbWFuZC5jcHAKQEAgLTE2
OSw3ICsxNjksNyBAQCB2b2lkIEluc2VydFBhcmFncmFwaFNlcGFyYXRvckNvbW1hbmQ6OmRvQXBw
bHkoKQogICAgIGlmICghc3RhcnRCbG9jawogICAgICAgICB8fCAhc3RhcnRCbG9jay0+bm9uU2hh
ZG93Qm91bmRhcnlQYXJlbnROb2RlKCkKICAgICAgICAgfHwgaXNUYWJsZUNlbGwoc3RhcnRCbG9j
ay5nZXQoKSkKLSAgICAgICAgfHwgaXNIVE1MRm9ybUVsZW1lbnQoc3RhcnRCbG9jay5nZXQoKSkK
KyAgICAgICAgfHwgaXM8SFRNTEZvcm1FbGVtZW50PihzdGFydEJsb2NrLmdldCgpKQogICAgICAg
ICAvLyBGSVhNRTogSWYgdGhlIG5vZGUgaXMgaGlkZGVuLCB3ZSBkb24ndCBoYXZlIGEgY2Fub25p
Y2FsIHBvc2l0aW9uIHNvIHdlIHdpbGwgZG8gdGhlIHdyb25nIHRoaW5nIGZvciB0YWJsZXMgYW5k
IDxocj4uIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MDM0MgogICAg
ICAgICB8fCAoIWNhbm9uaWNhbFBvcy5pc051bGwoKSAmJiBjYW5vbmljYWxQb3MuZGVwcmVjYXRl
ZE5vZGUoKS0+cmVuZGVyZXIoKSAmJiBjYW5vbmljYWxQb3MuZGVwcmVjYXRlZE5vZGUoKS0+cmVu
ZGVyZXIoKS0+aXNUYWJsZSgpKQogICAgICAgICB8fCAoIWNhbm9uaWNhbFBvcy5pc051bGwoKSAm
JiBjYW5vbmljYWxQb3MuZGVwcmVjYXRlZE5vZGUoKS0+aGFzVGFnTmFtZShoclRhZykpKSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5k
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3Bw
CmluZGV4IDMxMTNhZjM0MDk2NjRiNDBiZjEwZjhiY2MxY2FlODY5NGVjYjQ4MzYuLjgxNmVhMGE2
ZGE1MTFkMTkxODQwMTgzMDFiMWI0OTA2ZTBjNWIxYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwCkBAIC03MjEsNyArNzIxLDcg
QEAgc3RhdGljIHZvaWQgcmVtb3ZlSGVhZENvbnRlbnRzKFJlcGxhY2VtZW50RnJhZ21lbnQmIGZy
YWdtZW50KQogICAgIGF1dG8gaXQgPSBkZXNjZW5kYW50c09mVHlwZTxFbGVtZW50PigqZnJhZ21l
bnQuZnJhZ21lbnQoKSkuYmVnaW4oKTsKICAgICBhdXRvIGVuZCA9IGRlc2NlbmRhbnRzT2ZUeXBl
PEVsZW1lbnQ+KCpmcmFnbWVudC5mcmFnbWVudCgpKS5lbmQoKTsKICAgICB3aGlsZSAoaXQgIT0g
ZW5kKSB7Ci0gICAgICAgIGlmIChpdC0+aGFzVGFnTmFtZShiYXNlVGFnKSB8fCBpdC0+aGFzVGFn
TmFtZShsaW5rVGFnKSB8fCBpdC0+aGFzVGFnTmFtZShtZXRhVGFnKSB8fCBpdC0+aGFzVGFnTmFt
ZShzdHlsZVRhZykgfHwgaXNIVE1MVGl0bGVFbGVtZW50KCppdCkpIHsKKyAgICAgICAgaWYgKGlz
PEhUTUxCYXNlRWxlbWVudD4oKml0KSB8fCBpczxIVE1MTGlua0VsZW1lbnQ+KCppdCkgfHwgaXM8
SFRNTE1ldGFFbGVtZW50PigqaXQpIHx8IGlzPEhUTUxTdHlsZUVsZW1lbnQ+KCppdCkgfHwgaXM8
SFRNTFRpdGxlRWxlbWVudD4oKml0KSkgewogICAgICAgICAgICAgdG9SZW1vdmUuYXBwZW5kKCYq
aXQpOwogICAgICAgICAgICAgaXQudHJhdmVyc2VOZXh0U2tpcHBpbmdDaGlsZHJlbigpOwogICAg
ICAgICAgICAgY29udGludWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2Nv
Y29hL0hUTUxDb252ZXJ0ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxD
b252ZXJ0ZXIubW0KaW5kZXggM2JjYTk0NzQxMjJkM2ExYzFmNTkyYWE5ZDNmMzAyNjdkMzUxOTJk
MS4uMDc5ZGI5NDQxNDlkZmYwNDE2NmIwYTA1MTEwMjE1ZDkyZTMyNmMxZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbQpAQCAtMjAzNCw3ICsyMDM0
LDcgQEAgQk9PTCBIVE1MQ29udmVydGVyOjpfcHJvY2Vzc0VsZW1lbnQoRWxlbWVudCYgZWxlbWVu
dCwgTlNJbnRlZ2VyIGRlcHRoKQogICAgICAgICBpZiAoIWxpc3RTdHlsZVR5cGUubGVuZ3RoKCkp
CiAgICAgICAgICAgICBsaXN0U3R5bGVUeXBlID0gImRlY2ltYWwiOwogICAgICAgICBsaXN0ID0g
YWRvcHROUyhbW1BsYXRmb3JtTlNUZXh0TGlzdCBhbGxvY10gaW5pdFdpdGhNYXJrZXJGb3JtYXQ6
U3RyaW5nKCJ7IiArIGxpc3RTdHlsZVR5cGUgKyAifSIpIG9wdGlvbnM6MF0pOwotICAgICAgICBp
ZiAoaXNIVE1MT0xpc3RFbGVtZW50KGVsZW1lbnQpKSB7CisgICAgICAgIGlmIChpczxIVE1MT0xp
c3RFbGVtZW50PihlbGVtZW50KSkgewogICAgICAgICAgICAgTlNJbnRlZ2VyIHN0YXJ0aW5nSXRl
bU51bWJlciA9IGRvd25jYXN0PEhUTUxPTGlzdEVsZW1lbnQ+KGVsZW1lbnQpLnN0YXJ0KCk7CiAg
ICAgICAgICAgICBbbGlzdCBzZXRTdGFydGluZ0l0ZW1OdW1iZXI6c3RhcnRpbmdJdGVtTnVtYmVy
XTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9odG1sZWRp
dGluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2h0bWxlZGl0aW5nLmNwcAppbmRleCBl
OGM2MDhiYjk1MWE4ZWNlMTFhOTBkZTE5ZTQ0ZjllM2EyMWVhM2NlLi41ZThmNTk1ZDJkMmYyYjg5
ODViMzIyM2JmYTcwZTI3MTllMDg1NDYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL2h0bWxlZGl0aW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2h0bWxlZGl0
aW5nLmNwcApAQCAtMTIwNCw3ICsxMjA0LDcgQEAgYm9vbCBpc05vblRhYmxlQ2VsbEhUTUxCbG9j
a0VsZW1lbnQoY29uc3QgTm9kZSogbm9kZSkKICAgICByZXR1cm4gZWxlbWVudC0+aGFzVGFnTmFt
ZShsaXN0aW5nVGFnKQogICAgICAgICB8fCBlbGVtZW50LT5oYXNUYWdOYW1lKG9sVGFnKQogICAg
ICAgICB8fCBlbGVtZW50LT5oYXNUYWdOYW1lKHByZVRhZykKLSAgICAgICAgfHwgaXNIVE1MVGFi
bGVFbGVtZW50KGVsZW1lbnQpCisgICAgICAgIHx8IGlzPEhUTUxUYWJsZUVsZW1lbnQ+KGVsZW1l
bnQpCiAgICAgICAgIHx8IGVsZW1lbnQtPmhhc1RhZ05hbWUodWxUYWcpCiAgICAgICAgIHx8IGVs
ZW1lbnQtPmhhc1RhZ05hbWUoeG1wVGFnKQogICAgICAgICB8fCBlbGVtZW50LT5oYXNUYWdOYW1l
KGgxVGFnKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCmluZGV4IDU2YzcwMDczYjYzZDVkOTJk
YWEyZGZjOGUyNTEyMzQ2YWNhNzZkMmIuLjA5ZjQ2ODcyNGNiNzYzNTIxOWVjZGUwMzY0ZjExZjZm
YzQzZmFjYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKQEAgLTQ1Miw3ICs0NTIsNyBA
QCBzdGF0aWMgTm9kZSogYW5jZXN0b3JUb1JldGFpblN0cnVjdHVyZUFuZEFwcGVhcmFuY2VGb3JC
bG9jayhOb2RlKiBjb21tb25BbmNlc3RvcgogCiAgICAgaWYgKGNvbW1vbkFuY2VzdG9yQmxvY2st
Pmhhc1RhZ05hbWUodGJvZHlUYWcpIHx8IGNvbW1vbkFuY2VzdG9yQmxvY2stPmhhc1RhZ05hbWUo
dHJUYWcpKSB7CiAgICAgICAgIENvbnRhaW5lck5vZGUqIHRhYmxlID0gY29tbW9uQW5jZXN0b3JC
bG9jay0+cGFyZW50Tm9kZSgpOwotICAgICAgICB3aGlsZSAodGFibGUgJiYgIWlzSFRNTFRhYmxl
RWxlbWVudCh0YWJsZSkpCisgICAgICAgIHdoaWxlICh0YWJsZSAmJiAhaXM8SFRNTFRhYmxlRWxl
bWVudD4odGFibGUpKQogICAgICAgICAgICAgdGFibGUgPSB0YWJsZS0+cGFyZW50Tm9kZSgpOwog
CiAgICAgICAgIHJldHVybiB0YWJsZTsKQEAgLTkzNCw3ICs5MzQsNyBAQCBzdGF0aWMgVmVjdG9y
PFJlZjxIVE1MRWxlbWVudD4+IGNvbGxlY3RFbGVtZW50c1RvUmVtb3ZlRnJvbUZyYWdtZW50KENv
bnRhaW5lck5vZAogICAgICAgICAgICAgY29sbGVjdEVsZW1lbnRzVG9SZW1vdmVGcm9tRnJhZ21l
bnQoZWxlbWVudCk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQotICAgICAgICBp
ZiAoaXNIVE1MSGVhZEVsZW1lbnQoZWxlbWVudCkgfHwgaXNIVE1MQm9keUVsZW1lbnQoZWxlbWVu
dCkpCisgICAgICAgIGlmIChpczxIVE1MSGVhZEVsZW1lbnQ+KGVsZW1lbnQpIHx8IGlzPEhUTUxC
b2R5RWxlbWVudD4oZWxlbWVudCkpCiAgICAgICAgICAgICB0b1JlbW92ZS5hcHBlbmQoZWxlbWVu
dCk7CiAgICAgfQogICAgIHJldHVybiB0b1JlbW92ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9G
VFBEaXJlY3RvcnlEb2N1bWVudC5jcHAKaW5kZXggZDZmMTRkNzM1MzUzMjM2OTFmYzk2ZjhiMGY4
ZmNmM2IzODY4OGY4OS4uOWIwZmRlYTk5NjA3ODVmZTU5ZTQ0ZGVkMDk5ZDE1NzIxZjlkMzUwZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHAKQEAgLTMw
MCw3ICszMDAsNyBAQCBib29sIEZUUERpcmVjdG9yeURvY3VtZW50UGFyc2VyOjpsb2FkRG9jdW1l
bnRUZW1wbGF0ZSgpCiAgICAgUmVmUHRyPEVsZW1lbnQ+IHRhYmxlRWxlbWVudCA9IGRvY3VtZW50
KCktPmdldEVsZW1lbnRCeUlkKFN0cmluZyhBU0NJSUxpdGVyYWwoImZ0cERpcmVjdG9yeVRhYmxl
IikpKTsKICAgICBpZiAoIXRhYmxlRWxlbWVudCkKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUg
dG8gZmluZCBlbGVtZW50IGJ5IGlkIFwiZnRwRGlyZWN0b3J5VGFibGVcIiBpbiB0aGUgdGVtcGxh
dGUgZG9jdW1lbnQuIik7Ci0gICAgZWxzZSBpZiAoIWlzSFRNTFRhYmxlRWxlbWVudCh0YWJsZUVs
ZW1lbnQuZ2V0KCkpKQorICAgIGVsc2UgaWYgKCFpczxIVE1MVGFibGVFbGVtZW50Pih0YWJsZUVs
ZW1lbnQuZ2V0KCkpKQogICAgICAgICBMT0dfRVJST1IoIkVsZW1lbnQgb2YgaWQgXCJmdHBEaXJl
Y3RvcnlUYWJsZVwiIGlzIG5vdCBhIHRhYmxlIGVsZW1lbnQiKTsKICAgICBlbHNlIAogICAgICAg
ICBtX3RhYmxlRWxlbWVudCA9IGRvd25jYXN0PEhUTUxUYWJsZUVsZW1lbnQ+KHRhYmxlRWxlbWVu
dC5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Bc3NvY2lhdGVk
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Bc3NvY2lhdGVkRWxlbWVudC5j
cHAKaW5kZXggOWRmNDA1OTg5MjQ5OGNlZGNmMjM2ZGM0NmFjZWEzZGExMDNkMTFhNy4uNzA0NWE4
ZjVlOGVjY2I3NTdmZmMwNzc0NWIyMTZkNTgwMGE2NzBmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9Gb3JtQXNzb2NpYXRlZEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvRm9ybUFzc29jaWF0ZWRFbGVtZW50LmNwcApAQCAtOTgsNyArOTgsNyBAQCBIVE1MRm9y
bUVsZW1lbnQqIEZvcm1Bc3NvY2lhdGVkRWxlbWVudDo6ZmluZEFzc29jaWF0ZWRGb3JtKGNvbnN0
IEhUTUxFbGVtZW50KiBlbAogICAgICAgICAvLyB0cmVlU2NvcGUoKS5nZXRFbGVtZW50QnlJZCgp
IG92ZXIgdGhlIGdpdmVuIGVsZW1lbnQuCiAgICAgICAgIEhUTUxGb3JtRWxlbWVudCogbmV3Rm9y
bSA9IG51bGxwdHI7CiAgICAgICAgIEVsZW1lbnQqIG5ld0Zvcm1DYW5kaWRhdGUgPSBlbGVtZW50
LT50cmVlU2NvcGUoKS5nZXRFbGVtZW50QnlJZChmb3JtSWQpOwotICAgICAgICBpZiAobmV3Rm9y
bUNhbmRpZGF0ZSAmJiBpc0hUTUxGb3JtRWxlbWVudChuZXdGb3JtQ2FuZGlkYXRlKSkKKyAgICAg
ICAgaWYgKG5ld0Zvcm1DYW5kaWRhdGUgJiYgaXM8SFRNTEZvcm1FbGVtZW50PihuZXdGb3JtQ2Fu
ZGlkYXRlKSkKICAgICAgICAgICAgIG5ld0Zvcm0gPSBkb3duY2FzdDxIVE1MRm9ybUVsZW1lbnQ+
KG5ld0Zvcm1DYW5kaWRhdGUpOwogICAgICAgICByZXR1cm4gbmV3Rm9ybTsKICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwCmluZGV4IDM0YWZlYjlmODlmZDNm
MjM4MTk4NDU0N2M3MDI0NzMwNWI4ZDM4OWUuLjY1NWFhYjA4YmFiYWZhYmI4M2E5OWQ5NTc2ZTkz
YTE1Y2RhMTVjNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3Bw
CkBAIC0xNTgsNyArMTU4LDcgQEAgc3RhdGljIHZvaWQgYXBwZW5kU2VydmVyTWFwTW91c2VQb3Np
dGlvbihTdHJpbmdCdWlsZGVyJiB1cmwsIEV2ZW50KiBldmVudCkKICAgICBBU1NFUlQoZXZlbnQt
PnRhcmdldCgpKTsKICAgICBOb2RlKiB0YXJnZXQgPSBldmVudC0+dGFyZ2V0KCktPnRvTm9kZSgp
OwogICAgIEFTU0VSVCh0YXJnZXQpOwotICAgIGlmICghaXNIVE1MSW1hZ2VFbGVtZW50KHRhcmdl
dCkpCisgICAgaWYgKCFpczxIVE1MSW1hZ2VFbGVtZW50Pih0YXJnZXQpKQogICAgICAgICByZXR1
cm47CiAKICAgICBIVE1MSW1hZ2VFbGVtZW50JiBpbWFnZUVsZW1lbnQgPSBkb3duY2FzdDxIVE1M
SW1hZ2VFbGVtZW50PigqdGFyZ2V0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEFyZWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFyZWFFbGVtZW50
LmNwcAppbmRleCBkZDg0YmRjNjg0MGM3YWI3Njk0MTNmZmQxZjFhMzczYzE2OTU3NDA3Li5iMTE1
M2U3NTNkMDljOWVlNGU5OGFiYWI5ZmQ3OTYxMWQwNzVkMjM5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxBcmVhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MQXJlYUVsZW1lbnQuY3BwCkBAIC0xODIsNyArMTgyLDcgQEAgUGF0aCBIVE1MQXJlYUVs
ZW1lbnQ6OmdldFJlZ2lvbihjb25zdCBMYXlvdXRTaXplJiBzaXplKSBjb25zdAogSFRNTEltYWdl
RWxlbWVudCogSFRNTEFyZWFFbGVtZW50OjppbWFnZUVsZW1lbnQoKSBjb25zdAogewogICAgIE5v
ZGUqIG1hcEVsZW1lbnQgPSBwYXJlbnROb2RlKCk7Ci0gICAgaWYgKCFtYXBFbGVtZW50IHx8ICFp
c0hUTUxNYXBFbGVtZW50KG1hcEVsZW1lbnQpKQorICAgIGlmICghbWFwRWxlbWVudCB8fCAhaXM8
SFRNTE1hcEVsZW1lbnQ+KG1hcEVsZW1lbnQpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICAKICAgICByZXR1cm4gZG93bmNhc3Q8SFRNTE1hcEVsZW1lbnQ+KCptYXBFbGVtZW50KS5pbWFn
ZUVsZW1lbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50LmNwcAppbmRleCAwY2UyYjA2
ZmZlODU4NjFmMzZlZDUxMDUyMDJkY2VkYWU3NGQ3M2U3Li5iMmQ2NTk1ZWIxOTQ0ZWFjMzMxZTAy
Nzk4OGI0MWI1MjRiNTRjNTJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxE
b2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnQuY3BwCkBA
IC0xMzksNyArMTM5LDcgQEAgdm9pZCBIVE1MRG9jdW1lbnQ6OnNldERlc2lnbk1vZGUoY29uc3Qg
U3RyaW5nJiB2YWx1ZSkKIGNvbnN0IEF0b21pY1N0cmluZyYgSFRNTERvY3VtZW50OjpiZ0NvbG9y
KCkgY29uc3QKIHsKICAgICBIVE1MRWxlbWVudCogYm9keUVsZW1lbnQgPSBib2R5KCk7Ci0gICAg
aWYgKCFib2R5RWxlbWVudCB8fCAhaXNIVE1MQm9keUVsZW1lbnQoYm9keUVsZW1lbnQpKQorICAg
IGlmICghYm9keUVsZW1lbnQgfHwgIWlzPEhUTUxCb2R5RWxlbWVudD4oYm9keUVsZW1lbnQpKQog
ICAgICAgICByZXR1cm4gZW1wdHlBdG9tOwogICAgIHJldHVybiBib2R5RWxlbWVudC0+ZmFzdEdl
dEF0dHJpYnV0ZShiZ2NvbG9yQXR0cik7CiB9CkBAIC0xNDcsNyArMTQ3LDcgQEAgY29uc3QgQXRv
bWljU3RyaW5nJiBIVE1MRG9jdW1lbnQ6OmJnQ29sb3IoKSBjb25zdAogdm9pZCBIVE1MRG9jdW1l
bnQ6OnNldEJnQ29sb3IoY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBIVE1MRWxlbWVudCog
Ym9keUVsZW1lbnQgPSBib2R5KCk7Ci0gICAgaWYgKCFib2R5RWxlbWVudCB8fCAhaXNIVE1MQm9k
eUVsZW1lbnQoYm9keUVsZW1lbnQpKQorICAgIGlmICghYm9keUVsZW1lbnQgfHwgIWlzPEhUTUxC
b2R5RWxlbWVudD4oYm9keUVsZW1lbnQpKQogICAgICAgICByZXR1cm47CiAgICAgYm9keUVsZW1l
bnQtPnNldEF0dHJpYnV0ZShiZ2NvbG9yQXR0ciwgdmFsdWUpOwogfQpAQCAtMTU1LDcgKzE1NSw3
IEBAIHZvaWQgSFRNTERvY3VtZW50OjpzZXRCZ0NvbG9yKGNvbnN0IFN0cmluZyYgdmFsdWUpCiBj
b25zdCBBdG9taWNTdHJpbmcmIEhUTUxEb2N1bWVudDo6ZmdDb2xvcigpIGNvbnN0CiB7CiAgICAg
SFRNTEVsZW1lbnQqIGJvZHlFbGVtZW50ID0gYm9keSgpOwotICAgIGlmICghYm9keUVsZW1lbnQg
fHwgIWlzSFRNTEJvZHlFbGVtZW50KGJvZHlFbGVtZW50KSkKKyAgICBpZiAoIWJvZHlFbGVtZW50
IHx8ICFpczxIVE1MQm9keUVsZW1lbnQ+KGJvZHlFbGVtZW50KSkKICAgICAgICAgcmV0dXJuIGVt
cHR5QXRvbTsKICAgICByZXR1cm4gYm9keUVsZW1lbnQtPmZhc3RHZXRBdHRyaWJ1dGUodGV4dEF0
dHIpOwogfQpAQCAtMTYzLDcgKzE2Myw3IEBAIGNvbnN0IEF0b21pY1N0cmluZyYgSFRNTERvY3Vt
ZW50OjpmZ0NvbG9yKCkgY29uc3QKIHZvaWQgSFRNTERvY3VtZW50OjpzZXRGZ0NvbG9yKGNvbnN0
IFN0cmluZyYgdmFsdWUpCiB7CiAgICAgSFRNTEVsZW1lbnQqIGJvZHlFbGVtZW50ID0gYm9keSgp
OwotICAgIGlmICghYm9keUVsZW1lbnQgfHwgIWlzSFRNTEJvZHlFbGVtZW50KGJvZHlFbGVtZW50
KSkKKyAgICBpZiAoIWJvZHlFbGVtZW50IHx8ICFpczxIVE1MQm9keUVsZW1lbnQ+KGJvZHlFbGVt
ZW50KSkKICAgICAgICAgcmV0dXJuOwogICAgIGJvZHlFbGVtZW50LT5zZXRBdHRyaWJ1dGUodGV4
dEF0dHIsIHZhbHVlKTsKIH0KQEAgLTE3MSw3ICsxNzEsNyBAQCB2b2lkIEhUTUxEb2N1bWVudDo6
c2V0RmdDb2xvcihjb25zdCBTdHJpbmcmIHZhbHVlKQogY29uc3QgQXRvbWljU3RyaW5nJiBIVE1M
RG9jdW1lbnQ6OmFsaW5rQ29sb3IoKSBjb25zdAogewogICAgIEhUTUxFbGVtZW50KiBib2R5RWxl
bWVudCA9IGJvZHkoKTsKLSAgICBpZiAoIWJvZHlFbGVtZW50IHx8ICFpc0hUTUxCb2R5RWxlbWVu
dChib2R5RWxlbWVudCkpCisgICAgaWYgKCFib2R5RWxlbWVudCB8fCAhaXM8SFRNTEJvZHlFbGVt
ZW50Pihib2R5RWxlbWVudCkpCiAgICAgICAgIHJldHVybiBlbXB0eUF0b207CiAgICAgcmV0dXJu
IGJvZHlFbGVtZW50LT5mYXN0R2V0QXR0cmlidXRlKGFsaW5rQXR0cik7CiB9CkBAIC0xNzksNyAr
MTc5LDcgQEAgY29uc3QgQXRvbWljU3RyaW5nJiBIVE1MRG9jdW1lbnQ6OmFsaW5rQ29sb3IoKSBj
b25zdAogdm9pZCBIVE1MRG9jdW1lbnQ6OnNldEFsaW5rQ29sb3IoY29uc3QgU3RyaW5nJiB2YWx1
ZSkKIHsKICAgICBIVE1MRWxlbWVudCogYm9keUVsZW1lbnQgPSBib2R5KCk7Ci0gICAgaWYgKCFi
b2R5RWxlbWVudCB8fCAhaXNIVE1MQm9keUVsZW1lbnQoYm9keUVsZW1lbnQpKQorICAgIGlmICgh
Ym9keUVsZW1lbnQgfHwgIWlzPEhUTUxCb2R5RWxlbWVudD4oYm9keUVsZW1lbnQpKQogICAgICAg
ICByZXR1cm47CiAgICAgYm9keUVsZW1lbnQtPnNldEF0dHJpYnV0ZShhbGlua0F0dHIsIHZhbHVl
KTsKIH0KQEAgLTE4Nyw3ICsxODcsNyBAQCB2b2lkIEhUTUxEb2N1bWVudDo6c2V0QWxpbmtDb2xv
cihjb25zdCBTdHJpbmcmIHZhbHVlKQogY29uc3QgQXRvbWljU3RyaW5nJiBIVE1MRG9jdW1lbnQ6
OmxpbmtDb2xvcigpIGNvbnN0CiB7CiAgICAgSFRNTEVsZW1lbnQqIGJvZHlFbGVtZW50ID0gYm9k
eSgpOwotICAgIGlmICghYm9keUVsZW1lbnQgfHwgIWlzSFRNTEJvZHlFbGVtZW50KGJvZHlFbGVt
ZW50KSkKKyAgICBpZiAoIWJvZHlFbGVtZW50IHx8ICFpczxIVE1MQm9keUVsZW1lbnQ+KGJvZHlF
bGVtZW50KSkKICAgICAgICAgcmV0dXJuIGVtcHR5QXRvbTsKICAgICByZXR1cm4gYm9keUVsZW1l
bnQtPmZhc3RHZXRBdHRyaWJ1dGUobGlua0F0dHIpOwogfQpAQCAtMTk1LDcgKzE5NSw3IEBAIGNv
bnN0IEF0b21pY1N0cmluZyYgSFRNTERvY3VtZW50OjpsaW5rQ29sb3IoKSBjb25zdAogdm9pZCBI
VE1MRG9jdW1lbnQ6OnNldExpbmtDb2xvcihjb25zdCBTdHJpbmcmIHZhbHVlKQogewogICAgIEhU
TUxFbGVtZW50KiBib2R5RWxlbWVudCA9IGJvZHkoKTsKLSAgICBpZiAoIWJvZHlFbGVtZW50IHx8
ICFpc0hUTUxCb2R5RWxlbWVudChib2R5RWxlbWVudCkpCisgICAgaWYgKCFib2R5RWxlbWVudCB8
fCAhaXM8SFRNTEJvZHlFbGVtZW50Pihib2R5RWxlbWVudCkpCiAgICAgICAgIHJldHVybjsKICAg
ICByZXR1cm4gYm9keUVsZW1lbnQtPnNldEF0dHJpYnV0ZShsaW5rQXR0ciwgdmFsdWUpOwogfQpA
QCAtMjAzLDcgKzIwMyw3IEBAIHZvaWQgSFRNTERvY3VtZW50OjpzZXRMaW5rQ29sb3IoY29uc3Qg
U3RyaW5nJiB2YWx1ZSkKIGNvbnN0IEF0b21pY1N0cmluZyYgSFRNTERvY3VtZW50Ojp2bGlua0Nv
bG9yKCkgY29uc3QKIHsKICAgICBIVE1MRWxlbWVudCogYm9keUVsZW1lbnQgPSBib2R5KCk7Ci0g
ICAgaWYgKCFib2R5RWxlbWVudCB8fCAhaXNIVE1MQm9keUVsZW1lbnQoYm9keUVsZW1lbnQpKQor
ICAgIGlmICghYm9keUVsZW1lbnQgfHwgIWlzPEhUTUxCb2R5RWxlbWVudD4oYm9keUVsZW1lbnQp
KQogICAgICAgICByZXR1cm4gZW1wdHlBdG9tOwogICAgIHJldHVybiBib2R5RWxlbWVudC0+ZmFz
dEdldEF0dHJpYnV0ZSh2bGlua0F0dHIpOwogfQpAQCAtMjExLDcgKzIxMSw3IEBAIGNvbnN0IEF0
b21pY1N0cmluZyYgSFRNTERvY3VtZW50Ojp2bGlua0NvbG9yKCkgY29uc3QKIHZvaWQgSFRNTERv
Y3VtZW50OjpzZXRWbGlua0NvbG9yKGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7CiAgICAgSFRNTEVs
ZW1lbnQqIGJvZHlFbGVtZW50ID0gYm9keSgpOwotICAgIGlmICghYm9keUVsZW1lbnQgfHwgIWlz
SFRNTEJvZHlFbGVtZW50KGJvZHlFbGVtZW50KSkKKyAgICBpZiAoIWJvZHlFbGVtZW50IHx8ICFp
czxIVE1MQm9keUVsZW1lbnQ+KGJvZHlFbGVtZW50KSkKICAgICAgICAgcmV0dXJuOwogICAgIHJl
dHVybiBib2R5RWxlbWVudC0+c2V0QXR0cmlidXRlKHZsaW5rQXR0ciwgdmFsdWUpOwogfQpAQCAt
MzQwLDcgKzM0MCw3IEBAIHZvaWQgSFRNTERvY3VtZW50OjpjbGVhcigpCiBib29sIEhUTUxEb2N1
bWVudDo6aXNGcmFtZVNldCgpIGNvbnN0CiB7CiAgICAgSFRNTEVsZW1lbnQqIGJvZHlFbGVtZW50
ID0gYm9keSgpOwotICAgIHJldHVybiBib2R5RWxlbWVudCAmJiBpc0hUTUxGcmFtZVNldEVsZW1l
bnQoYm9keUVsZW1lbnQpOworICAgIHJldHVybiBib2R5RWxlbWVudCAmJiBpczxIVE1MRnJhbWVT
ZXRFbGVtZW50Pihib2R5RWxlbWVudCk7CiB9CiAKIFBhc3NSZWZQdHI8RG9jdW1lbnQ+IEhUTUxE
b2N1bWVudDo6Y2xvbmVEb2N1bWVudFdpdGhvdXRDaGlsZHJlbigpIGNvbnN0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEVsZW1lbnQuY3BwCmluZGV4IGQ4ZDRkOTZlMjk5NDhjMzI1MWI0ZmU2N2I2NGViY2Vk
YTBlOWJlMWUuLmNkOTJmZjhmMjdjZjgzNGZmZTU0ZTU4NjA4OTFhNWMzNDk5ZTdkMWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCkBAIC00MjcsNyArNDI3LDcgQEAgdm9pZCBIVE1M
RWxlbWVudDo6c2V0SW5uZXJIVE1MKGNvbnN0IFN0cmluZyYgaHRtbCwgRXhjZXB0aW9uQ29kZSYg
ZWMpCiAgICAgaWYgKFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBmcmFnbWVudCA9IGNyZWF0ZUZy
YWdtZW50Rm9ySW5uZXJPdXRlckhUTUwoaHRtbCwgdGhpcywgQWxsb3dTY3JpcHRpbmdDb250ZW50
LCBlYykpIHsKICAgICAgICAgQ29udGFpbmVyTm9kZSogY29udGFpbmVyID0gdGhpczsKICNpZiBF
TkFCTEUoVEVNUExBVEVfRUxFTUVOVCkKLSAgICAgICAgaWYgKGlzSFRNTFRlbXBsYXRlRWxlbWVu
dCgqdGhpcykpCisgICAgICAgIGlmIChpczxIVE1MVGVtcGxhdGVFbGVtZW50PigqdGhpcykpCiAg
ICAgICAgICAgICBjb250YWluZXIgPSBkb3duY2FzdDxIVE1MVGVtcGxhdGVFbGVtZW50PigqdGhp
cykuY29udGVudCgpOwogI2VuZGlmCiAgICAgICAgIHJlcGxhY2VDaGlsZHJlbldpdGhGcmFnbWVu
dCgqY29udGFpbmVyLCBmcmFnbWVudC5yZWxlYXNlKCksIGVjKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEZpZWxkU2V0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxGaWVsZFNldEVsZW1lbnQuY3BwCmluZGV4IDVmZDJkNGNmNzAzMmRjZDkwOThiODlk
OTc2ODk0OGNhMmQ5ZjUwN2MuLmFjMzY1MWYxOTM1ZjQ5NTFhMWMxNWFkOWNiN2Y3YWQ2ZGJiN2I0
ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZpZWxkU2V0RWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRmllbGRTZXRFbGVtZW50LmNwcApAQCAt
NjUsNyArNjUsNyBAQCBzdGF0aWMgdm9pZCB1cGRhdGVGcm9tQ29udHJvbEVsZW1lbnRzQW5jZXN0
b3JEaXNhYmxlZFN0YXRlVW5kZXIoSFRNTEVsZW1lbnQmIHN0YQogICAgIHdoaWxlIChjb250cm9s
KSB7CiAgICAgICAgIGNvbnRyb2wtPnNldEFuY2VzdG9yRGlzYWJsZWQoaXNEaXNhYmxlZCk7CiAg
ICAgICAgIC8vIERvbid0IGNhbGwgc2V0QW5jZXN0b3JEaXNhYmxlZChmYWxzZSkgb24gZm9ybSBj
b250b3JscyBpbnNpZGUgZGlzYWJsZWQgZmllbGRzZXRzLgotICAgICAgICBpZiAoaXNIVE1MRmll
bGRTZXRFbGVtZW50KGNvbnRyb2wpICYmIGNvbnRyb2wtPmZhc3RIYXNBdHRyaWJ1dGUoZGlzYWJs
ZWRBdHRyKSkKKyAgICAgICAgaWYgKGlzPEhUTUxGaWVsZFNldEVsZW1lbnQ+KGNvbnRyb2wpICYm
IGNvbnRyb2wtPmZhc3RIYXNBdHRyaWJ1dGUoZGlzYWJsZWRBdHRyKSkKICAgICAgICAgICAgIGNv
bnRyb2wgPSBUcmF2ZXJzYWw8SFRNTEZvcm1Db250cm9sRWxlbWVudD46Om5leHRTa2lwcGluZ0No
aWxkcmVuKGNvbnRyb2wsICZzdGFydE5vZGUpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBj
b250cm9sID0gVHJhdmVyc2FsPEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ+OjpuZXh0KGNvbnRyb2ws
ICZzdGFydE5vZGUpOwpAQCAtOTMsNyArOTMsNyBAQCB2b2lkIEhUTUxGaWVsZFNldEVsZW1lbnQ6
OmRpc2FibGVkU3RhdGVDaGFuZ2VkKCkKICAgICBib29sIHRoaXNGaWVsZHNldElzRGlzYWJsZWQg
PSBmYXN0SGFzQXR0cmlidXRlKGRpc2FibGVkQXR0cik7CiAgICAgYm9vbCBoYXNTZWVuRmlyc3RM
ZWdlbmRFbGVtZW50ID0gZmFsc2U7CiAgICAgZm9yIChIVE1MRWxlbWVudCogY29udHJvbCA9IFRy
YXZlcnNhbDxIVE1MRWxlbWVudD46OmZpcnN0Q2hpbGQodGhpcyk7IGNvbnRyb2w7IGNvbnRyb2wg
PSBUcmF2ZXJzYWw8SFRNTEVsZW1lbnQ+OjpuZXh0U2libGluZyhjb250cm9sKSkgewotICAgICAg
ICBpZiAoIWhhc1NlZW5GaXJzdExlZ2VuZEVsZW1lbnQgJiYgaXNIVE1MTGVnZW5kRWxlbWVudChj
b250cm9sKSkgeworICAgICAgICBpZiAoIWhhc1NlZW5GaXJzdExlZ2VuZEVsZW1lbnQgJiYgaXM8
SFRNTExlZ2VuZEVsZW1lbnQ+KGNvbnRyb2wpKSB7CiAgICAgICAgICAgICBoYXNTZWVuRmlyc3RM
ZWdlbmRFbGVtZW50ID0gdHJ1ZTsKICAgICAgICAgICAgIHVwZGF0ZUZyb21Db250cm9sRWxlbWVu
dHNBbmNlc3RvckRpc2FibGVkU3RhdGVVbmRlcigqY29udHJvbCwgZmFsc2UgLyogaXNEaXNhYmxl
ZCAqLyk7CiAgICAgICAgICAgICBjb250aW51ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwCmluZGV4IDhjN2FmMTYzYTBkMmY3YWJmOTFjYjE0OWE4
NzY2ZWJlZjRmNmFlMTMuLjE1YjAzZGRlYzVmZmUxNDk2MmIyMTgzN2JjYjk4MWFjNTlmODM1MDMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcApA
QCAtMTAzLDkgKzEwMyw5IEBAIGJvb2wgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6Y29tcHV0ZUlz
RGlzYWJsZWRCeUZpZWxkc2V0QW5jZXN0b3IoKSBjb25zdAogewogICAgIEVsZW1lbnQqIHByZXZp
b3VzQW5jZXN0b3IgPSBudWxscHRyOwogICAgIGZvciAoRWxlbWVudCogYW5jZXN0b3IgPSBwYXJl
bnRFbGVtZW50KCk7IGFuY2VzdG9yOyBhbmNlc3RvciA9IGFuY2VzdG9yLT5wYXJlbnRFbGVtZW50
KCkpIHsKLSAgICAgICAgaWYgKGlzSFRNTEZpZWxkU2V0RWxlbWVudChhbmNlc3RvcikgJiYgYW5j
ZXN0b3ItPmZhc3RIYXNBdHRyaWJ1dGUoZGlzYWJsZWRBdHRyKSkgeworICAgICAgICBpZiAoaXM8
SFRNTEZpZWxkU2V0RWxlbWVudD4oYW5jZXN0b3IpICYmIGFuY2VzdG9yLT5mYXN0SGFzQXR0cmli
dXRlKGRpc2FibGVkQXR0cikpIHsKICAgICAgICAgICAgIEhUTUxGaWVsZFNldEVsZW1lbnQmIGZp
ZWxkU2V0QW5jZXN0b3IgPSBkb3duY2FzdDxIVE1MRmllbGRTZXRFbGVtZW50PigqYW5jZXN0b3Ip
OwotICAgICAgICAgICAgYm9vbCBpc0luRmlyc3RMZWdlbmQgPSBwcmV2aW91c0FuY2VzdG9yICYm
IGlzSFRNTExlZ2VuZEVsZW1lbnQocHJldmlvdXNBbmNlc3RvcikgJiYgcHJldmlvdXNBbmNlc3Rv
ciA9PSBmaWVsZFNldEFuY2VzdG9yLmxlZ2VuZCgpOworICAgICAgICAgICAgYm9vbCBpc0luRmly
c3RMZWdlbmQgPSBwcmV2aW91c0FuY2VzdG9yICYmIGlzPEhUTUxMZWdlbmRFbGVtZW50PihwcmV2
aW91c0FuY2VzdG9yKSAmJiBwcmV2aW91c0FuY2VzdG9yID09IGZpZWxkU2V0QW5jZXN0b3IubGVn
ZW5kKCk7CiAgICAgICAgICAgICByZXR1cm4gIWlzSW5GaXJzdExlZ2VuZDsKICAgICAgICAgfQog
ICAgICAgICBwcmV2aW91c0FuY2VzdG9yID0gYW5jZXN0b3I7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uY3BwCmluZGV4IDY4YzFkZWVmMjQ3
NzMyNzMxZjdlMDUzNmEwMzAwNzVkZGYzZjk3ZmYuLjA1MjQ4YWNkMTc4NmIyODFmNmIxZTY0ODkx
YjlmZWRmODcwZDY5MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1D
b250cm9sc0NvbGxlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1D
b250cm9sc0NvbGxlY3Rpb24uY3BwCkBAIC00MCw3ICs0MCw3IEBAIEhUTUxGb3JtQ29udHJvbHND
b2xsZWN0aW9uOjpIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbihDb250YWluZXJOb2RlJiBvd25l
ck5vZGUpCiAgICAgLCBtX2NhY2hlZEVsZW1lbnQobnVsbHB0cikKICAgICAsIG1fY2FjaGVkRWxl
bWVudE9mZnNldEluQXJyYXkoMCkKIHsKLSAgICBBU1NFUlQoaXNIVE1MRm9ybUVsZW1lbnQob3du
ZXJOb2RlKSB8fCBpc0hUTUxGaWVsZFNldEVsZW1lbnQob3duZXJOb2RlKSk7CisgICAgQVNTRVJU
KGlzPEhUTUxGb3JtRWxlbWVudD4ob3duZXJOb2RlKSB8fCBpczxIVE1MRmllbGRTZXRFbGVtZW50
Pihvd25lck5vZGUpKTsKIH0KIAogUGFzc1JlZjxIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbj4g
SFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb246OmNyZWF0ZShDb250YWluZXJOb2RlJiBvd25lck5v
ZGUsIENvbGxlY3Rpb25UeXBlKQpAQCAtNTQsMTUgKzU0LDE1IEBAIEhUTUxGb3JtQ29udHJvbHND
b2xsZWN0aW9uOjp+SFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24oKQogCiBjb25zdCBWZWN0b3I8
Rm9ybUFzc29jaWF0ZWRFbGVtZW50Kj4mIEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uOjpmb3Jt
Q29udHJvbEVsZW1lbnRzKCkgY29uc3QKIHsKLSAgICBBU1NFUlQoaXNIVE1MRm9ybUVsZW1lbnQo
b3duZXJOb2RlKCkpIHx8IG93bmVyTm9kZSgpLmhhc1RhZ05hbWUoZmllbGRzZXRUYWcpKTsKLSAg
ICBpZiAoaXNIVE1MRm9ybUVsZW1lbnQob3duZXJOb2RlKCkpKQorICAgIEFTU0VSVChpczxIVE1M
Rm9ybUVsZW1lbnQ+KG93bmVyTm9kZSgpKSB8fCBpczxIVE1MRmllbGRTZXRFbGVtZW50Pihvd25l
ck5vZGUoKSkpOworICAgIGlmIChpczxIVE1MRm9ybUVsZW1lbnQ+KG93bmVyTm9kZSgpKSkKICAg
ICAgICAgcmV0dXJuIGRvd25jYXN0PEhUTUxGb3JtRWxlbWVudD4ob3duZXJOb2RlKCkpLmFzc29j
aWF0ZWRFbGVtZW50cygpOwogICAgIHJldHVybiBkb3duY2FzdDxIVE1MRmllbGRTZXRFbGVtZW50
Pihvd25lck5vZGUoKSkuYXNzb2NpYXRlZEVsZW1lbnRzKCk7CiB9CiAKIGNvbnN0IFZlY3RvcjxI
VE1MSW1hZ2VFbGVtZW50Kj4mIEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uOjpmb3JtSW1hZ2VF
bGVtZW50cygpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKGlzSFRNTEZvcm1FbGVtZW50KG93bmVyTm9k
ZSgpKSk7CisgICAgQVNTRVJUKGlzPEhUTUxGb3JtRWxlbWVudD4ob3duZXJOb2RlKCkpKTsKICAg
ICByZXR1cm4gZG93bmNhc3Q8SFRNTEZvcm1FbGVtZW50Pihvd25lck5vZGUoKSkuaW1hZ2VFbGVt
ZW50cygpOwogfQogCkBAIC0xMjgsNyArMTI4LDcgQEAgTm9kZSogSFRNTEZvcm1Db250cm9sc0Nv
bGxlY3Rpb246Om5hbWVkSXRlbShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpIGNvbnN0CiAgICAg
Ly8gYXR0cmlidXRlLiBJZiBhIG1hdGNoIGlzIG5vdCBmb3VuZCwgdGhlIG1ldGhvZCB0aGVuIHNl
YXJjaGVzIGZvciBhbgogICAgIC8vIG9iamVjdCB3aXRoIGEgbWF0Y2hpbmcgbmFtZSBhdHRyaWJ1
dGUsIGJ1dCBvbmx5IG9uIHRob3NlIGVsZW1lbnRzCiAgICAgLy8gdGhhdCBhcmUgYWxsb3dlZCBh
IG5hbWUgYXR0cmlidXRlLgotICAgIGNvbnN0IFZlY3RvcjxIVE1MSW1hZ2VFbGVtZW50Kj4qIGlt
YWdlc0VsZW1lbnRzID0gb3duZXJOb2RlKCkuaGFzVGFnTmFtZShmaWVsZHNldFRhZykgPyBudWxs
cHRyIDogJmZvcm1JbWFnZUVsZW1lbnRzKCk7CisgICAgY29uc3QgVmVjdG9yPEhUTUxJbWFnZUVs
ZW1lbnQqPiogaW1hZ2VzRWxlbWVudHMgPSBpczxIVE1MRmllbGRTZXRFbGVtZW50Pihvd25lck5v
ZGUoKSkgPyBudWxscHRyIDogJmZvcm1JbWFnZUVsZW1lbnRzKCk7CiAgICAgaWYgKEhUTUxFbGVt
ZW50KiBpdGVtID0gZmlyc3ROYW1lZEl0ZW0oZm9ybUNvbnRyb2xFbGVtZW50cygpLCBpbWFnZXNF
bGVtZW50cywgaWRBdHRyLCBuYW1lKSkKICAgICAgICAgcmV0dXJuIGl0ZW07CiAKQEAgLTE2MSw3
ICsxNjEsNyBAQCB2b2lkIEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uOjp1cGRhdGVOYW1lZEVs
ZW1lbnRDYWNoZSgpIGNvbnN0CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAoaXNIVE1MRm9y
bUVsZW1lbnQob3duZXJOb2RlKCkpKSB7CisgICAgaWYgKGlzPEhUTUxGb3JtRWxlbWVudD4ob3du
ZXJOb2RlKCkpKSB7CiAgICAgICAgIGNvbnN0IFZlY3RvcjxIVE1MSW1hZ2VFbGVtZW50Kj4mIGlt
YWdlRWxlbWVudHNBcnJheSA9IGZvcm1JbWFnZUVsZW1lbnRzKCk7CiAgICAgICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBpbWFnZUVsZW1lbnRzQXJyYXkuc2l6ZSgpOyArK2kpIHsKICAgICAg
ICAgICAgIEhUTUxJbWFnZUVsZW1lbnQmIGVsZW1lbnQgPSAqaW1hZ2VFbGVtZW50c0FycmF5W2ld
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCmluZGV4IGRjZDJhODg2YTk1
YjkwNDMwMzNhNTM4NThlOTY1YzQ0NWQ0OTQ0OWUuLmVhZmY3MWYxNjdjYzc3OGEzZjcyM2UxNDRi
M2RjZDFiN2NiMjY0ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1F
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAK
QEAgLTExMCw3ICsxMTAsNyBAQCBib29sIEhUTUxGb3JtRWxlbWVudDo6cmVuZGVyZXJJc05lZWRl
ZChjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAg
IC8vIEZJWE1FOiBTaG91bGRuJ3Qgd2UgYWxzbyBjaGVjayBmb3IgdGFibGUgY2FwdGlvbiAoc2Vl
IHxmb3JtSXNUYWJsZVBhcnR8IGJlbG93KS4KLSAgICBib29sIHBhcmVudElzVGFibGVFbGVtZW50
UGFydCA9IChwYXJlbnRSZW5kZXJlci0+aXNUYWJsZSgpICYmIGlzSFRNTFRhYmxlRWxlbWVudChw
YXJlbnQpKQorICAgIGJvb2wgcGFyZW50SXNUYWJsZUVsZW1lbnRQYXJ0ID0gKHBhcmVudFJlbmRl
cmVyLT5pc1RhYmxlKCkgJiYgaXM8SFRNTFRhYmxlRWxlbWVudD4ocGFyZW50KSkKICAgICAgICAg
fHwgKHBhcmVudFJlbmRlcmVyLT5pc1RhYmxlUm93KCkgJiYgcGFyZW50LT5oYXNUYWdOYW1lKHRy
VGFnKSkKICAgICAgICAgfHwgKHBhcmVudFJlbmRlcmVyLT5pc1RhYmxlU2VjdGlvbigpICYmIHBh
cmVudC0+aGFzVGFnTmFtZSh0Ym9keVRhZykpCiAgICAgICAgIHx8IChwYXJlbnRSZW5kZXJlci0+
aXNSZW5kZXJUYWJsZUNvbCgpICYmIHBhcmVudC0+aGFzVGFnTmFtZShjb2xUYWcpKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50QmFzZS5oIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50QmFzZS5oCmluZGV4IDI3OWViZDgyYTg4Y2Y0
MjdkNDM2NTBlMmU1ZWI4YTcxNGFiMmQxMGQuLmI0NzViZDU4YmQzYzJjNGQwMzUzYjlmYWVlMzI1
ZDhhNzY4MDExYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxl
bWVudEJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnRCYXNl
LmgKQEAgLTc3LDggKzc3LDggQEAgcHJpdmF0ZToKIH07CiAKIHZvaWQgaXNIVE1MRnJhbWVFbGVt
ZW50QmFzZShjb25zdCBIVE1MRnJhbWVFbGVtZW50QmFzZSYpOyAvLyBDYXRjaCB1bm5lY2Vzc2Fy
eSBydW50aW1lIGNoZWNrIG9mIHR5cGUga25vd24gYXQgY29tcGlsZSB0aW1lLgotaW5saW5lIGJv
b2wgaXNIVE1MRnJhbWVFbGVtZW50QmFzZShjb25zdCBIVE1MRWxlbWVudCYgZWxlbWVudCkgeyBy
ZXR1cm4gaXNIVE1MRnJhbWVFbGVtZW50KGVsZW1lbnQpIHx8IGlzSFRNTElGcmFtZUVsZW1lbnQo
ZWxlbWVudCk7IH0KLWlubGluZSBib29sIGlzSFRNTEZyYW1lRWxlbWVudEJhc2UoY29uc3QgTm9k
ZSYgbm9kZSkgeyByZXR1cm4gaXNIVE1MRnJhbWVFbGVtZW50KG5vZGUpIHx8IGlzSFRNTElGcmFt
ZUVsZW1lbnQobm9kZSk7IH0KK2lubGluZSBib29sIGlzSFRNTEZyYW1lRWxlbWVudEJhc2UoY29u
c3QgSFRNTEVsZW1lbnQmIGVsZW1lbnQpIHsgcmV0dXJuIGlzPEhUTUxGcmFtZUVsZW1lbnQ+KGVs
ZW1lbnQpIHx8IGlzPEhUTUxJRnJhbWVFbGVtZW50PihlbGVtZW50KTsgfQoraW5saW5lIGJvb2wg
aXNIVE1MRnJhbWVFbGVtZW50QmFzZShjb25zdCBOb2RlJiBub2RlKSB7IHJldHVybiBpczxIVE1M
RnJhbWVFbGVtZW50Pihub2RlKSB8fCBpczxIVE1MSUZyYW1lRWxlbWVudD4obm9kZSk7IH0KIAog
Tk9ERV9UWVBFX0NBU1RTKEhUTUxGcmFtZUVsZW1lbnRCYXNlKQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxJbWFnZUxvYWRlci5jcHAKaW5kZXggMjlmYmNkZThjNmQ5YmQ2NmYzOWRiMmQ0MDA3ZTgx
ZTRlMGZmNzNkOS4uMzBhYTE3MDRiOWQyZjFiMTE3NjVhZWI1MmU1NzdjMmZhODE0MDI4NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VMb2FkZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlTG9hZGVyLmNwcApAQCAtNDksNyArNDksNyBAQCBI
VE1MSW1hZ2VMb2FkZXI6On5IVE1MSW1hZ2VMb2FkZXIoKQogdm9pZCBIVE1MSW1hZ2VMb2FkZXI6
OmRpc3BhdGNoTG9hZEV2ZW50KCkKIHsKICAgICAvLyBIVE1MVmlkZW9FbGVtZW50IHVzZXMgdGhp
cyBjbGFzcyB0byBsb2FkIHRoZSBwb3N0ZXIgaW1hZ2UsIGJ1dCBpdCBzaG91bGQgbm90IGZpcmUg
ZXZlbnRzIGZvciBsb2FkaW5nIG9yIGZhaWx1cmUuCi0gICAgaWYgKGlzSFRNTFZpZGVvRWxlbWVu
dChlbGVtZW50KCkpKQorICAgIGlmIChpczxIVE1MVmlkZW9FbGVtZW50PihlbGVtZW50KCkpKQog
ICAgICAgICByZXR1cm47CiAKICAgICBib29sIGVycm9yT2NjdXJyZWQgPSBpbWFnZSgpLT5lcnJv
ck9jY3VycmVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAppbmRl
eCBlMmQ1NWUzMzUxNDViYTI5OWNiNzIxZjdkOGRhNzdkNmNiZGU2NTFkLi40MzlhMGExY2ZiODdl
ZGQ4ZTI3YjUxOTdlMTZlM2U5ZmVkOWVmYzM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElu
cHV0RWxlbWVudC5jcHAKQEAgLTE1MjEsNyArMTUyMSw3IEBAIEhUTUxEYXRhTGlzdEVsZW1lbnQq
IEhUTUxJbnB1dEVsZW1lbnQ6OmRhdGFMaXN0KCkgY29uc3QKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAKICAgICBFbGVtZW50KiBlbGVtZW50ID0gdHJlZVNjb3BlKCkuZ2V0RWxlbWVudEJ5SWQo
ZmFzdEdldEF0dHJpYnV0ZShsaXN0QXR0cikpOwotICAgIGlmICghZWxlbWVudCB8fCAhaXNIVE1M
RGF0YUxpc3RFbGVtZW50KGVsZW1lbnQpKQorICAgIGlmICghZWxlbWVudCB8fCAhaXM8SFRNTERh
dGFMaXN0RWxlbWVudD4oZWxlbWVudCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAg
cmV0dXJuIGRvd25jYXN0PEhUTUxEYXRhTGlzdEVsZW1lbnQ+KGVsZW1lbnQpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGVnZW5kRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxMZWdlbmRFbGVtZW50LmNwcAppbmRleCAyZmI0ZDI1MGYyNTFiMGZmOTUy
OWY4N2E4ZTg4NzgzMWFkN2VlNDJjLi44ZTljODI5MzFjMjQ0ZDE5OWE4Njc5MzYzN2RmM2QwNjNh
NWFmNjY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMZWdlbmRFbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMZWdlbmRFbGVtZW50LmNwcApAQCAt
NzksNyArNzksNyBAQCBIVE1MRm9ybUVsZW1lbnQqIEhUTUxMZWdlbmRFbGVtZW50Ojp2aXJ0dWFs
Rm9ybSgpIGNvbnN0CiAgICAgLy8gaXRzIHBhcmVudCwgdGhlbiB0aGUgZm9ybSBhdHRyaWJ1dGUg
bXVzdCByZXR1cm4gdGhlIHNhbWUgdmFsdWUgYXMgdGhlCiAgICAgLy8gZm9ybSBhdHRyaWJ1dGUg
b24gdGhhdCBmaWVsZHNldCBlbGVtZW50LiBPdGhlcndpc2UsIGl0IG11c3QgcmV0dXJuIG51bGwu
CiAgICAgQ29udGFpbmVyTm9kZSogZmllbGRzZXQgPSBwYXJlbnROb2RlKCk7Ci0gICAgaWYgKCFm
aWVsZHNldCB8fCAhaXNIVE1MRmllbGRTZXRFbGVtZW50KGZpZWxkc2V0KSkKKyAgICBpZiAoIWZp
ZWxkc2V0IHx8ICFpczxIVE1MRmllbGRTZXRFbGVtZW50PihmaWVsZHNldCkpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogCiAgICAgcmV0dXJuIGRvd25jYXN0PEhUTUxGaWVsZFNldEVsZW1lbnQ+
KCpmaWVsZHNldCkuZm9ybSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5j
cHAKaW5kZXggOWI0MjI5MjJjZmM1NGYzMjk5ZDc2NmY2YjY2NDc1YThhNGJjMTI3MC4uNzRmOTQz
ZTA2MDYxMmVhNWEyMTljODc0ZmJiYWY0MThhMmQyNWIzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC00ODgyLDcgKzQ4ODIsNyBAQCB2b2lkIEhUTUxNZWRp
YUVsZW1lbnQ6OmVudGVyRnVsbHNjcmVlbigpCiAgICAgbV9pc0luVmlkZW9GdWxsc2NyZWVuID0g
dHJ1ZTsKICAgICBpZiAoaGFzTWVkaWFDb250cm9scygpKQogICAgICAgICBtZWRpYUNvbnRyb2xz
KCktPmVudGVyZWRGdWxsc2NyZWVuKCk7Ci0gICAgaWYgKGRvY3VtZW50KCkucGFnZSgpICYmIGlz
SFRNTFZpZGVvRWxlbWVudCh0aGlzKSkgeworICAgIGlmIChkb2N1bWVudCgpLnBhZ2UoKSAmJiBp
czxIVE1MVmlkZW9FbGVtZW50Pih0aGlzKSkgewogICAgICAgICBIVE1MVmlkZW9FbGVtZW50JiBh
c1ZpZGVvID0gZG93bmNhc3Q8SFRNTFZpZGVvRWxlbWVudD4oKnRoaXMpOwogICAgICAgICBpZiAo
ZG9jdW1lbnQoKS5wYWdlKCktPmNocm9tZSgpLmNsaWVudCgpLnN1cHBvcnRzVmlkZW9GdWxsc2Ny
ZWVuKCkpIHsKICAgICAgICAgICAgIGRvY3VtZW50KCkucGFnZSgpLT5jaHJvbWUoKS5jbGllbnQo
KS5lbnRlclZpZGVvRnVsbHNjcmVlbkZvclZpZGVvRWxlbWVudCgmYXNWaWRlbyk7CkBAIC00OTA2
LDcgKzQ5MDYsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmV4aXRGdWxsc2NyZWVuKCkKICAg
ICBtX2lzSW5WaWRlb0Z1bGxzY3JlZW4gPSBmYWxzZTsKICAgICBpZiAoaGFzTWVkaWFDb250cm9s
cygpKQogICAgICAgICBtZWRpYUNvbnRyb2xzKCktPmV4aXRlZEZ1bGxzY3JlZW4oKTsKLSAgICBp
ZiAoZG9jdW1lbnQoKS5wYWdlKCkgJiYgaXNIVE1MVmlkZW9FbGVtZW50KHRoaXMpKSB7CisgICAg
aWYgKGRvY3VtZW50KCkucGFnZSgpICYmIGlzPEhUTUxWaWRlb0VsZW1lbnQ+KHRoaXMpKSB7CiAg
ICAgICAgIGlmIChtX21lZGlhU2Vzc2lvbi0+cmVxdWlyZXNGdWxsc2NyZWVuRm9yVmlkZW9QbGF5
YmFjaygqdGhpcykpCiAgICAgICAgICAgICBwYXVzZUludGVybmFsKCk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE5hbWVDb2xsZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE5hbWVDb2xsZWN0aW9uLmNwcAppbmRleCBhZjNjMzYzNTJhYTM2ODZiYmRm
YWEzNGU1ZDc4YWFkYjNiNTY3MWRmLi4zN2Y1OGMxNGUxY2RjNWQ2MWMyMzU1MmFmZTYxNjY4MGU5
ZmY5ODUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxOYW1lQ29sbGVjdGlv
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTmFtZUNvbGxlY3Rpb24uY3BwCkBA
IC01MSw4ICs1MSw4IEBAIEhUTUxOYW1lQ29sbGVjdGlvbjo6fkhUTUxOYW1lQ29sbGVjdGlvbigp
CiAKIGJvb2wgV2luZG93TmFtZUNvbGxlY3Rpb246OmVsZW1lbnRNYXRjaGVzSWZOYW1lQXR0cmli
dXRlTWF0Y2goY29uc3QgRWxlbWVudCYgZWxlbWVudCkKIHsKLSAgICByZXR1cm4gaXNIVE1MSW1h
Z2VFbGVtZW50KGVsZW1lbnQpIHx8IGlzSFRNTEZvcm1FbGVtZW50KGVsZW1lbnQpIHx8IGVsZW1l
bnQuaGFzVGFnTmFtZShhcHBsZXRUYWcpCi0gICAgICAgIHx8IGVsZW1lbnQuaGFzVGFnTmFtZShl
bWJlZFRhZykgfHwgZWxlbWVudC5oYXNUYWdOYW1lKG9iamVjdFRhZyk7CisgICAgcmV0dXJuIGlz
PEhUTUxJbWFnZUVsZW1lbnQ+KGVsZW1lbnQpIHx8IGlzPEhUTUxGb3JtRWxlbWVudD4oZWxlbWVu
dCkgfHwgaXM8SFRNTEFwcGxldEVsZW1lbnQ+KGVsZW1lbnQpCisgICAgICAgIHx8IGlzPEhUTUxF
bWJlZEVsZW1lbnQ+KGVsZW1lbnQpIHx8IGlzPEhUTUxPYmplY3RFbGVtZW50PihlbGVtZW50KTsK
IH0KIAogYm9vbCBXaW5kb3dOYW1lQ29sbGVjdGlvbjo6ZWxlbWVudE1hdGNoZXMoY29uc3QgRWxl
bWVudCYgZWxlbWVudCwgY29uc3QgQXRvbWljU3RyaW5nSW1wbCogbmFtZSkKQEAgLTgxLDEzICs4
MSwxMyBAQCBib29sIERvY3VtZW50TmFtZUNvbGxlY3Rpb246OmVsZW1lbnRNYXRjaGVzKGNvbnN0
IEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IEF0b21pYwogewogICAgIC8vIEZpbmQgaW1hZ2VzLCBm
b3JtcywgYXBwbGV0cywgZW1iZWRzLCBvYmplY3RzIGFuZCBpZnJhbWVzIGJ5IG5hbWUsIGFwcGxl
dHMgYW5kIG9iamVjdCBieSBpZCwgYW5kIGltYWdlcyBieSBpZAogICAgIC8vIGJ1dCBvbmx5IGlm
IHRoZXkgaGF2ZSBhIG5hbWUgYXR0cmlidXRlICh0aGlzIHZlcnkgc3RyYW5nZSBydWxlIG1hdGNo
ZXMgSUUpCi0gICAgaWYgKGlzSFRNTEZvcm1FbGVtZW50KGVsZW1lbnQpIHx8IGVsZW1lbnQuaGFz
VGFnTmFtZShlbWJlZFRhZykgfHwgZWxlbWVudC5oYXNUYWdOYW1lKGlmcmFtZVRhZykpCisgICAg
aWYgKGlzPEhUTUxGb3JtRWxlbWVudD4oZWxlbWVudCkgfHwgaXM8SFRNTEVtYmVkRWxlbWVudD4o
ZWxlbWVudCkgfHwgaXM8SFRNTElGcmFtZUVsZW1lbnQ+KGVsZW1lbnQpKQogICAgICAgICByZXR1
cm4gZWxlbWVudC5nZXROYW1lQXR0cmlidXRlKCkuaW1wbCgpID09IG5hbWU7Ci0gICAgaWYgKGVs
ZW1lbnQuaGFzVGFnTmFtZShhcHBsZXRUYWcpKQorICAgIGlmIChpczxIVE1MQXBwbGV0RWxlbWVu
dD4oZWxlbWVudCkpCiAgICAgICAgIHJldHVybiBlbGVtZW50LmdldE5hbWVBdHRyaWJ1dGUoKS5p
bXBsKCkgPT0gbmFtZSB8fCBlbGVtZW50LmdldElkQXR0cmlidXRlKCkuaW1wbCgpID09IG5hbWU7
CiAgICAgaWYgKGlzPEhUTUxPYmplY3RFbGVtZW50PihlbGVtZW50KSkKICAgICAgICAgcmV0dXJu
IChlbGVtZW50LmdldE5hbWVBdHRyaWJ1dGUoKS5pbXBsKCkgPT0gbmFtZSB8fCBlbGVtZW50Lmdl
dElkQXR0cmlidXRlKCkuaW1wbCgpID09IG5hbWUpICYmIGRvd25jYXN0PEhUTUxPYmplY3RFbGVt
ZW50PihlbGVtZW50KS5pc0RvY05hbWVkSXRlbSgpOwotICAgIGlmIChpc0hUTUxJbWFnZUVsZW1l
bnQoZWxlbWVudCkpCisgICAgaWYgKGlzPEhUTUxJbWFnZUVsZW1lbnQ+KGVsZW1lbnQpKQogICAg
ICAgICByZXR1cm4gZWxlbWVudC5nZXROYW1lQXR0cmlidXRlKCkuaW1wbCgpID09IG5hbWUgfHwg
KGVsZW1lbnQuZ2V0SWRBdHRyaWJ1dGUoKS5pbXBsKCkgPT0gbmFtZSAmJiBlbGVtZW50Lmhhc05h
bWUoKSk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MT3B0aW9uRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRp
b25FbGVtZW50LmNwcAppbmRleCBjZTY1MTI3YzU4ZjhhY2E2MmE2NWYxNzcyMzg0ODQyZjZjZTNj
ZDI4Li4zYzM3NzA4YWVlMjViOTlkOTBlNWNiMTA3YWFhYzQ3NmZiMjIwOTNlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25FbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxPcHRpb25FbGVtZW50LmNwcApAQCAtMjU3LDcgKzI1Nyw3IEBAIHZv
aWQgSFRNTE9wdGlvbkVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChjb25zdCBDaGlsZENoYW5nZSYg
Y2hhbmdlKQogSFRNTERhdGFMaXN0RWxlbWVudCogSFRNTE9wdGlvbkVsZW1lbnQ6Om93bmVyRGF0
YUxpc3RFbGVtZW50KCkgY29uc3QKIHsKICAgICBmb3IgKENvbnRhaW5lck5vZGUqIHBhcmVudCA9
IHBhcmVudE5vZGUoKTsgcGFyZW50IDsgcGFyZW50ID0gcGFyZW50LT5wYXJlbnROb2RlKCkpIHsK
LSAgICAgICAgaWYgKGlzSFRNTERhdGFMaXN0RWxlbWVudChwYXJlbnQpKQorICAgICAgICBpZiAo
aXM8SFRNTERhdGFMaXN0RWxlbWVudD4ocGFyZW50KSkKICAgICAgICAgICAgIHJldHVybiBkb3du
Y2FzdDxIVE1MRGF0YUxpc3RFbGVtZW50PihwYXJlbnQpOwogICAgIH0KICAgICByZXR1cm4gbnVs
bHB0cjsKQEAgLTMwMiw3ICszMDIsNyBAQCB2b2lkIEhUTUxPcHRpb25FbGVtZW50Ojp3aWxsUmVz
ZXRDb21wdXRlZFN0eWxlKCkKIFN0cmluZyBIVE1MT3B0aW9uRWxlbWVudDo6dGV4dEluZGVudGVk
VG9SZXNwZWN0R3JvdXBMYWJlbCgpIGNvbnN0CiB7CiAgICAgQ29udGFpbmVyTm9kZSogcGFyZW50
ID0gcGFyZW50Tm9kZSgpOwotICAgIGlmIChwYXJlbnQgJiYgaXNIVE1MT3B0R3JvdXBFbGVtZW50
KHBhcmVudCkpCisgICAgaWYgKHBhcmVudCAmJiBpczxIVE1MT3B0R3JvdXBFbGVtZW50PihwYXJl
bnQpKQogICAgICAgICByZXR1cm4gIiAgICAiICsgdGV4dCgpOwogICAgIHJldHVybiB0ZXh0KCk7
CiB9CkBAIC0zMTYsNyArMzE2LDcgQEAgYm9vbCBIVE1MT3B0aW9uRWxlbWVudDo6aXNEaXNhYmxl
ZEZvcm1Db250cm9sKCkgY29uc3QKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgSFRNTEVs
ZW1lbnQmIHBhcmVudEVsZW1lbnQgPSB0b0hUTUxFbGVtZW50KCpwYXJlbnROb2RlKCkpOwotICAg
IHJldHVybiBpc0hUTUxPcHRHcm91cEVsZW1lbnQocGFyZW50RWxlbWVudCkgJiYgcGFyZW50RWxl
bWVudC5pc0Rpc2FibGVkRm9ybUNvbnRyb2woKTsKKyAgICByZXR1cm4gaXM8SFRNTE9wdEdyb3Vw
RWxlbWVudD4ocGFyZW50RWxlbWVudCkgJiYgcGFyZW50RWxlbWVudC5pc0Rpc2FibGVkRm9ybUNv
bnRyb2woKTsKIH0KIAogTm9kZTo6SW5zZXJ0aW9uTm90aWZpY2F0aW9uUmVxdWVzdCBIVE1MT3B0
aW9uRWxlbWVudDo6aW5zZXJ0ZWRJbnRvKENvbnRhaW5lck5vZGUmIGluc2VydGlvblBvaW50KQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmNwcAppbmRleCBjOTYzMjYyNDUw
MDZiOGI3MDYwZTE4MGZjZmMwOWUyNWEwZWEyZGJlLi41ZDMyZTM4NmY0MTA1Y2YyMWJiYzM0NGUz
YTY3MmZiNTc2MjJmZDQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxl
Y3RFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50
LmNwcApAQCAtNzkwLDcgKzc5MCw3IEBAIHZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6OnJlY2FsY0xp
c3RJdGVtcyhib29sIHVwZGF0ZVNlbGVjdGVkU3RhdGVzKSBjb25zdAogICAgICAgICAvLyBvcHRn
cm91cCB0YWdzIG1heSBub3QgbmVzdC4gSG93ZXZlciwgYm90aCBGaXJlRm94IGFuZCBJRSB3aWxs
CiAgICAgICAgIC8vIGZsYXR0ZW4gdGhlIHRyZWUgYXV0b21hdGljYWxseSwgc28gd2UgZm9sbG93
IHN1aXQuCiAgICAgICAgIC8vIChodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNDAxL2ludGVyYWN0
L2Zvcm1zLmh0bWwjaC0xNy42KQotICAgICAgICBpZiAoaXNIVE1MT3B0R3JvdXBFbGVtZW50KGN1
cnJlbnQpKSB7CisgICAgICAgIGlmIChpczxIVE1MT3B0R3JvdXBFbGVtZW50PihjdXJyZW50KSkg
ewogICAgICAgICAgICAgbV9saXN0SXRlbXMuYXBwZW5kKGN1cnJlbnQpOwogICAgICAgICAgICAg
aWYgKEVsZW1lbnQqIG5leHRFbGVtZW50ID0gRWxlbWVudFRyYXZlcnNhbDo6Zmlyc3RXaXRoaW4o
Y3VycmVudCkpIHsKICAgICAgICAgICAgICAgICBjdXJyZW50RWxlbWVudCA9IG5leHRFbGVtZW50
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVFbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlRWxlbWVudC5jcHAKaW5kZXggYWI3MDFmMzI0
Y2YyNmVjNDJlZTYxZWJkOTA5ZTk3N2JmMjE5ZWExNy4uNjI4NGNlY2RhNzA2ZTgzZGY2ZDZiNTEz
MWFlMTE3YjRlNTA4ODMwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFi
bGVFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUVsZW1lbnQu
Y3BwCkBAIC03MCw3ICs3MCw3IEBAIFBhc3NSZWZQdHI8SFRNTFRhYmxlRWxlbWVudD4gSFRNTFRh
YmxlRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hCiBIVE1MVGFibGVD
YXB0aW9uRWxlbWVudCogSFRNTFRhYmxlRWxlbWVudDo6Y2FwdGlvbigpIGNvbnN0CiB7CiAgICAg
Zm9yIChOb2RlKiBjaGlsZCA9IGZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5l
eHRTaWJsaW5nKCkpIHsKLSAgICAgICAgaWYgKGlzSFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQoY2hp
bGQpKQorICAgICAgICBpZiAoaXM8SFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQ+KGNoaWxkKSkKICAg
ICAgICAgICAgIHJldHVybiBkb3duY2FzdDxIVE1MVGFibGVDYXB0aW9uRWxlbWVudD4oY2hpbGQp
OwogICAgIH0KICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFRhYmxlUGFydEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
VGFibGVQYXJ0RWxlbWVudC5jcHAKaW5kZXggZjUxMDgyNGVkYmE1YWFhN2RlMDQ0NjM3ZWJkM2Y0
NTUwMDk3NzQ5NC4uYmJkZDg0YmMzN2JhMjhiOGNlODRiYjI1YjRiMzE4YTQ2NDZlNjRkZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVQYXJ0RWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVQYXJ0RWxlbWVudC5jcHAKQEAgLTg2LDcg
Kzg2LDcgQEAgdm9pZCBIVE1MVGFibGVQYXJ0RWxlbWVudDo6Y29sbGVjdFN0eWxlRm9yUHJlc2Vu
dGF0aW9uQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE4KIEhUTUxUYWJsZUVsZW1lbnQqIEhUTUxU
YWJsZVBhcnRFbGVtZW50OjpmaW5kUGFyZW50VGFibGUoKSBjb25zdAogewogICAgIENvbnRhaW5l
ck5vZGUqIHBhcmVudCA9IHBhcmVudE5vZGUoKTsKLSAgICB3aGlsZSAocGFyZW50ICYmICFpc0hU
TUxUYWJsZUVsZW1lbnQocGFyZW50KSkKKyAgICB3aGlsZSAocGFyZW50ICYmICFpczxIVE1MVGFi
bGVFbGVtZW50PihwYXJlbnQpKQogICAgICAgICBwYXJlbnQgPSBwYXJlbnQtPnBhcmVudE5vZGUo
KTsKICAgICByZXR1cm4gZG93bmNhc3Q8SFRNTFRhYmxlRWxlbWVudD4ocGFyZW50KTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlUm93RWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZVJvd0VsZW1lbnQuY3BwCmluZGV4IDQ3ZmYzM2Jk
NzUzZGI0OTNlNjk0NTkzY2I2NTA3YjM0MjM3OGI0NTguLjFmZjY3MWMyNTQyNWU3NWViZGJlZjM1
YWIxNTk3Y2U0M2UzNGE5ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRh
YmxlUm93RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVSb3dF
bGVtZW50LmNwcApAQCAtNjAsNyArNjAsNyBAQCBpbnQgSFRNTFRhYmxlUm93RWxlbWVudDo6cm93
SW5kZXgoKSBjb25zdAogICAgIGlmICghdGFibGUpCiAgICAgICAgIHJldHVybiAtMTsKICAgICB0
YWJsZSA9IHRhYmxlLT5wYXJlbnROb2RlKCk7Ci0gICAgaWYgKCF0YWJsZSB8fCAhaXNIVE1MVGFi
bGVFbGVtZW50KHRhYmxlKSkKKyAgICBpZiAoIXRhYmxlIHx8ICFpczxIVE1MVGFibGVFbGVtZW50
Pih0YWJsZSkpCiAgICAgICAgIHJldHVybiAtMTsKIAogICAgIC8vIFRvIG1hdGNoIEZpcmVmb3gs
IHRoZSByb3cgaW5kaWNlcyB3b3JrIGxpa2UgdGhpczoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFRhYmxlUm93c0NvbGxlY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MVGFibGVSb3dzQ29sbGVjdGlvbi5jcHAKaW5kZXggMDRhOTYwNDM2ZTEwNTc2MTg0Mzk3
ZDg5NmEzMTY1ZDU4OWMxYzEzOS4uM2FkMjJhNTQ2NTgyOTIyNTM4NzdiYmM1MmRmZWYzNjFjYTg0
ZjFmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVSb3dzQ29sbGVj
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVSb3dzQ29sbGVjdGlv
bi5jcHAKQEAgLTk3LDcgKzk3LDcgQEAgSFRNTFRhYmxlUm93RWxlbWVudCogSFRNTFRhYmxlUm93
c0NvbGxlY3Rpb246OnJvd0FmdGVyKEhUTUxUYWJsZUVsZW1lbnQqIHRhYmxlLAogICAgIGVsc2Ug
aWYgKGlzSW5TZWN0aW9uKCpwcmV2aW91cywgdGJvZHlUYWcpKQogICAgICAgICBjaGlsZCA9IEVs
ZW1lbnRUcmF2ZXJzYWw6Om5leHRTaWJsaW5nKHByZXZpb3VzLT5wYXJlbnROb2RlKCkpOwogICAg
IGZvciAoOyBjaGlsZDsgY2hpbGQgPSBFbGVtZW50VHJhdmVyc2FsOjpuZXh0U2libGluZyhjaGls
ZCkpIHsKLSAgICAgICAgaWYgKGlzSFRNTFRhYmxlUm93RWxlbWVudChjaGlsZCkpCisgICAgICAg
IGlmIChpczxIVE1MVGFibGVSb3dFbGVtZW50PihjaGlsZCkpCiAgICAgICAgICAgICByZXR1cm4g
ZG93bmNhc3Q8SFRNTFRhYmxlUm93RWxlbWVudD4oY2hpbGQpOwogICAgICAgICBpZiAoY2hpbGQt
Pmhhc1RhZ05hbWUodGJvZHlUYWcpKSB7CiAgICAgICAgICAgICBpZiAoYXV0byByb3cgPSBjaGls
ZHJlbk9mVHlwZTxIVE1MVGFibGVSb3dFbGVtZW50PigqY2hpbGQpLmZpcnN0KCkpCkBAIC0xMzAs
NyArMTMwLDcgQEAgSFRNTFRhYmxlUm93RWxlbWVudCogSFRNTFRhYmxlUm93c0NvbGxlY3Rpb246
Omxhc3RSb3coSFRNTFRhYmxlRWxlbWVudCogdGFibGUpCiAgICAgfQogCiAgICAgZm9yIChhdXRv
KiBjaGlsZCA9IEVsZW1lbnRUcmF2ZXJzYWw6Omxhc3RDaGlsZCh0YWJsZSk7IGNoaWxkOyBjaGls
ZCA9IEVsZW1lbnRUcmF2ZXJzYWw6OnByZXZpb3VzU2libGluZyhjaGlsZCkpIHsKLSAgICAgICAg
aWYgKGlzSFRNTFRhYmxlUm93RWxlbWVudChjaGlsZCkpCisgICAgICAgIGlmIChpczxIVE1MVGFi
bGVSb3dFbGVtZW50PihjaGlsZCkpCiAgICAgICAgICAgICByZXR1cm4gZG93bmNhc3Q8SFRNTFRh
YmxlUm93RWxlbWVudD4oY2hpbGQpOwogICAgICAgICBpZiAoY2hpbGQtPmhhc1RhZ05hbWUodGJv
ZHlUYWcpKSB7CiAgICAgICAgICAgICBpZiAoYXV0byogcm93ID0gY2hpbGRyZW5PZlR5cGU8SFRN
TFRhYmxlUm93RWxlbWVudD4oKmNoaWxkKS5sYXN0KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxUYWdOYW1lcy5pbiBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhZ05h
bWVzLmluCmluZGV4IDEyYTVjMGY3NzU1OTljOTBkMGMzODYxMDBlODU1ODM0NWQzYTUwOWUuLmM1
NGFmYTFhNTM3ZTU1NjQ4NTY2YTEwZTYzYzJmNDBmYzU0ZjFiMzAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFRhZ05hbWVzLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFRhZ05hbWVzLmluCkBAIC0yMSw3ICsyMSw3IEBAIGJnc291bmQgaW50ZXJmYWNlTmFtZT1I
VE1MRWxlbWVudAogYmlnIGludGVyZmFjZU5hbWU9SFRNTEVsZW1lbnQKIGJsb2NrcXVvdGUgaW50
ZXJmYWNlTmFtZT1IVE1MUXVvdGVFbGVtZW50CiBib2R5IGdlbmVyYXRlVHlwZUhlbHBlcnMKLWJy
IGludGVyZmFjZU5hbWU9SFRNTEJSRWxlbWVudAorYnIgaW50ZXJmYWNlTmFtZT1IVE1MQlJFbGVt
ZW50LCBnZW5lcmF0ZVR5cGVIZWxwZXJzCiBidXR0b24gY29uc3RydWN0b3JOZWVkc0Zvcm1FbGVt
ZW50LCBnZW5lcmF0ZVR5cGVIZWxwZXJzCiBjYW52YXMgZ2VuZXJhdGVUeXBlSGVscGVycwogY2Fw
dGlvbiBpbnRlcmZhY2VOYW1lPUhUTUxUYWJsZUNhcHRpb25FbGVtZW50LCBnZW5lcmF0ZVR5cGVI
ZWxwZXJzCkBAIC02MCw3ICs2MCw3IEBAIGg2IGludGVyZmFjZU5hbWU9SFRNTEhlYWRpbmdFbGVt
ZW50CiBoZWFkIGdlbmVyYXRlVHlwZUhlbHBlcnMKIGhlYWRlciBpbnRlcmZhY2VOYW1lPUhUTUxF
bGVtZW50CiBoZ3JvdXAgaW50ZXJmYWNlTmFtZT1IVE1MRWxlbWVudAotaHIgaW50ZXJmYWNlTmFt
ZT1IVE1MSFJFbGVtZW50CitociBpbnRlcmZhY2VOYW1lPUhUTUxIUkVsZW1lbnQsIGdlbmVyYXRl
VHlwZUhlbHBlcnMKIGh0bWwgZ2VuZXJhdGVUeXBlSGVscGVycwogaSBpbnRlcmZhY2VOYW1lPUhU
TUxFbGVtZW50CiBpZnJhbWUgaW50ZXJmYWNlTmFtZT1IVE1MSUZyYW1lRWxlbWVudCwgZ2VuZXJh
dGVUeXBlSGVscGVycwpAQCAtMTEyLDcgKzExMiw3IEBAIHNlY3Rpb24gaW50ZXJmYWNlTmFtZT1I
VE1MRWxlbWVudAogc2VsZWN0IGNvbnN0cnVjdG9yTmVlZHNGb3JtRWxlbWVudCwgZ2VuZXJhdGVU
eXBlSGVscGVycwogc21hbGwgaW50ZXJmYWNlTmFtZT1IVE1MRWxlbWVudAogc291cmNlIHdyYXBw
ZXJPbmx5SWZNZWRpYUlzQXZhaWxhYmxlLCBjb25kaXRpb25hbD1WSURFTywgZ2VuZXJhdGVUeXBl
SGVscGVycwotc3Bhbgorc3BhbiBnZW5lcmF0ZVR5cGVIZWxwZXJzCiBzdHJpa2UgaW50ZXJmYWNl
TmFtZT1IVE1MRWxlbWVudAogc3Ryb25nIGludGVyZmFjZU5hbWU9SFRNTEVsZW1lbnQKIHN0eWxl
IGNvbnN0cnVjdG9yTmVlZHNDcmVhdGVkQnlQYXJzZXIsIGdlbmVyYXRlVHlwZUhlbHBlcnMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTGFiZWxzTm9kZUxpc3QuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9MYWJlbHNOb2RlTGlzdC5jcHAKaW5kZXggOGMyOTYyMDYwZjJiZDA4ZWRh
Njc4YjBhMGIxNGNlYWE0YTQ1NDQ5YS4uMTFjZjA3YmE5YzUzMGE4NmYyYjZkNjQ2Nzg1MWE2ZTJh
NzQyZWE5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9MYWJlbHNOb2RlTGlzdC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9MYWJlbHNOb2RlTGlzdC5jcHAKQEAgLTQ1LDcg
KzQ1LDcgQEAgTGFiZWxzTm9kZUxpc3Q6On5MYWJlbHNOb2RlTGlzdCgpCiAgICAgCiBib29sIExh
YmVsc05vZGVMaXN0OjplbGVtZW50TWF0Y2hlcyhFbGVtZW50JiB0ZXN0Tm9kZSkgY29uc3QKIHsK
LSAgICByZXR1cm4gaXNIVE1MTGFiZWxFbGVtZW50KHRlc3ROb2RlKSAmJiBkb3duY2FzdDxIVE1M
TGFiZWxFbGVtZW50Pih0ZXN0Tm9kZSkuY29udHJvbCgpID09ICZvd25lck5vZGUoKTsKKyAgICBy
ZXR1cm4gaXM8SFRNTExhYmVsRWxlbWVudD4odGVzdE5vZGUpICYmIGRvd25jYXN0PEhUTUxMYWJl
bEVsZW1lbnQ+KHRlc3ROb2RlKS5jb250cm9sKCkgPT0gJm93bmVyTm9kZSgpOwogfQogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlh
RG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYURvY3VtZW50LmNwcAppbmRl
eCAwYzI1YjNiZmJkZTI2MWZkMDJhNmFlNDk4NjRkNTUxYTIxYWY1OGY5Li45NWFmZDkyNGNjYmMx
MmI4ZTQ3ZDZhYTZhNzBlM2JiYmQ3ZTQ3ZDdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL01lZGlhRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFEb2N1
bWVudC5jcHAKQEAgLTE2MCw3ICsxNjAsNyBAQCBQYXNzUmVmUHRyPERvY3VtZW50UGFyc2VyPiBN
ZWRpYURvY3VtZW50OjpjcmVhdGVQYXJzZXIoKQogCiBzdGF0aWMgaW5saW5lIEhUTUxWaWRlb0Vs
ZW1lbnQqIGRlc2NlbmRlbnRWaWRlb0VsZW1lbnQoQ29udGFpbmVyTm9kZSYgbm9kZSkKIHsKLSAg
ICBpZiAoaXNIVE1MVmlkZW9FbGVtZW50KG5vZGUpKQorICAgIGlmIChpczxIVE1MVmlkZW9FbGVt
ZW50Pihub2RlKSkKICAgICAgICAgcmV0dXJuIGRvd25jYXN0PEhUTUxWaWRlb0VsZW1lbnQ+KCZu
b2RlKTsKIAogICAgIFJlZlB0cjxOb2RlTGlzdD4gbm9kZUxpc3QgPSBub2RlLmdldEVsZW1lbnRz
QnlUYWdOYW1lTlModmlkZW9UYWcubmFtZXNwYWNlVVJJKCksIHZpZGVvVGFnLmxvY2FsTmFtZSgp
KTsKQEAgLTE3Myw3ICsxNzMsNyBAQCBzdGF0aWMgaW5saW5lIEhUTUxWaWRlb0VsZW1lbnQqIGRl
c2NlbmRlbnRWaWRlb0VsZW1lbnQoQ29udGFpbmVyTm9kZSYgbm9kZSkKIAogc3RhdGljIGlubGlu
ZSBIVE1MVmlkZW9FbGVtZW50KiBhbmNlc3RvclZpZGVvRWxlbWVudChOb2RlKiBub2RlKQogewot
ICAgIHdoaWxlIChub2RlICYmICFpc0hUTUxWaWRlb0VsZW1lbnQobm9kZSkpCisgICAgd2hpbGUg
KG5vZGUgJiYgIWlzPEhUTUxWaWRlb0VsZW1lbnQ+KG5vZGUpKQogICAgICAgICBub2RlID0gbm9k
ZS0+cGFyZW50T3JTaGFkb3dIb3N0Tm9kZSgpOwogCiAgICAgcmV0dXJuIGRvd25jYXN0PEhUTUxW
aWRlb0VsZW1lbnQ+KG5vZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9SYWRp
b0lucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1JhZGlvSW5wdXRUeXBlLmNwcApp
bmRleCA4YTVlODg1MTBlMTZiOWRmZmIzZTQ2ZTg2NTgwY2MwNDEwZTg1NzYwLi41ZjVlYzc1NDJi
ZDE4MjgwZTdkZmU1NjUxNDgxZWE1Y2IxNDQxNTJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL1JhZGlvSW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1JhZGlv
SW5wdXRUeXBlLmNwcApAQCAtODEsNyArODEsNyBAQCB2b2lkIFJhZGlvSW5wdXRUeXBlOjpoYW5k
bGVLZXlkb3duRXZlbnQoS2V5Ym9hcmRFdmVudCogZXZlbnQpCiAgICAgTm9kZSogbm9kZSA9ICZl
bGVtZW50KCk7CiAgICAgd2hpbGUgKChub2RlID0gKGZvcndhcmQgPyBOb2RlVHJhdmVyc2FsOjpu
ZXh0KG5vZGUpIDogTm9kZVRyYXZlcnNhbDo6cHJldmlvdXMobm9kZSkpKSkgewogICAgICAgICAv
LyBPbmNlIHdlIGVuY291bnRlciBhIGZvcm0gZWxlbWVudCwgd2Uga25vdyB3ZSdyZSB0aHJvdWdo
LgotICAgICAgICBpZiAoaXNIVE1MRm9ybUVsZW1lbnQobm9kZSkpCisgICAgICAgIGlmIChpczxI
VE1MRm9ybUVsZW1lbnQ+KG5vZGUpKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIC8vIExv
b2sgZm9yIG1vcmUgcmFkaW8gYnV0dG9ucy4KICAgICAgICAgaWYgKCFpczxIVE1MSW5wdXRFbGVt
ZW50Pihub2RlKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFkaW9Ob2RlTGlz
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1JhZGlvTm9kZUxpc3QuY3BwCmluZGV4IDhkNDY5
MjExZDZlMTFjOTgxYmJiYzNmODQ1MTdmMGYyODQ5ZjBkNzMuLjVlNDAyNWVjYzA4ZDUzNjkzMDMz
ZDMwN2ZkMjVmZGEzMjZkZTYyNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFk
aW9Ob2RlTGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9SYWRpb05vZGVMaXN0LmNw
cApAQCAtNDEsNyArNDEsNyBAQCB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogUmFkaW9Ob2Rl
TGlzdDo6UmFkaW9Ob2RlTGlzdChDb250YWluZXJOb2RlJiByb290Tm9kZSwgY29uc3QgQXRvbWlj
U3RyaW5nJiBuYW1lKQogICAgIDogQ2FjaGVkTGl2ZU5vZGVMaXN0KHJvb3ROb2RlLCBJbnZhbGlk
YXRlRm9yRm9ybUNvbnRyb2xzKQogICAgICwgbV9uYW1lKG5hbWUpCi0gICAgLCBtX2lzUm9vdGVk
QXREb2N1bWVudChpc0hUTUxGb3JtRWxlbWVudChvd25lck5vZGUoKSkpCisgICAgLCBtX2lzUm9v
dGVkQXREb2N1bWVudChpczxIVE1MRm9ybUVsZW1lbnQ+KG93bmVyTm9kZSgpKSkKIHsKIH0KIApA
QCAtODYsNyArODYsNyBAQCB2b2lkIFJhZGlvTm9kZUxpc3Q6OnNldFZhbHVlKGNvbnN0IFN0cmlu
ZyYgdmFsdWUpCiBib29sIFJhZGlvTm9kZUxpc3Q6OmNoZWNrRWxlbWVudE1hdGNoZXNSYWRpb05v
ZGVMaXN0RmlsdGVyKGNvbnN0IEVsZW1lbnQmIHRlc3RFbGVtZW50KSBjb25zdAogewogICAgIEFT
U0VSVChpczxIVE1MT2JqZWN0RWxlbWVudD4odGVzdEVsZW1lbnQpIHx8IGlzPEhUTUxGb3JtQ29u
dHJvbEVsZW1lbnQ+KHRlc3RFbGVtZW50KSk7Ci0gICAgaWYgKGlzSFRNTEZvcm1FbGVtZW50KG93
bmVyTm9kZSgpKSkgeworICAgIGlmIChpczxIVE1MRm9ybUVsZW1lbnQ+KG93bmVyTm9kZSgpKSkg
ewogICAgICAgICBIVE1MRm9ybUVsZW1lbnQqIGZvcm1FbGVtZW50ID0gbnVsbHB0cjsKICAgICAg
ICAgaWYgKHRlc3RFbGVtZW50Lmhhc1RhZ05hbWUob2JqZWN0VGFnKSkKICAgICAgICAgICAgIGZv
cm1FbGVtZW50ID0gZG93bmNhc3Q8SFRNTE9iamVjdEVsZW1lbnQ+KHRlc3RFbGVtZW50KS5mb3Jt
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MQ29uc3RydWN0
aW9uU2l0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MQ29uc3RydWN0aW9u
U2l0ZS5jcHAKaW5kZXggYjc4ZGU2MGI0MjdiYmRlMmViNmMyZjUxM2Q5ZTRiZDU4ZjYwZjUyMi4u
OTAzOTZmZmZiNTgyN2Y5NGE1NzljMjJjNTcyMTlhMWU4MGQyZTllZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTENvbnN0cnVjdGlvblNpdGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNwcApAQCAtNjIs
NyArNjIsNyBAQCBzdGF0aWMgYm9vbCBoYXNJbXBsaWVkRW5kVGFnKGNvbnN0IEhUTUxTdGFja0l0
ZW0qIGl0ZW0pCiAgICAgICAgIHx8IGl0ZW0tPmhhc1RhZ05hbWUoZHRUYWcpCiAgICAgICAgIHx8
IGl0ZW0tPmhhc1RhZ05hbWUobGlUYWcpCiAgICAgICAgIHx8IGlzPEhUTUxPcHRpb25FbGVtZW50
PihpdGVtLT5ub2RlKCkpCi0gICAgICAgIHx8IGlzSFRNTE9wdEdyb3VwRWxlbWVudChpdGVtLT5u
b2RlKCkpCisgICAgICAgIHx8IGlzPEhUTUxPcHRHcm91cEVsZW1lbnQ+KGl0ZW0tPm5vZGUoKSkK
ICAgICAgICAgfHwgaXRlbS0+aGFzVGFnTmFtZShwVGFnKQogICAgICAgICB8fCBpdGVtLT5oYXNU
YWdOYW1lKHJiVGFnKQogICAgICAgICB8fCBpdGVtLT5oYXNUYWdOYW1lKHJwVGFnKQpAQCAtODUs
NyArODUsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNBbGxXaGl0ZXNwYWNlKGNvbnN0IFN0cmlu
ZyYgc3RyaW5nKQogc3RhdGljIGlubGluZSB2b2lkIGluc2VydChIVE1MQ29uc3RydWN0aW9uU2l0
ZVRhc2smIHRhc2spCiB7CiAjaWYgRU5BQkxFKFRFTVBMQVRFX0VMRU1FTlQpCi0gICAgaWYgKGlz
SFRNTFRlbXBsYXRlRWxlbWVudCgqdGFzay5wYXJlbnQpKQorICAgIGlmIChpczxIVE1MVGVtcGxh
dGVFbGVtZW50PigqdGFzay5wYXJlbnQpKQogICAgICAgICB0YXNrLnBhcmVudCA9IGRvd25jYXN0
PEhUTUxUZW1wbGF0ZUVsZW1lbnQ+KCp0YXNrLnBhcmVudCkuY29udGVudCgpOwogI2VuZGlmCiAK
QEAgLTQ1OCw3ICs0NTgsNyBAQCB2b2lkIEhUTUxDb25zdHJ1Y3Rpb25TaXRlOjppbnNlcnRIVE1M
Qm9keUVsZW1lbnQoQXRvbWljSFRNTFRva2VuKiB0b2tlbikKIHZvaWQgSFRNTENvbnN0cnVjdGlv
blNpdGU6Omluc2VydEhUTUxGb3JtRWxlbWVudChBdG9taWNIVE1MVG9rZW4qIHRva2VuLCBib29s
IGlzRGVtb3RlZCkKIHsKICAgICBSZWZQdHI8RWxlbWVudD4gZWxlbWVudCA9IGNyZWF0ZUhUTUxF
bGVtZW50KHRva2VuKTsKLSAgICBBU1NFUlQoaXNIVE1MRm9ybUVsZW1lbnQoZWxlbWVudC5nZXQo
KSkpOworICAgIEFTU0VSVChpczxIVE1MRm9ybUVsZW1lbnQ+KGVsZW1lbnQuZ2V0KCkpKTsKICAg
ICBSZWZQdHI8SFRNTEZvcm1FbGVtZW50PiBmb3JtID0gc3RhdGljX3BvaW50ZXJfY2FzdDxIVE1M
Rm9ybUVsZW1lbnQ+KGVsZW1lbnQucmVsZWFzZSgpKTsKICAgICBpZiAoIWluc2lkZVRlbXBsYXRl
RWxlbWVudCgpKQogICAgICAgICBtX2Zvcm0gPSBmb3JtOwpAQCAtNTMxLDcgKzUzMSw3IEBAIHZv
aWQgSFRNTENvbnN0cnVjdGlvblNpdGU6Omluc2VydFRleHROb2RlKGNvbnN0IFN0cmluZyYgY2hh
cmFjdGVycywgV2hpdGVzcGFjZU1vCiAgICAgICAgIGZpbmRGb3N0ZXJTaXRlKHRhc2spOwogCiAj
aWYgRU5BQkxFKFRFTVBMQVRFX0VMRU1FTlQpCi0gICAgaWYgKGlzSFRNTFRlbXBsYXRlRWxlbWVu
dCgqdGFzay5wYXJlbnQpKQorICAgIGlmIChpczxIVE1MVGVtcGxhdGVFbGVtZW50PigqdGFzay5w
YXJlbnQpKQogICAgICAgICB0YXNrLnBhcmVudCA9IGRvd25jYXN0PEhUTUxUZW1wbGF0ZUVsZW1l
bnQ+KCp0YXNrLnBhcmVudCkuY29udGVudCgpOwogI2VuZGlmCiAKQEAgLTYxOCw3ICs2MTgsNyBA
QCBQYXNzUmVmUHRyPEVsZW1lbnQ+IEhUTUxDb25zdHJ1Y3Rpb25TaXRlOjpjcmVhdGVFbGVtZW50
KEF0b21pY0hUTUxUb2tlbiogdG9rZW4sCiBpbmxpbmUgRG9jdW1lbnQmIEhUTUxDb25zdHJ1Y3Rp
b25TaXRlOjpvd25lckRvY3VtZW50Rm9yQ3VycmVudE5vZGUoKQogewogI2lmIEVOQUJMRShURU1Q
TEFURV9FTEVNRU5UKQotICAgIGlmIChpc0hUTUxUZW1wbGF0ZUVsZW1lbnQoY3VycmVudE5vZGUo
KSkpCisgICAgaWYgKGlzPEhUTUxUZW1wbGF0ZUVsZW1lbnQ+KGN1cnJlbnROb2RlKCkpKQogICAg
ICAgICByZXR1cm4gZG93bmNhc3Q8SFRNTFRlbXBsYXRlRWxlbWVudD4oKmN1cnJlbnRFbGVtZW50
KCkpLmNvbnRlbnQoKS0+ZG9jdW1lbnQoKTsKICNlbmRpZgogICAgIHJldHVybiBjdXJyZW50Tm9k
ZSgpLT5kb2N1bWVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIv
SFRNTEVsZW1lbnRTdGFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRWxl
bWVudFN0YWNrLmNwcAppbmRleCBhZGEyMGNkYWEzMjMzMjY3ZWM0OWZmODM4MWU3MDAyYTU0NDc3
ZTM1Li5jZDZhMjAxMGZkMTdlNjQwNWQ4YjNiMGQ0MjU3MzgwYjA5OTQ5Y2I2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRWxlbWVudFN0YWNrLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRWxlbWVudFN0YWNrLmNwcApAQCAtNTEsNyAr
NTEsNyBAQCBpbmxpbmUgYm9vbCBpc1Njb3BlTWFya2VyKEhUTUxTdGFja0l0ZW0qIGl0ZW0pCiAg
ICAgICAgIHx8IGl0ZW0tPmhhc1RhZ05hbWUoY2FwdGlvblRhZykKICAgICAgICAgfHwgaXRlbS0+
aGFzVGFnTmFtZShtYXJxdWVlVGFnKQogICAgICAgICB8fCBpdGVtLT5oYXNUYWdOYW1lKG9iamVj
dFRhZykKLSAgICAgICAgfHwgaXNIVE1MVGFibGVFbGVtZW50KGl0ZW0tPm5vZGUoKSkKKyAgICAg
ICAgfHwgaXM8SFRNTFRhYmxlRWxlbWVudD4oaXRlbS0+bm9kZSgpKQogICAgICAgICB8fCBpdGVt
LT5oYXNUYWdOYW1lKHRkVGFnKQogICAgICAgICB8fCBpdGVtLT5oYXNUYWdOYW1lKHRoVGFnKQog
ICAgICAgICB8fCBpdGVtLT5oYXNUYWdOYW1lKE1hdGhNTE5hbWVzOjptaVRhZykKQEAgLTc4LDcg
Kzc4LDcgQEAgaW5saW5lIGJvb2wgaXNMaXN0SXRlbVNjb3BlTWFya2VyKEhUTUxTdGFja0l0ZW0q
IGl0ZW0pCiAKIGlubGluZSBib29sIGlzVGFibGVTY29wZU1hcmtlcihIVE1MU3RhY2tJdGVtKiBp
dGVtKQogewotICAgIHJldHVybiBpc0hUTUxUYWJsZUVsZW1lbnQoaXRlbS0+bm9kZSgpKQorICAg
IHJldHVybiBpczxIVE1MVGFibGVFbGVtZW50PihpdGVtLT5ub2RlKCkpCiAjaWYgRU5BQkxFKFRF
TVBMQVRFX0VMRU1FTlQpCiAgICAgICAgIHx8IGl0ZW0tPmhhc1RhZ05hbWUodGVtcGxhdGVUYWcp
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVl
QnVpbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIu
Y3BwCmluZGV4IGE0ODk2YzU4ZWE2NWVhOGE4OThlZmEwMGM2YjMzNzc2OGI0OTg2NzIuLmY3ZWNh
Yzg1ZDBiNDIxOTViZGUwY2Y2YzI1MDVjNTk2MTA2OTQ2OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmNwcApAQCAtMjk4LDcgKzI5OCw3IEBAIEhU
TUxUcmVlQnVpbGRlcjo6SFRNTFRyZWVCdWlsZGVyKEhUTUxEb2N1bWVudFBhcnNlciYgcGFyc2Vy
LCBEb2N1bWVudEZyYWdtZW50JiBmCiAjZW5kaWYKIAogICAgICAgICByZXNldEluc2VydGlvbk1v
ZGVBcHByb3ByaWF0ZWx5KCk7Ci0gICAgICAgIG1fdHJlZS5zZXRGb3JtKCFjb250ZXh0RWxlbWVu
dCB8fCBpc0hUTUxGb3JtRWxlbWVudChjb250ZXh0RWxlbWVudCkgPyBkb3duY2FzdDxIVE1MRm9y
bUVsZW1lbnQ+KGNvbnRleHRFbGVtZW50KSA6IEhUTUxGb3JtRWxlbWVudDo6ZmluZENsb3Nlc3RG
b3JtQW5jZXN0b3IoKmNvbnRleHRFbGVtZW50KSk7CisgICAgICAgIG1fdHJlZS5zZXRGb3JtKCFj
b250ZXh0RWxlbWVudCB8fCBpczxIVE1MRm9ybUVsZW1lbnQ+KGNvbnRleHRFbGVtZW50KSA/IGRv
d25jYXN0PEhUTUxGb3JtRWxlbWVudD4oY29udGV4dEVsZW1lbnQpIDogSFRNTEZvcm1FbGVtZW50
OjpmaW5kQ2xvc2VzdEZvcm1BbmNlc3RvcigqY29udGV4dEVsZW1lbnQpKTsKICAgICB9CiB9CiAK
QEAgLTEzNzIsNyArMTM3Miw3IEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzU3RhcnRU
YWcoQXRvbWljSFRNTFRva2VuKiB0b2tlbikKICAgICAgICAgICAgICAgICBBdG9taWNIVE1MVG9r
ZW4gZW5kT3B0aW9uKEhUTUxUb2tlbjo6RW5kVGFnLCBvcHRpb25UYWcubG9jYWxOYW1lKCkpOwog
ICAgICAgICAgICAgICAgIHByb2Nlc3NFbmRUYWcoJmVuZE9wdGlvbik7CiAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICBpZiAoaXNIVE1MT3B0R3JvdXBFbGVtZW50KG1fdHJlZS5jdXJyZW50U3Rh
Y2tJdGVtKCktPm5vZGUoKSkpIHsKKyAgICAgICAgICAgIGlmIChpczxIVE1MT3B0R3JvdXBFbGVt
ZW50PihtX3RyZWUuY3VycmVudFN0YWNrSXRlbSgpLT5ub2RlKCkpKSB7CiAgICAgICAgICAgICAg
ICAgQXRvbWljSFRNTFRva2VuIGVuZE9wdGdyb3VwKEhUTUxUb2tlbjo6RW5kVGFnLCBvcHRncm91
cFRhZy5sb2NhbE5hbWUoKSk7CiAgICAgICAgICAgICAgICAgcHJvY2Vzc0VuZFRhZygmZW5kT3B0
Z3JvdXApOwogICAgICAgICAgICAgfQpAQCAtMTYyOSw3ICsxNjI5LDcgQEAgdm9pZCBIVE1MVHJl
ZUJ1aWxkZXI6OnJlc2V0SW5zZXJ0aW9uTW9kZUFwcHJvcHJpYXRlbHkoKQogICAgICAgICAgICAg
ICAgIHdoaWxlIChpdGVtLT5ub2RlKCkgIT0gbV90cmVlLm9wZW5FbGVtZW50cygpLT5yb290Tm9k
ZSgpICYmICFpdGVtLT5oYXNUYWdOYW1lKHRlbXBsYXRlVGFnKSkgewogICAgICAgICAgICAgICAg
ICAgICBub2RlUmVjb3JkID0gbm9kZVJlY29yZC0+bmV4dCgpOwogICAgICAgICAgICAgICAgICAg
ICBpdGVtID0gbm9kZVJlY29yZC0+c3RhY2tJdGVtKCk7Ci0gICAgICAgICAgICAgICAgICAgIGlm
IChpc0hUTUxUYWJsZUVsZW1lbnQoaXRlbS0+bm9kZSgpKSkKKyAgICAgICAgICAgICAgICAgICAg
aWYgKGlzPEhUTUxUYWJsZUVsZW1lbnQ+KGl0ZW0tPm5vZGUoKSkpCiAgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gc2V0SW5zZXJ0aW9uTW9kZShJbnNlcnRpb25Nb2RlOjpJblNlbGVjdElu
VGFibGUpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KQEAgLTE2NDcsNyArMTY0
Nyw3IEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpyZXNldEluc2VydGlvbk1vZGVBcHByb3ByaWF0
ZWx5KCkKICAgICAgICAgaWYgKGl0ZW0tPmhhc1RhZ05hbWUoY29sZ3JvdXBUYWcpKSB7CiAgICAg
ICAgICAgICByZXR1cm4gc2V0SW5zZXJ0aW9uTW9kZShJbnNlcnRpb25Nb2RlOjpJbkNvbHVtbkdy
b3VwKTsKICAgICAgICAgfQotICAgICAgICBpZiAoaXNIVE1MVGFibGVFbGVtZW50KGl0ZW0tPm5v
ZGUoKSkpCisgICAgICAgIGlmIChpczxIVE1MVGFibGVFbGVtZW50PihpdGVtLT5ub2RlKCkpKQog
ICAgICAgICAgICAgcmV0dXJuIHNldEluc2VydGlvbk1vZGUoSW5zZXJ0aW9uTW9kZTo6SW5UYWJs
ZSk7CiAgICAgICAgIGlmIChpdGVtLT5oYXNUYWdOYW1lKGhlYWRUYWcpKSB7CiAjaWYgRU5BQkxF
KFRFTVBMQVRFX0VMRU1FTlQpCkBAIC0yMjM0LDkgKzIyMzQsOSBAQCB2b2lkIEhUTUxUcmVlQnVp
bGRlcjo6cHJvY2Vzc0VuZFRhZyhBdG9taWNIVE1MVG9rZW4qIHRva2VuKQogICAgIGNhc2UgSW5z
ZXJ0aW9uTW9kZTo6SW5TZWxlY3Q6CiAgICAgICAgIEFTU0VSVChpbnNlcnRpb25Nb2RlKCkgPT0g
SW5zZXJ0aW9uTW9kZTo6SW5TZWxlY3QgfHwgaW5zZXJ0aW9uTW9kZSgpID09IEluc2VydGlvbk1v
ZGU6OkluU2VsZWN0SW5UYWJsZSk7CiAgICAgICAgIGlmICh0b2tlbi0+bmFtZSgpID09IG9wdGdy
b3VwVGFnKSB7Ci0gICAgICAgICAgICBpZiAoaXM8SFRNTE9wdGlvbkVsZW1lbnQ+KG1fdHJlZS5j
dXJyZW50U3RhY2tJdGVtKCktPm5vZGUoKSkgJiYgbV90cmVlLm9uZUJlbG93VG9wKCkgJiYgaXNI
VE1MT3B0R3JvdXBFbGVtZW50KG1fdHJlZS5vbmVCZWxvd1RvcCgpLT5ub2RlKCkpKQorICAgICAg
ICAgICAgaWYgKGlzPEhUTUxPcHRpb25FbGVtZW50PihtX3RyZWUuY3VycmVudFN0YWNrSXRlbSgp
LT5ub2RlKCkpICYmIG1fdHJlZS5vbmVCZWxvd1RvcCgpICYmIGlzPEhUTUxPcHRHcm91cEVsZW1l
bnQ+KG1fdHJlZS5vbmVCZWxvd1RvcCgpLT5ub2RlKCkpKQogICAgICAgICAgICAgICAgIHByb2Nl
c3NGYWtlRW5kVGFnKG9wdGlvblRhZyk7Ci0gICAgICAgICAgICBpZiAoaXNIVE1MT3B0R3JvdXBF
bGVtZW50KG1fdHJlZS5jdXJyZW50U3RhY2tJdGVtKCktPm5vZGUoKSkpIHsKKyAgICAgICAgICAg
IGlmIChpczxIVE1MT3B0R3JvdXBFbGVtZW50PihtX3RyZWUuY3VycmVudFN0YWNrSXRlbSgpLT5u
b2RlKCkpKSB7CiAgICAgICAgICAgICAgICAgbV90cmVlLm9wZW5FbGVtZW50cygpLT5wb3AoKTsK
ICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CkBAIC0yNDg2LDcgKzI0ODYs
NyBAQCBSZXByb2Nlc3NCdWZmZXI6CiAgICAgICAgIEFTU0VSVChpbnNlcnRpb25Nb2RlKCkgPT0g
SW5zZXJ0aW9uTW9kZTo6SW5UYWJsZSB8fCBpbnNlcnRpb25Nb2RlKCkgPT0gSW5zZXJ0aW9uTW9k
ZTo6SW5UYWJsZUJvZHkgfHwgaW5zZXJ0aW9uTW9kZSgpID09IEluc2VydGlvbk1vZGU6OkluUm93
KTsKICAgICAgICAgQVNTRVJUKG1fcGVuZGluZ1RhYmxlQ2hhcmFjdGVycy5pc0VtcHR5KCkpOwog
ICAgICAgICBpZiAobV90cmVlLmN1cnJlbnRTdGFja0l0ZW0oKS0+aXNFbGVtZW50Tm9kZSgpCi0g
ICAgICAgICAgICAmJiAoaXNIVE1MVGFibGVFbGVtZW50KG1fdHJlZS5jdXJyZW50U3RhY2tJdGVt
KCktPm5vZGUoKSkKKyAgICAgICAgICAgICYmIChpczxIVE1MVGFibGVFbGVtZW50PihtX3RyZWUu
Y3VycmVudFN0YWNrSXRlbSgpLT5ub2RlKCkpCiAgICAgICAgICAgICAgICAgfHwgbV90cmVlLmN1
cnJlbnRTdGFja0l0ZW0oKS0+aGFzVGFnTmFtZShIVE1MTmFtZXM6OnRib2R5VGFnKQogICAgICAg
ICAgICAgICAgIHx8IG1fdHJlZS5jdXJyZW50U3RhY2tJdGVtKCktPmhhc1RhZ05hbWUoSFRNTE5h
bWVzOjp0Zm9vdFRhZykKICAgICAgICAgICAgICAgICB8fCBtX3RyZWUuY3VycmVudFN0YWNrSXRl
bSgpLT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6dGhlYWRUYWcpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcAppbmRleCBiYmEzOWY2NmYxNTFiNTkyNmE0
ZjBmM2E2NTAwZWRhYWY4ZTVmZTU1Li4wZjhhMjlkYjIwYzQ5MDJmYzgxOTY0NjE4M2U1OTBiODI3
YmI0YjU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9N
QWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2Vu
dC5jcHAKQEAgLTEyOTcsNyArMTI5Nyw3IEBAIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6RE9NOjpOb2RlPiBJbnNwZWN0b3JET01BZ2VudDo6YnVpbGRPYmplY3RGb3JOb2RlCiAgICAg
ICAgIH0KIAogI2lmIEVOQUJMRShURU1QTEFURV9FTEVNRU5UKQotICAgICAgICBpZiAoaXNIVE1M
VGVtcGxhdGVFbGVtZW50KGVsZW1lbnQpKQorICAgICAgICBpZiAoaXM8SFRNTFRlbXBsYXRlRWxl
bWVudD4oZWxlbWVudCkpCiAgICAgICAgICAgICB2YWx1ZS0+c2V0VGVtcGxhdGVDb250ZW50KGJ1
aWxkT2JqZWN0Rm9yTm9kZShkb3duY2FzdDxIVE1MVGVtcGxhdGVFbGVtZW50PigqZWxlbWVudCku
Y29udGVudCgpLCAwLCBub2Rlc01hcCkpOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcAppbmRleCBhMzVmMWU2NTdhZGMyOWIx
NDVjMDljZjQ3ZTgzN2I5ZWZmYmM0MmNiLi43MjFhYmUzMmRkOTQ1ZjQzYWZmOWQzYWQzY2QzZjcy
ZjIzYWU3NzIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
U3R5bGVTaGVldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0
eWxlU2hlZXQuY3BwCkBAIC0xMzkyLDcgKzEzOTIsNyBAQCBib29sIEluc3BlY3RvclN0eWxlU2hl
ZXQ6OmlubGluZVN0eWxlU2hlZXRUZXh0KFN0cmluZyogcmVzdWx0KSBjb25zdAogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgRWxlbWVudCogb3duZXJFbGVtZW50ID0gdG9FbGVtZW50KG93bmVy
Tm9kZSk7CiAKLSAgICBpZiAoIWlzSFRNTFN0eWxlRWxlbWVudChvd25lckVsZW1lbnQpICYmICFv
d25lckVsZW1lbnQtPmhhc1RhZ05hbWUoU1ZHTmFtZXM6OnN0eWxlVGFnKSkKKyAgICBpZiAoIWlz
PEhUTUxTdHlsZUVsZW1lbnQ+KG93bmVyRWxlbWVudCkgJiYgIWlzPFNWR1N0eWxlRWxlbWVudD4o
b3duZXJFbGVtZW50KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICpyZXN1bHQgPSBvd25l
ckVsZW1lbnQtPnRleHRDb250ZW50KCk7CiAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRHJhZ0NvbnRyb2xsZXIuY3BwCmluZGV4IDVhZDMzYmMxNjhlMThjZGZiNDJhOTRmZjMyMmQz
ZTY0MDlmOTIwMzAuLjE3OWVlYTU4ZTRjZmNlZGYxMWJmNjk5ZTkwZDE5ZjBkZDU4ODZiNTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCkBAIC02MzksMTMgKzYzOSwxMyBA
QCBFbGVtZW50KiBEcmFnQ29udHJvbGxlcjo6ZHJhZ2dhYmxlRWxlbWVudChjb25zdCBGcmFtZSog
c291cmNlRnJhbWUsIEVsZW1lbnQqIHN0YQogICAgICAgICB9CiAgICAgICAgIGlmIChkcmFnTW9k
ZSA9PSBEUkFHX0FVVE8pIHsKICAgICAgICAgICAgIGlmICgobV9kcmFnU291cmNlQWN0aW9uICYg
RHJhZ1NvdXJjZUFjdGlvbkltYWdlKQotICAgICAgICAgICAgICAgICYmIGlzSFRNTEltYWdlRWxl
bWVudChlbGVtZW50KQorICAgICAgICAgICAgICAgICYmIGlzPEhUTUxJbWFnZUVsZW1lbnQ+KGVs
ZW1lbnQpCiAgICAgICAgICAgICAgICAgJiYgc291cmNlRnJhbWUtPnNldHRpbmdzKCkubG9hZHNJ
bWFnZXNBdXRvbWF0aWNhbGx5KCkpIHsKICAgICAgICAgICAgICAgICBzdGF0ZS50eXBlID0gc3Rh
dGljX2Nhc3Q8RHJhZ1NvdXJjZUFjdGlvbj4oc3RhdGUudHlwZSB8IERyYWdTb3VyY2VBY3Rpb25J
bWFnZSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQ7CiAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICBpZiAoKG1fZHJhZ1NvdXJjZUFjdGlvbiAmIERyYWdTb3VyY2VBY3Rpb25MaW5r
KQotICAgICAgICAgICAgICAgICYmIGlzSFRNTEFuY2hvckVsZW1lbnQoZWxlbWVudCkKKyAgICAg
ICAgICAgICAgICAmJiBpczxIVE1MQW5jaG9yRWxlbWVudD4oZWxlbWVudCkKICAgICAgICAgICAg
ICAgICAmJiBkb3duY2FzdDxIVE1MQW5jaG9yRWxlbWVudD4oKmVsZW1lbnQpLmlzTGl2ZUxpbmso
KSkgewogICAgICAgICAgICAgICAgIHN0YXRlLnR5cGUgPSBzdGF0aWNfY2FzdDxEcmFnU291cmNl
QWN0aW9uPihzdGF0ZS50eXBlIHwgRHJhZ1NvdXJjZUFjdGlvbkxpbmspOwogICAgICAgICAgICAg
ICAgIHJldHVybiBlbGVtZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Gb2N1
c0NvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3Bw
CmluZGV4IGY3YmQ3MjIxOTUzZjE5MTE5NDQwZjVhNzhjODMzMDM1YTk3MzZmY2YuLmVjODU2MDZl
OTk3Mjk5OTU2N2VhMTRmMzAwM2ZkNDQwYWY0NTY2MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRm9jdXNDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Zv
Y3VzQ29udHJvbGxlci5jcHAKQEAgLTg4NCw3ICs4ODQsNyBAQCBib29sIEZvY3VzQ29udHJvbGxl
cjo6YWR2YW5jZUZvY3VzRGlyZWN0aW9uYWxseShGb2N1c0RpcmVjdGlvbiBkaXJlY3Rpb24sIEtl
eWJvYQogICAgICAgICBpZiAoIWhhc09mZnNjcmVlblJlY3QoZm9jdXNlZEVsZW1lbnQpKSB7CiAg
ICAgICAgICAgICBjb250YWluZXIgPSBzY3JvbGxhYmxlRW5jbG9zaW5nQm94T3JQYXJlbnRGcmFt
ZUZvck5vZGVJbkRpcmVjdGlvbihkaXJlY3Rpb24sIGZvY3VzZWRFbGVtZW50KTsKICAgICAgICAg
ICAgIHN0YXJ0aW5nUmVjdCA9IG5vZGVSZWN0SW5BYnNvbHV0ZUNvb3JkaW5hdGVzKGZvY3VzZWRF
bGVtZW50LCB0cnVlIC8qIGlnbm9yZSBib3JkZXIgKi8pOwotICAgICAgICB9IGVsc2UgaWYgKGlz
SFRNTEFyZWFFbGVtZW50KGZvY3VzZWRFbGVtZW50KSkgeworICAgICAgICB9IGVsc2UgaWYgKGlz
PEhUTUxBcmVhRWxlbWVudD4oZm9jdXNlZEVsZW1lbnQpKSB7CiAgICAgICAgICAgICBIVE1MQXJl
YUVsZW1lbnQmIGFyZWEgPSBkb3duY2FzdDxIVE1MQXJlYUVsZW1lbnQ+KCpmb2N1c2VkRWxlbWVu
dCk7CiAgICAgICAgICAgICBjb250YWluZXIgPSBzY3JvbGxhYmxlRW5jbG9zaW5nQm94T3JQYXJl
bnRGcmFtZUZvck5vZGVJbkRpcmVjdGlvbihkaXJlY3Rpb24sIGFyZWEuaW1hZ2VFbGVtZW50KCkp
OwogICAgICAgICAgICAgc3RhcnRpbmdSZWN0ID0gdmlydHVhbFJlY3RGb3JBcmVhRWxlbWVudEFu
ZERpcmVjdGlvbigmYXJlYSwgZGlyZWN0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZVNlcmlhbGl6ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFs
aXplci5jcHAKaW5kZXggOGNjNjhlOTk5MDMyMDVjY2Q3YzhlODU4NWYzMjY2MmU2MzUzYjA4OC4u
OGUxZGNlZmM5MzRjNGM5NGFlMjYzMDAxMmYxYTc4NGI0NmJhODhhMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9QYWdlU2VyaWFsaXplci5jcHAKQEAgLTIzMCwxOSArMjMwLDE5IEBAIHZvaWQgUGFnZVNl
cmlhbGl6ZXI6OnNlcmlhbGl6ZUZyYW1lKEZyYW1lKiBmcmFtZSkKICAgICAgICAgaWYgKGVsZW1l
bnQtPmlzU3R5bGVkRWxlbWVudCgpKQogICAgICAgICAgICAgcmV0cmlldmVSZXNvdXJjZXNGb3JQ
cm9wZXJ0aWVzKHRvU3R5bGVkRWxlbWVudChlbGVtZW50KS0+aW5saW5lU3R5bGUoKSwgZG9jdW1l
bnQpOwogCi0gICAgICAgIGlmIChpc0hUTUxJbWFnZUVsZW1lbnQoZWxlbWVudCkpIHsKKyAgICAg
ICAgaWYgKGlzPEhUTUxJbWFnZUVsZW1lbnQ+KGVsZW1lbnQpKSB7CiAgICAgICAgICAgICBIVE1M
SW1hZ2VFbGVtZW50JiBpbWFnZUVsZW1lbnQgPSBkb3duY2FzdDxIVE1MSW1hZ2VFbGVtZW50Pigq
ZWxlbWVudCk7CiAgICAgICAgICAgICBVUkwgdXJsID0gZG9jdW1lbnQtPmNvbXBsZXRlVVJMKGlt
YWdlRWxlbWVudC5mYXN0R2V0QXR0cmlidXRlKEhUTUxOYW1lczo6c3JjQXR0cikpOwogICAgICAg
ICAgICAgQ2FjaGVkSW1hZ2UqIGNhY2hlZEltYWdlID0gaW1hZ2VFbGVtZW50LmNhY2hlZEltYWdl
KCk7CiAgICAgICAgICAgICBhZGRJbWFnZVRvUmVzb3VyY2VzKGNhY2hlZEltYWdlLCBpbWFnZUVs
ZW1lbnQucmVuZGVyZXIoKSwgdXJsKTsKLSAgICAgICAgfSBlbHNlIGlmIChpc0hUTUxMaW5rRWxl
bWVudChlbGVtZW50KSkgeworICAgICAgICB9IGVsc2UgaWYgKGlzPEhUTUxMaW5rRWxlbWVudD4o
ZWxlbWVudCkpIHsKICAgICAgICAgICAgIEhUTUxMaW5rRWxlbWVudCYgbGlua0VsZW1lbnQgPSBk
b3duY2FzdDxIVE1MTGlua0VsZW1lbnQ+KCplbGVtZW50KTsKICAgICAgICAgICAgIGlmIChDU1NT
dHlsZVNoZWV0KiBzaGVldCA9IGxpbmtFbGVtZW50LnNoZWV0KCkpIHsKICAgICAgICAgICAgICAg
ICBVUkwgdXJsID0gZG9jdW1lbnQtPmNvbXBsZXRlVVJMKGxpbmtFbGVtZW50LmdldEF0dHJpYnV0
ZShIVE1MTmFtZXM6OmhyZWZBdHRyKSk7CiAgICAgICAgICAgICAgICAgc2VyaWFsaXplQ1NTU3R5
bGVTaGVldChzaGVldCwgdXJsKTsKICAgICAgICAgICAgICAgICBBU1NFUlQobV9yZXNvdXJjZVVS
THMuY29udGFpbnModXJsKSk7CiAgICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSBpZiAoaXNI
VE1MU3R5bGVFbGVtZW50KGVsZW1lbnQpKSB7CisgICAgICAgIH0gZWxzZSBpZiAoaXM8SFRNTFN0
eWxlRWxlbWVudD4oZWxlbWVudCkpIHsKICAgICAgICAgICAgIGlmIChDU1NTdHlsZVNoZWV0KiBz
aGVldCA9IGRvd25jYXN0PEhUTUxTdHlsZUVsZW1lbnQ+KCplbGVtZW50KS5zaGVldCgpKQogICAg
ICAgICAgICAgICAgIHNlcmlhbGl6ZUNTU1N0eWxlU2hlZXQoc2hlZXQsIFVSTCgpKTsKICAgICAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TcGF0aWFsTmF2aWdhdGlvbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NwYXRpYWxOYXZpZ2F0aW9uLmNwcAppbmRleCBkNTZj
OWYwZDc4ZThhOTA3NDZhZDc3ZmM0ZWEyNzc4MmY3OTY5MjAwLi40ZTM4OTI0MmYxOTU5MzgyOTdl
YTEyYzQwOWI5ZGZhYzg3Y2I1MjY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Nw
YXRpYWxOYXZpZ2F0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NwYXRpYWxOYXZp
Z2F0aW9uLmNwcApAQCAtNjYsNyArNjYsNyBAQCBGb2N1c0NhbmRpZGF0ZTo6Rm9jdXNDYW5kaWRh
dGUoTm9kZSogbm9kZSwgRm9jdXNEaXJlY3Rpb24gZGlyZWN0aW9uKQogICAgIEFTU0VSVChub2Rl
KTsKICAgICBBU1NFUlQobm9kZS0+aXNFbGVtZW50Tm9kZSgpKTsKIAotICAgIGlmIChpc0hUTUxB
cmVhRWxlbWVudChub2RlKSkgeworICAgIGlmIChpczxIVE1MQXJlYUVsZW1lbnQ+KG5vZGUpKSB7
CiAgICAgICAgIEhUTUxBcmVhRWxlbWVudCYgYXJlYSA9IGRvd25jYXN0PEhUTUxBcmVhRWxlbWVu
dD4oKm5vZGUpOwogICAgICAgICBIVE1MSW1hZ2VFbGVtZW50KiBpbWFnZSA9IGFyZWEuaW1hZ2VF
bGVtZW50KCk7CiAgICAgICAgIGlmICghaW1hZ2UgfHwgIWltYWdlLT5yZW5kZXJlcigpKQpAQCAt
NjA3LDcgKzYwNyw3IEBAIGJvb2wgYXJlRWxlbWVudHNPblNhbWVMaW5lKGNvbnN0IEZvY3VzQ2Fu
ZGlkYXRlJiBmaXJzdENhbmRpZGF0ZSwgY29uc3QgRm9jdXNDYW5kCiAgICAgaWYgKCFmaXJzdENh
bmRpZGF0ZS5yZWN0LmludGVyc2VjdHMoc2Vjb25kQ2FuZGlkYXRlLnJlY3QpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAoaXNIVE1MQXJlYUVsZW1lbnQoZmlyc3RDYW5kaWRhdGUu
Zm9jdXNhYmxlTm9kZSkgfHwgaXNIVE1MQXJlYUVsZW1lbnQoc2Vjb25kQ2FuZGlkYXRlLmZvY3Vz
YWJsZU5vZGUpKQorICAgIGlmIChpczxIVE1MQXJlYUVsZW1lbnQ+KGZpcnN0Q2FuZGlkYXRlLmZv
Y3VzYWJsZU5vZGUpIHx8IGlzPEhUTUxBcmVhRWxlbWVudD4oc2Vjb25kQ2FuZGlkYXRlLmZvY3Vz
YWJsZU5vZGUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoIWZpcnN0Q2FuZGlk
YXRlLnZpc2libGVOb2RlLT5yZW5kZXJlcigpLT5pc1JlbmRlcklubGluZSgpIHx8ICFzZWNvbmRD
YW5kaWRhdGUudmlzaWJsZU5vZGUtPnJlbmRlcmVyKCktPmlzUmVuZGVySW5saW5lKCkpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2lvcy9GcmFtZUlPUy5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvaW9zL0ZyYW1lSU9TLm1tCmluZGV4IGI4MmY5ZWIyNGI4NzM2YmFmZTU1MzVkZTEx
ZTNiNjY5MjA0MjlhNWEuLmUzYTBjNzExNzM4MmUzZTliZmZkZTU3N2IxZTk1Yzg5ODVlMTUwNzgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvaW9zL0ZyYW1lSU9TLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvaW9zL0ZyYW1lSU9TLm1tCkBAIC0zNTEsNyArMzUxLDcgQEAgc3Rh
dGljIE5vZGUqIGFuY2VzdG9yUmVzcG9uZGluZ1RvQ2xpY2tFdmVudHMoY29uc3QgSGl0VGVzdFJl
c3VsdCYgaGl0VGVzdFJlc3VsdCwKICAgICAgICAgICAgIC8vIElmIHdlIGFyZSBpbnRlcmVzdGVk
IGFib3V0IHRoZSBmcmFtZSwgdXNlIGl0LgogICAgICAgICAgICAgaWYgKG5vZGVCb3VuZHMpIHsK
ICAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIGEgY2hlY2sgdG8gc2VlIHdoZXRoZXIgdGhpcyBu
b2RlIGlzIGFuIGFyZWEgZWxlbWVudC4gIFRoZSBvbmx5IHdheSB0aGlzIGNhbiBoYXBwZW4gaXMg
aWYgdGhpcyBpcyB0aGUgZmlyc3QgY2hlY2suCi0gICAgICAgICAgICAgICAgaWYgKG5vZGUgPT0g
aGl0VGVzdFJlc3VsdC5pbm5lck5vZGUoKSAmJiBub2RlICE9IGhpdFRlc3RSZXN1bHQuaW5uZXJO
b25TaGFyZWROb2RlKCkgJiYgaXNIVE1MQXJlYUVsZW1lbnQobm9kZSkpCisgICAgICAgICAgICAg
ICAgaWYgKG5vZGUgPT0gaGl0VGVzdFJlc3VsdC5pbm5lck5vZGUoKSAmJiBub2RlICE9IGhpdFRl
c3RSZXN1bHQuaW5uZXJOb25TaGFyZWROb2RlKCkgJiYgaXM8SFRNTEFyZWFFbGVtZW50Pihub2Rl
KSkKICAgICAgICAgICAgICAgICAgICAgKm5vZGVCb3VuZHMgPSBzbmFwcGVkSW50UmVjdChkb3du
Y2FzdDxIVE1MQXJlYUVsZW1lbnQ+KCpub2RlKS5jb21wdXRlUmVjdChoaXRUZXN0UmVzdWx0Lmlu
bmVyTm9uU2hhcmVkTm9kZSgpLT5yZW5kZXJlcigpKSk7CiAgICAgICAgICAgICAgICAgZWxzZSBp
ZiAobm9kZSAmJiBub2RlLT5yZW5kZXJlcigpKQogICAgICAgICAgICAgICAgICAgICAqbm9kZUJv
dW5kcyA9IG5vZGUtPnJlbmRlcmVyKCktPmFic29sdXRlQm91bmRpbmdCb3hSZWN0KHRydWUpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwCmluZGV4IDA2Mzc4OWM4
YzA3YWNkMWMxMTQxN2UxZDdkNzY1ZjU4NWZlNjA2ZTUuLjkzY2U0OWRiMzJiMTIyYTE4OWZlMzE1
ZTlhMjE1MDA2MjIzNGM2ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9I
aXRUZXN0UmVzdWx0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJl
c3VsdC5jcHAKQEAgLTI3Myw3ICsyNzMsNyBAQCBTdHJpbmcgSGl0VGVzdFJlc3VsdDo6YWx0RGlz
cGxheVN0cmluZygpIGNvbnN0CiAgICAgaWYgKCFtX2lubmVyTm9uU2hhcmVkTm9kZSkKICAgICAg
ICAgcmV0dXJuIFN0cmluZygpOwogICAgIAotICAgIGlmIChpc0hUTUxJbWFnZUVsZW1lbnQoKm1f
aW5uZXJOb25TaGFyZWROb2RlKSkgeworICAgIGlmIChpczxIVE1MSW1hZ2VFbGVtZW50PigqbV9p
bm5lck5vblNoYXJlZE5vZGUpKSB7CiAgICAgICAgIEhUTUxJbWFnZUVsZW1lbnQmIGltYWdlID0g
ZG93bmNhc3Q8SFRNTEltYWdlRWxlbWVudD4oKm1faW5uZXJOb25TaGFyZWROb2RlKTsKICAgICAg
ICAgcmV0dXJuIGRpc3BsYXlTdHJpbmcoaW1hZ2UuZmFzdEdldEF0dHJpYnV0ZShhbHRBdHRyKSwg
bV9pbm5lck5vblNoYXJlZE5vZGUuZ2V0KCkpOwogICAgIH0KQEAgLTM2Miw3ICszNjIsNyBAQCBi
b29sIEhpdFRlc3RSZXN1bHQ6Om1lZGlhU3VwcG9ydHNGdWxsc2NyZWVuKCkgY29uc3QKIHsKICNp
ZiBFTkFCTEUoVklERU8pCiAgICAgSFRNTE1lZGlhRWxlbWVudCogbWVkaWFFbHQobWVkaWFFbGVt
ZW50KCkpOwotICAgIHJldHVybiAobWVkaWFFbHQgJiYgaXNIVE1MVmlkZW9FbGVtZW50KG1lZGlh
RWx0KSAmJiBtZWRpYUVsdC0+c3VwcG9ydHNGdWxsc2NyZWVuKCkpOworICAgIHJldHVybiAobWVk
aWFFbHQgJiYgaXM8SFRNTFZpZGVvRWxlbWVudD4obWVkaWFFbHQpICYmIG1lZGlhRWx0LT5zdXBw
b3J0c0Z1bGxzY3JlZW4oKSk7CiAjZWxzZQogICAgIHJldHVybiBmYWxzZTsKICNlbmRpZgpAQCAt
Mzc3LDcgKzM3Nyw3IEBAIEhUTUxNZWRpYUVsZW1lbnQqIEhpdFRlc3RSZXN1bHQ6Om1lZGlhRWxl
bWVudCgpIGNvbnN0CiAgICAgaWYgKCEobV9pbm5lck5vblNoYXJlZE5vZGUtPnJlbmRlcmVyKCkg
JiYgbV9pbm5lck5vblNoYXJlZE5vZGUtPnJlbmRlcmVyKCktPmlzTWVkaWEoKSkpCiAgICAgICAg
IHJldHVybiAwOwogCi0gICAgaWYgKGlzSFRNTFZpZGVvRWxlbWVudChtX2lubmVyTm9uU2hhcmVk
Tm9kZS5nZXQoKSkgfHwgaXNIVE1MQXVkaW9FbGVtZW50KG1faW5uZXJOb25TaGFyZWROb2RlLmdl
dCgpKSkKKyAgICBpZiAoaXM8SFRNTFZpZGVvRWxlbWVudD4obV9pbm5lck5vblNoYXJlZE5vZGUu
Z2V0KCkpIHx8IGlzPEhUTUxBdWRpb0VsZW1lbnQ+KG1faW5uZXJOb25TaGFyZWROb2RlLmdldCgp
KSkKICAgICAgICAgcmV0dXJuIHRvSFRNTE1lZGlhRWxlbWVudChtX2lubmVyTm9uU2hhcmVkTm9k
ZS5nZXQoKSk7CiAgICAgcmV0dXJuIDA7CiB9CkBAIC00MjQsNyArNDI0LDcgQEAgdm9pZCBIaXRU
ZXN0UmVzdWx0OjplbnRlckZ1bGxzY3JlZW5Gb3JWaWRlbygpIGNvbnN0CiB7CiAjaWYgRU5BQkxF
KFZJREVPKQogICAgIEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVudCh0aGlzLT5tZWRpYUVs
ZW1lbnQoKSk7Ci0gICAgaWYgKG1lZGlhRWxlbWVudCAmJiBpc0hUTUxWaWRlb0VsZW1lbnQobWVk
aWFFbGVtZW50KSkgeworICAgIGlmIChtZWRpYUVsZW1lbnQgJiYgaXM8SFRNTFZpZGVvRWxlbWVu
dD4obWVkaWFFbGVtZW50KSkgewogICAgICAgICBIVE1MVmlkZW9FbGVtZW50JiB2aWRlb0VsZW1l
bnQgPSBkb3duY2FzdDxIVE1MVmlkZW9FbGVtZW50PigqbWVkaWFFbGVtZW50KTsKICAgICAgICAg
aWYgKCF2aWRlb0VsZW1lbnQuaXNGdWxsc2NyZWVuKCkgJiYgbWVkaWFFbGVtZW50LT5zdXBwb3J0
c0Z1bGxzY3JlZW4oKSkgewogICAgICAgICAgICAgVXNlckdlc3R1cmVJbmRpY2F0b3IgaW5kaWNh
dG9yKERlZmluaXRlbHlQcm9jZXNzaW5nVXNlckdlc3R1cmUpOwpAQCAtNDgyLDcgKzQ4Miw3IEBA
IGJvb2wgSGl0VGVzdFJlc3VsdDo6bWVkaWFJc1ZpZGVvKCkgY29uc3QKIHsKICNpZiBFTkFCTEUo
VklERU8pCiAgICAgaWYgKEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlhRWx0ID0gbWVkaWFFbGVtZW50
KCkpCi0gICAgICAgIHJldHVybiBpc0hUTUxWaWRlb0VsZW1lbnQobWVkaWFFbHQpOworICAgICAg
ICByZXR1cm4gaXM8SFRNTFZpZGVvRWxlbWVudD4obWVkaWFFbHQpOwogI2VuZGlmCiAgICAgcmV0
dXJuIGZhbHNlOwogfQpAQCAtNTE2LDcgKzUxNiw3IEBAIGJvb2wgSGl0VGVzdFJlc3VsdDo6aXNM
aXZlTGluaygpIGNvbnN0CiAgICAgaWYgKCFtX2lubmVyVVJMRWxlbWVudCkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCi0gICAgaWYgKGlzSFRNTEFuY2hvckVsZW1lbnQoKm1faW5uZXJVUkxFbGVt
ZW50KSkKKyAgICBpZiAoaXM8SFRNTEFuY2hvckVsZW1lbnQ+KCptX2lubmVyVVJMRWxlbWVudCkp
CiAgICAgICAgIHJldHVybiBkb3duY2FzdDxIVE1MQW5jaG9yRWxlbWVudD4oKm1faW5uZXJVUkxF
bGVtZW50KS5pc0xpdmVMaW5rKCk7CiAKICAgICBpZiAoaXM8U1ZHQUVsZW1lbnQ+KCptX2lubmVy
VVJMRWxlbWVudCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
Q291bnRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ291bnRlci5jcHAK
aW5kZXggNDk3MGMwNGViODU3MGMwOTg5ZTk1OTRkYWNkMDUxZjRmODNlMmNlMS4uZTM2YWFlY2Yw
NzJiYWJhMWJmNzkxOTJmYjFmN2Q5NDA5OGNmODgyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckNvdW50ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJDb3VudGVyLmNwcApAQCAtMTQyLDcgKzE0Miw3IEBAIHN0YXRpYyBib29sIHBs
YW5Db3VudGVyKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBjb25zdCBBdG9taWNTdHJpbmcmIGlk
ZW50aWZpZXIsCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogICAgICAgICBp
ZiAoRWxlbWVudCogZWxlbWVudCA9IHJlbmRlcmVyLmVsZW1lbnQoKSkgewotICAgICAgICAgICAg
aWYgKGlzSFRNTE9MaXN0RWxlbWVudChlbGVtZW50KSkgeworICAgICAgICAgICAgaWYgKGlzPEhU
TUxPTGlzdEVsZW1lbnQ+KGVsZW1lbnQpKSB7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBkb3du
Y2FzdDxIVE1MT0xpc3RFbGVtZW50PigqZWxlbWVudCkuc3RhcnQoKTsKICAgICAgICAgICAgICAg
ICBpc1Jlc2V0ID0gdHJ1ZTsKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCmluZGV4IDQyZjMyOWNjNmMxNjhkNzNlMTgx
NzBlYTRjMTA3NjMyZDBmZmVlZTMuLjdmYzMzMzBhYmYzNWYwNjZkNjM0ZjZjZmE5ZWRlMzgwYzIx
YzU3NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcApAQCAtMTMw
LDcgKzEzMCw3IEBAIFJlbmRlckltYWdlOjpSZW5kZXJJbWFnZShFbGVtZW50JiBlbGVtZW50LCBQ
YXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSwgU3R5bGVJbWFnCiAgICAgdXBkYXRlQWx0VGV4dCgp
OwogICAgIGltYWdlUmVzb3VyY2UoKS5pbml0aWFsaXplKHRoaXMpOwogCi0gICAgaWYgKGlzSFRN
TEltYWdlRWxlbWVudChlbGVtZW50KSkKKyAgICBpZiAoaXM8SFRNTEltYWdlRWxlbWVudD4oZWxl
bWVudCkpCiAgICAgICAgIG1faGFzU2hhZG93Q29udHJvbHMgPSBkb3duY2FzdDxIVE1MSW1hZ2VF
bGVtZW50PihlbGVtZW50KS5oYXNTaGFkb3dDb250cm9scygpOwogfQogCkBAIC01MTQsNyArNTE0
LDcgQEAgdm9pZCBSZW5kZXJJbWFnZTo6cGFpbnRBcmVhRWxlbWVudEZvY3VzUmluZyhQYWludElu
Zm8mIHBhaW50SW5mbykKICAgICAgICAgcmV0dXJuOwogCiAgICAgRWxlbWVudCogZm9jdXNlZEVs
ZW1lbnQgPSBkb2N1bWVudCgpLmZvY3VzZWRFbGVtZW50KCk7Ci0gICAgaWYgKCFmb2N1c2VkRWxl
bWVudCB8fCAhaXNIVE1MQXJlYUVsZW1lbnQoZm9jdXNlZEVsZW1lbnQpKQorICAgIGlmICghZm9j
dXNlZEVsZW1lbnQgfHwgIWlzPEhUTUxBcmVhRWxlbWVudD4oZm9jdXNlZEVsZW1lbnQpKQogICAg
ICAgICByZXR1cm47CiAKICAgICBIVE1MQXJlYUVsZW1lbnQmIGFyZWFFbGVtZW50ID0gZG93bmNh
c3Q8SFRNTEFyZWFFbGVtZW50PigqZm9jdXNlZEVsZW1lbnQpOwpAQCAtNTYwLDcgKzU2MCw3IEBA
IHZvaWQgUmVuZGVySW1hZ2U6OnBhaW50SW50b1JlY3QoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0
LCBjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiAgICAgaWYgKCFpbWcgfHwgaW1nLT5pc051bGwoKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgSFRNTEltYWdlRWxlbWVudCogaW1hZ2VFbGVtZW50ID0g
KGVsZW1lbnQoKSAmJiBpc0hUTUxJbWFnZUVsZW1lbnQoZWxlbWVudCgpKSkgPyBkb3duY2FzdDxI
VE1MSW1hZ2VFbGVtZW50PihlbGVtZW50KCkpIDogbnVsbHB0cjsKKyAgICBIVE1MSW1hZ2VFbGVt
ZW50KiBpbWFnZUVsZW1lbnQgPSAoZWxlbWVudCgpICYmIGlzPEhUTUxJbWFnZUVsZW1lbnQ+KGVs
ZW1lbnQoKSkpID8gZG93bmNhc3Q8SFRNTEltYWdlRWxlbWVudD4oZWxlbWVudCgpKSA6IG51bGxw
dHI7CiAgICAgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3BlcmF0b3IgPSBpbWFnZUVsZW1l
bnQgPyBpbWFnZUVsZW1lbnQtPmNvbXBvc2l0ZU9wZXJhdG9yKCkgOiBDb21wb3NpdGVTb3VyY2VP
dmVyOwogICAgIEltYWdlKiBpbWFnZSA9IGltYWdlUmVzb3VyY2UoKS5pbWFnZSgpLmdldCgpOwog
ICAgIGJvb2wgdXNlTG93UXVhbGl0eVNjYWxpbmcgPSBzaG91bGRQYWludEF0TG93UXVhbGl0eShj
b250ZXh0LCBpbWFnZSwgaW1hZ2UsIExheW91dFNpemUocmVjdC5zaXplKCkpKTsKQEAgLTYyMiw3
ICs2MjIsNyBAQCBMYXlvdXRVbml0IFJlbmRlckltYWdlOjptaW5pbXVtUmVwbGFjZWRIZWlnaHQo
KSBjb25zdAogCiBIVE1MTWFwRWxlbWVudCogUmVuZGVySW1hZ2U6OmltYWdlTWFwKCkgY29uc3QK
IHsKLSAgICBIVE1MSW1hZ2VFbGVtZW50KiBpbWFnZSA9IGVsZW1lbnQoKSAmJiBpc0hUTUxJbWFn
ZUVsZW1lbnQoZWxlbWVudCgpKSA/IGRvd25jYXN0PEhUTUxJbWFnZUVsZW1lbnQ+KGVsZW1lbnQo
KSkgOiBudWxscHRyOworICAgIEhUTUxJbWFnZUVsZW1lbnQqIGltYWdlID0gZWxlbWVudCgpICYm
IGlzPEhUTUxJbWFnZUVsZW1lbnQ+KGVsZW1lbnQoKSkgPyBkb3duY2FzdDxIVE1MSW1hZ2VFbGVt
ZW50PihlbGVtZW50KCkpIDogbnVsbHB0cjsKICAgICByZXR1cm4gaW1hZ2UgPyBpbWFnZS0+dHJl
ZVNjb3BlKCkuZ2V0SW1hZ2VNYXAoaW1hZ2UtPmZhc3RHZXRBdHRyaWJ1dGUodXNlbWFwQXR0cikp
IDogbnVsbHB0cjsKIH0KIApAQCAtNjU3LDcgKzY1Nyw3IEBAIHZvaWQgUmVuZGVySW1hZ2U6OnVw
ZGF0ZUFsdFRleHQoKQogCiAgICAgaWYgKGlzPEhUTUxJbnB1dEVsZW1lbnQ+KCplbGVtZW50KCkp
KQogICAgICAgICBtX2FsdFRleHQgPSBkb3duY2FzdDxIVE1MSW5wdXRFbGVtZW50PigqZWxlbWVu
dCgpKS5hbHRUZXh0KCk7Ci0gICAgZWxzZSBpZiAoaXNIVE1MSW1hZ2VFbGVtZW50KCplbGVtZW50
KCkpKQorICAgIGVsc2UgaWYgKGlzPEhUTUxJbWFnZUVsZW1lbnQ+KCplbGVtZW50KCkpKQogICAg
ICAgICBtX2FsdFRleHQgPSBkb3duY2FzdDxIVE1MSW1hZ2VFbGVtZW50PigqZWxlbWVudCgpKS5h
bHRUZXh0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMaXN0Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNw
cAppbmRleCBjMWU4NDQ1OTczODIxYjMyM2FhYjdkODg2YjY2MmFhNTczNDlkODNkLi5kMmFkNzQz
ZDdlODVmMTMwZGYwM2FlY2FmYjFlY2E1NjM0Y2JiODFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwCkBAIC0xMTgsNyArMTE4LDcgQEAgdm9pZCBSZW5kZXJM
aXN0Qm94Ojp1cGRhdGVGcm9tRWxlbWVudCgpCiAgICAgICAgICAgICBGb250IGl0ZW1Gb250ID0g
c3R5bGUoKS5mb250KCk7CiAgICAgICAgICAgICBpZiAoaXM8SFRNTE9wdGlvbkVsZW1lbnQ+KGVs
ZW1lbnQpKQogICAgICAgICAgICAgICAgIHRleHQgPSBkb3duY2FzdDxIVE1MT3B0aW9uRWxlbWVu
dD4oKmVsZW1lbnQpLnRleHRJbmRlbnRlZFRvUmVzcGVjdEdyb3VwTGFiZWwoKTsKLSAgICAgICAg
ICAgIGVsc2UgaWYgKGlzSFRNTE9wdEdyb3VwRWxlbWVudChlbGVtZW50KSkgeworICAgICAgICAg
ICAgZWxzZSBpZiAoaXM8SFRNTE9wdEdyb3VwRWxlbWVudD4oZWxlbWVudCkpIHsKICAgICAgICAg
ICAgICAgICB0ZXh0ID0gZG93bmNhc3Q8SFRNTE9wdEdyb3VwRWxlbWVudD4oKmVsZW1lbnQpLmdy
b3VwTGFiZWxUZXh0KCk7CiAgICAgICAgICAgICAgICAgRm9udERlc2NyaXB0aW9uIGQgPSBpdGVt
Rm9udC5mb250RGVzY3JpcHRpb24oKTsKICAgICAgICAgICAgICAgICBkLnNldFdlaWdodChkLmJv
bGRlcldlaWdodCgpKTsKQEAgLTM4OCw3ICszODgsNyBAQCB2b2lkIFJlbmRlckxpc3RCb3g6OnBh
aW50SXRlbUZvcmVncm91bmQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50
JgogICAgIGJvb2wgaXNPcHRpb25FbGVtZW50ID0gaXM8SFRNTE9wdGlvbkVsZW1lbnQ+KGxpc3RJ
dGVtRWxlbWVudCk7CiAgICAgaWYgKGlzT3B0aW9uRWxlbWVudCkKICAgICAgICAgaXRlbVRleHQg
PSBkb3duY2FzdDxIVE1MT3B0aW9uRWxlbWVudD4oKmxpc3RJdGVtRWxlbWVudCkudGV4dEluZGVu
dGVkVG9SZXNwZWN0R3JvdXBMYWJlbCgpOwotICAgIGVsc2UgaWYgKGlzSFRNTE9wdEdyb3VwRWxl
bWVudChsaXN0SXRlbUVsZW1lbnQpKQorICAgIGVsc2UgaWYgKGlzPEhUTUxPcHRHcm91cEVsZW1l
bnQ+KGxpc3RJdGVtRWxlbWVudCkpCiAgICAgICAgIGl0ZW1UZXh0ID0gZG93bmNhc3Q8SFRNTE9w
dEdyb3VwRWxlbWVudD4oKmxpc3RJdGVtRWxlbWVudCkuZ3JvdXBMYWJlbFRleHQoKTsKICAgICBh
cHBseVRleHRUcmFuc2Zvcm0oc3R5bGUoKSwgaXRlbVRleHQsICcgJyk7CiAKQEAgLTQwOSw3ICs0
MDksNyBAQCB2b2lkIFJlbmRlckxpc3RCb3g6OnBhaW50SXRlbUZvcmVncm91bmQoUGFpbnRJbmZv
JiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JgogICAgIExheW91dFJlY3QgciA9IGl0ZW1C
b3VuZGluZ0JveFJlY3QocGFpbnRPZmZzZXQsIGxpc3RJbmRleCk7CiAgICAgci5tb3ZlKGl0ZW1P
ZmZzZXRGb3JBbGlnbm1lbnQodGV4dFJ1biwgaXRlbVN0eWxlLCBpdGVtRm9udCwgcikpOwogCi0g
ICAgaWYgKGlzSFRNTE9wdEdyb3VwRWxlbWVudChsaXN0SXRlbUVsZW1lbnQpKSB7CisgICAgaWYg
KGlzPEhUTUxPcHRHcm91cEVsZW1lbnQ+KGxpc3RJdGVtRWxlbWVudCkpIHsKICAgICAgICAgRm9u
dERlc2NyaXB0aW9uIGQgPSBpdGVtRm9udC5mb250RGVzY3JpcHRpb24oKTsKICAgICAgICAgZC5z
ZXRXZWlnaHQoZC5ib2xkZXJXZWlnaHQoKSk7CiAgICAgICAgIGl0ZW1Gb250ID0gRm9udChkLCBp
dGVtRm9udC5sZXR0ZXJTcGFjaW5nKCksIGl0ZW1Gb250LndvcmRTcGFjaW5nKCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1hcnF1ZWUuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1hcnF1ZWUuY3BwCmluZGV4IDI1YTk3ZTZiM2E1OGU5
ODhkNmFhNDY1MTM4OWRmNzY4M2EwMDI0NGMuLmY0YWY3MGVjNDA4NzI0MWE1NGMwOTFmM2RlY2Jj
ZGJhYzg3Y2UyMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJN
YXJxdWVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWFycXVlZS5j
cHAKQEAgLTczLDcgKzczLDcgQEAgaW50IFJlbmRlck1hcnF1ZWU6Om1hcnF1ZWVTcGVlZCgpIGNv
bnN0CiB7CiAgICAgaW50IHJlc3VsdCA9IG1fbGF5ZXItPnJlbmRlcmVyKCkuc3R5bGUoKS5tYXJx
dWVlU3BlZWQoKTsKICAgICBFbGVtZW50KiBlbGVtZW50ID0gbV9sYXllci0+cmVuZGVyZXIoKS5l
bGVtZW50KCk7Ci0gICAgaWYgKGVsZW1lbnQgJiYgaXNIVE1MTWFycXVlZUVsZW1lbnQoZWxlbWVu
dCkpCisgICAgaWYgKGVsZW1lbnQgJiYgaXM8SFRNTE1hcnF1ZWVFbGVtZW50PihlbGVtZW50KSkK
ICAgICAgICAgcmVzdWx0ID0gc3RkOjptYXgocmVzdWx0LCBkb3duY2FzdDxIVE1MTWFycXVlZUVs
ZW1lbnQ+KCplbGVtZW50KS5taW5pbXVtRGVsYXkoKSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuY3BwCmluZGV4IDZlZTFi
MzAxMDEzOTc1ZjJmNzhkOTY2ZDg4ZDRhNjlmNzE4ZWI1ZDIuLjdjYTM1MmRjN2YyODViODAzM2M0
NzQ0NWRkMGNkNGY2Y2IxMjdmMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJNZW51TGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ck1lbnVMaXN0LmNwcApAQCAtNDUwLDcgKzQ1MCw3IEBAIFN0cmluZyBSZW5kZXJNZW51TGlzdDo6
aXRlbVRleHQodW5zaWduZWQgbGlzdEluZGV4KSBjb25zdAogCiAgICAgU3RyaW5nIGl0ZW1TdHJp
bmc7CiAgICAgRWxlbWVudCogZWxlbWVudCA9IGxpc3RJdGVtc1tsaXN0SW5kZXhdOwotICAgIGlm
IChpc0hUTUxPcHRHcm91cEVsZW1lbnQoZWxlbWVudCkpCisgICAgaWYgKGlzPEhUTUxPcHRHcm91
cEVsZW1lbnQ+KGVsZW1lbnQpKQogICAgICAgICBpdGVtU3RyaW5nID0gZG93bmNhc3Q8SFRNTE9w
dEdyb3VwRWxlbWVudD4oKmVsZW1lbnQpLmdyb3VwTGFiZWxUZXh0KCk7CiAgICAgZWxzZSBpZiAo
aXM8SFRNTE9wdGlvbkVsZW1lbnQ+KGVsZW1lbnQpKQogICAgICAgICBpdGVtU3RyaW5nID0gZG93
bmNhc3Q8SFRNTE9wdGlvbkVsZW1lbnQ+KCplbGVtZW50KS50ZXh0SW5kZW50ZWRUb1Jlc3BlY3RH
cm91cExhYmVsKCk7CkBAIC00OTcsNyArNDk3LDcgQEAgYm9vbCBSZW5kZXJNZW51TGlzdDo6aXRl
bUlzRW5hYmxlZCh1bnNpZ25lZCBsaXN0SW5kZXgpIGNvbnN0CiAKICAgICBib29sIGdyb3VwRW5h
YmxlZCA9IHRydWU7CiAgICAgaWYgKEVsZW1lbnQqIHBhcmVudEVsZW1lbnQgPSBlbGVtZW50LT5w
YXJlbnRFbGVtZW50KCkpIHsKLSAgICAgICAgaWYgKGlzSFRNTE9wdEdyb3VwRWxlbWVudChwYXJl
bnRFbGVtZW50KSkKKyAgICAgICAgaWYgKGlzPEhUTUxPcHRHcm91cEVsZW1lbnQ+KHBhcmVudEVs
ZW1lbnQpKQogICAgICAgICAgICAgZ3JvdXBFbmFibGVkID0gIXBhcmVudEVsZW1lbnQtPmlzRGlz
YWJsZWRGb3JtQ29udHJvbCgpOwogICAgIH0KICAgICBpZiAoIWdyb3VwRW5hYmxlZCkKQEAgLTY0
NSw3ICs2NDUsNyBAQCBib29sIFJlbmRlck1lbnVMaXN0OjppdGVtSXNTZXBhcmF0b3IodW5zaWdu
ZWQgbGlzdEluZGV4KSBjb25zdAogYm9vbCBSZW5kZXJNZW51TGlzdDo6aXRlbUlzTGFiZWwodW5z
aWduZWQgbGlzdEluZGV4KSBjb25zdAogewogICAgIGNvbnN0IFZlY3RvcjxIVE1MRWxlbWVudCo+
JiBsaXN0SXRlbXMgPSBzZWxlY3RFbGVtZW50KCkubGlzdEl0ZW1zKCk7Ci0gICAgcmV0dXJuIGxp
c3RJbmRleCA8IGxpc3RJdGVtcy5zaXplKCkgJiYgaXNIVE1MT3B0R3JvdXBFbGVtZW50KGxpc3RJ
dGVtc1tsaXN0SW5kZXhdKTsKKyAgICByZXR1cm4gbGlzdEluZGV4IDwgbGlzdEl0ZW1zLnNpemUo
KSAmJiBpczxIVE1MT3B0R3JvdXBFbGVtZW50PihsaXN0SXRlbXNbbGlzdEluZGV4XSk7CiB9CiAK
IGJvb2wgUmVuZGVyTWVudUxpc3Q6Oml0ZW1Jc1NlbGVjdGVkKHVuc2lnbmVkIGxpc3RJbmRleCkg
Y29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZXRlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWV0ZXIuY3BwCmluZGV4IDllZGJi
ZDk5YjUwZmZkMGE5NGY3Njg4NjkzNDhiOWZhYTM3OGJjOTcuLjk5MDU5NmQ5ZTEwNTMzMGE2ZjNk
NDA1N2RiOWY3NmFmYzY5ZWM4OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJNZXRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1l
dGVyLmNwcApAQCAtNDMsNyArNDMsNyBAQCBIVE1MTWV0ZXJFbGVtZW50KiBSZW5kZXJNZXRlcjo6
bWV0ZXJFbGVtZW50KCkgY29uc3QKIHsKICAgICBBU1NFUlQoZWxlbWVudCgpKTsKIAotICAgIGlm
IChpc0hUTUxNZXRlckVsZW1lbnQoZWxlbWVudCgpKSkKKyAgICBpZiAoaXM8SFRNTE1ldGVyRWxl
bWVudD4oZWxlbWVudCgpKSkKICAgICAgICAgcmV0dXJuIGRvd25jYXN0PEhUTUxNZXRlckVsZW1l
bnQ+KGVsZW1lbnQoKSk7CiAKICAgICBBU1NFUlQoZWxlbWVudCgpLT5zaGFkb3dIb3N0KCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAppbmRleCA3ZDE0NTY2Mjhl
MzRiMmJhYjI5MTQ2MzBlMGUzMjUyOTUxMDI5MTA3Li5mNzhiYWYzZGVmNTVmZTA4YzE3NGU0MTZj
YzE4YTRhMTNhZjU5M2FiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0
LmNwcApAQCAtNDEsNiArNDEsNyBAQAogI2luY2x1ZGUgIkhUTUxFbGVtZW50LmgiCiAjaW5jbHVk
ZSAiSFRNTEltYWdlRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgorI2luY2x1ZGUg
IkhUTUxUYWJsZUNlbGxFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFRhYmxlRWxlbWVudC5oIgog
I2luY2x1ZGUgIkhpdFRlc3RSZXN1bHQuaCIKICNpbmNsdWRlICJMb2dpY2FsU2VsZWN0aW9uT2Zm
c2V0Q2FjaGVzLmgiCkBAIC0xOTE3LDcgKzE5MTgsNyBAQCBSZXNwZWN0SW1hZ2VPcmllbnRhdGlv
bkVudW0gUmVuZGVyT2JqZWN0OjpzaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbigpIGNvbnN0
CiAjZW5kaWYKICAgICAvLyBSZXNwZWN0IHRoZSBpbWFnZSdzIG9yaWVudGF0aW9uIGlmIGl0J3Mg
YmVpbmcgdXNlZCBhcyBhIGZ1bGwtcGFnZSBpbWFnZSBvciBpdCdzCiAgICAgLy8gYW4gPGltZz4g
YW5kIHRoZSBzZXR0aW5nIHRvIHJlc3BlY3QgaXQgZXZlcnl3aGVyZSBpcyBzZXQuCi0gICAgcmV0
dXJuIChmcmFtZSgpLnNldHRpbmdzKCkuc2hvdWxkUmVzcGVjdEltYWdlT3JpZW50YXRpb24oKSAm
JiBub2RlKCkgJiYgaXNIVE1MSW1hZ2VFbGVtZW50KG5vZGUoKSkpID8gUmVzcGVjdEltYWdlT3Jp
ZW50YXRpb24gOiBEb05vdFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uOworICAgIHJldHVybiAoZnJh
bWUoKS5zZXR0aW5ncygpLnNob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKCkgJiYgbm9kZSgp
ICYmIGlzPEhUTUxJbWFnZUVsZW1lbnQ+KG5vZGUoKSkpID8gUmVzcGVjdEltYWdlT3JpZW50YXRp
b24gOiBEb05vdFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uOwogfQogCiBib29sIFJlbmRlck9iamVj
dDo6aGFzT3V0bGluZUFubm90YXRpb24oKSBjb25zdApAQCAtMjI5Nyw3ICsyMjk4LDcgQEAgdm9p
ZCBSZW5kZXJPYmplY3Q6OmdldFRleHREZWNvcmF0aW9uQ29sb3JzKGludCBkZWNvcmF0aW9ucywg
Q29sb3ImIHVuZGVybGluZSwgQ28KICAgICAgICAgY3VyciA9IGN1cnItPnBhcmVudCgpOwogICAg
ICAgICBpZiAoY3VyciAmJiBjdXJyLT5pc0Fub255bW91c0Jsb2NrKCkgJiYgdG9SZW5kZXJCbG9j
ayhjdXJyKS0+Y29udGludWF0aW9uKCkpCiAgICAgICAgICAgICBjdXJyID0gdG9SZW5kZXJCbG9j
ayhjdXJyKS0+Y29udGludWF0aW9uKCk7Ci0gICAgfSB3aGlsZSAoY3VyciAmJiBkZWNvcmF0aW9u
cyAmJiAoIXF1aXJrc01vZGUgfHwgIWN1cnItPm5vZGUoKSB8fCAoIWlzSFRNTEFuY2hvckVsZW1l
bnQoY3Vyci0+bm9kZSgpKSAmJiAhY3Vyci0+bm9kZSgpLT5oYXNUYWdOYW1lKGZvbnRUYWcpKSkp
OworICAgIH0gd2hpbGUgKGN1cnIgJiYgZGVjb3JhdGlvbnMgJiYgKCFxdWlya3NNb2RlIHx8ICFj
dXJyLT5ub2RlKCkgfHwgKCFpczxIVE1MQW5jaG9yRWxlbWVudD4oY3Vyci0+bm9kZSgpKSAmJiAh
Y3Vyci0+bm9kZSgpLT5oYXNUYWdOYW1lKGZvbnRUYWcpKSkpOwogCiAgICAgLy8gSWYgd2UgYmFp
bGVkIG91dCwgdXNlIHRoZSBlbGVtZW50IHdlIGJhaWxlZCBvdXQgYXQgKHR5cGljYWxseSBhIDxm
b250PiBvciA8YT4gZWxlbWVudCkuCiAgICAgaWYgKGRlY29yYXRpb25zICYmIGN1cnIpIHsKQEAg
LTI0NDMsNyArMjQ0NCw3IEBAIFJlbmRlckJveE1vZGVsT2JqZWN0KiBSZW5kZXJPYmplY3Q6Om9m
ZnNldFBhcmVudCgpIGNvbnN0CiAgICAgYXV0byBjdXJyID0gcGFyZW50KCk7CiAgICAgd2hpbGUg
KGN1cnIgJiYgKCFjdXJyLT5lbGVtZW50KCkgfHwgKCFjdXJyLT5pc1Bvc2l0aW9uZWQoKSAmJiAh
Y3Vyci0+aXNCb2R5KCkpKSAmJiAhY3Vyci0+aXNSZW5kZXJOYW1lZEZsb3dUaHJlYWQoKSkgewog
ICAgICAgICBFbGVtZW50KiBlbGVtZW50ID0gY3Vyci0+ZWxlbWVudCgpOwotICAgICAgICBpZiAo
IXNraXBUYWJsZXMgJiYgZWxlbWVudCAmJiAoaXNIVE1MVGFibGVFbGVtZW50KGVsZW1lbnQpIHx8
IGVsZW1lbnQtPmhhc1RhZ05hbWUodGRUYWcpIHx8IGVsZW1lbnQtPmhhc1RhZ05hbWUodGhUYWcp
KSkKKyAgICAgICAgaWYgKCFza2lwVGFibGVzICYmIGVsZW1lbnQgJiYgKGlzPEhUTUxUYWJsZUVs
ZW1lbnQ+KCplbGVtZW50KSB8fCBpc0hUTUxUYWJsZUNlbGxFbGVtZW50KCplbGVtZW50KSkpCiAg
ICAgICAgICAgICBicmVhazsKICAKICAgICAgICAgZmxvYXQgbmV3Wm9vbSA9IGN1cnItPnN0eWxl
KCkuZWZmZWN0aXZlWm9vbSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclByb2dyZXNzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJQcm9n
cmVzcy5jcHAKaW5kZXggMmI0ZjA1N2FhMTNlN2NmMzM3NjI3Y2IyNzBmMzI3MjI0MmJkNjZkNi4u
NmI4Y2Q0MmRhZWUzZWM0ZTAyNWFmYTYzNjQyN2FmNmJkZmRlODBjZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclByb2dyZXNzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyUHJvZ3Jlc3MuY3BwCkBAIC0xMTAsNyArMTEwLDcgQEAgSFRN
TFByb2dyZXNzRWxlbWVudCogUmVuZGVyUHJvZ3Jlc3M6OnByb2dyZXNzRWxlbWVudCgpIGNvbnN0
CiAgICAgaWYgKCFlbGVtZW50KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgaWYg
KGlzSFRNTFByb2dyZXNzRWxlbWVudChlbGVtZW50KCkpKQorICAgIGlmIChpczxIVE1MUHJvZ3Jl
c3NFbGVtZW50PihlbGVtZW50KCkpKQogICAgICAgICByZXR1cm4gZG93bmNhc3Q8SFRNTFByb2dy
ZXNzRWxlbWVudD4oZWxlbWVudCgpKTsKIAogICAgIEFTU0VSVChlbGVtZW50KCktPnNoYWRvd0hv
c3QoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcAppbmRleCA1YjYx
ODY3YTg1MjQ0MTIyODA0MTViNzdlNjgzZmQ4NDkzZmE0MzgyLi41OTcxNzdhYWQxZjc4Mjg5ZTgy
MDg1OTk3YTdkMzJiMzllYjk2MTVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGFibGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
YWJsZS5jcHAKQEAgLTM1MCw3ICszNTAsNyBAQCBMYXlvdXRVbml0IFJlbmRlclRhYmxlOjpjb252
ZXJ0U3R5bGVMb2dpY2FsV2lkdGhUb0NvbXB1dGVkV2lkdGgoY29uc3QgTGVuZ3RoJiBzdAogCiAg
ICAgLy8gSFRNTCB0YWJsZXMnIHdpZHRoIHN0eWxlcyBhbHJlYWR5IGluY2x1ZGUgYm9yZGVycyBh
bmQgcGFkZGluZ3MsIGJ1dCBDU1MgdGFibGVzJyB3aWR0aCBzdHlsZXMgZG8gbm90LgogICAgIExh
eW91dFVuaXQgYm9yZGVycyA9IDA7Ci0gICAgYm9vbCBpc0NTU1RhYmxlID0gIWVsZW1lbnQoKSB8
fCAhaXNIVE1MVGFibGVFbGVtZW50KGVsZW1lbnQoKSk7CisgICAgYm9vbCBpc0NTU1RhYmxlID0g
IWVsZW1lbnQoKSB8fCAhaXM8SFRNTFRhYmxlRWxlbWVudD4oZWxlbWVudCgpKTsKICAgICBpZiAo
aXNDU1NUYWJsZSAmJiBzdHlsZUxvZ2ljYWxXaWR0aC5pc1NwZWNpZmllZCgpICYmIHN0eWxlTG9n
aWNhbFdpZHRoLmlzUG9zaXRpdmUoKSAmJiBzdHlsZSgpLmJveFNpemluZygpID09IENPTlRFTlRf
Qk9YKQogICAgICAgICBib3JkZXJzID0gYm9yZGVyU3RhcnQoKSArIGJvcmRlckVuZCgpICsgKGNv
bGxhcHNlQm9yZGVycygpID8gTGF5b3V0VW5pdCgpIDogcGFkZGluZ1N0YXJ0KCkgKyBwYWRkaW5n
RW5kKCkpOwogCkBAIC0zNjQsNyArMzY0LDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJUYWJsZTo6Y29u
dmVydFN0eWxlTG9naWNhbEhlaWdodFRvQ29tcHV0ZWRIZWlnaHQoY29uc3QgTGVuZ3RoJgogICAg
ICAgICAvLyBIVE1MIHRhYmxlcyBzaXplIGFzIHRob3VnaCBDU1MgaGVpZ2h0IGluY2x1ZGVzIGJv
cmRlci9wYWRkaW5nLCBDU1MgdGFibGVzIGRvIG5vdC4KICAgICAgICAgTGF5b3V0VW5pdCBib3Jk
ZXJzID0gTGF5b3V0VW5pdCgpOwogICAgICAgICAvLyBGSVhNRTogV2UgY2Fubm90IGFwcGx5IGJv
eC1zaXppbmc6IGNvbnRlbnQtYm94IG9uIDx0YWJsZT4gd2hpY2ggb3RoZXIgYnJvd3NlcnMgYWxs
b3cuCi0gICAgICAgIGlmICgoZWxlbWVudCgpICYmIGlzSFRNTFRhYmxlRWxlbWVudChlbGVtZW50
KCkpKSB8fCBzdHlsZSgpLmJveFNpemluZygpID09IEJPUkRFUl9CT1gpIHsKKyAgICAgICAgaWYg
KChlbGVtZW50KCkgJiYgaXM8SFRNTFRhYmxlRWxlbWVudD4oZWxlbWVudCgpKSkgfHwgc3R5bGUo
KS5ib3hTaXppbmcoKSA9PSBCT1JERVJfQk9YKSB7CiAgICAgICAgICAgICBMYXlvdXRVbml0IGJv
cmRlckFuZFBhZGRpbmdCZWZvcmUgPSBib3JkZXJCZWZvcmUoKSArIChjb2xsYXBzZUJvcmRlcnMo
KSA/IExheW91dFVuaXQoKSA6IHBhZGRpbmdCZWZvcmUoKSk7CiAgICAgICAgICAgICBMYXlvdXRV
bml0IGJvcmRlckFuZFBhZGRpbmdBZnRlciA9IGJvcmRlckFmdGVyKCkgKyAoY29sbGFwc2VCb3Jk
ZXJzKCkgPyBMYXlvdXRVbml0KCkgOiBwYWRkaW5nQWZ0ZXIoKSk7CiAgICAgICAgICAgICBib3Jk
ZXJzID0gYm9yZGVyQW5kUGFkZGluZ0JlZm9yZSArIGJvcmRlckFuZFBhZGRpbmdBZnRlcjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUNhY2hlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUNhY2hlLmNwcAppbmRleCAzZjIx
MTFmNTNkNGVlYjdhZDA1Y2IzNjA0NzU5YTY0OGM1OGIyNzIzLi45ZTFiN2M4ODNhYmQxMGVhNmVm
NjRmMDUzZGI0NzM5YjEwNWMzNmVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3Jh
cGhpY3MvU1ZHSW1hZ2VDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNz
L1NWR0ltYWdlQ2FjaGUuY3BwCkBAIC05Miw3ICs5Miw3IEBAIEltYWdlKiBTVkdJbWFnZUNhY2hl
OjppbWFnZUZvclJlbmRlcmVyKGNvbnN0IFJlbmRlck9iamVjdCogcmVuZGVyZXIpCiAgICAgUmVm
UHRyPFNWR0ltYWdlRm9yQ29udGFpbmVyPiBpbWFnZUZvckNvbnRhaW5lciA9IGl0LT52YWx1ZTsK
ICAgICAKICAgICBOb2RlKiBub2RlID0gcmVuZGVyZXItPm5vZGUoKTsKLSAgICBpZiAobm9kZSAm
JiBpc0hUTUxJbWFnZUVsZW1lbnQobm9kZSkpIHsKKyAgICBpZiAobm9kZSAmJiBpczxIVE1MSW1h
Z2VFbGVtZW50Pihub2RlKSkgewogICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIHVybFN0cmlu
ZyA9IGRvd25jYXN0PEhUTUxJbWFnZUVsZW1lbnQ+KCpub2RlKS5pbWFnZVNvdXJjZVVSTCgpOwog
ICAgICAgICBVUkwgdXJsID0gbm9kZS0+ZG9jdW1lbnQoKS5jb21wbGV0ZVVSTCh1cmxTdHJpbmcp
OwogICAgICAgICBpbWFnZUZvckNvbnRhaW5lci0+c2V0VVJMKHVybCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5jcHAKaW5kZXggYTVkZGUwM2EzMGIxOGI1M2MzMzY3MTQ1MmRhMzg5M2U3
OTI4N2MyMS4uZDJhZTEzMGM5ZjQyMDQwYmE1YzJlYmFkMWMzZDhhYTY2NjJkMzJiMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtMTkxOCw3ICsxOTE4LDcgQEAgdm9pZCBJ
bnRlcm5hbHM6OnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0c0FuZFJ1blBvc3RM
YXlvdXRUYXNrcyhOb2RlKgogICAgICAgICBkb2N1bWVudCA9IGNvbnRleHREb2N1bWVudCgpOwog
ICAgIGVsc2UgaWYgKG5vZGUtPmlzRG9jdW1lbnROb2RlKCkpCiAgICAgICAgIGRvY3VtZW50ID0g
dG9Eb2N1bWVudChub2RlKTsKLSAgICBlbHNlIGlmIChpc0hUTUxJRnJhbWVFbGVtZW50KG5vZGUp
KQorICAgIGVsc2UgaWYgKGlzPEhUTUxJRnJhbWVFbGVtZW50Pihub2RlKSkKICAgICAgICAgZG9j
dW1lbnQgPSBkb3duY2FzdDxIVE1MSUZyYW1lRWxlbWVudD4oKm5vZGUpLmNvbnRlbnREb2N1bWVu
dCgpOwogICAgIGVsc2UgewogICAgICAgICBlYyA9IFR5cGVFcnJvcjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcAppbmRl
eCBjMzdjZjgwZWRiMGJmYThhMWJmZGM1NjU5YWFiZWUxYTcxMDkzMmFiLi44YWU1MTFkYThlMzRj
NjU2NDRmMDYyMWI5ODdhZTAxZmE5NjFhNDdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94
bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCkBAIC04NTAsNyArODUw
LDcgQEAgdm9pZCBYTUxEb2N1bWVudFBhcnNlcjo6c3RhcnRFbGVtZW50TnMoY29uc3QgeG1sQ2hh
ciogeG1sTG9jYWxOYW1lLCBjb25zdCB4bWxDaGEKICAgICAgICAgcmV0dXJuOwogCiAjaWYgRU5B
QkxFKFRFTVBMQVRFX0VMRU1FTlQpCi0gICAgaWYgKGlzSFRNTFRlbXBsYXRlRWxlbWVudCgqbmV3
RWxlbWVudCkpCisgICAgaWYgKGlzPEhUTUxUZW1wbGF0ZUVsZW1lbnQ+KCpuZXdFbGVtZW50KSkK
ICAgICAgICAgcHVzaEN1cnJlbnROb2RlKGRvd25jYXN0PEhUTUxUZW1wbGF0ZUVsZW1lbnQ+KCpu
ZXdFbGVtZW50KS5jb250ZW50KCkpOwogICAgIGVsc2UKICAgICAgICAgcHVzaEN1cnJlbnROb2Rl
KG5ld0VsZW1lbnQuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vRE9NQ29y
ZUNsYXNzZXMuY3BwIGIvU291cmNlL1dlYktpdC93aW4vRE9NQ29yZUNsYXNzZXMuY3BwCmluZGV4
IDlmYzNjZTZiMWNlOTM4YzVlMGZmNTA0ZGQyMGE3MTk5YTI2ZWUyYTMuLjMzN2NkYTE5MTljMjJk
MjMyMmVmNzA4MDQxNDI1ZjE5NDhhOWIxN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2lu
L0RPTUNvcmVDbGFzc2VzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9ET01Db3JlQ2xhc3Nl
cy5jcHAKQEAgLTE1MDAsNyArMTUwMCw3IEBAIElET01FbGVtZW50KiBET01FbGVtZW50OjpjcmVh
dGVJbnN0YW5jZShXZWJDb3JlOjpFbGVtZW50KiBlKQogICAgIEhSRVNVTFQgaHI7CiAgICAgSURP
TUVsZW1lbnQqIGRvbUVsZW1lbnQgPSAwOwogCi0gICAgaWYgKGlzSFRNTEZvcm1FbGVtZW50KGUp
KSB7CisgICAgaWYgKFdlYkNvcmU6OmlzPFdlYkNvcmU6OkhUTUxGb3JtRWxlbWVudD4oZSkpIHsK
ICAgICAgICAgRE9NSFRNTEZvcm1FbGVtZW50KiBuZXdFbGVtZW50ID0gbmV3IERPTUhUTUxGb3Jt
RWxlbWVudChlKTsKICAgICAgICAgaHIgPSBuZXdFbGVtZW50LT5RdWVyeUludGVyZmFjZShJSURf
SURPTUVsZW1lbnQsICh2b2lkKiopJmRvbUVsZW1lbnQpOwogICAgIH0gZWxzZSBpZiAoZS0+aGFz
VGFnTmFtZShpZnJhbWVUYWcpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9ET01I
VE1MQ2xhc3Nlcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9ET01IVE1MQ2xhc3Nlcy5jcHAKaW5k
ZXggN2ZmYWVhYzIxYjk4ODNiYWM5OWUyODk0NTg4YTcyZDhkODI4NTZlMS4uMWQxZDI0MDYzYzM2
MWI1YjZjODMyZTg1NjdhMjZlNDVjYmFkMzcwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93
aW4vRE9NSFRNTENsYXNzZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL0RPTUhUTUxDbGFz
c2VzLmNwcApAQCAtNTU5LDcgKzU1OSw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRE9N
SFRNTEZvcm1FbGVtZW50OjpzZXRBY2NlcHRDaGFyc2V0KAogSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBET01IVE1MRm9ybUVsZW1lbnQ6OmFjdGlvbiggCiAgICAgICAgIC8qIFtyZXR2YWxdW291
dF0gKi8gQlNUUiogcmVzdWx0KQogewotICAgIEFTU0VSVChtX2VsZW1lbnQgJiYgaXNIVE1MRm9y
bUVsZW1lbnQobV9lbGVtZW50KSk7CisgICAgQVNTRVJUKG1fZWxlbWVudCAmJiBpczxIVE1MRm9y
bUVsZW1lbnQ+KG1fZWxlbWVudCkpOwogICAgIFdURjo6U3RyaW5nIGFjdGlvblN0cmluZyA9IGRv
d25jYXN0PEhUTUxGb3JtRWxlbWVudD4oKm1fZWxlbWVudCkuYWN0aW9uKCk7CiAgICAgKnJlc3Vs
dCA9IEJTdHJpbmcoYWN0aW9uU3RyaW5nKS5yZWxlYXNlKCk7CiAgICAgcmV0dXJuIFNfT0s7CkBA
IC01ODksNyArNTg5LDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBET01IVE1MRm9ybUVs
ZW1lbnQ6OnNldEVuY3R5cGUoCiBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERPTUhUTUxGb3Jt
RWxlbWVudDo6bWV0aG9kKCAKICAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCU1RSKiByZXN1
bHQpCiB7Ci0gICAgQVNTRVJUKG1fZWxlbWVudCAmJiBpc0hUTUxGb3JtRWxlbWVudChtX2VsZW1l
bnQpKTsKKyAgICBBU1NFUlQobV9lbGVtZW50ICYmIGlzPEhUTUxGb3JtRWxlbWVudD4obV9lbGVt
ZW50KSk7CiAgICAgV1RGOjpTdHJpbmcgbWV0aG9kU3RyaW5nID0gZG93bmNhc3Q8SFRNTEZvcm1F
bGVtZW50PigqbV9lbGVtZW50KS5tZXRob2QoKTsKICAgICAqcmVzdWx0ID0gQlN0cmluZyhtZXRo
b2RTdHJpbmcpLnJlbGVhc2UoKTsKICAgICByZXR1cm4gU19PSzsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvd2luL1dlYkZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkZyYW1lLmNw
cAppbmRleCBlMzMwNDhhZDgwNzMxNmE4NTk5ZjhkMGM3MzdmYzA3MGEzMDdjYThhLi5jNTc1MjJh
NzY0ZWMzYzE5ZWMyNjZhNzRlYzU3Zjg2NTgxOWMxMzZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L3dpbi9XZWJGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViRnJhbWUuY3Bw
CkBAIC0yMDIsNyArMjAyLDcgQEAgc3RhdGljIEhUTUxGb3JtRWxlbWVudCAqZm9ybUVsZW1lbnRG
cm9tRE9NRWxlbWVudChJRE9NRWxlbWVudCAqZWxlbWVudCkKICAgICAgICAgRWxlbWVudCogZWxl
OwogICAgICAgICBociA9IGVsZVByaXYtPmNvcmVFbGVtZW50KCh2b2lkKiopJmVsZSk7CiAgICAg
ICAgIGVsZVByaXYtPlJlbGVhc2UoKTsKLSAgICAgICAgaWYgKFNVQ0NFRURFRChocikgJiYgZWxl
ICYmIGlzSFRNTEZvcm1FbGVtZW50KGVsZSkpCisgICAgICAgIGlmIChTVUNDRUVERUQoaHIpICYm
IGVsZSAmJiBpczxIVE1MRm9ybUVsZW1lbnQ+KGVsZSkpCiAgICAgICAgICAgICByZXR1cm4gZG93
bmNhc3Q8SFRNTEZvcm1FbGVtZW50PihlbGUpOwogICAgIH0KICAgICByZXR1cm4gbnVsbHB0cjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9N
L0luamVjdGVkQnVuZGxlTm9kZUhhbmRsZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGUuY3BwCmluZGV4IGNl
ZDkwYWM2ZTFhZTRlMWFhZTllOGQ2MWRjOGQyYzc2MDBlOTZmNTEuLjMyZTE4N2JjYzliZTFhNjY5
M2Q3MDNjOGVmZTgwZjUzNmIxNjkwZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlTm9kZUhhbmRsZS5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRC
dW5kbGVOb2RlSGFuZGxlLmNwcApAQCAtMjc2LDcgKzI3Niw3IEBAIFBhc3NSZWZQdHI8V2ViRnJh
bWU+IEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZTo6aHRtbEZyYW1lRWxlbWVudENvbnRlbnRGcmFt
ZSgpCiAKIFBhc3NSZWZQdHI8V2ViRnJhbWU+IEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZTo6aHRt
bElGcmFtZUVsZW1lbnRDb250ZW50RnJhbWUoKQogewotICAgIGlmICghaXNIVE1MSUZyYW1lRWxl
bWVudCgqbV9ub2RlKSkKKyAgICBpZiAoIWlzPEhUTUxJRnJhbWVFbGVtZW50PigqbV9ub2RlKSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBGcmFtZSogZnJhbWUgPSBkb3duY2FzdDxI
VE1MSUZyYW1lRWxlbWVudD4oKm1fbm9kZSkuY29udGVudEZyYW1lKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAppbmRleCAzNzJkZTQzZTJhZjRh
NzA4NWQ0ODJiYzI4MjJhY2Y0ZmM4ZGU5NmE2Li5kOWFkY2M2MTY5M2UzZTU5YjczNzQxZjk5NDk0
M2RjMjRlZjFhNmUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJGcmFtZS5jcHAKQEAgLTYxNSw3ICs2MTUsNyBAQCBib29sIFdlYkZyYW1lOjpjb250YWluc0Fu
eUZvcm1FbGVtZW50cygpIGNvbnN0CiAgICAgZm9yIChOb2RlKiBub2RlID0gZG9jdW1lbnQtPmRv
Y3VtZW50RWxlbWVudCgpOyBub2RlOyBub2RlID0gTm9kZVRyYXZlcnNhbDo6bmV4dChub2RlKSkg
ewogICAgICAgICBpZiAoIW5vZGUtPmlzRWxlbWVudE5vZGUoKSkKICAgICAgICAgICAgIGNvbnRp
bnVlOwotICAgICAgICBpZiAoaXNIVE1MRm9ybUVsZW1lbnQobm9kZSkpCisgICAgICAgIGlmIChp
czxIVE1MRm9ybUVsZW1lbnQ+KG5vZGUpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
fQogICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmNwcAppbmRleCBjY2M2M2I1MzE0NjUzODg5ODU4OWYzYTJiZTg1ZjY0NDk3OTY5
YTk3Li5iNTNkZWMyMDU4ZTdiYzlkYjYwZTg5Nzk4MTRjMDAzMWZhYjBjOGNlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC00NjA5LDcgKzQ2
MDksNyBAQCB2b2lkIFdlYlBhZ2U6OmRldGVybWluZVByaW1hcnlTbmFwc2hvdHRlZFBsdWdJbigp
CiAgICAgICAgICAgICBpbmZsYXRlZFBsdWdpblJlY3QuaW5mbGF0ZVkoeU9mZnNldCk7CiAKICAg
ICAgICAgICAgIGlmIChlbGVtZW50ICE9ICZwbHVnSW5JbWFnZUVsZW1lbnQpIHsKLSAgICAgICAg
ICAgICAgICBpZiAoIShpc0hUTUxJbWFnZUVsZW1lbnQoZWxlbWVudCkKKyAgICAgICAgICAgICAg
ICBpZiAoIShpczxIVE1MSW1hZ2VFbGVtZW50PihlbGVtZW50KQogICAgICAgICAgICAgICAgICAg
ICAmJiBpbmZsYXRlZFBsdWdpblJlY3QuY29udGFpbnMoZWxlbWVudFJlY3RSZWxhdGl2ZVRvVG9w
RG9jdW1lbnQpCiAgICAgICAgICAgICAgICAgICAgICYmIGVsZW1lbnRSZWN0UmVsYXRpdmVUb1Rv
cERvY3VtZW50LndpZHRoKCkgPiBwbHVnaW5SZW5kZXJCb3gud2lkdGgoKSAqIG1pbmltdW1PdmVy
bGFwcGluZ0ltYWdlVG9QbHVnaW5EaW1lbnNpb25TY2FsZQogICAgICAgICAgICAgICAgICAgICAm
JiBlbGVtZW50UmVjdFJlbGF0aXZlVG9Ub3BEb2N1bWVudC5oZWlnaHQoKSA+IHBsdWdpblJlbmRl
ckJveC5oZWlnaHQoKSAqIG1pbmltdW1PdmVybGFwcGluZ0ltYWdlVG9QbHVnaW5EaW1lbnNpb25T
Y2FsZSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9z
L1dlYlBhZ2VJT1MubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dl
YlBhZ2VJT1MubW0KaW5kZXggZTdhZjFhZDY2MmJjZDM3ZTRkZTgzOWExNjZjZTMxODQ4NDMzZDhj
MC4uYjY5Zjg2NjU0ODc0ZGZlMTg4OTA1MWEwNzQzZTIyNDg4OTlmN2RjZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQpAQCAt
MjA4MCw3ICsyMDgwLDcgQEAgdm9pZCBXZWJQYWdlOjpnZXRBc3Npc3RlZE5vZGVJbmZvcm1hdGlv
bihBc3Npc3RlZE5vZGVJbmZvcm1hdGlvbiYgaW5mb3JtYXRpb24pCiAgICAgICAgICAgICBpZiAo
aXM8SFRNTE9wdGlvbkVsZW1lbnQ+KGl0ZW0pKSB7CiAgICAgICAgICAgICAgICAgSFRNTE9wdGlv
bkVsZW1lbnQmIG9wdGlvbiA9IGRvd25jYXN0PEhUTUxPcHRpb25FbGVtZW50PigqaXRlbSk7CiAg
ICAgICAgICAgICAgICAgaW5mb3JtYXRpb24uc2VsZWN0T3B0aW9ucy5hcHBlbmQoT3B0aW9uSXRl
bShvcHRpb24udGV4dCgpLCBmYWxzZSwgcGFyZW50R3JvdXBJRCwgb3B0aW9uLnNlbGVjdGVkKCks
IG9wdGlvbi5mYXN0SGFzQXR0cmlidXRlKFdlYkNvcmU6OkhUTUxOYW1lczo6ZGlzYWJsZWRBdHRy
KSkpOwotICAgICAgICAgICAgfSBlbHNlIGlmIChpc0hUTUxPcHRHcm91cEVsZW1lbnQoaXRlbSkp
IHsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoaXM8SFRNTE9wdEdyb3VwRWxlbWVudD4oaXRlbSkp
IHsKICAgICAgICAgICAgICAgICBIVE1MT3B0R3JvdXBFbGVtZW50JiBncm91cCA9IGRvd25jYXN0
PEhUTUxPcHRHcm91cEVsZW1lbnQ+KCppdGVtKTsKICAgICAgICAgICAgICAgICBwYXJlbnRHcm91
cElEKys7CiAgICAgICAgICAgICAgICAgaW5mb3JtYXRpb24uc2VsZWN0T3B0aW9ucy5hcHBlbmQo
T3B0aW9uSXRlbShncm91cC5ncm91cExhYmVsVGV4dCgpLCB0cnVlLCAwLCBmYWxzZSwgZ3JvdXAu
ZmFzdEhhc0F0dHJpYnV0ZShXZWJDb3JlOjpIVE1MTmFtZXM6OmRpc2FibGVkQXR0cikpKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>