<?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>185609</bug_id>
          
          <creation_ts>2018-05-14 07:12:06 -0700</creation_ts>
          <short_desc>Renaming of overrides in RenderBox</short_desc>
          <delta_ts>2018-05-14 13:42:37 -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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Manuel Rego Casasnovas">rego</reporter>
          <assigned_to name="Manuel Rego Casasnovas">rego</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>jfernandez</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1423581</commentid>
    <comment_count>0</comment_count>
    <who name="Manuel Rego Casasnovas">rego</who>
    <bug_when>2018-05-14 07:12:06 -0700</bug_when>
    <thetext>Renaming of overrides in LayoutBox</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1423582</commentid>
    <comment_count>1</comment_count>
      <attachid>340309</attachid>
    <who name="Manuel Rego Casasnovas">rego</who>
    <bug_when>2018-05-14 07:12:37 -0700</bug_when>
    <thetext>Created attachment 340309
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1423590</commentid>
    <comment_count>2</comment_count>
    <who name="Manuel Rego Casasnovas">rego</who>
    <bug_when>2018-05-14 07:19:42 -0700</bug_when>
    <thetext>This is just a renaming, I&apos;ll try to fix the FIXME in LayoutBox in follow-up patches.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1423613</commentid>
    <comment_count>3</comment_count>
      <attachid>340309</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-05-14 08:20:52 -0700</bug_when>
    <thetext>Comment on attachment 340309
Patch

Clearing flags on attachment: 340309

Committed r231757: &lt;https://trac.webkit.org/changeset/231757&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1423614</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-05-14 08:20:54 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1423615</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-05-14 08:21:27 -0700</bug_when>
    <thetext>&lt;rdar://problem/40217955&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1423630</commentid>
    <comment_count>6</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2018-05-14 09:02:46 -0700</bug_when>
    <thetext>(In reply to Manuel Rego Casasnovas from comment #0)
&gt; Renaming of overrides in LayoutBox

What is a LayoutBox?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1423632</commentid>
    <comment_count>7</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2018-05-14 09:04:54 -0700</bug_when>
    <thetext>(In reply to zalan from comment #6)
&gt; (In reply to Manuel Rego Casasnovas from comment #0)
&gt; &gt; Renaming of overrides in LayoutBox
&gt; 
&gt; What is a LayoutBox?
guess this is some leftover from a blink patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1423747</commentid>
    <comment_count>8</comment_count>
    <who name="Manuel Rego Casasnovas">rego</who>
    <bug_when>2018-05-14 13:38:25 -0700</bug_when>
    <thetext>(In reply to zalan from comment #6)
&gt; (In reply to Manuel Rego Casasnovas from comment #0)
&gt; &gt; Renaming of overrides in LayoutBox
&gt; 
&gt; What is a LayoutBox?

Ooops sorry, this is becuase we&apos;re doing things in both Blink and WebKit,
and now in Blink RenderBox is called LayoutBox.

Should I do a quick patch fixing the ChangeLog or not?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1423749</commentid>
    <comment_count>9</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2018-05-14 13:42:37 -0700</bug_when>
    <thetext>(In reply to Manuel Rego Casasnovas from comment #8)
&gt; (In reply to zalan from comment #6)
&gt; &gt; (In reply to Manuel Rego Casasnovas from comment #0)
&gt; &gt; &gt; Renaming of overrides in LayoutBox
&gt; &gt; 
&gt; &gt; What is a LayoutBox?
&gt; 
&gt; Ooops sorry, this is becuase we&apos;re doing things in both Blink and WebKit,
&gt; and now in Blink RenderBox is called LayoutBox.
&gt; 
&gt; Should I do a quick patch fixing the ChangeLog or not?
nah. It&apos;s fine. I was just a bit surprised (especially since I also started using LayoutBox in webcore/layout)</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>340309</attachid>
            <date>2018-05-14 07:12:37 -0700</date>
            <delta_ts>2018-05-14 08:20:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-185609-20180514161235.patch</filename>
            <type>text/plain</type>
            <size>53087</size>
            <attacher name="Manuel Rego Casasnovas">rego</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMxNzU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjYzNDViMDRlN2ZkYTYy
NmJkNjA2MWE4NzQwM2IzNTNhMjQyNjVlYy4uZDBkODcwY2M5OGFjMjk1NTI3ZWQ5NWE3YjE3ZjQw
ZDgyM2U4NzYwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg4IEBACisyMDE4LTA1LTE0ICBNYW51
ZWwgUmVnbyBDYXNhc25vdmFzICA8cmVnb0BpZ2FsaWEuY29tPgorCisgICAgICAgIFJlbmFtaW5n
IG9mIG92ZXJyaWRlcyBpbiBMYXlvdXRCb3gKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE4NTYwOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFRoZSBuYW1lcyBvZiB0aGUgbWV0aG9kcyBmb3IgdGhlIG92ZXJy
aWRlcyB3ZXJlIG5vdCBjb25zaXN0ZW50LAorICAgICAgICB0aGlzIHBhdGNoIGZpeGVzIGl0IGJ5
IHVzaW5nIHRoZSBzYW1lIHN0cnVjdHVyZSBpbiBhbGwgdGhlIGNhc2VzLgorCisgICAgICAgIE5v
IG5ldyB0ZXN0cywgbm8gY2hhbmdlIG9mIGJlaGF2aW9yLgorCisgICAgICAgICogcmVuZGVyaW5n
L0dyaWRMYXlvdXRGdW5jdGlvbnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JpZExheW91dEZ1
bmN0aW9uczo6aGFzT3ZlcnJpZGVDb250YWluaW5nQmxvY2tDb250ZW50U2l6ZUZvckNoaWxkKToK
KyAgICAgICAgKiByZW5kZXJpbmcvR3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkdyaWRUcmFja1NpemluZ0FsZ29yaXRobVN0cmF0ZWd5Ojpsb2dpY2FsSGVp
Z2h0Rm9yQ2hpbGQgY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9jay5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6Y29tcHV0ZUNoaWxkUHJlZmVycmVkTG9n
aWNhbFdpZHRocyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6YXZhaWxh
YmxlTG9naWNhbEhlaWdodEZvclBlcmNlbnRhZ2VDb21wdXRhdGlvbiBjb25zdCk6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJCbG9ja0Zsb3c6OmZpdEJvcmRlclRvTGluZXNJZk5lZWRlZCk6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckJsb2NrTGluZUxheW91dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJC
bG9ja0Zsb3c6OnVwZGF0ZVJ1YnlGb3JKdXN0aWZpZWRUZXh0KToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6d2lsbEJlRGVz
dHJveWVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6aGFzT3ZlcnJpZGVDb250ZW50
TG9naWNhbEhlaWdodCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6Omhhc092
ZXJyaWRlQ29udGVudExvZ2ljYWxXaWR0aCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJCb3g6OnNldE92ZXJyaWRlQ29udGVudExvZ2ljYWxIZWlnaHQpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyQm94OjpzZXRPdmVycmlkZUNvbnRlbnRMb2dpY2FsV2lkdGgpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyQm94OjpjbGVhck92ZXJyaWRlQ29udGVudExvZ2ljYWxIZWlnaHQpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94OjpjbGVhck92ZXJyaWRlQ29udGVudExvZ2ljYWxX
aWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmNsZWFyT3ZlcnJpZGVDb250ZW50
U2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6Om92ZXJyaWRlQ29udGVudExvZ2lj
YWxXaWR0aCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6Om92ZXJyaWRlQ29u
dGVudExvZ2ljYWxIZWlnaHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94Ojpv
dmVycmlkZUNvbnRhaW5pbmdCbG9ja0NvbnRlbnRMb2dpY2FsV2lkdGggY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyQm94OjpvdmVycmlkZUNvbnRhaW5pbmdCbG9ja0NvbnRlbnRMb2dp
Y2FsSGVpZ2h0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6aGFzT3ZlcnJp
ZGVDb250YWluaW5nQmxvY2tDb250ZW50TG9naWNhbFdpZHRoIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckJveDo6aGFzT3ZlcnJpZGVDb250YWluaW5nQmxvY2tDb250ZW50TG9naWNh
bEhlaWdodCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OnNldE92ZXJyaWRl
Q29udGFpbmluZ0Jsb2NrQ29udGVudExvZ2ljYWxXaWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJCb3g6OnNldE92ZXJyaWRlQ29udGFpbmluZ0Jsb2NrQ29udGVudExvZ2ljYWxIZWlnaHQp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94OjpjbGVhck92ZXJyaWRlQ29udGFpbmluZ0Js
b2NrQ29udGVudFNpemUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94OjpjbGVhck92ZXJy
aWRlQ29udGFpbmluZ0Jsb2NrQ29udGVudExvZ2ljYWxIZWlnaHQpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyQm94Ojpjb250YWluaW5nQmxvY2tMb2dpY2FsV2lkdGhGb3JDb250ZW50IGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6Y29udGFpbmluZ0Jsb2NrTG9naWNhbEhl
aWdodEZvckNvbnRlbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94OjpwZXJw
ZW5kaWN1bGFyQ29udGFpbmluZ0Jsb2NrTG9naWNhbEhlaWdodCBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJCb3g6OmNvbXB1dGVMb2dpY2FsV2lkdGhJbkZyYWdtZW50IGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6Y29tcHV0ZUxvZ2ljYWxIZWlnaHQgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94Ojpjb21wdXRlUGVyY2VudGFnZUxvZ2ljYWxI
ZWlnaHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94Ojpjb21wdXRlUmVwbGFj
ZWRMb2dpY2FsSGVpZ2h0VXNpbmcgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94
OjphdmFpbGFibGVMb2dpY2FsSGVpZ2h0VXNpbmcgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyQm94Ojpjb250YWluaW5nQmxvY2tMb2dpY2FsV2lkdGhGb3JQb3NpdGlvbmVkIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6Y29udGFpbmluZ0Jsb2NrTG9naWNhbEhl
aWdodEZvclBvc2l0aW9uZWQgY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3gu
aDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6Omhhc0F1dG9IZWlnaHRPckNvbnRhaW5p
bmdCbG9ja1dpdGhBdXRvSGVpZ2h0IGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
RGVwcmVjYXRlZEZsZXhpYmxlQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnRlbnRXaWR0
aEZvckNoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnRlbnRIZWlnaHRGb3JDaGlsZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpnYXRoZXJGbGV4Q2hpbGRyZW5JbmZvKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveDo6bGF5b3V0SG9yaXpvbnRhbEJveCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3g6OmxheW91dFZlcnRp
Y2FsQm94KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveDo6
YXBwbHlMaW5lQ2xhbXApOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRGVwcmVjYXRlZEZsZXhp
YmxlQm94OjpjbGVhckxpbmVDbGFtcCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckZsZXhp
YmxlQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZsZXhpYmxlQm94Ojpjb21wdXRl
SW5uZXJGbGV4QmFzZVNpemVGb3JDaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGbGV4
aWJsZUJveDo6Y3Jvc3NTaXplRm9yUGVyY2VudGFnZVJlc29sdXRpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyRmxleGlibGVCb3g6Om1haW5TaXplRm9yUGVyY2VudGFnZVJlc29sdXRpb24p
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxleGlibGVCb3g6OmNvbnN0cnVjdEZsZXhJdGVt
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZsZXhpYmxlQm94OjpzZXRPdmVycmlkZU1haW5B
eGlzQ29udGVudFNpemVGb3JDaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGbGV4aWJs
ZUJveDo6YXBwbHlTdHJldGNoQWxpZ25tZW50VG9DaGlsZCk6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlckZ1bGxTY3JlZW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRnVsbFNjcmVl
bjo6dW53cmFwUmVuZGVyZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJHcmlkLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckdyaWQ6OmxheW91dEJsb2NrKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckdyaWQ6OmxheW91dEdyaWRJdGVtcyk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJHcmlkOjphcHBseVN0cmV0Y2hBbGlnbm1lbnRUb0NoaWxkSWZOZWVkZWQpOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJSdWJ5QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJSdWJ5QmFzZTo6YWRqdXN0SW5saW5lRGlyZWN0aW9uTGluZUJvdW5kcyBjb25zdCk6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJUYWJsZUNlbGw6OnNldE92ZXJyaWRlQ29udGVudExvZ2ljYWxIZWlnaHRGcm9tUm93SGVp
Z2h0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmg6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJUYWJsZVNlY3Rpb246OmNhbGNSb3dMb2dpY2FsSGVpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclRhYmxlU2VjdGlvbjo6cmVsYXlvdXRDZWxsSWZGbGV4ZWQpOgorCiAyMDE4LTA1LTE0
ICBaYW4gRG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KIAogICAgICAgICBEcm9wIHRo
ZSBtX2NvbXBvc2l0b3JUZXh0dXJlIG1lbWJlciB2YXJpYWJsZSBpbiBUZXh0dXJlTWFwcGVyR0Mz
RFBsYXRmb3JtTGF5ZXIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvR3Jp
ZExheW91dEZ1bmN0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvR3JpZExheW91
dEZ1bmN0aW9ucy5jcHAKaW5kZXggNDIwNTAxZDA5MzhkMWUyMjljNWY2OWFjOGVmNTMxOWU4NDEw
YzFlYS4uNTA3NjkwMDQ2Y2ZjYzA2ZjQyMmZlNmY3MTA2ZmVmYjM5ZTY0YzA0NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWRMYXlvdXRGdW5jdGlvbnMuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkTGF5b3V0RnVuY3Rpb25zLmNwcApAQCAtODYs
NyArODYsNyBAQCBHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gZmxvd0F3YXJlRGlyZWN0aW9uRm9y
Q2hpbGQoY29uc3QgUmVuZGVyR3JpZCYgZ3JpZCwgY29ucwogCiBib29sIGhhc092ZXJyaWRlQ29u
dGFpbmluZ0Jsb2NrQ29udGVudFNpemVGb3JDaGlsZChjb25zdCBSZW5kZXJCb3gmIGNoaWxkLCBH
cmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gZGlyZWN0aW9uKQogewotICAgIHJldHVybiBkaXJlY3Rp
b24gPT0gRm9yQ29sdW1ucyA/IGNoaWxkLmhhc092ZXJyaWRlQ29udGFpbmluZ0Jsb2NrTG9naWNh
bFdpZHRoKCkgOiBjaGlsZC5oYXNPdmVycmlkZUNvbnRhaW5pbmdCbG9ja0xvZ2ljYWxIZWlnaHQo
KTsKKyAgICByZXR1cm4gZGlyZWN0aW9uID09IEZvckNvbHVtbnMgPyBjaGlsZC5oYXNPdmVycmlk
ZUNvbnRhaW5pbmdCbG9ja0NvbnRlbnRMb2dpY2FsV2lkdGgoKSA6IGNoaWxkLmhhc092ZXJyaWRl
Q29udGFpbmluZ0Jsb2NrQ29udGVudExvZ2ljYWxIZWlnaHQoKTsKIH0KIAogc3RkOjpvcHRpb25h
bDxMYXlvdXRVbml0PiBvdmVycmlkZUNvbnRhaW5pbmdCbG9ja0NvbnRlbnRTaXplRm9yQ2hpbGQo
Y29uc3QgUmVuZGVyQm94JiBjaGlsZCwgR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uIGRpcmVjdGlv
bikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkVHJhY2tTaXppbmdB
bGdvcml0aG0uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWRUcmFja1NpemluZ0Fs
Z29yaXRobS5jcHAKaW5kZXggOWI5NDcwMDg2NjQ1MGMxMTY0NzUxODI5MGUxYjliNTE1OTE2N2Ix
MC4uN2Q0OWUwNGNkNzU0NjY1ZDJmYzdjYjQ1ZjdmMzI4MDkxNTliZTUzNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWRUcmFja1NpemluZ0FsZ29yaXRobS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWRUcmFja1NpemluZ0FsZ29yaXRobS5jcHAK
QEAgLTcwNCw3ICs3MDQsNyBAQCBMYXlvdXRVbml0IEdyaWRUcmFja1NpemluZ0FsZ29yaXRobVN0
cmF0ZWd5Ojpsb2dpY2FsSGVpZ2h0Rm9yQ2hpbGQoUmVuZGVyQm94JiBjaAogCiAgICAgLy8gV2Ug
bmVlZCB0byBjbGVhciB0aGUgc3RyZXRjaGVkIGhlaWdodCB0byBwcm9wZXJseSBjb21wdXRlIGxv
Z2ljYWwgaGVpZ2h0IGR1cmluZyBsYXlvdXQuCiAgICAgaWYgKGNoaWxkLm5lZWRzTGF5b3V0KCkp
Ci0gICAgICAgIGNoaWxkLmNsZWFyT3ZlcnJpZGVMb2dpY2FsQ29udGVudEhlaWdodCgpOworICAg
ICAgICBjaGlsZC5jbGVhck92ZXJyaWRlQ29udGVudExvZ2ljYWxIZWlnaHQoKTsKIAogICAgIGNo
aWxkLmxheW91dElmTmVlZGVkKCk7CiAgICAgcmV0dXJuIGNoaWxkLmxvZ2ljYWxIZWlnaHQoKSAr
IEdyaWRMYXlvdXRGdW5jdGlvbnM6Om1hcmdpbkxvZ2ljYWxTaXplRm9yQ2hpbGQoKnJlbmRlckdy
aWQoKSwgY2hpbGRCbG9ja0RpcmVjdGlvbiwgY2hpbGQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCbG9jay5jcHAKaW5kZXggMjMyOWIyYzRjN2M0NTI3NTEyYWVjNzc5Nzk2MmM5MWI0
NzJlZmUzNS4uYTMwYmIzOWNiMTc4MDI4ZWI5NjNhZDAxYjRiYjdjMjg3MzEwYTdlNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCkBAIC0yMzc4LDExICsyMzc4LDEx
IEBAIHZvaWQgUmVuZGVyQmxvY2s6OmNvbXB1dGVDaGlsZFByZWZlcnJlZExvZ2ljYWxXaWR0aHMo
UmVuZGVyT2JqZWN0JiBjaGlsZCwgTGF5b3V0CiAgICAgaWYgKGNoaWxkLmlzQm94KCkpIHsKICAg
ICAgICAgYXV0byYgYm94ID0gZG93bmNhc3Q8UmVuZGVyQm94PihjaGlsZCk7CiAgICAgICAgIGlm
IChib3guaXNGbGV4SXRlbSgpKSB7Ci0gICAgICAgICAgICBpZiAoYm94Lmhhc092ZXJyaWRlTG9n
aWNhbENvbnRlbnRIZWlnaHQoKSkKLSAgICAgICAgICAgICAgICBvdmVycmlkZUhlaWdodCA9IHN0
ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4oYm94Lm92ZXJyaWRlTG9naWNhbENvbnRlbnRIZWlnaHQo
KSk7Ci0gICAgICAgICAgICBpZiAoYm94Lmhhc092ZXJyaWRlTG9naWNhbENvbnRlbnRXaWR0aCgp
KQotICAgICAgICAgICAgICAgIG92ZXJyaWRlV2lkdGggPSBzdGQ6Om9wdGlvbmFsPExheW91dFVu
aXQ+KGJveC5vdmVycmlkZUxvZ2ljYWxDb250ZW50V2lkdGgoKSk7Ci0gICAgICAgICAgICBib3gu
Y2xlYXJPdmVycmlkZVNpemUoKTsKKyAgICAgICAgICAgIGlmIChib3guaGFzT3ZlcnJpZGVDb250
ZW50TG9naWNhbEhlaWdodCgpKQorICAgICAgICAgICAgICAgIG92ZXJyaWRlSGVpZ2h0ID0gc3Rk
OjpvcHRpb25hbDxMYXlvdXRVbml0Pihib3gub3ZlcnJpZGVDb250ZW50TG9naWNhbEhlaWdodCgp
KTsKKyAgICAgICAgICAgIGlmIChib3guaGFzT3ZlcnJpZGVDb250ZW50TG9naWNhbFdpZHRoKCkp
CisgICAgICAgICAgICAgICAgb3ZlcnJpZGVXaWR0aCA9IHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5p
dD4oYm94Lm92ZXJyaWRlQ29udGVudExvZ2ljYWxXaWR0aCgpKTsKKyAgICAgICAgICAgIGJveC5j
bGVhck92ZXJyaWRlQ29udGVudFNpemUoKTsKICAgICAgICAgfQogICAgIH0KICAgICAKQEAgLTIz
OTIsOSArMjM5Miw5IEBAIHZvaWQgUmVuZGVyQmxvY2s6OmNvbXB1dGVDaGlsZFByZWZlcnJlZExv
Z2ljYWxXaWR0aHMoUmVuZGVyT2JqZWN0JiBjaGlsZCwgTGF5b3V0CiAgICAgaWYgKGNoaWxkLmlz
Qm94KCkpIHsKICAgICAgICAgYXV0byYgYm94ID0gZG93bmNhc3Q8UmVuZGVyQm94PihjaGlsZCk7
CiAgICAgICAgIGlmIChvdmVycmlkZUhlaWdodCkKLSAgICAgICAgICAgIGJveC5zZXRPdmVycmlk
ZUxvZ2ljYWxDb250ZW50SGVpZ2h0KG92ZXJyaWRlSGVpZ2h0LnZhbHVlKCkpOworICAgICAgICAg
ICAgYm94LnNldE92ZXJyaWRlQ29udGVudExvZ2ljYWxIZWlnaHQob3ZlcnJpZGVIZWlnaHQudmFs
dWUoKSk7CiAgICAgICAgIGlmIChvdmVycmlkZVdpZHRoKQotICAgICAgICAgICAgYm94LnNldE92
ZXJyaWRlTG9naWNhbENvbnRlbnRXaWR0aChvdmVycmlkZVdpZHRoLnZhbHVlKCkpOworICAgICAg
ICAgICAgYm94LnNldE92ZXJyaWRlQ29udGVudExvZ2ljYWxXaWR0aChvdmVycmlkZVdpZHRoLnZh
bHVlKCkpOwogICAgIH0KIAogICAgIC8vIEZvciBub24tcmVwbGFjZWQgYmxvY2tzIGlmIHRoZSBp
bmxpbmUgc2l6ZSBpcyBtaW58bWF4LWNvbnRlbnQgb3IgYSBkZWZpbml0ZQpAQCAtMzE3OCw4ICsz
MTc4LDggQEAgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBSZW5kZXJCbG9jazo6YXZhaWxhYmxl
TG9naWNhbEhlaWdodEZvclBlcmNlbnRhZ2VDb21wdXQKICAgICAKICAgICBpZiAoc3RyZXRjaGVk
RmxleEhlaWdodCkKICAgICAgICAgYXZhaWxhYmxlSGVpZ2h0ID0gc3RyZXRjaGVkRmxleEhlaWdo
dDsKLSAgICBlbHNlIGlmIChpc0dyaWRJdGVtKCkgJiYgaGFzT3ZlcnJpZGVMb2dpY2FsQ29udGVu
dEhlaWdodCgpKQotICAgICAgICBhdmFpbGFibGVIZWlnaHQgPSBvdmVycmlkZUxvZ2ljYWxDb250
ZW50SGVpZ2h0KCk7CisgICAgZWxzZSBpZiAoaXNHcmlkSXRlbSgpICYmIGhhc092ZXJyaWRlQ29u
dGVudExvZ2ljYWxIZWlnaHQoKSkKKyAgICAgICAgYXZhaWxhYmxlSGVpZ2h0ID0gb3ZlcnJpZGVD
b250ZW50TG9naWNhbEhlaWdodCgpOwogICAgIGVsc2UgaWYgKHN0eWxlVG9Vc2UubG9naWNhbEhl
aWdodCgpLmlzRml4ZWQoKSkgewogICAgICAgICBMYXlvdXRVbml0IGNvbnRlbnRCb3hIZWlnaHQg
PSBhZGp1c3RDb250ZW50Qm94TG9naWNhbEhlaWdodEZvckJveFNpemluZygoTGF5b3V0VW5pdClz
dHlsZVRvVXNlLmxvZ2ljYWxIZWlnaHQoKS52YWx1ZSgpKTsKICAgICAgICAgYXZhaWxhYmxlSGVp
Z2h0ID0gc3RkOjptYXgoTGF5b3V0VW5pdCgpLCBjb25zdHJhaW5Db250ZW50Qm94TG9naWNhbEhl
aWdodEJ5TWluTWF4KGNvbnRlbnRCb3hIZWlnaHQgLSBzY3JvbGxiYXJMb2dpY2FsSGVpZ2h0KCks
IHN0ZDo6bnVsbG9wdCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJsb2NrRmxvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tG
bG93LmNwcAppbmRleCA0ZWFjYjhjMmU5ZmFkMjdhMjc5NDdkZTRhODMxYzE2YTdhZmE0MmUwLi40
ZmMxN2Q5ODdhNmM1OTRhODAxMDA4NzUyZDQ1NDI3ODA5YjRlMjE0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcApAQCAtMjk1Myw3ICsyOTUzLDcgQEAg
dm9pZCBSZW5kZXJCbG9ja0Zsb3c6OmFkanVzdEZvckJvcmRlckZpdChMYXlvdXRVbml0IHgsIExh
eW91dFVuaXQmIGxlZnQsIExheW91dFUKIAogdm9pZCBSZW5kZXJCbG9ja0Zsb3c6OmZpdEJvcmRl
clRvTGluZXNJZk5lZWRlZCgpCiB7Ci0gICAgaWYgKHN0eWxlKCkuYm9yZGVyRml0KCkgPT0gQm9y
ZGVyRml0Qm9yZGVyIHx8IGhhc092ZXJyaWRlTG9naWNhbENvbnRlbnRXaWR0aCgpKQorICAgIGlm
IChzdHlsZSgpLmJvcmRlckZpdCgpID09IEJvcmRlckZpdEJvcmRlciB8fCBoYXNPdmVycmlkZUNv
bnRlbnRMb2dpY2FsV2lkdGgoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gV2FsayBhbnkg
bm9ybWFsIGZsb3cgbGluZXMgdG8gc251Z2x5IGZpdC4KQEAgLTI5NzIsOSArMjk3Miw5IEBAIHZv
aWQgUmVuZGVyQmxvY2tGbG93OjpmaXRCb3JkZXJUb0xpbmVzSWZOZWVkZWQoKQogICAgIGlmIChu
ZXdDb250ZW50V2lkdGggPT0gb2xkV2lkdGgpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBz
ZXRPdmVycmlkZUxvZ2ljYWxDb250ZW50V2lkdGgobmV3Q29udGVudFdpZHRoKTsKKyAgICBzZXRP
dmVycmlkZUNvbnRlbnRMb2dpY2FsV2lkdGgobmV3Q29udGVudFdpZHRoKTsKICAgICBsYXlvdXRC
bG9jayhmYWxzZSk7Ci0gICAgY2xlYXJPdmVycmlkZUxvZ2ljYWxDb250ZW50V2lkdGgoKTsKKyAg
ICBjbGVhck92ZXJyaWRlQ29udGVudExvZ2ljYWxXaWR0aCgpOwogfQogCiB2b2lkIFJlbmRlckJs
b2NrRmxvdzo6bWFya0xpbmVzRGlydHlJbkJsb2NrUmFuZ2UoTGF5b3V0VW5pdCBsb2dpY2FsVG9w
LCBMYXlvdXRVbml0IGxvZ2ljYWxCb3R0b20sIFJvb3RJbmxpbmVCb3gqIGhpZ2hlc3QpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3BwCmlu
ZGV4IDJjZjc2ZDQ3Zjc3MTZkOWI4MTE2MTQ0MGMwMGVlYzMyMTYwZjkyNjYuLmMxOTgwYThhNzIz
MmVjNGU1ZDkxYjI3NmRmM2U2MDYzMzY5N2ZhMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3BwCkBAIC01NjQsMTEgKzU2NCwxMSBA
QCB2b2lkIFJlbmRlckJsb2NrRmxvdzo6dXBkYXRlUnVieUZvckp1c3RpZmllZFRleHQoUmVuZGVy
UnVieVJ1biYgcnVieVJ1biwgQmlkaVJ1bgogICAgICAgICB0b3RhbE9wcG9ydHVuaXRpZXNJblJ1
biArPSBvcHBvcnR1bml0aWVzSW5SdW47CiAgICAgfQogCi0gICAgQVNTRVJUKCFydWJ5UnVuLmhh
c092ZXJyaWRlTG9naWNhbENvbnRlbnRXaWR0aCgpKTsKKyAgICBBU1NFUlQoIXJ1YnlSdW4uaGFz
T3ZlcnJpZGVDb250ZW50TG9naWNhbFdpZHRoKCkpOwogICAgIGZsb2F0IG5ld0Jhc2VXaWR0aCA9
IHJ1YnlSdW4ubG9naWNhbFdpZHRoKCkgKyB0b3RhbEV4cGFuc2lvbiArIG1hcmdpblN0YXJ0Rm9y
Q2hpbGQocnVieVJ1bikgKyBtYXJnaW5FbmRGb3JDaGlsZChydWJ5UnVuKTsKICAgICBmbG9hdCBu
ZXdSdWJ5UnVuV2lkdGggPSBydWJ5UnVuLmxvZ2ljYWxXaWR0aCgpICsgdG90YWxFeHBhbnNpb247
CiAgICAgcnVieUJhc2Uuc2V0SW5pdGlhbE9mZnNldCgobmV3UnVieVJ1bldpZHRoIC0gbmV3QmFz
ZVdpZHRoKSAvIDIpOwotICAgIHJ1YnlSdW4uc2V0T3ZlcnJpZGVMb2dpY2FsQ29udGVudFdpZHRo
KG5ld1J1YnlSdW5XaWR0aCk7CisgICAgcnVieVJ1bi5zZXRPdmVycmlkZUNvbnRlbnRMb2dpY2Fs
V2lkdGgobmV3UnVieVJ1bldpZHRoKTsKICAgICBydWJ5UnVuLnNldE5lZWRzTGF5b3V0KE1hcmtP
bmx5VGhpcyk7CiAgICAgcm9vdEJveC5tYXJrRGlydHkoKTsKICAgICBpZiAoUmVuZGVyUnVieVRl
eHQqIHJ1YnlUZXh0ID0gcnVieVJ1bi5ydWJ5VGV4dCgpKSB7CkBAIC01NzYsNyArNTc2LDcgQEAg
dm9pZCBSZW5kZXJCbG9ja0Zsb3c6OnVwZGF0ZVJ1YnlGb3JKdXN0aWZpZWRUZXh0KFJlbmRlclJ1
YnlSdW4mIHJ1YnlSdW4sIEJpZGlSdW4KICAgICAgICAgICAgIHRleHRSb290Qm94LT5tYXJrRGly
dHkoKTsKICAgICB9CiAgICAgcnVieVJ1bi5sYXlvdXRCbG9jayh0cnVlKTsKLSAgICBydWJ5UnVu
LmNsZWFyT3ZlcnJpZGVMb2dpY2FsQ29udGVudFdpZHRoKCk7CisgICAgcnVieVJ1bi5jbGVhck92
ZXJyaWRlQ29udGVudExvZ2ljYWxXaWR0aCgpOwogICAgIHIuYm94KCktPnNldEV4cGFuc2lvbihu
ZXdSdWJ5UnVuV2lkdGggLSByLmJveCgpLT5sb2dpY2FsV2lkdGgoKSk7CiAKICAgICB0b3RhbExv
Z2ljYWxXaWR0aCArPSB0b3RhbEV4cGFuc2lvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJveC5jcHAKaW5kZXggZGNiNjVmNzgwZTViMTUwNjZlZWM0YjljY2JlNjBlNTg1YTk2YmExOC4u
ODMyYWUzMjIzMWViNGQyNGNjMGE1MzQxYmMzMTU5MGUyNjQ0MmNkYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJveC5jcHAKQEAgLTk4LDEzICs5OCwxMyBAQCB1c2luZyBuYW1lc3Bh
Y2UgSFRNTE5hbWVzOwogCiAvLyBVc2VkIGJ5IGZsZXhpYmxlIGJveGVzIHdoZW4gZmxleGluZyB0
aGlzIGVsZW1lbnQgYW5kIGJ5IHRhYmxlIGNlbGxzLgogdHlwZWRlZiBXVEY6Okhhc2hNYXA8Y29u
c3QgUmVuZGVyQm94KiwgTGF5b3V0VW5pdD4gT3ZlcnJpZGVTaXplTWFwOwotc3RhdGljIE92ZXJy
aWRlU2l6ZU1hcCogZ092ZXJyaWRlSGVpZ2h0TWFwID0gbnVsbHB0cjsKLXN0YXRpYyBPdmVycmlk
ZVNpemVNYXAqIGdPdmVycmlkZVdpZHRoTWFwID0gbnVsbHB0cjsKK3N0YXRpYyBPdmVycmlkZVNp
emVNYXAqIGdPdmVycmlkZUNvbnRlbnRMb2dpY2FsSGVpZ2h0TWFwID0gbnVsbHB0cjsKK3N0YXRp
YyBPdmVycmlkZVNpemVNYXAqIGdPdmVycmlkZUNvbnRlbnRMb2dpY2FsV2lkdGhNYXAgPSBudWxs
cHRyOwogCiAvLyBVc2VkIGJ5IGdyaWQgZWxlbWVudHMgdG8gcHJvcGVybHkgc2l6ZSB0aGVpciBn
cmlkIGl0ZW1zLgogdHlwZWRlZiBXVEY6Okhhc2hNYXA8Y29uc3QgUmVuZGVyQm94Kiwgc3RkOjpv
cHRpb25hbDxMYXlvdXRVbml0Pj4gT3ZlcnJpZGVPcHRpb25hbFNpemVNYXA7Ci1zdGF0aWMgT3Zl
cnJpZGVPcHRpb25hbFNpemVNYXAqIGdPdmVycmlkZUNvbnRhaW5pbmdCbG9ja0xvZ2ljYWxIZWln
aHRNYXAgPSBudWxscHRyOwotc3RhdGljIE92ZXJyaWRlT3B0aW9uYWxTaXplTWFwKiBnT3ZlcnJp
ZGVDb250YWluaW5nQmxvY2tMb2dpY2FsV2lkdGhNYXAgPSBudWxscHRyOworc3RhdGljIE92ZXJy
aWRlT3B0aW9uYWxTaXplTWFwKiBnT3ZlcnJpZGVDb250YWluaW5nQmxvY2tDb250ZW50TG9naWNh
bEhlaWdodE1hcCA9IG51bGxwdHI7CitzdGF0aWMgT3ZlcnJpZGVPcHRpb25hbFNpemVNYXAqIGdP
dmVycmlkZUNvbnRhaW5pbmdCbG9ja0NvbnRlbnRMb2dpY2FsV2lkdGhNYXAgPSBudWxscHRyOwog
CiAvLyBTaXplIG9mIGJvcmRlciBiZWx0IGZvciBhdXRvc2Nyb2xsLiBXaGVuIG1vdXNlIHBvaW50
ZXIgaW4gYm9yZGVyIGJlbHQsCiAvLyBhdXRvc2Nyb2xsIGlzIHN0YXJ0ZWQuCkBAIC0xNTQsOCAr
MTU0LDggQEAgdm9pZCBSZW5kZXJCb3g6OndpbGxCZURlc3Ryb3llZCgpCiAgICAgaWYgKGZyYW1l
KCkuZXZlbnRIYW5kbGVyKCkuYXV0b3Njcm9sbFJlbmRlcmVyKCkgPT0gdGhpcykKICAgICAgICAg
ZnJhbWUoKS5ldmVudEhhbmRsZXIoKS5zdG9wQXV0b3Njcm9sbFRpbWVyKHRydWUpOwogCi0gICAg
Y2xlYXJPdmVycmlkZVNpemUoKTsKLSAgICBjbGVhckNvbnRhaW5pbmdCbG9ja092ZXJyaWRlU2l6
ZSgpOworICAgIGNsZWFyT3ZlcnJpZGVDb250ZW50U2l6ZSgpOworICAgIGNsZWFyT3ZlcnJpZGVD
b250YWluaW5nQmxvY2tDb250ZW50U2l6ZSgpOwogCiAgICAgUmVuZGVyQmxvY2s6OnJlbW92ZVBl
cmNlbnRIZWlnaHREZXNjZW5kYW50SWZOZWVkZWQoKnRoaXMpOwogCkBAIC0xMDIwLDEwNyArMTAy
MCwxMDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJCb3g6Om1heFByZWZlcnJlZExvZ2ljYWxXaWR0aCgp
IGNvbnN0CiAgICAgcmV0dXJuIG1fbWF4UHJlZmVycmVkTG9naWNhbFdpZHRoOwogfQogCi1ib29s
IFJlbmRlckJveDo6aGFzT3ZlcnJpZGVMb2dpY2FsQ29udGVudEhlaWdodCgpIGNvbnN0Citib29s
IFJlbmRlckJveDo6aGFzT3ZlcnJpZGVDb250ZW50TG9naWNhbEhlaWdodCgpIGNvbnN0CiB7Ci0g
ICAgcmV0dXJuIGdPdmVycmlkZUhlaWdodE1hcCAmJiBnT3ZlcnJpZGVIZWlnaHRNYXAtPmNvbnRh
aW5zKHRoaXMpOworICAgIHJldHVybiBnT3ZlcnJpZGVDb250ZW50TG9naWNhbEhlaWdodE1hcCAm
JiBnT3ZlcnJpZGVDb250ZW50TG9naWNhbEhlaWdodE1hcC0+Y29udGFpbnModGhpcyk7CiB9CiAK
LWJvb2wgUmVuZGVyQm94OjpoYXNPdmVycmlkZUxvZ2ljYWxDb250ZW50V2lkdGgoKSBjb25zdAor
Ym9vbCBSZW5kZXJCb3g6Omhhc092ZXJyaWRlQ29udGVudExvZ2ljYWxXaWR0aCgpIGNvbnN0CiB7
Ci0gICAgcmV0dXJuIGdPdmVycmlkZVdpZHRoTWFwICYmIGdPdmVycmlkZVdpZHRoTWFwLT5jb250
YWlucyh0aGlzKTsKKyAgICByZXR1cm4gZ092ZXJyaWRlQ29udGVudExvZ2ljYWxXaWR0aE1hcCAm
JiBnT3ZlcnJpZGVDb250ZW50TG9naWNhbFdpZHRoTWFwLT5jb250YWlucyh0aGlzKTsKIH0KIAot
dm9pZCBSZW5kZXJCb3g6OnNldE92ZXJyaWRlTG9naWNhbENvbnRlbnRIZWlnaHQoTGF5b3V0VW5p
dCBoZWlnaHQpCit2b2lkIFJlbmRlckJveDo6c2V0T3ZlcnJpZGVDb250ZW50TG9naWNhbEhlaWdo
dChMYXlvdXRVbml0IGhlaWdodCkKIHsKLSAgICBpZiAoIWdPdmVycmlkZUhlaWdodE1hcCkKLSAg
ICAgICAgZ092ZXJyaWRlSGVpZ2h0TWFwID0gbmV3IE92ZXJyaWRlU2l6ZU1hcCgpOwotICAgIGdP
dmVycmlkZUhlaWdodE1hcC0+c2V0KHRoaXMsIGhlaWdodCk7CisgICAgaWYgKCFnT3ZlcnJpZGVD
b250ZW50TG9naWNhbEhlaWdodE1hcCkKKyAgICAgICAgZ092ZXJyaWRlQ29udGVudExvZ2ljYWxI
ZWlnaHRNYXAgPSBuZXcgT3ZlcnJpZGVTaXplTWFwKCk7CisgICAgZ092ZXJyaWRlQ29udGVudExv
Z2ljYWxIZWlnaHRNYXAtPnNldCh0aGlzLCBoZWlnaHQpOwogfQogCi12b2lkIFJlbmRlckJveDo6
c2V0T3ZlcnJpZGVMb2dpY2FsQ29udGVudFdpZHRoKExheW91dFVuaXQgd2lkdGgpCit2b2lkIFJl
bmRlckJveDo6c2V0T3ZlcnJpZGVDb250ZW50TG9naWNhbFdpZHRoKExheW91dFVuaXQgd2lkdGgp
CiB7Ci0gICAgaWYgKCFnT3ZlcnJpZGVXaWR0aE1hcCkKLSAgICAgICAgZ092ZXJyaWRlV2lkdGhN
YXAgPSBuZXcgT3ZlcnJpZGVTaXplTWFwKCk7Ci0gICAgZ092ZXJyaWRlV2lkdGhNYXAtPnNldCh0
aGlzLCB3aWR0aCk7CisgICAgaWYgKCFnT3ZlcnJpZGVDb250ZW50TG9naWNhbFdpZHRoTWFwKQor
ICAgICAgICBnT3ZlcnJpZGVDb250ZW50TG9naWNhbFdpZHRoTWFwID0gbmV3IE92ZXJyaWRlU2l6
ZU1hcCgpOworICAgIGdPdmVycmlkZUNvbnRlbnRMb2dpY2FsV2lkdGhNYXAtPnNldCh0aGlzLCB3
aWR0aCk7CiB9CiAKLXZvaWQgUmVuZGVyQm94OjpjbGVhck92ZXJyaWRlTG9naWNhbENvbnRlbnRI
ZWlnaHQoKQordm9pZCBSZW5kZXJCb3g6OmNsZWFyT3ZlcnJpZGVDb250ZW50TG9naWNhbEhlaWdo
dCgpCiB7Ci0gICAgaWYgKGdPdmVycmlkZUhlaWdodE1hcCkKLSAgICAgICAgZ092ZXJyaWRlSGVp
Z2h0TWFwLT5yZW1vdmUodGhpcyk7CisgICAgaWYgKGdPdmVycmlkZUNvbnRlbnRMb2dpY2FsSGVp
Z2h0TWFwKQorICAgICAgICBnT3ZlcnJpZGVDb250ZW50TG9naWNhbEhlaWdodE1hcC0+cmVtb3Zl
KHRoaXMpOwogfQogCi12b2lkIFJlbmRlckJveDo6Y2xlYXJPdmVycmlkZUxvZ2ljYWxDb250ZW50
V2lkdGgoKQordm9pZCBSZW5kZXJCb3g6OmNsZWFyT3ZlcnJpZGVDb250ZW50TG9naWNhbFdpZHRo
KCkKIHsKLSAgICBpZiAoZ092ZXJyaWRlV2lkdGhNYXApCi0gICAgICAgIGdPdmVycmlkZVdpZHRo
TWFwLT5yZW1vdmUodGhpcyk7CisgICAgaWYgKGdPdmVycmlkZUNvbnRlbnRMb2dpY2FsV2lkdGhN
YXApCisgICAgICAgIGdPdmVycmlkZUNvbnRlbnRMb2dpY2FsV2lkdGhNYXAtPnJlbW92ZSh0aGlz
KTsKIH0KIAotdm9pZCBSZW5kZXJCb3g6OmNsZWFyT3ZlcnJpZGVTaXplKCkKK3ZvaWQgUmVuZGVy
Qm94OjpjbGVhck92ZXJyaWRlQ29udGVudFNpemUoKQogewotICAgIGNsZWFyT3ZlcnJpZGVMb2dp
Y2FsQ29udGVudEhlaWdodCgpOwotICAgIGNsZWFyT3ZlcnJpZGVMb2dpY2FsQ29udGVudFdpZHRo
KCk7CisgICAgY2xlYXJPdmVycmlkZUNvbnRlbnRMb2dpY2FsSGVpZ2h0KCk7CisgICAgY2xlYXJP
dmVycmlkZUNvbnRlbnRMb2dpY2FsV2lkdGgoKTsKIH0KIAotTGF5b3V0VW5pdCBSZW5kZXJCb3g6
Om92ZXJyaWRlTG9naWNhbENvbnRlbnRXaWR0aCgpIGNvbnN0CitMYXlvdXRVbml0IFJlbmRlckJv
eDo6b3ZlcnJpZGVDb250ZW50TG9naWNhbFdpZHRoKCkgY29uc3QKIHsKLSAgICBBU1NFUlQoaGFz
T3ZlcnJpZGVMb2dpY2FsQ29udGVudFdpZHRoKCkpOwotICAgIHJldHVybiBnT3ZlcnJpZGVXaWR0
aE1hcC0+Z2V0KHRoaXMpOworICAgIEFTU0VSVChoYXNPdmVycmlkZUNvbnRlbnRMb2dpY2FsV2lk
dGgoKSk7CisgICAgcmV0dXJuIGdPdmVycmlkZUNvbnRlbnRMb2dpY2FsV2lkdGhNYXAtPmdldCh0
aGlzKTsKIH0KIAotTGF5b3V0VW5pdCBSZW5kZXJCb3g6Om92ZXJyaWRlTG9naWNhbENvbnRlbnRI
ZWlnaHQoKSBjb25zdAorTGF5b3V0VW5pdCBSZW5kZXJCb3g6Om92ZXJyaWRlQ29udGVudExvZ2lj
YWxIZWlnaHQoKSBjb25zdAogewotICAgIEFTU0VSVChoYXNPdmVycmlkZUxvZ2ljYWxDb250ZW50
SGVpZ2h0KCkpOwotICAgIHJldHVybiBnT3ZlcnJpZGVIZWlnaHRNYXAtPmdldCh0aGlzKTsKKyAg
ICBBU1NFUlQoaGFzT3ZlcnJpZGVDb250ZW50TG9naWNhbEhlaWdodCgpKTsKKyAgICByZXR1cm4g
Z092ZXJyaWRlQ29udGVudExvZ2ljYWxIZWlnaHRNYXAtPmdldCh0aGlzKTsKIH0KIAogc3RkOjpv
cHRpb25hbDxMYXlvdXRVbml0PiBSZW5kZXJCb3g6Om92ZXJyaWRlQ29udGFpbmluZ0Jsb2NrQ29u
dGVudExvZ2ljYWxXaWR0aCgpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKGhhc092ZXJyaWRlQ29udGFp
bmluZ0Jsb2NrTG9naWNhbFdpZHRoKCkpOwotICAgIHJldHVybiBnT3ZlcnJpZGVDb250YWluaW5n
QmxvY2tMb2dpY2FsV2lkdGhNYXAtPmdldCh0aGlzKTsKKyAgICBBU1NFUlQoaGFzT3ZlcnJpZGVD
b250YWluaW5nQmxvY2tDb250ZW50TG9naWNhbFdpZHRoKCkpOworICAgIHJldHVybiBnT3ZlcnJp
ZGVDb250YWluaW5nQmxvY2tDb250ZW50TG9naWNhbFdpZHRoTWFwLT5nZXQodGhpcyk7CiB9CiAK
IHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gUmVuZGVyQm94OjpvdmVycmlkZUNvbnRhaW5pbmdC
bG9ja0NvbnRlbnRMb2dpY2FsSGVpZ2h0KCkgY29uc3QKIHsKLSAgICBBU1NFUlQoaGFzT3ZlcnJp
ZGVDb250YWluaW5nQmxvY2tMb2dpY2FsSGVpZ2h0KCkpOwotICAgIHJldHVybiBnT3ZlcnJpZGVD
b250YWluaW5nQmxvY2tMb2dpY2FsSGVpZ2h0TWFwLT5nZXQodGhpcyk7CisgICAgQVNTRVJUKGhh
c092ZXJyaWRlQ29udGFpbmluZ0Jsb2NrQ29udGVudExvZ2ljYWxIZWlnaHQoKSk7CisgICAgcmV0
dXJuIGdPdmVycmlkZUNvbnRhaW5pbmdCbG9ja0NvbnRlbnRMb2dpY2FsSGVpZ2h0TWFwLT5nZXQo
dGhpcyk7CiB9CiAKLWJvb2wgUmVuZGVyQm94OjpoYXNPdmVycmlkZUNvbnRhaW5pbmdCbG9ja0xv
Z2ljYWxXaWR0aCgpIGNvbnN0Citib29sIFJlbmRlckJveDo6aGFzT3ZlcnJpZGVDb250YWluaW5n
QmxvY2tDb250ZW50TG9naWNhbFdpZHRoKCkgY29uc3QKIHsKLSAgICByZXR1cm4gZ092ZXJyaWRl
Q29udGFpbmluZ0Jsb2NrTG9naWNhbFdpZHRoTWFwICYmIGdPdmVycmlkZUNvbnRhaW5pbmdCbG9j
a0xvZ2ljYWxXaWR0aE1hcC0+Y29udGFpbnModGhpcyk7CisgICAgcmV0dXJuIGdPdmVycmlkZUNv
bnRhaW5pbmdCbG9ja0NvbnRlbnRMb2dpY2FsV2lkdGhNYXAgJiYgZ092ZXJyaWRlQ29udGFpbmlu
Z0Jsb2NrQ29udGVudExvZ2ljYWxXaWR0aE1hcC0+Y29udGFpbnModGhpcyk7CiB9CiAKLWJvb2wg
UmVuZGVyQm94OjpoYXNPdmVycmlkZUNvbnRhaW5pbmdCbG9ja0xvZ2ljYWxIZWlnaHQoKSBjb25z
dAorYm9vbCBSZW5kZXJCb3g6Omhhc092ZXJyaWRlQ29udGFpbmluZ0Jsb2NrQ29udGVudExvZ2lj
YWxIZWlnaHQoKSBjb25zdAogewotICAgIHJldHVybiBnT3ZlcnJpZGVDb250YWluaW5nQmxvY2tM
b2dpY2FsSGVpZ2h0TWFwICYmIGdPdmVycmlkZUNvbnRhaW5pbmdCbG9ja0xvZ2ljYWxIZWlnaHRN
YXAtPmNvbnRhaW5zKHRoaXMpOworICAgIHJldHVybiBnT3ZlcnJpZGVDb250YWluaW5nQmxvY2tD
b250ZW50TG9naWNhbEhlaWdodE1hcCAmJiBnT3ZlcnJpZGVDb250YWluaW5nQmxvY2tDb250ZW50
TG9naWNhbEhlaWdodE1hcC0+Y29udGFpbnModGhpcyk7CiB9CiAKIHZvaWQgUmVuZGVyQm94Ojpz
ZXRPdmVycmlkZUNvbnRhaW5pbmdCbG9ja0NvbnRlbnRMb2dpY2FsV2lkdGgoc3RkOjpvcHRpb25h
bDxMYXlvdXRVbml0PiBsb2dpY2FsV2lkdGgpCiB7Ci0gICAgaWYgKCFnT3ZlcnJpZGVDb250YWlu
aW5nQmxvY2tMb2dpY2FsV2lkdGhNYXApCi0gICAgICAgIGdPdmVycmlkZUNvbnRhaW5pbmdCbG9j
a0xvZ2ljYWxXaWR0aE1hcCA9IG5ldyBPdmVycmlkZU9wdGlvbmFsU2l6ZU1hcDsKLSAgICBnT3Zl
cnJpZGVDb250YWluaW5nQmxvY2tMb2dpY2FsV2lkdGhNYXAtPnNldCh0aGlzLCBsb2dpY2FsV2lk
dGgpOworICAgIGlmICghZ092ZXJyaWRlQ29udGFpbmluZ0Jsb2NrQ29udGVudExvZ2ljYWxXaWR0
aE1hcCkKKyAgICAgICAgZ092ZXJyaWRlQ29udGFpbmluZ0Jsb2NrQ29udGVudExvZ2ljYWxXaWR0
aE1hcCA9IG5ldyBPdmVycmlkZU9wdGlvbmFsU2l6ZU1hcDsKKyAgICBnT3ZlcnJpZGVDb250YWlu
aW5nQmxvY2tDb250ZW50TG9naWNhbFdpZHRoTWFwLT5zZXQodGhpcywgbG9naWNhbFdpZHRoKTsK
IH0KIAogdm9pZCBSZW5kZXJCb3g6OnNldE92ZXJyaWRlQ29udGFpbmluZ0Jsb2NrQ29udGVudExv
Z2ljYWxIZWlnaHQoc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBsb2dpY2FsSGVpZ2h0KQogewot
ICAgIGlmICghZ092ZXJyaWRlQ29udGFpbmluZ0Jsb2NrTG9naWNhbEhlaWdodE1hcCkKLSAgICAg
ICAgZ092ZXJyaWRlQ29udGFpbmluZ0Jsb2NrTG9naWNhbEhlaWdodE1hcCA9IG5ldyBPdmVycmlk
ZU9wdGlvbmFsU2l6ZU1hcDsKLSAgICBnT3ZlcnJpZGVDb250YWluaW5nQmxvY2tMb2dpY2FsSGVp
Z2h0TWFwLT5zZXQodGhpcywgbG9naWNhbEhlaWdodCk7CisgICAgaWYgKCFnT3ZlcnJpZGVDb250
YWluaW5nQmxvY2tDb250ZW50TG9naWNhbEhlaWdodE1hcCkKKyAgICAgICAgZ092ZXJyaWRlQ29u
dGFpbmluZ0Jsb2NrQ29udGVudExvZ2ljYWxIZWlnaHRNYXAgPSBuZXcgT3ZlcnJpZGVPcHRpb25h
bFNpemVNYXA7CisgICAgZ092ZXJyaWRlQ29udGFpbmluZ0Jsb2NrQ29udGVudExvZ2ljYWxIZWln
aHRNYXAtPnNldCh0aGlzLCBsb2dpY2FsSGVpZ2h0KTsKIH0KIAotdm9pZCBSZW5kZXJCb3g6OmNs
ZWFyQ29udGFpbmluZ0Jsb2NrT3ZlcnJpZGVTaXplKCkKK3ZvaWQgUmVuZGVyQm94OjpjbGVhck92
ZXJyaWRlQ29udGFpbmluZ0Jsb2NrQ29udGVudFNpemUoKQogewotICAgIGlmIChnT3ZlcnJpZGVD
b250YWluaW5nQmxvY2tMb2dpY2FsV2lkdGhNYXApCi0gICAgICAgIGdPdmVycmlkZUNvbnRhaW5p
bmdCbG9ja0xvZ2ljYWxXaWR0aE1hcC0+cmVtb3ZlKHRoaXMpOworICAgIGlmIChnT3ZlcnJpZGVD
b250YWluaW5nQmxvY2tDb250ZW50TG9naWNhbFdpZHRoTWFwKQorICAgICAgICBnT3ZlcnJpZGVD
b250YWluaW5nQmxvY2tDb250ZW50TG9naWNhbFdpZHRoTWFwLT5yZW1vdmUodGhpcyk7CiAgICAg
Y2xlYXJPdmVycmlkZUNvbnRhaW5pbmdCbG9ja0NvbnRlbnRMb2dpY2FsSGVpZ2h0KCk7CiB9CiAK
IHZvaWQgUmVuZGVyQm94OjpjbGVhck92ZXJyaWRlQ29udGFpbmluZ0Jsb2NrQ29udGVudExvZ2lj
YWxIZWlnaHQoKQogewotICAgIGlmIChnT3ZlcnJpZGVDb250YWluaW5nQmxvY2tMb2dpY2FsSGVp
Z2h0TWFwKQotICAgICAgICBnT3ZlcnJpZGVDb250YWluaW5nQmxvY2tMb2dpY2FsSGVpZ2h0TWFw
LT5yZW1vdmUodGhpcyk7CisgICAgaWYgKGdPdmVycmlkZUNvbnRhaW5pbmdCbG9ja0NvbnRlbnRM
b2dpY2FsSGVpZ2h0TWFwKQorICAgICAgICBnT3ZlcnJpZGVDb250YWluaW5nQmxvY2tDb250ZW50
TG9naWNhbEhlaWdodE1hcC0+cmVtb3ZlKHRoaXMpOwogfQogCiBMYXlvdXRVbml0IFJlbmRlckJv
eDo6YWRqdXN0Qm9yZGVyQm94TG9naWNhbFdpZHRoRm9yQm94U2l6aW5nKExheW91dFVuaXQgd2lk
dGgpIGNvbnN0CkBAIC0xODQyLDcgKzE4NDIsNyBAQCBMYXlvdXRVbml0IFJlbmRlckJveDo6c2hy
aW5rTG9naWNhbFdpZHRoVG9Bdm9pZEZsb2F0cyhMYXlvdXRVbml0IGNoaWxkTWFyZ2luU3Rhcgog
CiBMYXlvdXRVbml0IFJlbmRlckJveDo6Y29udGFpbmluZ0Jsb2NrTG9naWNhbFdpZHRoRm9yQ29u
dGVudCgpIGNvbnN0CiB7Ci0gICAgaWYgKGhhc092ZXJyaWRlQ29udGFpbmluZ0Jsb2NrTG9naWNh
bFdpZHRoKCkpIHsKKyAgICBpZiAoaGFzT3ZlcnJpZGVDb250YWluaW5nQmxvY2tDb250ZW50TG9n
aWNhbFdpZHRoKCkpIHsKICAgICAgICAgaWYgKGF1dG8gb3ZlcnJpZGVMb2dpY2FsV2lkdGggPSBv
dmVycmlkZUNvbnRhaW5pbmdCbG9ja0NvbnRlbnRMb2dpY2FsV2lkdGgoKSkKICAgICAgICAgICAg
IHJldHVybiBvdmVycmlkZUxvZ2ljYWxXaWR0aC52YWx1ZSgpOwogICAgIH0KQEAgLTE4NTQsNyAr
MTg1NCw3IEBAIExheW91dFVuaXQgUmVuZGVyQm94Ojpjb250YWluaW5nQmxvY2tMb2dpY2FsV2lk
dGhGb3JDb250ZW50KCkgY29uc3QKIAogTGF5b3V0VW5pdCBSZW5kZXJCb3g6OmNvbnRhaW5pbmdC
bG9ja0xvZ2ljYWxIZWlnaHRGb3JDb250ZW50KEF2YWlsYWJsZUxvZ2ljYWxIZWlnaHRUeXBlIGhl
aWdodFR5cGUpIGNvbnN0CiB7Ci0gICAgaWYgKGhhc092ZXJyaWRlQ29udGFpbmluZ0Jsb2NrTG9n
aWNhbEhlaWdodCgpKSB7CisgICAgaWYgKGhhc092ZXJyaWRlQ29udGFpbmluZ0Jsb2NrQ29udGVu
dExvZ2ljYWxIZWlnaHQoKSkgewogICAgICAgICBpZiAoYXV0byBvdmVycmlkZUxvZ2ljYWxIZWln
aHQgPSBvdmVycmlkZUNvbnRhaW5pbmdCbG9ja0NvbnRlbnRMb2dpY2FsSGVpZ2h0KCkpCiAgICAg
ICAgICAgICByZXR1cm4gb3ZlcnJpZGVMb2dpY2FsSGVpZ2h0LnZhbHVlKCk7CiAgICAgfQpAQCAt
MTg5NSwxNCArMTg5NSwxNCBAQCBMYXlvdXRVbml0IFJlbmRlckJveDo6Y29udGFpbmluZ0Jsb2Nr
QXZhaWxhYmxlTGluZVdpZHRoSW5GcmFnbWVudChSZW5kZXJGcmFnbWVudAogCiBMYXlvdXRVbml0
IFJlbmRlckJveDo6cGVycGVuZGljdWxhckNvbnRhaW5pbmdCbG9ja0xvZ2ljYWxIZWlnaHQoKSBj
b25zdAogewotICAgIGlmIChoYXNPdmVycmlkZUNvbnRhaW5pbmdCbG9ja0xvZ2ljYWxIZWlnaHQo
KSkgeworICAgIGlmIChoYXNPdmVycmlkZUNvbnRhaW5pbmdCbG9ja0NvbnRlbnRMb2dpY2FsSGVp
Z2h0KCkpIHsKICAgICAgICAgaWYgKGF1dG8gb3ZlcnJpZGVMb2dpY2FsSGVpZ2h0ID0gb3ZlcnJp
ZGVDb250YWluaW5nQmxvY2tDb250ZW50TG9naWNhbEhlaWdodCgpKQogICAgICAgICAgICAgcmV0
dXJuIG92ZXJyaWRlTG9naWNhbEhlaWdodC52YWx1ZSgpOwogICAgIH0KIAogICAgIFJlbmRlckJs
b2NrKiBjYiA9IGNvbnRhaW5pbmdCbG9jaygpOwotICAgIGlmIChjYi0+aGFzT3ZlcnJpZGVMb2dp
Y2FsQ29udGVudEhlaWdodCgpKQotICAgICAgICByZXR1cm4gY2ItPm92ZXJyaWRlTG9naWNhbENv
bnRlbnRIZWlnaHQoKTsKKyAgICBpZiAoY2ItPmhhc092ZXJyaWRlQ29udGVudExvZ2ljYWxIZWln
aHQoKSkKKyAgICAgICAgcmV0dXJuIGNiLT5vdmVycmlkZUNvbnRlbnRMb2dpY2FsSGVpZ2h0KCk7
CiAKICAgICBjb25zdCBSZW5kZXJTdHlsZSYgY29udGFpbmluZ0Jsb2NrU3R5bGUgPSBjYi0+c3R5
bGUoKTsKICAgICBMZW5ndGggbG9naWNhbEhlaWdodExlbmd0aCA9IGNvbnRhaW5pbmdCbG9ja1N0
eWxlLmxvZ2ljYWxIZWlnaHQoKTsKQEAgLTIzMTIsOCArMjMxMiw4IEBAIHZvaWQgUmVuZGVyQm94
Ojpjb21wdXRlTG9naWNhbFdpZHRoSW5GcmFnbWVudChMb2dpY2FsRXh0ZW50Q29tcHV0ZWRWYWx1
ZXMmIGNvbXB1CiAgICAgLy8gd2lkdGguICBVc2UgdGhlIHdpZHRoIGZyb20gdGhlIHN0eWxlIGNv
bnRleHQuCiAgICAgLy8gRklYTUU6IEFjY291bnQgZm9yIGJsb2NrLWZsb3cgaW4gZmxleGlibGUg
Ym94ZXMuCiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ2
NDE4Ci0gICAgaWYgKGhhc092ZXJyaWRlTG9naWNhbENvbnRlbnRXaWR0aCgpICYmIChpc1J1YnlS
dW4oKSB8fCBzdHlsZSgpLmJvcmRlckZpdCgpID09IEJvcmRlckZpdExpbmVzIHx8IChwYXJlbnQo
KS0+aXNGbGV4aWJsZUJveEluY2x1ZGluZ0RlcHJlY2F0ZWQoKSkpKSB7Ci0gICAgICAgIGNvbXB1
dGVkVmFsdWVzLm1fZXh0ZW50ID0gb3ZlcnJpZGVMb2dpY2FsQ29udGVudFdpZHRoKCkgKyBib3Jk
ZXJBbmRQYWRkaW5nTG9naWNhbFdpZHRoKCk7CisgICAgaWYgKGhhc092ZXJyaWRlQ29udGVudExv
Z2ljYWxXaWR0aCgpICYmIChpc1J1YnlSdW4oKSB8fCBzdHlsZSgpLmJvcmRlckZpdCgpID09IEJv
cmRlckZpdExpbmVzIHx8IChwYXJlbnQoKS0+aXNGbGV4aWJsZUJveEluY2x1ZGluZ0RlcHJlY2F0
ZWQoKSkpKSB7CisgICAgICAgIGNvbXB1dGVkVmFsdWVzLm1fZXh0ZW50ID0gb3ZlcnJpZGVDb250
ZW50TG9naWNhbFdpZHRoKCkgKyBib3JkZXJBbmRQYWRkaW5nTG9naWNhbFdpZHRoKCk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKQEAgLTI3MTYsOCArMjcxNiw4IEBAIFJlbmRlckJveDo6TG9n
aWNhbEV4dGVudENvbXB1dGVkVmFsdWVzIFJlbmRlckJveDo6Y29tcHV0ZUxvZ2ljYWxIZWlnaHQo
TGF5b3V0VW5pCiAgICAgICAgIC8vIGdyYWIgb3VyIGNhY2hlZCBmbGV4aWJsZSBoZWlnaHQuCiAg
ICAgICAgIC8vIEZJWE1FOiBBY2NvdW50IGZvciBibG9jay1mbG93IGluIGZsZXhpYmxlIGJveGVz
LgogICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDY0
MTgKLSAgICAgICAgaWYgKGhhc092ZXJyaWRlTG9naWNhbENvbnRlbnRIZWlnaHQoKSAmJiAocGFy
ZW50KCktPmlzRmxleGlibGVCb3hJbmNsdWRpbmdEZXByZWNhdGVkKCkgfHwgcGFyZW50KCktPmlz
UmVuZGVyR3JpZCgpKSkgewotICAgICAgICAgICAgaCA9IExlbmd0aChvdmVycmlkZUxvZ2ljYWxD
b250ZW50SGVpZ2h0KCksIEZpeGVkKTsKKyAgICAgICAgaWYgKGhhc092ZXJyaWRlQ29udGVudExv
Z2ljYWxIZWlnaHQoKSAmJiAocGFyZW50KCktPmlzRmxleGlibGVCb3hJbmNsdWRpbmdEZXByZWNh
dGVkKCkgfHwgcGFyZW50KCktPmlzUmVuZGVyR3JpZCgpKSkgeworICAgICAgICAgICAgaCA9IExl
bmd0aChvdmVycmlkZUNvbnRlbnRMb2dpY2FsSGVpZ2h0KCksIEZpeGVkKTsKICAgICAgICAgfSBl
bHNlIGlmICh0cmVhdEFzUmVwbGFjZWQpCiAgICAgICAgICAgICBoID0gTGVuZ3RoKGNvbXB1dGVS
ZXBsYWNlZExvZ2ljYWxIZWlnaHQoKSwgRml4ZWQpOwogICAgICAgICBlbHNlIHsKQEAgLTI5MDQs
MTcgKzI5MDQsMTcgQEAgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBSZW5kZXJCb3g6OmNvbXB1
dGVQZXJjZW50YWdlTG9naWNhbEhlaWdodChjb25zdCBMZW5ndGgKIAogICAgIGlmIChpc0hvcml6
b250YWwgIT0gY2ItPmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkpCiAgICAgICAgIGF2YWlsYWJs
ZUhlaWdodCA9IGNvbnRhaW5pbmdCbG9ja0NoaWxkLT5jb250YWluaW5nQmxvY2tMb2dpY2FsV2lk
dGhGb3JDb250ZW50KCk7Ci0gICAgZWxzZSBpZiAoaGFzT3ZlcnJpZGVDb250YWluaW5nQmxvY2tM
b2dpY2FsSGVpZ2h0KCkpCisgICAgZWxzZSBpZiAoaGFzT3ZlcnJpZGVDb250YWluaW5nQmxvY2tD
b250ZW50TG9naWNhbEhlaWdodCgpKQogICAgICAgICBhdmFpbGFibGVIZWlnaHQgPSBvdmVycmlk
ZUNvbnRhaW5pbmdCbG9ja0NvbnRlbnRMb2dpY2FsSGVpZ2h0KCk7CiAgICAgZWxzZSBpZiAoaXM8
UmVuZGVyVGFibGVDZWxsPigqY2IpKSB7CiAgICAgICAgIGlmICghc2tpcHBlZEF1dG9IZWlnaHRD
b250YWluaW5nQmxvY2spIHsKICAgICAgICAgICAgIC8vIFRhYmxlIGNlbGxzIHZpb2xhdGUgd2hh
dCB0aGUgQ1NTIHNwZWMgc2F5cyB0byBkbyB3aXRoIGhlaWdodHMuIEJhc2ljYWxseSB3ZQogICAg
ICAgICAgICAgLy8gZG9uJ3QgY2FyZSBpZiB0aGUgY2VsbCBzcGVjaWZpZWQgYSBoZWlnaHQgb3Ig
bm90LiBXZSBqdXN0IGFsd2F5cyBtYWtlIG91cnNlbHZlcwogICAgICAgICAgICAgLy8gYmUgYSBw
ZXJjZW50YWdlIG9mIHRoZSBjZWxsJ3MgY3VycmVudCBjb250ZW50IGhlaWdodC4KLSAgICAgICAg
ICAgIGlmICghY2ItPmhhc092ZXJyaWRlTG9naWNhbENvbnRlbnRIZWlnaHQoKSkKKyAgICAgICAg
ICAgIGlmICghY2ItPmhhc092ZXJyaWRlQ29udGVudExvZ2ljYWxIZWlnaHQoKSkKICAgICAgICAg
ICAgICAgICByZXR1cm4gdGFibGVDZWxsU2hvdWxkSGF2ZVplcm9Jbml0aWFsU2l6ZSgqY2IsICp0
aGlzLCBzY3JvbGxzT3ZlcmZsb3dZKCkpID8gc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PigwKSA6
IHN0ZDo6bnVsbG9wdDsKIAotICAgICAgICAgICAgYXZhaWxhYmxlSGVpZ2h0ID0gY2ItPm92ZXJy
aWRlTG9naWNhbENvbnRlbnRIZWlnaHQoKTsKKyAgICAgICAgICAgIGF2YWlsYWJsZUhlaWdodCA9
IGNiLT5vdmVycmlkZUNvbnRlbnRMb2dpY2FsSGVpZ2h0KCk7CiAgICAgICAgIH0KICAgICB9IGVs
c2UKICAgICAgICAgYXZhaWxhYmxlSGVpZ2h0ID0gY2ItPmF2YWlsYWJsZUxvZ2ljYWxIZWlnaHRG
b3JQZXJjZW50YWdlQ29tcHV0YXRpb24oKTsKQEAgLTI5MjQsMTMgKzI5MjQsMTMgQEAgc3RkOjpv
cHRpb25hbDxMYXlvdXRVbml0PiBSZW5kZXJCb3g6OmNvbXB1dGVQZXJjZW50YWdlTG9naWNhbEhl
aWdodChjb25zdCBMZW5ndGgKIAogICAgIExheW91dFVuaXQgcmVzdWx0ID0gdmFsdWVGb3JMZW5n
dGgoaGVpZ2h0LCBhdmFpbGFibGVIZWlnaHQudmFsdWUoKSAtIHJvb3RNYXJnaW5Cb3JkZXJQYWRk
aW5nSGVpZ2h0ICsgKGlzVGFibGUoKSAmJiBpc091dE9mRmxvd1Bvc2l0aW9uZWQoKSA/IGNiLT5w
YWRkaW5nQmVmb3JlKCkgKyBjYi0+cGFkZGluZ0FmdGVyKCkgOiBMYXlvdXRVbml0KCkpKTsKICAg
ICAKLSAgICAvLyB8b3ZlcnJpZGVMb2dpY2FsQ29udGVudEhlaWdodHwgaXMgdGhlIG1heGltdW0g
aGVpZ2h0IG1hZGUgYXZhaWxhYmxlIGJ5IHRoZQorICAgIC8vIHxvdmVycmlkZUNvbnRlbnRMb2dp
Y2FsSGVpZ2h0fCBpcyB0aGUgbWF4aW11bSBoZWlnaHQgbWFkZSBhdmFpbGFibGUgYnkgdGhlCiAg
ICAgLy8gY2VsbCB0byBpdHMgcGVyY2VudCBoZWlnaHQgY2hpbGRyZW4gd2hlbiB3ZSBkZWNpZGUg
dGhleSBjYW4gZGV0ZXJtaW5lIHRoZQogICAgIC8vIGhlaWdodCBvZiB0aGUgY2VsbC4gSWYgdGhl
IHBlcmNlbnQgaGVpZ2h0IGNoaWxkIGlzIGJveC1zaXppbmc6Y29udGVudC1ib3gKICAgICAvLyB0
aGVuIHdlIG11c3Qgc3VidHJhY3QgdGhlIGJvcmRlciBhbmQgcGFkZGluZyBmcm9tIHRoZSBjZWxs
J3MKLSAgICAvLyB8YXZhaWxhYmxlSGVpZ2h0fCAoZ2l2ZW4gYnkgfG92ZXJyaWRlTG9naWNhbENv
bnRlbnRIZWlnaHR8KSB0byBhcnJpdmUKKyAgICAvLyB8YXZhaWxhYmxlSGVpZ2h0fCAoZ2l2ZW4g
YnkgfG92ZXJyaWRlQ29udGVudExvZ2ljYWxIZWlnaHR8KSB0byBhcnJpdmUKICAgICAvLyBhdCB0
aGUgY2hpbGQncyBjb21wdXRlZCBoZWlnaHQuCi0gICAgYm9vbCBzdWJ0cmFjdEJvcmRlckFuZFBh
ZGRpbmcgPSBpc1RhYmxlKCkgfHwgKGlzPFJlbmRlclRhYmxlQ2VsbD4oKmNiKSAmJiAhc2tpcHBl
ZEF1dG9IZWlnaHRDb250YWluaW5nQmxvY2sgJiYgY2ItPmhhc092ZXJyaWRlTG9naWNhbENvbnRl
bnRIZWlnaHQoKSk7CisgICAgYm9vbCBzdWJ0cmFjdEJvcmRlckFuZFBhZGRpbmcgPSBpc1RhYmxl
KCkgfHwgKGlzPFJlbmRlclRhYmxlQ2VsbD4oKmNiKSAmJiAhc2tpcHBlZEF1dG9IZWlnaHRDb250
YWluaW5nQmxvY2sgJiYgY2ItPmhhc092ZXJyaWRlQ29udGVudExvZ2ljYWxIZWlnaHQoKSk7CiAg
ICAgaWYgKHN1YnRyYWN0Qm9yZGVyQW5kUGFkZGluZykgewogICAgICAgICByZXN1bHQgLT0gYm9y
ZGVyQW5kUGFkZGluZ0xvZ2ljYWxIZWlnaHQoKTsKICAgICAgICAgcmV0dXJuIHN0ZDo6bWF4KExh
eW91dFVuaXQoKSwgcmVzdWx0KTsKQEAgLTMwNjksOCArMzA2OSw4IEBAIExheW91dFVuaXQgUmVu
ZGVyQm94Ojpjb21wdXRlUmVwbGFjZWRMb2dpY2FsSGVpZ2h0VXNpbmcoU2l6ZVR5cGUgaGVpZ2h0
VHlwZSwgTGVuCiAgICAgICAgICAgICAgICAgYmxvY2stPmFkZFBlcmNlbnRIZWlnaHREZXNjZW5k
YW50KCpjb25zdF9jYXN0PFJlbmRlckJveCo+KHRoaXMpKTsKICAgICAgICAgICAgICAgICBpZiAo
YmxvY2stPmlzRmxleEl0ZW0oKSkKICAgICAgICAgICAgICAgICAgICAgc3RyZXRjaGVkSGVpZ2h0
ID0gZG93bmNhc3Q8UmVuZGVyRmxleGlibGVCb3g+KGJsb2NrLT5wYXJlbnQoKSktPmNoaWxkTG9n
aWNhbEhlaWdodEZvclBlcmNlbnRhZ2VSZXNvbHV0aW9uKCpibG9jayk7Ci0gICAgICAgICAgICAg
ICAgZWxzZSBpZiAoYmxvY2stPmlzR3JpZEl0ZW0oKSAmJiBibG9jay0+aGFzT3ZlcnJpZGVMb2dp
Y2FsQ29udGVudEhlaWdodCgpKQotICAgICAgICAgICAgICAgICAgICBzdHJldGNoZWRIZWlnaHQg
PSBibG9jay0+b3ZlcnJpZGVMb2dpY2FsQ29udGVudEhlaWdodCgpOworICAgICAgICAgICAgICAg
IGVsc2UgaWYgKGJsb2NrLT5pc0dyaWRJdGVtKCkgJiYgYmxvY2stPmhhc092ZXJyaWRlQ29udGVu
dExvZ2ljYWxIZWlnaHQoKSkKKyAgICAgICAgICAgICAgICAgICAgc3RyZXRjaGVkSGVpZ2h0ID0g
YmxvY2stPm92ZXJyaWRlQ29udGVudExvZ2ljYWxIZWlnaHQoKTsKICAgICAgICAgICAgIH0KIAog
ICAgICAgICAgICAgLy8gRklYTUU6IFRoaXMgY2FsY3VsYXRpb24gaXMgbm90IHBhdGNoZWQgZm9y
IGJsb2NrLWZsb3cgeWV0LgpAQCAtMzEzNSw4ICszMTM1LDggQEAgTGF5b3V0VW5pdCBSZW5kZXJC
b3g6OmF2YWlsYWJsZUxvZ2ljYWxIZWlnaHRVc2luZyhjb25zdCBMZW5ndGgmIGgsIEF2YWlsYWJs
ZUxvZ2kKICAgICAvLyBhcnRpZmljaWFsbHkuICBXZSdyZSBnb2luZyB0byByZWx5IG9uIHRoaXMg
Y2VsbCBnZXR0aW5nIGV4cGFuZGVkIHRvIHNvbWUgbmV3CiAgICAgLy8gaGVpZ2h0LCBhbmQgdGhl
biB3aGVuIHdlIGxheSBvdXQgYWdhaW4gd2UnbGwgdXNlIHRoZSBjYWxjdWxhdGlvbiBiZWxvdy4K
ICAgICBpZiAoaXNUYWJsZUNlbGwoKSAmJiAoaC5pc0F1dG8oKSB8fCBoLmlzUGVyY2VudE9yQ2Fs
Y3VsYXRlZCgpKSkgewotICAgICAgICBpZiAoaGFzT3ZlcnJpZGVMb2dpY2FsQ29udGVudEhlaWdo
dCgpKQotICAgICAgICAgICAgcmV0dXJuIG92ZXJyaWRlTG9naWNhbENvbnRlbnRIZWlnaHQoKTsK
KyAgICAgICAgaWYgKGhhc092ZXJyaWRlQ29udGVudExvZ2ljYWxIZWlnaHQoKSkKKyAgICAgICAg
ICAgIHJldHVybiBvdmVycmlkZUNvbnRlbnRMb2dpY2FsSGVpZ2h0KCk7CiAgICAgICAgIHJldHVy
biBsb2dpY2FsSGVpZ2h0KCkgLSBib3JkZXJBbmRQYWRkaW5nTG9naWNhbEhlaWdodCgpOwogICAg
IH0KIApAQCAtMzIwNSw3ICszMjA1LDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJCb3g6OmNvbnRhaW5p
bmdCbG9ja0xvZ2ljYWxXaWR0aEZvclBvc2l0aW9uZWQoY29uc3QgUmVuZGVyQm94TW8KICAgICBp
ZiAoY2hlY2tGb3JQZXJwZW5kaWN1bGFyV3JpdGluZ01vZGUgJiYgY29udGFpbmluZ0Jsb2NrLmlz
SG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgIT0gaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSkKICAg
ICAgICAgcmV0dXJuIGNvbnRhaW5pbmdCbG9ja0xvZ2ljYWxIZWlnaHRGb3JQb3NpdGlvbmVkKGNv
bnRhaW5pbmdCbG9jaywgZmFsc2UpOwogCi0gICAgaWYgKGhhc092ZXJyaWRlQ29udGFpbmluZ0Js
b2NrTG9naWNhbFdpZHRoKCkpIHsKKyAgICBpZiAoaGFzT3ZlcnJpZGVDb250YWluaW5nQmxvY2tD
b250ZW50TG9naWNhbFdpZHRoKCkpIHsKICAgICAgICAgaWYgKGF1dG8gb3ZlcnJpZGVMb2dpY2Fs
V2lkdGggPSBvdmVycmlkZUNvbnRhaW5pbmdCbG9ja0NvbnRlbnRMb2dpY2FsV2lkdGgoKSkKICAg
ICAgICAgICAgIHJldHVybiBvdmVycmlkZUxvZ2ljYWxXaWR0aC52YWx1ZSgpOwogICAgIH0KQEAg
LTMyNzAsNyArMzI3MCw3IEBAIExheW91dFVuaXQgUmVuZGVyQm94Ojpjb250YWluaW5nQmxvY2tM
b2dpY2FsSGVpZ2h0Rm9yUG9zaXRpb25lZChjb25zdCBSZW5kZXJCb3hNCiAgICAgaWYgKGNoZWNr
Rm9yUGVycGVuZGljdWxhcldyaXRpbmdNb2RlICYmIGNvbnRhaW5pbmdCbG9jay5pc0hvcml6b250
YWxXcml0aW5nTW9kZSgpICE9IGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkpCiAgICAgICAgIHJl
dHVybiBjb250YWluaW5nQmxvY2tMb2dpY2FsV2lkdGhGb3JQb3NpdGlvbmVkKGNvbnRhaW5pbmdC
bG9jaywgbnVsbHB0ciwgZmFsc2UpOwogCi0gICAgaWYgKGhhc092ZXJyaWRlQ29udGFpbmluZ0Js
b2NrTG9naWNhbEhlaWdodCgpKSB7CisgICAgaWYgKGhhc092ZXJyaWRlQ29udGFpbmluZ0Jsb2Nr
Q29udGVudExvZ2ljYWxIZWlnaHQoKSkgewogICAgICAgICBpZiAoYXV0byBvdmVycmlkZUxvZ2lj
YWxIZWlnaHQgPSBvdmVycmlkZUNvbnRhaW5pbmdCbG9ja0NvbnRlbnRMb2dpY2FsSGVpZ2h0KCkp
CiAgICAgICAgICAgICByZXR1cm4gb3ZlcnJpZGVMb2dpY2FsSGVpZ2h0LnZhbHVlKCk7CiAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oCmluZGV4IDhmY2RmZDQ4MWI2YjlhZjI2
ODlhZTM2YTJmOTQ2ZDhlYjg4ZTY2NmYuLjExODc3MTY0NjRlMGFhNzBkZDI3NWYyZTIyOTdiZTBj
NjkzZWRlMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3gu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgKQEAgLTMwMiwyMyAr
MzAyLDIzIEBAIHB1YmxpYzoKICAgICAvLyB0aGUgYm9yZGVyLWJveCBoZWlnaHQvd2lkdGggbGlr
ZSB0aGUgcmVndWxhciBoZWlnaHQvd2lkdGggYWNjZXNzb3JzIG9uIFJlbmRlckJveC4KICAgICAv
LyBSaWdodCBub3csIHRoZXNlIGFyZSBkaWZmZXJlbnQgdGhhbiBjb250ZW50SGVpZ2h0L2NvbnRl
bnRXaWR0aCBiZWNhdXNlIHRoZXkgc3RpbGwKICAgICAvLyBpbmNsdWRlIHRoZSBzY3JvbGxiYXIg
aGVpZ2h0L3dpZHRoLgotICAgIExheW91dFVuaXQgb3ZlcnJpZGVMb2dpY2FsQ29udGVudFdpZHRo
KCkgY29uc3Q7Ci0gICAgTGF5b3V0VW5pdCBvdmVycmlkZUxvZ2ljYWxDb250ZW50SGVpZ2h0KCkg
Y29uc3Q7Ci0gICAgYm9vbCBoYXNPdmVycmlkZUxvZ2ljYWxDb250ZW50SGVpZ2h0KCkgY29uc3Q7
Ci0gICAgYm9vbCBoYXNPdmVycmlkZUxvZ2ljYWxDb250ZW50V2lkdGgoKSBjb25zdDsKLSAgICB2
b2lkIHNldE92ZXJyaWRlTG9naWNhbENvbnRlbnRIZWlnaHQoTGF5b3V0VW5pdCk7Ci0gICAgdm9p
ZCBzZXRPdmVycmlkZUxvZ2ljYWxDb250ZW50V2lkdGgoTGF5b3V0VW5pdCk7Ci0gICAgdm9pZCBj
bGVhck92ZXJyaWRlU2l6ZSgpOwotICAgIHZvaWQgY2xlYXJPdmVycmlkZUxvZ2ljYWxDb250ZW50
SGVpZ2h0KCk7Ci0gICAgdm9pZCBjbGVhck92ZXJyaWRlTG9naWNhbENvbnRlbnRXaWR0aCgpOwor
ICAgIExheW91dFVuaXQgb3ZlcnJpZGVDb250ZW50TG9naWNhbFdpZHRoKCkgY29uc3Q7CisgICAg
TGF5b3V0VW5pdCBvdmVycmlkZUNvbnRlbnRMb2dpY2FsSGVpZ2h0KCkgY29uc3Q7CisgICAgYm9v
bCBoYXNPdmVycmlkZUNvbnRlbnRMb2dpY2FsSGVpZ2h0KCkgY29uc3Q7CisgICAgYm9vbCBoYXNP
dmVycmlkZUNvbnRlbnRMb2dpY2FsV2lkdGgoKSBjb25zdDsKKyAgICB2b2lkIHNldE92ZXJyaWRl
Q29udGVudExvZ2ljYWxIZWlnaHQoTGF5b3V0VW5pdCk7CisgICAgdm9pZCBzZXRPdmVycmlkZUNv
bnRlbnRMb2dpY2FsV2lkdGgoTGF5b3V0VW5pdCk7CisgICAgdm9pZCBjbGVhck92ZXJyaWRlQ29u
dGVudFNpemUoKTsKKyAgICB2b2lkIGNsZWFyT3ZlcnJpZGVDb250ZW50TG9naWNhbEhlaWdodCgp
OworICAgIHZvaWQgY2xlYXJPdmVycmlkZUNvbnRlbnRMb2dpY2FsV2lkdGgoKTsKIAogICAgIHN0
ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gb3ZlcnJpZGVDb250YWluaW5nQmxvY2tDb250ZW50TG9n
aWNhbFdpZHRoKCkgY29uc3Q7CiAgICAgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBvdmVycmlk
ZUNvbnRhaW5pbmdCbG9ja0NvbnRlbnRMb2dpY2FsSGVpZ2h0KCkgY29uc3Q7Ci0gICAgYm9vbCBo
YXNPdmVycmlkZUNvbnRhaW5pbmdCbG9ja0xvZ2ljYWxXaWR0aCgpIGNvbnN0OwotICAgIGJvb2wg
aGFzT3ZlcnJpZGVDb250YWluaW5nQmxvY2tMb2dpY2FsSGVpZ2h0KCkgY29uc3Q7CisgICAgYm9v
bCBoYXNPdmVycmlkZUNvbnRhaW5pbmdCbG9ja0NvbnRlbnRMb2dpY2FsV2lkdGgoKSBjb25zdDsK
KyAgICBib29sIGhhc092ZXJyaWRlQ29udGFpbmluZ0Jsb2NrQ29udGVudExvZ2ljYWxIZWlnaHQo
KSBjb25zdDsKICAgICB2b2lkIHNldE92ZXJyaWRlQ29udGFpbmluZ0Jsb2NrQ29udGVudExvZ2lj
YWxXaWR0aChzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+KTsKICAgICB2b2lkIHNldE92ZXJyaWRl
Q29udGFpbmluZ0Jsb2NrQ29udGVudExvZ2ljYWxIZWlnaHQoc3RkOjpvcHRpb25hbDxMYXlvdXRV
bml0Pik7Ci0gICAgdm9pZCBjbGVhckNvbnRhaW5pbmdCbG9ja092ZXJyaWRlU2l6ZSgpOworICAg
IHZvaWQgY2xlYXJPdmVycmlkZUNvbnRhaW5pbmdCbG9ja0NvbnRlbnRTaXplKCk7CiAgICAgdm9p
ZCBjbGVhck92ZXJyaWRlQ29udGFpbmluZ0Jsb2NrQ29udGVudExvZ2ljYWxIZWlnaHQoKTsKIAog
ICAgIExheW91dFNpemUgb2Zmc2V0RnJvbUNvbnRhaW5lcihSZW5kZXJFbGVtZW50JiwgY29uc3Qg
TGF5b3V0UG9pbnQmLCBib29sKiBvZmZzZXREZXBlbmRzT25Qb2ludCA9IG51bGxwdHIpIGNvbnN0
IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJv
eE1vZGVsT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2Rl
bE9iamVjdC5jcHAKaW5kZXggZTAwZTYyNGM0ZmI4MmVjODU5OGNhMjYzYjA5ZDA3MGU1NGIyN2I3
Yi4uNWQxZGZkNDk3YjIzZTYzMjc0OWUyMTM4MDM1YmQ2MDQwZDE0ODE2ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCkBAIC0zMzMs
NyArMzMzLDcgQEAgYm9vbCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6aGFzQXV0b0hlaWdodE9yQ29u
dGFpbmluZ0Jsb2NrV2l0aEF1dG9IZWlnaHQoKSBjb25zdAogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIH0KICAgICAKLSAgICBpZiAodGhpc0JveCAmJiB0aGlzQm94LT5pc0dyaWRJdGVt
KCkgJiYgdGhpc0JveC0+aGFzT3ZlcnJpZGVDb250YWluaW5nQmxvY2tMb2dpY2FsSGVpZ2h0KCkp
CisgICAgaWYgKHRoaXNCb3ggJiYgdGhpc0JveC0+aXNHcmlkSXRlbSgpICYmIHRoaXNCb3gtPmhh
c092ZXJyaWRlQ29udGFpbmluZ0Jsb2NrQ29udGVudExvZ2ljYWxIZWlnaHQoKSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIAogICAgIGlmIChsb2dpY2FsSGVpZ2h0TGVuZ3RoLmlzQXV0bygp
ICYmICFpc091dE9mRmxvd1Bvc2l0aW9uZWRXaXRoSW1wbGljaXRIZWlnaHQoKnRoaXMpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckRlcHJlY2F0ZWRGbGV4aWJs
ZUJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGVwcmVjYXRlZEZsZXhp
YmxlQm94LmNwcAppbmRleCBlNzE1MjE5ZTI2ODg5NjkwZDNiNWM2MWIzZmY3OTdiNzc2M2YxYzE4
Li45MjY2MGM5ZjA4ZDYzNDM0NDY5ZWZhNDhjZmZjZDQ4MTQyZmNlMmE3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94
LmNwcApAQCAtMTUyLDE1ICsxNTIsMTUgQEAgc3RhdGljIGJvb2wgY2hpbGREb2VzTm90QWZmZWN0
V2lkdGhPckZsZXhpbmcoUmVuZGVyT2JqZWN0KiBjaGlsZCkKIAogc3RhdGljIExheW91dFVuaXQg
Y29udGVudFdpZHRoRm9yQ2hpbGQoUmVuZGVyQm94KiBjaGlsZCkKIHsKLSAgICBpZiAoY2hpbGQt
Pmhhc092ZXJyaWRlTG9naWNhbENvbnRlbnRXaWR0aCgpKQotICAgICAgICByZXR1cm4gY2hpbGQt
Pm92ZXJyaWRlTG9naWNhbENvbnRlbnRXaWR0aCgpOworICAgIGlmIChjaGlsZC0+aGFzT3ZlcnJp
ZGVDb250ZW50TG9naWNhbFdpZHRoKCkpCisgICAgICAgIHJldHVybiBjaGlsZC0+b3ZlcnJpZGVD
b250ZW50TG9naWNhbFdpZHRoKCk7CiAgICAgcmV0dXJuIGNoaWxkLT5sb2dpY2FsV2lkdGgoKSAt
IGNoaWxkLT5ib3JkZXJBbmRQYWRkaW5nTG9naWNhbFdpZHRoKCk7CiB9CiAKIHN0YXRpYyBMYXlv
dXRVbml0IGNvbnRlbnRIZWlnaHRGb3JDaGlsZChSZW5kZXJCb3gqIGNoaWxkKQogewotICAgIGlm
IChjaGlsZC0+aGFzT3ZlcnJpZGVMb2dpY2FsQ29udGVudEhlaWdodCgpKQotICAgICAgICByZXR1
cm4gY2hpbGQtPm92ZXJyaWRlTG9naWNhbENvbnRlbnRIZWlnaHQoKTsKKyAgICBpZiAoY2hpbGQt
Pmhhc092ZXJyaWRlQ29udGVudExvZ2ljYWxIZWlnaHQoKSkKKyAgICAgICAgcmV0dXJuIGNoaWxk
LT5vdmVycmlkZUNvbnRlbnRMb2dpY2FsSGVpZ2h0KCk7CiAgICAgcmV0dXJuIGNoaWxkLT5sb2dp
Y2FsSGVpZ2h0KCkgLSBjaGlsZC0+Ym9yZGVyQW5kUGFkZGluZ0xvZ2ljYWxIZWlnaHQoKTsKIH0K
IApAQCAtMzU1LDcgKzM1NSw3IEBAIHN0YXRpYyB2b2lkIGdhdGhlckZsZXhDaGlsZHJlbkluZm8o
RmxleEJveEl0ZXJhdG9yJiBpdGVyYXRvciwgYm9vbCByZWxheW91dENoaWxkCiAgICAgICAgIGlm
ICghY2hpbGREb2VzTm90QWZmZWN0V2lkdGhPckZsZXhpbmcoY2hpbGQpICYmIGNoaWxkLT5zdHls
ZSgpLmJveEZsZXgoKSA+IDAuMGYpIHsKICAgICAgICAgICAgIC8vIFdlIGFsd2F5cyBoYXZlIHRv
IGxheSBvdXQgZmxleGlibGUgb2JqZWN0cyBhZ2Fpbiwgc2luY2UgdGhlIGZsZXggZGlzdHJpYnV0
aW9uCiAgICAgICAgICAgICAvLyBtYXkgaGF2ZSBjaGFuZ2VkLCBhbmQgd2UgbmVlZCB0byByZWFs
bG9jYXRlIHNwYWNlLgotICAgICAgICAgICAgY2hpbGQtPmNsZWFyT3ZlcnJpZGVTaXplKCk7Cisg
ICAgICAgICAgICBjaGlsZC0+Y2xlYXJPdmVycmlkZUNvbnRlbnRTaXplKCk7CiAgICAgICAgICAg
ICBpZiAoIXJlbGF5b3V0Q2hpbGRyZW4pCiAgICAgICAgICAgICAgICAgY2hpbGQtPnNldENoaWxk
TmVlZHNMYXlvdXQoTWFya09ubHlUaGlzKTsKICAgICAgICAgICAgIGhhdmVGbGV4ID0gdHJ1ZTsK
QEAgLTU4Myw3ICs1ODMsNyBAQCB2b2lkIFJlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveDo6bGF5
b3V0SG9yaXpvbnRhbEJveChib29sIHJlbGF5b3V0Q2hpbGRyZW4pCiAgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAoYWxsb3dlZENoaWxkRmxleChjaGlsZCwgZXhwYW5kaW5nLCBpKSkgewogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIExheW91dFVuaXQgc3BhY2VBZGQgPSBMYXlvdXRVbml0
KHNwYWNlQXZhaWxhYmxlVGhpc1Bhc3MgKiAoY2hpbGQtPnN0eWxlKCkuYm94RmxleCgpIC8gdG90
YWxGbGV4KSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNwYWNlQWRkKSB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkLT5zZXRPdmVycmlkZUxvZ2ljYWxD
b250ZW50V2lkdGgoY29udGVudFdpZHRoRm9yQ2hpbGQoY2hpbGQpICsgc3BhY2VBZGQpOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZC0+c2V0T3ZlcnJpZGVDb250ZW50TG9n
aWNhbFdpZHRoKGNvbnRlbnRXaWR0aEZvckNoaWxkKGNoaWxkKSArIHNwYWNlQWRkKTsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxleGluZ0NoaWxkcmVuID0gdHJ1ZTsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVsYXlvdXRDaGlsZHJlbiA9IHRydWU7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfQpAQCAtNjAwLDcgKzYwMCw3IEBAIHZvaWQgUmVuZGVy
RGVwcmVjYXRlZEZsZXhpYmxlQm94OjpsYXlvdXRIb3Jpem9udGFsQm94KGJvb2wgcmVsYXlvdXRD
aGlsZHJlbikKICAgICAgICAgICAgICAgICAgICAgICAgIExheW91dFVuaXQgc3BhY2VBZGQgPSBn
cm91cFJlbWFpbmluZ1NwYWNlID4gMCA/IDEgOiAtMTsKICAgICAgICAgICAgICAgICAgICAgICAg
IGZvciAoUmVuZGVyQm94KiBjaGlsZCA9IGl0ZXJhdG9yLmZpcnN0KCk7IGNoaWxkICYmIGdyb3Vw
UmVtYWluaW5nU3BhY2U7IGNoaWxkID0gaXRlcmF0b3IubmV4dCgpKSB7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKGFsbG93ZWRDaGlsZEZsZXgoY2hpbGQsIGV4cGFuZGluZywgaSkp
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGQtPnNldE92ZXJyaWRlTG9n
aWNhbENvbnRlbnRXaWR0aChjb250ZW50V2lkdGhGb3JDaGlsZChjaGlsZCkgKyBzcGFjZUFkZCk7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkLT5zZXRPdmVycmlkZUNvbnRl
bnRMb2dpY2FsV2lkdGgoY29udGVudFdpZHRoRm9yQ2hpbGQoY2hpbGQpICsgc3BhY2VBZGQpOwog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGV4aW5nQ2hpbGRyZW4gPSB0cnVlOwog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWxheW91dENoaWxkcmVuID0gdHJ1ZTsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVtYWluaW5nU3BhY2UgLT0gc3BhY2VB
ZGQ7CkBAIC04NDAsNyArODQwLDcgQEAgdm9pZCBSZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3g6
OmxheW91dFZlcnRpY2FsQm94KGJvb2wgcmVsYXlvdXRDaGlsZHJlbikKICAgICAgICAgICAgICAg
ICAgICAgICAgIGlmIChhbGxvd2VkQ2hpbGRGbGV4KGNoaWxkLCBleHBhbmRpbmcsIGkpKSB7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgTGF5b3V0VW5pdCBzcGFjZUFkZCA9IHNwYWNlQXZh
aWxhYmxlVGhpc1Bhc3MgKiAoY2hpbGQtPnN0eWxlKCkuYm94RmxleCgpIC8gdG90YWxGbGV4KTsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3BhY2VBZGQpIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY2hpbGQtPnNldE92ZXJyaWRlTG9naWNhbENvbnRlbnRIZWln
aHQoY29udGVudEhlaWdodEZvckNoaWxkKGNoaWxkKSArIHNwYWNlQWRkKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY2hpbGQtPnNldE92ZXJyaWRlQ29udGVudExvZ2ljYWxIZWln
aHQoY29udGVudEhlaWdodEZvckNoaWxkKGNoaWxkKSArIHNwYWNlQWRkKTsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZmxleGluZ0NoaWxkcmVuID0gdHJ1ZTsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcmVsYXlvdXRDaGlsZHJlbiA9IHRydWU7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfQpAQCAtODU3LDcgKzg1Nyw3IEBAIHZvaWQgUmVuZGVyRGVwcmVj
YXRlZEZsZXhpYmxlQm94OjpsYXlvdXRWZXJ0aWNhbEJveChib29sIHJlbGF5b3V0Q2hpbGRyZW4p
CiAgICAgICAgICAgICAgICAgICAgICAgICBMYXlvdXRVbml0IHNwYWNlQWRkID0gZ3JvdXBSZW1h
aW5pbmdTcGFjZSA+IDAgPyAxIDogLTE7CiAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKFJl
bmRlckJveCogY2hpbGQgPSBpdGVyYXRvci5maXJzdCgpOyBjaGlsZCAmJiBncm91cFJlbWFpbmlu
Z1NwYWNlOyBjaGlsZCA9IGl0ZXJhdG9yLm5leHQoKSkgewogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGlmIChhbGxvd2VkQ2hpbGRGbGV4KGNoaWxkLCBleHBhbmRpbmcsIGkpKSB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkLT5zZXRPdmVycmlkZUxvZ2ljYWxDb250
ZW50SGVpZ2h0KGNvbnRlbnRIZWlnaHRGb3JDaGlsZChjaGlsZCkgKyBzcGFjZUFkZCk7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkLT5zZXRPdmVycmlkZUNvbnRlbnRMb2dp
Y2FsSGVpZ2h0KGNvbnRlbnRIZWlnaHRGb3JDaGlsZChjaGlsZCkgKyBzcGFjZUFkZCk7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsZXhpbmdDaGlsZHJlbiA9IHRydWU7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbGF5b3V0Q2hpbGRyZW4gPSB0cnVlOwogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW1haW5pbmdTcGFjZSAtPSBzcGFjZUFkZDsK
QEAgLTkzNSw3ICs5MzUsNyBAQCB2b2lkIFJlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveDo6YXBw
bHlMaW5lQ2xhbXAoRmxleEJveEl0ZXJhdG9yJiBpdGVyYXRvciwgYm9vbAogICAgICAgICBpZiAo
Y2hpbGREb2VzTm90QWZmZWN0V2lkdGhPckZsZXhpbmcoY2hpbGQpKQogICAgICAgICAgICAgY29u
dGludWU7CiAKLSAgICAgICAgY2hpbGQtPmNsZWFyT3ZlcnJpZGVTaXplKCk7CisgICAgICAgIGNo
aWxkLT5jbGVhck92ZXJyaWRlQ29udGVudFNpemUoKTsKICAgICAgICAgaWYgKHJlbGF5b3V0Q2hp
bGRyZW4gfHwgKGNoaWxkLT5pc1JlcGxhY2VkKCkgJiYgKGNoaWxkLT5zdHlsZSgpLndpZHRoKCku
aXNQZXJjZW50T3JDYWxjdWxhdGVkKCkgfHwgY2hpbGQtPnN0eWxlKCkuaGVpZ2h0KCkuaXNQZXJj
ZW50T3JDYWxjdWxhdGVkKCkpKQogICAgICAgICAgICAgfHwgKGNoaWxkLT5zdHlsZSgpLmhlaWdo
dCgpLmlzQXV0bygpICYmIGlzPFJlbmRlckJsb2NrRmxvdz4oKmNoaWxkKSkpIHsKICAgICAgICAg
ICAgIGNoaWxkLT5zZXRDaGlsZE5lZWRzTGF5b3V0KE1hcmtPbmx5VGhpcyk7CkBAIC05NzIsNyAr
OTcyLDcgQEAgdm9pZCBSZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3g6OmFwcGx5TGluZUNsYW1w
KEZsZXhCb3hJdGVyYXRvciYgaXRlcmF0b3IsIGJvb2wKICAgICAgICAgICAgIGNvbnRpbnVlOwog
CiAgICAgICAgIGNoaWxkLT5zZXRDaGlsZE5lZWRzTGF5b3V0KE1hcmtPbmx5VGhpcyk7Ci0gICAg
ICAgIGNoaWxkLT5zZXRPdmVycmlkZUxvZ2ljYWxDb250ZW50SGVpZ2h0KG5ld0hlaWdodCAtIGNo
aWxkLT52ZXJ0aWNhbEJvcmRlckFuZFBhZGRpbmdFeHRlbnQoKSk7CisgICAgICAgIGNoaWxkLT5z
ZXRPdmVycmlkZUNvbnRlbnRMb2dpY2FsSGVpZ2h0KG5ld0hlaWdodCAtIGNoaWxkLT52ZXJ0aWNh
bEJvcmRlckFuZFBhZGRpbmdFeHRlbnQoKSk7CiAgICAgICAgIGNoaWxkLT5sYXlvdXRJZk5lZWRl
ZCgpOwogCiAgICAgICAgIC8vIEZJWE1FOiBGb3Igbm93IGRvbid0IHN1cHBvcnQgUlRMLgpAQCAt
MTAzNSw3ICsxMDM1LDcgQEAgdm9pZCBSZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3g6OmNsZWFy
TGluZUNsYW1wKCkKICAgICAgICAgaWYgKGNoaWxkRG9lc05vdEFmZmVjdFdpZHRoT3JGbGV4aW5n
KGNoaWxkKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIGNoaWxkLT5jbGVhck92
ZXJyaWRlU2l6ZSgpOworICAgICAgICBjaGlsZC0+Y2xlYXJPdmVycmlkZUNvbnRlbnRTaXplKCk7
CiAgICAgICAgIGlmICgoY2hpbGQtPmlzUmVwbGFjZWQoKSAmJiAoY2hpbGQtPnN0eWxlKCkud2lk
dGgoKS5pc1BlcmNlbnRPckNhbGN1bGF0ZWQoKSB8fCBjaGlsZC0+c3R5bGUoKS5oZWlnaHQoKS5p
c1BlcmNlbnRPckNhbGN1bGF0ZWQoKSkpCiAgICAgICAgICAgICB8fCAoY2hpbGQtPnN0eWxlKCku
aGVpZ2h0KCkuaXNBdXRvKCkgJiYgaXM8UmVuZGVyQmxvY2tGbG93PigqY2hpbGQpKSkgewogICAg
ICAgICAgICAgY2hpbGQtPnNldENoaWxkTmVlZHNMYXlvdXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guY3BwCmluZGV4IDdiNDAxM2JmNzZiZmM3ZmYx
MjFkMGQ3ZmExNzc3NWYzNTc4ZjAzMWEuLjNmODZmZDA5ZjY4M2QyNWY1M2I3M2NlOTMwNjAyODA4
OWI2MGJlZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4
aWJsZUJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxl
Qm94LmNwcApAQCAtODE3LDcgKzgxNyw3IEBAIHZvaWQgUmVuZGVyRmxleGlibGVCb3g6OmNsZWFy
Q2FjaGVkTWFpblNpemVGb3JDaGlsZChjb25zdCBSZW5kZXJCb3gmIGNoaWxkKQogICAgIAogTGF5
b3V0VW5pdCBSZW5kZXJGbGV4aWJsZUJveDo6Y29tcHV0ZUlubmVyRmxleEJhc2VTaXplRm9yQ2hp
bGQoUmVuZGVyQm94JiBjaGlsZCwgTGF5b3V0VW5pdCBtYWluQXhpc0JvcmRlckFuZFBhZGRpbmcs
IGJvb2wgcmVsYXlvdXRDaGlsZHJlbikKIHsKLSAgICBjaGlsZC5jbGVhck92ZXJyaWRlU2l6ZSgp
OworICAgIGNoaWxkLmNsZWFyT3ZlcnJpZGVDb250ZW50U2l6ZSgpOwogICAgIAogICAgIExlbmd0
aCBmbGV4QmFzaXMgPSBmbGV4QmFzaXNGb3JDaGlsZChjaGlsZCk7CiAgICAgaWYgKG1haW5BeGlz
TGVuZ3RoSXNEZWZpbml0ZShjaGlsZCwgZmxleEJhc2lzKSkKQEAgLTExMjIsMTAgKzExMjIsMTAg
QEAgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBSZW5kZXJGbGV4aWJsZUJveDo6Y3Jvc3NTaXpl
Rm9yUGVyY2VudGFnZVJlc29sdXRpb24oY28KICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAogICAgIC8vIEhlcmUgd2UgaW1wbGVtZW50IGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3Mt
ZmxleGJveC8jYWxnby1zdHJldGNoCi0gICAgaWYgKGhhc09ydGhvZ29uYWxGbG93KGNoaWxkKSAm
JiBjaGlsZC5oYXNPdmVycmlkZUxvZ2ljYWxDb250ZW50V2lkdGgoKSkKLSAgICAgICAgcmV0dXJu
IGNoaWxkLm92ZXJyaWRlTG9naWNhbENvbnRlbnRXaWR0aCgpOwotICAgIGlmICghaGFzT3J0aG9n
b25hbEZsb3coY2hpbGQpICYmIGNoaWxkLmhhc092ZXJyaWRlTG9naWNhbENvbnRlbnRIZWlnaHQo
KSkKLSAgICAgICAgcmV0dXJuIGNoaWxkLm92ZXJyaWRlTG9naWNhbENvbnRlbnRIZWlnaHQoKTsK
KyAgICBpZiAoaGFzT3J0aG9nb25hbEZsb3coY2hpbGQpICYmIGNoaWxkLmhhc092ZXJyaWRlQ29u
dGVudExvZ2ljYWxXaWR0aCgpKQorICAgICAgICByZXR1cm4gY2hpbGQub3ZlcnJpZGVDb250ZW50
TG9naWNhbFdpZHRoKCk7CisgICAgaWYgKCFoYXNPcnRob2dvbmFsRmxvdyhjaGlsZCkgJiYgY2hp
bGQuaGFzT3ZlcnJpZGVDb250ZW50TG9naWNhbEhlaWdodCgpKQorICAgICAgICByZXR1cm4gY2hp
bGQub3ZlcnJpZGVDb250ZW50TG9naWNhbEhlaWdodCgpOwogICAgIAogICAgIC8vIFdlIGRvbid0
IGN1cnJlbnRseSBpbXBsZW1lbnQgdGhlIG9wdGltaXphdGlvbiBmcm9tCiAgICAgLy8gaHR0cHM6
Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzcy1mbGV4Ym94LyNkZWZpbml0ZS1zaXplcyBjYXNlIDEuIFdo
aWxlIHRoYXQKQEAgLTExNTQsOCArMTE1NCw4IEBAIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4g
UmVuZGVyRmxleGlibGVCb3g6Om1haW5TaXplRm9yUGVyY2VudGFnZVJlc29sdXRpb24oY29uCiAg
ICAgfQogICAgIAogICAgIGlmIChoYXNPcnRob2dvbmFsRmxvdyhjaGlsZCkpCi0gICAgICAgIHJl
dHVybiBjaGlsZC5oYXNPdmVycmlkZUxvZ2ljYWxDb250ZW50SGVpZ2h0KCkgPyBzdGQ6Om9wdGlv
bmFsPExheW91dFVuaXQ+KGNoaWxkLm92ZXJyaWRlTG9naWNhbENvbnRlbnRIZWlnaHQoKSkgOiBz
dGQ6Om51bGxvcHQ7Ci0gICAgcmV0dXJuIGNoaWxkLmhhc092ZXJyaWRlTG9naWNhbENvbnRlbnRX
aWR0aCgpID8gc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PihjaGlsZC5vdmVycmlkZUxvZ2ljYWxD
b250ZW50V2lkdGgoKSkgOiBzdGQ6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBjaGlsZC5oYXNP
dmVycmlkZUNvbnRlbnRMb2dpY2FsSGVpZ2h0KCkgPyBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+
KGNoaWxkLm92ZXJyaWRlQ29udGVudExvZ2ljYWxIZWlnaHQoKSkgOiBzdGQ6Om51bGxvcHQ7Cisg
ICAgcmV0dXJuIGNoaWxkLmhhc092ZXJyaWRlQ29udGVudExvZ2ljYWxXaWR0aCgpID8gc3RkOjpv
cHRpb25hbDxMYXlvdXRVbml0PihjaGlsZC5vdmVycmlkZUNvbnRlbnRMb2dpY2FsV2lkdGgoKSkg
OiBzdGQ6Om51bGxvcHQ7CiB9CiAKIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gUmVuZGVyRmxl
eGlibGVCb3g6OmNoaWxkTG9naWNhbEhlaWdodEZvclBlcmNlbnRhZ2VSZXNvbHV0aW9uKGNvbnN0
IFJlbmRlckJveCYgY2hpbGQpCkBAIC0xMTkxLDcgKzExOTEsNyBAQCBGbGV4SXRlbSBSZW5kZXJG
bGV4aWJsZUJveDo6Y29uc3RydWN0RmxleEl0ZW0oUmVuZGVyQm94JiBjaGlsZCwgYm9vbCByZWxh
eW91dENoaQogICAgIC8vIG1pbi9tYXgvcHJlZmVycmVkIHNpemUsIHJ1biBsYXlvdXQgb24gaXQg
bm93IHRvIG1ha2Ugc3VyZSBpdHMgbG9naWNhbAogICAgIC8vIGhlaWdodCBhbmQgc2Nyb2xsIGJh
cnMgYXJlIHVwIHRvIGRhdGUuCiAgICAgaWYgKGNoaWxkSGFzSW50cmluc2ljTWFpbkF4aXNTaXpl
KGNoaWxkKSAmJiBjaGlsZC5uZWVkc0xheW91dCgpKSB7Ci0gICAgICAgIGNoaWxkLmNsZWFyT3Zl
cnJpZGVTaXplKCk7CisgICAgICAgIGNoaWxkLmNsZWFyT3ZlcnJpZGVDb250ZW50U2l6ZSgpOwog
ICAgICAgICBjaGlsZC5zZXRDaGlsZE5lZWRzTGF5b3V0KE1hcmtPbmx5VGhpcyk7CiAgICAgICAg
IGNoaWxkLmxheW91dElmTmVlZGVkKCk7CiAgICAgICAgIGNhY2hlQ2hpbGRNYWluU2l6ZShjaGls
ZCk7CkBAIC0xMzc5LDkgKzEzNzksOSBAQCBzdGF0aWMgTGF5b3V0VW5pdCBhbGlnbm1lbnRPZmZz
ZXQoTGF5b3V0VW5pdCBhdmFpbGFibGVGcmVlU3BhY2UsIEl0ZW1Qb3NpdGlvbiBwbwogdm9pZCBS
ZW5kZXJGbGV4aWJsZUJveDo6c2V0T3ZlcnJpZGVNYWluQXhpc0NvbnRlbnRTaXplRm9yQ2hpbGQo
UmVuZGVyQm94JiBjaGlsZCwgTGF5b3V0VW5pdCBjaGlsZFByZWZlcnJlZFNpemUpCiB7CiAgICAg
aWYgKGhhc09ydGhvZ29uYWxGbG93KGNoaWxkKSkKLSAgICAgICAgY2hpbGQuc2V0T3ZlcnJpZGVM
b2dpY2FsQ29udGVudEhlaWdodChjaGlsZFByZWZlcnJlZFNpemUpOworICAgICAgICBjaGlsZC5z
ZXRPdmVycmlkZUNvbnRlbnRMb2dpY2FsSGVpZ2h0KGNoaWxkUHJlZmVycmVkU2l6ZSk7CiAgICAg
ZWxzZQotICAgICAgICBjaGlsZC5zZXRPdmVycmlkZUxvZ2ljYWxDb250ZW50V2lkdGgoY2hpbGRQ
cmVmZXJyZWRTaXplKTsKKyAgICAgICAgY2hpbGQuc2V0T3ZlcnJpZGVDb250ZW50TG9naWNhbFdp
ZHRoKGNoaWxkUHJlZmVycmVkU2l6ZSk7CiB9CiAKIExheW91dFVuaXQgUmVuZGVyRmxleGlibGVC
b3g6OnN0YXRpY01haW5BeGlzUG9zaXRpb25Gb3JQb3NpdGlvbmVkQ2hpbGQoY29uc3QgUmVuZGVy
Qm94JiBjaGlsZCkKQEAgLTE4MTAsOCArMTgxMCw4IEBAIHZvaWQgUmVuZGVyRmxleGlibGVCb3g6
OmFwcGx5U3RyZXRjaEFsaWdubWVudFRvQ2hpbGQoUmVuZGVyQm94JiBjaGlsZCwgTGF5b3V0VW5p
CiAgICAgICAgICAgICAvLyBTbywgcmVkbyBpdCBoZXJlLgogICAgICAgICAgICAgY2hpbGROZWVk
c1JlbGF5b3V0ID0gdHJ1ZTsKICAgICAgICAgfQotICAgICAgICBpZiAoY2hpbGROZWVkc1JlbGF5
b3V0IHx8ICFjaGlsZC5oYXNPdmVycmlkZUxvZ2ljYWxDb250ZW50SGVpZ2h0KCkpCi0gICAgICAg
ICAgICBjaGlsZC5zZXRPdmVycmlkZUxvZ2ljYWxDb250ZW50SGVpZ2h0KGRlc2lyZWRMb2dpY2Fs
SGVpZ2h0IC0gY2hpbGQuYm9yZGVyQW5kUGFkZGluZ0xvZ2ljYWxIZWlnaHQoKSk7CisgICAgICAg
IGlmIChjaGlsZE5lZWRzUmVsYXlvdXQgfHwgIWNoaWxkLmhhc092ZXJyaWRlQ29udGVudExvZ2lj
YWxIZWlnaHQoKSkKKyAgICAgICAgICAgIGNoaWxkLnNldE92ZXJyaWRlQ29udGVudExvZ2ljYWxI
ZWlnaHQoZGVzaXJlZExvZ2ljYWxIZWlnaHQgLSBjaGlsZC5ib3JkZXJBbmRQYWRkaW5nTG9naWNh
bEhlaWdodCgpKTsKICAgICAgICAgaWYgKGNoaWxkTmVlZHNSZWxheW91dCkgewogICAgICAgICAg
ICAgY2hpbGQuc2V0TG9naWNhbEhlaWdodChMYXlvdXRVbml0KCkpOwogICAgICAgICAgICAgLy8g
V2UgY2FjaGUgdGhlIGNoaWxkJ3MgaW50cmluc2ljIGNvbnRlbnQgbG9naWNhbCBoZWlnaHQgdG8g
YXZvaWQgaXQgYmVpbmcKQEAgLTE4MzIsNyArMTgzMiw3IEBAIHZvaWQgUmVuZGVyRmxleGlibGVC
b3g6OmFwcGx5U3RyZXRjaEFsaWdubWVudFRvQ2hpbGQoUmVuZGVyQm94JiBjaGlsZCwgTGF5b3V0
VW5pCiAgICAgICAgIGNoaWxkV2lkdGggPSBjaGlsZC5jb25zdHJhaW5Mb2dpY2FsV2lkdGhJbkZy
YWdtZW50QnlNaW5NYXgoY2hpbGRXaWR0aCwgY3Jvc3NBeGlzQ29udGVudEV4dGVudCgpLCAqdGhp
cywgbnVsbHB0cik7CiAgICAgICAgIAogICAgICAgICBpZiAoY2hpbGRXaWR0aCAhPSBjaGlsZC5s
b2dpY2FsV2lkdGgoKSkgewotICAgICAgICAgICAgY2hpbGQuc2V0T3ZlcnJpZGVMb2dpY2FsQ29u
dGVudFdpZHRoKGNoaWxkV2lkdGggLSBjaGlsZC5ib3JkZXJBbmRQYWRkaW5nTG9naWNhbFdpZHRo
KCkpOworICAgICAgICAgICAgY2hpbGQuc2V0T3ZlcnJpZGVDb250ZW50TG9naWNhbFdpZHRoKGNo
aWxkV2lkdGggLSBjaGlsZC5ib3JkZXJBbmRQYWRkaW5nTG9naWNhbFdpZHRoKCkpOwogICAgICAg
ICAgICAgY2hpbGQuc2V0Q2hpbGROZWVkc0xheW91dChNYXJrT25seVRoaXMpOwogICAgICAgICAg
ICAgY2hpbGQubGF5b3V0SWZOZWVkZWQoKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZ1bGxTY3JlZW4uY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckZ1bGxTY3JlZW4uY3BwCmluZGV4IGVmNzI1ZWVjNGYzMmY2MjE2NDAy
YzZhODRmZDFmMDhjMDNkMzdlZTMuLmQyNGQ1MGRlMzllZWI0NjQ2ZWU3ZGYzZWE0MGI0NzNiNWI3
OGJjZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGdWxsU2Ny
ZWVuLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnVsbFNjcmVlbi5j
cHAKQEAgLTE3MCw3ICsxNzAsNyBAQCB2b2lkIFJlbmRlckZ1bGxTY3JlZW46OnVud3JhcFJlbmRl
cmVyKGJvb2wmIHJlcXVpcmVzUmVuZGVyVHJlZVJlYnVpbGQpCiAgICAgICAgICAgICAvLyBtYXkg
aGF2ZSBzZXQgb25lIG9uIHRoZSBjaGlsZCwgYW5kIHdlIGRvbid0IHdhbnQgdG8gbGVhdmUgdGhh
dAogICAgICAgICAgICAgLy8gbHlpbmcgYXJvdW5kIG9uIHRoZSBjaGlsZC4KICAgICAgICAgICAg
IGlmIChpczxSZW5kZXJCb3g+KCpjaGlsZCkpCi0gICAgICAgICAgICAgICAgZG93bmNhc3Q8UmVu
ZGVyQm94PigqY2hpbGQpLmNsZWFyT3ZlcnJpZGVTaXplKCk7CisgICAgICAgICAgICAgICAgZG93
bmNhc3Q8UmVuZGVyQm94PigqY2hpbGQpLmNsZWFyT3ZlcnJpZGVDb250ZW50U2l6ZSgpOwogICAg
ICAgICAgICAgYXV0byBjaGlsZFRvTW92ZSA9IGJ1aWxkZXIuZGV0YWNoKCpjaGlsZC0+cGFyZW50
KCksICpjaGlsZCk7CiAgICAgICAgICAgICBidWlsZGVyLmF0dGFjaCgqcGFyZW50KCksIFdURk1v
dmUoY2hpbGRUb01vdmUpLCB0aGlzKTsKICAgICAgICAgICAgIHBhcmVudCgpLT5zZXROZWVkc0xh
eW91dEFuZFByZWZXaWR0aHNSZWNhbGMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJHcmlkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJH
cmlkLmNwcAppbmRleCBiZGE4MGEwMTllNTViNWQ5NzNhODBjNTZkZWNmZGViNGM0MmQ0OTc3Li5j
NzY0OTJmZjZmYTljNjUxZmYzZjMyZDBhZjVjNDNjOTlkMDdiYTY4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwCkBAIC0yMTMsNyArMjEzLDcgQEAgdm9pZCBSZW5kZXJH
cmlkOjpsYXlvdXRCbG9jayhib29sIHJlbGF5b3V0Q2hpbGRyZW4sIExheW91dFVuaXQpCiAgICAg
ICAgIExheW91dFNpemUgcHJldmlvdXNTaXplID0gc2l6ZSgpOwogICAgICAgICAvLyBGSVhNRTog
V2Ugc2hvdWxkIHVzZSBSZW5kZXJCbG9jazo6aGFzRGVmaW5pdGVMb2dpY2FsSGVpZ2h0KCkgYnV0
IGl0IGRvZXMgbm90IHdvcmsgZm9yIHBvc2l0aW9uZWQgc3R1ZmYuCiAgICAgICAgIC8vIEZJWE1F
OiBDb25zaWRlciBjYWNoaW5nIHRoZSBoYXNEZWZpbml0ZUxvZ2ljYWxIZWlnaHQgdmFsdWUgdGhy
b3VnaG91dCB0aGUgbGF5b3V0LgotICAgICAgICBib29sIGhhc0RlZmluaXRlTG9naWNhbEhlaWdo
dCA9IGhhc092ZXJyaWRlTG9naWNhbENvbnRlbnRIZWlnaHQoKSB8fCBjb21wdXRlQ29udGVudExv
Z2ljYWxIZWlnaHQoTWFpbk9yUHJlZmVycmVkU2l6ZSwgc3R5bGUoKS5sb2dpY2FsSGVpZ2h0KCks
IHN0ZDo6bnVsbG9wdCk7CisgICAgICAgIGJvb2wgaGFzRGVmaW5pdGVMb2dpY2FsSGVpZ2h0ID0g
aGFzT3ZlcnJpZGVDb250ZW50TG9naWNhbEhlaWdodCgpIHx8IGNvbXB1dGVDb250ZW50TG9naWNh
bEhlaWdodChNYWluT3JQcmVmZXJyZWRTaXplLCBzdHlsZSgpLmxvZ2ljYWxIZWlnaHQoKSwgc3Rk
OjpudWxsb3B0KTsKIAogICAgICAgICAvLyBXZSBuZWVkIHRvIGNsZWFyIGJvdGggb3duIGFuZCBj
b250YWluaW5nQmxvY2sgb3ZlcnJpZGUgc2l6ZXMgb2Ygb3J0aG9nb25hbCBpdGVtcyB0byBlbnN1
cmUgd2UgZ2V0IHRoZQogICAgICAgICAvLyBzYW1lIHJlc3VsdCB3aGVuIGdyaWQncyBpbnRyaW5z
aWMgc2l6ZSBpcyBjb21wdXRlZCBhZ2FpbiBpbiB0aGUgdXBkYXRlTG9naWNhbFdpZHRoIGNhbGwg
YmVsbG93LgpAQCAtMjIxLDggKzIyMSw4IEBAIHZvaWQgUmVuZGVyR3JpZDo6bGF5b3V0QmxvY2so
Ym9vbCByZWxheW91dENoaWxkcmVuLCBMYXlvdXRVbml0KQogICAgICAgICAgICAgZm9yIChhdXRv
KiBjaGlsZCA9IGZpcnN0Q2hpbGRCb3goKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJs
aW5nQm94KCkpIHsKICAgICAgICAgICAgICAgICBpZiAoY2hpbGQtPmlzT3V0T2ZGbG93UG9zaXRp
b25lZCgpIHx8ICFHcmlkTGF5b3V0RnVuY3Rpb25zOjppc09ydGhvZ29uYWxDaGlsZCgqdGhpcywg
KmNoaWxkKSkKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAg
Y2hpbGQtPmNsZWFyT3ZlcnJpZGVTaXplKCk7Ci0gICAgICAgICAgICAgICAgY2hpbGQtPmNsZWFy
Q29udGFpbmluZ0Jsb2NrT3ZlcnJpZGVTaXplKCk7CisgICAgICAgICAgICAgICAgY2hpbGQtPmNs
ZWFyT3ZlcnJpZGVDb250ZW50U2l6ZSgpOworICAgICAgICAgICAgICAgIGNoaWxkLT5jbGVhck92
ZXJyaWRlQ29udGFpbmluZ0Jsb2NrQ29udGVudFNpemUoKTsKICAgICAgICAgICAgICAgICBjaGls
ZC0+c2V0TmVlZHNMYXlvdXQoKTsKICAgICAgICAgICAgICAgICBjaGlsZC0+bGF5b3V0SWZOZWVk
ZWQoKTsKICAgICAgICAgICAgIH0KQEAgLTg3NCw4ICs4NzQsOCBAQCB2b2lkIFJlbmRlckdyaWQ6
OmxheW91dEdyaWRJdGVtcygpCiAKICAgICAgICAgLy8gQmVjYXVzZSB0aGUgZ3JpZCBhcmVhIGNh
bm5vdCBiZSBzdHlsZWQsIHdlIGRvbid0IG5lZWQgdG8gYWRqdXN0CiAgICAgICAgIC8vIHRoZSBn
cmlkIGJyZWFkdGggdG8gYWNjb3VudCBmb3IgJ2JveC1zaXppbmcnLgotICAgICAgICBzdGQ6Om9w
dGlvbmFsPExheW91dFVuaXQ+IG9sZE92ZXJyaWRlQ29udGFpbmluZ0Jsb2NrQ29udGVudExvZ2lj
YWxXaWR0aCA9IGNoaWxkLT5oYXNPdmVycmlkZUNvbnRhaW5pbmdCbG9ja0xvZ2ljYWxXaWR0aCgp
ID8gY2hpbGQtPm92ZXJyaWRlQ29udGFpbmluZ0Jsb2NrQ29udGVudExvZ2ljYWxXaWR0aCgpIDog
TGF5b3V0VW5pdCgpOwotICAgICAgICBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IG9sZE92ZXJy
aWRlQ29udGFpbmluZ0Jsb2NrQ29udGVudExvZ2ljYWxIZWlnaHQgPSBjaGlsZC0+aGFzT3ZlcnJp
ZGVDb250YWluaW5nQmxvY2tMb2dpY2FsSGVpZ2h0KCkgPyBjaGlsZC0+b3ZlcnJpZGVDb250YWlu
aW5nQmxvY2tDb250ZW50TG9naWNhbEhlaWdodCgpIDogTGF5b3V0VW5pdCgpOworICAgICAgICBz
dGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IG9sZE92ZXJyaWRlQ29udGFpbmluZ0Jsb2NrQ29udGVu
dExvZ2ljYWxXaWR0aCA9IGNoaWxkLT5oYXNPdmVycmlkZUNvbnRhaW5pbmdCbG9ja0NvbnRlbnRM
b2dpY2FsV2lkdGgoKSA/IGNoaWxkLT5vdmVycmlkZUNvbnRhaW5pbmdCbG9ja0NvbnRlbnRMb2dp
Y2FsV2lkdGgoKSA6IExheW91dFVuaXQoKTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxMYXlvdXRV
bml0PiBvbGRPdmVycmlkZUNvbnRhaW5pbmdCbG9ja0NvbnRlbnRMb2dpY2FsSGVpZ2h0ID0gY2hp
bGQtPmhhc092ZXJyaWRlQ29udGFpbmluZ0Jsb2NrQ29udGVudExvZ2ljYWxIZWlnaHQoKSA/IGNo
aWxkLT5vdmVycmlkZUNvbnRhaW5pbmdCbG9ja0NvbnRlbnRMb2dpY2FsSGVpZ2h0KCkgOiBMYXlv
dXRVbml0KCk7CiAKICAgICAgICAgTGF5b3V0VW5pdCBvdmVycmlkZUNvbnRhaW5pbmdCbG9ja0Nv
bnRlbnRMb2dpY2FsV2lkdGggPSBncmlkQXJlYUJyZWFkdGhGb3JDaGlsZEluY2x1ZGluZ0FsaWdu
bWVudE9mZnNldHMoKmNoaWxkLCBGb3JDb2x1bW5zKTsKICAgICAgICAgTGF5b3V0VW5pdCBvdmVy
cmlkZUNvbnRhaW5pbmdCbG9ja0NvbnRlbnRMb2dpY2FsSGVpZ2h0ID0gZ3JpZEFyZWFCcmVhZHRo
Rm9yQ2hpbGRJbmNsdWRpbmdBbGlnbm1lbnRPZmZzZXRzKCpjaGlsZCwgRm9yUm93cyk7CkBAIC0x
MDY1LDcgKzEwNjUsNyBAQCB2b2lkIFJlbmRlckdyaWQ6OmFwcGx5U3RyZXRjaEFsaWdubWVudFRv
Q2hpbGRJZk5lZWRlZChSZW5kZXJCb3gmIGNoaWxkKQogCiAgICAgLy8gV2UgY2xlYXIgaGVpZ2h0
IG92ZXJyaWRlIHZhbHVlcyBiZWNhdXNlIHdlIHdpbGwgZGVjaWRlIG5vdyB3aGV0aGVyIGl0J3Mg
YWxsb3dlZCBvcgogICAgIC8vIG5vdCwgZXZhbHVhdGluZyB0aGUgY29uZGl0aW9ucyB3aGljaCBt
aWdodCBoYXZlIGNoYW5nZWQgc2luY2UgdGhlIG9sZCB2YWx1ZXMgd2VyZSBzZXQuCi0gICAgY2hp
bGQuY2xlYXJPdmVycmlkZUxvZ2ljYWxDb250ZW50SGVpZ2h0KCk7CisgICAgY2hpbGQuY2xlYXJP
dmVycmlkZUNvbnRlbnRMb2dpY2FsSGVpZ2h0KCk7CiAKICAgICBHcmlkVHJhY2tTaXppbmdEaXJl
Y3Rpb24gY2hpbGRCbG9ja0RpcmVjdGlvbiA9IEdyaWRMYXlvdXRGdW5jdGlvbnM6OmZsb3dBd2Fy
ZURpcmVjdGlvbkZvckNoaWxkKCp0aGlzLCBjaGlsZCwgRm9yUm93cyk7CiAgICAgYm9vbCBibG9j
a0Zsb3dJc0NvbHVtbkF4aXMgPSBjaGlsZEJsb2NrRGlyZWN0aW9uID09IEZvclJvd3M7CkBAIC0x
MDczLDcgKzEwNzMsNyBAQCB2b2lkIFJlbmRlckdyaWQ6OmFwcGx5U3RyZXRjaEFsaWdubWVudFRv
Q2hpbGRJZk5lZWRlZChSZW5kZXJCb3gmIGNoaWxkKQogICAgIGlmIChhbGxvd2VkVG9TdHJldGNo
Q2hpbGRCbG9ja1NpemUpIHsKICAgICAgICAgTGF5b3V0VW5pdCBzdHJldGNoZWRMb2dpY2FsSGVp
Z2h0ID0gYXZhaWxhYmxlQWxpZ25tZW50U3BhY2VGb3JDaGlsZEJlZm9yZVN0cmV0Y2hpbmcoR3Jp
ZExheW91dEZ1bmN0aW9uczo6b3ZlcnJpZGVDb250YWluaW5nQmxvY2tDb250ZW50U2l6ZUZvckNo
aWxkKGNoaWxkLCBjaGlsZEJsb2NrRGlyZWN0aW9uKS52YWx1ZSgpLCBjaGlsZCk7CiAgICAgICAg
IExheW91dFVuaXQgZGVzaXJlZExvZ2ljYWxIZWlnaHQgPSBjaGlsZC5jb25zdHJhaW5Mb2dpY2Fs
SGVpZ2h0QnlNaW5NYXgoc3RyZXRjaGVkTG9naWNhbEhlaWdodCwgTGF5b3V0VW5pdCgtMSkpOwot
ICAgICAgICBjaGlsZC5zZXRPdmVycmlkZUxvZ2ljYWxDb250ZW50SGVpZ2h0KGRlc2lyZWRMb2dp
Y2FsSGVpZ2h0IC0gY2hpbGQuYm9yZGVyQW5kUGFkZGluZ0xvZ2ljYWxIZWlnaHQoKSk7CisgICAg
ICAgIGNoaWxkLnNldE92ZXJyaWRlQ29udGVudExvZ2ljYWxIZWlnaHQoZGVzaXJlZExvZ2ljYWxI
ZWlnaHQgLSBjaGlsZC5ib3JkZXJBbmRQYWRkaW5nTG9naWNhbEhlaWdodCgpKTsKICAgICAgICAg
aWYgKGRlc2lyZWRMb2dpY2FsSGVpZ2h0ICE9IGNoaWxkLmxvZ2ljYWxIZWlnaHQoKSkgewogICAg
ICAgICAgICAgLy8gRklYTUU6IENhbiBhdm9pZCBsYXlpbmcgb3V0IGhlcmUgaW4gc29tZSBjYXNl
cy4gU2VlIGh0dHBzOi8vd2Via2l0Lm9yZy9iLzg3OTA1LgogICAgICAgICAgICAgY2hpbGQuc2V0
TG9naWNhbEhlaWdodChMYXlvdXRVbml0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclJ1YnlCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJSdWJ5QmFzZS5jcHAKaW5kZXggN2JjMWFhNTY4YTM4NzBiZjdjZDcwMGFlMGM4NWUxMjE0
MGUxMzZhYy4uNTA0NTYxODBmMzYxZmM0YjRmMjkyNmIzNjI0OGI0YjRkYjY5NzkxOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1YnlCYXNlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUnVieUJhc2UuY3BwCkBAIC02NywxMyArNjcs
MTMgQEAgRVRleHRBbGlnbiBSZW5kZXJSdWJ5QmFzZTo6dGV4dEFsaWdubWVudEZvckxpbmUoYm9v
bCAvKiBlbmRzV2l0aFNvZnRCcmVhayAqLykgY28KIAogdm9pZCBSZW5kZXJSdWJ5QmFzZTo6YWRq
dXN0SW5saW5lRGlyZWN0aW9uTGluZUJvdW5kcyhpbnQgZXhwYW5zaW9uT3Bwb3J0dW5pdHlDb3Vu
dCwgZmxvYXQmIGxvZ2ljYWxMZWZ0LCBmbG9hdCYgbG9naWNhbFdpZHRoKSBjb25zdAogewotICAg
IGlmIChydWJ5UnVuKCktPmhhc092ZXJyaWRlTG9naWNhbENvbnRlbnRXaWR0aCgpICYmIGZpcnN0
Um9vdEJveCgpICYmICFmaXJzdFJvb3RCb3goKS0+bmV4dFJvb3RCb3goKSkgeworICAgIGlmIChy
dWJ5UnVuKCktPmhhc092ZXJyaWRlQ29udGVudExvZ2ljYWxXaWR0aCgpICYmIGZpcnN0Um9vdEJv
eCgpICYmICFmaXJzdFJvb3RCb3goKS0+bmV4dFJvb3RCb3goKSkgewogICAgICAgICBsb2dpY2Fs
TGVmdCArPSBtX2luaXRpYWxPZmZzZXQ7CiAgICAgICAgIGxvZ2ljYWxXaWR0aCAtPSAyICogbV9p
bml0aWFsT2Zmc2V0OwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgTGF5b3V0VW5pdCBt
YXhQcmVmZXJyZWRMb2dpY2FsV2lkdGggPSBydWJ5UnVuKCkgJiYgcnVieVJ1bigpLT5oYXNPdmVy
cmlkZUxvZ2ljYWxDb250ZW50V2lkdGgoKSA/IHJ1YnlSdW4oKS0+b3ZlcnJpZGVMb2dpY2FsQ29u
dGVudFdpZHRoKCkgOiB0aGlzLT5tYXhQcmVmZXJyZWRMb2dpY2FsV2lkdGgoKTsKKyAgICBMYXlv
dXRVbml0IG1heFByZWZlcnJlZExvZ2ljYWxXaWR0aCA9IHJ1YnlSdW4oKSAmJiBydWJ5UnVuKCkt
Pmhhc092ZXJyaWRlQ29udGVudExvZ2ljYWxXaWR0aCgpID8gcnVieVJ1bigpLT5vdmVycmlkZUNv
bnRlbnRMb2dpY2FsV2lkdGgoKSA6IHRoaXMtPm1heFByZWZlcnJlZExvZ2ljYWxXaWR0aCgpOwog
ICAgIGlmIChtYXhQcmVmZXJyZWRMb2dpY2FsV2lkdGggPj0gbG9naWNhbFdpZHRoKQogICAgICAg
ICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
YWJsZUNlbGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5j
cHAKaW5kZXggZTA5NWVjNTc5NDY4MWIwYTU0MDNjOGFiMDVlNDA3YTBmMjlkZDJmOC4uODk2NmJh
MDdjYzg3M2MwNzdkZmE3NDdjZDU4OGUxZGM2YTE3NmU3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHAKQEAgLTMyOCwxMCArMzI4LDEwIEBAIExheW91
dFVuaXQgUmVuZGVyVGFibGVDZWxsOjpwYWRkaW5nQWZ0ZXIoKSBjb25zdAogICAgIHJldHVybiBj
b21wdXRlZENTU1BhZGRpbmdBZnRlcigpICsgaW50cmluc2ljUGFkZGluZ0FmdGVyKCk7CiB9CiAK
LXZvaWQgUmVuZGVyVGFibGVDZWxsOjpzZXRPdmVycmlkZUxvZ2ljYWxDb250ZW50SGVpZ2h0RnJv
bVJvd0hlaWdodChMYXlvdXRVbml0IHJvd0hlaWdodCkKK3ZvaWQgUmVuZGVyVGFibGVDZWxsOjpz
ZXRPdmVycmlkZUNvbnRlbnRMb2dpY2FsSGVpZ2h0RnJvbVJvd0hlaWdodChMYXlvdXRVbml0IHJv
d0hlaWdodCkKIHsKICAgICBjbGVhckludHJpbnNpY1BhZGRpbmcoKTsKLSAgICBzZXRPdmVycmlk
ZUxvZ2ljYWxDb250ZW50SGVpZ2h0KHN0ZDo6bWF4PExheW91dFVuaXQ+KDAsIHJvd0hlaWdodCAt
IGJvcmRlckFuZFBhZGRpbmdMb2dpY2FsSGVpZ2h0KCkpKTsKKyAgICBzZXRPdmVycmlkZUNvbnRl
bnRMb2dpY2FsSGVpZ2h0KHN0ZDo6bWF4PExheW91dFVuaXQ+KDAsIHJvd0hlaWdodCAtIGJvcmRl
ckFuZFBhZGRpbmdMb2dpY2FsSGVpZ2h0KCkpKTsKIH0KIAogTGF5b3V0U2l6ZSBSZW5kZXJUYWJs
ZUNlbGw6Om9mZnNldEZyb21Db250YWluZXIoUmVuZGVyRWxlbWVudCYgY29udGFpbmVyLCBjb25z
dCBMYXlvdXRQb2ludCYgcG9pbnQsIGJvb2wqIG9mZnNldERlcGVuZHNPblBvaW50KSBjb25zdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5oIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5oCmluZGV4IGRjOWM1ZTE4
MWNjNWYwMWJiOTE4N2FkZWFjNjdiNGY5YTdhYTI5NmUuLjIzMjg1NWE1NTIwYWQzMmRmODM4ODdh
Nzc4Mjg5ODFkYWQzZWE4ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUYWJsZUNlbGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFi
bGVDZWxsLmgKQEAgLTEwMiw3ICsxMDIsNyBAQCBwdWJsaWM6CiAgICAgTGF5b3V0VW5pdCBwYWRk
aW5nQmVmb3JlKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgTGF5b3V0VW5pdCBwYWRkaW5nQWZ0ZXIo
KSBjb25zdCBvdmVycmlkZTsKIAotICAgIHZvaWQgc2V0T3ZlcnJpZGVMb2dpY2FsQ29udGVudEhl
aWdodEZyb21Sb3dIZWlnaHQoTGF5b3V0VW5pdCk7CisgICAgdm9pZCBzZXRPdmVycmlkZUNvbnRl
bnRMb2dpY2FsSGVpZ2h0RnJvbVJvd0hlaWdodChMYXlvdXRVbml0KTsKIAogICAgIHZvaWQgc2Ny
b2xsYmFyc0NoYW5nZWQoYm9vbCBob3Jpem9udGFsU2Nyb2xsYmFyQ2hhbmdlZCwgYm9vbCB2ZXJ0
aWNhbFNjcm9sbGJhckNoYW5nZWQpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uY3BwCmluZGV4IGM3ZTdiZDYzN2EwOTczMDk4MGE4
YTIyZWQ1NTIwOWZhYmQxYzIxNGQuLjE3NWVjMDQzN2U5Y2U5YTFkNzRlMTkwMjJkY2U1NzgyNmYw
NjBiOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVNl
Y3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rp
b24uY3BwCkBAIC0yODUsOSArMjg1LDkgQEAgTGF5b3V0VW5pdCBSZW5kZXJUYWJsZVNlY3Rpb246
OmNhbGNSb3dMb2dpY2FsSGVpZ2h0KCkKICAgICAgICAgICAgICAgICAvLyBGb3Igcm93IHNwYW5u
aW5nIGNlbGxzLCB8cnwgaXMgdGhlIGxhc3Qgcm93IGluIHRoZSBzcGFuLgogICAgICAgICAgICAg
ICAgIHVuc2lnbmVkIGNlbGxTdGFydFJvdyA9IGNlbGwtPnJvd0luZGV4KCk7CiAKLSAgICAgICAg
ICAgICAgICBpZiAoY2VsbC0+aGFzT3ZlcnJpZGVMb2dpY2FsQ29udGVudEhlaWdodCgpKSB7Cisg
ICAgICAgICAgICAgICAgaWYgKGNlbGwtPmhhc092ZXJyaWRlQ29udGVudExvZ2ljYWxIZWlnaHQo
KSkgewogICAgICAgICAgICAgICAgICAgICBjZWxsLT5jbGVhckludHJpbnNpY1BhZGRpbmcoKTsK
LSAgICAgICAgICAgICAgICAgICAgY2VsbC0+Y2xlYXJPdmVycmlkZVNpemUoKTsKKyAgICAgICAg
ICAgICAgICAgICAgY2VsbC0+Y2xlYXJPdmVycmlkZUNvbnRlbnRTaXplKCk7CiAgICAgICAgICAg
ICAgICAgICAgIGNlbGwtPnNldENoaWxkTmVlZHNMYXlvdXQoTWFya09ubHlUaGlzKTsKICAgICAg
ICAgICAgICAgICAgICAgY2VsbC0+bGF5b3V0SWZOZWVkZWQoKTsKICAgICAgICAgICAgICAgICB9
CkBAIC01MjQsNyArNTI0LDcgQEAgdm9pZCBSZW5kZXJUYWJsZVNlY3Rpb246OnJlbGF5b3V0Q2Vs
bElmRmxleGVkKFJlbmRlclRhYmxlQ2VsbCYgY2VsbCwgaW50IHJvd0luZGUKICAgICAgICAgLy8g
QWxpZ25tZW50IHdpdGhpbiBhIGNlbGwgaXMgYmFzZWQgb2ZmIHRoZSBjYWxjdWxhdGVkCiAgICAg
Ly8gaGVpZ2h0LCB3aGljaCBiZWNvbWVzIGlycmVsZXZhbnQgb25jZSB0aGUgY2VsbCBoYXMKICAg
ICAvLyBiZWVuIHJlc2l6ZWQgYmFzZWQgb2ZmIGl0cyBwZXJjZW50YWdlLgotICAgIGNlbGwuc2V0
T3ZlcnJpZGVMb2dpY2FsQ29udGVudEhlaWdodEZyb21Sb3dIZWlnaHQocm93SGVpZ2h0KTsKKyAg
ICBjZWxsLnNldE92ZXJyaWRlQ29udGVudExvZ2ljYWxIZWlnaHRGcm9tUm93SGVpZ2h0KHJvd0hl
aWdodCk7CiAgICAgY2VsbC5sYXlvdXRJZk5lZWRlZCgpOwogICAgIAogICAgIGlmICghY2VsbC5p
c0Jhc2VsaW5lQWxpZ25lZCgpKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>