<?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>183659</bug_id>
          
          <creation_ts>2018-03-15 08:26:33 -0700</creation_ts>
          <short_desc>[LayoutReloaded] Introduce Layout namespace</short_desc>
          <delta_ts>2018-03-15 09:00:16 -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>WebCore Misc.</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="alan">zalan</reporter>
          <assigned_to name="alan">zalan</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1406656</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2018-03-15 08:26:33 -0700</bug_when>
    <thetext>This is in preparation for introducing the box tree concept.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1406657</commentid>
    <comment_count>1</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2018-03-15 08:27:30 -0700</bug_when>
    <thetext>Display tree that is.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1406659</commentid>
    <comment_count>2</comment_count>
      <attachid>335848</attachid>
    <who name="alan">zalan</who>
    <bug_when>2018-03-15 08:29:35 -0700</bug_when>
    <thetext>Created attachment 335848
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1406660</commentid>
    <comment_count>3</comment_count>
      <attachid>335849</attachid>
    <who name="alan">zalan</who>
    <bug_when>2018-03-15 08:30:35 -0700</bug_when>
    <thetext>Created attachment 335849
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1406668</commentid>
    <comment_count>4</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2018-03-15 08:59:51 -0700</bug_when>
    <thetext>Committed r229623: &lt;https://trac.webkit.org/changeset/229623&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1406672</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-03-15 09:00:16 -0700</bug_when>
    <thetext>&lt;rdar://problem/38502547&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>335848</attachid>
            <date>2018-03-15 08:29:35 -0700</date>
            <delta_ts>2018-03-15 08:30:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-183659-20180315082934.patch</filename>
            <type>text/plain</type>
            <size>54494</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI5NjIyCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMDdjMzlkYjA4MDdkOTY1Mzg3ZmFmMWMxODAxNmY3ODA3
ZWIxY2NkNS4uYTA2NjRlYmM1MmNmODRhODcxNDViMTllYjI2MjFmNWY3NzdlMGE3MSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0
MSBAQAorMjAxOC0wMy0xNSAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgorCisgICAg
ICAgIFtMYXlvdXRSZWxvYWRlZF0gSW50cm9kdWNlIExheW91dCBuYW1lc3BhY2UKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MzY1OQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWS4KKworICAgICAgICBUaGlzIGlzIGluIHByZXBhcmF0aW9uIGZv
ciBpbnRyb2R1Y2luZyB0aGUgZGlzcGxheSB0cmVlLgorCisgICAgICAgICogTGF5b3V0UmVsb2Fk
ZWQvRm9ybWF0dGluZ0NvbnRleHQvQmxvY2tGb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRl
eHQuanM6CisgICAgICAgIChCbG9ja0Zvcm1hdHRpbmdDb250ZXh0LnByb3RvdHlwZS5sYXlvdXQp
OgorICAgICAgICAoQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5wcm90b3R5cGUuY29tcHV0ZVdpZHRo
KToKKyAgICAgICAgKEJsb2NrRm9ybWF0dGluZ0NvbnRleHQucHJvdG90eXBlLmNvbXB1dGVIZWln
aHQpOgorICAgICAgICAoQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5wcm90b3R5cGUubWFyZ2luVG9w
KToKKyAgICAgICAgKEJsb2NrRm9ybWF0dGluZ0NvbnRleHQucHJvdG90eXBlLm1hcmdpbkJvdHRv
bSk6CisgICAgICAgIChCbG9ja0Zvcm1hdHRpbmdDb250ZXh0LnByb3RvdHlwZS5fY29tcHV0ZVN0
YXRpY1Bvc2l0aW9uKToKKyAgICAgICAgKEJsb2NrRm9ybWF0dGluZ0NvbnRleHQucHJvdG90eXBl
Ll9wbGFjZUluRmxvd1Bvc2l0aW9uZWRDaGlsZHJlbik6CisgICAgICAgIChCbG9ja0Zvcm1hdHRp
bmdDb250ZXh0LnByb3RvdHlwZS5fcGxhY2VPdXRPZkZsb3dEZXNjZW5kYW50cyk6CisgICAgICAg
IChCbG9ja0Zvcm1hdHRpbmdDb250ZXh0LnByb3RvdHlwZS5fY29tcHV0ZU91dE9mRmxvd1dpZHRo
KToKKyAgICAgICAgKEJsb2NrRm9ybWF0dGluZ0NvbnRleHQucHJvdG90eXBlLl9jb21wdXRlRmxv
YXRpbmdXaWR0aCk6CisgICAgICAgIChCbG9ja0Zvcm1hdHRpbmdDb250ZXh0LnByb3RvdHlwZS5f
Y29tcHV0ZUluRmxvd1dpZHRoKToKKyAgICAgICAgKEJsb2NrRm9ybWF0dGluZ0NvbnRleHQucHJv
dG90eXBlLl9jb21wdXRlT3V0T2ZGbG93SGVpZ2h0KToKKyAgICAgICAgKEJsb2NrRm9ybWF0dGlu
Z0NvbnRleHQucHJvdG90eXBlLl9jb21wdXRlRmxvYXRpbmdIZWlnaHQpOgorICAgICAgICAoQmxv
Y2tGb3JtYXR0aW5nQ29udGV4dC5wcm90b3R5cGUuX2NvbXB1dGVJbkZsb3dIZWlnaHQpOgorICAg
ICAgICAoQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5wcm90b3R5cGUuX2hvcml6b250YWxDb25zdHJh
aW50KToKKyAgICAgICAgKEJsb2NrRm9ybWF0dGluZ0NvbnRleHQucHJvdG90eXBlLl9jb250ZW50
SGVpZ2h0KToKKyAgICAgICAgKEJsb2NrRm9ybWF0dGluZ0NvbnRleHQucHJvdG90eXBlLl9hZGp1
c3RCb3R0b21XaXRoRklYTUUpOgorICAgICAgICAoQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5wcm90
b3R5cGUuX2NvbXB1dGVJbkZsb3dQb3NpdGlvbmVkUG9zaXRpb24pOgorICAgICAgICAoQmxvY2tG
b3JtYXR0aW5nQ29udGV4dC5wcm90b3R5cGUuX2NvbXB1dGVPdXRPZkZsb3dQb3NpdGlvbik6Cisg
ICAgICAgIChCbG9ja0Zvcm1hdHRpbmdDb250ZXh0LnByb3RvdHlwZS5fc2hyaW5rVG9GaXRXaWR0
aCk6CisgICAgICAgIChCbG9ja0Zvcm1hdHRpbmdDb250ZXh0KToKKyAgICAgICAgKEJsb2NrRm9y
bWF0dGluZ0NvbnRleHQucHJvdG90eXBlLl9jb21wdXRlSG9yaXpvbnRhbENvbnN0cmFpbnQpOiBE
ZWxldGVkLgorICAgICAgICAoQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5wcm90b3R5cGUuX2NvbXB1
dGVDb250ZW50SGVpZ2h0KTogRGVsZXRlZC4KKyAgICAgICAgKiBMYXlvdXRSZWxvYWRlZC9Gb3Jt
YXR0aW5nQ29udGV4dC9CbG9ja0Zvcm1hdHRpbmcvQmxvY2tNYXJnaW5Db2xsYXBzZS5qczoKKyAg
ICAgICAgKEJsb2NrTWFyZ2luQ29sbGFwc2UubWFyZ2luVG9wKToKKyAgICAgICAgKEJsb2NrTWFy
Z2luQ29sbGFwc2UubWFyZ2luQm90dG9tKToKKyAgICAgICAgKEJsb2NrTWFyZ2luQ29sbGFwc2Uu
X2lzTWFyZ2luVG9wQ29sbGFwc2VkV2l0aFNpYmxpbmcpOgorICAgICAgICAoQmxvY2tNYXJnaW5D
b2xsYXBzZS5faXNNYXJnaW5Cb3R0b21Db2xsYXBzZWRXaXRoU2libGluZyk6CisgICAgICAgIChC
bG9ja01hcmdpbkNvbGxhcHNlLl9pc01hcmdpblRvcENvbGxhcHNlZFdpdGhQYXJlbnQpOgorICAg
ICAgICAoQmxvY2tNYXJnaW5Db2xsYXBzZS5faXNNYXJnaW5Cb3R0b21Db2xsYXBzZWRXaXRoUGFy
ZW50KToKKyAgICAgICAgKEJsb2NrTWFyZ2luQ29sbGFwc2UuX25vbkNvbGxhcHNlZE1hcmdpblRv
cCk6CisgICAgICAgIChCbG9ja01hcmdpbkNvbGxhcHNlLl9ub25Db2xsYXBzZWRNYXJnaW5Cb3R0
b20pOgorICAgICAgICAoQmxvY2tNYXJnaW5Db2xsYXBzZS5fY29sbGFwc2VkTWFyZ2luVG9wRnJv
bUZpcnN0Q2hpbGQpOgorICAgICAgICAoQmxvY2tNYXJnaW5Db2xsYXBzZS5fY29sbGFwc2VkTWFy
Z2luQm90dG9tRnJvbUxhc3RDaGlsZCk6CisgICAgICAgIChCbG9ja01hcmdpbkNvbGxhcHNlLl9o
YXNBZGpvaW5pbmdNYXJnaW5Ub3BBbmRCb3R0b20pOgorICAgICAgICAoQmxvY2tNYXJnaW5Db2xs
YXBzZSk6CisgICAgICAgICogTGF5b3V0UmVsb2FkZWQvRm9ybWF0dGluZ0NvbnRleHQvRmxvYXRp
bmdDb250ZXh0LmpzOgorICAgICAgICAoRmxvYXRpbmdDb250ZXh0LnByb3RvdHlwZS5jb21wdXRl
UG9zaXRpb24pOgorICAgICAgICAoRmxvYXRpbmdDb250ZXh0LnByb3RvdHlwZS5fcG9zaXRpb25G
b3JDbGVhcik6CisgICAgICAgIChGbG9hdGluZ0NvbnRleHQucHJvdG90eXBlLl9jb21wdXRlUG9z
aXRpb25Ub0F2b2lkSW50cnVkaW5nRmxvYXRzKToKKyAgICAgICAgKiBMYXlvdXRSZWxvYWRlZC9G
b3JtYXR0aW5nQ29udGV4dC9Gb3JtYXR0aW5nQ29udGV4dC5qczoKKyAgICAgICAgKEZvcm1hdHRp
bmdDb250ZXh0LnByb3RvdHlwZS5jb21wdXRlV2lkdGgpOgorICAgICAgICAoRm9ybWF0dGluZ0Nv
bnRleHQucHJvdG90eXBlLmNvbXB1dGVIZWlnaHQpOgorICAgICAgICAoRm9ybWF0dGluZ0NvbnRl
eHQucHJvdG90eXBlLm1hcmdpblRvcCk6CisgICAgICAgIChGb3JtYXR0aW5nQ29udGV4dC5wcm90
b3R5cGUubWFyZ2luTGVmdCk6CisgICAgICAgIChGb3JtYXR0aW5nQ29udGV4dC5wcm90b3R5cGUu
bWFyZ2luQm90dG9tKToKKyAgICAgICAgKEZvcm1hdHRpbmdDb250ZXh0LnByb3RvdHlwZS5tYXJn
aW5SaWdodCk6CisgICAgICAgIChGb3JtYXR0aW5nQ29udGV4dC5wcm90b3R5cGUuYWJzb2x1dGVN
YXJnaW5Cb3gpOgorICAgICAgICAoRm9ybWF0dGluZ0NvbnRleHQucHJvdG90eXBlLmFic29sdXRl
Qm9yZGVyQm94KToKKyAgICAgICAgKEZvcm1hdHRpbmdDb250ZXh0LnByb3RvdHlwZS5hYnNvbHV0
ZVBhZGRpbmdCb3gpOgorICAgICAgICAoRm9ybWF0dGluZ0NvbnRleHQucHJvdG90eXBlLmFic29s
dXRlQ29udGVudEJveCk6CisgICAgICAgIChGb3JtYXR0aW5nQ29udGV4dCk6CisgICAgICAgICog
TGF5b3V0UmVsb2FkZWQvRm9ybWF0dGluZ0NvbnRleHQvSW5saW5lRm9ybWF0dGluZy9JbmxpbmVG
b3JtYXR0aW5nQ29udGV4dC5qczoKKyAgICAgICAgKElubGluZUZvcm1hdHRpbmdDb250ZXh0LnBy
b3RvdHlwZS5sYXlvdXQpOgorICAgICAgICAqIExheW91dFJlbG9hZGVkL0xheW91dFRyZWUvQmxv
Y2tDb250YWluZXIuanM6CisgICAgICAgIChCbG9ja0NvbnRhaW5lcik6IERlbGV0ZWQuCisgICAg
ICAgIChCbG9ja0NvbnRhaW5lci5wcm90b3R5cGUuZXN0YWJsaXNoZXNJbmxpbmVGb3JtYXR0aW5n
Q29udGV4dCk6IERlbGV0ZWQuCisgICAgICAgICogTGF5b3V0UmVsb2FkZWQvTGF5b3V0VHJlZS9C
b3guanM6CisgICAgICAgIChCb3gpOiBEZWxldGVkLgorICAgICAgICAoQm94LnByb3RvdHlwZS5p
ZCk6IERlbGV0ZWQuCisgICAgICAgIChCb3gucHJvdG90eXBlLnNldFJlbmRlcmVyTmFtZSk6IERl
bGV0ZWQuCisgICAgICAgIChCb3gucHJvdG90eXBlLm5hbWUpOiBEZWxldGVkLgorICAgICAgICAo
Qm94LnByb3RvdHlwZS5ub2RlKTogRGVsZXRlZC4KKyAgICAgICAgKEJveC5wcm90b3R5cGUucGFy
ZW50KTogRGVsZXRlZC4KKyAgICAgICAgKEJveC5wcm90b3R5cGUubmV4dFNpYmxpbmcpOiBEZWxl
dGVkLgorICAgICAgICAoQm94LnByb3RvdHlwZS5uZXh0SW5GbG93U2libGluZyk6IERlbGV0ZWQu
CisgICAgICAgIChCb3gucHJvdG90eXBlLnByZXZpb3VzU2libGluZyk6IERlbGV0ZWQuCisgICAg
ICAgIChCb3gucHJvdG90eXBlLnByZXZpb3VzSW5GbG93U2libGluZyk6IERlbGV0ZWQuCisgICAg
ICAgIChCb3gucHJvdG90eXBlLnNldFBhcmVudCk6IERlbGV0ZWQuCisgICAgICAgIChCb3gucHJv
dG90eXBlLnNldE5leHRTaWJsaW5nKTogRGVsZXRlZC4KKyAgICAgICAgKEJveC5wcm90b3R5cGUu
c2V0UHJldmlvdXNTaWJsaW5nKTogRGVsZXRlZC4KKyAgICAgICAgKEJveC5wcm90b3R5cGUucmVj
dCk6IERlbGV0ZWQuCisgICAgICAgIChCb3gucHJvdG90eXBlLnRvcExlZnQpOiBEZWxldGVkLgor
ICAgICAgICAoQm94LnByb3RvdHlwZS5ib3R0b21SaWdodCk6IERlbGV0ZWQuCisgICAgICAgIChC
b3gucHJvdG90eXBlLnNldFRvcExlZnQpOiBEZWxldGVkLgorICAgICAgICAoQm94LnByb3RvdHlw
ZS5zZXRTaXplKTogRGVsZXRlZC4KKyAgICAgICAgKEJveC5wcm90b3R5cGUuc2V0V2lkdGgpOiBE
ZWxldGVkLgorICAgICAgICAoQm94LnByb3RvdHlwZS5zZXRIZWlnaHQpOiBEZWxldGVkLgorICAg
ICAgICAoQm94LnByb3RvdHlwZS5pc0NvbnRhaW5lcik6IERlbGV0ZWQuCisgICAgICAgIChCb3gu
cHJvdG90eXBlLmlzQmxvY2tMZXZlbEJveCk6IERlbGV0ZWQuCisgICAgICAgIChCb3gucHJvdG90
eXBlLmlzQmxvY2tDb250YWluZXJCb3gpOiBEZWxldGVkLgorICAgICAgICAoQm94LnByb3RvdHlw
ZS5pc0lubGluZUxldmVsQm94KTogRGVsZXRlZC4KKyAgICAgICAgKEJveC5wcm90b3R5cGUuc2V0
SXNBbm9ueW1vdXMpOiBEZWxldGVkLgorICAgICAgICAoQm94LnByb3RvdHlwZS5pc0Fub255bW91
cyk6IERlbGV0ZWQuCisgICAgICAgIChCb3gucHJvdG90eXBlLmVzdGFibGlzaGVzRm9ybWF0dGlu
Z0NvbnRleHQpOiBEZWxldGVkLgorICAgICAgICAoQm94LnByb3RvdHlwZS5lc3RhYmxpc2hlZEZv
cm1hdHRpbmdDb250ZXh0KTogRGVsZXRlZC4KKyAgICAgICAgKEJveC5wcm90b3R5cGUuZXN0YWJs
aXNoZXNCbG9ja0Zvcm1hdHRpbmdDb250ZXh0KTogRGVsZXRlZC4KKyAgICAgICAgKEJveC5wcm90
b3R5cGUuZXN0YWJsaXNoZXNJbmxpbmVGb3JtYXR0aW5nQ29udGV4dCk6IERlbGV0ZWQuCisgICAg
ICAgIChCb3gucHJvdG90eXBlLmlzUG9zaXRpb25lZCk6IERlbGV0ZWQuCisgICAgICAgIChCb3gu
cHJvdG90eXBlLmlzUmVsYXRpdmVQb3NpdGlvbmVkKTogRGVsZXRlZC4KKyAgICAgICAgKEJveC5w
cm90b3R5cGUuaXNBYnNvbHV0ZVBvc2l0aW9uZWQpOiBEZWxldGVkLgorICAgICAgICAoQm94LnBy
b3RvdHlwZS5pc0ZpeGVkUG9zaXRpb25lZCk6IERlbGV0ZWQuCisgICAgICAgIChCb3gucHJvdG90
eXBlLmlzSW5GbG93KTogRGVsZXRlZC4KKyAgICAgICAgKEJveC5wcm90b3R5cGUuaXNPdXRPZkZs
b3dQb3NpdGlvbmVkKTogRGVsZXRlZC4KKyAgICAgICAgKEJveC5wcm90b3R5cGUuaXNJbkZsb3dQ
b3NpdGlvbmVkKTogRGVsZXRlZC4KKyAgICAgICAgKEJveC5wcm90b3R5cGUuaXNGbG9hdGluZ1Bv
c2l0aW9uZWQpOiBEZWxldGVkLgorICAgICAgICAoQm94LnByb3RvdHlwZS5pc0Zsb2F0aW5nT3JP
dXRPZkZsb3dQb3NpdGlvbmVkKTogRGVsZXRlZC4KKyAgICAgICAgKEJveC5wcm90b3R5cGUuaXNS
b290RWxlbWVudCk6IERlbGV0ZWQuCisgICAgICAgIChCb3gucHJvdG90eXBlLmNvbnRhaW5pbmdC
bG9jayk6IERlbGV0ZWQuCisgICAgICAgIChCb3gucHJvdG90eXBlLmJvcmRlckJveCk6IERlbGV0
ZWQuCisgICAgICAgIChCb3gucHJvdG90eXBlLnBhZGRpbmdCb3gpOiBEZWxldGVkLgorICAgICAg
ICAoQm94LnByb3RvdHlwZS5jb250ZW50Qm94KTogRGVsZXRlZC4KKyAgICAgICAgKiBMYXlvdXRS
ZWxvYWRlZC9MYXlvdXRUcmVlL0NvbnRhaW5lci5qczoKKyAgICAgICAgKENvbnRhaW5lcik6IERl
bGV0ZWQuCisgICAgICAgIChDb250YWluZXIucHJvdG90eXBlLmlzQ29udGFpbmVyKTogRGVsZXRl
ZC4KKyAgICAgICAgKENvbnRhaW5lci5wcm90b3R5cGUuc2V0Rmlyc3RDaGlsZCk6IERlbGV0ZWQu
CisgICAgICAgIChDb250YWluZXIucHJvdG90eXBlLnNldExhc3RDaGlsZCk6IERlbGV0ZWQuCisg
ICAgICAgIChDb250YWluZXIucHJvdG90eXBlLmZpcnN0Q2hpbGQpOiBEZWxldGVkLgorICAgICAg
ICAoQ29udGFpbmVyLnByb3RvdHlwZS5maXJzdEluRmxvd0NoaWxkKTogRGVsZXRlZC4KKyAgICAg
ICAgKENvbnRhaW5lci5wcm90b3R5cGUubGFzdENoaWxkKTogRGVsZXRlZC4KKyAgICAgICAgKENv
bnRhaW5lci5wcm90b3R5cGUubGFzdEluRmxvd0NoaWxkKTogRGVsZXRlZC4KKyAgICAgICAgKENv
bnRhaW5lci5wcm90b3R5cGUuaGFzQ2hpbGQpOiBEZWxldGVkLgorICAgICAgICAoQ29udGFpbmVy
LnByb3RvdHlwZS5oYXNJbkZsb3dDaGlsZCk6IERlbGV0ZWQuCisgICAgICAgICogTGF5b3V0UmVs
b2FkZWQvTGF5b3V0VHJlZS9Jbml0aWFsQmxvY2tDb250YWluZXIuanM6CisgICAgICAgIChJbml0
aWFsQmxvY2tDb250YWluZXIpOiBEZWxldGVkLgorICAgICAgICAoSW5pdGlhbEJsb2NrQ29udGFp
bmVyLnByb3RvdHlwZS5lc3RhYmxpc2hlc0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQpOiBEZWxldGVk
LgorICAgICAgICAoSW5pdGlhbEJsb2NrQ29udGFpbmVyLnByb3RvdHlwZS5wYWRkaW5nQm94KTog
RGVsZXRlZC4KKyAgICAgICAgKEluaXRpYWxCbG9ja0NvbnRhaW5lci5wcm90b3R5cGUuY29udGVu
dEJveCk6IERlbGV0ZWQuCisgICAgICAgICogTGF5b3V0UmVsb2FkZWQvTGF5b3V0VHJlZS9Jbmxp
bmVCb3guanM6CisgICAgICAgIChJbmxpbmVCb3gpOiBEZWxldGVkLgorICAgICAgICAoSW5saW5l
Qm94LnByb3RvdHlwZS5zZXRUZXh0KTogRGVsZXRlZC4KKyAgICAgICAgKElubGluZUJveC5wcm90
b3R5cGUudGV4dCk6IERlbGV0ZWQuCisgICAgICAgICogTGF5b3V0UmVsb2FkZWQvVHJlZUJ1aWxk
ZXIuanM6CisgICAgICAgIChUcmVlQnVpbGRlci5wcm90b3R5cGUuY3JlYXRlVHJlZSk6CisgICAg
ICAgIChUcmVlQnVpbGRlci5wcm90b3R5cGUuX2NyZWF0ZUFuZEF0dGFjaEJveCk6CisgICAgICAg
ICogTGF5b3V0UmVsb2FkZWQvVXRpbHMuanM6CisgICAgICAgIChVdGlscy5fZHVtcEJveCk6CisK
IDIwMTgtMDMtMTQgIENocmlzIEZsZWl6YWNoICA8Y2ZsZWl6YWNoQGFwcGxlLmNvbT4KIAogICAg
ICAgICBBWDogSW1wbGVtZW50IGFjY2Vzc2libGUgZGlzbWlzcyBhY3Rpb24gb24gaU9TCmRpZmYg
LS1naXQgYS9Ub29scy9MYXlvdXRSZWxvYWRlZC9Gb3JtYXR0aW5nQ29udGV4dC9CbG9ja0Zvcm1h
dHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5qcyBiL1Rvb2xzL0xheW91dFJlbG9hZGVkL0Zv
cm1hdHRpbmdDb250ZXh0L0Jsb2NrRm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0Lmpz
CmluZGV4IDQ2MDA5MGRlZjI1NzA2MDIyYTJjYzY1NjY0MTBkNDRhYzkyYTEzNzkuLjliOTA1NzNh
N2Q5YTk4N2QxNmExZjg3ODY3OGMxZGUyNWJmZjRmZDkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0xheW91
dFJlbG9hZGVkL0Zvcm1hdHRpbmdDb250ZXh0L0Jsb2NrRm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRp
bmdDb250ZXh0LmpzCisrKyBiL1Rvb2xzL0xheW91dFJlbG9hZGVkL0Zvcm1hdHRpbmdDb250ZXh0
L0Jsb2NrRm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmpzCkBAIC00NywzMyArNDcs
MzMgQEAgY2xhc3MgQmxvY2tGb3JtYXR0aW5nQ29udGV4dCBleHRlbmRzIEZvcm1hdHRpbmdDb250
ZXh0IHsKICAgICAgICAgd2hpbGUgKGxheW91dFN0YWNrLmxlbmd0aCkgewogICAgICAgICAgICAg
Ly8gVHJhdmVycyBkb3duIG9uIHRoZSBkZXNjZW5kYW50cyB1bnRpbCB3ZSBmaW5kIGEgbGVhZiBu
b2RlLgogICAgICAgICAgICAgd2hpbGUgKHRydWUpIHsKLSAgICAgICAgICAgICAgICBsZXQgYm94
ID0gbGF5b3V0U3RhY2tbbGF5b3V0U3RhY2subGVuZ3RoIC0gMV07Ci0gICAgICAgICAgICAgICAg
Ym94LnNldFdpZHRoKHRoaXMuY29tcHV0ZVdpZHRoKGJveCkpOwotICAgICAgICAgICAgICAgIGJv
eC5zZXRUb3BMZWZ0KHRoaXMuX2NvbXB1dGVTdGF0aWNQb3NpdGlvbihib3gpKTsKLSAgICAgICAg
ICAgICAgICBpZiAoYm94LmVzdGFibGlzaGVzRm9ybWF0dGluZ0NvbnRleHQoKSkgewotICAgICAg
ICAgICAgICAgICAgICBsYXlvdXRDb250ZXh0LmxheW91dEZvcm1hdHRpbmdDb250ZXh0KGJveC5l
c3RhYmxpc2hlZEZvcm1hdHRpbmdDb250ZXh0KCkpOworICAgICAgICAgICAgICAgIGxldCBsYXlv
dXRCb3ggPSBsYXlvdXRTdGFja1tsYXlvdXRTdGFjay5sZW5ndGggLSAxXTsKKyAgICAgICAgICAg
ICAgICB0aGlzLmNvbXB1dGVXaWR0aChsYXlvdXRCb3gpOworICAgICAgICAgICAgICAgIHRoaXMu
X2NvbXB1dGVTdGF0aWNQb3NpdGlvbihsYXlvdXRCb3gpOworICAgICAgICAgICAgICAgIGlmIChs
YXlvdXRCb3guZXN0YWJsaXNoZXNGb3JtYXR0aW5nQ29udGV4dCgpKSB7CisgICAgICAgICAgICAg
ICAgICAgIGxheW91dENvbnRleHQubGF5b3V0Rm9ybWF0dGluZ0NvbnRleHQobGF5b3V0Qm94LmVz
dGFibGlzaGVkRm9ybWF0dGluZ0NvbnRleHQoKSk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoIWJveC5pc0NvbnRhaW5l
cigpIHx8ICFib3guaGFzQ2hpbGQoKSkKKyAgICAgICAgICAgICAgICBpZiAoIWxheW91dEJveC5p
c0NvbnRhaW5lcigpIHx8ICFsYXlvdXRCb3guaGFzQ2hpbGQoKSkKICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgbGF5b3V0U3RhY2sucHVzaChib3guZmlyc3RDaGls
ZCgpKTsKKyAgICAgICAgICAgICAgICBsYXlvdXRTdGFjay5wdXNoKGxheW91dEJveC5maXJzdENo
aWxkKCkpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAvLyBDbGltYiBiYWNrIG9uIHRo
ZSBhbmNlc3RvcnMgYW5kIGNvbXB1dGUgaGVpZ2h0L2ZpbmFsIHBvc2l0aW9uLgogICAgICAgICAg
ICAgd2hpbGUgKGxheW91dFN0YWNrLmxlbmd0aCkgewogICAgICAgICAgICAgICAgIC8vIEFsbCBp
bmZsb3cgZGVzY2VuZGFudHMgKGlmIHRoZXJlIGFyZSBhbnkpIGFyZSBsYWlkIG91dCBieSBub3cu
IExldCdzIGNvbXB1dGUgdGhlIGJveCdzIGhlaWdodC4KLSAgICAgICAgICAgICAgICBsZXQgYm94
ID0gbGF5b3V0U3RhY2sucG9wKCk7Ci0gICAgICAgICAgICAgICAgYm94LnNldEhlaWdodCh0aGlz
LmNvbXB1dGVIZWlnaHQoYm94KSk7CisgICAgICAgICAgICAgICAgbGV0IGxheW91dEJveCA9IGxh
eW91dFN0YWNrLnBvcCgpOworICAgICAgICAgICAgICAgIHRoaXMuY29tcHV0ZUhlaWdodChsYXlv
dXRCb3gpOwogICAgICAgICAgICAgICAgIC8vIEFkanVzdCBwb3NpdGlvbiBub3cgdGhhdCB3ZSBo
YXZlIGFsbCB0aGUgcHJldmlvdXMgZmxvYXRzIHBsYWNlZCBpbiB0aGlzIGNvbnRleHQgLWlmIG5l
ZWRlZC4KLSAgICAgICAgICAgICAgICBib3guc2V0VG9wTGVmdCh0aGlzLmZsb2F0aW5nQ29udGV4
dCgpLmNvbXB1dGVQb3NpdGlvbihib3gpKTsKKyAgICAgICAgICAgICAgICB0aGlzLmZsb2F0aW5n
Q29udGV4dCgpLmNvbXB1dGVQb3NpdGlvbihsYXlvdXRCb3gpOwogICAgICAgICAgICAgICAgIC8v
IE1vdmUgcG9zaXRpb25lZCBjaGlsZHJlbiB0byB0aGVpciBmaW5hbCBwb3NpdGlvbi4KLSAgICAg
ICAgICAgICAgICBpZiAoYm94LmlzQ29udGFpbmVyKCkpIHsKLSAgICAgICAgICAgICAgICAgICAg
dGhpcy5fcGxhY2VJbkZsb3dQb3NpdGlvbmVkQ2hpbGRyZW4oYm94KTsKKyAgICAgICAgICAgICAg
ICBpZiAobGF5b3V0Qm94LmlzQ29udGFpbmVyKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgdGhp
cy5fcGxhY2VJbkZsb3dQb3NpdGlvbmVkQ2hpbGRyZW4obGF5b3V0Qm94KTsKICAgICAgICAgICAg
ICAgICAgICAgLy8gUGxhY2UgdGhlIG91dCBvZiBmbG93IGNvbnRlbnQuCi0gICAgICAgICAgICAg
ICAgICAgIHRoaXMuX3BsYWNlT3V0T2ZGbG93RGVzY2VuZGFudHMoYm94KTsKKyAgICAgICAgICAg
ICAgICAgICAgdGhpcy5fcGxhY2VPdXRPZkZsb3dEZXNjZW5kYW50cyhsYXlvdXRCb3gpOwogICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoYm94Lm5leHRTaWJsaW5nKCkpIHsK
LSAgICAgICAgICAgICAgICAgICAgbGF5b3V0U3RhY2sucHVzaChib3gubmV4dFNpYmxpbmcoKSk7
CisgICAgICAgICAgICAgICAgaWYgKGxheW91dEJveC5uZXh0U2libGluZygpKSB7CisgICAgICAg
ICAgICAgICAgICAgIGxheW91dFN0YWNrLnB1c2gobGF5b3V0Qm94Lm5leHRTaWJsaW5nKCkpOwog
ICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICB9CkBAIC04Miw1NSArODIsNTUgQEAgY2xhc3MgQmxvY2tGb3JtYXR0aW5nQ29udGV4dCBleHRl
bmRzIEZvcm1hdHRpbmdDb250ZXh0IHsKICAgICAgICAgdGhpcy5fcGxhY2VPdXRPZkZsb3dEZXNj
ZW5kYW50cyh0aGlzLnJvb3RDb250YWluZXIoKSk7CiAgICB9CiAKLSAgICBjb21wdXRlV2lkdGgo
Ym94KSB7Ci0gICAgICAgIGlmIChib3guaXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkpCi0gICAgICAg
ICAgICByZXR1cm4gdGhpcy5fY29tcHV0ZU91dE9mRmxvd1dpZHRoKGJveCk7Ci0gICAgICAgIGlm
IChib3guaXNGbG9hdGluZ1Bvc2l0aW9uZWQoKSkKLSAgICAgICAgICAgIHJldHVybiB0aGlzLl9j
b21wdXRlRmxvYXRpbmdXaWR0aChib3gpOwotICAgICAgICByZXR1cm4gdGhpcy5fY29tcHV0ZUlu
Rmxvd1dpZHRoKGJveCk7CisgICAgY29tcHV0ZVdpZHRoKGxheW91dEJveCkgeworICAgICAgICBp
ZiAobGF5b3V0Qm94LmlzT3V0T2ZGbG93UG9zaXRpb25lZCgpKQorICAgICAgICAgICAgcmV0dXJu
IHRoaXMuX2NvbXB1dGVPdXRPZkZsb3dXaWR0aChsYXlvdXRCb3gpOworICAgICAgICBpZiAobGF5
b3V0Qm94LmlzRmxvYXRpbmdQb3NpdGlvbmVkKCkpCisgICAgICAgICAgICByZXR1cm4gdGhpcy5f
Y29tcHV0ZUZsb2F0aW5nV2lkdGgobGF5b3V0Qm94KTsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2Nv
bXB1dGVJbkZsb3dXaWR0aChsYXlvdXRCb3gpOwogICAgIH0KIAotICAgIGNvbXB1dGVIZWlnaHQo
Ym94KSB7Ci0gICAgICAgIGlmIChib3guaXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkpCi0gICAgICAg
ICAgICByZXR1cm4gdGhpcy5fY29tcHV0ZU91dE9mRmxvd0hlaWdodChib3gpOwotICAgICAgICBp
ZiAoYm94LmlzRmxvYXRpbmdQb3NpdGlvbmVkKCkpCi0gICAgICAgICAgICByZXR1cm4gdGhpcy5f
Y29tcHV0ZUZsb2F0aW5nSGVpZ2h0KGJveCk7Ci0gICAgICAgIHJldHVybiB0aGlzLl9jb21wdXRl
SW5GbG93SGVpZ2h0KGJveCk7CisgICAgY29tcHV0ZUhlaWdodChsYXlvdXRCb3gpIHsKKyAgICAg
ICAgaWYgKGxheW91dEJveC5pc091dE9mRmxvd1Bvc2l0aW9uZWQoKSkKKyAgICAgICAgICAgIHJl
dHVybiB0aGlzLl9jb21wdXRlT3V0T2ZGbG93SGVpZ2h0KGxheW91dEJveCk7CisgICAgICAgIGlm
IChsYXlvdXRCb3guaXNGbG9hdGluZ1Bvc2l0aW9uZWQoKSkKKyAgICAgICAgICAgIHJldHVybiB0
aGlzLl9jb21wdXRlRmxvYXRpbmdIZWlnaHQobGF5b3V0Qm94KTsKKyAgICAgICAgcmV0dXJuIHRo
aXMuX2NvbXB1dGVJbkZsb3dIZWlnaHQobGF5b3V0Qm94KTsKICAgICB9CiAKLSAgICBtYXJnaW5U
b3AoYm94KSB7Ci0gICAgICAgIHJldHVybiBCbG9ja01hcmdpbkNvbGxhcHNlLm1hcmdpblRvcChi
b3gpOworICAgIG1hcmdpblRvcChsYXlvdXRCb3gpIHsKKyAgICAgICAgcmV0dXJuIEJsb2NrTWFy
Z2luQ29sbGFwc2UubWFyZ2luVG9wKGxheW91dEJveCk7CiAgICAgfQogCi0gICAgbWFyZ2luQm90
dG9tKGJveCkgewotICAgICAgICByZXR1cm4gQmxvY2tNYXJnaW5Db2xsYXBzZS5tYXJnaW5Cb3R0
b20oYm94KTsKKyAgICBtYXJnaW5Cb3R0b20obGF5b3V0Qm94KSB7CisgICAgICAgIHJldHVybiBC
bG9ja01hcmdpbkNvbGxhcHNlLm1hcmdpbkJvdHRvbShsYXlvdXRCb3gpOwogICAgIH0KIAotICAg
IF9jb21wdXRlU3RhdGljUG9zaXRpb24oYm94KSB7CisgICAgX2NvbXB1dGVTdGF0aWNQb3NpdGlv
bihsYXlvdXRCb3gpIHsKICAgICAgICAgLy8gSW4gYSBibG9jayBmb3JtYXR0aW5nIGNvbnRleHQs
IGJveGVzIGFyZSBsYWlkIG91dCBvbmUgYWZ0ZXIgdGhlIG90aGVyLCB2ZXJ0aWNhbGx5LCBiZWdp
bm5pbmcgYXQgdGhlIHRvcCBvZiBhIGNvbnRhaW5pbmcgYmxvY2suCiAgICAgICAgIC8vIFRoZSB2
ZXJ0aWNhbCBkaXN0YW5jZSBiZXR3ZWVuIHR3byBzaWJsaW5nIGJveGVzIGlzIGRldGVybWluZWQg
YnkgdGhlICdtYXJnaW4nIHByb3BlcnRpZXMuCiAgICAgICAgIC8vIFZlcnRpY2FsIG1hcmdpbnMg
YmV0d2VlbiBhZGphY2VudCBibG9jay1sZXZlbCBib3hlcyBpbiBhIGJsb2NrIGZvcm1hdHRpbmcg
Y29udGV4dCBjb2xsYXBzZS4KLSAgICAgICAgbGV0IHBhcmVudCA9IGJveC5wYXJlbnQoKTsKKyAg
ICAgICAgbGV0IHBhcmVudCA9IGxheW91dEJveC5wYXJlbnQoKTsKICAgICAgICAgLy8gU3RhcnQg
ZnJvbSB0aGUgdG9wIG9mIHRoZSBjb250YWluZXIncyBjb250ZW50IGJveC4KLSAgICAgICAgbGV0
IHByZXZpb3VzSW5GbG93U2libGluZyA9IGJveC5wcmV2aW91c0luRmxvd1NpYmxpbmcoKTsKKyAg
ICAgICAgbGV0IHByZXZpb3VzSW5GbG93U2libGluZyA9IGxheW91dEJveC5wcmV2aW91c0luRmxv
d1NpYmxpbmcoKTsKICAgICAgICAgbGV0IGNvbnRlbnRCb3R0b20gPSBwcmV2aW91c0luRmxvd1Np
YmxpbmcgPyBwcmV2aW91c0luRmxvd1NpYmxpbmcuYm90dG9tUmlnaHQoKS50b3AoKSArIHRoaXMu
bWFyZ2luQm90dG9tKHByZXZpb3VzSW5GbG93U2libGluZykgOiBwYXJlbnQuY29udGVudEJveCgp
LnRvcCgpOwogICAgICAgICBsZXQgcG9zaXRpb24gPSBuZXcgTGF5b3V0UG9pbnQoY29udGVudEJv
dHRvbSwgcGFyZW50LmNvbnRlbnRCb3goKS5sZWZ0KCkpOwotICAgICAgICBwb3NpdGlvbi5tb3Zl
QnkobmV3IExheW91dFNpemUodGhpcy5tYXJnaW5MZWZ0KGJveCksIHRoaXMubWFyZ2luVG9wKGJv
eCkpKTsKLSAgICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICBwb3NpdGlvbi5tb3ZlQnko
bmV3IExheW91dFNpemUodGhpcy5tYXJnaW5MZWZ0KGxheW91dEJveCksIHRoaXMubWFyZ2luVG9w
KGxheW91dEJveCkpKTsKKyAgICAgICAgbGF5b3V0Qm94LnNldFRvcExlZnQocG9zaXRpb24pOwog
ICAgIH0KIAogICAgIF9wbGFjZUluRmxvd1Bvc2l0aW9uZWRDaGlsZHJlbihjb250YWluZXIpIHsK
ICAgICAgICAgZm9yIChsZXQgaW5GbG93Q2hpbGQgPSBjb250YWluZXIuZmlyc3RJbkZsb3dDaGls
ZCgpOyBpbkZsb3dDaGlsZDsgaW5GbG93Q2hpbGQgPSBpbkZsb3dDaGlsZC5uZXh0SW5GbG93U2li
bGluZygpKQotICAgICAgICAgICAgaW5GbG93Q2hpbGQuc2V0VG9wTGVmdCh0aGlzLl9jb21wdXRl
SW5GbG93UG9zaXRpb25lZFBvc2l0aW9uKGluRmxvd0NoaWxkKSk7CisgICAgICAgICAgICB0aGlz
Ll9jb21wdXRlSW5GbG93UG9zaXRpb25lZFBvc2l0aW9uKGluRmxvd0NoaWxkKTsKICAgICB9CiAK
ICAgICBfcGxhY2VPdXRPZkZsb3dEZXNjZW5kYW50cyhjb250YWluZXIpIHsKICAgICAgICAgbGV0
IG91dE9mRmxvd0Rlc2NlbmRhbnRzID0gVXRpbHMuY29sbGVjdE91dE9mRmxvd0Rlc2NlbmRhbnRz
KGNvbnRhaW5lcik7CiAgICAgICAgIGZvciAobGV0IG91dE9mRmxvd0JveCBvZiBvdXRPZkZsb3dE
ZXNjZW5kYW50cykKLSAgICAgICAgICAgIG91dE9mRmxvd0JveC5zZXRUb3BMZWZ0KHRoaXMuX2Nv
bXB1dGVPdXRPZkZsb3dQb3NpdGlvbihvdXRPZkZsb3dCb3gpKTsKKyAgICAgICAgICAgIHRoaXMu
X2NvbXB1dGVPdXRPZkZsb3dQb3NpdGlvbihvdXRPZkZsb3dCb3gpOwogICAgIH0KIAotICAgIF9j
b21wdXRlT3V0T2ZGbG93V2lkdGgoYm94KSB7CisgICAgX2NvbXB1dGVPdXRPZkZsb3dXaWR0aChs
YXlvdXRCb3gpIHsKICAgICAgICAgLy8gMTAuMy43IEFic29sdXRlbHkgcG9zaXRpb25lZCwgbm9u
LXJlcGxhY2VkIGVsZW1lbnRzCiAKICAgICAgICAgLy8gMS4gJ2xlZnQnIGFuZCAnd2lkdGgnIGFy
ZSAnYXV0bycgYW5kICdyaWdodCcgaXMgbm90ICdhdXRvJywgdGhlbiB0aGUgd2lkdGggaXMgc2hy
aW5rLXRvLWZpdC4gVGhlbiBzb2x2ZSBmb3IgJ2xlZnQnCkBAIC0xNDIsMzcgKzE0MiwzOCBAQCBj
bGFzcyBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0IGV4dGVuZHMgRm9ybWF0dGluZ0NvbnRleHQgewog
ICAgICAgICAvLyA1LiAnd2lkdGgnIGlzICdhdXRvJywgJ2xlZnQnIGFuZCAncmlnaHQnIGFyZSBu
b3QgJ2F1dG8nLCB0aGVuIHNvbHZlIGZvciAnd2lkdGgnCiAgICAgICAgIC8vIDYuICdyaWdodCcg
aXMgJ2F1dG8nLCAnbGVmdCcgYW5kICd3aWR0aCcgYXJlIG5vdCAnYXV0bycsIHRoZW4gc29sdmUg
Zm9yICdyaWdodCcKICAgICAgICAgbGV0IHdpZHRoID0gTnVtYmVyLk5hTjsKLSAgICAgICAgaWYg
KFV0aWxzLmlzV2lkdGhBdXRvKGJveCkgJiYgVXRpbHMuaXNMZWZ0QXV0byhib3gpICYmIFV0aWxz
LmlzUmlnaHRBdXRvKGJveCkpCi0gICAgICAgICAgICB3aWR0aCA9IHRoaXMuX3Nocmlua1RvRml0
V2lkdGgoYm94KTsKLSAgICAgICAgZWxzZSBpZiAoVXRpbHMuaXNMZWZ0QXV0byhib3gpICYmIFV0
aWxzLmlzV2lkdGhBdXRvKGJveCkgJiYgIVV0aWxzLmlzUmlnaHRBdXRvKGJveCkpCi0gICAgICAg
ICAgICB3aWR0aCA9IHRoaXMuX3Nocmlua1RvRml0V2lkdGgoYm94KTsgLy8gMQotICAgICAgICBl
bHNlIGlmIChVdGlscy5pc0xlZnRBdXRvKGJveCkgJiYgVXRpbHMuaXNSaWdodEF1dG8oYm94KSAm
JiAhVXRpbHMuaXNXaWR0aEF1dG8oYm94KSkKLSAgICAgICAgICAgIHdpZHRoID0gVXRpbHMud2lk
dGgoYm94KTsgLy8gMgotICAgICAgICBlbHNlIGlmIChVdGlscy5pc1dpZHRoQXV0byhib3gpICYm
IFV0aWxzLmlzUmlnaHRBdXRvKGJveCkgJiYgIVV0aWxzLmlzTGVmdEF1dG8oYm94KSkKLSAgICAg
ICAgICAgIHdpZHRoID0gdGhpcy5fc2hyaW5rVG9GaXRXaWR0aChib3gpOyAvLyAzCi0gICAgICAg
IGVsc2UgaWYgKFV0aWxzLmlzTGVmdEF1dG8oYm94KSAmJiAhVXRpbHMuaXNXaWR0aEF1dG8oYm94
KSAmJiAhVXRpbHMuaXNSaWdodEF1dG8oYm94KSkKLSAgICAgICAgICAgIHdpZHRoID0gVXRpbHMu
d2lkdGgoYm94KTsgLy8gNAotICAgICAgICBlbHNlIGlmIChVdGlscy5pc1dpZHRoQXV0byhib3gp
ICYmICFVdGlscy5pc0xlZnRBdXRvKGJveCkgJiYgIVV0aWxzLmlzUmlnaHRBdXRvKGJveCkpCi0g
ICAgICAgICAgICB3aWR0aCA9IE1hdGgubWF4KDAsIGJveC5jb250YWluaW5nQmxvY2soKS5jb250
ZW50Qm94KCkud2lkdGgoKSAtIFV0aWxzLnJpZ2h0KGJveCkgLSBVdGlscy5sZWZ0KGJveCkpOyAv
LyA1Ci0gICAgICAgIGVsc2UgaWYgKFV0aWxzLmlzUmlnaHRBdXRvKGJveCkgJiYgIVV0aWxzLmlz
TGVmdEF1dG8oYm94KSAmJiAhVXRpbHMuaXNXaWR0aEF1dG8oYm94KSkKLSAgICAgICAgICAgIHdp
ZHRoID0gVXRpbHMud2lkdGgoYm94KTsgLy8gNgorICAgICAgICBpZiAoVXRpbHMuaXNXaWR0aEF1
dG8obGF5b3V0Qm94KSAmJiBVdGlscy5pc0xlZnRBdXRvKGxheW91dEJveCkgJiYgVXRpbHMuaXNS
aWdodEF1dG8obGF5b3V0Qm94KSkKKyAgICAgICAgICAgIHdpZHRoID0gdGhpcy5fc2hyaW5rVG9G
aXRXaWR0aChsYXlvdXRCb3gpOworICAgICAgICBlbHNlIGlmIChVdGlscy5pc0xlZnRBdXRvKGxh
eW91dEJveCkgJiYgVXRpbHMuaXNXaWR0aEF1dG8obGF5b3V0Qm94KSAmJiAhVXRpbHMuaXNSaWdo
dEF1dG8obGF5b3V0Qm94KSkKKyAgICAgICAgICAgIHdpZHRoID0gdGhpcy5fc2hyaW5rVG9GaXRX
aWR0aChsYXlvdXRCb3gpOyAvLyAxCisgICAgICAgIGVsc2UgaWYgKFV0aWxzLmlzTGVmdEF1dG8o
bGF5b3V0Qm94KSAmJiBVdGlscy5pc1JpZ2h0QXV0byhsYXlvdXRCb3gpICYmICFVdGlscy5pc1dp
ZHRoQXV0byhsYXlvdXRCb3gpKQorICAgICAgICAgICAgd2lkdGggPSBVdGlscy53aWR0aChsYXlv
dXRCb3gpOyAvLyAyCisgICAgICAgIGVsc2UgaWYgKFV0aWxzLmlzV2lkdGhBdXRvKGxheW91dEJv
eCkgJiYgVXRpbHMuaXNSaWdodEF1dG8obGF5b3V0Qm94KSAmJiAhVXRpbHMuaXNMZWZ0QXV0byhs
YXlvdXRCb3gpKQorICAgICAgICAgICAgd2lkdGggPSB0aGlzLl9zaHJpbmtUb0ZpdFdpZHRoKGxh
eW91dEJveCk7IC8vIDMKKyAgICAgICAgZWxzZSBpZiAoVXRpbHMuaXNMZWZ0QXV0byhsYXlvdXRC
b3gpICYmICFVdGlscy5pc1dpZHRoQXV0byhsYXlvdXRCb3gpICYmICFVdGlscy5pc1JpZ2h0QXV0
byhsYXlvdXRCb3gpKQorICAgICAgICAgICAgd2lkdGggPSBVdGlscy53aWR0aChsYXlvdXRCb3gp
OyAvLyA0CisgICAgICAgIGVsc2UgaWYgKFV0aWxzLmlzV2lkdGhBdXRvKGxheW91dEJveCkgJiYg
IVV0aWxzLmlzTGVmdEF1dG8obGF5b3V0Qm94KSAmJiAhVXRpbHMuaXNSaWdodEF1dG8obGF5b3V0
Qm94KSkKKyAgICAgICAgICAgIHdpZHRoID0gTWF0aC5tYXgoMCwgbGF5b3V0Qm94LmNvbnRhaW5p
bmdCbG9jaygpLmNvbnRlbnRCb3goKS53aWR0aCgpIC0gVXRpbHMucmlnaHQobGF5b3V0Qm94KSAt
IFV0aWxzLmxlZnQobGF5b3V0Qm94KSk7IC8vIDUKKyAgICAgICAgZWxzZSBpZiAoVXRpbHMuaXNS
aWdodEF1dG8obGF5b3V0Qm94KSAmJiAhVXRpbHMuaXNMZWZ0QXV0byhsYXlvdXRCb3gpICYmICFV
dGlscy5pc1dpZHRoQXV0byhsYXlvdXRCb3gpKQorICAgICAgICAgICAgd2lkdGggPSBVdGlscy53
aWR0aChsYXlvdXRCb3gpOyAvLyA2CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gd2lkdGggKyBVdGlscy5jb21wdXRlZEhvcml6
b250YWxCb3JkZXJBbmRQYWRkaW5nKGJveCk7CisgICAgICAgIHdpZHRoICs9IFV0aWxzLmNvbXB1
dGVkSG9yaXpvbnRhbEJvcmRlckFuZFBhZGRpbmcobGF5b3V0Qm94KTsKKyAgICAgICAgbGF5b3V0
Qm94LnNldFdpZHRoKHdpZHRoKTsKICAgICB9CiAKLSAgICBfY29tcHV0ZUZsb2F0aW5nV2lkdGgo
Ym94KSB7CisgICAgX2NvbXB1dGVGbG9hdGluZ1dpZHRoKGxheW91dEJveCkgewogICAgICAgICAv
LyBGSVhNRTogbWlzc2luZyBjYXNlcwotICAgICAgICByZXR1cm4gVXRpbHMud2lkdGgoYm94KSAr
IFV0aWxzLmNvbXB1dGVkSG9yaXpvbnRhbEJvcmRlckFuZFBhZGRpbmcoYm94KTsKKyAgICAgICAg
bGF5b3V0Qm94LnNldFdpZHRoKFV0aWxzLndpZHRoKGxheW91dEJveCkgKyBVdGlscy5jb21wdXRl
ZEhvcml6b250YWxCb3JkZXJBbmRQYWRkaW5nKGxheW91dEJveCkpOwogICAgIH0KIAotICAgIF9j
b21wdXRlSW5GbG93V2lkdGgoYm94KSB7Ci0gICAgICAgIGlmIChVdGlscy5pc1dpZHRoQXV0byhi
b3gpKQotICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2NvbXB1dGVIb3Jpem9udGFsQ29uc3RyYWlu
dChib3gpOwotICAgICAgICByZXR1cm4gVXRpbHMud2lkdGgoYm94KSArIFV0aWxzLmNvbXB1dGVk
SG9yaXpvbnRhbEJvcmRlckFuZFBhZGRpbmcoYm94KTsKKyAgICBfY29tcHV0ZUluRmxvd1dpZHRo
KGxheW91dEJveCkgeworICAgICAgICBpZiAoVXRpbHMuaXNXaWR0aEF1dG8obGF5b3V0Qm94KSkK
KyAgICAgICAgICAgIHJldHVybiBsYXlvdXRCb3guc2V0V2lkdGgodGhpcy5faG9yaXpvbnRhbENv
bnN0cmFpbnQobGF5b3V0Qm94KSk7CisgICAgICAgIHJldHVybiBsYXlvdXRCb3guc2V0V2lkdGgo
VXRpbHMud2lkdGgobGF5b3V0Qm94KSArIFV0aWxzLmNvbXB1dGVkSG9yaXpvbnRhbEJvcmRlckFu
ZFBhZGRpbmcobGF5b3V0Qm94KSk7CiAgICAgfQogCi0gICAgX2NvbXB1dGVPdXRPZkZsb3dIZWln
aHQoYm94KSB7CisgICAgX2NvbXB1dGVPdXRPZkZsb3dIZWlnaHQobGF5b3V0Qm94KSB7CiAgICAg
ICAgIC8vIDEuIElmIGFsbCB0aHJlZSBvZiAndG9wJywgJ2hlaWdodCcsIGFuZCAnYm90dG9tJyBh
cmUgYXV0bywgc2V0ICd0b3AnIHRvIHRoZSBzdGF0aWMgcG9zaXRpb24gYW5kIGFwcGx5IHJ1bGUg
bnVtYmVyIHRocmVlIGJlbG93LgogICAgICAgICAvLyAyLiBJZiBub25lIG9mIHRoZSB0aHJlZSBh
cmUgJ2F1dG8nOiBJZiBib3RoICdtYXJnaW4tdG9wJyBhbmQgJ21hcmdpbi1ib3R0b20nIGFyZSAn
YXV0bycsIHNvbHZlIHRoZSBlcXVhdGlvbiB1bmRlcgogICAgICAgICAvLyAgICB0aGUgZXh0cmEg
Y29uc3RyYWludCB0aGF0IHRoZSB0d28gbWFyZ2lucyBnZXQgZXF1YWwgdmFsdWVzLiBJZiBvbmUg
b2YgJ21hcmdpbi10b3AnIG9yICdtYXJnaW4tYm90dG9tJyBpcyAnYXV0bycsCkBAIC0xODksNDkg
KzE5MCw1MCBAQCBjbGFzcyBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0IGV4dGVuZHMgRm9ybWF0dGlu
Z0NvbnRleHQgewogICAgICAgICAvLyA3LiAnaGVpZ2h0JyBpcyAnYXV0bycsICd0b3AnIGFuZCAn
Ym90dG9tJyBhcmUgbm90ICdhdXRvJywgdGhlbiAnYXV0bycgdmFsdWVzIGZvciAnbWFyZ2luLXRv
cCcgYW5kICdtYXJnaW4tYm90dG9tJyBhcmUgc2V0IHRvIDAgYW5kIHNvbHZlIGZvciAnaGVpZ2h0
JwogICAgICAgICAvLyA4LiAnYm90dG9tJyBpcyAnYXV0bycsICd0b3AnIGFuZCAnaGVpZ2h0JyBh
cmUgbm90ICdhdXRvJywgdGhlbiBzZXQgJ2F1dG8nIHZhbHVlcyBmb3IgJ21hcmdpbi10b3AnIGFu
ZCAnbWFyZ2luLWJvdHRvbScgdG8gMCBhbmQgc29sdmUgZm9yICdib3R0b20nCiAgICAgICAgIGxl
dCBoZWlnaHQgPSBOdW1iZXIuTmFOOwotICAgICAgICBpZiAoVXRpbHMuaXNIZWlnaHRBdXRvKGJv
eCkgJiYgVXRpbHMuaXNCb3R0b21BdXRvKGJveCkgJiYgVXRpbHMuaXNUb3BBdXRvKGJveCkpCi0g
ICAgICAgICAgICBoZWlnaHQgPSB0aGlzLl9jb21wdXRlQ29udGVudEhlaWdodChib3gpOyAvLyAx
Ci0gICAgICAgIGVsc2UgaWYgKFV0aWxzLmlzVG9wQXV0bygoYm94KSkgJiYgVXRpbHMuaXNIZWln
aHRBdXRvKChib3gpKSAmJiAhVXRpbHMuaXNCb3R0b21BdXRvKChib3gpKSkKLSAgICAgICAgICAg
IGhlaWdodCA9IHRoaXMuX2NvbXB1dGVDb250ZW50SGVpZ2h0KGJveCk7IC8vIDMKLSAgICAgICAg
ZWxzZSBpZiAoVXRpbHMuaXNUb3BBdXRvKChib3gpKSAmJiBVdGlscy5pc0JvdHRvbUF1dG8oKGJv
eCkpICYmICFVdGlscy5pc0hlaWdodEF1dG8oKGJveCkpKQotICAgICAgICAgICAgaGVpZ2h0ID0g
VXRpbHMuaGVpZ2h0KGJveCk7IC8vIDQKLSAgICAgICAgZWxzZSBpZiAoVXRpbHMuaXNIZWlnaHRB
dXRvKChib3gpKSAmJiBVdGlscy5pc0JvdHRvbUF1dG8oKGJveCkpICYmICFVdGlscy5pc1RvcEF1
dG8oKGJveCkpKQotICAgICAgICAgICAgaGVpZ2h0ID0gdGhpcy5fY29tcHV0ZUNvbnRlbnRIZWln
aHQoYm94KTsgLy8gNQotICAgICAgICBlbHNlIGlmIChVdGlscy5pc1RvcEF1dG8oKGJveCkpICYm
ICFVdGlscy5pc0hlaWdodEF1dG8oKGJveCkpICYmICFVdGlscy5pc0JvdHRvbUF1dG8oKGJveCkp
KQotICAgICAgICAgICAgaGVpZ2h0ID0gVXRpbHMuaGVpZ2h0KGJveCk7IC8vIDYKLSAgICAgICAg
ZWxzZSBpZiAoVXRpbHMuaXNIZWlnaHRBdXRvKChib3gpKSAmJiAhVXRpbHMuaXNUb3BBdXRvKChi
b3gpKSAmJiAhVXRpbHMuaXNCb3R0b21BdXRvKChib3gpKSkKLSAgICAgICAgICAgIGhlaWdodCA9
IE1hdGgubWF4KDAsIGJveC5jb250YWluaW5nQmxvY2soKS5jb250ZW50Qm94KCkuaGVpZ2h0KCkg
LSBVdGlscy5ib3R0b20oYm94KSAtIFV0aWxzLnRvcChib3gpKTsgLy8gNwotICAgICAgICBlbHNl
IGlmIChVdGlscy5pc0JvdHRvbUF1dG8oKGJveCkpICYmICFVdGlscy5pc1RvcEF1dG8oKGJveCkp
ICYmICFVdGlscy5pc0hlaWdodEF1dG8oKGJveCkpKQotICAgICAgICAgICAgaGVpZ2h0ID0gVXRp
bHMuaGVpZ2h0KGJveCk7IC8vIDgKKyAgICAgICAgaWYgKFV0aWxzLmlzSGVpZ2h0QXV0byhsYXlv
dXRCb3gpICYmIFV0aWxzLmlzQm90dG9tQXV0byhsYXlvdXRCb3gpICYmIFV0aWxzLmlzVG9wQXV0
byhsYXlvdXRCb3gpKQorICAgICAgICAgICAgaGVpZ2h0ID0gdGhpcy5fY29udGVudEhlaWdodChs
YXlvdXRCb3gpOyAvLyAxCisgICAgICAgIGVsc2UgaWYgKFV0aWxzLmlzVG9wQXV0bygobGF5b3V0
Qm94KSkgJiYgVXRpbHMuaXNIZWlnaHRBdXRvKChsYXlvdXRCb3gpKSAmJiAhVXRpbHMuaXNCb3R0
b21BdXRvKChsYXlvdXRCb3gpKSkKKyAgICAgICAgICAgIGhlaWdodCA9IHRoaXMuX2NvbnRlbnRI
ZWlnaHQobGF5b3V0Qm94KTsgLy8gMworICAgICAgICBlbHNlIGlmIChVdGlscy5pc1RvcEF1dG8o
KGxheW91dEJveCkpICYmIFV0aWxzLmlzQm90dG9tQXV0bygobGF5b3V0Qm94KSkgJiYgIVV0aWxz
LmlzSGVpZ2h0QXV0bygobGF5b3V0Qm94KSkpCisgICAgICAgICAgICBoZWlnaHQgPSBVdGlscy5o
ZWlnaHQobGF5b3V0Qm94KTsgLy8gNAorICAgICAgICBlbHNlIGlmIChVdGlscy5pc0hlaWdodEF1
dG8oKGxheW91dEJveCkpICYmIFV0aWxzLmlzQm90dG9tQXV0bygobGF5b3V0Qm94KSkgJiYgIVV0
aWxzLmlzVG9wQXV0bygobGF5b3V0Qm94KSkpCisgICAgICAgICAgICBoZWlnaHQgPSB0aGlzLl9j
b250ZW50SGVpZ2h0KGxheW91dEJveCk7IC8vIDUKKyAgICAgICAgZWxzZSBpZiAoVXRpbHMuaXNU
b3BBdXRvKChsYXlvdXRCb3gpKSAmJiAhVXRpbHMuaXNIZWlnaHRBdXRvKChsYXlvdXRCb3gpKSAm
JiAhVXRpbHMuaXNCb3R0b21BdXRvKChsYXlvdXRCb3gpKSkKKyAgICAgICAgICAgIGhlaWdodCA9
IFV0aWxzLmhlaWdodChsYXlvdXRCb3gpOyAvLyA2CisgICAgICAgIGVsc2UgaWYgKFV0aWxzLmlz
SGVpZ2h0QXV0bygobGF5b3V0Qm94KSkgJiYgIVV0aWxzLmlzVG9wQXV0bygobGF5b3V0Qm94KSkg
JiYgIVV0aWxzLmlzQm90dG9tQXV0bygobGF5b3V0Qm94KSkpCisgICAgICAgICAgICBoZWlnaHQg
PSBNYXRoLm1heCgwLCBsYXlvdXRCb3guY29udGFpbmluZ0Jsb2NrKCkuY29udGVudEJveCgpLmhl
aWdodCgpIC0gVXRpbHMuYm90dG9tKGxheW91dEJveCkgLSBVdGlscy50b3AobGF5b3V0Qm94KSk7
IC8vIDcKKyAgICAgICAgZWxzZSBpZiAoVXRpbHMuaXNCb3R0b21BdXRvKChsYXlvdXRCb3gpKSAm
JiAhVXRpbHMuaXNUb3BBdXRvKChsYXlvdXRCb3gpKSAmJiAhVXRpbHMuaXNIZWlnaHRBdXRvKChs
YXlvdXRCb3gpKSkKKyAgICAgICAgICAgIGhlaWdodCA9IFV0aWxzLmhlaWdodChsYXlvdXRCb3gp
OyAvLyA4CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwot
ICAgICAgICByZXR1cm4gaGVpZ2h0ICsgVXRpbHMuY29tcHV0ZWRWZXJ0aWNhbEJvcmRlckFuZFBh
ZGRpbmcoYm94KTsKKyAgICAgICAgaGVpZ2h0ICs9IFV0aWxzLmNvbXB1dGVkVmVydGljYWxCb3Jk
ZXJBbmRQYWRkaW5nKGxheW91dEJveCk7CisgICAgICAgIGxheW91dEJveC5zZXRIZWlnaHQoaGVp
Z2h0KTsKICAgICB9CiAKLSAgICBfY29tcHV0ZUZsb2F0aW5nSGVpZ2h0KGJveCkgeworICAgIF9j
b21wdXRlRmxvYXRpbmdIZWlnaHQobGF5b3V0Qm94KSB7CiAgICAgICAgIC8vIEZJWE1FOiBtaXNz
aW5nIGNhc2VzCi0gICAgICAgIHJldHVybiBVdGlscy5oZWlnaHQoYm94KSArIFV0aWxzLmNvbXB1
dGVkVmVydGljYWxCb3JkZXJBbmRQYWRkaW5nKGJveCk7CisgICAgICAgIGxheW91dEJveC5zZXRI
ZWlnaHQoVXRpbHMuaGVpZ2h0KGxheW91dEJveCkgKyBVdGlscy5jb21wdXRlZFZlcnRpY2FsQm9y
ZGVyQW5kUGFkZGluZyhsYXlvdXRCb3gpKTsKICAgICB9CiAKLSAgICBfY29tcHV0ZUluRmxvd0hl
aWdodChib3gpIHsKLSAgICAgICAgaWYgKFV0aWxzLmlzSGVpZ2h0QXV0byhib3gpKSB7CisgICAg
X2NvbXB1dGVJbkZsb3dIZWlnaHQobGF5b3V0Qm94KSB7CisgICAgICAgIGlmIChVdGlscy5pc0hl
aWdodEF1dG8obGF5b3V0Qm94KSkgewogICAgICAgICAgICAgLy8gT25seSBjaGlsZHJlbiBpbiB0
aGUgbm9ybWFsIGZsb3cgYXJlIHRha2VuIGludG8gYWNjb3VudCAoaS5lLiwgZmxvYXRpbmcgYm94
ZXMgYW5kIGFic29sdXRlbHkgcG9zaXRpb25lZCBib3hlcyBhcmUgaWdub3JlZCwKICAgICAgICAg
ICAgIC8vIGFuZCByZWxhdGl2ZWx5IHBvc2l0aW9uZWQgYm94ZXMgYXJlIGNvbnNpZGVyZWQgd2l0
aG91dCB0aGVpciBvZmZzZXQpLiBOb3RlIHRoYXQgdGhlIGNoaWxkIGJveCBtYXkgYmUgYW4gYW5v
bnltb3VzIGJsb2NrIGJveC4KIAogICAgICAgICAgICAgLy8gVGhlIGVsZW1lbnQncyBoZWlnaHQg
aXMgdGhlIGRpc3RhbmNlIGZyb20gaXRzIHRvcCBjb250ZW50IGVkZ2UgdG8gdGhlIGZpcnN0IGFw
cGxpY2FibGUgb2YgdGhlIGZvbGxvd2luZzoKICAgICAgICAgICAgIC8vIDEuIHRoZSBib3R0b20g
ZWRnZSBvZiB0aGUgbGFzdCBsaW5lIGJveCwgaWYgdGhlIGJveCBlc3RhYmxpc2hlcyBhIGlubGlu
ZSBmb3JtYXR0aW5nIGNvbnRleHQgd2l0aCBvbmUgb3IgbW9yZSBsaW5lcwotICAgICAgICAgICAg
cmV0dXJuIHRoaXMuX2NvbXB1dGVDb250ZW50SGVpZ2h0KGJveCkgKyBVdGlscy5jb21wdXRlZFZl
cnRpY2FsQm9yZGVyQW5kUGFkZGluZyhib3gpOworICAgICAgICAgICAgcmV0dXJuIGxheW91dEJv
eC5zZXRIZWlnaHQodGhpcy5fY29udGVudEhlaWdodChsYXlvdXRCb3gpICsgVXRpbHMuY29tcHV0
ZWRWZXJ0aWNhbEJvcmRlckFuZFBhZGRpbmcobGF5b3V0Qm94KSk7CiAgICAgICAgIH0KLSAgICAg
ICAgcmV0dXJuIFV0aWxzLmhlaWdodChib3gpICsgVXRpbHMuY29tcHV0ZWRWZXJ0aWNhbEJvcmRl
ckFuZFBhZGRpbmcoYm94KTsKKyAgICAgICAgcmV0dXJuIGxheW91dEJveC5zZXRIZWlnaHQoVXRp
bHMuaGVpZ2h0KGxheW91dEJveCkgKyBVdGlscy5jb21wdXRlZFZlcnRpY2FsQm9yZGVyQW5kUGFk
ZGluZyhsYXlvdXRCb3gpKTsKICAgICB9CiAKLSAgICBfY29tcHV0ZUhvcml6b250YWxDb25zdHJh
aW50KGJveCkgewotICAgICAgICBsZXQgaG9yaXpvbnRhbENvbnN0cmFpbnQgPSBib3guY29udGFp
bmluZ0Jsb2NrKCkuY29udGVudEJveCgpLndpZHRoKCk7Ci0gICAgICAgIGhvcml6b250YWxDb25z
dHJhaW50IC09IHRoaXMubWFyZ2luTGVmdChib3gpICsgdGhpcy5tYXJnaW5SaWdodChib3gpOwor
ICAgIF9ob3Jpem9udGFsQ29uc3RyYWludChsYXlvdXRCb3gpIHsKKyAgICAgICAgbGV0IGhvcml6
b250YWxDb25zdHJhaW50ID0gbGF5b3V0Qm94LmNvbnRhaW5pbmdCbG9jaygpLmNvbnRlbnRCb3go
KS53aWR0aCgpOworICAgICAgICBob3Jpem9udGFsQ29uc3RyYWludCAtPSB0aGlzLm1hcmdpbkxl
ZnQobGF5b3V0Qm94KSArIHRoaXMubWFyZ2luUmlnaHQobGF5b3V0Qm94KTsKICAgICAgICAgcmV0
dXJuIGhvcml6b250YWxDb25zdHJhaW50OwogICAgIH0KIAotICAgIF9jb21wdXRlQ29udGVudEhl
aWdodChib3gpIHsKKyAgICBfY29udGVudEhlaWdodChsYXlvdXRCb3gpIHsKICAgICAgICAgLy8g
MTAuNi4zIEJsb2NrLWxldmVsIG5vbi1yZXBsYWNlZCBlbGVtZW50cyBpbiBub3JtYWwgZmxvdyB3
aGVuICdvdmVyZmxvdycgY29tcHV0ZXMgdG8gJ3Zpc2libGUnCiAgICAgICAgIC8vIFRoZSBlbGVt
ZW50J3MgaGVpZ2h0IGlzIHRoZSBkaXN0YW5jZSBmcm9tIGl0cyB0b3AgY29udGVudCBlZGdlIHRv
IHRoZSBmaXJzdCBhcHBsaWNhYmxlIG9mIHRoZSBmb2xsb3dpbmc6CiAgICAgICAgIC8vIDEuIHRo
ZSBib3R0b20gZWRnZSBvZiB0aGUgbGFzdCBsaW5lIGJveCwgaWYgdGhlIGJveCBlc3RhYmxpc2hl
cyBhIGlubGluZSBmb3JtYXR0aW5nIGNvbnRleHQgd2l0aCBvbmUgb3IgbW9yZSBsaW5lcwpAQCAt
MjQwLDgyICsyNDIsODYgQEAgY2xhc3MgQmxvY2tGb3JtYXR0aW5nQ29udGV4dCBleHRlbmRzIEZv
cm1hdHRpbmdDb250ZXh0IHsKICAgICAgICAgLy8gMy4gdGhlIGJvdHRvbSBib3JkZXIgZWRnZSBv
ZiB0aGUgbGFzdCBpbi1mbG93IGNoaWxkIHdob3NlIHRvcCBtYXJnaW4gZG9lc24ndCBjb2xsYXBz
ZSB3aXRoIHRoZSBlbGVtZW50J3MgYm90dG9tIG1hcmdpbgogICAgICAgICAvLyA0LiB6ZXJvLCBv
dGhlcndpc2UKICAgICAgICAgLy8gT25seSBjaGlsZHJlbiBpbiB0aGUgbm9ybWFsIGZsb3cgYXJl
IHRha2VuIGludG8gYWNjb3VudC4KLSAgICAgICAgaWYgKCFib3guaXNDb250YWluZXIoKSB8fCAh
Ym94Lmhhc0luRmxvd0NoaWxkKCkpCisgICAgICAgIGlmICghbGF5b3V0Qm94LmlzQ29udGFpbmVy
KCkgfHwgIWxheW91dEJveC5oYXNJbkZsb3dDaGlsZCgpKQogICAgICAgICAgICAgcmV0dXJuIDA7
Ci0gICAgICAgIGlmIChib3guZXN0YWJsaXNoZXNJbmxpbmVGb3JtYXR0aW5nQ29udGV4dCgpKSB7
Ci0gICAgICAgICAgICBBU1NFUlQoYm94LmVzdGFibGlzaGVkRm9ybWF0dGluZ0NvbnRleHQoKSk7
Ci0gICAgICAgICAgICBsZXQgbGluZXMgPSBib3guZXN0YWJsaXNoZWRGb3JtYXR0aW5nQ29udGV4
dCgpLmxpbmVzKCk7CisgICAgICAgIGlmIChsYXlvdXRCb3guZXN0YWJsaXNoZXNJbmxpbmVGb3Jt
YXR0aW5nQ29udGV4dCgpKSB7CisgICAgICAgICAgICBBU1NFUlQobGF5b3V0Qm94LmVzdGFibGlz
aGVkRm9ybWF0dGluZ0NvbnRleHQoKSk7CisgICAgICAgICAgICBsZXQgbGluZXMgPSBsYXlvdXRC
b3guZXN0YWJsaXNoZWRGb3JtYXR0aW5nQ29udGV4dCgpLmxpbmVzKCk7CiAgICAgICAgICAgICBp
ZiAoIWxpbmVzLmxlbmd0aCkKICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAg
IGxldCBsYXN0TGluZSA9IGxpbmVzW2xpbmVzLmxlbmd0aCAtIDFdOwogICAgICAgICAgICAgcmV0
dXJuIGxhc3RMaW5lLnJlY3QoKS5ib3R0b20oKTsKICAgICAgICAgfQotICAgICAgICBsZXQgdG9w
ID0gYm94LmNvbnRlbnRCb3goKS50b3AoKTsKLSAgICAgICAgbGV0IGxhc3RJbkZsb3dDaGlsZCA9
IGJveC5sYXN0SW5GbG93Q2hpbGQoKTsKKyAgICAgICAgbGV0IHRvcCA9IGxheW91dEJveC5jb250
ZW50Qm94KCkudG9wKCk7CisgICAgICAgIGxldCBib3R0b20gPSB0aGlzLl9hZGp1c3RCb3R0b21X
aXRoRklYTUUobGF5b3V0Qm94KTsKKyAgICAgICAgcmV0dXJuIGJvdHRvbSAtIHRvcDsKKyAgICB9
CiAKKyAgICBfYWRqdXN0Qm90dG9tV2l0aEZJWE1FKGxheW91dEJveCkgeworICAgICAgICBsZXQg
bGFzdEluRmxvd0NoaWxkID0gbGF5b3V0Qm94Lmxhc3RJbkZsb3dDaGlsZCgpOwogICAgICAgICBs
ZXQgYm90dG9tID0gbGFzdEluRmxvd0NoaWxkLnJlY3QoKS5ib3R0b20oKSArIHRoaXMubWFyZ2lu
Qm90dG9tKGxhc3RJbkZsb3dDaGlsZCk7CiAgICAgICAgIC8vIEZJWE1FOiBtYXJnaW4gZm9yIGJv
ZHkKICAgICAgICAgaWYgKGxhc3RJbkZsb3dDaGlsZC5uYW1lKCkgPT0gIlJlbmRlckJvZHkiICYm
IFV0aWxzLmlzSGVpZ2h0QXV0byhsYXN0SW5GbG93Q2hpbGQpICYmICFsYXN0SW5GbG93Q2hpbGQu
Y29udGVudEJveCgpLmhlaWdodCgpKQogICAgICAgICAgICAgYm90dG9tIC09IHRoaXMubWFyZ2lu
Qm90dG9tKGxhc3RJbkZsb3dDaGlsZCk7CiAgICAgICAgIC8vIEZJWE1FOiBmaWd1cmUgb3V0IHdo
eSBmbG9hdGluZ3MgcGFydCBvZiB0aGUgaW5pdGlhbCBibG9jayBmb3JtYXR0aW5nIGNvbnRleHQg
Z2V0IHByb3BhZ2F0ZWQgdG8gSFRNTAotICAgICAgICBpZiAoYm94Lm5vZGUoKS50YWdOYW1lID09
ICJIVE1MIikgeworICAgICAgICBpZiAobGF5b3V0Qm94Lm5vZGUoKS50YWdOYW1lID09ICJIVE1M
IikgewogICAgICAgICAgICAgbGV0IGZsb2F0aW5nQm90dG9tID0gdGhpcy5mbG9hdGluZ0NvbnRl
eHQoKS5ib3R0b20oKTsKICAgICAgICAgICAgIGlmICghTnVtYmVyLmlzTmFOKGZsb2F0aW5nQm90
dG9tKSkKICAgICAgICAgICAgICAgICBib3R0b20gPSBNYXRoLm1heChmbG9hdGluZ0JvdHRvbSwg
Ym90dG9tKTsKICAgICAgICAgfQotICAgICAgICByZXR1cm4gYm90dG9tIC0gdG9wOworICAgICAg
ICByZXR1cm4gYm90dG9tOwogICAgIH0KIAotICAgIF9jb21wdXRlSW5GbG93UG9zaXRpb25lZFBv
c2l0aW9uKGJveCkgeworICAgIF9jb21wdXRlSW5GbG93UG9zaXRpb25lZFBvc2l0aW9uKGxheW91
dEJveCkgewogICAgICAgICAvLyBTdGFydCB3aXRoIHRoZSBvcmlnaW5hbCwgc3RhdGljIHBvc2l0
aW9uLgotICAgICAgICBsZXQgcmVsYXRpdmVQb3NpdGlvbiA9IGJveC50b3BMZWZ0KCk7CisgICAg
ICAgIGxldCByZWxhdGl2ZVBvc2l0aW9uID0gbGF5b3V0Qm94LnRvcExlZnQoKTsKICAgICAgICAg
Ly8gVG9wL2JvdHRvbQotICAgICAgICBpZiAoIVV0aWxzLmlzVG9wQXV0byhib3gpKQotICAgICAg
ICAgICAgcmVsYXRpdmVQb3NpdGlvbi5zaGlmdFRvcChVdGlscy50b3AoYm94KSk7Ci0gICAgICAg
IGVsc2UgaWYgKCFVdGlscy5pc0JvdHRvbUF1dG8oYm94KSkKLSAgICAgICAgICAgIHJlbGF0aXZl
UG9zaXRpb24uc2hpZnRUb3AoLVV0aWxzLmJvdHRvbShib3gpKTsKKyAgICAgICAgaWYgKCFVdGls
cy5pc1RvcEF1dG8obGF5b3V0Qm94KSkKKyAgICAgICAgICAgIHJlbGF0aXZlUG9zaXRpb24uc2hp
ZnRUb3AoVXRpbHMudG9wKGxheW91dEJveCkpOworICAgICAgICBlbHNlIGlmICghVXRpbHMuaXNC
b3R0b21BdXRvKGxheW91dEJveCkpCisgICAgICAgICAgICByZWxhdGl2ZVBvc2l0aW9uLnNoaWZ0
VG9wKC1VdGlscy5ib3R0b20obGF5b3V0Qm94KSk7CiAgICAgICAgIC8vIExlZnQvcmlnaHQKLSAg
ICAgICAgaWYgKCFVdGlscy5pc0xlZnRBdXRvKGJveCkpCi0gICAgICAgICAgICByZWxhdGl2ZVBv
c2l0aW9uLnNoaWZ0TGVmdChVdGlscy5sZWZ0KGJveCkpOwotICAgICAgICBlbHNlIGlmICghVXRp
bHMuaXNSaWdodEF1dG8oYm94KSkKLSAgICAgICAgICAgIHJlbGF0aXZlUG9zaXRpb24uc2hpZnRM
ZWZ0KC1VdGlscy5yaWdodChib3gpKTsKLSAgICAgICAgcmV0dXJuIHJlbGF0aXZlUG9zaXRpb247
CisgICAgICAgIGlmICghVXRpbHMuaXNMZWZ0QXV0byhsYXlvdXRCb3gpKQorICAgICAgICAgICAg
cmVsYXRpdmVQb3NpdGlvbi5zaGlmdExlZnQoVXRpbHMubGVmdChsYXlvdXRCb3gpKTsKKyAgICAg
ICAgZWxzZSBpZiAoIVV0aWxzLmlzUmlnaHRBdXRvKGxheW91dEJveCkpCisgICAgICAgICAgICBy
ZWxhdGl2ZVBvc2l0aW9uLnNoaWZ0TGVmdCgtVXRpbHMucmlnaHQobGF5b3V0Qm94KSk7CisgICAg
ICAgIGxheW91dEJveC5zZXRUb3BMZWZ0KHJlbGF0aXZlUG9zaXRpb24pOwogICAgIH0KIAotICAg
IF9jb21wdXRlT3V0T2ZGbG93UG9zaXRpb24oYm94KSB7Ci0gICAgICAgIGxldCBjb250YWluZXJT
aXplID0gYm94LmNvbnRhaW5pbmdCbG9jaygpLmNvbnRlbnRCb3goKS5zaXplKCk7CisgICAgX2Nv
bXB1dGVPdXRPZkZsb3dQb3NpdGlvbihsYXlvdXRCb3gpIHsKKyAgICAgICAgbGV0IGNvbnRhaW5l
clNpemUgPSBsYXlvdXRCb3guY29udGFpbmluZ0Jsb2NrKCkuY29udGVudEJveCgpLnNpemUoKTsK
ICAgICAgICAgLy8gVG9wL2JvdHRvbQogICAgICAgICBsZXQgdG9wID0gTnVtYmVyLk5hTjsKLSAg
ICAgICAgaWYgKFV0aWxzLmlzVG9wQXV0byhib3gpICYmIFV0aWxzLmlzQm90dG9tQXV0byhib3gp
KSB7CisgICAgICAgIGlmIChVdGlscy5pc1RvcEF1dG8obGF5b3V0Qm94KSAmJiBVdGlscy5pc0Jv
dHRvbUF1dG8obGF5b3V0Qm94KSkgewogICAgICAgICAgICAgLy8gQ29udmVydCBzdGF0aWMgcG9z
aXRpb24gdG8gYWJzb2x1dGUuCi0gICAgICAgICAgICB0b3AgPSBVdGlscy5tYXBTdGF0aWNUb0Fi
c29sdXRlKGJveCkudG9wKCk7Ci0gICAgICAgIH0gZWxzZSBpZiAoIVV0aWxzLmlzVG9wQXV0byhi
b3gpKQotICAgICAgICAgICAgdG9wID0gVXRpbHMudG9wKGJveCkgKyB0aGlzLm1hcmdpblRvcChi
b3gpOwotICAgICAgICBlbHNlIGlmICghVXRpbHMuaXNCb3R0b21BdXRvKGJveCkpCi0gICAgICAg
ICAgICB0b3AgPSBjb250YWluZXJTaXplLmhlaWdodCgpIC0gVXRpbHMuYm90dG9tKGJveCkgLSBi
b3gucmVjdCgpLmhlaWdodCgpIC0gdGhpcy5tYXJnaW5Cb3R0b20oYm94KTsKKyAgICAgICAgICAg
IHRvcCA9IFV0aWxzLm1hcFN0YXRpY1RvQWJzb2x1dGUobGF5b3V0Qm94KS50b3AoKTsKKyAgICAg
ICAgfSBlbHNlIGlmICghVXRpbHMuaXNUb3BBdXRvKGxheW91dEJveCkpCisgICAgICAgICAgICB0
b3AgPSBVdGlscy50b3AobGF5b3V0Qm94KSArIHRoaXMubWFyZ2luVG9wKGxheW91dEJveCk7Cisg
ICAgICAgIGVsc2UgaWYgKCFVdGlscy5pc0JvdHRvbUF1dG8obGF5b3V0Qm94KSkKKyAgICAgICAg
ICAgIHRvcCA9IGNvbnRhaW5lclNpemUuaGVpZ2h0KCkgLSBVdGlscy5ib3R0b20obGF5b3V0Qm94
KSAtIGxheW91dEJveC5yZWN0KCkuaGVpZ2h0KCkgLSB0aGlzLm1hcmdpbkJvdHRvbShsYXlvdXRC
b3gpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAg
ICAgICAgLy8gTGVmdC9yaWdodAogICAgICAgICBsZXQgbGVmdCA9IE51bWJlci5OYU47Ci0gICAg
ICAgIGlmIChVdGlscy5pc0xlZnRBdXRvKGJveCkgJiYgVXRpbHMuaXNSaWdodEF1dG8oYm94KSkg
eworICAgICAgICBpZiAoVXRpbHMuaXNMZWZ0QXV0byhsYXlvdXRCb3gpICYmIFV0aWxzLmlzUmln
aHRBdXRvKGxheW91dEJveCkpIHsKICAgICAgICAgICAgIC8vIENvbnZlcnQgc3RhdGljIHBvc2l0
aW9uIHRvIGFic29sdXRlLgotICAgICAgICAgICAgbGVmdCA9IFV0aWxzLm1hcFN0YXRpY1RvQWJz
b2x1dGUoYm94KS5sZWZ0KCk7Ci0gICAgICAgIH0gZWxzZSBpZiAoIVV0aWxzLmlzTGVmdEF1dG8o
Ym94KSkKLSAgICAgICAgICAgIGxlZnQgPSBVdGlscy5sZWZ0KGJveCkgKyB0aGlzLm1hcmdpbkxl
ZnQoYm94KTsKLSAgICAgICAgZWxzZSBpZiAoIVV0aWxzLmlzUmlnaHRBdXRvKGJveCkpCi0gICAg
ICAgICAgICBsZWZ0ID0gY29udGFpbmVyU2l6ZS53aWR0aCgpIC0gVXRpbHMucmlnaHQoYm94KSAt
IGJveC5yZWN0KCkud2lkdGgoKSAtIHRoaXMubWFyZ2luUmlnaHQoYm94KTsKKyAgICAgICAgICAg
IGxlZnQgPSBVdGlscy5tYXBTdGF0aWNUb0Fic29sdXRlKGxheW91dEJveCkubGVmdCgpOworICAg
ICAgICB9IGVsc2UgaWYgKCFVdGlscy5pc0xlZnRBdXRvKGxheW91dEJveCkpCisgICAgICAgICAg
ICBsZWZ0ID0gVXRpbHMubGVmdChsYXlvdXRCb3gpICsgdGhpcy5tYXJnaW5MZWZ0KGxheW91dEJv
eCk7CisgICAgICAgIGVsc2UgaWYgKCFVdGlscy5pc1JpZ2h0QXV0byhsYXlvdXRCb3gpKQorICAg
ICAgICAgICAgbGVmdCA9IGNvbnRhaW5lclNpemUud2lkdGgoKSAtIFV0aWxzLnJpZ2h0KGxheW91
dEJveCkgLSBsYXlvdXRCb3gucmVjdCgpLndpZHRoKCkgLSB0aGlzLm1hcmdpblJpZ2h0KGxheW91
dEJveCk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwot
ICAgICAgICByZXR1cm4gbmV3IExheW91dFBvaW50KHRvcCwgbGVmdCk7CisgICAgICAgIGxheW91
dEJveC5zZXRUb3BMZWZ0KG5ldyBMYXlvdXRQb2ludCh0b3AsIGxlZnQpKTsKICAgICB9CiAKLSAg
ICBfc2hyaW5rVG9GaXRXaWR0aChib3gpIHsKKyAgICBfc2hyaW5rVG9GaXRXaWR0aChsYXlvdXRC
b3gpIHsKICAgICAgICAgLy8gRklYTUU6IHRoaXMgaXMgbmFpdmUuCi0gICAgICAgIEFTU0VSVChV
dGlscy5pc1dpZHRoQXV0byhib3gpKTsKLSAgICAgICAgaWYgKCFib3guaXNDb250YWluZXIoKSB8
fCAhYm94Lmhhc0NoaWxkKCkpCisgICAgICAgIEFTU0VSVChVdGlscy5pc1dpZHRoQXV0byhsYXlv
dXRCb3gpKTsKKyAgICAgICAgaWYgKCFsYXlvdXRCb3guaXNDb250YWluZXIoKSB8fCAhbGF5b3V0
Qm94Lmhhc0NoaWxkKCkpCiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgbGV0IHdpZHRo
ID0gMDsKLSAgICAgICAgZm9yIChsZXQgaW5GbG93Q2hpbGQgPSBib3guZmlyc3RJbkZsb3dDaGls
ZCgpOyBpbkZsb3dDaGlsZDsgaW5GbG93Q2hpbGQgPSBpbkZsb3dDaGlsZC5uZXh0SW5GbG93U2li
bGluZygpKSB7CisgICAgICAgIGZvciAobGV0IGluRmxvd0NoaWxkID0gbGF5b3V0Qm94LmZpcnN0
SW5GbG93Q2hpbGQoKTsgaW5GbG93Q2hpbGQ7IGluRmxvd0NoaWxkID0gaW5GbG93Q2hpbGQubmV4
dEluRmxvd1NpYmxpbmcoKSkgewogICAgICAgICAgICAgbGV0IHdpZHRoQ2FuZGlkYXRlID0gVXRp
bHMuaXNXaWR0aEF1dG8oaW5GbG93Q2hpbGQpID8gdGhpcy5fc2hyaW5rVG9GaXRXaWR0aChpbkZs
b3dDaGlsZCkgOiBVdGlscy53aWR0aChpbkZsb3dDaGlsZCk7CiAgICAgICAgICAgICB3aWR0aCA9
IE1hdGgubWF4KHdpZHRoLCB3aWR0aENhbmRpZGF0ZSArIFV0aWxzLmNvbXB1dGVkSG9yaXpvbnRh
bEJvcmRlckFuZFBhZGRpbmcoaW5GbG93Q2hpbGQpKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEv
VG9vbHMvTGF5b3V0UmVsb2FkZWQvRm9ybWF0dGluZ0NvbnRleHQvQmxvY2tGb3JtYXR0aW5nL0Js
b2NrTWFyZ2luQ29sbGFwc2UuanMgYi9Ub29scy9MYXlvdXRSZWxvYWRlZC9Gb3JtYXR0aW5nQ29u
dGV4dC9CbG9ja0Zvcm1hdHRpbmcvQmxvY2tNYXJnaW5Db2xsYXBzZS5qcwppbmRleCBlODI1OWE1
OTk4YTEzN2U2NTI4MWU3NzIxYTIzMzBhNWM3N2E4MWM2Li5kYjJkNGQzYjJkMGZlYTFlOWQyNDk4
MTY3NzhkODRhNDhiNjAyM2QyIDEwMDY0NAotLS0gYS9Ub29scy9MYXlvdXRSZWxvYWRlZC9Gb3Jt
YXR0aW5nQ29udGV4dC9CbG9ja0Zvcm1hdHRpbmcvQmxvY2tNYXJnaW5Db2xsYXBzZS5qcworKysg
Yi9Ub29scy9MYXlvdXRSZWxvYWRlZC9Gb3JtYXR0aW5nQ29udGV4dC9CbG9ja0Zvcm1hdHRpbmcv
QmxvY2tNYXJnaW5Db2xsYXBzZS5qcwpAQCAtMjQsNzIgKzI0LDcyIEBACiAgKi8KIGNsYXNzIEJs
b2NrTWFyZ2luQ29sbGFwc2UgewogCi0gICAgc3RhdGljIG1hcmdpblRvcChib3gpIHsKLSAgICAg
ICAgaWYgKGJveC5pc0Fub255bW91cygpKQorICAgIHN0YXRpYyBtYXJnaW5Ub3AobGF5b3V0Qm94
KSB7CisgICAgICAgIGlmIChsYXlvdXRCb3guaXNBbm9ueW1vdXMoKSkKICAgICAgICAgICAgIHJl
dHVybiAwOwogICAgICAgICAvLyBUT0RPOiB0YWtlIF9oYXNBZGpvaW5pbmdNYXJnaW5Ub3BBbmRC
b3R0b20oKSBpbnRvIGFjY291bnQuCi0gICAgICAgIGlmICh0aGlzLl9pc01hcmdpblRvcENvbGxh
cHNlZFdpdGhQYXJlbnQoYm94KSkKKyAgICAgICAgaWYgKHRoaXMuX2lzTWFyZ2luVG9wQ29sbGFw
c2VkV2l0aFBhcmVudChsYXlvdXRCb3gpKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAg
IC8vIEZsb2F0cyBhbmQgb3V0IG9mIGZsb3cgcG9zaXRpb25lZCBib3hlcyBkbyBub3QgY29sbGFw
c2UgdGhlaXIgbWFyZ2lucy4KLSAgICAgICAgaWYgKCF0aGlzLl9pc01hcmdpblRvcENvbGxhcHNl
ZFdpdGhTaWJsaW5nKGJveCkpCi0gICAgICAgICAgICByZXR1cm4gdGhpcy5fbm9uQ29sbGFwc2Vk
TWFyZ2luVG9wKGJveCk7CisgICAgICAgIGlmICghdGhpcy5faXNNYXJnaW5Ub3BDb2xsYXBzZWRX
aXRoU2libGluZyhsYXlvdXRCb3gpKQorICAgICAgICAgICAgcmV0dXJuIHRoaXMuX25vbkNvbGxh
cHNlZE1hcmdpblRvcChsYXlvdXRCb3gpOwogICAgICAgICAvLyBUaGUgYm90dG9tIG1hcmdpbiBv
ZiBhbiBpbi1mbG93IGJsb2NrLWxldmVsIGVsZW1lbnQgYWx3YXlzIGNvbGxhcHNlcyB3aXRoIHRo
ZSB0b3AgbWFyZ2luIG9mIGl0cyBuZXh0IGluLWZsb3cgYmxvY2stbGV2ZWwgc2libGluZywKICAg
ICAgICAgLy8gdW5sZXNzIHRoYXQgc2libGluZyBoYXMgY2xlYXJhbmNlLgotICAgICAgICBsZXQg
cHJldmlvdXNJbkZsb3dTaWJsaW5nID0gYm94LnByZXZpb3VzSW5GbG93U2libGluZygpOworICAg
ICAgICBsZXQgcHJldmlvdXNJbkZsb3dTaWJsaW5nID0gbGF5b3V0Qm94LnByZXZpb3VzSW5GbG93
U2libGluZygpOwogICAgICAgICBpZiAocHJldmlvdXNJbkZsb3dTaWJsaW5nKSB7CiAgICAgICAg
ICAgICBsZXQgcHJldmlvdXNTaWJsaW5nTWFyZ2luQm90dG9tID0gdGhpcy5fbm9uQ29sbGFwc2Vk
TWFyZ2luQm90dG9tKHByZXZpb3VzSW5GbG93U2libGluZyk7Ci0gICAgICAgICAgICBsZXQgbWFy
Z2luVG9wID0gdGhpcy5fbm9uQ29sbGFwc2VkTWFyZ2luVG9wKGJveCk7CisgICAgICAgICAgICBs
ZXQgbWFyZ2luVG9wID0gdGhpcy5fbm9uQ29sbGFwc2VkTWFyZ2luVG9wKGxheW91dEJveCk7CiAg
ICAgICAgICAgICByZXR1cm4gdGhpcy5fbWFyZ2luVmFsdWUobWFyZ2luVG9wLCBwcmV2aW91c1Np
YmxpbmdNYXJnaW5Cb3R0b20pOwogICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0aGlzLl9ub25D
b2xsYXBzZWRNYXJnaW5Ub3AoYm94KTsKKyAgICAgICAgcmV0dXJuIHRoaXMuX25vbkNvbGxhcHNl
ZE1hcmdpblRvcChsYXlvdXRCb3gpOwogICAgIH0KIAotICAgIHN0YXRpYyBtYXJnaW5Cb3R0b20o
Ym94KSB7Ci0gICAgICAgIGlmIChib3guaXNBbm9ueW1vdXMoKSkKKyAgICBzdGF0aWMgbWFyZ2lu
Qm90dG9tKGxheW91dEJveCkgeworICAgICAgICBpZiAobGF5b3V0Qm94LmlzQW5vbnltb3VzKCkp
CiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgLy8gVE9ETzogdGFrZSBfaGFzQWRqb2lu
aW5nTWFyZ2luVG9wQW5kQm90dG9tKCkgaW50byBhY2NvdW50LgotICAgICAgICBpZiAodGhpcy5f
aXNNYXJnaW5Cb3R0b21Db2xsYXBzZWRXaXRoUGFyZW50KGJveCkpCisgICAgICAgIGlmICh0aGlz
Ll9pc01hcmdpbkJvdHRvbUNvbGxhcHNlZFdpdGhQYXJlbnQobGF5b3V0Qm94KSkKICAgICAgICAg
ICAgIHJldHVybiAwOwogICAgICAgICAvLyBGbG9hdHMgYW5kIG91dCBvZiBmbG93IHBvc2l0aW9u
ZWQgYm94ZXMgZG8gbm90IGNvbGxhcHNlIHRoZWlyIG1hcmdpbnMuCi0gICAgICAgIGlmICghdGhp
cy5faXNNYXJnaW5Cb3R0b21Db2xsYXBzZWRXaXRoU2libGluZyhib3gpKQotICAgICAgICAgICAg
cmV0dXJuIHRoaXMuX25vbkNvbGxhcHNlZE1hcmdpbkJvdHRvbShib3gpOworICAgICAgICBpZiAo
IXRoaXMuX2lzTWFyZ2luQm90dG9tQ29sbGFwc2VkV2l0aFNpYmxpbmcobGF5b3V0Qm94KSkKKyAg
ICAgICAgICAgIHJldHVybiB0aGlzLl9ub25Db2xsYXBzZWRNYXJnaW5Cb3R0b20obGF5b3V0Qm94
KTsKICAgICAgICAgLy8gVGhlIGJvdHRvbSBtYXJnaW4gb2YgYW4gaW4tZmxvdyBibG9jay1sZXZl
bCBlbGVtZW50IGFsd2F5cyBjb2xsYXBzZXMgd2l0aCB0aGUgdG9wIG1hcmdpbiBvZiBpdHMgbmV4
dCBpbi1mbG93IGJsb2NrLWxldmVsIHNpYmxpbmcsCiAgICAgICAgIC8vIHVubGVzcyB0aGF0IHNp
YmxpbmcgaGFzIGNsZWFyYW5jZS4KLSAgICAgICAgaWYgKGJveC5uZXh0SW5GbG93U2libGluZygp
KQorICAgICAgICBpZiAobGF5b3V0Qm94Lm5leHRJbkZsb3dTaWJsaW5nKCkpCiAgICAgICAgICAg
ICByZXR1cm4gMDsKLSAgICAgICAgcmV0dXJuIHRoaXMuX25vbkNvbGxhcHNlZE1hcmdpbkJvdHRv
bShib3gpOworICAgICAgICByZXR1cm4gdGhpcy5fbm9uQ29sbGFwc2VkTWFyZ2luQm90dG9tKGxh
eW91dEJveCk7CiAgICAgfQogCi0gICAgc3RhdGljIF9pc01hcmdpblRvcENvbGxhcHNlZFdpdGhT
aWJsaW5nKGJveCkgewotICAgICAgICBpZiAoYm94LmlzRmxvYXRpbmdQb3NpdGlvbmVkKCkpCisg
ICAgc3RhdGljIF9pc01hcmdpblRvcENvbGxhcHNlZFdpdGhTaWJsaW5nKGxheW91dEJveCkgewor
ICAgICAgICBpZiAobGF5b3V0Qm94LmlzRmxvYXRpbmdQb3NpdGlvbmVkKCkpCiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGlmICghYm94LmlzUG9zaXRpb25lZCgpIHx8IGJveC5p
c0luRmxvd1Bvc2l0aW9uZWQoKSkKKyAgICAgICAgaWYgKCFsYXlvdXRCb3guaXNQb3NpdGlvbmVk
KCkgfHwgbGF5b3V0Qm94LmlzSW5GbG93UG9zaXRpb25lZCgpKQogICAgICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgICAgIC8vIE91dCBvZiBmbG93IHBvc2l0aW9uZWQuCi0gICAgICAgIEFTU0VS
VChib3guaXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkpOwotICAgICAgICByZXR1cm4gVXRpbHMuaXNU
b3BBdXRvKGJveCk7CisgICAgICAgIEFTU0VSVChsYXlvdXRCb3guaXNPdXRPZkZsb3dQb3NpdGlv
bmVkKCkpOworICAgICAgICByZXR1cm4gVXRpbHMuaXNUb3BBdXRvKGxheW91dEJveCk7CiAgICAg
fQogCi0gICAgc3RhdGljIF9pc01hcmdpbkJvdHRvbUNvbGxhcHNlZFdpdGhTaWJsaW5nKGJveCkg
ewotICAgICAgICBpZiAoYm94LmlzRmxvYXRpbmdQb3NpdGlvbmVkKCkpCisgICAgc3RhdGljIF9p
c01hcmdpbkJvdHRvbUNvbGxhcHNlZFdpdGhTaWJsaW5nKGxheW91dEJveCkgeworICAgICAgICBp
ZiAobGF5b3V0Qm94LmlzRmxvYXRpbmdQb3NpdGlvbmVkKCkpCiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgICAgIGlmICghYm94LmlzUG9zaXRpb25lZCgpIHx8IGJveC5pc0luRmxvd1Bv
c2l0aW9uZWQoKSkKKyAgICAgICAgaWYgKCFsYXlvdXRCb3guaXNQb3NpdGlvbmVkKCkgfHwgbGF5
b3V0Qm94LmlzSW5GbG93UG9zaXRpb25lZCgpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgICAgIC8vIE91dCBvZiBmbG93IHBvc2l0aW9uZWQuCi0gICAgICAgIEFTU0VSVChib3guaXNP
dXRPZkZsb3dQb3NpdGlvbmVkKCkpOwotICAgICAgICByZXR1cm4gVXRpbHMuaXNCb3R0b21BdXRv
KGJveCk7CisgICAgICAgIEFTU0VSVChsYXlvdXRCb3guaXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkp
OworICAgICAgICByZXR1cm4gVXRpbHMuaXNCb3R0b21BdXRvKGxheW91dEJveCk7CiAgICAgfQog
Ci0gICAgc3RhdGljIF9pc01hcmdpblRvcENvbGxhcHNlZFdpdGhQYXJlbnQoYm94KSB7CisgICAg
c3RhdGljIF9pc01hcmdpblRvcENvbGxhcHNlZFdpdGhQYXJlbnQobGF5b3V0Qm94KSB7CiAgICAg
ICAgIC8vIFRoZSBmaXJzdCBpbmZsb3cgY2hpbGQgY291bGQgcHJvcGFnYXRlIGl0cyB0b3AgbWFy
Z2luIHRvIHBhcmVudC4KICAgICAgICAgLy8gaHR0cHM6Ly93d3cudzMub3JnL1RSL0NTUzIxL2Jv
eC5odG1sI2NvbGxhcHNpbmctbWFyZ2lucwotICAgICAgICBpZiAoYm94LmlzQW5vbnltb3VzKCkp
CisgICAgICAgIGlmIChsYXlvdXRCb3guaXNBbm9ueW1vdXMoKSkKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICAgICAgaWYgKGJveC5pc0Zsb2F0aW5nT3JPdXRPZkZsb3dQb3NpdGlvbmVk
KCkpCisgICAgICAgIGlmIChsYXlvdXRCb3guaXNGbG9hdGluZ09yT3V0T2ZGbG93UG9zaXRpb25l
ZCgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBsZXQgcGFyZW50ID0gYm94
LnBhcmVudCgpOworICAgICAgICBsZXQgcGFyZW50ID0gbGF5b3V0Qm94LnBhcmVudCgpOwogICAg
ICAgICAvLyBJcyB0aGlzIGJveCB0aGUgZmlyc3QgaW5sZmxvdyBjaGlsZD8KLSAgICAgICAgaWYg
KHBhcmVudC5maXJzdEluRmxvd0NoaWxkKCkgIT0gYm94KQorICAgICAgICBpZiAocGFyZW50LmZp
cnN0SW5GbG93Q2hpbGQoKSAhPSBsYXlvdXRCb3gpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgICAgIGlmIChwYXJlbnQuZXN0YWJsaXNoZXNCbG9ja0Zvcm1hdHRpbmdDb250ZXh0KCkp
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xMDMsMTYgKzEwMywxNiBAQCBjbGFzcyBC
bG9ja01hcmdpbkNvbGxhcHNlIHsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAg
c3RhdGljIF9pc01hcmdpbkJvdHRvbUNvbGxhcHNlZFdpdGhQYXJlbnQoYm94KSB7CisgICAgc3Rh
dGljIF9pc01hcmdpbkJvdHRvbUNvbGxhcHNlZFdpdGhQYXJlbnQobGF5b3V0Qm94KSB7CiAgICAg
ICAgIC8vIGxhc3QgaW5mbG93IGJveCB0byBwYXJlbnQuCiAgICAgICAgIC8vIGh0dHBzOi8vd3d3
LnczLm9yZy9UUi9DU1MyMS9ib3guaHRtbCNjb2xsYXBzaW5nLW1hcmdpbnMKLSAgICAgICAgaWYg
KGJveC5pc0Fub255bW91cygpKQorICAgICAgICBpZiAobGF5b3V0Qm94LmlzQW5vbnltb3VzKCkp
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGlmIChib3guaXNGbG9hdGluZ09y
T3V0T2ZGbG93UG9zaXRpb25lZCgpKQorICAgICAgICBpZiAobGF5b3V0Qm94LmlzRmxvYXRpbmdP
ck91dE9mRmxvd1Bvc2l0aW9uZWQoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAg
ICAgbGV0IHBhcmVudCA9IGJveC5wYXJlbnQoKTsKKyAgICAgICAgbGV0IHBhcmVudCA9IGxheW91
dEJveC5wYXJlbnQoKTsKICAgICAgICAgLy8gSXMgdGhpcyB0aGUgbGFzdCBpbmxmbG93IGNoaWxk
PwotICAgICAgICBpZiAocGFyZW50Lmxhc3RJbkZsb3dDaGlsZCgpICE9IGJveCkKKyAgICAgICAg
aWYgKHBhcmVudC5sYXN0SW5GbG93Q2hpbGQoKSAhPSBsYXlvdXRCb3gpCiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgICAgIGlmIChwYXJlbnQuZXN0YWJsaXNoZXNCbG9ja0Zvcm1hdHRp
bmdDb250ZXh0KCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xMjgsMzIgKzEyOCwz
MiBAQCBjbGFzcyBCbG9ja01hcmdpbkNvbGxhcHNlIHsKICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgfQogCi0gICAgc3RhdGljIF9ub25Db2xsYXBzZWRNYXJnaW5Ub3AoYm94KSB7CisgICAgc3Rh
dGljIF9ub25Db2xsYXBzZWRNYXJnaW5Ub3AobGF5b3V0Qm94KSB7CiAgICAgICAgIC8vIE5vbiBj
b2xsYXBzZWQgbWFyZ2luIHRvcCBpbmNsdWRlcyBjb2xsYXBzZWQgbWFyZ2luIGZyb20gaW5mbG93
IGZpcnN0IGNoaWxkLgotICAgICAgICByZXR1cm4gdGhpcy5fbWFyZ2luVmFsdWUoVXRpbHMuY29t
cHV0ZWRNYXJnaW5Ub3AoYm94KSwgdGhpcy5fY29sbGFwc2VkTWFyZ2luVG9wRnJvbUZpcnN0Q2hp
bGQoYm94KSk7CisgICAgICAgIHJldHVybiB0aGlzLl9tYXJnaW5WYWx1ZShVdGlscy5jb21wdXRl
ZE1hcmdpblRvcChsYXlvdXRCb3gpLCB0aGlzLl9jb2xsYXBzZWRNYXJnaW5Ub3BGcm9tRmlyc3RD
aGlsZChsYXlvdXRCb3gpKTsKICAgICB9CiAKLSAgICBzdGF0aWMgX25vbkNvbGxhcHNlZE1hcmdp
bkJvdHRvbShib3gpIHsKKyAgICBzdGF0aWMgX25vbkNvbGxhcHNlZE1hcmdpbkJvdHRvbShsYXlv
dXRCb3gpIHsKICAgICAgICAgLy8gTm9uIGNvbGxhcHNlZCBtYXJnaW4gYm90dG9tIGluY2x1ZGVz
IGNvbGxhcHNlZCBtYXJnaW4gZnJvbSBpbmZsb3cgbGFzdCBjaGlsZC4KLSAgICAgICAgcmV0dXJu
IHRoaXMuX21hcmdpblZhbHVlKFV0aWxzLmNvbXB1dGVkTWFyZ2luQm90dG9tKGJveCksIHRoaXMu
X2NvbGxhcHNlZE1hcmdpbkJvdHRvbUZyb21MYXN0Q2hpbGQoYm94KSk7CisgICAgICAgIHJldHVy
biB0aGlzLl9tYXJnaW5WYWx1ZShVdGlscy5jb21wdXRlZE1hcmdpbkJvdHRvbShsYXlvdXRCb3gp
LCB0aGlzLl9jb2xsYXBzZWRNYXJnaW5Cb3R0b21Gcm9tTGFzdENoaWxkKGxheW91dEJveCkpOwog
ICAgIH0KIAotICAgIHN0YXRpYyBfY29sbGFwc2VkTWFyZ2luVG9wRnJvbUZpcnN0Q2hpbGQoYm94
KSB7CisgICAgc3RhdGljIF9jb2xsYXBzZWRNYXJnaW5Ub3BGcm9tRmlyc3RDaGlsZChsYXlvdXRC
b3gpIHsKICAgICAgICAgLy8gQ2hlY2sgaWYgdGhlIGZpcnN0IGNoaWxkIGNvbGxhcHNlcyBpdHMg
bWFyZ2luIHRvcC4KLSAgICAgICAgaWYgKCFib3guaXNDb250YWluZXIoKSB8fCAhYm94LmZpcnN0
SW5GbG93Q2hpbGQoKSkKKyAgICAgICAgaWYgKCFsYXlvdXRCb3guaXNDb250YWluZXIoKSB8fCAh
bGF5b3V0Qm94LmZpcnN0SW5GbG93Q2hpbGQoKSkKICAgICAgICAgICAgIHJldHVybiAwOwotICAg
ICAgICBsZXQgZmlyc3RJbkZsb3dDaGlsZCA9IGJveC5maXJzdEluRmxvd0NoaWxkKCk7CisgICAg
ICAgIGxldCBmaXJzdEluRmxvd0NoaWxkID0gbGF5b3V0Qm94LmZpcnN0SW5GbG93Q2hpbGQoKTsK
ICAgICAgICAgaWYgKCF0aGlzLl9pc01hcmdpblRvcENvbGxhcHNlZFdpdGhQYXJlbnQoZmlyc3RJ
bkZsb3dDaGlsZCkpCiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgLy8gQ29sbGVjdCBj
b2xsYXBzZWQgbWFyZ2luIHRvcCByZWN1cnNpdmVseS4KICAgICAgICAgcmV0dXJuIHRoaXMuX21h
cmdpblZhbHVlKFV0aWxzLmNvbXB1dGVkTWFyZ2luVG9wKGZpcnN0SW5GbG93Q2hpbGQpLCB0aGlz
Ll9jb2xsYXBzZWRNYXJnaW5Ub3BGcm9tRmlyc3RDaGlsZChmaXJzdEluRmxvd0NoaWxkKSk7CiAg
ICAgfQogCi0gICAgc3RhdGljIF9jb2xsYXBzZWRNYXJnaW5Cb3R0b21Gcm9tTGFzdENoaWxkKGJv
eCkgeworICAgIHN0YXRpYyBfY29sbGFwc2VkTWFyZ2luQm90dG9tRnJvbUxhc3RDaGlsZChsYXlv
dXRCb3gpIHsKICAgICAgICAgLy8gQ2hlY2sgaWYgdGhlIGxhc3QgY2hpbGQgcHJvcGFnYXRlcyBp
dHMgbWFyZ2luIGJvdHRvbS4KLSAgICAgICAgaWYgKCFib3guaXNDb250YWluZXIoKSB8fCAhYm94
Lmxhc3RJbkZsb3dDaGlsZCgpKQorICAgICAgICBpZiAoIWxheW91dEJveC5pc0NvbnRhaW5lcigp
IHx8ICFsYXlvdXRCb3gubGFzdEluRmxvd0NoaWxkKCkpCiAgICAgICAgICAgICByZXR1cm4gMDsK
LSAgICAgICAgbGV0IGxhc3RJbkZsb3dDaGlsZCA9IGJveC5sYXN0SW5GbG93Q2hpbGQoKTsKKyAg
ICAgICAgbGV0IGxhc3RJbkZsb3dDaGlsZCA9IGxheW91dEJveC5sYXN0SW5GbG93Q2hpbGQoKTsK
ICAgICAgICAgaWYgKCF0aGlzLl9pc01hcmdpbkJvdHRvbUNvbGxhcHNlZFdpdGhQYXJlbnQobGFz
dEluRmxvd0NoaWxkKSkKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAvLyBDb2xsZWN0
IGNvbGxhcHNlZCBtYXJnaW4gYm90dG9tIHJlY3Vyc2l2ZWx5LgpAQCAtMTc1LDcgKzE3NSw3IEBA
IGNsYXNzIEJsb2NrTWFyZ2luQ29sbGFwc2UgewogICAgICAgICByZXR1cm4gY3VycmVudE1hcmdp
blZhbHVlICsgY2FuZGlkYXRlTWFyZ2luVmFsdWU7CiAgICAgfQogCi0gICAgc3RhdGljIF9oYXNB
ZGpvaW5pbmdNYXJnaW5Ub3BBbmRCb3R0b20oYm94KSB7CisgICAgc3RhdGljIF9oYXNBZGpvaW5p
bmdNYXJnaW5Ub3BBbmRCb3R0b20obGF5b3V0Qm94KSB7CiAgICAgICAgIC8vIFR3byBtYXJnaW5z
IGFyZSBhZGpvaW5pbmcgaWYgYW5kIG9ubHkgaWY6CiAgICAgICAgIC8vIDEuIGJvdGggYmVsb25n
IHRvIGluLWZsb3cgYmxvY2stbGV2ZWwgYm94ZXMgdGhhdCBwYXJ0aWNpcGF0ZSBpbiB0aGUgc2Ft
ZSBibG9jayBmb3JtYXR0aW5nIGNvbnRleHQKICAgICAgICAgLy8gMi4gbm8gbGluZSBib3hlcywg
bm8gY2xlYXJhbmNlLCBubyBwYWRkaW5nIGFuZCBubyBib3JkZXIgc2VwYXJhdGUgdGhlbSAoTm90
ZSB0aGF0IGNlcnRhaW4gemVyby1oZWlnaHQgbGluZSBib3hlcyAoc2VlIDkuNC4yKSBhcmUgaWdu
b3JlZCBmb3IgdGhpcyBwdXJwb3NlLikKZGlmZiAtLWdpdCBhL1Rvb2xzL0xheW91dFJlbG9hZGVk
L0Zvcm1hdHRpbmdDb250ZXh0L0Zsb2F0aW5nQ29udGV4dC5qcyBiL1Rvb2xzL0xheW91dFJlbG9h
ZGVkL0Zvcm1hdHRpbmdDb250ZXh0L0Zsb2F0aW5nQ29udGV4dC5qcwppbmRleCA5ODMyMTI4ZDRk
NjU5N2RkZDlhNTUxN2ZlZmNiODg1YmE2ZjcwOTJhLi5lNzIzY2RhNmQ2NDc2MTZkNDkxODZiYjIw
NzQzMWNmMTc4NzEwZGEyIDEwMDY0NAotLS0gYS9Ub29scy9MYXlvdXRSZWxvYWRlZC9Gb3JtYXR0
aW5nQ29udGV4dC9GbG9hdGluZ0NvbnRleHQuanMKKysrIGIvVG9vbHMvTGF5b3V0UmVsb2FkZWQv
Rm9ybWF0dGluZ0NvbnRleHQvRmxvYXRpbmdDb250ZXh0LmpzCkBAIC0zMSwxOCArMzEsMTggQEAg
Y2xhc3MgRmxvYXRpbmdDb250ZXh0IHsKICAgICAgICAgdGhpcy5tX2Zvcm1hdHRpbmdDb250ZXh0
ID0gZm9ybWF0dGluZ0NvbnRleHQ7CiAgICAgfQogCi0gICAgY29tcHV0ZVBvc2l0aW9uKGJveCkg
ewotICAgICAgICBpZiAoYm94LmlzT3V0T2ZGbG93UG9zaXRpb25lZCgpKQotICAgICAgICAgICAg
cmV0dXJuIGJveC50b3BMZWZ0KCk7Ci0gICAgICAgIGlmIChib3guaXNGbG9hdGluZ1Bvc2l0aW9u
ZWQoKSkgewotICAgICAgICAgICAgbGV0IHBvc2l0aW9uID0gdGhpcy5fcG9zaXRpb25Gb3JGbG9h
dGluZyhib3gpOwotICAgICAgICAgICAgdGhpcy5fYWRkRmxvYXRpbmcoYm94KTsKLSAgICAgICAg
ICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICBjb21wdXRlUG9zaXRpb24obGF5b3V0Qm94KSB7Cisg
ICAgICAgIGlmIChsYXlvdXRCb3guaXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkpCisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIGlmIChsYXlvdXRCb3guaXNGbG9hdGluZ1Bvc2l0aW9uZWQoKSkg
eworICAgICAgICAgICAgbGV0IHBvc2l0aW9uID0gdGhpcy5fcG9zaXRpb25Gb3JGbG9hdGluZyhs
YXlvdXRCb3gpOworICAgICAgICAgICAgdGhpcy5fYWRkRmxvYXRpbmcobGF5b3V0Qm94KTsKKyAg
ICAgICAgICAgIHJldHVybiBsYXlvdXRCb3guc2V0VG9wTGVmdChwb3NpdGlvbik7CiAgICAgICAg
IH0KLSAgICAgICAgaWYgKFV0aWxzLmhhc0NsZWFyKGJveCkpCi0gICAgICAgICAgICByZXR1cm4g
dGhpcy5fcG9zaXRpb25Gb3JDbGVhcihib3gpOworICAgICAgICBpZiAoVXRpbHMuaGFzQ2xlYXIo
bGF5b3V0Qm94KSkKKyAgICAgICAgICAgIHJldHVybiBsYXlvdXRCb3guc2V0VG9wTGVmdCh0aGlz
Ll9wb3NpdGlvbkZvckNsZWFyKGxheW91dEJveCkpOwogICAgICAgICAvLyBJbnRydWRpbmcgZmxv
YXRzIG1pZ2h0IGZvcmNlIHRoaXMgYm94IG1vdmUuCi0gICAgICAgIHJldHVybiB0aGlzLl9jb21w
dXRlUG9zaXRpb25Ub0F2b2lkSW50cnVkaW5nRmxvYXRzKGJveCk7CisgICAgICAgIHJldHVybiBs
YXlvdXRCb3guc2V0VG9wTGVmdCh0aGlzLl9jb21wdXRlUG9zaXRpb25Ub0F2b2lkSW50cnVkaW5n
RmxvYXRzKGxheW91dEJveCkpOwogICAgIH0KIAogICAgIGJvdHRvbSgpIHsKQEAgLTcxLDM1ICs3
MSwzNSBAQCBjbGFzcyBGbG9hdGluZ0NvbnRleHQgewogICAgICAgICByZXR1cm4gTWF0aC5OYW47
CiAgICAgfQogCi0gICAgX3Bvc2l0aW9uRm9yQ2xlYXIoYm94KSB7Ci0gICAgICAgIEFTU0VSVChV
dGlscy5oYXNDbGVhcihib3gpKTsKKyAgICBfcG9zaXRpb25Gb3JDbGVhcihsYXlvdXRCb3gpIHsK
KyAgICAgICAgQVNTRVJUKFV0aWxzLmhhc0NsZWFyKGxheW91dEJveCkpOwogICAgICAgICBpZiAo
dGhpcy5faXNFbXB0eSgpKQotICAgICAgICAgICAgcmV0dXJuIGJveC50b3BMZWZ0KCk7CisgICAg
ICAgICAgICByZXR1cm4gbGF5b3V0Qm94LnRvcExlZnQoKTsKIAogICAgICAgICBsZXQgbGVmdEJv
dHRvbSA9IE51bWJlci5OYU47CiAgICAgICAgIGxldCByaWdodEJvdHRvbSA9IE51bWJlci5OYU47
Ci0gICAgICAgIGlmIChVdGlscy5oYXNDbGVhckxlZnQoYm94KSB8fCBVdGlscy5oYXNDbGVhckJv
dGgoYm94KSkKKyAgICAgICAgaWYgKFV0aWxzLmhhc0NsZWFyTGVmdChsYXlvdXRCb3gpIHx8IFV0
aWxzLmhhc0NsZWFyQm90aChsYXlvdXRCb3gpKQogICAgICAgICAgICAgbGVmdEJvdHRvbSA9IHRo
aXMuX2JvdHRvbSh0aGlzLm1fbGVmdEZsb2F0aW5nQm94U3RhY2spOwotICAgICAgICBpZiAoVXRp
bHMuaGFzQ2xlYXJSaWdodChib3gpIHx8IFV0aWxzLmhhc0NsZWFyQm90aChib3gpKQorICAgICAg
ICBpZiAoVXRpbHMuaGFzQ2xlYXJSaWdodChsYXlvdXRCb3gpIHx8IFV0aWxzLmhhc0NsZWFyQm90
aChsYXlvdXRCb3gpKQogICAgICAgICAgICAgcmlnaHRCb3R0b20gPSB0aGlzLl9ib3R0b20odGhp
cy5tX3JpZ2h0RmxvYXRpbmdCb3hTdGFjayk7CiAKICAgICAgICAgaWYgKCFOdW1iZXIuaXNOYU4o
bGVmdEJvdHRvbSkgJiYgIU51bWJlci5pc05hTihyaWdodEJvdHRvbSkpCi0gICAgICAgICAgICBy
ZXR1cm4gbmV3IExheW91dFBvaW50KE1hdGgubWF4KGxlZnRCb3R0b20sIHJpZ2h0Qm90dG9tKSwg
Ym94LnJlY3QoKS5sZWZ0KCkpOworICAgICAgICAgICAgcmV0dXJuIG5ldyBMYXlvdXRQb2ludChN
YXRoLm1heChsZWZ0Qm90dG9tLCByaWdodEJvdHRvbSksIGxheW91dEJveC5yZWN0KCkubGVmdCgp
KTsKICAgICAgICAgaWYgKCFOdW1iZXIuaXNOYU4obGVmdEJvdHRvbSkpCi0gICAgICAgICAgICBy
ZXR1cm4gbmV3IExheW91dFBvaW50KGxlZnRCb3R0b20sIGJveC5yZWN0KCkubGVmdCgpKTsKKyAg
ICAgICAgICAgIHJldHVybiBuZXcgTGF5b3V0UG9pbnQobGVmdEJvdHRvbSwgbGF5b3V0Qm94LnJl
Y3QoKS5sZWZ0KCkpOwogICAgICAgICBpZiAoIU51bWJlci5pc05hTihyaWdodEJvdHRvbSkpCi0g
ICAgICAgICAgICByZXR1cm4gbmV3IExheW91dFBvaW50KHJpZ2h0Qm90dG9tLCBib3gucmVjdCgp
LmxlZnQoKSk7Ci0gICAgICAgIHJldHVybiBib3gudG9wTGVmdCgpOworICAgICAgICAgICAgcmV0
dXJuIG5ldyBMYXlvdXRQb2ludChyaWdodEJvdHRvbSwgbGF5b3V0Qm94LnJlY3QoKS5sZWZ0KCkp
OworICAgICAgICByZXR1cm4gbGF5b3V0Qm94LnRvcExlZnQoKTsKICAgICB9CiAKLSAgICBfY29t
cHV0ZVBvc2l0aW9uVG9Bdm9pZEludHJ1ZGluZ0Zsb2F0cyhib3gpIHsKLSAgICAgICAgaWYgKCFi
b3guZXN0YWJsaXNoZXNCbG9ja0Zvcm1hdHRpbmdDb250ZXh0KCkgfHwgdGhpcy5faXNFbXB0eSgp
KQotICAgICAgICAgICAgcmV0dXJuIGJveC50b3BMZWZ0KCk7CisgICAgX2NvbXB1dGVQb3NpdGlv
blRvQXZvaWRJbnRydWRpbmdGbG9hdHMobGF5b3V0Qm94KSB7CisgICAgICAgIGlmICghbGF5b3V0
Qm94LmVzdGFibGlzaGVzQmxvY2tGb3JtYXR0aW5nQ29udGV4dCgpIHx8IHRoaXMuX2lzRW1wdHko
KSkKKyAgICAgICAgICAgIHJldHVybiBsYXlvdXRCb3gudG9wTGVmdCgpOwogICAgICAgICAvLyBU
aGUgYm9yZGVyIGJveCBvZiBhIHRhYmxlLCBhIGJsb2NrLWxldmVsIHJlcGxhY2VkIGVsZW1lbnQs
IG9yIGFuIGVsZW1lbnQgaW4gdGhlIG5vcm1hbCBmbG93IHRoYXQgZXN0YWJsaXNoZXMKICAgICAg
ICAgLy8gYSBuZXcgYmxvY2sgZm9ybWF0dGluZyBjb250ZXh0IChzdWNoIGFzIGFuIGVsZW1lbnQg
d2l0aCAnb3ZlcmZsb3cnIG90aGVyIHRoYW4gJ3Zpc2libGUnKSBtdXN0IG5vdCBvdmVybGFwIHRo
ZQogICAgICAgICAvLyBtYXJnaW4gYm94IG9mIGFueSBmbG9hdHMgaW4gdGhlIHNhbWUgYmxvY2sg
Zm9ybWF0dGluZyBjb250ZXh0IGFzIHRoZSBlbGVtZW50IGl0c2VsZi4KICAgICAgICAgLy8gRm9y
IHNvbWUgcmVhc29uLCB3ZSBwb3NpdGlvbiB0aGlzIGFzIGlmIGl0IHdhcyBmbG9hdGluZyBsZWZ0
LgotICAgICAgICByZXR1cm4gdGhpcy5fcG9zaXRpb25Gb3JGbG9hdGluZyhib3gpOworICAgICAg
ICByZXR1cm4gdGhpcy5fcG9zaXRpb25Gb3JGbG9hdGluZyhsYXlvdXRCb3gpOwogICAgIH0KIAog
ICAgIF9hZGRGbG9hdGluZyhmbG9hdGluZ0JveCkgewpkaWZmIC0tZ2l0IGEvVG9vbHMvTGF5b3V0
UmVsb2FkZWQvRm9ybWF0dGluZ0NvbnRleHQvRm9ybWF0dGluZ0NvbnRleHQuanMgYi9Ub29scy9M
YXlvdXRSZWxvYWRlZC9Gb3JtYXR0aW5nQ29udGV4dC9Gb3JtYXR0aW5nQ29udGV4dC5qcwppbmRl
eCAxYzJjM2MyNDlhMzNlNTA2NTY0OWYyODQzMWY4M2E1ZDczZjBiZTc1Li5lZWM4N2Q5YTBlYjBi
YjY4NjI3NTljMDI4OGQxMTczZjA2YzZlMjUxIDEwMDY0NAotLS0gYS9Ub29scy9MYXlvdXRSZWxv
YWRlZC9Gb3JtYXR0aW5nQ29udGV4dC9Gb3JtYXR0aW5nQ29udGV4dC5qcworKysgYi9Ub29scy9M
YXlvdXRSZWxvYWRlZC9Gb3JtYXR0aW5nQ29udGV4dC9Gb3JtYXR0aW5nQ29udGV4dC5qcwpAQCAt
NDAsNTIgKzQwLDUyIEBAIGNsYXNzIEZvcm1hdHRpbmdDb250ZXh0IHsKICAgICBsYXlvdXQobGF5
b3V0Q29udGV4dCkgewogICAgIH0KIAotICAgIGNvbXB1dGVXaWR0aChib3gpIHsKKyAgICBjb21w
dXRlV2lkdGgobGF5b3V0Qm94KSB7CiAgICAgfQogCi0gICAgY29tcHV0ZUhlaWdodChib3gpIHsK
KyAgICBjb21wdXRlSGVpZ2h0KGxheW91dEJveCkgewogICAgIH0KIAotICAgIG1hcmdpblRvcChi
b3gpIHsKLSAgICAgICAgcmV0dXJuIFV0aWxzLmNvbXB1dGVkTWFyZ2luVG9wKGJveCk7CisgICAg
bWFyZ2luVG9wKGxheW91dEJveCkgeworICAgICAgICByZXR1cm4gVXRpbHMuY29tcHV0ZWRNYXJn
aW5Ub3AobGF5b3V0Qm94KTsKICAgICB9CiAgICAgCi0gICAgbWFyZ2luTGVmdChib3gpIHsKLSAg
ICAgICAgcmV0dXJuIFV0aWxzLmNvbXB1dGVkTWFyZ2luTGVmdChib3gpOworICAgIG1hcmdpbkxl
ZnQobGF5b3V0Qm94KSB7CisgICAgICAgIHJldHVybiBVdGlscy5jb21wdXRlZE1hcmdpbkxlZnQo
bGF5b3V0Qm94KTsKICAgICB9CiAgICAgCi0gICAgbWFyZ2luQm90dG9tKGJveCkgewotICAgICAg
ICByZXR1cm4gVXRpbHMuY29tcHV0ZWRNYXJnaW5Cb3R0b20oYm94KTsKKyAgICBtYXJnaW5Cb3R0
b20obGF5b3V0Qm94KSB7CisgICAgICAgIHJldHVybiBVdGlscy5jb21wdXRlZE1hcmdpbkJvdHRv
bShsYXlvdXRCb3gpOwogICAgIH0KICAgICAKLSAgICBtYXJnaW5SaWdodChib3gpIHsKLSAgICAg
ICAgcmV0dXJuIFV0aWxzLmNvbXB1dGVkTWFyZ2luUmlnaHQoYm94KTsKKyAgICBtYXJnaW5SaWdo
dChsYXlvdXRCb3gpIHsKKyAgICAgICAgcmV0dXJuIFV0aWxzLmNvbXB1dGVkTWFyZ2luUmlnaHQo
bGF5b3V0Qm94KTsKICAgICB9CiAKLSAgICBhYnNvbHV0ZU1hcmdpbkJveChib3gpIHsKLSAgICAg
ICAgbGV0IGFic29sdXRlQ29udGVudEJveCA9IFV0aWxzLm1hcFRvQ29udGFpbmVyKGJveCwgdGhp
cy5yb290Q29udGFpbmVyKCkpOwotICAgICAgICBhYnNvbHV0ZUNvbnRlbnRCb3gubW92ZUJ5KG5l
dyBMYXlvdXRTaXplKC10aGlzLm1hcmdpbkxlZnQoYm94KSwgLXRoaXMubWFyZ2luVG9wKGJveCkp
KTsKLSAgICAgICAgYWJzb2x1dGVDb250ZW50Qm94Lmdyb3dCeShuZXcgTGF5b3V0U2l6ZSh0aGlz
Lm1hcmdpbkxlZnQoYm94KSArIHRoaXMubWFyZ2luUmlnaHQoYm94KSwgdGhpcy5tYXJnaW5Ub3Ao
Ym94KSArIHRoaXMubWFyZ2luQm90dG9tKGJveCkpKTsKKyAgICBhYnNvbHV0ZU1hcmdpbkJveChs
YXlvdXRCb3gpIHsKKyAgICAgICAgbGV0IGFic29sdXRlQ29udGVudEJveCA9IFV0aWxzLm1hcFRv
Q29udGFpbmVyKGxheW91dEJveCwgdGhpcy5yb290Q29udGFpbmVyKCkpOworICAgICAgICBhYnNv
bHV0ZUNvbnRlbnRCb3gubW92ZUJ5KG5ldyBMYXlvdXRTaXplKC10aGlzLm1hcmdpbkxlZnQobGF5
b3V0Qm94KSwgLXRoaXMubWFyZ2luVG9wKGxheW91dEJveCkpKTsKKyAgICAgICAgYWJzb2x1dGVD
b250ZW50Qm94Lmdyb3dCeShuZXcgTGF5b3V0U2l6ZSh0aGlzLm1hcmdpbkxlZnQobGF5b3V0Qm94
KSArIHRoaXMubWFyZ2luUmlnaHQobGF5b3V0Qm94KSwgdGhpcy5tYXJnaW5Ub3AobGF5b3V0Qm94
KSArIHRoaXMubWFyZ2luQm90dG9tKGxheW91dEJveCkpKTsKICAgICAgICAgcmV0dXJuIGFic29s
dXRlQ29udGVudEJveDsKICAgICB9CiAKLSAgICBhYnNvbHV0ZUJvcmRlckJveChib3gpIHsKLSAg
ICAgICAgbGV0IGJvcmRlckJveCA9IGJveC5ib3JkZXJCb3goKTsKLSAgICAgICAgbGV0IGFic29s
dXRlUmVjdCA9IG5ldyBMYXlvdXRSZWN0KFV0aWxzLm1hcFRvQ29udGFpbmVyKGJveCwgdGhpcy5y
b290Q29udGFpbmVyKCkpLnRvcExlZnQoKSwgYm9yZGVyQm94LnNpemUoKSk7CisgICAgYWJzb2x1
dGVCb3JkZXJCb3gobGF5b3V0Qm94KSB7CisgICAgICAgIGxldCBib3JkZXJCb3ggPSBsYXlvdXRC
b3guYm9yZGVyQm94KCk7CisgICAgICAgIGxldCBhYnNvbHV0ZVJlY3QgPSBuZXcgTGF5b3V0UmVj
dChVdGlscy5tYXBUb0NvbnRhaW5lcihsYXlvdXRCb3gsIHRoaXMucm9vdENvbnRhaW5lcigpKS50
b3BMZWZ0KCksIGJvcmRlckJveC5zaXplKCkpOwogICAgICAgICBhYnNvbHV0ZVJlY3QubW92ZUJ5
KGJvcmRlckJveC50b3BMZWZ0KCkpOwogICAgICAgICByZXR1cm4gYWJzb2x1dGVSZWN0OwogICAg
IH0KIAotICAgIGFic29sdXRlUGFkZGluZ0JveChib3gpIHsKLSAgICAgICAgbGV0IHBhZGRpbmdC
b3ggPSBib3gucGFkZGluZ0JveCgpOwotICAgICAgICBsZXQgYWJzb2x1dGVSZWN0ID0gbmV3IExh
eW91dFJlY3QoVXRpbHMubWFwVG9Db250YWluZXIoYm94LCB0aGlzLnJvb3RDb250YWluZXIoKSku
dG9wTGVmdCgpLCBwYWRkaW5nQm94LnNpemUoKSk7CisgICAgYWJzb2x1dGVQYWRkaW5nQm94KGxh
eW91dEJveCkgeworICAgICAgICBsZXQgcGFkZGluZ0JveCA9IGxheW91dEJveC5wYWRkaW5nQm94
KCk7CisgICAgICAgIGxldCBhYnNvbHV0ZVJlY3QgPSBuZXcgTGF5b3V0UmVjdChVdGlscy5tYXBU
b0NvbnRhaW5lcihsYXlvdXRCb3gsIHRoaXMucm9vdENvbnRhaW5lcigpKS50b3BMZWZ0KCksIHBh
ZGRpbmdCb3guc2l6ZSgpKTsKICAgICAgICAgYWJzb2x1dGVSZWN0Lm1vdmVCeShwYWRkaW5nQm94
LnRvcExlZnQoKSk7CiAgICAgICAgIHJldHVybiBhYnNvbHV0ZVJlY3Q7CiAgICAgfQogCi0gICAg
YWJzb2x1dGVDb250ZW50Qm94KGJveCkgewotICAgICAgICBsZXQgY29udGVudEJveCA9IGJveC5j
b250ZW50Qm94KCk7Ci0gICAgICAgIGxldCBhYnNvbHV0ZVJlY3QgPSBuZXcgTGF5b3V0UmVjdChV
dGlscy5tYXBUb0NvbnRhaW5lcihib3gsIHRoaXMucm9vdENvbnRhaW5lcigpKS50b3BMZWZ0KCks
IGNvbnRlbnRCb3guc2l6ZSgpKTsKKyAgICBhYnNvbHV0ZUNvbnRlbnRCb3gobGF5b3V0Qm94KSB7
CisgICAgICAgIGxldCBjb250ZW50Qm94ID0gbGF5b3V0Qm94LmNvbnRlbnRCb3goKTsKKyAgICAg
ICAgbGV0IGFic29sdXRlUmVjdCA9IG5ldyBMYXlvdXRSZWN0KFV0aWxzLm1hcFRvQ29udGFpbmVy
KGxheW91dEJveCwgdGhpcy5yb290Q29udGFpbmVyKCkpLnRvcExlZnQoKSwgY29udGVudEJveC5z
aXplKCkpOwogICAgICAgICBhYnNvbHV0ZVJlY3QubW92ZUJ5KGNvbnRlbnRCb3gudG9wTGVmdCgp
KTsKICAgICAgICAgcmV0dXJuIGFic29sdXRlUmVjdDsKICAgICB9CmRpZmYgLS1naXQgYS9Ub29s
cy9MYXlvdXRSZWxvYWRlZC9Gb3JtYXR0aW5nQ29udGV4dC9JbmxpbmVGb3JtYXR0aW5nL0lubGlu
ZUZvcm1hdHRpbmdDb250ZXh0LmpzIGIvVG9vbHMvTGF5b3V0UmVsb2FkZWQvRm9ybWF0dGluZ0Nv
bnRleHQvSW5saW5lRm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5qcwppbmRleCA2
MDU5NzVlNDc5ZTJmMjNiOTBmODFlOTFmZTBmM2EzZjc1OTA3ODA3Li40MWEzNmI5YzJlMzUzNGRl
NWQ1Yjc5YTc4NWI5MzIxYjMxNTc3Yzk2IDEwMDY0NAotLS0gYS9Ub29scy9MYXlvdXRSZWxvYWRl
ZC9Gb3JtYXR0aW5nQ29udGV4dC9JbmxpbmVGb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250
ZXh0LmpzCisrKyBiL1Rvb2xzL0xheW91dFJlbG9hZGVkL0Zvcm1hdHRpbmdDb250ZXh0L0lubGlu
ZUZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuanMKQEAgLTUxLDIwICs1MSwyMCBA
QCBjbGFzcyBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dCBleHRlbmRzIEZvcm1hdHRpbmdDb250ZXh0
IHsKICAgICAgICAgd2hpbGUgKGxheW91dFN0YWNrLmxlbmd0aCkgewogICAgICAgICAgICAgLy8g
VHJhdmVycyBkb3duIG9uIHRoZSBkZXNjZW5kYW50cyB1bnRpbCB3ZSBmaW5kIGEgbGVhZiBub2Rl
LgogICAgICAgICAgICAgd2hpbGUgKHRydWUpIHsKLSAgICAgICAgICAgICAgICBsZXQgYm94ID0g
bGF5b3V0U3RhY2tbbGF5b3V0U3RhY2subGVuZ3RoIC0gMV07Ci0gICAgICAgICAgICAgICAgaWYg
KGJveC5lc3RhYmxpc2hlc0Zvcm1hdHRpbmdDb250ZXh0KCkpIHsKLSAgICAgICAgICAgICAgICAg
ICAgbGF5b3V0Q29udGV4dC5sYXlvdXRGb3JtYXR0aW5nQ29udGV4dChib3guZXN0YWJsaXNoZWRG
b3JtYXR0aW5nQ29udGV4dCgpKTsKKyAgICAgICAgICAgICAgICBsZXQgbGF5b3V0Qm94ID0gbGF5
b3V0U3RhY2tbbGF5b3V0U3RhY2subGVuZ3RoIC0gMV07CisgICAgICAgICAgICAgICAgaWYgKGxh
eW91dEJveC5lc3RhYmxpc2hlc0Zvcm1hdHRpbmdDb250ZXh0KCkpIHsKKyAgICAgICAgICAgICAg
ICAgICAgbGF5b3V0Q29udGV4dC5sYXlvdXRGb3JtYXR0aW5nQ29udGV4dChsYXlvdXRCb3guZXN0
YWJsaXNoZWRGb3JtYXR0aW5nQ29udGV4dCgpKTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmICghYm94LmlzQ29udGFpbmVy
KCkgfHwgIWJveC5oYXNDaGlsZCgpKQorICAgICAgICAgICAgICAgIGlmICghbGF5b3V0Qm94Lmlz
Q29udGFpbmVyKCkgfHwgIWxheW91dEJveC5oYXNDaGlsZCgpKQogICAgICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgICAgICBsYXlvdXRTdGFjay5wdXNoKGJveC5maXJzdENoaWxk
KCkpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgd2hpbGUgKGxheW91dFN0YWNrLmxlbmd0
aCkgewotICAgICAgICAgICAgICAgIGxldCBib3ggPSBsYXlvdXRTdGFjay5wb3AoKTsKLSAgICAg
ICAgICAgICAgICB0aGlzLl9oYW5kbGVJbmxpbmVCb3goYm94KTsKLSAgICAgICAgICAgICAgICBp
ZiAoYm94Lm5leHRTaWJsaW5nKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgbGF5b3V0U3RhY2su
cHVzaChib3gubmV4dFNpYmxpbmcoKSk7CisgICAgICAgICAgICAgICAgbGV0IGxheW91dEJveCA9
IGxheW91dFN0YWNrLnBvcCgpOworICAgICAgICAgICAgICAgIHRoaXMuX2hhbmRsZUlubGluZUJv
eChsYXlvdXRCb3gpOworICAgICAgICAgICAgICAgIGlmIChsYXlvdXRCb3gubmV4dFNpYmxpbmco
KSkgeworICAgICAgICAgICAgICAgICAgICBsYXlvdXRTdGFjay5wdXNoKGxheW91dEJveC5uZXh0
U2libGluZygpKTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvVG9vbHMvTGF5b3V0UmVsb2FkZWQvTGF5b3V0
VHJlZS9CbG9ja0NvbnRhaW5lci5qcyBiL1Rvb2xzL0xheW91dFJlbG9hZGVkL0xheW91dFRyZWUv
QmxvY2tDb250YWluZXIuanMKaW5kZXggYzk0OTFjMTk5MDg4NGZkNjlkZTBkY2E0Yzc4ZmY0ZmY1
NmI3ZDk0OS4uYTc3YmY4YzkzYTgyNjEzYzZkNjcxYjgzYTBmOGMyYjk5NGM0NTJmOCAxMDA2NDQK
LS0tIGEvVG9vbHMvTGF5b3V0UmVsb2FkZWQvTGF5b3V0VHJlZS9CbG9ja0NvbnRhaW5lci5qcwor
KysgYi9Ub29scy9MYXlvdXRSZWxvYWRlZC9MYXlvdXRUcmVlL0Jsb2NrQ29udGFpbmVyLmpzCkBA
IC0yMyw3ICsyMyw3IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLWNsYXNzIEJsb2NrQ29udGFp
bmVyIGV4dGVuZHMgQ29udGFpbmVyIHsKK0xheW91dC5CbG9ja0NvbnRhaW5lciA9IGNsYXNzIEJs
b2NrQ29udGFpbmVyIGV4dGVuZHMgTGF5b3V0LkNvbnRhaW5lciB7CiAgICAgY29uc3RydWN0b3Io
bm9kZSwgaWQpIHsKICAgICAgICAgc3VwZXIobm9kZSwgaWQpOwogICAgIH0KZGlmZiAtLWdpdCBh
L1Rvb2xzL0xheW91dFJlbG9hZGVkL0xheW91dFRyZWUvQm94LmpzIGIvVG9vbHMvTGF5b3V0UmVs
b2FkZWQvTGF5b3V0VHJlZS9Cb3guanMKaW5kZXggMDU2YjA4YTdiMGFjNzAxNDY3ZGY1OTE0OTU1
OWUwNmJmNmUyNmE4YS4uYjUzOTc2NWEyMzI4YTJmZDI5YWFjNjQ3MGY0NzZlMjZmYzRhMGVkYiAx
MDA2NDQKLS0tIGEvVG9vbHMvTGF5b3V0UmVsb2FkZWQvTGF5b3V0VHJlZS9Cb3guanMKKysrIGIv
VG9vbHMvTGF5b3V0UmVsb2FkZWQvTGF5b3V0VHJlZS9Cb3guanMKQEAgLTIzLDcgKzIzLDkgQEAK
ICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotY2xhc3MgQm94IHsKK3ZhciBMYXlvdXQgPSB7IH0KKwor
TGF5b3V0LkJveCA9IGNsYXNzIEJveCB7CiAgICAgY29uc3RydWN0b3Iobm9kZSwgaWQpIHsKICAg
ICAgICAgdGhpcy5tX2lkID0gaWQ7CiAgICAgICAgIHRoaXMubV9yZW5kZXJlck5hbWUgPSBudWxs
OwpkaWZmIC0tZ2l0IGEvVG9vbHMvTGF5b3V0UmVsb2FkZWQvTGF5b3V0VHJlZS9Db250YWluZXIu
anMgYi9Ub29scy9MYXlvdXRSZWxvYWRlZC9MYXlvdXRUcmVlL0NvbnRhaW5lci5qcwppbmRleCBi
NGY2MzEwMmZlYTBmMGQyYWM2MDNlNTU4MGJjMzZiYmJkMWQ0YmE0Li4xMDQyYmY1MzllZGJiZTMz
YzFmOGZjY2NlMmNjN2ZjMTMwYjYxZTFkIDEwMDY0NAotLS0gYS9Ub29scy9MYXlvdXRSZWxvYWRl
ZC9MYXlvdXRUcmVlL0NvbnRhaW5lci5qcworKysgYi9Ub29scy9MYXlvdXRSZWxvYWRlZC9MYXlv
dXRUcmVlL0NvbnRhaW5lci5qcwpAQCAtMjMsNyArMjMsNyBAQAogICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAq
LwogCi1jbGFzcyBDb250YWluZXIgZXh0ZW5kcyBCb3ggeworTGF5b3V0LkNvbnRhaW5lciA9IGNs
YXNzIENvbnRhaW5lciBleHRlbmRzIExheW91dC5Cb3ggewogICAgIGNvbnN0cnVjdG9yKG5vZGUs
IGlkKSB7CiAgICAgICAgIHN1cGVyKG5vZGUsIGlkKTsKICAgICAgICAgdGhpcy5tX2ZpcnN0Q2hp
bGQgPSBudWxsOwpkaWZmIC0tZ2l0IGEvVG9vbHMvTGF5b3V0UmVsb2FkZWQvTGF5b3V0VHJlZS9J
bml0aWFsQmxvY2tDb250YWluZXIuanMgYi9Ub29scy9MYXlvdXRSZWxvYWRlZC9MYXlvdXRUcmVl
L0luaXRpYWxCbG9ja0NvbnRhaW5lci5qcwppbmRleCBhZGFiNTQ4ZTE3YTVlNGVhYWY3YTU0MTNi
YzIxNTk4ZjFiZjM3OGRiLi45ZjgwZjg1MzIwMGE2MDkyMTQ1MTI1NWI2Y2IyZjMyOWE4ODk3Nzhh
IDEwMDY0NAotLS0gYS9Ub29scy9MYXlvdXRSZWxvYWRlZC9MYXlvdXRUcmVlL0luaXRpYWxCbG9j
a0NvbnRhaW5lci5qcworKysgYi9Ub29scy9MYXlvdXRSZWxvYWRlZC9MYXlvdXRUcmVlL0luaXRp
YWxCbG9ja0NvbnRhaW5lci5qcwpAQCAtMjMsNyArMjMsNyBAQAogICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAq
LwogCi1jbGFzcyBJbml0aWFsQmxvY2tDb250YWluZXIgZXh0ZW5kcyBCbG9ja0NvbnRhaW5lciB7
CitMYXlvdXQuSW5pdGlhbEJsb2NrQ29udGFpbmVyID0gY2xhc3MgSW5pdGlhbEJsb2NrQ29udGFp
bmVyIGV4dGVuZHMgTGF5b3V0LkJsb2NrQ29udGFpbmVyIHsKICAgICBjb25zdHJ1Y3Rvcihkb2N1
bWVudCwgaWQsIG5hbWUpIHsKICAgICAgICAgc3VwZXIoZG9jdW1lbnQsIGlkKTsKICAgICB9CmRp
ZmYgLS1naXQgYS9Ub29scy9MYXlvdXRSZWxvYWRlZC9MYXlvdXRUcmVlL0lubGluZUJveC5qcyBi
L1Rvb2xzL0xheW91dFJlbG9hZGVkL0xheW91dFRyZWUvSW5saW5lQm94LmpzCmluZGV4IDRhMmVk
NTA0MzA3YzE4ZGQxZTkzZjgzNGVhMDYzMjk2ZjdkZmVkYWEuLjgwOTFmYTUzZDJmZjAzN2RhZDJi
MWVkM2ZmN2UzZjFhMTYxNTE4ZTAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0xheW91dFJlbG9hZGVkL0xh
eW91dFRyZWUvSW5saW5lQm94LmpzCisrKyBiL1Rvb2xzL0xheW91dFJlbG9hZGVkL0xheW91dFRy
ZWUvSW5saW5lQm94LmpzCkBAIC0yMyw3ICsyMyw3IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAK
LWNsYXNzIElubGluZUJveCBleHRlbmRzIEJveCB7CitMYXlvdXQuSW5saW5lQm94ID0gY2xhc3Mg
SW5saW5lQm94IGV4dGVuZHMgTGF5b3V0LkJveCB7CiAgICAgY29uc3RydWN0b3Iobm9kZSwgaWQp
IHsKICAgICAgICAgc3VwZXIobm9kZSwgaWQpOwogICAgICAgICB0aGlzLm1fdGV4dCA9IG51bGw7
CmRpZmYgLS1naXQgYS9Ub29scy9MYXlvdXRSZWxvYWRlZC9UcmVlQnVpbGRlci5qcyBiL1Rvb2xz
L0xheW91dFJlbG9hZGVkL1RyZWVCdWlsZGVyLmpzCmluZGV4IDgzOWMyNDVmNGEwNmIxOWQ1Zjkx
NDI1NDY1OThjN2ExMDVjZmMxYzIuLjYwZGIyODk3ZjRjMjdiM2NmODQ0ZmI5NmFiYjg1ODFmYzI5
ZDJmNGYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0xheW91dFJlbG9hZGVkL1RyZWVCdWlsZGVyLmpzCisr
KyBiL1Rvb2xzL0xheW91dFJlbG9hZGVkL1RyZWVCdWlsZGVyLmpzCkBAIC0yOCw3ICsyOCw3IEBA
IGNsYXNzIFRyZWVCdWlsZGVyIHsKIAogICAgIGNyZWF0ZVRyZWUoZG9jdW1lbnQsIHJlbmRlclRy
ZWVEdW1wKSB7CiAgICAgICAgIC8vIFJvb3QuCi0gICAgICAgIGxldCBpbml0aWFsQmxvY2tDb250
YWluZXIgPSBuZXcgSW5pdGlhbEJsb2NrQ29udGFpbmVyKGRvY3VtZW50LCBwYXJzZUludChyZW5k
ZXJUcmVlRHVtcC5zdWJzdHJpbmcoMCwgcmVuZGVyVHJlZUR1bXAuaW5kZXhPZigiKCIpKSkpOwor
ICAgICAgICBsZXQgaW5pdGlhbEJsb2NrQ29udGFpbmVyID0gbmV3IExheW91dC5Jbml0aWFsQmxv
Y2tDb250YWluZXIoZG9jdW1lbnQsIHBhcnNlSW50KHJlbmRlclRyZWVEdW1wLnN1YnN0cmluZygw
LCByZW5kZXJUcmVlRHVtcC5pbmRleE9mKCIoIikpKSk7CiAgICAgICAgIGluaXRpYWxCbG9ja0Nv
bnRhaW5lci5zZXRSZW5kZXJlck5hbWUoIlJlbmRlclZpZXciKTsKICAgICAgICAgcmVuZGVyVHJl
ZUR1bXAgPSByZW5kZXJUcmVlRHVtcC5zdWJzdHJpbmcocmVuZGVyVHJlZUR1bXAuaW5kZXhPZigi
fCIpICsgMSk7CiAKQEAgLTUzLDEzICs1MywxMyBAQCBjbGFzcyBUcmVlQnVpbGRlciB7CiAgICAg
ICAgIGxldCB0ZXh0ID0gbnVsbDsKICAgICAgICAgbGV0IG5vZGUgPSB0aGlzLl9maW5kTm9kZShp
bml0aWFsQmxvY2tDb250YWluZXIubm9kZSgpLCBpZCwgbmFtZSk7CiAgICAgICAgIGlmIChuYW1l
ID09ICJSZW5kZXJCbG9jayIgfHwgbmFtZSA9PSAiUmVuZGVyQm9keSIpCi0gICAgICAgICAgICBi
b3ggPSBuZXcgQmxvY2tDb250YWluZXIobm9kZSwgaWQpOworICAgICAgICAgICAgYm94ID0gbmV3
IExheW91dC5CbG9ja0NvbnRhaW5lcihub2RlLCBpZCk7CiAgICAgICAgIGVsc2UgaWYgKG5hbWUg
PT0gIlJlbmRlcklubGluZSIpIHsKLSAgICAgICAgICAgIGJveCA9IG5ldyBJbmxpbmVDb250YWlu
ZXIobm9kZSwgaWQpOworICAgICAgICAgICAgYm94ID0gbmV3IExheW91dC5JbmxpbmVDb250YWlu
ZXIobm9kZSwgaWQpOwogICAgICAgICB9IGVsc2UgaWYgKG5hbWUgPT0gIlJlbmRlclRleHQiKSB7
CiAgICAgICAgICAgICB0ZXh0ID0gbmV3IFRleHQobm9kZSwgaWQpOwogICAgICAgICB9IGVsc2UK
LSAgICAgICAgICAgIGJveCA9IG5ldyBCb3gobm9kZSwgaWQpOworICAgICAgICAgICAgYm94ID0g
bmV3IExheW91dC5Cb3gobm9kZSwgaWQpOwogCiAgICAgICAgIGlmIChib3gpCiAgICAgICAgICAg
ICBib3guc2V0UmVuZGVyZXJOYW1lKG5hbWUpOwpAQCAtNjgsNyArNjgsNyBAQCBjbGFzcyBUcmVl
QnVpbGRlciB7CiAgICAgICAgIC8vIFdlYktpdCBkb2VzIG5vdCBjb25zdHJ1Y3QgYW5vbnltb3Vz
IGlubGluZSBjb250YWluZXIgZm9yIHRleHQgaWYgdGhlIHRleHQKICAgICAgICAgLy8gaXMgYSBk
aXJlY3QgY2hpbGQgb2YgYSBibG9jayBjb250YWluZXIuCiAgICAgICAgIGlmICh0ZXh0ICYmICFw
YXJlbnRCb3guaXNJbmxpbmVDb250YWluZXIpIHsKLSAgICAgICAgICAgIGJveCA9IG5ldyBJbmxp
bmVCb3gobnVsbCwgLTEpOworICAgICAgICAgICAgYm94ID0gbmV3IExheW91dC5JbmxpbmVCb3go
bnVsbCwgLTEpOwogICAgICAgICAgICAgYm94LnNldElzQW5vbnltb3VzKCk7CiAgICAgICAgICAg
ICBib3guc2V0VGV4dCh0ZXh0KTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvVG9vbHMvTGF5b3V0
UmVsb2FkZWQvVXRpbHMuanMgYi9Ub29scy9MYXlvdXRSZWxvYWRlZC9VdGlscy5qcwppbmRleCBk
MzA1MTIxY2M0MWQwNTc1NDA3OGY5YTU4Yjk1YzhmMTZmNGQ3ZTBlLi5mYWQzNjRiNDdlMjA2MTQ0
MWI4NmE3ZDUxNDM1NGQxYWRmMjlmYjgzIDEwMDY0NAotLS0gYS9Ub29scy9MYXlvdXRSZWxvYWRl
ZC9VdGlscy5qcworKysgYi9Ub29scy9MYXlvdXRSZWxvYWRlZC9VdGlscy5qcwpAQCAtNTMxLDcg
KzUzMSw3IEBAIGNsYXNzIFV0aWxzIHsKICAgICAgICAgLy8gU2tpcCBhbm9ueW1vdXMgYm94ZXMg
Zm9yIG5vdyAtVGhpcyBpcyB0aGUgY2FzZSB3aGVyZSBXZWJLaXQgZG9lcyBub3QgZ2VuZXJhdGUg
YW4gYW5vbiBpbmxpbmUgY29udGFpbmVyIGZvciB0ZXh0IGNvbnRlbnQgd2hlcmUgdGhlIHRleHQg
aXMgYSBkaXJlY3QgY2hpbGQKICAgICAgICAgLy8gb2YgYSBibG9jayBjb250YWluZXIuCiAgICAg
ICAgIGxldCBpbmRlbnRhdGlvbiA9ICIgIi5yZXBlYXQobGV2ZWwpOwotICAgICAgICBpZiAoYm94
IGluc3RhbmNlb2YgSW5saW5lQm94KSB7CisgICAgICAgIGlmIChib3ggaW5zdGFuY2VvZiBMYXlv
dXQuSW5saW5lQm94KSB7CiAgICAgICAgICAgICBpZiAoYm94LnRleHQoKSkKICAgICAgICAgICAg
ICAgICByZXR1cm4gaW5kZW50YXRpb24gKyAiI3RleHQgUmVuZGVyVGV4dFxuIjsKICAgICAgICAg
fQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>335849</attachid>
            <date>2018-03-15 08:30:35 -0700</date>
            <delta_ts>2018-03-15 08:57:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-183659-20180315083034.patch</filename>
            <type>text/plain</type>
            <size>54529</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI5NjIyCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMDdjMzlkYjA4MDdkOTY1Mzg3ZmFmMWMxODAxNmY3ODA3
ZWIxY2NkNS4uZjRlYjhkMzhkYWQ4NDRiYjQ4ZGFlOGRjODg1NzFiNWNjZmViN2JlOSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0
MiBAQAorMjAxOC0wMy0xNSAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgorCisgICAg
ICAgIFtMYXlvdXRSZWxvYWRlZF0gSW50cm9kdWNlIExheW91dCBuYW1lc3BhY2UKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MzY1OQorCisgICAgICAg
IFJldmlld2VkIGJ5IEFudHRpIEtvaXZpc3RvLgorCisgICAgICAgIFRoaXMgaXMgaW4gcHJlcGFy
YXRpb24gZm9yIGludHJvZHVjaW5nIHRoZSBkaXNwbGF5IHRyZWUuCisgICAgICAgIEJveCAtPiBM
YXlvdXQuQm94CisKKyAgICAgICAgKiBMYXlvdXRSZWxvYWRlZC9Gb3JtYXR0aW5nQ29udGV4dC9C
bG9ja0Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5qczoKKyAgICAgICAgKEJsb2Nr
Rm9ybWF0dGluZ0NvbnRleHQucHJvdG90eXBlLmxheW91dCk6CisgICAgICAgIChCbG9ja0Zvcm1h
dHRpbmdDb250ZXh0LnByb3RvdHlwZS5jb21wdXRlV2lkdGgpOgorICAgICAgICAoQmxvY2tGb3Jt
YXR0aW5nQ29udGV4dC5wcm90b3R5cGUuY29tcHV0ZUhlaWdodCk6CisgICAgICAgIChCbG9ja0Zv
cm1hdHRpbmdDb250ZXh0LnByb3RvdHlwZS5tYXJnaW5Ub3ApOgorICAgICAgICAoQmxvY2tGb3Jt
YXR0aW5nQ29udGV4dC5wcm90b3R5cGUubWFyZ2luQm90dG9tKToKKyAgICAgICAgKEJsb2NrRm9y
bWF0dGluZ0NvbnRleHQucHJvdG90eXBlLl9jb21wdXRlU3RhdGljUG9zaXRpb24pOgorICAgICAg
ICAoQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5wcm90b3R5cGUuX3BsYWNlSW5GbG93UG9zaXRpb25l
ZENoaWxkcmVuKToKKyAgICAgICAgKEJsb2NrRm9ybWF0dGluZ0NvbnRleHQucHJvdG90eXBlLl9w
bGFjZU91dE9mRmxvd0Rlc2NlbmRhbnRzKToKKyAgICAgICAgKEJsb2NrRm9ybWF0dGluZ0NvbnRl
eHQucHJvdG90eXBlLl9jb21wdXRlT3V0T2ZGbG93V2lkdGgpOgorICAgICAgICAoQmxvY2tGb3Jt
YXR0aW5nQ29udGV4dC5wcm90b3R5cGUuX2NvbXB1dGVGbG9hdGluZ1dpZHRoKToKKyAgICAgICAg
KEJsb2NrRm9ybWF0dGluZ0NvbnRleHQucHJvdG90eXBlLl9jb21wdXRlSW5GbG93V2lkdGgpOgor
ICAgICAgICAoQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5wcm90b3R5cGUuX2NvbXB1dGVPdXRPZkZs
b3dIZWlnaHQpOgorICAgICAgICAoQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5wcm90b3R5cGUuX2Nv
bXB1dGVGbG9hdGluZ0hlaWdodCk6CisgICAgICAgIChCbG9ja0Zvcm1hdHRpbmdDb250ZXh0LnBy
b3RvdHlwZS5fY29tcHV0ZUluRmxvd0hlaWdodCk6CisgICAgICAgIChCbG9ja0Zvcm1hdHRpbmdD
b250ZXh0LnByb3RvdHlwZS5faG9yaXpvbnRhbENvbnN0cmFpbnQpOgorICAgICAgICAoQmxvY2tG
b3JtYXR0aW5nQ29udGV4dC5wcm90b3R5cGUuX2NvbnRlbnRIZWlnaHQpOgorICAgICAgICAoQmxv
Y2tGb3JtYXR0aW5nQ29udGV4dC5wcm90b3R5cGUuX2FkanVzdEJvdHRvbVdpdGhGSVhNRSk6Cisg
ICAgICAgIChCbG9ja0Zvcm1hdHRpbmdDb250ZXh0LnByb3RvdHlwZS5fY29tcHV0ZUluRmxvd1Bv
c2l0aW9uZWRQb3NpdGlvbik6CisgICAgICAgIChCbG9ja0Zvcm1hdHRpbmdDb250ZXh0LnByb3Rv
dHlwZS5fY29tcHV0ZU91dE9mRmxvd1Bvc2l0aW9uKToKKyAgICAgICAgKEJsb2NrRm9ybWF0dGlu
Z0NvbnRleHQucHJvdG90eXBlLl9zaHJpbmtUb0ZpdFdpZHRoKToKKyAgICAgICAgKEJsb2NrRm9y
bWF0dGluZ0NvbnRleHQpOgorICAgICAgICAoQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5wcm90b3R5
cGUuX2NvbXB1dGVIb3Jpem9udGFsQ29uc3RyYWludCk6IERlbGV0ZWQuCisgICAgICAgIChCbG9j
a0Zvcm1hdHRpbmdDb250ZXh0LnByb3RvdHlwZS5fY29tcHV0ZUNvbnRlbnRIZWlnaHQpOiBEZWxl
dGVkLgorICAgICAgICAqIExheW91dFJlbG9hZGVkL0Zvcm1hdHRpbmdDb250ZXh0L0Jsb2NrRm9y
bWF0dGluZy9CbG9ja01hcmdpbkNvbGxhcHNlLmpzOgorICAgICAgICAoQmxvY2tNYXJnaW5Db2xs
YXBzZS5tYXJnaW5Ub3ApOgorICAgICAgICAoQmxvY2tNYXJnaW5Db2xsYXBzZS5tYXJnaW5Cb3R0
b20pOgorICAgICAgICAoQmxvY2tNYXJnaW5Db2xsYXBzZS5faXNNYXJnaW5Ub3BDb2xsYXBzZWRX
aXRoU2libGluZyk6CisgICAgICAgIChCbG9ja01hcmdpbkNvbGxhcHNlLl9pc01hcmdpbkJvdHRv
bUNvbGxhcHNlZFdpdGhTaWJsaW5nKToKKyAgICAgICAgKEJsb2NrTWFyZ2luQ29sbGFwc2UuX2lz
TWFyZ2luVG9wQ29sbGFwc2VkV2l0aFBhcmVudCk6CisgICAgICAgIChCbG9ja01hcmdpbkNvbGxh
cHNlLl9pc01hcmdpbkJvdHRvbUNvbGxhcHNlZFdpdGhQYXJlbnQpOgorICAgICAgICAoQmxvY2tN
YXJnaW5Db2xsYXBzZS5fbm9uQ29sbGFwc2VkTWFyZ2luVG9wKToKKyAgICAgICAgKEJsb2NrTWFy
Z2luQ29sbGFwc2UuX25vbkNvbGxhcHNlZE1hcmdpbkJvdHRvbSk6CisgICAgICAgIChCbG9ja01h
cmdpbkNvbGxhcHNlLl9jb2xsYXBzZWRNYXJnaW5Ub3BGcm9tRmlyc3RDaGlsZCk6CisgICAgICAg
IChCbG9ja01hcmdpbkNvbGxhcHNlLl9jb2xsYXBzZWRNYXJnaW5Cb3R0b21Gcm9tTGFzdENoaWxk
KToKKyAgICAgICAgKEJsb2NrTWFyZ2luQ29sbGFwc2UuX2hhc0Fkam9pbmluZ01hcmdpblRvcEFu
ZEJvdHRvbSk6CisgICAgICAgIChCbG9ja01hcmdpbkNvbGxhcHNlKToKKyAgICAgICAgKiBMYXlv
dXRSZWxvYWRlZC9Gb3JtYXR0aW5nQ29udGV4dC9GbG9hdGluZ0NvbnRleHQuanM6CisgICAgICAg
IChGbG9hdGluZ0NvbnRleHQucHJvdG90eXBlLmNvbXB1dGVQb3NpdGlvbik6CisgICAgICAgIChG
bG9hdGluZ0NvbnRleHQucHJvdG90eXBlLl9wb3NpdGlvbkZvckNsZWFyKToKKyAgICAgICAgKEZs
b2F0aW5nQ29udGV4dC5wcm90b3R5cGUuX2NvbXB1dGVQb3NpdGlvblRvQXZvaWRJbnRydWRpbmdG
bG9hdHMpOgorICAgICAgICAqIExheW91dFJlbG9hZGVkL0Zvcm1hdHRpbmdDb250ZXh0L0Zvcm1h
dHRpbmdDb250ZXh0LmpzOgorICAgICAgICAoRm9ybWF0dGluZ0NvbnRleHQucHJvdG90eXBlLmNv
bXB1dGVXaWR0aCk6CisgICAgICAgIChGb3JtYXR0aW5nQ29udGV4dC5wcm90b3R5cGUuY29tcHV0
ZUhlaWdodCk6CisgICAgICAgIChGb3JtYXR0aW5nQ29udGV4dC5wcm90b3R5cGUubWFyZ2luVG9w
KToKKyAgICAgICAgKEZvcm1hdHRpbmdDb250ZXh0LnByb3RvdHlwZS5tYXJnaW5MZWZ0KToKKyAg
ICAgICAgKEZvcm1hdHRpbmdDb250ZXh0LnByb3RvdHlwZS5tYXJnaW5Cb3R0b20pOgorICAgICAg
ICAoRm9ybWF0dGluZ0NvbnRleHQucHJvdG90eXBlLm1hcmdpblJpZ2h0KToKKyAgICAgICAgKEZv
cm1hdHRpbmdDb250ZXh0LnByb3RvdHlwZS5hYnNvbHV0ZU1hcmdpbkJveCk6CisgICAgICAgIChG
b3JtYXR0aW5nQ29udGV4dC5wcm90b3R5cGUuYWJzb2x1dGVCb3JkZXJCb3gpOgorICAgICAgICAo
Rm9ybWF0dGluZ0NvbnRleHQucHJvdG90eXBlLmFic29sdXRlUGFkZGluZ0JveCk6CisgICAgICAg
IChGb3JtYXR0aW5nQ29udGV4dC5wcm90b3R5cGUuYWJzb2x1dGVDb250ZW50Qm94KToKKyAgICAg
ICAgKEZvcm1hdHRpbmdDb250ZXh0KToKKyAgICAgICAgKiBMYXlvdXRSZWxvYWRlZC9Gb3JtYXR0
aW5nQ29udGV4dC9JbmxpbmVGb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmpzOgor
ICAgICAgICAoSW5saW5lRm9ybWF0dGluZ0NvbnRleHQucHJvdG90eXBlLmxheW91dCk6CisgICAg
ICAgICogTGF5b3V0UmVsb2FkZWQvTGF5b3V0VHJlZS9CbG9ja0NvbnRhaW5lci5qczoKKyAgICAg
ICAgKEJsb2NrQ29udGFpbmVyKTogRGVsZXRlZC4KKyAgICAgICAgKEJsb2NrQ29udGFpbmVyLnBy
b3RvdHlwZS5lc3RhYmxpc2hlc0lubGluZUZvcm1hdHRpbmdDb250ZXh0KTogRGVsZXRlZC4KKyAg
ICAgICAgKiBMYXlvdXRSZWxvYWRlZC9MYXlvdXRUcmVlL0JveC5qczoKKyAgICAgICAgKEJveCk6
IERlbGV0ZWQuCisgICAgICAgIChCb3gucHJvdG90eXBlLmlkKTogRGVsZXRlZC4KKyAgICAgICAg
KEJveC5wcm90b3R5cGUuc2V0UmVuZGVyZXJOYW1lKTogRGVsZXRlZC4KKyAgICAgICAgKEJveC5w
cm90b3R5cGUubmFtZSk6IERlbGV0ZWQuCisgICAgICAgIChCb3gucHJvdG90eXBlLm5vZGUpOiBE
ZWxldGVkLgorICAgICAgICAoQm94LnByb3RvdHlwZS5wYXJlbnQpOiBEZWxldGVkLgorICAgICAg
ICAoQm94LnByb3RvdHlwZS5uZXh0U2libGluZyk6IERlbGV0ZWQuCisgICAgICAgIChCb3gucHJv
dG90eXBlLm5leHRJbkZsb3dTaWJsaW5nKTogRGVsZXRlZC4KKyAgICAgICAgKEJveC5wcm90b3R5
cGUucHJldmlvdXNTaWJsaW5nKTogRGVsZXRlZC4KKyAgICAgICAgKEJveC5wcm90b3R5cGUucHJl
dmlvdXNJbkZsb3dTaWJsaW5nKTogRGVsZXRlZC4KKyAgICAgICAgKEJveC5wcm90b3R5cGUuc2V0
UGFyZW50KTogRGVsZXRlZC4KKyAgICAgICAgKEJveC5wcm90b3R5cGUuc2V0TmV4dFNpYmxpbmcp
OiBEZWxldGVkLgorICAgICAgICAoQm94LnByb3RvdHlwZS5zZXRQcmV2aW91c1NpYmxpbmcpOiBE
ZWxldGVkLgorICAgICAgICAoQm94LnByb3RvdHlwZS5yZWN0KTogRGVsZXRlZC4KKyAgICAgICAg
KEJveC5wcm90b3R5cGUudG9wTGVmdCk6IERlbGV0ZWQuCisgICAgICAgIChCb3gucHJvdG90eXBl
LmJvdHRvbVJpZ2h0KTogRGVsZXRlZC4KKyAgICAgICAgKEJveC5wcm90b3R5cGUuc2V0VG9wTGVm
dCk6IERlbGV0ZWQuCisgICAgICAgIChCb3gucHJvdG90eXBlLnNldFNpemUpOiBEZWxldGVkLgor
ICAgICAgICAoQm94LnByb3RvdHlwZS5zZXRXaWR0aCk6IERlbGV0ZWQuCisgICAgICAgIChCb3gu
cHJvdG90eXBlLnNldEhlaWdodCk6IERlbGV0ZWQuCisgICAgICAgIChCb3gucHJvdG90eXBlLmlz
Q29udGFpbmVyKTogRGVsZXRlZC4KKyAgICAgICAgKEJveC5wcm90b3R5cGUuaXNCbG9ja0xldmVs
Qm94KTogRGVsZXRlZC4KKyAgICAgICAgKEJveC5wcm90b3R5cGUuaXNCbG9ja0NvbnRhaW5lckJv
eCk6IERlbGV0ZWQuCisgICAgICAgIChCb3gucHJvdG90eXBlLmlzSW5saW5lTGV2ZWxCb3gpOiBE
ZWxldGVkLgorICAgICAgICAoQm94LnByb3RvdHlwZS5zZXRJc0Fub255bW91cyk6IERlbGV0ZWQu
CisgICAgICAgIChCb3gucHJvdG90eXBlLmlzQW5vbnltb3VzKTogRGVsZXRlZC4KKyAgICAgICAg
KEJveC5wcm90b3R5cGUuZXN0YWJsaXNoZXNGb3JtYXR0aW5nQ29udGV4dCk6IERlbGV0ZWQuCisg
ICAgICAgIChCb3gucHJvdG90eXBlLmVzdGFibGlzaGVkRm9ybWF0dGluZ0NvbnRleHQpOiBEZWxl
dGVkLgorICAgICAgICAoQm94LnByb3RvdHlwZS5lc3RhYmxpc2hlc0Jsb2NrRm9ybWF0dGluZ0Nv
bnRleHQpOiBEZWxldGVkLgorICAgICAgICAoQm94LnByb3RvdHlwZS5lc3RhYmxpc2hlc0lubGlu
ZUZvcm1hdHRpbmdDb250ZXh0KTogRGVsZXRlZC4KKyAgICAgICAgKEJveC5wcm90b3R5cGUuaXNQ
b3NpdGlvbmVkKTogRGVsZXRlZC4KKyAgICAgICAgKEJveC5wcm90b3R5cGUuaXNSZWxhdGl2ZVBv
c2l0aW9uZWQpOiBEZWxldGVkLgorICAgICAgICAoQm94LnByb3RvdHlwZS5pc0Fic29sdXRlUG9z
aXRpb25lZCk6IERlbGV0ZWQuCisgICAgICAgIChCb3gucHJvdG90eXBlLmlzRml4ZWRQb3NpdGlv
bmVkKTogRGVsZXRlZC4KKyAgICAgICAgKEJveC5wcm90b3R5cGUuaXNJbkZsb3cpOiBEZWxldGVk
LgorICAgICAgICAoQm94LnByb3RvdHlwZS5pc091dE9mRmxvd1Bvc2l0aW9uZWQpOiBEZWxldGVk
LgorICAgICAgICAoQm94LnByb3RvdHlwZS5pc0luRmxvd1Bvc2l0aW9uZWQpOiBEZWxldGVkLgor
ICAgICAgICAoQm94LnByb3RvdHlwZS5pc0Zsb2F0aW5nUG9zaXRpb25lZCk6IERlbGV0ZWQuCisg
ICAgICAgIChCb3gucHJvdG90eXBlLmlzRmxvYXRpbmdPck91dE9mRmxvd1Bvc2l0aW9uZWQpOiBE
ZWxldGVkLgorICAgICAgICAoQm94LnByb3RvdHlwZS5pc1Jvb3RFbGVtZW50KTogRGVsZXRlZC4K
KyAgICAgICAgKEJveC5wcm90b3R5cGUuY29udGFpbmluZ0Jsb2NrKTogRGVsZXRlZC4KKyAgICAg
ICAgKEJveC5wcm90b3R5cGUuYm9yZGVyQm94KTogRGVsZXRlZC4KKyAgICAgICAgKEJveC5wcm90
b3R5cGUucGFkZGluZ0JveCk6IERlbGV0ZWQuCisgICAgICAgIChCb3gucHJvdG90eXBlLmNvbnRl
bnRCb3gpOiBEZWxldGVkLgorICAgICAgICAqIExheW91dFJlbG9hZGVkL0xheW91dFRyZWUvQ29u
dGFpbmVyLmpzOgorICAgICAgICAoQ29udGFpbmVyKTogRGVsZXRlZC4KKyAgICAgICAgKENvbnRh
aW5lci5wcm90b3R5cGUuaXNDb250YWluZXIpOiBEZWxldGVkLgorICAgICAgICAoQ29udGFpbmVy
LnByb3RvdHlwZS5zZXRGaXJzdENoaWxkKTogRGVsZXRlZC4KKyAgICAgICAgKENvbnRhaW5lci5w
cm90b3R5cGUuc2V0TGFzdENoaWxkKTogRGVsZXRlZC4KKyAgICAgICAgKENvbnRhaW5lci5wcm90
b3R5cGUuZmlyc3RDaGlsZCk6IERlbGV0ZWQuCisgICAgICAgIChDb250YWluZXIucHJvdG90eXBl
LmZpcnN0SW5GbG93Q2hpbGQpOiBEZWxldGVkLgorICAgICAgICAoQ29udGFpbmVyLnByb3RvdHlw
ZS5sYXN0Q2hpbGQpOiBEZWxldGVkLgorICAgICAgICAoQ29udGFpbmVyLnByb3RvdHlwZS5sYXN0
SW5GbG93Q2hpbGQpOiBEZWxldGVkLgorICAgICAgICAoQ29udGFpbmVyLnByb3RvdHlwZS5oYXND
aGlsZCk6IERlbGV0ZWQuCisgICAgICAgIChDb250YWluZXIucHJvdG90eXBlLmhhc0luRmxvd0No
aWxkKTogRGVsZXRlZC4KKyAgICAgICAgKiBMYXlvdXRSZWxvYWRlZC9MYXlvdXRUcmVlL0luaXRp
YWxCbG9ja0NvbnRhaW5lci5qczoKKyAgICAgICAgKEluaXRpYWxCbG9ja0NvbnRhaW5lcik6IERl
bGV0ZWQuCisgICAgICAgIChJbml0aWFsQmxvY2tDb250YWluZXIucHJvdG90eXBlLmVzdGFibGlz
aGVzQmxvY2tGb3JtYXR0aW5nQ29udGV4dCk6IERlbGV0ZWQuCisgICAgICAgIChJbml0aWFsQmxv
Y2tDb250YWluZXIucHJvdG90eXBlLnBhZGRpbmdCb3gpOiBEZWxldGVkLgorICAgICAgICAoSW5p
dGlhbEJsb2NrQ29udGFpbmVyLnByb3RvdHlwZS5jb250ZW50Qm94KTogRGVsZXRlZC4KKyAgICAg
ICAgKiBMYXlvdXRSZWxvYWRlZC9MYXlvdXRUcmVlL0lubGluZUJveC5qczoKKyAgICAgICAgKElu
bGluZUJveCk6IERlbGV0ZWQuCisgICAgICAgIChJbmxpbmVCb3gucHJvdG90eXBlLnNldFRleHQp
OiBEZWxldGVkLgorICAgICAgICAoSW5saW5lQm94LnByb3RvdHlwZS50ZXh0KTogRGVsZXRlZC4K
KyAgICAgICAgKiBMYXlvdXRSZWxvYWRlZC9UcmVlQnVpbGRlci5qczoKKyAgICAgICAgKFRyZWVC
dWlsZGVyLnByb3RvdHlwZS5jcmVhdGVUcmVlKToKKyAgICAgICAgKFRyZWVCdWlsZGVyLnByb3Rv
dHlwZS5fY3JlYXRlQW5kQXR0YWNoQm94KToKKyAgICAgICAgKiBMYXlvdXRSZWxvYWRlZC9VdGls
cy5qczoKKyAgICAgICAgKFV0aWxzLl9kdW1wQm94KToKKwogMjAxOC0wMy0xNCAgQ2hyaXMgRmxl
aXphY2ggIDxjZmxlaXphY2hAYXBwbGUuY29tPgogCiAgICAgICAgIEFYOiBJbXBsZW1lbnQgYWNj
ZXNzaWJsZSBkaXNtaXNzIGFjdGlvbiBvbiBpT1MKZGlmZiAtLWdpdCBhL1Rvb2xzL0xheW91dFJl
bG9hZGVkL0Zvcm1hdHRpbmdDb250ZXh0L0Jsb2NrRm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdD
b250ZXh0LmpzIGIvVG9vbHMvTGF5b3V0UmVsb2FkZWQvRm9ybWF0dGluZ0NvbnRleHQvQmxvY2tG
b3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQuanMKaW5kZXggNDYwMDkwZGVmMjU3MDYw
MjJhMmNjNjU2NjQxMGQ0NGFjOTJhMTM3OS4uOWI5MDU3M2E3ZDlhOTg3ZDE2YTFmODc4Njc4YzFk
ZTI1YmZmNGZkOSAxMDA2NDQKLS0tIGEvVG9vbHMvTGF5b3V0UmVsb2FkZWQvRm9ybWF0dGluZ0Nv
bnRleHQvQmxvY2tGb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQuanMKKysrIGIvVG9v
bHMvTGF5b3V0UmVsb2FkZWQvRm9ybWF0dGluZ0NvbnRleHQvQmxvY2tGb3JtYXR0aW5nL0Jsb2Nr
Rm9ybWF0dGluZ0NvbnRleHQuanMKQEAgLTQ3LDMzICs0NywzMyBAQCBjbGFzcyBCbG9ja0Zvcm1h
dHRpbmdDb250ZXh0IGV4dGVuZHMgRm9ybWF0dGluZ0NvbnRleHQgewogICAgICAgICB3aGlsZSAo
bGF5b3V0U3RhY2subGVuZ3RoKSB7CiAgICAgICAgICAgICAvLyBUcmF2ZXJzIGRvd24gb24gdGhl
IGRlc2NlbmRhbnRzIHVudGlsIHdlIGZpbmQgYSBsZWFmIG5vZGUuCiAgICAgICAgICAgICB3aGls
ZSAodHJ1ZSkgewotICAgICAgICAgICAgICAgIGxldCBib3ggPSBsYXlvdXRTdGFja1tsYXlvdXRT
dGFjay5sZW5ndGggLSAxXTsKLSAgICAgICAgICAgICAgICBib3guc2V0V2lkdGgodGhpcy5jb21w
dXRlV2lkdGgoYm94KSk7Ci0gICAgICAgICAgICAgICAgYm94LnNldFRvcExlZnQodGhpcy5fY29t
cHV0ZVN0YXRpY1Bvc2l0aW9uKGJveCkpOwotICAgICAgICAgICAgICAgIGlmIChib3guZXN0YWJs
aXNoZXNGb3JtYXR0aW5nQ29udGV4dCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGxheW91dENv
bnRleHQubGF5b3V0Rm9ybWF0dGluZ0NvbnRleHQoYm94LmVzdGFibGlzaGVkRm9ybWF0dGluZ0Nv
bnRleHQoKSk7CisgICAgICAgICAgICAgICAgbGV0IGxheW91dEJveCA9IGxheW91dFN0YWNrW2xh
eW91dFN0YWNrLmxlbmd0aCAtIDFdOworICAgICAgICAgICAgICAgIHRoaXMuY29tcHV0ZVdpZHRo
KGxheW91dEJveCk7CisgICAgICAgICAgICAgICAgdGhpcy5fY29tcHV0ZVN0YXRpY1Bvc2l0aW9u
KGxheW91dEJveCk7CisgICAgICAgICAgICAgICAgaWYgKGxheW91dEJveC5lc3RhYmxpc2hlc0Zv
cm1hdHRpbmdDb250ZXh0KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgbGF5b3V0Q29udGV4dC5s
YXlvdXRGb3JtYXR0aW5nQ29udGV4dChsYXlvdXRCb3guZXN0YWJsaXNoZWRGb3JtYXR0aW5nQ29u
dGV4dCgpKTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgICAgIGlmICghYm94LmlzQ29udGFpbmVyKCkgfHwgIWJveC5oYXNDaGlsZCgp
KQorICAgICAgICAgICAgICAgIGlmICghbGF5b3V0Qm94LmlzQ29udGFpbmVyKCkgfHwgIWxheW91
dEJveC5oYXNDaGlsZCgpKQogICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg
ICAgICBsYXlvdXRTdGFjay5wdXNoKGJveC5maXJzdENoaWxkKCkpOworICAgICAgICAgICAgICAg
IGxheW91dFN0YWNrLnB1c2gobGF5b3V0Qm94LmZpcnN0Q2hpbGQoKSk7CiAgICAgICAgICAgICB9
CiAKICAgICAgICAgICAgIC8vIENsaW1iIGJhY2sgb24gdGhlIGFuY2VzdG9ycyBhbmQgY29tcHV0
ZSBoZWlnaHQvZmluYWwgcG9zaXRpb24uCiAgICAgICAgICAgICB3aGlsZSAobGF5b3V0U3RhY2su
bGVuZ3RoKSB7CiAgICAgICAgICAgICAgICAgLy8gQWxsIGluZmxvdyBkZXNjZW5kYW50cyAoaWYg
dGhlcmUgYXJlIGFueSkgYXJlIGxhaWQgb3V0IGJ5IG5vdy4gTGV0J3MgY29tcHV0ZSB0aGUgYm94
J3MgaGVpZ2h0LgotICAgICAgICAgICAgICAgIGxldCBib3ggPSBsYXlvdXRTdGFjay5wb3AoKTsK
LSAgICAgICAgICAgICAgICBib3guc2V0SGVpZ2h0KHRoaXMuY29tcHV0ZUhlaWdodChib3gpKTsK
KyAgICAgICAgICAgICAgICBsZXQgbGF5b3V0Qm94ID0gbGF5b3V0U3RhY2sucG9wKCk7CisgICAg
ICAgICAgICAgICAgdGhpcy5jb21wdXRlSGVpZ2h0KGxheW91dEJveCk7CiAgICAgICAgICAgICAg
ICAgLy8gQWRqdXN0IHBvc2l0aW9uIG5vdyB0aGF0IHdlIGhhdmUgYWxsIHRoZSBwcmV2aW91cyBm
bG9hdHMgcGxhY2VkIGluIHRoaXMgY29udGV4dCAtaWYgbmVlZGVkLgotICAgICAgICAgICAgICAg
IGJveC5zZXRUb3BMZWZ0KHRoaXMuZmxvYXRpbmdDb250ZXh0KCkuY29tcHV0ZVBvc2l0aW9uKGJv
eCkpOworICAgICAgICAgICAgICAgIHRoaXMuZmxvYXRpbmdDb250ZXh0KCkuY29tcHV0ZVBvc2l0
aW9uKGxheW91dEJveCk7CiAgICAgICAgICAgICAgICAgLy8gTW92ZSBwb3NpdGlvbmVkIGNoaWxk
cmVuIHRvIHRoZWlyIGZpbmFsIHBvc2l0aW9uLgotICAgICAgICAgICAgICAgIGlmIChib3guaXND
b250YWluZXIoKSkgewotICAgICAgICAgICAgICAgICAgICB0aGlzLl9wbGFjZUluRmxvd1Bvc2l0
aW9uZWRDaGlsZHJlbihib3gpOworICAgICAgICAgICAgICAgIGlmIChsYXlvdXRCb3guaXNDb250
YWluZXIoKSkgeworICAgICAgICAgICAgICAgICAgICB0aGlzLl9wbGFjZUluRmxvd1Bvc2l0aW9u
ZWRDaGlsZHJlbihsYXlvdXRCb3gpOwogICAgICAgICAgICAgICAgICAgICAvLyBQbGFjZSB0aGUg
b3V0IG9mIGZsb3cgY29udGVudC4KLSAgICAgICAgICAgICAgICAgICAgdGhpcy5fcGxhY2VPdXRP
ZkZsb3dEZXNjZW5kYW50cyhib3gpOworICAgICAgICAgICAgICAgICAgICB0aGlzLl9wbGFjZU91
dE9mRmxvd0Rlc2NlbmRhbnRzKGxheW91dEJveCk7CiAgICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgICAgIGlmIChib3gubmV4dFNpYmxpbmcoKSkgewotICAgICAgICAgICAgICAgICAgICBs
YXlvdXRTdGFjay5wdXNoKGJveC5uZXh0U2libGluZygpKTsKKyAgICAgICAgICAgICAgICBpZiAo
bGF5b3V0Qm94Lm5leHRTaWJsaW5nKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgbGF5b3V0U3Rh
Y2sucHVzaChsYXlvdXRCb3gubmV4dFNpYmxpbmcoKSk7CiAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KQEAgLTgyLDU1ICs4Miw1NSBA
QCBjbGFzcyBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0IGV4dGVuZHMgRm9ybWF0dGluZ0NvbnRleHQg
ewogICAgICAgICB0aGlzLl9wbGFjZU91dE9mRmxvd0Rlc2NlbmRhbnRzKHRoaXMucm9vdENvbnRh
aW5lcigpKTsKICAgIH0KIAotICAgIGNvbXB1dGVXaWR0aChib3gpIHsKLSAgICAgICAgaWYgKGJv
eC5pc091dE9mRmxvd1Bvc2l0aW9uZWQoKSkKLSAgICAgICAgICAgIHJldHVybiB0aGlzLl9jb21w
dXRlT3V0T2ZGbG93V2lkdGgoYm94KTsKLSAgICAgICAgaWYgKGJveC5pc0Zsb2F0aW5nUG9zaXRp
b25lZCgpKQotICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2NvbXB1dGVGbG9hdGluZ1dpZHRoKGJv
eCk7Ci0gICAgICAgIHJldHVybiB0aGlzLl9jb21wdXRlSW5GbG93V2lkdGgoYm94KTsKKyAgICBj
b21wdXRlV2lkdGgobGF5b3V0Qm94KSB7CisgICAgICAgIGlmIChsYXlvdXRCb3guaXNPdXRPZkZs
b3dQb3NpdGlvbmVkKCkpCisgICAgICAgICAgICByZXR1cm4gdGhpcy5fY29tcHV0ZU91dE9mRmxv
d1dpZHRoKGxheW91dEJveCk7CisgICAgICAgIGlmIChsYXlvdXRCb3guaXNGbG9hdGluZ1Bvc2l0
aW9uZWQoKSkKKyAgICAgICAgICAgIHJldHVybiB0aGlzLl9jb21wdXRlRmxvYXRpbmdXaWR0aChs
YXlvdXRCb3gpOworICAgICAgICByZXR1cm4gdGhpcy5fY29tcHV0ZUluRmxvd1dpZHRoKGxheW91
dEJveCk7CiAgICAgfQogCi0gICAgY29tcHV0ZUhlaWdodChib3gpIHsKLSAgICAgICAgaWYgKGJv
eC5pc091dE9mRmxvd1Bvc2l0aW9uZWQoKSkKLSAgICAgICAgICAgIHJldHVybiB0aGlzLl9jb21w
dXRlT3V0T2ZGbG93SGVpZ2h0KGJveCk7Ci0gICAgICAgIGlmIChib3guaXNGbG9hdGluZ1Bvc2l0
aW9uZWQoKSkKLSAgICAgICAgICAgIHJldHVybiB0aGlzLl9jb21wdXRlRmxvYXRpbmdIZWlnaHQo
Ym94KTsKLSAgICAgICAgcmV0dXJuIHRoaXMuX2NvbXB1dGVJbkZsb3dIZWlnaHQoYm94KTsKKyAg
ICBjb21wdXRlSGVpZ2h0KGxheW91dEJveCkgeworICAgICAgICBpZiAobGF5b3V0Qm94LmlzT3V0
T2ZGbG93UG9zaXRpb25lZCgpKQorICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2NvbXB1dGVPdXRP
ZkZsb3dIZWlnaHQobGF5b3V0Qm94KTsKKyAgICAgICAgaWYgKGxheW91dEJveC5pc0Zsb2F0aW5n
UG9zaXRpb25lZCgpKQorICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2NvbXB1dGVGbG9hdGluZ0hl
aWdodChsYXlvdXRCb3gpOworICAgICAgICByZXR1cm4gdGhpcy5fY29tcHV0ZUluRmxvd0hlaWdo
dChsYXlvdXRCb3gpOwogICAgIH0KIAotICAgIG1hcmdpblRvcChib3gpIHsKLSAgICAgICAgcmV0
dXJuIEJsb2NrTWFyZ2luQ29sbGFwc2UubWFyZ2luVG9wKGJveCk7CisgICAgbWFyZ2luVG9wKGxh
eW91dEJveCkgeworICAgICAgICByZXR1cm4gQmxvY2tNYXJnaW5Db2xsYXBzZS5tYXJnaW5Ub3Ao
bGF5b3V0Qm94KTsKICAgICB9CiAKLSAgICBtYXJnaW5Cb3R0b20oYm94KSB7Ci0gICAgICAgIHJl
dHVybiBCbG9ja01hcmdpbkNvbGxhcHNlLm1hcmdpbkJvdHRvbShib3gpOworICAgIG1hcmdpbkJv
dHRvbShsYXlvdXRCb3gpIHsKKyAgICAgICAgcmV0dXJuIEJsb2NrTWFyZ2luQ29sbGFwc2UubWFy
Z2luQm90dG9tKGxheW91dEJveCk7CiAgICAgfQogCi0gICAgX2NvbXB1dGVTdGF0aWNQb3NpdGlv
bihib3gpIHsKKyAgICBfY29tcHV0ZVN0YXRpY1Bvc2l0aW9uKGxheW91dEJveCkgewogICAgICAg
ICAvLyBJbiBhIGJsb2NrIGZvcm1hdHRpbmcgY29udGV4dCwgYm94ZXMgYXJlIGxhaWQgb3V0IG9u
ZSBhZnRlciB0aGUgb3RoZXIsIHZlcnRpY2FsbHksIGJlZ2lubmluZyBhdCB0aGUgdG9wIG9mIGEg
Y29udGFpbmluZyBibG9jay4KICAgICAgICAgLy8gVGhlIHZlcnRpY2FsIGRpc3RhbmNlIGJldHdl
ZW4gdHdvIHNpYmxpbmcgYm94ZXMgaXMgZGV0ZXJtaW5lZCBieSB0aGUgJ21hcmdpbicgcHJvcGVy
dGllcy4KICAgICAgICAgLy8gVmVydGljYWwgbWFyZ2lucyBiZXR3ZWVuIGFkamFjZW50IGJsb2Nr
LWxldmVsIGJveGVzIGluIGEgYmxvY2sgZm9ybWF0dGluZyBjb250ZXh0IGNvbGxhcHNlLgotICAg
ICAgICBsZXQgcGFyZW50ID0gYm94LnBhcmVudCgpOworICAgICAgICBsZXQgcGFyZW50ID0gbGF5
b3V0Qm94LnBhcmVudCgpOwogICAgICAgICAvLyBTdGFydCBmcm9tIHRoZSB0b3Agb2YgdGhlIGNv
bnRhaW5lcidzIGNvbnRlbnQgYm94LgotICAgICAgICBsZXQgcHJldmlvdXNJbkZsb3dTaWJsaW5n
ID0gYm94LnByZXZpb3VzSW5GbG93U2libGluZygpOworICAgICAgICBsZXQgcHJldmlvdXNJbkZs
b3dTaWJsaW5nID0gbGF5b3V0Qm94LnByZXZpb3VzSW5GbG93U2libGluZygpOwogICAgICAgICBs
ZXQgY29udGVudEJvdHRvbSA9IHByZXZpb3VzSW5GbG93U2libGluZyA/IHByZXZpb3VzSW5GbG93
U2libGluZy5ib3R0b21SaWdodCgpLnRvcCgpICsgdGhpcy5tYXJnaW5Cb3R0b20ocHJldmlvdXNJ
bkZsb3dTaWJsaW5nKSA6IHBhcmVudC5jb250ZW50Qm94KCkudG9wKCk7CiAgICAgICAgIGxldCBw
b3NpdGlvbiA9IG5ldyBMYXlvdXRQb2ludChjb250ZW50Qm90dG9tLCBwYXJlbnQuY29udGVudEJv
eCgpLmxlZnQoKSk7Ci0gICAgICAgIHBvc2l0aW9uLm1vdmVCeShuZXcgTGF5b3V0U2l6ZSh0aGlz
Lm1hcmdpbkxlZnQoYm94KSwgdGhpcy5tYXJnaW5Ub3AoYm94KSkpOwotICAgICAgICByZXR1cm4g
cG9zaXRpb247CisgICAgICAgIHBvc2l0aW9uLm1vdmVCeShuZXcgTGF5b3V0U2l6ZSh0aGlzLm1h
cmdpbkxlZnQobGF5b3V0Qm94KSwgdGhpcy5tYXJnaW5Ub3AobGF5b3V0Qm94KSkpOworICAgICAg
ICBsYXlvdXRCb3guc2V0VG9wTGVmdChwb3NpdGlvbik7CiAgICAgfQogCiAgICAgX3BsYWNlSW5G
bG93UG9zaXRpb25lZENoaWxkcmVuKGNvbnRhaW5lcikgewogICAgICAgICBmb3IgKGxldCBpbkZs
b3dDaGlsZCA9IGNvbnRhaW5lci5maXJzdEluRmxvd0NoaWxkKCk7IGluRmxvd0NoaWxkOyBpbkZs
b3dDaGlsZCA9IGluRmxvd0NoaWxkLm5leHRJbkZsb3dTaWJsaW5nKCkpCi0gICAgICAgICAgICBp
bkZsb3dDaGlsZC5zZXRUb3BMZWZ0KHRoaXMuX2NvbXB1dGVJbkZsb3dQb3NpdGlvbmVkUG9zaXRp
b24oaW5GbG93Q2hpbGQpKTsKKyAgICAgICAgICAgIHRoaXMuX2NvbXB1dGVJbkZsb3dQb3NpdGlv
bmVkUG9zaXRpb24oaW5GbG93Q2hpbGQpOwogICAgIH0KIAogICAgIF9wbGFjZU91dE9mRmxvd0Rl
c2NlbmRhbnRzKGNvbnRhaW5lcikgewogICAgICAgICBsZXQgb3V0T2ZGbG93RGVzY2VuZGFudHMg
PSBVdGlscy5jb2xsZWN0T3V0T2ZGbG93RGVzY2VuZGFudHMoY29udGFpbmVyKTsKICAgICAgICAg
Zm9yIChsZXQgb3V0T2ZGbG93Qm94IG9mIG91dE9mRmxvd0Rlc2NlbmRhbnRzKQotICAgICAgICAg
ICAgb3V0T2ZGbG93Qm94LnNldFRvcExlZnQodGhpcy5fY29tcHV0ZU91dE9mRmxvd1Bvc2l0aW9u
KG91dE9mRmxvd0JveCkpOworICAgICAgICAgICAgdGhpcy5fY29tcHV0ZU91dE9mRmxvd1Bvc2l0
aW9uKG91dE9mRmxvd0JveCk7CiAgICAgfQogCi0gICAgX2NvbXB1dGVPdXRPZkZsb3dXaWR0aChi
b3gpIHsKKyAgICBfY29tcHV0ZU91dE9mRmxvd1dpZHRoKGxheW91dEJveCkgewogICAgICAgICAv
LyAxMC4zLjcgQWJzb2x1dGVseSBwb3NpdGlvbmVkLCBub24tcmVwbGFjZWQgZWxlbWVudHMKIAog
ICAgICAgICAvLyAxLiAnbGVmdCcgYW5kICd3aWR0aCcgYXJlICdhdXRvJyBhbmQgJ3JpZ2h0JyBp
cyBub3QgJ2F1dG8nLCB0aGVuIHRoZSB3aWR0aCBpcyBzaHJpbmstdG8tZml0LiBUaGVuIHNvbHZl
IGZvciAnbGVmdCcKQEAgLTE0MiwzNyArMTQyLDM4IEBAIGNsYXNzIEJsb2NrRm9ybWF0dGluZ0Nv
bnRleHQgZXh0ZW5kcyBGb3JtYXR0aW5nQ29udGV4dCB7CiAgICAgICAgIC8vIDUuICd3aWR0aCcg
aXMgJ2F1dG8nLCAnbGVmdCcgYW5kICdyaWdodCcgYXJlIG5vdCAnYXV0bycsIHRoZW4gc29sdmUg
Zm9yICd3aWR0aCcKICAgICAgICAgLy8gNi4gJ3JpZ2h0JyBpcyAnYXV0bycsICdsZWZ0JyBhbmQg
J3dpZHRoJyBhcmUgbm90ICdhdXRvJywgdGhlbiBzb2x2ZSBmb3IgJ3JpZ2h0JwogICAgICAgICBs
ZXQgd2lkdGggPSBOdW1iZXIuTmFOOwotICAgICAgICBpZiAoVXRpbHMuaXNXaWR0aEF1dG8oYm94
KSAmJiBVdGlscy5pc0xlZnRBdXRvKGJveCkgJiYgVXRpbHMuaXNSaWdodEF1dG8oYm94KSkKLSAg
ICAgICAgICAgIHdpZHRoID0gdGhpcy5fc2hyaW5rVG9GaXRXaWR0aChib3gpOwotICAgICAgICBl
bHNlIGlmIChVdGlscy5pc0xlZnRBdXRvKGJveCkgJiYgVXRpbHMuaXNXaWR0aEF1dG8oYm94KSAm
JiAhVXRpbHMuaXNSaWdodEF1dG8oYm94KSkKLSAgICAgICAgICAgIHdpZHRoID0gdGhpcy5fc2hy
aW5rVG9GaXRXaWR0aChib3gpOyAvLyAxCi0gICAgICAgIGVsc2UgaWYgKFV0aWxzLmlzTGVmdEF1
dG8oYm94KSAmJiBVdGlscy5pc1JpZ2h0QXV0byhib3gpICYmICFVdGlscy5pc1dpZHRoQXV0byhi
b3gpKQotICAgICAgICAgICAgd2lkdGggPSBVdGlscy53aWR0aChib3gpOyAvLyAyCi0gICAgICAg
IGVsc2UgaWYgKFV0aWxzLmlzV2lkdGhBdXRvKGJveCkgJiYgVXRpbHMuaXNSaWdodEF1dG8oYm94
KSAmJiAhVXRpbHMuaXNMZWZ0QXV0byhib3gpKQotICAgICAgICAgICAgd2lkdGggPSB0aGlzLl9z
aHJpbmtUb0ZpdFdpZHRoKGJveCk7IC8vIDMKLSAgICAgICAgZWxzZSBpZiAoVXRpbHMuaXNMZWZ0
QXV0byhib3gpICYmICFVdGlscy5pc1dpZHRoQXV0byhib3gpICYmICFVdGlscy5pc1JpZ2h0QXV0
byhib3gpKQotICAgICAgICAgICAgd2lkdGggPSBVdGlscy53aWR0aChib3gpOyAvLyA0Ci0gICAg
ICAgIGVsc2UgaWYgKFV0aWxzLmlzV2lkdGhBdXRvKGJveCkgJiYgIVV0aWxzLmlzTGVmdEF1dG8o
Ym94KSAmJiAhVXRpbHMuaXNSaWdodEF1dG8oYm94KSkKLSAgICAgICAgICAgIHdpZHRoID0gTWF0
aC5tYXgoMCwgYm94LmNvbnRhaW5pbmdCbG9jaygpLmNvbnRlbnRCb3goKS53aWR0aCgpIC0gVXRp
bHMucmlnaHQoYm94KSAtIFV0aWxzLmxlZnQoYm94KSk7IC8vIDUKLSAgICAgICAgZWxzZSBpZiAo
VXRpbHMuaXNSaWdodEF1dG8oYm94KSAmJiAhVXRpbHMuaXNMZWZ0QXV0byhib3gpICYmICFVdGls
cy5pc1dpZHRoQXV0byhib3gpKQotICAgICAgICAgICAgd2lkdGggPSBVdGlscy53aWR0aChib3gp
OyAvLyA2CisgICAgICAgIGlmIChVdGlscy5pc1dpZHRoQXV0byhsYXlvdXRCb3gpICYmIFV0aWxz
LmlzTGVmdEF1dG8obGF5b3V0Qm94KSAmJiBVdGlscy5pc1JpZ2h0QXV0byhsYXlvdXRCb3gpKQor
ICAgICAgICAgICAgd2lkdGggPSB0aGlzLl9zaHJpbmtUb0ZpdFdpZHRoKGxheW91dEJveCk7Cisg
ICAgICAgIGVsc2UgaWYgKFV0aWxzLmlzTGVmdEF1dG8obGF5b3V0Qm94KSAmJiBVdGlscy5pc1dp
ZHRoQXV0byhsYXlvdXRCb3gpICYmICFVdGlscy5pc1JpZ2h0QXV0byhsYXlvdXRCb3gpKQorICAg
ICAgICAgICAgd2lkdGggPSB0aGlzLl9zaHJpbmtUb0ZpdFdpZHRoKGxheW91dEJveCk7IC8vIDEK
KyAgICAgICAgZWxzZSBpZiAoVXRpbHMuaXNMZWZ0QXV0byhsYXlvdXRCb3gpICYmIFV0aWxzLmlz
UmlnaHRBdXRvKGxheW91dEJveCkgJiYgIVV0aWxzLmlzV2lkdGhBdXRvKGxheW91dEJveCkpCisg
ICAgICAgICAgICB3aWR0aCA9IFV0aWxzLndpZHRoKGxheW91dEJveCk7IC8vIDIKKyAgICAgICAg
ZWxzZSBpZiAoVXRpbHMuaXNXaWR0aEF1dG8obGF5b3V0Qm94KSAmJiBVdGlscy5pc1JpZ2h0QXV0
byhsYXlvdXRCb3gpICYmICFVdGlscy5pc0xlZnRBdXRvKGxheW91dEJveCkpCisgICAgICAgICAg
ICB3aWR0aCA9IHRoaXMuX3Nocmlua1RvRml0V2lkdGgobGF5b3V0Qm94KTsgLy8gMworICAgICAg
ICBlbHNlIGlmIChVdGlscy5pc0xlZnRBdXRvKGxheW91dEJveCkgJiYgIVV0aWxzLmlzV2lkdGhB
dXRvKGxheW91dEJveCkgJiYgIVV0aWxzLmlzUmlnaHRBdXRvKGxheW91dEJveCkpCisgICAgICAg
ICAgICB3aWR0aCA9IFV0aWxzLndpZHRoKGxheW91dEJveCk7IC8vIDQKKyAgICAgICAgZWxzZSBp
ZiAoVXRpbHMuaXNXaWR0aEF1dG8obGF5b3V0Qm94KSAmJiAhVXRpbHMuaXNMZWZ0QXV0byhsYXlv
dXRCb3gpICYmICFVdGlscy5pc1JpZ2h0QXV0byhsYXlvdXRCb3gpKQorICAgICAgICAgICAgd2lk
dGggPSBNYXRoLm1heCgwLCBsYXlvdXRCb3guY29udGFpbmluZ0Jsb2NrKCkuY29udGVudEJveCgp
LndpZHRoKCkgLSBVdGlscy5yaWdodChsYXlvdXRCb3gpIC0gVXRpbHMubGVmdChsYXlvdXRCb3gp
KTsgLy8gNQorICAgICAgICBlbHNlIGlmIChVdGlscy5pc1JpZ2h0QXV0byhsYXlvdXRCb3gpICYm
ICFVdGlscy5pc0xlZnRBdXRvKGxheW91dEJveCkgJiYgIVV0aWxzLmlzV2lkdGhBdXRvKGxheW91
dEJveCkpCisgICAgICAgICAgICB3aWR0aCA9IFV0aWxzLndpZHRoKGxheW91dEJveCk7IC8vIDYK
ICAgICAgICAgZWxzZQogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAg
IHJldHVybiB3aWR0aCArIFV0aWxzLmNvbXB1dGVkSG9yaXpvbnRhbEJvcmRlckFuZFBhZGRpbmco
Ym94KTsKKyAgICAgICAgd2lkdGggKz0gVXRpbHMuY29tcHV0ZWRIb3Jpem9udGFsQm9yZGVyQW5k
UGFkZGluZyhsYXlvdXRCb3gpOworICAgICAgICBsYXlvdXRCb3guc2V0V2lkdGgod2lkdGgpOwog
ICAgIH0KIAotICAgIF9jb21wdXRlRmxvYXRpbmdXaWR0aChib3gpIHsKKyAgICBfY29tcHV0ZUZs
b2F0aW5nV2lkdGgobGF5b3V0Qm94KSB7CiAgICAgICAgIC8vIEZJWE1FOiBtaXNzaW5nIGNhc2Vz
Ci0gICAgICAgIHJldHVybiBVdGlscy53aWR0aChib3gpICsgVXRpbHMuY29tcHV0ZWRIb3Jpem9u
dGFsQm9yZGVyQW5kUGFkZGluZyhib3gpOworICAgICAgICBsYXlvdXRCb3guc2V0V2lkdGgoVXRp
bHMud2lkdGgobGF5b3V0Qm94KSArIFV0aWxzLmNvbXB1dGVkSG9yaXpvbnRhbEJvcmRlckFuZFBh
ZGRpbmcobGF5b3V0Qm94KSk7CiAgICAgfQogCi0gICAgX2NvbXB1dGVJbkZsb3dXaWR0aChib3gp
IHsKLSAgICAgICAgaWYgKFV0aWxzLmlzV2lkdGhBdXRvKGJveCkpCi0gICAgICAgICAgICByZXR1
cm4gdGhpcy5fY29tcHV0ZUhvcml6b250YWxDb25zdHJhaW50KGJveCk7Ci0gICAgICAgIHJldHVy
biBVdGlscy53aWR0aChib3gpICsgVXRpbHMuY29tcHV0ZWRIb3Jpem9udGFsQm9yZGVyQW5kUGFk
ZGluZyhib3gpOworICAgIF9jb21wdXRlSW5GbG93V2lkdGgobGF5b3V0Qm94KSB7CisgICAgICAg
IGlmIChVdGlscy5pc1dpZHRoQXV0byhsYXlvdXRCb3gpKQorICAgICAgICAgICAgcmV0dXJuIGxh
eW91dEJveC5zZXRXaWR0aCh0aGlzLl9ob3Jpem9udGFsQ29uc3RyYWludChsYXlvdXRCb3gpKTsK
KyAgICAgICAgcmV0dXJuIGxheW91dEJveC5zZXRXaWR0aChVdGlscy53aWR0aChsYXlvdXRCb3gp
ICsgVXRpbHMuY29tcHV0ZWRIb3Jpem9udGFsQm9yZGVyQW5kUGFkZGluZyhsYXlvdXRCb3gpKTsK
ICAgICB9CiAKLSAgICBfY29tcHV0ZU91dE9mRmxvd0hlaWdodChib3gpIHsKKyAgICBfY29tcHV0
ZU91dE9mRmxvd0hlaWdodChsYXlvdXRCb3gpIHsKICAgICAgICAgLy8gMS4gSWYgYWxsIHRocmVl
IG9mICd0b3AnLCAnaGVpZ2h0JywgYW5kICdib3R0b20nIGFyZSBhdXRvLCBzZXQgJ3RvcCcgdG8g
dGhlIHN0YXRpYyBwb3NpdGlvbiBhbmQgYXBwbHkgcnVsZSBudW1iZXIgdGhyZWUgYmVsb3cuCiAg
ICAgICAgIC8vIDIuIElmIG5vbmUgb2YgdGhlIHRocmVlIGFyZSAnYXV0byc6IElmIGJvdGggJ21h
cmdpbi10b3AnIGFuZCAnbWFyZ2luLWJvdHRvbScgYXJlICdhdXRvJywgc29sdmUgdGhlIGVxdWF0
aW9uIHVuZGVyCiAgICAgICAgIC8vICAgIHRoZSBleHRyYSBjb25zdHJhaW50IHRoYXQgdGhlIHR3
byBtYXJnaW5zIGdldCBlcXVhbCB2YWx1ZXMuIElmIG9uZSBvZiAnbWFyZ2luLXRvcCcgb3IgJ21h
cmdpbi1ib3R0b20nIGlzICdhdXRvJywKQEAgLTE4OSw0OSArMTkwLDUwIEBAIGNsYXNzIEJsb2Nr
Rm9ybWF0dGluZ0NvbnRleHQgZXh0ZW5kcyBGb3JtYXR0aW5nQ29udGV4dCB7CiAgICAgICAgIC8v
IDcuICdoZWlnaHQnIGlzICdhdXRvJywgJ3RvcCcgYW5kICdib3R0b20nIGFyZSBub3QgJ2F1dG8n
LCB0aGVuICdhdXRvJyB2YWx1ZXMgZm9yICdtYXJnaW4tdG9wJyBhbmQgJ21hcmdpbi1ib3R0b20n
IGFyZSBzZXQgdG8gMCBhbmQgc29sdmUgZm9yICdoZWlnaHQnCiAgICAgICAgIC8vIDguICdib3R0
b20nIGlzICdhdXRvJywgJ3RvcCcgYW5kICdoZWlnaHQnIGFyZSBub3QgJ2F1dG8nLCB0aGVuIHNl
dCAnYXV0bycgdmFsdWVzIGZvciAnbWFyZ2luLXRvcCcgYW5kICdtYXJnaW4tYm90dG9tJyB0byAw
IGFuZCBzb2x2ZSBmb3IgJ2JvdHRvbScKICAgICAgICAgbGV0IGhlaWdodCA9IE51bWJlci5OYU47
Ci0gICAgICAgIGlmIChVdGlscy5pc0hlaWdodEF1dG8oYm94KSAmJiBVdGlscy5pc0JvdHRvbUF1
dG8oYm94KSAmJiBVdGlscy5pc1RvcEF1dG8oYm94KSkKLSAgICAgICAgICAgIGhlaWdodCA9IHRo
aXMuX2NvbXB1dGVDb250ZW50SGVpZ2h0KGJveCk7IC8vIDEKLSAgICAgICAgZWxzZSBpZiAoVXRp
bHMuaXNUb3BBdXRvKChib3gpKSAmJiBVdGlscy5pc0hlaWdodEF1dG8oKGJveCkpICYmICFVdGls
cy5pc0JvdHRvbUF1dG8oKGJveCkpKQotICAgICAgICAgICAgaGVpZ2h0ID0gdGhpcy5fY29tcHV0
ZUNvbnRlbnRIZWlnaHQoYm94KTsgLy8gMwotICAgICAgICBlbHNlIGlmIChVdGlscy5pc1RvcEF1
dG8oKGJveCkpICYmIFV0aWxzLmlzQm90dG9tQXV0bygoYm94KSkgJiYgIVV0aWxzLmlzSGVpZ2h0
QXV0bygoYm94KSkpCi0gICAgICAgICAgICBoZWlnaHQgPSBVdGlscy5oZWlnaHQoYm94KTsgLy8g
NAotICAgICAgICBlbHNlIGlmIChVdGlscy5pc0hlaWdodEF1dG8oKGJveCkpICYmIFV0aWxzLmlz
Qm90dG9tQXV0bygoYm94KSkgJiYgIVV0aWxzLmlzVG9wQXV0bygoYm94KSkpCi0gICAgICAgICAg
ICBoZWlnaHQgPSB0aGlzLl9jb21wdXRlQ29udGVudEhlaWdodChib3gpOyAvLyA1Ci0gICAgICAg
IGVsc2UgaWYgKFV0aWxzLmlzVG9wQXV0bygoYm94KSkgJiYgIVV0aWxzLmlzSGVpZ2h0QXV0bygo
Ym94KSkgJiYgIVV0aWxzLmlzQm90dG9tQXV0bygoYm94KSkpCi0gICAgICAgICAgICBoZWlnaHQg
PSBVdGlscy5oZWlnaHQoYm94KTsgLy8gNgotICAgICAgICBlbHNlIGlmIChVdGlscy5pc0hlaWdo
dEF1dG8oKGJveCkpICYmICFVdGlscy5pc1RvcEF1dG8oKGJveCkpICYmICFVdGlscy5pc0JvdHRv
bUF1dG8oKGJveCkpKQotICAgICAgICAgICAgaGVpZ2h0ID0gTWF0aC5tYXgoMCwgYm94LmNvbnRh
aW5pbmdCbG9jaygpLmNvbnRlbnRCb3goKS5oZWlnaHQoKSAtIFV0aWxzLmJvdHRvbShib3gpIC0g
VXRpbHMudG9wKGJveCkpOyAvLyA3Ci0gICAgICAgIGVsc2UgaWYgKFV0aWxzLmlzQm90dG9tQXV0
bygoYm94KSkgJiYgIVV0aWxzLmlzVG9wQXV0bygoYm94KSkgJiYgIVV0aWxzLmlzSGVpZ2h0QXV0
bygoYm94KSkpCi0gICAgICAgICAgICBoZWlnaHQgPSBVdGlscy5oZWlnaHQoYm94KTsgLy8gOAor
ICAgICAgICBpZiAoVXRpbHMuaXNIZWlnaHRBdXRvKGxheW91dEJveCkgJiYgVXRpbHMuaXNCb3R0
b21BdXRvKGxheW91dEJveCkgJiYgVXRpbHMuaXNUb3BBdXRvKGxheW91dEJveCkpCisgICAgICAg
ICAgICBoZWlnaHQgPSB0aGlzLl9jb250ZW50SGVpZ2h0KGxheW91dEJveCk7IC8vIDEKKyAgICAg
ICAgZWxzZSBpZiAoVXRpbHMuaXNUb3BBdXRvKChsYXlvdXRCb3gpKSAmJiBVdGlscy5pc0hlaWdo
dEF1dG8oKGxheW91dEJveCkpICYmICFVdGlscy5pc0JvdHRvbUF1dG8oKGxheW91dEJveCkpKQor
ICAgICAgICAgICAgaGVpZ2h0ID0gdGhpcy5fY29udGVudEhlaWdodChsYXlvdXRCb3gpOyAvLyAz
CisgICAgICAgIGVsc2UgaWYgKFV0aWxzLmlzVG9wQXV0bygobGF5b3V0Qm94KSkgJiYgVXRpbHMu
aXNCb3R0b21BdXRvKChsYXlvdXRCb3gpKSAmJiAhVXRpbHMuaXNIZWlnaHRBdXRvKChsYXlvdXRC
b3gpKSkKKyAgICAgICAgICAgIGhlaWdodCA9IFV0aWxzLmhlaWdodChsYXlvdXRCb3gpOyAvLyA0
CisgICAgICAgIGVsc2UgaWYgKFV0aWxzLmlzSGVpZ2h0QXV0bygobGF5b3V0Qm94KSkgJiYgVXRp
bHMuaXNCb3R0b21BdXRvKChsYXlvdXRCb3gpKSAmJiAhVXRpbHMuaXNUb3BBdXRvKChsYXlvdXRC
b3gpKSkKKyAgICAgICAgICAgIGhlaWdodCA9IHRoaXMuX2NvbnRlbnRIZWlnaHQobGF5b3V0Qm94
KTsgLy8gNQorICAgICAgICBlbHNlIGlmIChVdGlscy5pc1RvcEF1dG8oKGxheW91dEJveCkpICYm
ICFVdGlscy5pc0hlaWdodEF1dG8oKGxheW91dEJveCkpICYmICFVdGlscy5pc0JvdHRvbUF1dG8o
KGxheW91dEJveCkpKQorICAgICAgICAgICAgaGVpZ2h0ID0gVXRpbHMuaGVpZ2h0KGxheW91dEJv
eCk7IC8vIDYKKyAgICAgICAgZWxzZSBpZiAoVXRpbHMuaXNIZWlnaHRBdXRvKChsYXlvdXRCb3gp
KSAmJiAhVXRpbHMuaXNUb3BBdXRvKChsYXlvdXRCb3gpKSAmJiAhVXRpbHMuaXNCb3R0b21BdXRv
KChsYXlvdXRCb3gpKSkKKyAgICAgICAgICAgIGhlaWdodCA9IE1hdGgubWF4KDAsIGxheW91dEJv
eC5jb250YWluaW5nQmxvY2soKS5jb250ZW50Qm94KCkuaGVpZ2h0KCkgLSBVdGlscy5ib3R0b20o
bGF5b3V0Qm94KSAtIFV0aWxzLnRvcChsYXlvdXRCb3gpKTsgLy8gNworICAgICAgICBlbHNlIGlm
IChVdGlscy5pc0JvdHRvbUF1dG8oKGxheW91dEJveCkpICYmICFVdGlscy5pc1RvcEF1dG8oKGxh
eW91dEJveCkpICYmICFVdGlscy5pc0hlaWdodEF1dG8oKGxheW91dEJveCkpKQorICAgICAgICAg
ICAgaGVpZ2h0ID0gVXRpbHMuaGVpZ2h0KGxheW91dEJveCk7IC8vIDgKICAgICAgICAgZWxzZQog
ICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiBoZWlnaHQg
KyBVdGlscy5jb21wdXRlZFZlcnRpY2FsQm9yZGVyQW5kUGFkZGluZyhib3gpOworICAgICAgICBo
ZWlnaHQgKz0gVXRpbHMuY29tcHV0ZWRWZXJ0aWNhbEJvcmRlckFuZFBhZGRpbmcobGF5b3V0Qm94
KTsKKyAgICAgICAgbGF5b3V0Qm94LnNldEhlaWdodChoZWlnaHQpOwogICAgIH0KIAotICAgIF9j
b21wdXRlRmxvYXRpbmdIZWlnaHQoYm94KSB7CisgICAgX2NvbXB1dGVGbG9hdGluZ0hlaWdodChs
YXlvdXRCb3gpIHsKICAgICAgICAgLy8gRklYTUU6IG1pc3NpbmcgY2FzZXMKLSAgICAgICAgcmV0
dXJuIFV0aWxzLmhlaWdodChib3gpICsgVXRpbHMuY29tcHV0ZWRWZXJ0aWNhbEJvcmRlckFuZFBh
ZGRpbmcoYm94KTsKKyAgICAgICAgbGF5b3V0Qm94LnNldEhlaWdodChVdGlscy5oZWlnaHQobGF5
b3V0Qm94KSArIFV0aWxzLmNvbXB1dGVkVmVydGljYWxCb3JkZXJBbmRQYWRkaW5nKGxheW91dEJv
eCkpOwogICAgIH0KIAotICAgIF9jb21wdXRlSW5GbG93SGVpZ2h0KGJveCkgewotICAgICAgICBp
ZiAoVXRpbHMuaXNIZWlnaHRBdXRvKGJveCkpIHsKKyAgICBfY29tcHV0ZUluRmxvd0hlaWdodChs
YXlvdXRCb3gpIHsKKyAgICAgICAgaWYgKFV0aWxzLmlzSGVpZ2h0QXV0byhsYXlvdXRCb3gpKSB7
CiAgICAgICAgICAgICAvLyBPbmx5IGNoaWxkcmVuIGluIHRoZSBub3JtYWwgZmxvdyBhcmUgdGFr
ZW4gaW50byBhY2NvdW50IChpLmUuLCBmbG9hdGluZyBib3hlcyBhbmQgYWJzb2x1dGVseSBwb3Np
dGlvbmVkIGJveGVzIGFyZSBpZ25vcmVkLAogICAgICAgICAgICAgLy8gYW5kIHJlbGF0aXZlbHkg
cG9zaXRpb25lZCBib3hlcyBhcmUgY29uc2lkZXJlZCB3aXRob3V0IHRoZWlyIG9mZnNldCkuIE5v
dGUgdGhhdCB0aGUgY2hpbGQgYm94IG1heSBiZSBhbiBhbm9ueW1vdXMgYmxvY2sgYm94LgogCiAg
ICAgICAgICAgICAvLyBUaGUgZWxlbWVudCdzIGhlaWdodCBpcyB0aGUgZGlzdGFuY2UgZnJvbSBp
dHMgdG9wIGNvbnRlbnQgZWRnZSB0byB0aGUgZmlyc3QgYXBwbGljYWJsZSBvZiB0aGUgZm9sbG93
aW5nOgogICAgICAgICAgICAgLy8gMS4gdGhlIGJvdHRvbSBlZGdlIG9mIHRoZSBsYXN0IGxpbmUg
Ym94LCBpZiB0aGUgYm94IGVzdGFibGlzaGVzIGEgaW5saW5lIGZvcm1hdHRpbmcgY29udGV4dCB3
aXRoIG9uZSBvciBtb3JlIGxpbmVzCi0gICAgICAgICAgICByZXR1cm4gdGhpcy5fY29tcHV0ZUNv
bnRlbnRIZWlnaHQoYm94KSArIFV0aWxzLmNvbXB1dGVkVmVydGljYWxCb3JkZXJBbmRQYWRkaW5n
KGJveCk7CisgICAgICAgICAgICByZXR1cm4gbGF5b3V0Qm94LnNldEhlaWdodCh0aGlzLl9jb250
ZW50SGVpZ2h0KGxheW91dEJveCkgKyBVdGlscy5jb21wdXRlZFZlcnRpY2FsQm9yZGVyQW5kUGFk
ZGluZyhsYXlvdXRCb3gpKTsKICAgICAgICAgfQotICAgICAgICByZXR1cm4gVXRpbHMuaGVpZ2h0
KGJveCkgKyBVdGlscy5jb21wdXRlZFZlcnRpY2FsQm9yZGVyQW5kUGFkZGluZyhib3gpOworICAg
ICAgICByZXR1cm4gbGF5b3V0Qm94LnNldEhlaWdodChVdGlscy5oZWlnaHQobGF5b3V0Qm94KSAr
IFV0aWxzLmNvbXB1dGVkVmVydGljYWxCb3JkZXJBbmRQYWRkaW5nKGxheW91dEJveCkpOwogICAg
IH0KIAotICAgIF9jb21wdXRlSG9yaXpvbnRhbENvbnN0cmFpbnQoYm94KSB7Ci0gICAgICAgIGxl
dCBob3Jpem9udGFsQ29uc3RyYWludCA9IGJveC5jb250YWluaW5nQmxvY2soKS5jb250ZW50Qm94
KCkud2lkdGgoKTsKLSAgICAgICAgaG9yaXpvbnRhbENvbnN0cmFpbnQgLT0gdGhpcy5tYXJnaW5M
ZWZ0KGJveCkgKyB0aGlzLm1hcmdpblJpZ2h0KGJveCk7CisgICAgX2hvcml6b250YWxDb25zdHJh
aW50KGxheW91dEJveCkgeworICAgICAgICBsZXQgaG9yaXpvbnRhbENvbnN0cmFpbnQgPSBsYXlv
dXRCb3guY29udGFpbmluZ0Jsb2NrKCkuY29udGVudEJveCgpLndpZHRoKCk7CisgICAgICAgIGhv
cml6b250YWxDb25zdHJhaW50IC09IHRoaXMubWFyZ2luTGVmdChsYXlvdXRCb3gpICsgdGhpcy5t
YXJnaW5SaWdodChsYXlvdXRCb3gpOwogICAgICAgICByZXR1cm4gaG9yaXpvbnRhbENvbnN0cmFp
bnQ7CiAgICAgfQogCi0gICAgX2NvbXB1dGVDb250ZW50SGVpZ2h0KGJveCkgeworICAgIF9jb250
ZW50SGVpZ2h0KGxheW91dEJveCkgewogICAgICAgICAvLyAxMC42LjMgQmxvY2stbGV2ZWwgbm9u
LXJlcGxhY2VkIGVsZW1lbnRzIGluIG5vcm1hbCBmbG93IHdoZW4gJ292ZXJmbG93JyBjb21wdXRl
cyB0byAndmlzaWJsZScKICAgICAgICAgLy8gVGhlIGVsZW1lbnQncyBoZWlnaHQgaXMgdGhlIGRp
c3RhbmNlIGZyb20gaXRzIHRvcCBjb250ZW50IGVkZ2UgdG8gdGhlIGZpcnN0IGFwcGxpY2FibGUg
b2YgdGhlIGZvbGxvd2luZzoKICAgICAgICAgLy8gMS4gdGhlIGJvdHRvbSBlZGdlIG9mIHRoZSBs
YXN0IGxpbmUgYm94LCBpZiB0aGUgYm94IGVzdGFibGlzaGVzIGEgaW5saW5lIGZvcm1hdHRpbmcg
Y29udGV4dCB3aXRoIG9uZSBvciBtb3JlIGxpbmVzCkBAIC0yNDAsODIgKzI0Miw4NiBAQCBjbGFz
cyBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0IGV4dGVuZHMgRm9ybWF0dGluZ0NvbnRleHQgewogICAg
ICAgICAvLyAzLiB0aGUgYm90dG9tIGJvcmRlciBlZGdlIG9mIHRoZSBsYXN0IGluLWZsb3cgY2hp
bGQgd2hvc2UgdG9wIG1hcmdpbiBkb2Vzbid0IGNvbGxhcHNlIHdpdGggdGhlIGVsZW1lbnQncyBi
b3R0b20gbWFyZ2luCiAgICAgICAgIC8vIDQuIHplcm8sIG90aGVyd2lzZQogICAgICAgICAvLyBP
bmx5IGNoaWxkcmVuIGluIHRoZSBub3JtYWwgZmxvdyBhcmUgdGFrZW4gaW50byBhY2NvdW50Lgot
ICAgICAgICBpZiAoIWJveC5pc0NvbnRhaW5lcigpIHx8ICFib3guaGFzSW5GbG93Q2hpbGQoKSkK
KyAgICAgICAgaWYgKCFsYXlvdXRCb3guaXNDb250YWluZXIoKSB8fCAhbGF5b3V0Qm94Lmhhc0lu
Rmxvd0NoaWxkKCkpCiAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgaWYgKGJveC5lc3Rh
Ymxpc2hlc0lubGluZUZvcm1hdHRpbmdDb250ZXh0KCkpIHsKLSAgICAgICAgICAgIEFTU0VSVChi
b3guZXN0YWJsaXNoZWRGb3JtYXR0aW5nQ29udGV4dCgpKTsKLSAgICAgICAgICAgIGxldCBsaW5l
cyA9IGJveC5lc3RhYmxpc2hlZEZvcm1hdHRpbmdDb250ZXh0KCkubGluZXMoKTsKKyAgICAgICAg
aWYgKGxheW91dEJveC5lc3RhYmxpc2hlc0lubGluZUZvcm1hdHRpbmdDb250ZXh0KCkpIHsKKyAg
ICAgICAgICAgIEFTU0VSVChsYXlvdXRCb3guZXN0YWJsaXNoZWRGb3JtYXR0aW5nQ29udGV4dCgp
KTsKKyAgICAgICAgICAgIGxldCBsaW5lcyA9IGxheW91dEJveC5lc3RhYmxpc2hlZEZvcm1hdHRp
bmdDb250ZXh0KCkubGluZXMoKTsKICAgICAgICAgICAgIGlmICghbGluZXMubGVuZ3RoKQogICAg
ICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgICAgbGV0IGxhc3RMaW5lID0gbGluZXNb
bGluZXMubGVuZ3RoIC0gMV07CiAgICAgICAgICAgICByZXR1cm4gbGFzdExpbmUucmVjdCgpLmJv
dHRvbSgpOwogICAgICAgICB9Ci0gICAgICAgIGxldCB0b3AgPSBib3guY29udGVudEJveCgpLnRv
cCgpOwotICAgICAgICBsZXQgbGFzdEluRmxvd0NoaWxkID0gYm94Lmxhc3RJbkZsb3dDaGlsZCgp
OworICAgICAgICBsZXQgdG9wID0gbGF5b3V0Qm94LmNvbnRlbnRCb3goKS50b3AoKTsKKyAgICAg
ICAgbGV0IGJvdHRvbSA9IHRoaXMuX2FkanVzdEJvdHRvbVdpdGhGSVhNRShsYXlvdXRCb3gpOwor
ICAgICAgICByZXR1cm4gYm90dG9tIC0gdG9wOworICAgIH0KIAorICAgIF9hZGp1c3RCb3R0b21X
aXRoRklYTUUobGF5b3V0Qm94KSB7CisgICAgICAgIGxldCBsYXN0SW5GbG93Q2hpbGQgPSBsYXlv
dXRCb3gubGFzdEluRmxvd0NoaWxkKCk7CiAgICAgICAgIGxldCBib3R0b20gPSBsYXN0SW5GbG93
Q2hpbGQucmVjdCgpLmJvdHRvbSgpICsgdGhpcy5tYXJnaW5Cb3R0b20obGFzdEluRmxvd0NoaWxk
KTsKICAgICAgICAgLy8gRklYTUU6IG1hcmdpbiBmb3IgYm9keQogICAgICAgICBpZiAobGFzdElu
Rmxvd0NoaWxkLm5hbWUoKSA9PSAiUmVuZGVyQm9keSIgJiYgVXRpbHMuaXNIZWlnaHRBdXRvKGxh
c3RJbkZsb3dDaGlsZCkgJiYgIWxhc3RJbkZsb3dDaGlsZC5jb250ZW50Qm94KCkuaGVpZ2h0KCkp
CiAgICAgICAgICAgICBib3R0b20gLT0gdGhpcy5tYXJnaW5Cb3R0b20obGFzdEluRmxvd0NoaWxk
KTsKICAgICAgICAgLy8gRklYTUU6IGZpZ3VyZSBvdXQgd2h5IGZsb2F0aW5ncyBwYXJ0IG9mIHRo
ZSBpbml0aWFsIGJsb2NrIGZvcm1hdHRpbmcgY29udGV4dCBnZXQgcHJvcGFnYXRlZCB0byBIVE1M
Ci0gICAgICAgIGlmIChib3gubm9kZSgpLnRhZ05hbWUgPT0gIkhUTUwiKSB7CisgICAgICAgIGlm
IChsYXlvdXRCb3gubm9kZSgpLnRhZ05hbWUgPT0gIkhUTUwiKSB7CiAgICAgICAgICAgICBsZXQg
ZmxvYXRpbmdCb3R0b20gPSB0aGlzLmZsb2F0aW5nQ29udGV4dCgpLmJvdHRvbSgpOwogICAgICAg
ICAgICAgaWYgKCFOdW1iZXIuaXNOYU4oZmxvYXRpbmdCb3R0b20pKQogICAgICAgICAgICAgICAg
IGJvdHRvbSA9IE1hdGgubWF4KGZsb2F0aW5nQm90dG9tLCBib3R0b20pOwogICAgICAgICB9Ci0g
ICAgICAgIHJldHVybiBib3R0b20gLSB0b3A7CisgICAgICAgIHJldHVybiBib3R0b207CiAgICAg
fQogCi0gICAgX2NvbXB1dGVJbkZsb3dQb3NpdGlvbmVkUG9zaXRpb24oYm94KSB7CisgICAgX2Nv
bXB1dGVJbkZsb3dQb3NpdGlvbmVkUG9zaXRpb24obGF5b3V0Qm94KSB7CiAgICAgICAgIC8vIFN0
YXJ0IHdpdGggdGhlIG9yaWdpbmFsLCBzdGF0aWMgcG9zaXRpb24uCi0gICAgICAgIGxldCByZWxh
dGl2ZVBvc2l0aW9uID0gYm94LnRvcExlZnQoKTsKKyAgICAgICAgbGV0IHJlbGF0aXZlUG9zaXRp
b24gPSBsYXlvdXRCb3gudG9wTGVmdCgpOwogICAgICAgICAvLyBUb3AvYm90dG9tCi0gICAgICAg
IGlmICghVXRpbHMuaXNUb3BBdXRvKGJveCkpCi0gICAgICAgICAgICByZWxhdGl2ZVBvc2l0aW9u
LnNoaWZ0VG9wKFV0aWxzLnRvcChib3gpKTsKLSAgICAgICAgZWxzZSBpZiAoIVV0aWxzLmlzQm90
dG9tQXV0byhib3gpKQotICAgICAgICAgICAgcmVsYXRpdmVQb3NpdGlvbi5zaGlmdFRvcCgtVXRp
bHMuYm90dG9tKGJveCkpOworICAgICAgICBpZiAoIVV0aWxzLmlzVG9wQXV0byhsYXlvdXRCb3gp
KQorICAgICAgICAgICAgcmVsYXRpdmVQb3NpdGlvbi5zaGlmdFRvcChVdGlscy50b3AobGF5b3V0
Qm94KSk7CisgICAgICAgIGVsc2UgaWYgKCFVdGlscy5pc0JvdHRvbUF1dG8obGF5b3V0Qm94KSkK
KyAgICAgICAgICAgIHJlbGF0aXZlUG9zaXRpb24uc2hpZnRUb3AoLVV0aWxzLmJvdHRvbShsYXlv
dXRCb3gpKTsKICAgICAgICAgLy8gTGVmdC9yaWdodAotICAgICAgICBpZiAoIVV0aWxzLmlzTGVm
dEF1dG8oYm94KSkKLSAgICAgICAgICAgIHJlbGF0aXZlUG9zaXRpb24uc2hpZnRMZWZ0KFV0aWxz
LmxlZnQoYm94KSk7Ci0gICAgICAgIGVsc2UgaWYgKCFVdGlscy5pc1JpZ2h0QXV0byhib3gpKQot
ICAgICAgICAgICAgcmVsYXRpdmVQb3NpdGlvbi5zaGlmdExlZnQoLVV0aWxzLnJpZ2h0KGJveCkp
OwotICAgICAgICByZXR1cm4gcmVsYXRpdmVQb3NpdGlvbjsKKyAgICAgICAgaWYgKCFVdGlscy5p
c0xlZnRBdXRvKGxheW91dEJveCkpCisgICAgICAgICAgICByZWxhdGl2ZVBvc2l0aW9uLnNoaWZ0
TGVmdChVdGlscy5sZWZ0KGxheW91dEJveCkpOworICAgICAgICBlbHNlIGlmICghVXRpbHMuaXNS
aWdodEF1dG8obGF5b3V0Qm94KSkKKyAgICAgICAgICAgIHJlbGF0aXZlUG9zaXRpb24uc2hpZnRM
ZWZ0KC1VdGlscy5yaWdodChsYXlvdXRCb3gpKTsKKyAgICAgICAgbGF5b3V0Qm94LnNldFRvcExl
ZnQocmVsYXRpdmVQb3NpdGlvbik7CiAgICAgfQogCi0gICAgX2NvbXB1dGVPdXRPZkZsb3dQb3Np
dGlvbihib3gpIHsKLSAgICAgICAgbGV0IGNvbnRhaW5lclNpemUgPSBib3guY29udGFpbmluZ0Js
b2NrKCkuY29udGVudEJveCgpLnNpemUoKTsKKyAgICBfY29tcHV0ZU91dE9mRmxvd1Bvc2l0aW9u
KGxheW91dEJveCkgeworICAgICAgICBsZXQgY29udGFpbmVyU2l6ZSA9IGxheW91dEJveC5jb250
YWluaW5nQmxvY2soKS5jb250ZW50Qm94KCkuc2l6ZSgpOwogICAgICAgICAvLyBUb3AvYm90dG9t
CiAgICAgICAgIGxldCB0b3AgPSBOdW1iZXIuTmFOOwotICAgICAgICBpZiAoVXRpbHMuaXNUb3BB
dXRvKGJveCkgJiYgVXRpbHMuaXNCb3R0b21BdXRvKGJveCkpIHsKKyAgICAgICAgaWYgKFV0aWxz
LmlzVG9wQXV0byhsYXlvdXRCb3gpICYmIFV0aWxzLmlzQm90dG9tQXV0byhsYXlvdXRCb3gpKSB7
CiAgICAgICAgICAgICAvLyBDb252ZXJ0IHN0YXRpYyBwb3NpdGlvbiB0byBhYnNvbHV0ZS4KLSAg
ICAgICAgICAgIHRvcCA9IFV0aWxzLm1hcFN0YXRpY1RvQWJzb2x1dGUoYm94KS50b3AoKTsKLSAg
ICAgICAgfSBlbHNlIGlmICghVXRpbHMuaXNUb3BBdXRvKGJveCkpCi0gICAgICAgICAgICB0b3Ag
PSBVdGlscy50b3AoYm94KSArIHRoaXMubWFyZ2luVG9wKGJveCk7Ci0gICAgICAgIGVsc2UgaWYg
KCFVdGlscy5pc0JvdHRvbUF1dG8oYm94KSkKLSAgICAgICAgICAgIHRvcCA9IGNvbnRhaW5lclNp
emUuaGVpZ2h0KCkgLSBVdGlscy5ib3R0b20oYm94KSAtIGJveC5yZWN0KCkuaGVpZ2h0KCkgLSB0
aGlzLm1hcmdpbkJvdHRvbShib3gpOworICAgICAgICAgICAgdG9wID0gVXRpbHMubWFwU3RhdGlj
VG9BYnNvbHV0ZShsYXlvdXRCb3gpLnRvcCgpOworICAgICAgICB9IGVsc2UgaWYgKCFVdGlscy5p
c1RvcEF1dG8obGF5b3V0Qm94KSkKKyAgICAgICAgICAgIHRvcCA9IFV0aWxzLnRvcChsYXlvdXRC
b3gpICsgdGhpcy5tYXJnaW5Ub3AobGF5b3V0Qm94KTsKKyAgICAgICAgZWxzZSBpZiAoIVV0aWxz
LmlzQm90dG9tQXV0byhsYXlvdXRCb3gpKQorICAgICAgICAgICAgdG9wID0gY29udGFpbmVyU2l6
ZS5oZWlnaHQoKSAtIFV0aWxzLmJvdHRvbShsYXlvdXRCb3gpIC0gbGF5b3V0Qm94LnJlY3QoKS5o
ZWlnaHQoKSAtIHRoaXMubWFyZ2luQm90dG9tKGxheW91dEJveCk7CiAgICAgICAgIGVsc2UKICAg
ICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAvLyBMZWZ0L3JpZ2h0CiAg
ICAgICAgIGxldCBsZWZ0ID0gTnVtYmVyLk5hTjsKLSAgICAgICAgaWYgKFV0aWxzLmlzTGVmdEF1
dG8oYm94KSAmJiBVdGlscy5pc1JpZ2h0QXV0byhib3gpKSB7CisgICAgICAgIGlmIChVdGlscy5p
c0xlZnRBdXRvKGxheW91dEJveCkgJiYgVXRpbHMuaXNSaWdodEF1dG8obGF5b3V0Qm94KSkgewog
ICAgICAgICAgICAgLy8gQ29udmVydCBzdGF0aWMgcG9zaXRpb24gdG8gYWJzb2x1dGUuCi0gICAg
ICAgICAgICBsZWZ0ID0gVXRpbHMubWFwU3RhdGljVG9BYnNvbHV0ZShib3gpLmxlZnQoKTsKLSAg
ICAgICAgfSBlbHNlIGlmICghVXRpbHMuaXNMZWZ0QXV0byhib3gpKQotICAgICAgICAgICAgbGVm
dCA9IFV0aWxzLmxlZnQoYm94KSArIHRoaXMubWFyZ2luTGVmdChib3gpOwotICAgICAgICBlbHNl
IGlmICghVXRpbHMuaXNSaWdodEF1dG8oYm94KSkKLSAgICAgICAgICAgIGxlZnQgPSBjb250YWlu
ZXJTaXplLndpZHRoKCkgLSBVdGlscy5yaWdodChib3gpIC0gYm94LnJlY3QoKS53aWR0aCgpIC0g
dGhpcy5tYXJnaW5SaWdodChib3gpOworICAgICAgICAgICAgbGVmdCA9IFV0aWxzLm1hcFN0YXRp
Y1RvQWJzb2x1dGUobGF5b3V0Qm94KS5sZWZ0KCk7CisgICAgICAgIH0gZWxzZSBpZiAoIVV0aWxz
LmlzTGVmdEF1dG8obGF5b3V0Qm94KSkKKyAgICAgICAgICAgIGxlZnQgPSBVdGlscy5sZWZ0KGxh
eW91dEJveCkgKyB0aGlzLm1hcmdpbkxlZnQobGF5b3V0Qm94KTsKKyAgICAgICAgZWxzZSBpZiAo
IVV0aWxzLmlzUmlnaHRBdXRvKGxheW91dEJveCkpCisgICAgICAgICAgICBsZWZ0ID0gY29udGFp
bmVyU2l6ZS53aWR0aCgpIC0gVXRpbHMucmlnaHQobGF5b3V0Qm94KSAtIGxheW91dEJveC5yZWN0
KCkud2lkdGgoKSAtIHRoaXMubWFyZ2luUmlnaHQobGF5b3V0Qm94KTsKICAgICAgICAgZWxzZQog
ICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiBuZXcgTGF5
b3V0UG9pbnQodG9wLCBsZWZ0KTsKKyAgICAgICAgbGF5b3V0Qm94LnNldFRvcExlZnQobmV3IExh
eW91dFBvaW50KHRvcCwgbGVmdCkpOwogICAgIH0KIAotICAgIF9zaHJpbmtUb0ZpdFdpZHRoKGJv
eCkgeworICAgIF9zaHJpbmtUb0ZpdFdpZHRoKGxheW91dEJveCkgewogICAgICAgICAvLyBGSVhN
RTogdGhpcyBpcyBuYWl2ZS4KLSAgICAgICAgQVNTRVJUKFV0aWxzLmlzV2lkdGhBdXRvKGJveCkp
OwotICAgICAgICBpZiAoIWJveC5pc0NvbnRhaW5lcigpIHx8ICFib3guaGFzQ2hpbGQoKSkKKyAg
ICAgICAgQVNTRVJUKFV0aWxzLmlzV2lkdGhBdXRvKGxheW91dEJveCkpOworICAgICAgICBpZiAo
IWxheW91dEJveC5pc0NvbnRhaW5lcigpIHx8ICFsYXlvdXRCb3guaGFzQ2hpbGQoKSkKICAgICAg
ICAgICAgIHJldHVybiAwOwogICAgICAgICBsZXQgd2lkdGggPSAwOwotICAgICAgICBmb3IgKGxl
dCBpbkZsb3dDaGlsZCA9IGJveC5maXJzdEluRmxvd0NoaWxkKCk7IGluRmxvd0NoaWxkOyBpbkZs
b3dDaGlsZCA9IGluRmxvd0NoaWxkLm5leHRJbkZsb3dTaWJsaW5nKCkpIHsKKyAgICAgICAgZm9y
IChsZXQgaW5GbG93Q2hpbGQgPSBsYXlvdXRCb3guZmlyc3RJbkZsb3dDaGlsZCgpOyBpbkZsb3dD
aGlsZDsgaW5GbG93Q2hpbGQgPSBpbkZsb3dDaGlsZC5uZXh0SW5GbG93U2libGluZygpKSB7CiAg
ICAgICAgICAgICBsZXQgd2lkdGhDYW5kaWRhdGUgPSBVdGlscy5pc1dpZHRoQXV0byhpbkZsb3dD
aGlsZCkgPyB0aGlzLl9zaHJpbmtUb0ZpdFdpZHRoKGluRmxvd0NoaWxkKSA6IFV0aWxzLndpZHRo
KGluRmxvd0NoaWxkKTsKICAgICAgICAgICAgIHdpZHRoID0gTWF0aC5tYXgod2lkdGgsIHdpZHRo
Q2FuZGlkYXRlICsgVXRpbHMuY29tcHV0ZWRIb3Jpem9udGFsQm9yZGVyQW5kUGFkZGluZyhpbkZs
b3dDaGlsZCkpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Ub29scy9MYXlvdXRSZWxvYWRlZC9G
b3JtYXR0aW5nQ29udGV4dC9CbG9ja0Zvcm1hdHRpbmcvQmxvY2tNYXJnaW5Db2xsYXBzZS5qcyBi
L1Rvb2xzL0xheW91dFJlbG9hZGVkL0Zvcm1hdHRpbmdDb250ZXh0L0Jsb2NrRm9ybWF0dGluZy9C
bG9ja01hcmdpbkNvbGxhcHNlLmpzCmluZGV4IGU4MjU5YTU5OThhMTM3ZTY1MjgxZTc3MjFhMjMz
MGE1Yzc3YTgxYzYuLmRiMmQ0ZDNiMmQwZmVhMWU5ZDI0OTgxNjc3OGQ4NGE0OGI2MDIzZDIgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL0xheW91dFJlbG9hZGVkL0Zvcm1hdHRpbmdDb250ZXh0L0Jsb2NrRm9y
bWF0dGluZy9CbG9ja01hcmdpbkNvbGxhcHNlLmpzCisrKyBiL1Rvb2xzL0xheW91dFJlbG9hZGVk
L0Zvcm1hdHRpbmdDb250ZXh0L0Jsb2NrRm9ybWF0dGluZy9CbG9ja01hcmdpbkNvbGxhcHNlLmpz
CkBAIC0yNCw3MiArMjQsNzIgQEAKICAqLwogY2xhc3MgQmxvY2tNYXJnaW5Db2xsYXBzZSB7CiAK
LSAgICBzdGF0aWMgbWFyZ2luVG9wKGJveCkgewotICAgICAgICBpZiAoYm94LmlzQW5vbnltb3Vz
KCkpCisgICAgc3RhdGljIG1hcmdpblRvcChsYXlvdXRCb3gpIHsKKyAgICAgICAgaWYgKGxheW91
dEJveC5pc0Fub255bW91cygpKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIC8vIFRP
RE86IHRha2UgX2hhc0Fkam9pbmluZ01hcmdpblRvcEFuZEJvdHRvbSgpIGludG8gYWNjb3VudC4K
LSAgICAgICAgaWYgKHRoaXMuX2lzTWFyZ2luVG9wQ29sbGFwc2VkV2l0aFBhcmVudChib3gpKQor
ICAgICAgICBpZiAodGhpcy5faXNNYXJnaW5Ub3BDb2xsYXBzZWRXaXRoUGFyZW50KGxheW91dEJv
eCkpCiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgLy8gRmxvYXRzIGFuZCBvdXQgb2Yg
ZmxvdyBwb3NpdGlvbmVkIGJveGVzIGRvIG5vdCBjb2xsYXBzZSB0aGVpciBtYXJnaW5zLgotICAg
ICAgICBpZiAoIXRoaXMuX2lzTWFyZ2luVG9wQ29sbGFwc2VkV2l0aFNpYmxpbmcoYm94KSkKLSAg
ICAgICAgICAgIHJldHVybiB0aGlzLl9ub25Db2xsYXBzZWRNYXJnaW5Ub3AoYm94KTsKKyAgICAg
ICAgaWYgKCF0aGlzLl9pc01hcmdpblRvcENvbGxhcHNlZFdpdGhTaWJsaW5nKGxheW91dEJveCkp
CisgICAgICAgICAgICByZXR1cm4gdGhpcy5fbm9uQ29sbGFwc2VkTWFyZ2luVG9wKGxheW91dEJv
eCk7CiAgICAgICAgIC8vIFRoZSBib3R0b20gbWFyZ2luIG9mIGFuIGluLWZsb3cgYmxvY2stbGV2
ZWwgZWxlbWVudCBhbHdheXMgY29sbGFwc2VzIHdpdGggdGhlIHRvcCBtYXJnaW4gb2YgaXRzIG5l
eHQgaW4tZmxvdyBibG9jay1sZXZlbCBzaWJsaW5nLAogICAgICAgICAvLyB1bmxlc3MgdGhhdCBz
aWJsaW5nIGhhcyBjbGVhcmFuY2UuCi0gICAgICAgIGxldCBwcmV2aW91c0luRmxvd1NpYmxpbmcg
PSBib3gucHJldmlvdXNJbkZsb3dTaWJsaW5nKCk7CisgICAgICAgIGxldCBwcmV2aW91c0luRmxv
d1NpYmxpbmcgPSBsYXlvdXRCb3gucHJldmlvdXNJbkZsb3dTaWJsaW5nKCk7CiAgICAgICAgIGlm
IChwcmV2aW91c0luRmxvd1NpYmxpbmcpIHsKICAgICAgICAgICAgIGxldCBwcmV2aW91c1NpYmxp
bmdNYXJnaW5Cb3R0b20gPSB0aGlzLl9ub25Db2xsYXBzZWRNYXJnaW5Cb3R0b20ocHJldmlvdXNJ
bkZsb3dTaWJsaW5nKTsKLSAgICAgICAgICAgIGxldCBtYXJnaW5Ub3AgPSB0aGlzLl9ub25Db2xs
YXBzZWRNYXJnaW5Ub3AoYm94KTsKKyAgICAgICAgICAgIGxldCBtYXJnaW5Ub3AgPSB0aGlzLl9u
b25Db2xsYXBzZWRNYXJnaW5Ub3AobGF5b3V0Qm94KTsKICAgICAgICAgICAgIHJldHVybiB0aGlz
Ll9tYXJnaW5WYWx1ZShtYXJnaW5Ub3AsIHByZXZpb3VzU2libGluZ01hcmdpbkJvdHRvbSk7CiAg
ICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHRoaXMuX25vbkNvbGxhcHNlZE1hcmdpblRvcChib3gp
OworICAgICAgICByZXR1cm4gdGhpcy5fbm9uQ29sbGFwc2VkTWFyZ2luVG9wKGxheW91dEJveCk7
CiAgICAgfQogCi0gICAgc3RhdGljIG1hcmdpbkJvdHRvbShib3gpIHsKLSAgICAgICAgaWYgKGJv
eC5pc0Fub255bW91cygpKQorICAgIHN0YXRpYyBtYXJnaW5Cb3R0b20obGF5b3V0Qm94KSB7Cisg
ICAgICAgIGlmIChsYXlvdXRCb3guaXNBbm9ueW1vdXMoKSkKICAgICAgICAgICAgIHJldHVybiAw
OwogICAgICAgICAvLyBUT0RPOiB0YWtlIF9oYXNBZGpvaW5pbmdNYXJnaW5Ub3BBbmRCb3R0b20o
KSBpbnRvIGFjY291bnQuCi0gICAgICAgIGlmICh0aGlzLl9pc01hcmdpbkJvdHRvbUNvbGxhcHNl
ZFdpdGhQYXJlbnQoYm94KSkKKyAgICAgICAgaWYgKHRoaXMuX2lzTWFyZ2luQm90dG9tQ29sbGFw
c2VkV2l0aFBhcmVudChsYXlvdXRCb3gpKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAg
IC8vIEZsb2F0cyBhbmQgb3V0IG9mIGZsb3cgcG9zaXRpb25lZCBib3hlcyBkbyBub3QgY29sbGFw
c2UgdGhlaXIgbWFyZ2lucy4KLSAgICAgICAgaWYgKCF0aGlzLl9pc01hcmdpbkJvdHRvbUNvbGxh
cHNlZFdpdGhTaWJsaW5nKGJveCkpCi0gICAgICAgICAgICByZXR1cm4gdGhpcy5fbm9uQ29sbGFw
c2VkTWFyZ2luQm90dG9tKGJveCk7CisgICAgICAgIGlmICghdGhpcy5faXNNYXJnaW5Cb3R0b21D
b2xsYXBzZWRXaXRoU2libGluZyhsYXlvdXRCb3gpKQorICAgICAgICAgICAgcmV0dXJuIHRoaXMu
X25vbkNvbGxhcHNlZE1hcmdpbkJvdHRvbShsYXlvdXRCb3gpOwogICAgICAgICAvLyBUaGUgYm90
dG9tIG1hcmdpbiBvZiBhbiBpbi1mbG93IGJsb2NrLWxldmVsIGVsZW1lbnQgYWx3YXlzIGNvbGxh
cHNlcyB3aXRoIHRoZSB0b3AgbWFyZ2luIG9mIGl0cyBuZXh0IGluLWZsb3cgYmxvY2stbGV2ZWwg
c2libGluZywKICAgICAgICAgLy8gdW5sZXNzIHRoYXQgc2libGluZyBoYXMgY2xlYXJhbmNlLgot
ICAgICAgICBpZiAoYm94Lm5leHRJbkZsb3dTaWJsaW5nKCkpCisgICAgICAgIGlmIChsYXlvdXRC
b3gubmV4dEluRmxvd1NpYmxpbmcoKSkKICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICBy
ZXR1cm4gdGhpcy5fbm9uQ29sbGFwc2VkTWFyZ2luQm90dG9tKGJveCk7CisgICAgICAgIHJldHVy
biB0aGlzLl9ub25Db2xsYXBzZWRNYXJnaW5Cb3R0b20obGF5b3V0Qm94KTsKICAgICB9CiAKLSAg
ICBzdGF0aWMgX2lzTWFyZ2luVG9wQ29sbGFwc2VkV2l0aFNpYmxpbmcoYm94KSB7Ci0gICAgICAg
IGlmIChib3guaXNGbG9hdGluZ1Bvc2l0aW9uZWQoKSkKKyAgICBzdGF0aWMgX2lzTWFyZ2luVG9w
Q29sbGFwc2VkV2l0aFNpYmxpbmcobGF5b3V0Qm94KSB7CisgICAgICAgIGlmIChsYXlvdXRCb3gu
aXNGbG9hdGluZ1Bvc2l0aW9uZWQoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAg
ICAgaWYgKCFib3guaXNQb3NpdGlvbmVkKCkgfHwgYm94LmlzSW5GbG93UG9zaXRpb25lZCgpKQor
ICAgICAgICBpZiAoIWxheW91dEJveC5pc1Bvc2l0aW9uZWQoKSB8fCBsYXlvdXRCb3guaXNJbkZs
b3dQb3NpdGlvbmVkKCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgLy8gT3V0
IG9mIGZsb3cgcG9zaXRpb25lZC4KLSAgICAgICAgQVNTRVJUKGJveC5pc091dE9mRmxvd1Bvc2l0
aW9uZWQoKSk7Ci0gICAgICAgIHJldHVybiBVdGlscy5pc1RvcEF1dG8oYm94KTsKKyAgICAgICAg
QVNTRVJUKGxheW91dEJveC5pc091dE9mRmxvd1Bvc2l0aW9uZWQoKSk7CisgICAgICAgIHJldHVy
biBVdGlscy5pc1RvcEF1dG8obGF5b3V0Qm94KTsKICAgICB9CiAKLSAgICBzdGF0aWMgX2lzTWFy
Z2luQm90dG9tQ29sbGFwc2VkV2l0aFNpYmxpbmcoYm94KSB7Ci0gICAgICAgIGlmIChib3guaXNG
bG9hdGluZ1Bvc2l0aW9uZWQoKSkKKyAgICBzdGF0aWMgX2lzTWFyZ2luQm90dG9tQ29sbGFwc2Vk
V2l0aFNpYmxpbmcobGF5b3V0Qm94KSB7CisgICAgICAgIGlmIChsYXlvdXRCb3guaXNGbG9hdGlu
Z1Bvc2l0aW9uZWQoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgaWYgKCFi
b3guaXNQb3NpdGlvbmVkKCkgfHwgYm94LmlzSW5GbG93UG9zaXRpb25lZCgpKQorICAgICAgICBp
ZiAoIWxheW91dEJveC5pc1Bvc2l0aW9uZWQoKSB8fCBsYXlvdXRCb3guaXNJbkZsb3dQb3NpdGlv
bmVkKCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgLy8gT3V0IG9mIGZsb3cg
cG9zaXRpb25lZC4KLSAgICAgICAgQVNTRVJUKGJveC5pc091dE9mRmxvd1Bvc2l0aW9uZWQoKSk7
Ci0gICAgICAgIHJldHVybiBVdGlscy5pc0JvdHRvbUF1dG8oYm94KTsKKyAgICAgICAgQVNTRVJU
KGxheW91dEJveC5pc091dE9mRmxvd1Bvc2l0aW9uZWQoKSk7CisgICAgICAgIHJldHVybiBVdGls
cy5pc0JvdHRvbUF1dG8obGF5b3V0Qm94KTsKICAgICB9CiAKLSAgICBzdGF0aWMgX2lzTWFyZ2lu
VG9wQ29sbGFwc2VkV2l0aFBhcmVudChib3gpIHsKKyAgICBzdGF0aWMgX2lzTWFyZ2luVG9wQ29s
bGFwc2VkV2l0aFBhcmVudChsYXlvdXRCb3gpIHsKICAgICAgICAgLy8gVGhlIGZpcnN0IGluZmxv
dyBjaGlsZCBjb3VsZCBwcm9wYWdhdGUgaXRzIHRvcCBtYXJnaW4gdG8gcGFyZW50LgogICAgICAg
ICAvLyBodHRwczovL3d3dy53My5vcmcvVFIvQ1NTMjEvYm94Lmh0bWwjY29sbGFwc2luZy1tYXJn
aW5zCi0gICAgICAgIGlmIChib3guaXNBbm9ueW1vdXMoKSkKKyAgICAgICAgaWYgKGxheW91dEJv
eC5pc0Fub255bW91cygpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBpZiAo
Ym94LmlzRmxvYXRpbmdPck91dE9mRmxvd1Bvc2l0aW9uZWQoKSkKKyAgICAgICAgaWYgKGxheW91
dEJveC5pc0Zsb2F0aW5nT3JPdXRPZkZsb3dQb3NpdGlvbmVkKCkpCiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgICAgIGxldCBwYXJlbnQgPSBib3gucGFyZW50KCk7CisgICAgICAgIGxl
dCBwYXJlbnQgPSBsYXlvdXRCb3gucGFyZW50KCk7CiAgICAgICAgIC8vIElzIHRoaXMgYm94IHRo
ZSBmaXJzdCBpbmxmbG93IGNoaWxkPwotICAgICAgICBpZiAocGFyZW50LmZpcnN0SW5GbG93Q2hp
bGQoKSAhPSBib3gpCisgICAgICAgIGlmIChwYXJlbnQuZmlyc3RJbkZsb3dDaGlsZCgpICE9IGxh
eW91dEJveCkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgaWYgKHBhcmVudC5l
c3RhYmxpc2hlc0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQoKSkKICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKQEAgLTEwMywxNiArMTAzLDE2IEBAIGNsYXNzIEJsb2NrTWFyZ2luQ29sbGFwc2Ugewog
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBzdGF0aWMgX2lzTWFyZ2luQm90dG9t
Q29sbGFwc2VkV2l0aFBhcmVudChib3gpIHsKKyAgICBzdGF0aWMgX2lzTWFyZ2luQm90dG9tQ29s
bGFwc2VkV2l0aFBhcmVudChsYXlvdXRCb3gpIHsKICAgICAgICAgLy8gbGFzdCBpbmZsb3cgYm94
IHRvIHBhcmVudC4KICAgICAgICAgLy8gaHR0cHM6Ly93d3cudzMub3JnL1RSL0NTUzIxL2JveC5o
dG1sI2NvbGxhcHNpbmctbWFyZ2lucwotICAgICAgICBpZiAoYm94LmlzQW5vbnltb3VzKCkpCisg
ICAgICAgIGlmIChsYXlvdXRCb3guaXNBbm9ueW1vdXMoKSkKICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICAgICAgaWYgKGJveC5pc0Zsb2F0aW5nT3JPdXRPZkZsb3dQb3NpdGlvbmVkKCkp
CisgICAgICAgIGlmIChsYXlvdXRCb3guaXNGbG9hdGluZ09yT3V0T2ZGbG93UG9zaXRpb25lZCgp
KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBsZXQgcGFyZW50ID0gYm94LnBh
cmVudCgpOworICAgICAgICBsZXQgcGFyZW50ID0gbGF5b3V0Qm94LnBhcmVudCgpOwogICAgICAg
ICAvLyBJcyB0aGlzIHRoZSBsYXN0IGlubGZsb3cgY2hpbGQ/Ci0gICAgICAgIGlmIChwYXJlbnQu
bGFzdEluRmxvd0NoaWxkKCkgIT0gYm94KQorICAgICAgICBpZiAocGFyZW50Lmxhc3RJbkZsb3dD
aGlsZCgpICE9IGxheW91dEJveCkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAg
aWYgKHBhcmVudC5lc3RhYmxpc2hlc0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQoKSkKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKQEAgLTEyOCwzMiArMTI4LDMyIEBAIGNsYXNzIEJsb2NrTWFyZ2lu
Q29sbGFwc2UgewogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBzdGF0aWMgX25v
bkNvbGxhcHNlZE1hcmdpblRvcChib3gpIHsKKyAgICBzdGF0aWMgX25vbkNvbGxhcHNlZE1hcmdp
blRvcChsYXlvdXRCb3gpIHsKICAgICAgICAgLy8gTm9uIGNvbGxhcHNlZCBtYXJnaW4gdG9wIGlu
Y2x1ZGVzIGNvbGxhcHNlZCBtYXJnaW4gZnJvbSBpbmZsb3cgZmlyc3QgY2hpbGQuCi0gICAgICAg
IHJldHVybiB0aGlzLl9tYXJnaW5WYWx1ZShVdGlscy5jb21wdXRlZE1hcmdpblRvcChib3gpLCB0
aGlzLl9jb2xsYXBzZWRNYXJnaW5Ub3BGcm9tRmlyc3RDaGlsZChib3gpKTsKKyAgICAgICAgcmV0
dXJuIHRoaXMuX21hcmdpblZhbHVlKFV0aWxzLmNvbXB1dGVkTWFyZ2luVG9wKGxheW91dEJveCks
IHRoaXMuX2NvbGxhcHNlZE1hcmdpblRvcEZyb21GaXJzdENoaWxkKGxheW91dEJveCkpOwogICAg
IH0KIAotICAgIHN0YXRpYyBfbm9uQ29sbGFwc2VkTWFyZ2luQm90dG9tKGJveCkgeworICAgIHN0
YXRpYyBfbm9uQ29sbGFwc2VkTWFyZ2luQm90dG9tKGxheW91dEJveCkgewogICAgICAgICAvLyBO
b24gY29sbGFwc2VkIG1hcmdpbiBib3R0b20gaW5jbHVkZXMgY29sbGFwc2VkIG1hcmdpbiBmcm9t
IGluZmxvdyBsYXN0IGNoaWxkLgotICAgICAgICByZXR1cm4gdGhpcy5fbWFyZ2luVmFsdWUoVXRp
bHMuY29tcHV0ZWRNYXJnaW5Cb3R0b20oYm94KSwgdGhpcy5fY29sbGFwc2VkTWFyZ2luQm90dG9t
RnJvbUxhc3RDaGlsZChib3gpKTsKKyAgICAgICAgcmV0dXJuIHRoaXMuX21hcmdpblZhbHVlKFV0
aWxzLmNvbXB1dGVkTWFyZ2luQm90dG9tKGxheW91dEJveCksIHRoaXMuX2NvbGxhcHNlZE1hcmdp
bkJvdHRvbUZyb21MYXN0Q2hpbGQobGF5b3V0Qm94KSk7CiAgICAgfQogCi0gICAgc3RhdGljIF9j
b2xsYXBzZWRNYXJnaW5Ub3BGcm9tRmlyc3RDaGlsZChib3gpIHsKKyAgICBzdGF0aWMgX2NvbGxh
cHNlZE1hcmdpblRvcEZyb21GaXJzdENoaWxkKGxheW91dEJveCkgewogICAgICAgICAvLyBDaGVj
ayBpZiB0aGUgZmlyc3QgY2hpbGQgY29sbGFwc2VzIGl0cyBtYXJnaW4gdG9wLgotICAgICAgICBp
ZiAoIWJveC5pc0NvbnRhaW5lcigpIHx8ICFib3guZmlyc3RJbkZsb3dDaGlsZCgpKQorICAgICAg
ICBpZiAoIWxheW91dEJveC5pc0NvbnRhaW5lcigpIHx8ICFsYXlvdXRCb3guZmlyc3RJbkZsb3dD
aGlsZCgpKQogICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIGxldCBmaXJzdEluRmxvd0No
aWxkID0gYm94LmZpcnN0SW5GbG93Q2hpbGQoKTsKKyAgICAgICAgbGV0IGZpcnN0SW5GbG93Q2hp
bGQgPSBsYXlvdXRCb3guZmlyc3RJbkZsb3dDaGlsZCgpOwogICAgICAgICBpZiAoIXRoaXMuX2lz
TWFyZ2luVG9wQ29sbGFwc2VkV2l0aFBhcmVudChmaXJzdEluRmxvd0NoaWxkKSkKICAgICAgICAg
ICAgIHJldHVybiAwOwogICAgICAgICAvLyBDb2xsZWN0IGNvbGxhcHNlZCBtYXJnaW4gdG9wIHJl
Y3Vyc2l2ZWx5LgogICAgICAgICByZXR1cm4gdGhpcy5fbWFyZ2luVmFsdWUoVXRpbHMuY29tcHV0
ZWRNYXJnaW5Ub3AoZmlyc3RJbkZsb3dDaGlsZCksIHRoaXMuX2NvbGxhcHNlZE1hcmdpblRvcEZy
b21GaXJzdENoaWxkKGZpcnN0SW5GbG93Q2hpbGQpKTsKICAgICB9CiAKLSAgICBzdGF0aWMgX2Nv
bGxhcHNlZE1hcmdpbkJvdHRvbUZyb21MYXN0Q2hpbGQoYm94KSB7CisgICAgc3RhdGljIF9jb2xs
YXBzZWRNYXJnaW5Cb3R0b21Gcm9tTGFzdENoaWxkKGxheW91dEJveCkgewogICAgICAgICAvLyBD
aGVjayBpZiB0aGUgbGFzdCBjaGlsZCBwcm9wYWdhdGVzIGl0cyBtYXJnaW4gYm90dG9tLgotICAg
ICAgICBpZiAoIWJveC5pc0NvbnRhaW5lcigpIHx8ICFib3gubGFzdEluRmxvd0NoaWxkKCkpCisg
ICAgICAgIGlmICghbGF5b3V0Qm94LmlzQ29udGFpbmVyKCkgfHwgIWxheW91dEJveC5sYXN0SW5G
bG93Q2hpbGQoKSkKICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICBsZXQgbGFzdEluRmxv
d0NoaWxkID0gYm94Lmxhc3RJbkZsb3dDaGlsZCgpOworICAgICAgICBsZXQgbGFzdEluRmxvd0No
aWxkID0gbGF5b3V0Qm94Lmxhc3RJbkZsb3dDaGlsZCgpOwogICAgICAgICBpZiAoIXRoaXMuX2lz
TWFyZ2luQm90dG9tQ29sbGFwc2VkV2l0aFBhcmVudChsYXN0SW5GbG93Q2hpbGQpKQogICAgICAg
ICAgICAgcmV0dXJuIDA7CiAgICAgICAgIC8vIENvbGxlY3QgY29sbGFwc2VkIG1hcmdpbiBib3R0
b20gcmVjdXJzaXZlbHkuCkBAIC0xNzUsNyArMTc1LDcgQEAgY2xhc3MgQmxvY2tNYXJnaW5Db2xs
YXBzZSB7CiAgICAgICAgIHJldHVybiBjdXJyZW50TWFyZ2luVmFsdWUgKyBjYW5kaWRhdGVNYXJn
aW5WYWx1ZTsKICAgICB9CiAKLSAgICBzdGF0aWMgX2hhc0Fkam9pbmluZ01hcmdpblRvcEFuZEJv
dHRvbShib3gpIHsKKyAgICBzdGF0aWMgX2hhc0Fkam9pbmluZ01hcmdpblRvcEFuZEJvdHRvbShs
YXlvdXRCb3gpIHsKICAgICAgICAgLy8gVHdvIG1hcmdpbnMgYXJlIGFkam9pbmluZyBpZiBhbmQg
b25seSBpZjoKICAgICAgICAgLy8gMS4gYm90aCBiZWxvbmcgdG8gaW4tZmxvdyBibG9jay1sZXZl
bCBib3hlcyB0aGF0IHBhcnRpY2lwYXRlIGluIHRoZSBzYW1lIGJsb2NrIGZvcm1hdHRpbmcgY29u
dGV4dAogICAgICAgICAvLyAyLiBubyBsaW5lIGJveGVzLCBubyBjbGVhcmFuY2UsIG5vIHBhZGRp
bmcgYW5kIG5vIGJvcmRlciBzZXBhcmF0ZSB0aGVtIChOb3RlIHRoYXQgY2VydGFpbiB6ZXJvLWhl
aWdodCBsaW5lIGJveGVzIChzZWUgOS40LjIpIGFyZSBpZ25vcmVkIGZvciB0aGlzIHB1cnBvc2Uu
KQpkaWZmIC0tZ2l0IGEvVG9vbHMvTGF5b3V0UmVsb2FkZWQvRm9ybWF0dGluZ0NvbnRleHQvRmxv
YXRpbmdDb250ZXh0LmpzIGIvVG9vbHMvTGF5b3V0UmVsb2FkZWQvRm9ybWF0dGluZ0NvbnRleHQv
RmxvYXRpbmdDb250ZXh0LmpzCmluZGV4IDk4MzIxMjhkNGQ2NTk3ZGRkOWE1NTE3ZmVmY2I4ODVi
YTZmNzA5MmEuLmU3MjNjZGE2ZDY0NzYxNmQ0OTE4NmJiMjA3NDMxY2YxNzg3MTBkYTIgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0xheW91dFJlbG9hZGVkL0Zvcm1hdHRpbmdDb250ZXh0L0Zsb2F0aW5nQ29u
dGV4dC5qcworKysgYi9Ub29scy9MYXlvdXRSZWxvYWRlZC9Gb3JtYXR0aW5nQ29udGV4dC9GbG9h
dGluZ0NvbnRleHQuanMKQEAgLTMxLDE4ICszMSwxOCBAQCBjbGFzcyBGbG9hdGluZ0NvbnRleHQg
ewogICAgICAgICB0aGlzLm1fZm9ybWF0dGluZ0NvbnRleHQgPSBmb3JtYXR0aW5nQ29udGV4dDsK
ICAgICB9CiAKLSAgICBjb21wdXRlUG9zaXRpb24oYm94KSB7Ci0gICAgICAgIGlmIChib3guaXNP
dXRPZkZsb3dQb3NpdGlvbmVkKCkpCi0gICAgICAgICAgICByZXR1cm4gYm94LnRvcExlZnQoKTsK
LSAgICAgICAgaWYgKGJveC5pc0Zsb2F0aW5nUG9zaXRpb25lZCgpKSB7Ci0gICAgICAgICAgICBs
ZXQgcG9zaXRpb24gPSB0aGlzLl9wb3NpdGlvbkZvckZsb2F0aW5nKGJveCk7Ci0gICAgICAgICAg
ICB0aGlzLl9hZGRGbG9hdGluZyhib3gpOwotICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOwor
ICAgIGNvbXB1dGVQb3NpdGlvbihsYXlvdXRCb3gpIHsKKyAgICAgICAgaWYgKGxheW91dEJveC5p
c091dE9mRmxvd1Bvc2l0aW9uZWQoKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgaWYg
KGxheW91dEJveC5pc0Zsb2F0aW5nUG9zaXRpb25lZCgpKSB7CisgICAgICAgICAgICBsZXQgcG9z
aXRpb24gPSB0aGlzLl9wb3NpdGlvbkZvckZsb2F0aW5nKGxheW91dEJveCk7CisgICAgICAgICAg
ICB0aGlzLl9hZGRGbG9hdGluZyhsYXlvdXRCb3gpOworICAgICAgICAgICAgcmV0dXJuIGxheW91
dEJveC5zZXRUb3BMZWZ0KHBvc2l0aW9uKTsKICAgICAgICAgfQotICAgICAgICBpZiAoVXRpbHMu
aGFzQ2xlYXIoYm94KSkKLSAgICAgICAgICAgIHJldHVybiB0aGlzLl9wb3NpdGlvbkZvckNsZWFy
KGJveCk7CisgICAgICAgIGlmIChVdGlscy5oYXNDbGVhcihsYXlvdXRCb3gpKQorICAgICAgICAg
ICAgcmV0dXJuIGxheW91dEJveC5zZXRUb3BMZWZ0KHRoaXMuX3Bvc2l0aW9uRm9yQ2xlYXIobGF5
b3V0Qm94KSk7CiAgICAgICAgIC8vIEludHJ1ZGluZyBmbG9hdHMgbWlnaHQgZm9yY2UgdGhpcyBi
b3ggbW92ZS4KLSAgICAgICAgcmV0dXJuIHRoaXMuX2NvbXB1dGVQb3NpdGlvblRvQXZvaWRJbnRy
dWRpbmdGbG9hdHMoYm94KTsKKyAgICAgICAgcmV0dXJuIGxheW91dEJveC5zZXRUb3BMZWZ0KHRo
aXMuX2NvbXB1dGVQb3NpdGlvblRvQXZvaWRJbnRydWRpbmdGbG9hdHMobGF5b3V0Qm94KSk7CiAg
ICAgfQogCiAgICAgYm90dG9tKCkgewpAQCAtNzEsMzUgKzcxLDM1IEBAIGNsYXNzIEZsb2F0aW5n
Q29udGV4dCB7CiAgICAgICAgIHJldHVybiBNYXRoLk5hbjsKICAgICB9CiAKLSAgICBfcG9zaXRp
b25Gb3JDbGVhcihib3gpIHsKLSAgICAgICAgQVNTRVJUKFV0aWxzLmhhc0NsZWFyKGJveCkpOwor
ICAgIF9wb3NpdGlvbkZvckNsZWFyKGxheW91dEJveCkgeworICAgICAgICBBU1NFUlQoVXRpbHMu
aGFzQ2xlYXIobGF5b3V0Qm94KSk7CiAgICAgICAgIGlmICh0aGlzLl9pc0VtcHR5KCkpCi0gICAg
ICAgICAgICByZXR1cm4gYm94LnRvcExlZnQoKTsKKyAgICAgICAgICAgIHJldHVybiBsYXlvdXRC
b3gudG9wTGVmdCgpOwogCiAgICAgICAgIGxldCBsZWZ0Qm90dG9tID0gTnVtYmVyLk5hTjsKICAg
ICAgICAgbGV0IHJpZ2h0Qm90dG9tID0gTnVtYmVyLk5hTjsKLSAgICAgICAgaWYgKFV0aWxzLmhh
c0NsZWFyTGVmdChib3gpIHx8IFV0aWxzLmhhc0NsZWFyQm90aChib3gpKQorICAgICAgICBpZiAo
VXRpbHMuaGFzQ2xlYXJMZWZ0KGxheW91dEJveCkgfHwgVXRpbHMuaGFzQ2xlYXJCb3RoKGxheW91
dEJveCkpCiAgICAgICAgICAgICBsZWZ0Qm90dG9tID0gdGhpcy5fYm90dG9tKHRoaXMubV9sZWZ0
RmxvYXRpbmdCb3hTdGFjayk7Ci0gICAgICAgIGlmIChVdGlscy5oYXNDbGVhclJpZ2h0KGJveCkg
fHwgVXRpbHMuaGFzQ2xlYXJCb3RoKGJveCkpCisgICAgICAgIGlmIChVdGlscy5oYXNDbGVhclJp
Z2h0KGxheW91dEJveCkgfHwgVXRpbHMuaGFzQ2xlYXJCb3RoKGxheW91dEJveCkpCiAgICAgICAg
ICAgICByaWdodEJvdHRvbSA9IHRoaXMuX2JvdHRvbSh0aGlzLm1fcmlnaHRGbG9hdGluZ0JveFN0
YWNrKTsKIAogICAgICAgICBpZiAoIU51bWJlci5pc05hTihsZWZ0Qm90dG9tKSAmJiAhTnVtYmVy
LmlzTmFOKHJpZ2h0Qm90dG9tKSkKLSAgICAgICAgICAgIHJldHVybiBuZXcgTGF5b3V0UG9pbnQo
TWF0aC5tYXgobGVmdEJvdHRvbSwgcmlnaHRCb3R0b20pLCBib3gucmVjdCgpLmxlZnQoKSk7Cisg
ICAgICAgICAgICByZXR1cm4gbmV3IExheW91dFBvaW50KE1hdGgubWF4KGxlZnRCb3R0b20sIHJp
Z2h0Qm90dG9tKSwgbGF5b3V0Qm94LnJlY3QoKS5sZWZ0KCkpOwogICAgICAgICBpZiAoIU51bWJl
ci5pc05hTihsZWZ0Qm90dG9tKSkKLSAgICAgICAgICAgIHJldHVybiBuZXcgTGF5b3V0UG9pbnQo
bGVmdEJvdHRvbSwgYm94LnJlY3QoKS5sZWZ0KCkpOworICAgICAgICAgICAgcmV0dXJuIG5ldyBM
YXlvdXRQb2ludChsZWZ0Qm90dG9tLCBsYXlvdXRCb3gucmVjdCgpLmxlZnQoKSk7CiAgICAgICAg
IGlmICghTnVtYmVyLmlzTmFOKHJpZ2h0Qm90dG9tKSkKLSAgICAgICAgICAgIHJldHVybiBuZXcg
TGF5b3V0UG9pbnQocmlnaHRCb3R0b20sIGJveC5yZWN0KCkubGVmdCgpKTsKLSAgICAgICAgcmV0
dXJuIGJveC50b3BMZWZ0KCk7CisgICAgICAgICAgICByZXR1cm4gbmV3IExheW91dFBvaW50KHJp
Z2h0Qm90dG9tLCBsYXlvdXRCb3gucmVjdCgpLmxlZnQoKSk7CisgICAgICAgIHJldHVybiBsYXlv
dXRCb3gudG9wTGVmdCgpOwogICAgIH0KIAotICAgIF9jb21wdXRlUG9zaXRpb25Ub0F2b2lkSW50
cnVkaW5nRmxvYXRzKGJveCkgewotICAgICAgICBpZiAoIWJveC5lc3RhYmxpc2hlc0Jsb2NrRm9y
bWF0dGluZ0NvbnRleHQoKSB8fCB0aGlzLl9pc0VtcHR5KCkpCi0gICAgICAgICAgICByZXR1cm4g
Ym94LnRvcExlZnQoKTsKKyAgICBfY29tcHV0ZVBvc2l0aW9uVG9Bdm9pZEludHJ1ZGluZ0Zsb2F0
cyhsYXlvdXRCb3gpIHsKKyAgICAgICAgaWYgKCFsYXlvdXRCb3guZXN0YWJsaXNoZXNCbG9ja0Zv
cm1hdHRpbmdDb250ZXh0KCkgfHwgdGhpcy5faXNFbXB0eSgpKQorICAgICAgICAgICAgcmV0dXJu
IGxheW91dEJveC50b3BMZWZ0KCk7CiAgICAgICAgIC8vIFRoZSBib3JkZXIgYm94IG9mIGEgdGFi
bGUsIGEgYmxvY2stbGV2ZWwgcmVwbGFjZWQgZWxlbWVudCwgb3IgYW4gZWxlbWVudCBpbiB0aGUg
bm9ybWFsIGZsb3cgdGhhdCBlc3RhYmxpc2hlcwogICAgICAgICAvLyBhIG5ldyBibG9jayBmb3Jt
YXR0aW5nIGNvbnRleHQgKHN1Y2ggYXMgYW4gZWxlbWVudCB3aXRoICdvdmVyZmxvdycgb3RoZXIg
dGhhbiAndmlzaWJsZScpIG11c3Qgbm90IG92ZXJsYXAgdGhlCiAgICAgICAgIC8vIG1hcmdpbiBi
b3ggb2YgYW55IGZsb2F0cyBpbiB0aGUgc2FtZSBibG9jayBmb3JtYXR0aW5nIGNvbnRleHQgYXMg
dGhlIGVsZW1lbnQgaXRzZWxmLgogICAgICAgICAvLyBGb3Igc29tZSByZWFzb24sIHdlIHBvc2l0
aW9uIHRoaXMgYXMgaWYgaXQgd2FzIGZsb2F0aW5nIGxlZnQuCi0gICAgICAgIHJldHVybiB0aGlz
Ll9wb3NpdGlvbkZvckZsb2F0aW5nKGJveCk7CisgICAgICAgIHJldHVybiB0aGlzLl9wb3NpdGlv
bkZvckZsb2F0aW5nKGxheW91dEJveCk7CiAgICAgfQogCiAgICAgX2FkZEZsb2F0aW5nKGZsb2F0
aW5nQm94KSB7CmRpZmYgLS1naXQgYS9Ub29scy9MYXlvdXRSZWxvYWRlZC9Gb3JtYXR0aW5nQ29u
dGV4dC9Gb3JtYXR0aW5nQ29udGV4dC5qcyBiL1Rvb2xzL0xheW91dFJlbG9hZGVkL0Zvcm1hdHRp
bmdDb250ZXh0L0Zvcm1hdHRpbmdDb250ZXh0LmpzCmluZGV4IDFjMmMzYzI0OWEzM2U1MDY1NjQ5
ZjI4NDMxZjgzYTVkNzNmMGJlNzUuLmVlYzg3ZDlhMGViMGJiNjg2Mjc1OWMwMjg4ZDExNzNmMDZj
NmUyNTEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0xheW91dFJlbG9hZGVkL0Zvcm1hdHRpbmdDb250ZXh0
L0Zvcm1hdHRpbmdDb250ZXh0LmpzCisrKyBiL1Rvb2xzL0xheW91dFJlbG9hZGVkL0Zvcm1hdHRp
bmdDb250ZXh0L0Zvcm1hdHRpbmdDb250ZXh0LmpzCkBAIC00MCw1MiArNDAsNTIgQEAgY2xhc3Mg
Rm9ybWF0dGluZ0NvbnRleHQgewogICAgIGxheW91dChsYXlvdXRDb250ZXh0KSB7CiAgICAgfQog
Ci0gICAgY29tcHV0ZVdpZHRoKGJveCkgeworICAgIGNvbXB1dGVXaWR0aChsYXlvdXRCb3gpIHsK
ICAgICB9CiAKLSAgICBjb21wdXRlSGVpZ2h0KGJveCkgeworICAgIGNvbXB1dGVIZWlnaHQobGF5
b3V0Qm94KSB7CiAgICAgfQogCi0gICAgbWFyZ2luVG9wKGJveCkgewotICAgICAgICByZXR1cm4g
VXRpbHMuY29tcHV0ZWRNYXJnaW5Ub3AoYm94KTsKKyAgICBtYXJnaW5Ub3AobGF5b3V0Qm94KSB7
CisgICAgICAgIHJldHVybiBVdGlscy5jb21wdXRlZE1hcmdpblRvcChsYXlvdXRCb3gpOwogICAg
IH0KICAgICAKLSAgICBtYXJnaW5MZWZ0KGJveCkgewotICAgICAgICByZXR1cm4gVXRpbHMuY29t
cHV0ZWRNYXJnaW5MZWZ0KGJveCk7CisgICAgbWFyZ2luTGVmdChsYXlvdXRCb3gpIHsKKyAgICAg
ICAgcmV0dXJuIFV0aWxzLmNvbXB1dGVkTWFyZ2luTGVmdChsYXlvdXRCb3gpOwogICAgIH0KICAg
ICAKLSAgICBtYXJnaW5Cb3R0b20oYm94KSB7Ci0gICAgICAgIHJldHVybiBVdGlscy5jb21wdXRl
ZE1hcmdpbkJvdHRvbShib3gpOworICAgIG1hcmdpbkJvdHRvbShsYXlvdXRCb3gpIHsKKyAgICAg
ICAgcmV0dXJuIFV0aWxzLmNvbXB1dGVkTWFyZ2luQm90dG9tKGxheW91dEJveCk7CiAgICAgfQog
ICAgIAotICAgIG1hcmdpblJpZ2h0KGJveCkgewotICAgICAgICByZXR1cm4gVXRpbHMuY29tcHV0
ZWRNYXJnaW5SaWdodChib3gpOworICAgIG1hcmdpblJpZ2h0KGxheW91dEJveCkgeworICAgICAg
ICByZXR1cm4gVXRpbHMuY29tcHV0ZWRNYXJnaW5SaWdodChsYXlvdXRCb3gpOwogICAgIH0KIAot
ICAgIGFic29sdXRlTWFyZ2luQm94KGJveCkgewotICAgICAgICBsZXQgYWJzb2x1dGVDb250ZW50
Qm94ID0gVXRpbHMubWFwVG9Db250YWluZXIoYm94LCB0aGlzLnJvb3RDb250YWluZXIoKSk7Ci0g
ICAgICAgIGFic29sdXRlQ29udGVudEJveC5tb3ZlQnkobmV3IExheW91dFNpemUoLXRoaXMubWFy
Z2luTGVmdChib3gpLCAtdGhpcy5tYXJnaW5Ub3AoYm94KSkpOwotICAgICAgICBhYnNvbHV0ZUNv
bnRlbnRCb3guZ3Jvd0J5KG5ldyBMYXlvdXRTaXplKHRoaXMubWFyZ2luTGVmdChib3gpICsgdGhp
cy5tYXJnaW5SaWdodChib3gpLCB0aGlzLm1hcmdpblRvcChib3gpICsgdGhpcy5tYXJnaW5Cb3R0
b20oYm94KSkpOworICAgIGFic29sdXRlTWFyZ2luQm94KGxheW91dEJveCkgeworICAgICAgICBs
ZXQgYWJzb2x1dGVDb250ZW50Qm94ID0gVXRpbHMubWFwVG9Db250YWluZXIobGF5b3V0Qm94LCB0
aGlzLnJvb3RDb250YWluZXIoKSk7CisgICAgICAgIGFic29sdXRlQ29udGVudEJveC5tb3ZlQnko
bmV3IExheW91dFNpemUoLXRoaXMubWFyZ2luTGVmdChsYXlvdXRCb3gpLCAtdGhpcy5tYXJnaW5U
b3AobGF5b3V0Qm94KSkpOworICAgICAgICBhYnNvbHV0ZUNvbnRlbnRCb3guZ3Jvd0J5KG5ldyBM
YXlvdXRTaXplKHRoaXMubWFyZ2luTGVmdChsYXlvdXRCb3gpICsgdGhpcy5tYXJnaW5SaWdodChs
YXlvdXRCb3gpLCB0aGlzLm1hcmdpblRvcChsYXlvdXRCb3gpICsgdGhpcy5tYXJnaW5Cb3R0b20o
bGF5b3V0Qm94KSkpOwogICAgICAgICByZXR1cm4gYWJzb2x1dGVDb250ZW50Qm94OwogICAgIH0K
IAotICAgIGFic29sdXRlQm9yZGVyQm94KGJveCkgewotICAgICAgICBsZXQgYm9yZGVyQm94ID0g
Ym94LmJvcmRlckJveCgpOwotICAgICAgICBsZXQgYWJzb2x1dGVSZWN0ID0gbmV3IExheW91dFJl
Y3QoVXRpbHMubWFwVG9Db250YWluZXIoYm94LCB0aGlzLnJvb3RDb250YWluZXIoKSkudG9wTGVm
dCgpLCBib3JkZXJCb3guc2l6ZSgpKTsKKyAgICBhYnNvbHV0ZUJvcmRlckJveChsYXlvdXRCb3gp
IHsKKyAgICAgICAgbGV0IGJvcmRlckJveCA9IGxheW91dEJveC5ib3JkZXJCb3goKTsKKyAgICAg
ICAgbGV0IGFic29sdXRlUmVjdCA9IG5ldyBMYXlvdXRSZWN0KFV0aWxzLm1hcFRvQ29udGFpbmVy
KGxheW91dEJveCwgdGhpcy5yb290Q29udGFpbmVyKCkpLnRvcExlZnQoKSwgYm9yZGVyQm94LnNp
emUoKSk7CiAgICAgICAgIGFic29sdXRlUmVjdC5tb3ZlQnkoYm9yZGVyQm94LnRvcExlZnQoKSk7
CiAgICAgICAgIHJldHVybiBhYnNvbHV0ZVJlY3Q7CiAgICAgfQogCi0gICAgYWJzb2x1dGVQYWRk
aW5nQm94KGJveCkgewotICAgICAgICBsZXQgcGFkZGluZ0JveCA9IGJveC5wYWRkaW5nQm94KCk7
Ci0gICAgICAgIGxldCBhYnNvbHV0ZVJlY3QgPSBuZXcgTGF5b3V0UmVjdChVdGlscy5tYXBUb0Nv
bnRhaW5lcihib3gsIHRoaXMucm9vdENvbnRhaW5lcigpKS50b3BMZWZ0KCksIHBhZGRpbmdCb3gu
c2l6ZSgpKTsKKyAgICBhYnNvbHV0ZVBhZGRpbmdCb3gobGF5b3V0Qm94KSB7CisgICAgICAgIGxl
dCBwYWRkaW5nQm94ID0gbGF5b3V0Qm94LnBhZGRpbmdCb3goKTsKKyAgICAgICAgbGV0IGFic29s
dXRlUmVjdCA9IG5ldyBMYXlvdXRSZWN0KFV0aWxzLm1hcFRvQ29udGFpbmVyKGxheW91dEJveCwg
dGhpcy5yb290Q29udGFpbmVyKCkpLnRvcExlZnQoKSwgcGFkZGluZ0JveC5zaXplKCkpOwogICAg
ICAgICBhYnNvbHV0ZVJlY3QubW92ZUJ5KHBhZGRpbmdCb3gudG9wTGVmdCgpKTsKICAgICAgICAg
cmV0dXJuIGFic29sdXRlUmVjdDsKICAgICB9CiAKLSAgICBhYnNvbHV0ZUNvbnRlbnRCb3goYm94
KSB7Ci0gICAgICAgIGxldCBjb250ZW50Qm94ID0gYm94LmNvbnRlbnRCb3goKTsKLSAgICAgICAg
bGV0IGFic29sdXRlUmVjdCA9IG5ldyBMYXlvdXRSZWN0KFV0aWxzLm1hcFRvQ29udGFpbmVyKGJv
eCwgdGhpcy5yb290Q29udGFpbmVyKCkpLnRvcExlZnQoKSwgY29udGVudEJveC5zaXplKCkpOwor
ICAgIGFic29sdXRlQ29udGVudEJveChsYXlvdXRCb3gpIHsKKyAgICAgICAgbGV0IGNvbnRlbnRC
b3ggPSBsYXlvdXRCb3guY29udGVudEJveCgpOworICAgICAgICBsZXQgYWJzb2x1dGVSZWN0ID0g
bmV3IExheW91dFJlY3QoVXRpbHMubWFwVG9Db250YWluZXIobGF5b3V0Qm94LCB0aGlzLnJvb3RD
b250YWluZXIoKSkudG9wTGVmdCgpLCBjb250ZW50Qm94LnNpemUoKSk7CiAgICAgICAgIGFic29s
dXRlUmVjdC5tb3ZlQnkoY29udGVudEJveC50b3BMZWZ0KCkpOwogICAgICAgICByZXR1cm4gYWJz
b2x1dGVSZWN0OwogICAgIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL0xheW91dFJlbG9hZGVkL0Zvcm1h
dHRpbmdDb250ZXh0L0lubGluZUZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuanMg
Yi9Ub29scy9MYXlvdXRSZWxvYWRlZC9Gb3JtYXR0aW5nQ29udGV4dC9JbmxpbmVGb3JtYXR0aW5n
L0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmpzCmluZGV4IDYwNTk3NWU0NzllMmYyM2I5MGY4MWU5
MWZlMGYzYTNmNzU5MDc4MDcuLjQxYTM2YjljMmUzNTM0ZGU1ZDViNzlhNzg1YjkzMjFiMzE1Nzdj
OTYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0xheW91dFJlbG9hZGVkL0Zvcm1hdHRpbmdDb250ZXh0L0lu
bGluZUZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuanMKKysrIGIvVG9vbHMvTGF5
b3V0UmVsb2FkZWQvRm9ybWF0dGluZ0NvbnRleHQvSW5saW5lRm9ybWF0dGluZy9JbmxpbmVGb3Jt
YXR0aW5nQ29udGV4dC5qcwpAQCAtNTEsMjAgKzUxLDIwIEBAIGNsYXNzIElubGluZUZvcm1hdHRp
bmdDb250ZXh0IGV4dGVuZHMgRm9ybWF0dGluZ0NvbnRleHQgewogICAgICAgICB3aGlsZSAobGF5
b3V0U3RhY2subGVuZ3RoKSB7CiAgICAgICAgICAgICAvLyBUcmF2ZXJzIGRvd24gb24gdGhlIGRl
c2NlbmRhbnRzIHVudGlsIHdlIGZpbmQgYSBsZWFmIG5vZGUuCiAgICAgICAgICAgICB3aGlsZSAo
dHJ1ZSkgewotICAgICAgICAgICAgICAgIGxldCBib3ggPSBsYXlvdXRTdGFja1tsYXlvdXRTdGFj
ay5sZW5ndGggLSAxXTsKLSAgICAgICAgICAgICAgICBpZiAoYm94LmVzdGFibGlzaGVzRm9ybWF0
dGluZ0NvbnRleHQoKSkgewotICAgICAgICAgICAgICAgICAgICBsYXlvdXRDb250ZXh0LmxheW91
dEZvcm1hdHRpbmdDb250ZXh0KGJveC5lc3RhYmxpc2hlZEZvcm1hdHRpbmdDb250ZXh0KCkpOwor
ICAgICAgICAgICAgICAgIGxldCBsYXlvdXRCb3ggPSBsYXlvdXRTdGFja1tsYXlvdXRTdGFjay5s
ZW5ndGggLSAxXTsKKyAgICAgICAgICAgICAgICBpZiAobGF5b3V0Qm94LmVzdGFibGlzaGVzRm9y
bWF0dGluZ0NvbnRleHQoKSkgeworICAgICAgICAgICAgICAgICAgICBsYXlvdXRDb250ZXh0Lmxh
eW91dEZvcm1hdHRpbmdDb250ZXh0KGxheW91dEJveC5lc3RhYmxpc2hlZEZvcm1hdHRpbmdDb250
ZXh0KCkpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAgICAgaWYgKCFib3guaXNDb250YWluZXIoKSB8fCAhYm94Lmhhc0NoaWxkKCkp
CisgICAgICAgICAgICAgICAgaWYgKCFsYXlvdXRCb3guaXNDb250YWluZXIoKSB8fCAhbGF5b3V0
Qm94Lmhhc0NoaWxkKCkpCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
ICAgIGxheW91dFN0YWNrLnB1c2goYm94LmZpcnN0Q2hpbGQoKSk7CiAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICB3aGlsZSAobGF5b3V0U3RhY2subGVuZ3RoKSB7Ci0gICAgICAgICAgICAgICAg
bGV0IGJveCA9IGxheW91dFN0YWNrLnBvcCgpOwotICAgICAgICAgICAgICAgIHRoaXMuX2hhbmRs
ZUlubGluZUJveChib3gpOwotICAgICAgICAgICAgICAgIGlmIChib3gubmV4dFNpYmxpbmcoKSkg
ewotICAgICAgICAgICAgICAgICAgICBsYXlvdXRTdGFjay5wdXNoKGJveC5uZXh0U2libGluZygp
KTsKKyAgICAgICAgICAgICAgICBsZXQgbGF5b3V0Qm94ID0gbGF5b3V0U3RhY2sucG9wKCk7Cisg
ICAgICAgICAgICAgICAgdGhpcy5faGFuZGxlSW5saW5lQm94KGxheW91dEJveCk7CisgICAgICAg
ICAgICAgICAgaWYgKGxheW91dEJveC5uZXh0U2libGluZygpKSB7CisgICAgICAgICAgICAgICAg
ICAgIGxheW91dFN0YWNrLnB1c2gobGF5b3V0Qm94Lm5leHRTaWJsaW5nKCkpOwogICAgICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CmRpZmYg
LS1naXQgYS9Ub29scy9MYXlvdXRSZWxvYWRlZC9MYXlvdXRUcmVlL0Jsb2NrQ29udGFpbmVyLmpz
IGIvVG9vbHMvTGF5b3V0UmVsb2FkZWQvTGF5b3V0VHJlZS9CbG9ja0NvbnRhaW5lci5qcwppbmRl
eCBjOTQ5MWMxOTkwODg0ZmQ2OWRlMGRjYTRjNzhmZjRmZjU2YjdkOTQ5Li5hNzdiZjhjOTNhODI2
MTNjNmQ2NzFiODNhMGY4YzJiOTk0YzQ1MmY4IDEwMDY0NAotLS0gYS9Ub29scy9MYXlvdXRSZWxv
YWRlZC9MYXlvdXRUcmVlL0Jsb2NrQ29udGFpbmVyLmpzCisrKyBiL1Rvb2xzL0xheW91dFJlbG9h
ZGVkL0xheW91dFRyZWUvQmxvY2tDb250YWluZXIuanMKQEAgLTIzLDcgKzIzLDcgQEAKICAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCiAgKi8KIAotY2xhc3MgQmxvY2tDb250YWluZXIgZXh0ZW5kcyBDb250YWluZXIg
eworTGF5b3V0LkJsb2NrQ29udGFpbmVyID0gY2xhc3MgQmxvY2tDb250YWluZXIgZXh0ZW5kcyBM
YXlvdXQuQ29udGFpbmVyIHsKICAgICBjb25zdHJ1Y3Rvcihub2RlLCBpZCkgewogICAgICAgICBz
dXBlcihub2RlLCBpZCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvVG9vbHMvTGF5b3V0UmVsb2FkZWQv
TGF5b3V0VHJlZS9Cb3guanMgYi9Ub29scy9MYXlvdXRSZWxvYWRlZC9MYXlvdXRUcmVlL0JveC5q
cwppbmRleCAwNTZiMDhhN2IwYWM3MDE0NjdkZjU5MTQ5NTU5ZTA2YmY2ZTI2YThhLi5iNTM5NzY1
YTIzMjhhMmZkMjlhYWM2NDcwZjQ3NmUyNmZjNGEwZWRiIDEwMDY0NAotLS0gYS9Ub29scy9MYXlv
dXRSZWxvYWRlZC9MYXlvdXRUcmVlL0JveC5qcworKysgYi9Ub29scy9MYXlvdXRSZWxvYWRlZC9M
YXlvdXRUcmVlL0JveC5qcwpAQCAtMjMsNyArMjMsOSBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwog
Ci1jbGFzcyBCb3ggewordmFyIExheW91dCA9IHsgfQorCitMYXlvdXQuQm94ID0gY2xhc3MgQm94
IHsKICAgICBjb25zdHJ1Y3Rvcihub2RlLCBpZCkgewogICAgICAgICB0aGlzLm1faWQgPSBpZDsK
ICAgICAgICAgdGhpcy5tX3JlbmRlcmVyTmFtZSA9IG51bGw7CmRpZmYgLS1naXQgYS9Ub29scy9M
YXlvdXRSZWxvYWRlZC9MYXlvdXRUcmVlL0NvbnRhaW5lci5qcyBiL1Rvb2xzL0xheW91dFJlbG9h
ZGVkL0xheW91dFRyZWUvQ29udGFpbmVyLmpzCmluZGV4IGI0ZjYzMTAyZmVhMGYwZDJhYzYwM2U1
NTgwYmMzNmJiYmQxZDRiYTQuLjEwNDJiZjUzOWVkYmJlMzNjMWY4ZmNjY2UyY2M3ZmMxMzBiNjFl
MWQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0xheW91dFJlbG9hZGVkL0xheW91dFRyZWUvQ29udGFpbmVy
LmpzCisrKyBiL1Rvb2xzL0xheW91dFJlbG9hZGVkL0xheW91dFRyZWUvQ29udGFpbmVyLmpzCkBA
IC0yMyw3ICsyMyw3IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLWNsYXNzIENvbnRhaW5lciBl
eHRlbmRzIEJveCB7CitMYXlvdXQuQ29udGFpbmVyID0gY2xhc3MgQ29udGFpbmVyIGV4dGVuZHMg
TGF5b3V0LkJveCB7CiAgICAgY29uc3RydWN0b3Iobm9kZSwgaWQpIHsKICAgICAgICAgc3VwZXIo
bm9kZSwgaWQpOwogICAgICAgICB0aGlzLm1fZmlyc3RDaGlsZCA9IG51bGw7CmRpZmYgLS1naXQg
YS9Ub29scy9MYXlvdXRSZWxvYWRlZC9MYXlvdXRUcmVlL0luaXRpYWxCbG9ja0NvbnRhaW5lci5q
cyBiL1Rvb2xzL0xheW91dFJlbG9hZGVkL0xheW91dFRyZWUvSW5pdGlhbEJsb2NrQ29udGFpbmVy
LmpzCmluZGV4IGFkYWI1NDhlMTdhNWU0ZWFhZjdhNTQxM2JjMjE1OThmMWJmMzc4ZGIuLjlmODBm
ODUzMjAwYTYwOTIxNDUxMjU1YjZjYjJmMzI5YTg4OTc3OGEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0xh
eW91dFJlbG9hZGVkL0xheW91dFRyZWUvSW5pdGlhbEJsb2NrQ29udGFpbmVyLmpzCisrKyBiL1Rv
b2xzL0xheW91dFJlbG9hZGVkL0xheW91dFRyZWUvSW5pdGlhbEJsb2NrQ29udGFpbmVyLmpzCkBA
IC0yMyw3ICsyMyw3IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLWNsYXNzIEluaXRpYWxCbG9j
a0NvbnRhaW5lciBleHRlbmRzIEJsb2NrQ29udGFpbmVyIHsKK0xheW91dC5Jbml0aWFsQmxvY2tD
b250YWluZXIgPSBjbGFzcyBJbml0aWFsQmxvY2tDb250YWluZXIgZXh0ZW5kcyBMYXlvdXQuQmxv
Y2tDb250YWluZXIgewogICAgIGNvbnN0cnVjdG9yKGRvY3VtZW50LCBpZCwgbmFtZSkgewogICAg
ICAgICBzdXBlcihkb2N1bWVudCwgaWQpOwogICAgIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL0xheW91
dFJlbG9hZGVkL0xheW91dFRyZWUvSW5saW5lQm94LmpzIGIvVG9vbHMvTGF5b3V0UmVsb2FkZWQv
TGF5b3V0VHJlZS9JbmxpbmVCb3guanMKaW5kZXggNGEyZWQ1MDQzMDdjMThkZDFlOTNmODM0ZWEw
NjMyOTZmN2RmZWRhYS4uODA5MWZhNTNkMmZmMDM3ZGFkMmIxZWQzZmY3ZTNmMWExNjE1MThlMCAx
MDA2NDQKLS0tIGEvVG9vbHMvTGF5b3V0UmVsb2FkZWQvTGF5b3V0VHJlZS9JbmxpbmVCb3guanMK
KysrIGIvVG9vbHMvTGF5b3V0UmVsb2FkZWQvTGF5b3V0VHJlZS9JbmxpbmVCb3guanMKQEAgLTIz
LDcgKzIzLDcgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotY2xhc3MgSW5saW5lQm94IGV4dGVu
ZHMgQm94IHsKK0xheW91dC5JbmxpbmVCb3ggPSBjbGFzcyBJbmxpbmVCb3ggZXh0ZW5kcyBMYXlv
dXQuQm94IHsKICAgICBjb25zdHJ1Y3Rvcihub2RlLCBpZCkgewogICAgICAgICBzdXBlcihub2Rl
LCBpZCk7CiAgICAgICAgIHRoaXMubV90ZXh0ID0gbnVsbDsKZGlmZiAtLWdpdCBhL1Rvb2xzL0xh
eW91dFJlbG9hZGVkL1RyZWVCdWlsZGVyLmpzIGIvVG9vbHMvTGF5b3V0UmVsb2FkZWQvVHJlZUJ1
aWxkZXIuanMKaW5kZXggODM5YzI0NWY0YTA2YjE5ZDVmOTE0MjU0NjU5OGM3YTEwNWNmYzFjMi4u
NjBkYjI4OTdmNGMyN2IzY2Y4NDRmYjk2YWJiODU4MWZjMjlkMmY0ZiAxMDA2NDQKLS0tIGEvVG9v
bHMvTGF5b3V0UmVsb2FkZWQvVHJlZUJ1aWxkZXIuanMKKysrIGIvVG9vbHMvTGF5b3V0UmVsb2Fk
ZWQvVHJlZUJ1aWxkZXIuanMKQEAgLTI4LDcgKzI4LDcgQEAgY2xhc3MgVHJlZUJ1aWxkZXIgewog
CiAgICAgY3JlYXRlVHJlZShkb2N1bWVudCwgcmVuZGVyVHJlZUR1bXApIHsKICAgICAgICAgLy8g
Um9vdC4KLSAgICAgICAgbGV0IGluaXRpYWxCbG9ja0NvbnRhaW5lciA9IG5ldyBJbml0aWFsQmxv
Y2tDb250YWluZXIoZG9jdW1lbnQsIHBhcnNlSW50KHJlbmRlclRyZWVEdW1wLnN1YnN0cmluZygw
LCByZW5kZXJUcmVlRHVtcC5pbmRleE9mKCIoIikpKSk7CisgICAgICAgIGxldCBpbml0aWFsQmxv
Y2tDb250YWluZXIgPSBuZXcgTGF5b3V0LkluaXRpYWxCbG9ja0NvbnRhaW5lcihkb2N1bWVudCwg
cGFyc2VJbnQocmVuZGVyVHJlZUR1bXAuc3Vic3RyaW5nKDAsIHJlbmRlclRyZWVEdW1wLmluZGV4
T2YoIigiKSkpKTsKICAgICAgICAgaW5pdGlhbEJsb2NrQ29udGFpbmVyLnNldFJlbmRlcmVyTmFt
ZSgiUmVuZGVyVmlldyIpOwogICAgICAgICByZW5kZXJUcmVlRHVtcCA9IHJlbmRlclRyZWVEdW1w
LnN1YnN0cmluZyhyZW5kZXJUcmVlRHVtcC5pbmRleE9mKCJ8IikgKyAxKTsKIApAQCAtNTMsMTMg
KzUzLDEzIEBAIGNsYXNzIFRyZWVCdWlsZGVyIHsKICAgICAgICAgbGV0IHRleHQgPSBudWxsOwog
ICAgICAgICBsZXQgbm9kZSA9IHRoaXMuX2ZpbmROb2RlKGluaXRpYWxCbG9ja0NvbnRhaW5lci5u
b2RlKCksIGlkLCBuYW1lKTsKICAgICAgICAgaWYgKG5hbWUgPT0gIlJlbmRlckJsb2NrIiB8fCBu
YW1lID09ICJSZW5kZXJCb2R5IikKLSAgICAgICAgICAgIGJveCA9IG5ldyBCbG9ja0NvbnRhaW5l
cihub2RlLCBpZCk7CisgICAgICAgICAgICBib3ggPSBuZXcgTGF5b3V0LkJsb2NrQ29udGFpbmVy
KG5vZGUsIGlkKTsKICAgICAgICAgZWxzZSBpZiAobmFtZSA9PSAiUmVuZGVySW5saW5lIikgewot
ICAgICAgICAgICAgYm94ID0gbmV3IElubGluZUNvbnRhaW5lcihub2RlLCBpZCk7CisgICAgICAg
ICAgICBib3ggPSBuZXcgTGF5b3V0LklubGluZUNvbnRhaW5lcihub2RlLCBpZCk7CiAgICAgICAg
IH0gZWxzZSBpZiAobmFtZSA9PSAiUmVuZGVyVGV4dCIpIHsKICAgICAgICAgICAgIHRleHQgPSBu
ZXcgVGV4dChub2RlLCBpZCk7CiAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgYm94ID0gbmV3
IEJveChub2RlLCBpZCk7CisgICAgICAgICAgICBib3ggPSBuZXcgTGF5b3V0LkJveChub2RlLCBp
ZCk7CiAKICAgICAgICAgaWYgKGJveCkKICAgICAgICAgICAgIGJveC5zZXRSZW5kZXJlck5hbWUo
bmFtZSk7CkBAIC02OCw3ICs2OCw3IEBAIGNsYXNzIFRyZWVCdWlsZGVyIHsKICAgICAgICAgLy8g
V2ViS2l0IGRvZXMgbm90IGNvbnN0cnVjdCBhbm9ueW1vdXMgaW5saW5lIGNvbnRhaW5lciBmb3Ig
dGV4dCBpZiB0aGUgdGV4dAogICAgICAgICAvLyBpcyBhIGRpcmVjdCBjaGlsZCBvZiBhIGJsb2Nr
IGNvbnRhaW5lci4KICAgICAgICAgaWYgKHRleHQgJiYgIXBhcmVudEJveC5pc0lubGluZUNvbnRh
aW5lcikgewotICAgICAgICAgICAgYm94ID0gbmV3IElubGluZUJveChudWxsLCAtMSk7CisgICAg
ICAgICAgICBib3ggPSBuZXcgTGF5b3V0LklubGluZUJveChudWxsLCAtMSk7CiAgICAgICAgICAg
ICBib3guc2V0SXNBbm9ueW1vdXMoKTsKICAgICAgICAgICAgIGJveC5zZXRUZXh0KHRleHQpOwog
ICAgICAgICB9CmRpZmYgLS1naXQgYS9Ub29scy9MYXlvdXRSZWxvYWRlZC9VdGlscy5qcyBiL1Rv
b2xzL0xheW91dFJlbG9hZGVkL1V0aWxzLmpzCmluZGV4IGQzMDUxMjFjYzQxZDA1NzU0MDc4Zjlh
NThiOTVjOGYxNmY0ZDdlMGUuLmZhZDM2NGI0N2UyMDYxNDQxYjg2YTdkNTE0MzU0ZDFhZGYyOWZi
ODMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0xheW91dFJlbG9hZGVkL1V0aWxzLmpzCisrKyBiL1Rvb2xz
L0xheW91dFJlbG9hZGVkL1V0aWxzLmpzCkBAIC01MzEsNyArNTMxLDcgQEAgY2xhc3MgVXRpbHMg
ewogICAgICAgICAvLyBTa2lwIGFub255bW91cyBib3hlcyBmb3Igbm93IC1UaGlzIGlzIHRoZSBj
YXNlIHdoZXJlIFdlYktpdCBkb2VzIG5vdCBnZW5lcmF0ZSBhbiBhbm9uIGlubGluZSBjb250YWlu
ZXIgZm9yIHRleHQgY29udGVudCB3aGVyZSB0aGUgdGV4dCBpcyBhIGRpcmVjdCBjaGlsZAogICAg
ICAgICAvLyBvZiBhIGJsb2NrIGNvbnRhaW5lci4KICAgICAgICAgbGV0IGluZGVudGF0aW9uID0g
IiAiLnJlcGVhdChsZXZlbCk7Ci0gICAgICAgIGlmIChib3ggaW5zdGFuY2VvZiBJbmxpbmVCb3gp
IHsKKyAgICAgICAgaWYgKGJveCBpbnN0YW5jZW9mIExheW91dC5JbmxpbmVCb3gpIHsKICAgICAg
ICAgICAgIGlmIChib3gudGV4dCgpKQogICAgICAgICAgICAgICAgIHJldHVybiBpbmRlbnRhdGlv
biArICIjdGV4dCBSZW5kZXJUZXh0XG4iOwogICAgICAgICB9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>