<?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>278863</bug_id>
          
          <creation_ts>2024-08-29 09:08:38 -0700</creation_ts>
          <short_desc>[css-line-clamp] Start using block-ellipsis string for ellipsis content</short_desc>
          <delta_ts>2024-10-29 18:05:26 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>206748</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="alan">zalan</reporter>
          <assigned_to name="alan">zalan</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>koivisto</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>2056281</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2024-08-29 09:08:38 -0700</bug_when>
    <thetext>ssia</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2056282</commentid>
    <comment_count>1</comment_count>
      <attachid>472344</attachid>
    <who name="alan">zalan</who>
    <bug_when>2024-08-29 09:12:45 -0700</bug_when>
    <thetext>Created attachment 472344
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2056548</commentid>
    <comment_count>2</comment_count>
      <attachid>472370</attachid>
    <who name="alan">zalan</who>
    <bug_when>2024-08-30 07:04:00 -0700</bug_when>
    <thetext>Created attachment 472370
[fast-cq]Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2056582</commentid>
    <comment_count>3</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2024-08-30 08:46:23 -0700</bug_when>
    <thetext>Committed 282973@main (4f0b33767232): &lt;https://commits.webkit.org/282973@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 472370.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2056583</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2024-08-30 08:47:17 -0700</bug_when>
    <thetext>&lt;rdar://problem/135020278&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>472344</attachid>
            <date>2024-08-29 09:12:45 -0700</date>
            <delta_ts>2024-08-30 07:03:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-278863-20240829091244.patch</filename>
            <type>text/plain</type>
            <size>24795</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">RnJvbSA3MDJiOTQ5MWFlMWIwYTdmZDMyNGY5ZGQwYjkwNzhkNDFkMTE0YzIxIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGFuIEJhcmFkbGF5IDx6YWxhbkBhcHBsZS5jb20+CkRhdGU6
IFRodSwgMjkgQXVnIDIwMjQgMDk6MDg6NDcgLTA3MDAKU3ViamVjdDogW1BBVENIXSBbY3NzLWxp
bmUtY2xhbXBdIFN0YXJ0IHVzaW5nIGJsb2NrLWVsbGlwc2lzIHN0cmluZyBmb3IKIGVsbGlwc2lz
IGNvbnRlbnQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI3ODg2MwoK
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgoxLiBFbGxpcHNpcyBjb250ZW50IGlzIGVpdGhl
ciAnLi4uJyAob3ZlcmZsb3cgaW4gaW5saW5lIGRpcmVjdGlvbiBhbmQgbGVnYWN5IGxpbmUgY2xh
bXApCm9yIHN1cHBsaWVkIGJ5ICdibG9jay1lbGxpcHNpcycgY3NzIHByb3BlcnR5IChjb3VsZCBi
ZSBub25lLCBtZWFuaW5nIG5vIGNoYW5nZSB0byByZW5kZXJpbmcgb3RoZXIgdGhhbiB0cnVuY2F0
aW9uIGluIGJsb2NrIGRpcmVjdGlvbikKMi4gSW5saW5lRGlzcGxheTo6TGluZSBub3cgaGFzIEVs
bGlwc2lzIHN0cnVjdCBjb250YWluaW5nIGFsbCBlbGxpcHNpcyByZWxhdGVkIGNvbnRlbnQuCgoq
IFNvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZv
cm1hdHRpbmdDb250ZXh0LmNwcDoKKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ0Nv
bnRleHQ6OmxpbmVMYXlvdXQpOgooV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nQ29u
dGV4dDo6Y3JlYXRlRGlzcGxheUNvbnRlbnRGb3JJbmxpbmVDb250ZW50KToKKiBTb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMYXlvdXRTdGF0ZS5o
OgooV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVMYXlvdXRTdGF0ZTo6c2V0TGVnYWN5Q2xhbXBlZExp
bmVJbmRleCk6CihXZWJDb3JlOjpMYXlvdXQ6OklubGluZUxheW91dFN0YXRlOjpsZWdhY3lDbGFt
cGVkTGluZUluZGV4IGNvbnN0KToKKFdlYkNvcmU6OkxheW91dDo6SW5saW5lTGF5b3V0U3RhdGU6
OnNldENsYW1wZWRMaW5lSW5kZXgpOiBEZWxldGVkLgooV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVM
YXlvdXRTdGF0ZTo6Y2xhbXBlZExpbmVJbmRleCBjb25zdCk6IERlbGV0ZWQuCiogU291cmNlL1dl
YkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvZGlzcGxheS9JbmxpbmVEaXNw
bGF5TGluZS5oOgooV2ViQ29yZTo6SW5saW5lRGlzcGxheTo6TGluZTo6c2V0RWxsaXBzaXMpOgoo
V2ViQ29yZTo6SW5saW5lRGlzcGxheTo6TGluZTo6ZWxsaXBzaXMgY29uc3QpOgooV2ViQ29yZTo6
SW5saW5lRGlzcGxheTo6TGluZTo6aGFzRWxsaXBzaXMgY29uc3QpOgooV2ViQ29yZTo6SW5saW5l
RGlzcGxheTo6TGluZTo6aXNGdWxseVRydW5jYXRlZEluQmxvY2tEaXJlY3Rpb24gY29uc3QpOgoo
V2ViQ29yZTo6SW5saW5lRGlzcGxheTo6TGluZTo6bW92ZUluQmxvY2tEaXJlY3Rpb24pOgooV2Vi
Q29yZTo6SW5saW5lRGlzcGxheTo6TGluZTo6dmlzaWJsZVJlY3RJZ25vcmluZ0Jsb2NrRGlyZWN0
aW9uIGNvbnN0KToKKFdlYkNvcmU6OklubGluZURpc3BsYXk6OkxpbmU6OmVsbGlwc2lzVmlzdWFs
UmVjdCBjb25zdCk6IERlbGV0ZWQuCihXZWJDb3JlOjpJbmxpbmVEaXNwbGF5OjpMaW5lOjplbGxp
cHNpc1RleHQgY29uc3QpOiBEZWxldGVkLgooV2ViQ29yZTo6SW5saW5lRGlzcGxheTo6TGluZTo6
c2V0RWxsaXBzaXNWaXN1YWxSZWN0KTogRGVsZXRlZC4KKiBTb3VyY2UvV2ViQ29yZS9sYXlvdXQv
Zm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9kaXNwbGF5L0lubGluZURpc3BsYXlMaW5lQnVpbGRl
ci5jcHA6CihXZWJDb3JlOjpMYXlvdXQ6OnRyYWlsaW5nRWxsaXBzaXNWaXN1YWxSZWN0QWZ0ZXJU
cnVuY2F0aW9uKToKKFdlYkNvcmU6OkxheW91dDo6bWFrZVJvb21Gb3JMaW5rQm94T25DbGFtcGVk
TGluZUlmTmVlZGVkKToKKFdlYkNvcmU6OkxheW91dDo6bW92ZURpc3BsYXlCb3hUb0NsYW1wZWRM
aW5lKToKKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRGlzcGxheUxpbmVCdWlsZGVyOjphZGRMZWdh
Y3lMaW5lQ2xhbXBUcmFpbGluZ0xpbmtCb3hJZkFwcGxpY2FibGUpOgooV2ViQ29yZTo6TGF5b3V0
OjpJbmxpbmVEaXNwbGF5TGluZUJ1aWxkZXI6OmFwcGx5RWxsaXBzaXNJZk5lZWRlZCk6CihXZWJD
b3JlOjpMYXlvdXQ6OklubGluZURpc3BsYXlMaW5lQnVpbGRlcjo6dHJhaWxpbmdFbGxpcHNpc1Zp
c3VhbFJlY3RBZnRlclRydW5jYXRpb24pOiBEZWxldGVkLgooV2ViQ29yZTo6TGF5b3V0OjpJbmxp
bmVEaXNwbGF5TGluZUJ1aWxkZXI6OmFkZExpbmVDbGFtcFRyYWlsaW5nTGlua0JveElmQXBwbGlj
YWJsZSk6IERlbGV0ZWQuCiogU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0
cy9pbmxpbmUvZGlzcGxheS9JbmxpbmVEaXNwbGF5TGluZUJ1aWxkZXIuaDoKKiBTb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS90ZXh0L1RleHRVdGlsLmNwcDoK
KFdlYkNvcmU6OkxheW91dDo6VGV4dFV0aWw6OmVsbGlwc2lzVGV4dEluSW5saW5lRGlyZWN0aW9u
KToKKFdlYkNvcmU6OkxheW91dDo6VGV4dFV0aWw6OmVsbGlwc2lzVGV4dFJ1bik6IERlbGV0ZWQu
CiogU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvdGV4dC9U
ZXh0VXRpbC5oOgoqIFNvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9pbmxpbmUvSW5s
aW5lSXRlcmF0b3JMaW5lQm94TW9kZXJuUGF0aC5oOgooV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6
OkxpbmVCb3hJdGVyYXRvck1vZGVyblBhdGg6OmVsbGlwc2lzVmlzdWFsUmVjdElnbm9yaW5nQmxv
Y2tEaXJlY3Rpb24gY29uc3QpOgooV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OkxpbmVCb3hJdGVy
YXRvck1vZGVyblBhdGg6OmVsbGlwc2lzVGV4dCBjb25zdCk6Ci0tLQogLi4uL2lubGluZS9Jbmxp
bmVGb3JtYXR0aW5nQ29udGV4dC5jcHAgICAgICAgIHwgMTUgKystLS0KIC4uLi9pbmxpbmUvSW5s
aW5lTGF5b3V0U3RhdGUuaCAgICAgICAgICAgICAgICB8ICA2ICstCiAuLi4vaW5saW5lL2Rpc3Bs
YXkvSW5saW5lRGlzcGxheUxpbmUuaCAgICAgICAgfCAzMSArKysrKy0tLS0tCiAuLi4vZGlzcGxh
eS9JbmxpbmVEaXNwbGF5TGluZUJ1aWxkZXIuY3BwICAgICAgfCA1NyArKysrKysrKysrKystLS0t
LS0tCiAuLi4vaW5saW5lL2Rpc3BsYXkvSW5saW5lRGlzcGxheUxpbmVCdWlsZGVyLmggfCAgNCAr
LQogLi4uL2lubGluZS90ZXh0L1RleHRVdGlsLmNwcCAgICAgICAgICAgICAgICAgIHwgIDYgKy0K
IC4uLi9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL3RleHQvVGV4dFV0aWwuaCB8ICAyICstCiAu
Li4vaW5saW5lL0lubGluZUl0ZXJhdG9yTGluZUJveE1vZGVyblBhdGguaCAgfCAgNCArLQogOCBm
aWxlcyBjaGFuZ2VkLCA3NCBpbnNlcnRpb25zKCspLCA1MSBkZWxldGlvbnMoLSkKCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9Jbmxp
bmVGb3JtYXR0aW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGlu
Z0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHAKaW5kZXggMDMxNDQx
ZDE5YTFhLi43YjU4ODU1NjY3N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9m
b3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVG
b3JtYXR0aW5nQ29udGV4dC5jcHAKQEAgLTMxNyw3ICszMTcsNyBAQCBJbmxpbmVMYXlvdXRSZXN1
bHQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmxpbmVMYXlvdXQoQWJzdHJhY3RMaW5lQnVpbGRl
ciYgbGluZQogICAgICAgICBwcmV2aW91c0xpbmVFbmQgPSBsaW5lQ29udGVudEVuZDsKICAgICAg
ICAgbGluZUxvZ2ljYWxUb3AgPSBmb3JtYXR0aW5nVXRpbHMoKS5sb2dpY2FsVG9wRm9yTmV4dExp
bmUobGluZUxheW91dFJlc3VsdCwgbGluZUxvZ2ljYWxSZWN0LCBmbG9hdGluZ0NvbnRleHQpOwog
ICAgIH0KLSAgICBJbmxpbmVEaXNwbGF5TGluZUJ1aWxkZXI6OmFkZExpbmVDbGFtcFRyYWlsaW5n
TGlua0JveElmQXBwbGljYWJsZSgqdGhpcywgbGF5b3V0U3RhdGUoKSwgbGF5b3V0UmVzdWx0LmRp
c3BsYXlDb250ZW50KTsKKyAgICBJbmxpbmVEaXNwbGF5TGluZUJ1aWxkZXI6OmFkZExlZ2FjeUxp
bmVDbGFtcFRyYWlsaW5nTGlua0JveElmQXBwbGljYWJsZSgqdGhpcywgbGF5b3V0U3RhdGUoKSwg
bGF5b3V0UmVzdWx0LmRpc3BsYXlDb250ZW50KTsKICAgICByZXR1cm4gbGF5b3V0UmVzdWx0Owog
fQogCkBAIC0zODQsNyArMzg0LDkgQEAgdm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6dXBk
YXRlQm94R2VvbWV0cnlGb3JQbGFjZWRGbG9hdHMoY29uc3QgTGluZUxheW91dFIKIAogSW5saW5l
UmVjdCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6Y3JlYXRlRGlzcGxheUNvbnRlbnRGb3JJbmxp
bmVDb250ZW50KGNvbnN0IExpbmVCb3gmIGxpbmVCb3gsIGNvbnN0IExpbmVMYXlvdXRSZXN1bHQm
IGxpbmVMYXlvdXRSZXN1bHQsIGNvbnN0IENvbnN0cmFpbnRzRm9ySW5saW5lQ29udGVudCYgY29u
c3RyYWludHMsIElubGluZURpc3BsYXk6OkNvbnRlbnQmIGRpc3BsYXlDb250ZW50LCBzaXplX3Qg
bnVtYmVyT2ZQcmV2aW91c0xpbmVzV2l0aElubGluZUNvbnRlbnQpCiB7Ci0gICAgYXV0byBudW1i
ZXJPZlZpc2libGVMaW5lc0FsbG93ZWQgPSBsYXlvdXRTdGF0ZSgpLnBhcmVudEJsb2NrTGF5b3V0
U3RhdGUoKS5saW5lQ2xhbXAoKSA/IHN0ZDo6bWFrZV9vcHRpb25hbChsYXlvdXRTdGF0ZSgpLnBh
cmVudEJsb2NrTGF5b3V0U3RhdGUoKS5saW5lQ2xhbXAoKS0+bWF4aW11bUxpbmVzKSA6IHN0ZDo6
bnVsbG9wdDsKKyAgICBhdXRvIGxpbmVDbGFtcCA9IGxheW91dFN0YXRlKCkucGFyZW50QmxvY2tM
YXlvdXRTdGF0ZSgpLmxpbmVDbGFtcCgpOworICAgIGF1dG8gaXNMZWdhY3lMaW5lQ2xhbXAgPSBs
aW5lQ2xhbXAgJiYgbGluZUNsYW1wLT5pc0xlZ2FjeTsKKyAgICBhdXRvIG51bWJlck9mVmlzaWJs
ZUxpbmVzQWxsb3dlZCA9IGxpbmVDbGFtcCA/IHN0ZDo6bWFrZV9vcHRpb25hbChsaW5lQ2xhbXAt
Pm1heGltdW1MaW5lcykgOiBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvIG51bWJlck9mTGluZXNX
aXRoSW5saW5lQ29udGVudCA9IG51bWJlck9mUHJldmlvdXNMaW5lc1dpdGhJbmxpbmVDb250ZW50
ICsgKCFsaW5lTGF5b3V0UmVzdWx0LmlubGluZUNvbnRlbnQuaXNFbXB0eSgpID8gMSA6IDApOwog
ICAgIGF1dG8gbGluZUlzRnVsbHlUcnVuY2F0ZWRJbkJsb2NrRGlyZWN0aW9uID0gbnVtYmVyT2ZW
aXNpYmxlTGluZXNBbGxvd2VkICYmIG51bWJlck9mTGluZXNXaXRoSW5saW5lQ29udGVudCA+ICpu
dW1iZXJPZlZpc2libGVMaW5lc0FsbG93ZWQ7CkBAIC0zOTIsMTEgKzM5NCwxMCBAQCBJbmxpbmVS
ZWN0IElubGluZUZvcm1hdHRpbmdDb250ZXh0OjpjcmVhdGVEaXNwbGF5Q29udGVudEZvcklubGlu
ZUNvbnRlbnQoY29uc3QgTAogICAgIGF1dG8gYm94ZXMgPSBJbmxpbmVEaXNwbGF5Q29udGVudEJ1
aWxkZXIgeyAqdGhpcywgY29uc3RyYWludHMsIGxpbmVCb3gsIGRpc3BsYXlMaW5lIH0uYnVpbGQo
bGluZUxheW91dFJlc3VsdCk7CiAKICAgICBhdXRvIHRydW5jYXRpb25Qb2xpY3kgPSBJbmxpbmVG
b3JtYXR0aW5nVXRpbHM6OmxpbmVFbmRpbmdUcnVuY2F0aW9uUG9saWN5KHJvb3QoKS5zdHlsZSgp
LCBudW1iZXJPZkxpbmVzV2l0aElubGluZUNvbnRlbnQsIG51bWJlck9mVmlzaWJsZUxpbmVzQWxs
b3dlZCk7Ci0gICAgaWYgKGF1dG8gZWxsaXBzaXNSZWN0ID0gSW5saW5lRGlzcGxheUxpbmVCdWls
ZGVyOjp0cmFpbGluZ0VsbGlwc2lzVmlzdWFsUmVjdEFmdGVyVHJ1bmNhdGlvbih0cnVuY2F0aW9u
UG9saWN5LCBkaXNwbGF5TGluZSwgYm94ZXMsIGxpbmVMYXlvdXRSZXN1bHQuaXNGaXJzdExhc3Qu
aXNMYXN0TGluZVdpdGhJbmxpbmVDb250ZW50KSkgewotICAgICAgICBkaXNwbGF5TGluZS5zZXRF
bGxpcHNpc1Zpc3VhbFJlY3QoKmVsbGlwc2lzUmVjdCk7Ci0gICAgICAgIGlmICh0cnVuY2F0aW9u
UG9saWN5ID09IExpbmVFbmRpbmdUcnVuY2F0aW9uUG9saWN5OjpXaGVuQ29udGVudE92ZXJmbG93
c0luQmxvY2tEaXJlY3Rpb24pCi0gICAgICAgICAgICBsYXlvdXRTdGF0ZSgpLnNldENsYW1wZWRM
aW5lSW5kZXgobGluZUJveC5saW5lSW5kZXgoKSk7Ci0gICAgfQorICAgIElubGluZURpc3BsYXlM
aW5lQnVpbGRlcjo6YXBwbHlFbGxpcHNpc0lmTmVlZGVkKHRydW5jYXRpb25Qb2xpY3ksIGRpc3Bs
YXlMaW5lLCBib3hlcywgbGluZUxheW91dFJlc3VsdC5pc0ZpcnN0TGFzdC5pc0xhc3RMaW5lV2l0
aElubGluZUNvbnRlbnQsIGlzTGVnYWN5TGluZUNsYW1wKTsKKyAgICBhdXRvIGxpbmVIYXNMZWdh
Y3lMaW5lQ2xhbXAgPSBpc0xlZ2FjeUxpbmVDbGFtcCAmJiBkaXNwbGF5TGluZS5oYXNFbGxpcHNp
cygpICYmIHRydW5jYXRpb25Qb2xpY3kgPT0gTGluZUVuZGluZ1RydW5jYXRpb25Qb2xpY3k6Oldo
ZW5Db250ZW50T3ZlcmZsb3dzSW5CbG9ja0RpcmVjdGlvbjsKKyAgICBpZiAobGluZUhhc0xlZ2Fj
eUxpbmVDbGFtcCkKKyAgICAgICAgbGF5b3V0U3RhdGUoKS5zZXRMZWdhY3lDbGFtcGVkTGluZUlu
ZGV4KGxpbmVCb3gubGluZUluZGV4KCkpOwogCiAgICAgZGlzcGxheUNvbnRlbnQuYm94ZXMuYXBw
ZW5kVmVjdG9yKFdURk1vdmUoYm94ZXMpKTsKICAgICBkaXNwbGF5Q29udGVudC5saW5lcy5hcHBl
bmQoZGlzcGxheUxpbmUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1h
dHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGF5b3V0U3RhdGUuaCBiL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxheW91dFN0YXRlLmgKaW5k
ZXggNzEzOTEyMzI4NGFiLi43NWFjYjI1MjBmM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxheW91dFN0YXRlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5l
TGF5b3V0U3RhdGUuaApAQCAtNTAsOCArNTAsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRBdmFp
bGFibGVMaW5lV2lkdGhPdmVycmlkZShBdmFpbGFibGVMaW5lV2lkdGhPdmVycmlkZSBhdmFpbGFi
bGVMaW5lV2lkdGhPdmVycmlkZSkgeyBtX2F2YWlsYWJsZUxpbmVXaWR0aE92ZXJyaWRlID0gYXZh
aWxhYmxlTGluZVdpZHRoT3ZlcnJpZGU7IH0KICAgICBjb25zdCBBdmFpbGFibGVMaW5lV2lkdGhP
dmVycmlkZSYgYXZhaWxhYmxlTGluZVdpZHRoT3ZlcnJpZGUoKSBjb25zdCB7IHJldHVybiBtX2F2
YWlsYWJsZUxpbmVXaWR0aE92ZXJyaWRlOyB9CiAKLSAgICB2b2lkIHNldENsYW1wZWRMaW5lSW5k
ZXgoc2l6ZV90IGxpbmVJbmRleCkgeyBtX2NsYW1wZWRMaW5lSW5kZXggPSBsaW5lSW5kZXg7IH0K
LSAgICBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gY2xhbXBlZExpbmVJbmRleCgpIGNvbnN0IHsgcmV0
dXJuIG1fY2xhbXBlZExpbmVJbmRleDsgfQorICAgIHZvaWQgc2V0TGVnYWN5Q2xhbXBlZExpbmVJ
bmRleChzaXplX3QgbGluZUluZGV4KSB7IG1fbGVnYWN5Q2xhbXBlZExpbmVJbmRleCA9IGxpbmVJ
bmRleDsgfQorICAgIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBsZWdhY3lDbGFtcGVkTGluZUluZGV4
KCkgY29uc3QgeyByZXR1cm4gbV9sZWdhY3lDbGFtcGVkTGluZUluZGV4OyB9CiAKICAgICB2b2lk
IHNldEh5cGhlbmF0aW9uTGltaXRMaW5lcyhzaXplX3QgaHlwaGVuYXRpb25MaW1pdExpbmVzKSB7
IG1faHlwaGVuYXRpb25MaW1pdExpbmVzID0gaHlwaGVuYXRpb25MaW1pdExpbmVzOyB9CiAgICAg
dm9pZCBpbmNyZW1lbnRTdWNjZXNzaXZlSHlwaGVuYXRlZExpbmVDb3VudCgpIHsgKyttX3N1Y2Nl
c3NpdmVIeXBoZW5hdGVkTGluZUNvdW50OyB9CkBAIC03NSw3ICs3NSw3IEBAIHByaXZhdGU6CiAg
ICAgSW5saW5lTGF5b3V0VW5pdCBtX2NsZWFyR2FwQmVmb3JlRmlyc3RMaW5lIHsgMC5mIH07CiAg
ICAgSW5saW5lTGF5b3V0VW5pdCBtX2NsZWFyR2FwQWZ0ZXJMYXN0TGluZSB7IDAuZiB9OwogICAg
IElubGluZUxheW91dFVuaXQgbV9maXJzdExpbmVTdGFydFRyaW1Gb3JJbml0aWFsTGV0dGVyIHsg
MC5mIH07Ci0gICAgc3RkOjpvcHRpb25hbDxzaXplX3Q+IG1fY2xhbXBlZExpbmVJbmRleCB7IH07
CisgICAgc3RkOjpvcHRpb25hbDxzaXplX3Q+IG1fbGVnYWN5Q2xhbXBlZExpbmVJbmRleCB7IH07
CiAgICAgc3RkOjpvcHRpb25hbDxzaXplX3Q+IG1faHlwaGVuYXRpb25MaW1pdExpbmVzIHsgfTsK
ICAgICBzaXplX3QgbV9zdWNjZXNzaXZlSHlwaGVuYXRlZExpbmVDb3VudCB7IDAgfTsKICAgICAv
LyBGSVhNRTogVGhpcyBpcyByZXF1aXJlZCBieSB0aGUgaW50ZWdhcmF0aW9uIGNvZGVwYXRoLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxp
bmUvZGlzcGxheS9JbmxpbmVEaXNwbGF5TGluZS5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zv
cm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvZGlzcGxheS9JbmxpbmVEaXNwbGF5TGluZS5oCmluZGV4
IDgyZDUwMzVkMGM5Ny4uMDg3ZTE5MzM3MGMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9kaXNwbGF5L0lubGluZURpc3BsYXlMaW5l
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUv
ZGlzcGxheS9JbmxpbmVEaXNwbGF5TGluZS5oCkBAIC03NCwxMyArNzQsNiBAQCBwdWJsaWM6CiAg
ICAgYm9vbCBpc0hvcml6b250YWwoKSBjb25zdCB7IHJldHVybiBtX2lzSG9yaXpvbnRhbDsgfQog
ICAgIGJvb2wgaXNMZWZ0VG9SaWdodElubGluZURpcmVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1f
aXNMZWZ0VG9SaWdodERpcmVjdGlvbjsgfQogCi0gICAgYm9vbCBpc0Z1bGx5VHJ1bmNhdGVkSW5C
bG9ja0RpcmVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNGdWxseVRydW5jYXRlZEluQmxvY2tE
aXJlY3Rpb247IH0KLQotICAgIGJvb2wgaGFzRWxsaXBzaXMoKSBjb25zdCB7IHJldHVybiBtX2Vs
bGlwc2lzVmlzdWFsUmVjdC5oYXNfdmFsdWUoKTsgfQotICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRS
ZWN0PiBlbGxpcHNpc1Zpc3VhbFJlY3QoKSBjb25zdCB7IHJldHVybiBtX2VsbGlwc2lzVmlzdWFs
UmVjdDsgfQotICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBub3QgYmUgcGFydCBvZiBMaW5lLgot
ICAgIFRleHRSdW4gZWxsaXBzaXNUZXh0KCkgY29uc3QgeyByZXR1cm4gVGV4dFJ1biB7IExheW91
dDo6VGV4dFV0aWw6OmVsbGlwc2lzVGV4dFJ1bihpc0hvcml6b250YWwoKSkgfTsgfQotCiAgICAg
ZmxvYXQgY29udGVudExvZ2ljYWxMZWZ0KCkgY29uc3QgeyByZXR1cm4gbV9jb250ZW50TG9naWNh
bExlZnQ7IH0KICAgICAvLyBUaGlzIGlzICJ2aXN1YWwiIGxlZnQgaW4gaW5saW5lIGRpcmVjdGlv
biAoaXQgaXMgc3RpbGwgY29uc2lkZXJlZCBsb2dpY2FsIGFzIHRoZXJlJ3Mgbm8gZmxpcCBmb3Ig
d3JpdGluZyBtb2RlKS4KICAgICBmbG9hdCBjb250ZW50TG9naWNhbExlZnRJZ25vcmluZ0lubGlu
ZURpcmVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fY29udGVudExvZ2ljYWxMZWZ0SWdub3JpbmdJ
bmxpbmVEaXJlY3Rpb247IH0KQEAgLTkyLDcgKzg1LDE4IEBAIHB1YmxpYzoKICAgICBib29sIGlz
Rmlyc3RBZnRlclBhZ2VCcmVhaygpIGNvbnN0IHsgcmV0dXJuIG1faXNGaXJzdEFmdGVyUGFnZUJy
ZWFrOyB9CiAKICAgICB2b2lkIG1vdmVJbkJsb2NrRGlyZWN0aW9uKGZsb2F0IG9mZnNldCwgYm9v
bCBpc0hvcml6b250YWxXcml0aW5nTW9kZSk7Ci0gICAgdm9pZCBzZXRFbGxpcHNpc1Zpc3VhbFJl
Y3QoY29uc3QgRmxvYXRSZWN0JiBlbGxpcHNpc1Zpc3VhbFJlY3QpIHsgbV9lbGxpcHNpc1Zpc3Vh
bFJlY3QgPSBlbGxpcHNpc1Zpc3VhbFJlY3Q7IH0KKyAgICBzdHJ1Y3QgRWxsaXBzaXMgeworICAg
ICAgICBlbnVtIGNsYXNzIFR5cGUgOiB1aW50OF90IHsgSW5saW5lLCBCbG9jayB9OworICAgICAg
ICBUeXBlIHR5cGUgeyBUeXBlOjpJbmxpbmUgfTsKKyAgICAgICAgLy8gVGhpcyBpcyB2aXN1YWwg
cmVjdCBpZ25vcmluZyBibG9jayBkaXJlY3Rpb24uCisgICAgICAgIEZsb2F0UmVjdCB2aXN1YWxS
ZWN0OworICAgICAgICBBdG9tU3RyaW5nIHRleHQ7CisgICAgfTsKKyAgICB2b2lkIHNldEVsbGlw
c2lzKGNvbnN0IEVsbGlwc2lzJiBlbGxpcHNpcykgeyBtX2VsbGlwc2lzID0gZWxsaXBzaXM7IH0K
KyAgICBzdGQ6Om9wdGlvbmFsPEVsbGlwc2lzPiBlbGxpcHNpcygpIGNvbnN0IHsgcmV0dXJuIG1f
ZWxsaXBzaXM7IH0KKyAgICBib29sIGhhc0VsbGlwc2lzKCkgY29uc3QgeyByZXR1cm4gISFtX2Vs
bGlwc2lzOyB9CisKKyAgICBib29sIGlzRnVsbHlUcnVuY2F0ZWRJbkJsb2NrRGlyZWN0aW9uKCkg
Y29uc3QgeyByZXR1cm4gbV9pc0Z1bGx5VHJ1bmNhdGVkSW5CbG9ja0RpcmVjdGlvbjsgfQogCiAg
ICAgYm9vbCBoYXNDb250ZW50QWZ0ZXJFbGxpcHNpc0JveCgpIGNvbnN0IHsgcmV0dXJuIG1faGFz
Q29udGVudEFmdGVyRWxsaXBzaXNCb3g7IH0KICAgICB2b2lkIHNldEhhc0NvbnRlbnRBZnRlckVs
bGlwc2lzQm94KCkgeyBtX2hhc0NvbnRlbnRBZnRlckVsbGlwc2lzQm94ID0gdHJ1ZTsgfQpAQCAt
MTMxLDggKzEzNSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2lzRmlyc3RBZnRlclBhZ2VCcmVh
ayA6IDEgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9pc0Z1bGx5VHJ1bmNhdGVkSW5CbG9ja0RpcmVj
dGlvbiA6IDEgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9oYXNDb250ZW50QWZ0ZXJFbGxpcHNpc0Jv
eCA6IDEgeyBmYWxzZSB9OwotICAgIC8vIFRoaXMgaXMgdmlzdWFsIHJlY3QgaWdub3JpbmcgYmxv
Y2sgZGlyZWN0aW9uLgotICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBtX2VsbGlwc2lzVmlz
dWFsUmVjdCB7IH07CisgICAgc3RkOjpvcHRpb25hbDxFbGxpcHNpcz4gbV9lbGxpcHNpcyB7IH07
CiB9OwogCiBpbmxpbmUgTGluZTo6TGluZShjb25zdCBGbG9hdFJlY3QmIGxpbmVCb3hMb2dpY2Fs
UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBsaW5lQm94UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBjb250
ZW50T3ZlcmZsb3csIEVuY2xvc2luZ1RvcEFuZEJvdHRvbSBlbmNsb3NpbmdMb2dpY2FsVG9wQW5k
Qm90dG9tLCBmbG9hdCBhbGlnbm1lbnRCYXNlbGluZSwgRm9udEJhc2VsaW5lIGJhc2VsaW5lVHlw
ZSwgZmxvYXQgY29udGVudExvZ2ljYWxMZWZ0LCBmbG9hdCBjb250ZW50TG9naWNhbExlZnRJZ25v
cmluZ0lubGluZURpcmVjdGlvbiwgZmxvYXQgY29udGVudExvZ2ljYWxXaWR0aCwgYm9vbCBpc0xl
ZnRUb1JpZ2h0RGlyZWN0aW9uLCBib29sIGlzSG9yaXpvbnRhbCwgYm9vbCBpc1RydW5jYXRlZElu
QmxvY2tEaXJlY3Rpb24pCkBAIC0xNjQsOCArMTY3LDggQEAgaW5saW5lIHZvaWQgTGluZTo6bW92
ZUluQmxvY2tEaXJlY3Rpb24oZmxvYXQgb2Zmc2V0LCBib29sIGlzSG9yaXpvbnRhbFdyaXRpbmdN
b2QKICAgICBtX3Njcm9sbGFibGVPdmVyZmxvdy5tb3ZlKHBoeXNpY2FsT2Zmc2V0KTsKICAgICBt
X2NvbnRlbnRPdmVyZmxvdy5tb3ZlKHBoeXNpY2FsT2Zmc2V0KTsKICAgICBtX2lua092ZXJmbG93
Lm1vdmUocGh5c2ljYWxPZmZzZXQpOwotICAgIGlmIChtX2VsbGlwc2lzVmlzdWFsUmVjdC5oYXNf
dmFsdWUoKSkKLSAgICAgICAgbV9lbGxpcHNpc1Zpc3VhbFJlY3QtPm1vdmUocGh5c2ljYWxPZmZz
ZXQpOworICAgIGlmIChtX2VsbGlwc2lzKQorICAgICAgICBtX2VsbGlwc2lzLT52aXN1YWxSZWN0
Lm1vdmUocGh5c2ljYWxPZmZzZXQpOwogCiAgICAgbV9saW5lQm94TG9naWNhbFJlY3QubW92ZSh7
IHsgfSwgb2Zmc2V0IH0pOwogICAgIG1fZW5jbG9zaW5nTG9naWNhbFRvcEFuZEJvdHRvbS50b3Ag
Kz0gb2Zmc2V0OwpAQCAtMTc5LDEwICsxODIsMTAgQEAgaW5saW5lIEZsb2F0UmVjdCBMaW5lOjp2
aXNpYmxlUmVjdElnbm9yaW5nQmxvY2tEaXJlY3Rpb24oKSBjb25zdAogICAgIGlmICghaGFzRWxs
aXBzaXMoKSB8fCBoYXNDb250ZW50QWZ0ZXJFbGxpcHNpc0JveCgpKQogICAgICAgICByZXR1cm4g
bV9pbmtPdmVyZmxvdzsKICAgICBpZiAobV9pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKSB7Ci0gICAg
ICAgIGF1dG8gdmlzaWJsZUxpbmVCb3hSaWdodCA9IHN0ZDo6bWluKG1fbGluZUJveFJlY3QubWF4
WCgpLCBtX2VsbGlwc2lzVmlzdWFsUmVjdC0+bWF4WCgpKTsKKyAgICAgICAgYXV0byB2aXNpYmxl
TGluZUJveFJpZ2h0ID0gc3RkOjptaW4obV9saW5lQm94UmVjdC5tYXhYKCksIG1fZWxsaXBzaXMt
PnZpc3VhbFJlY3QubWF4WCgpKTsKICAgICAgICAgcmV0dXJuIHsgbV9saW5lQm94UmVjdC5sb2Nh
dGlvbigpLCBGbG9hdFBvaW50IHsgdmlzaWJsZUxpbmVCb3hSaWdodCwgbV9saW5lQm94UmVjdC5t
YXhZKCkgfSB9OwogICAgIH0KLSAgICBhdXRvIHZpc2libGVMaW5lQm94TGVmdCA9IHN0ZDo6bWF4
KG1fbGluZUJveFJlY3QueCgpLCBtX2VsbGlwc2lzVmlzdWFsUmVjdC0+eCgpKTsKKyAgICBhdXRv
IHZpc2libGVMaW5lQm94TGVmdCA9IHN0ZDo6bWF4KG1fbGluZUJveFJlY3QueCgpLCBtX2VsbGlw
c2lzLT52aXN1YWxSZWN0LngoKSk7CiAgICAgcmV0dXJuIHsgRmxvYXRQb2ludCB7IHZpc2libGVM
aW5lQm94TGVmdCwgbV9saW5lQm94UmVjdC55KCkgfSwgRmxvYXRQb2ludCB7IG1fbGluZUJveFJl
Y3QubWF4WCgpLCBtX2xpbmVCb3hSZWN0Lm1heFkoKSB9IH07CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL2Rpc3BsYXkvSW5s
aW5lRGlzcGxheUxpbmVCdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0
aW5nQ29udGV4dHMvaW5saW5lL2Rpc3BsYXkvSW5saW5lRGlzcGxheUxpbmVCdWlsZGVyLmNwcApp
bmRleCBkMzZkNjRmNzMyYjQuLjNkNTc4NmE4NDQyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvZGlzcGxheS9JbmxpbmVEaXNwbGF5
TGluZUJ1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29u
dGV4dHMvaW5saW5lL2Rpc3BsYXkvSW5saW5lRGlzcGxheUxpbmVCdWlsZGVyLmNwcApAQCAtMjg0
LDMxICsyODQsMjUgQEAgc3RhdGljIGZsb2F0IHRydW5jYXRlT3ZlcmZsb3dpbmdEaXNwbGF5Qm94
ZXMoSW5saW5lRGlzcGxheTo6Qm94ZXMmIGJveGVzLCBzaXplX3QKICAgICByZXR1cm4gdHJ1bmNh
dGVMZWZ0LnZhbHVlX29yKGxlZnQoYm94ZXMuZmlyc3QoKSkpIC0gZWxsaXBzaXNXaWR0aDsKIH0K
IAotc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+IElubGluZURpc3BsYXlMaW5lQnVpbGRlcjo6dHJh
aWxpbmdFbGxpcHNpc1Zpc3VhbFJlY3RBZnRlclRydW5jYXRpb24oTGluZUVuZGluZ1RydW5jYXRp
b25Qb2xpY3kgbGluZUVuZGluZ1RydW5jYXRpb25Qb2xpY3ksIGNvbnN0IElubGluZURpc3BsYXk6
OkxpbmUmIGRpc3BsYXlMaW5lLCBJbmxpbmVEaXNwbGF5OjpCb3hlcyYgZGlzcGxheUJveGVzLCBi
b29sIGlzTGFzdExpbmVXaXRoSW5saW5lQ29udGVudCkKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPEZs
b2F0UmVjdD4gdHJhaWxpbmdFbGxpcHNpc1Zpc3VhbFJlY3RBZnRlclRydW5jYXRpb24oTGluZUVu
ZGluZ1RydW5jYXRpb25Qb2xpY3kgbGluZUVuZGluZ1RydW5jYXRpb25Qb2xpY3ksIFN0cmluZyBl
bGxpcHNpc1RleHQsIGNvbnN0IElubGluZURpc3BsYXk6OkxpbmUmIGRpc3BsYXlMaW5lLCBJbmxp
bmVEaXNwbGF5OjpCb3hlcyYgZGlzcGxheUJveGVzLCBib29sIGlzTGFzdExpbmVXaXRoSW5saW5l
Q29udGVudCkKIHsKKyAgICBBU1NFUlQobGluZUVuZGluZ1RydW5jYXRpb25Qb2xpY3kgIT0gTGlu
ZUVuZGluZ1RydW5jYXRpb25Qb2xpY3k6Ok5vVHJ1bmNhdGlvbik7CiAgICAgaWYgKGRpc3BsYXlC
b3hlcy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiB7IH07CiAKLSAgICBhdXRvIGlzVHJ1bmNh
dGVkQXBwbGljYWJsZSA9IFsmXSB7Ci0gICAgICAgIHN3aXRjaCAobGluZUVuZGluZ1RydW5jYXRp
b25Qb2xpY3kpIHsKLSAgICAgICAgY2FzZSBMaW5lRW5kaW5nVHJ1bmNhdGlvblBvbGljeTo6Tm9U
cnVuY2F0aW9uOgotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBjYXNlIExpbmVF
bmRpbmdUcnVuY2F0aW9uUG9saWN5OjpXaGVuQ29udGVudE92ZXJmbG93c0luSW5saW5lRGlyZWN0
aW9uOgorICAgIGF1dG8gbmVlZHNFbGxpcHNpcyA9IFsmXSB7CisgICAgICAgIGlmIChsaW5lRW5k
aW5nVHJ1bmNhdGlvblBvbGljeSA9PSBMaW5lRW5kaW5nVHJ1bmNhdGlvblBvbGljeTo6V2hlbkNv
bnRlbnRPdmVyZmxvd3NJbklubGluZURpcmVjdGlvbikKICAgICAgICAgICAgIHJldHVybiBkaXNw
bGF5TGluZS5jb250ZW50TG9naWNhbFdpZHRoKCkgJiYgZGlzcGxheUxpbmUuY29udGVudExvZ2lj
YWxXaWR0aCgpID4gZGlzcGxheUxpbmUubGluZUJveExvZ2ljYWxSZWN0KCkud2lkdGgoKTsKLSAg
ICAgICAgY2FzZSBMaW5lRW5kaW5nVHJ1bmNhdGlvblBvbGljeTo6V2hlbkNvbnRlbnRPdmVyZmxv
d3NJbkJsb2NrRGlyZWN0aW9uOgotICAgICAgICAgICAgcmV0dXJuICFpc0xhc3RMaW5lV2l0aElu
bGluZUNvbnRlbnQ7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQorICAgICAgICBB
U1NFUlQobGluZUVuZGluZ1RydW5jYXRpb25Qb2xpY3kgPT0gTGluZUVuZGluZ1RydW5jYXRpb25Q
b2xpY3k6OldoZW5Db250ZW50T3ZlcmZsb3dzSW5CbG9ja0RpcmVjdGlvbik7CisgICAgICAgIHJl
dHVybiAhaXNMYXN0TGluZVdpdGhJbmxpbmVDb250ZW50OwogICAgIH07Ci0gICAgaWYgKCFpc1Ry
dW5jYXRlZEFwcGxpY2FibGUoKSkKKyAgICBpZiAoIW5lZWRzRWxsaXBzaXMoKSkKICAgICAgICAg
cmV0dXJuIHsgfTsKIAogICAgIEFTU0VSVChkaXNwbGF5Qm94ZXNbMF0uaXNSb290SW5saW5lQm94
KCkpOwogICAgIGF1dG8mIHJvb3RJbmxpbmVCb3ggPSBkaXNwbGF5Qm94ZXNbMF07CiAgICAgYXV0
byYgcm9vdFN0eWxlID0gcm9vdElubGluZUJveC5zdHlsZSgpOwotICAgIGF1dG8gZWxsaXBzaXNX
aWR0aCA9IHN0ZDo6bWF4KDAuZiwgcm9vdFN0eWxlLmZvbnRDYXNjYWRlKCkud2lkdGgoVGV4dFV0
aWw6OmVsbGlwc2lzVGV4dFJ1bigpKSk7CisgICAgYXV0byBlbGxpcHNpc1dpZHRoID0gc3RkOjpt
YXgoMC5mLCByb290U3R5bGUuZm9udENhc2NhZGUoKS53aWR0aChUZXh0UnVuIHsgZWxsaXBzaXNU
ZXh0IH0pKTsKIAogICAgIGF1dG8gY29udGVudE5lZWRzVHJ1bmNhdGlvbiA9IFsmXSB7CiAgICAg
ICAgIHN3aXRjaCAobGluZUVuZGluZ1RydW5jYXRpb25Qb2xpY3kpIHsKQEAgLTM2NCw3ICszNTgs
NyBAQCBzdGF0aWMgY29uc3RleHByIGludCBsZWdhY3lNYXRjaGluZ0xpbmtCb3hPZmZzZXQgPSAz
Owogc3RhdGljIGlubGluZSB2b2lkIG1ha2VSb29tRm9yTGlua0JveE9uQ2xhbXBlZExpbmVJZk5l
ZWRlZChhdXRvJiBjbGFtcGVkTGluZSwgYXV0byYgZGlzcGxheUJveGVzLCBhdXRvIGluc2VydGlv
blBvc2l0aW9uLCBhdXRvIGxpbmtDb250ZW50V2lkdGgpCiB7CiAgICAgQVNTRVJUKGluc2VydGlv
blBvc2l0aW9uKTsKLSAgICBhdXRvIGVsbGlwc2lzQm94UmVjdCA9ICpjbGFtcGVkTGluZS5lbGxp
cHNpc1Zpc3VhbFJlY3QoKTsKKyAgICBhdXRvIGVsbGlwc2lzQm94UmVjdCA9IGNsYW1wZWRMaW5l
LmVsbGlwc2lzKCktPnZpc3VhbFJlY3Q7CiAgICAgaWYgKGVsbGlwc2lzQm94UmVjdC5tYXhYKCkg
KyBsaW5rQ29udGVudFdpZHRoIDw9IGNsYW1wZWRMaW5lLnJpZ2h0KCkpCiAgICAgICAgIHJldHVy
bjsKICAgICBhdXRvJiByb290U3R5bGUgPSBkaXNwbGF5Qm94ZXNbMF0ubGF5b3V0Qm94KCkuc3R5
bGUoKTsKQEAgLTM4MiwxOSArMzc2LDE5IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBtYWtlUm9vbUZv
ckxpbmtCb3hPbkNsYW1wZWRMaW5lSWZOZWVkZWQoYXV0byYgY2xhbXBlZExpbmUsIGF1CiAgICAg
YXV0byBlbGxpc3BzaXNQb3NpdGlvbiA9IGNsYW1wZWRMaW5lLnJpZ2h0KCkgLSBsaW5rQ29udGVu
dFdpZHRoIC0gbGVnYWN5TWF0Y2hpbmdMaW5rQm94T2Zmc2V0OwogICAgIGF1dG8gZWxsaXBzaXNT
dGFydCA9IHRydW5jYXRlT3ZlcmZsb3dpbmdEaXNwbGF5Qm94ZXMoZGlzcGxheUJveGVzLCBzdGFy
dEluZGV4KCksIGVuZEluZGV4LCBjbGFtcGVkTGluZS5sZWZ0KCksIGVsbGlzcHNpc1Bvc2l0aW9u
LCBlbGxpcHNpc0JveFJlY3Qud2lkdGgoKSwgcm9vdFN0eWxlLCBMaW5lRW5kaW5nVHJ1bmNhdGlv
blBvbGljeTo6V2hlbkNvbnRlbnRPdmVyZmxvd3NJbkJsb2NrRGlyZWN0aW9uKTsKICAgICBlbGxp
cHNpc0JveFJlY3Quc2V0WChlbGxpcHNpc1N0YXJ0KTsKLSAgICBjbGFtcGVkTGluZS5zZXRFbGxp
cHNpc1Zpc3VhbFJlY3QoZWxsaXBzaXNCb3hSZWN0KTsKKyAgICBjbGFtcGVkTGluZS5zZXRFbGxp
cHNpcyh7IElubGluZURpc3BsYXk6OkxpbmU6OkVsbGlwc2lzOjpUeXBlOjpCbG9jaywgZWxsaXBz
aXNCb3hSZWN0LCBUZXh0VXRpbDo6ZWxsaXBzaXNUZXh0SW5JbmxpbmVEaXJlY3Rpb24oY2xhbXBl
ZExpbmUuaXNIb3Jpem9udGFsKCkpIH0pOwogfQogCiBzdGF0aWMgaW5saW5lIHZvaWQgbW92ZURp
c3BsYXlCb3hUb0NsYW1wZWRMaW5lKGF1dG8mIGRpc3BsYXlMaW5lcywgYXV0byBjbGFtcGVkTGlu
ZUluZGV4LCBhdXRvJiBkaXNwbGF5Qm94LCBhdXRvIGhvcml6b250YWxPZmZzZXQpCiB7CiAgICAg
YXV0byYgY2xhbXBlZExpbmUgPSBkaXNwbGF5TGluZXNbY2xhbXBlZExpbmVJbmRleF07Ci0gICAg
ZGlzcGxheUJveC5zZXRMZWZ0KGNsYW1wZWRMaW5lLmVsbGlwc2lzVmlzdWFsUmVjdCgpLT5tYXhY
KCkgKyBob3Jpem9udGFsT2Zmc2V0ICsgbGVnYWN5TWF0Y2hpbmdMaW5rQm94T2Zmc2V0KTsKKyAg
ICBkaXNwbGF5Qm94LnNldExlZnQoY2xhbXBlZExpbmUuZWxsaXBzaXMoKS0+dmlzdWFsUmVjdC5t
YXhYKCkgKyBob3Jpem9udGFsT2Zmc2V0ICsgbGVnYWN5TWF0Y2hpbmdMaW5rQm94T2Zmc2V0KTsK
ICAgICAvLyBBc3N1bWUgYmFzZWxpbmUgYWxpZ25tZW50IGhlcmUuCiAgICAgZGlzcGxheUJveC5t
b3ZlVmVydGljYWxseSgoY2xhbXBlZExpbmUudG9wKCkgKyBjbGFtcGVkTGluZS5iYXNlbGluZSgp
KSAtIChkaXNwbGF5TGluZXMubGFzdCgpLnRvcCgpICsgZGlzcGxheUxpbmVzLmxhc3QoKS5iYXNl
bGluZSgpKSk7CiAgICAgZGlzcGxheUJveC5tb3ZlVG9MaW5lKGNsYW1wZWRMaW5lSW5kZXgpOwog
fQogCi12b2lkIElubGluZURpc3BsYXlMaW5lQnVpbGRlcjo6YWRkTGluZUNsYW1wVHJhaWxpbmdM
aW5rQm94SWZBcHBsaWNhYmxlKGNvbnN0IElubGluZUZvcm1hdHRpbmdDb250ZXh0JiBpbmxpbmVG
b3JtYXR0aW5nQ29udGV4dCwgY29uc3QgSW5saW5lTGF5b3V0U3RhdGUmIGlubGluZUxheW91dFN0
YXRlLCBJbmxpbmVEaXNwbGF5OjpDb250ZW50JiBkaXNwbGF5Q29udGVudCkKK3ZvaWQgSW5saW5l
RGlzcGxheUxpbmVCdWlsZGVyOjphZGRMZWdhY3lMaW5lQ2xhbXBUcmFpbGluZ0xpbmtCb3hJZkFw
cGxpY2FibGUoY29uc3QgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQmIGlubGluZUZvcm1hdHRpbmdD
b250ZXh0LCBjb25zdCBJbmxpbmVMYXlvdXRTdGF0ZSYgaW5saW5lTGF5b3V0U3RhdGUsIElubGlu
ZURpc3BsYXk6OkNvbnRlbnQmIGRpc3BsYXlDb250ZW50KQogewogICAgIC8vIFRoaXMgaXMgbGlu
ay1ib3ggdHlwZSBvZiBsaW5lIGNsYW1waW5nICgtd2Via2l0LWxpbmUtY2xhbXApIHdoZXJlIHdl
IGNoZWNrIGlmIHRoZSBpbmxpbmUgY29udGVudCBlbmRzIGluIGEgbGluawogICAgIC8vIGFuZCBt
b3ZlIHN1Y2ggbGluayBjb250ZW50IG5leHQgdG8gdGhlIGNsYW1wZWQgbGluZSdzIHRyYWlsaW5n
IGVsbGlzcHNpcy4gSXQgaXMgbWVhbnQgdG8gcHJvZHVjZSB0aGUgZm9sbG93aW5nIHJlbmRlcmlu
ZwpAQCAtNDA3LDcgKzQwMSw3IEBAIHZvaWQgSW5saW5lRGlzcGxheUxpbmVCdWlsZGVyOjphZGRM
aW5lQ2xhbXBUcmFpbGluZ0xpbmtCb3hJZkFwcGxpY2FibGUoY29uc3QgSW5sCiAgICAgLy8gYXQg
aHR0cHM6Ly9jb21taXRzLndlYmtpdC5vcmcvNjA4NkBtYWluIHRvIHN1cHBvcnQgc3BlY2lhbCBh
cnRpY2xlIHJlbmRlcmluZyB3aXRoIGNsYW1wZWQgbGluZXMuCiAgICAgLy8gSXQgc3VwcG9ydHMg
aG9yaXpvbnRhbCwgbGVmdC10by1yaWdodCBjb250ZW50IG9ubHkgd2hlcmUgdGhlIGxpbmsgaW5s
aW5lIGJveCBoYXMgKG5vbi1zcGxpdCkgdGV4dCBjb250ZW50IGFuZCB3aGVuCiAgICAgLy8gdGhl
IGxpbmsgY29udGVudCAoJ21vcmUgaW5mbycpIGZpdHMgdGhlIGNsYW1wZWQgbGluZS4KLSAgICBh
dXRvIGNsYW1wZWRMaW5lSW5kZXggPSBpbmxpbmVMYXlvdXRTdGF0ZS5jbGFtcGVkTGluZUluZGV4
KCk7CisgICAgYXV0byBjbGFtcGVkTGluZUluZGV4ID0gaW5saW5lTGF5b3V0U3RhdGUubGVnYWN5
Q2xhbXBlZExpbmVJbmRleCgpOwogICAgIGlmICghY2xhbXBlZExpbmVJbmRleCkKICAgICAgICAg
cmV0dXJuOwogICAgIGF1dG8mIGRpc3BsYXlMaW5lcyA9IGRpc3BsYXlDb250ZW50LmxpbmVzOwpA
QCAtNDY2LDYgKzQ2MCwzMSBAQCB2b2lkIElubGluZURpc3BsYXlMaW5lQnVpbGRlcjo6YWRkTGlu
ZUNsYW1wVHJhaWxpbmdMaW5rQm94SWZBcHBsaWNhYmxlKGNvbnN0IElubAogICAgIGNsYW1wZWRM
aW5lLnNldEhhc0NvbnRlbnRBZnRlckVsbGlwc2lzQm94KCk7CiB9CiAKK3ZvaWQgSW5saW5lRGlz
cGxheUxpbmVCdWlsZGVyOjphcHBseUVsbGlwc2lzSWZOZWVkZWQoTGluZUVuZGluZ1RydW5jYXRp
b25Qb2xpY3kgdHJ1bmNhdGlvblBvbGljeSwgSW5saW5lRGlzcGxheTo6TGluZSYgZGlzcGxheUxp
bmUsIElubGluZURpc3BsYXk6OkJveGVzJiBkaXNwbGF5Qm94ZXMsIGJvb2wgaXNMYXN0TGluZVdp
dGhJbmxpbmVDb250ZW50LCBib29sIGlzTGVnYWN5TGluZUNsYW1wKQoreworICAgIGlmICh0cnVu
Y2F0aW9uUG9saWN5ID09IExpbmVFbmRpbmdUcnVuY2F0aW9uUG9saWN5OjpOb1RydW5jYXRpb24g
fHwgIWRpc3BsYXlCb3hlcy5zaXplKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gZWxs
aXBzaXNUZXh0ID0gWyZdIHsKKyAgICAgICAgaWYgKHRydW5jYXRpb25Qb2xpY3kgPT0gTGluZUVu
ZGluZ1RydW5jYXRpb25Qb2xpY3k6OldoZW5Db250ZW50T3ZlcmZsb3dzSW5JbmxpbmVEaXJlY3Rp
b24gfHwgaXNMZWdhY3lMaW5lQ2xhbXApIHsKKyAgICAgICAgICAgIC8vIExlZ2FjeSBsaW5lIGNs
YW1wIGFsd2F5cyB1c2VzIC4uLgorICAgICAgICAgICAgcmV0dXJuIFRleHRVdGlsOjplbGxpcHNp
c1RleHRJbklubGluZURpcmVjdGlvbihkaXNwbGF5TGluZS5pc0hvcml6b250YWwoKSk7CisgICAg
ICAgIH0KKyAgICAgICAgYXV0byYgYmxvY2tFbGxpcHNpcyA9IGRpc3BsYXlCb3hlc1swXS5sYXlv
dXRCb3goKS5zdHlsZSgpLmJsb2NrRWxsaXBzaXMoKTsKKyAgICAgICAgaWYgKGJsb2NrRWxsaXBz
aXMudHlwZSA9PSBCbG9ja0VsbGlwc2lzOjpUeXBlOjpOb25lKQorICAgICAgICAgICAgcmV0dXJu
IG51bGxBdG9tKCk7CisgICAgICAgIGlmIChibG9ja0VsbGlwc2lzLnR5cGUgPT0gQmxvY2tFbGxp
cHNpczo6VHlwZTo6QXV0bykKKyAgICAgICAgICAgIHJldHVybiBUZXh0VXRpbDo6ZWxsaXBzaXNU
ZXh0SW5JbmxpbmVEaXJlY3Rpb24oZGlzcGxheUxpbmUuaXNIb3Jpem9udGFsKCkpOworICAgICAg
ICByZXR1cm4gYmxvY2tFbGxpcHNpcy5zdHJpbmc7CisgICAgfSgpOworCisgICAgaWYgKGVsbGlw
c2lzVGV4dC5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKGF1dG8gZWxsaXBz
aXNSZWN0ID0gdHJhaWxpbmdFbGxpcHNpc1Zpc3VhbFJlY3RBZnRlclRydW5jYXRpb24odHJ1bmNh
dGlvblBvbGljeSwgZWxsaXBzaXNUZXh0LCBkaXNwbGF5TGluZSwgZGlzcGxheUJveGVzLCBpc0xh
c3RMaW5lV2l0aElubGluZUNvbnRlbnQpKQorICAgICAgICBkaXNwbGF5TGluZS5zZXRFbGxpcHNp
cyh7IHRydW5jYXRpb25Qb2xpY3kgPT0gTGluZUVuZGluZ1RydW5jYXRpb25Qb2xpY3k6OldoZW5D
b250ZW50T3ZlcmZsb3dzSW5JbmxpbmVEaXJlY3Rpb24gPyBJbmxpbmVEaXNwbGF5OjpMaW5lOjpF
bGxpcHNpczo6VHlwZTo6SW5saW5lIDogSW5saW5lRGlzcGxheTo6TGluZTo6RWxsaXBzaXM6OlR5
cGU6OkJsb2NrLCAqZWxsaXBzaXNSZWN0LCBlbGxpcHNpc1RleHQgfSk7Cit9CisKIH0KIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxp
bmUvZGlzcGxheS9JbmxpbmVEaXNwbGF5TGluZUJ1aWxkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL2Rpc3BsYXkvSW5saW5lRGlzcGxheUxpbmVC
dWlsZGVyLmgKaW5kZXggY2IxMDlhZTkxYjc4Li5kZjY5MTUwY2Y5MDkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL2Rpc3BsYXkvSW5s
aW5lRGlzcGxheUxpbmVCdWlsZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1h
dHRpbmdDb250ZXh0cy9pbmxpbmUvZGlzcGxheS9JbmxpbmVEaXNwbGF5TGluZUJ1aWxkZXIuaApA
QCAtNDEsOCArNDEsOCBAQCBwdWJsaWM6CiAKICAgICBJbmxpbmVEaXNwbGF5OjpMaW5lIGJ1aWxk
KGNvbnN0IExpbmVMYXlvdXRSZXN1bHQmLCBjb25zdCBMaW5lQm94JiwgYm9vbCBsaW5lSXNGdWxs
eVRydW5jYXRlZEluQmxvY2tEaXJlY3Rpb24pIGNvbnN0OwogCi0gICAgc3RhdGljIHN0ZDo6b3B0
aW9uYWw8RmxvYXRSZWN0PiB0cmFpbGluZ0VsbGlwc2lzVmlzdWFsUmVjdEFmdGVyVHJ1bmNhdGlv
bihMaW5lRW5kaW5nVHJ1bmNhdGlvblBvbGljeSwgY29uc3QgSW5saW5lRGlzcGxheTo6TGluZSYs
IElubGluZURpc3BsYXk6OkJveGVzJiwgYm9vbCBpc0xhc3RMaW5lV2l0aElubGluZUNvbnRlbnQp
OwotICAgIHN0YXRpYyB2b2lkIGFkZExpbmVDbGFtcFRyYWlsaW5nTGlua0JveElmQXBwbGljYWJs
ZShjb25zdCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dCYsIGNvbnN0IElubGluZUxheW91dFN0YXRl
JiwgSW5saW5lRGlzcGxheTo6Q29udGVudCYpOworICAgIHN0YXRpYyB2b2lkIGFwcGx5RWxsaXBz
aXNJZk5lZWRlZChMaW5lRW5kaW5nVHJ1bmNhdGlvblBvbGljeSwgSW5saW5lRGlzcGxheTo6TGlu
ZSYsIElubGluZURpc3BsYXk6OkJveGVzJiwgYm9vbCBpc0xhc3RMaW5lV2l0aElubGluZUNvbnRl
bnQsIGJvb2wgaXNMZWdhY3lMaW5lQ2xhbXApOworICAgIHN0YXRpYyB2b2lkIGFkZExlZ2FjeUxp
bmVDbGFtcFRyYWlsaW5nTGlua0JveElmQXBwbGljYWJsZShjb25zdCBJbmxpbmVGb3JtYXR0aW5n
Q29udGV4dCYsIGNvbnN0IElubGluZUxheW91dFN0YXRlJiwgSW5saW5lRGlzcGxheTo6Q29udGVu
dCYpOwogCiBwcml2YXRlOgogICAgIHN0cnVjdCBFbmNsb3NpbmdMaW5lR2VvbWV0cnkgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUv
dGV4dC9UZXh0VXRpbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRl
eHRzL2lubGluZS90ZXh0L1RleHRVdGlsLmNwcAppbmRleCAwYWJhOWQzZGE2MTcuLjA2MDRkMzQ3
ZTQ4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0
cy9pbmxpbmUvdGV4dC9UZXh0VXRpbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zv
cm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvdGV4dC9UZXh0VXRpbC5jcHAKQEAgLTU3OCwxNCArNTc4
LDE0IEBAIFRleHREaXJlY3Rpb24gVGV4dFV0aWw6OmRpcmVjdGlvbkZvclRleHRDb250ZW50KFN0
cmluZ1ZpZXcgY29udGVudCkKICAgICByZXR1cm4gdWJpZGlfZ2V0QmFzZURpcmVjdGlvbihjaGFy
YWN0ZXJzLmRhdGEoKSwgY2hhcmFjdGVycy5zaXplKCkpID09IFVCSURJX1JUTCA/IFRleHREaXJl
Y3Rpb246OlJUTCA6IFRleHREaXJlY3Rpb246OkxUUjsKIH0KIAotVGV4dFJ1biBUZXh0VXRpbDo6
ZWxsaXBzaXNUZXh0UnVuKGJvb2wgaXNIb3Jpem9udGFsKQorQXRvbVN0cmluZyBUZXh0VXRpbDo6
ZWxsaXBzaXNUZXh0SW5JbmxpbmVEaXJlY3Rpb24oYm9vbCBpc0hvcml6b250YWwpCiB7CiAgICAg
aWYgKGlzSG9yaXpvbnRhbCkgewogICAgICAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJv
eWVkPGNvbnN0IEF0b21TdHJpbmc+IGhvcml6b250YWxFbGxpcHNpc1N0cihzcGFuKGhvcml6b250
YWxFbGxpcHNpcykpOwotICAgICAgICByZXR1cm4gVGV4dFJ1biB7IGhvcml6b250YWxFbGxpcHNp
c1N0ci0+c3RyaW5nKCkgfTsKKyAgICAgICAgcmV0dXJuIGhvcml6b250YWxFbGxpcHNpc1N0cjsK
ICAgICB9CiAgICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3Ry
aW5nPiB2ZXJ0aWNhbEVsbGlwc2lzU3RyKHNwYW4odmVydGljYWxFbGxpcHNpcykpOwotICAgIHJl
dHVybiBUZXh0UnVuIHsgdmVydGljYWxFbGxpcHNpc1N0ci0+c3RyaW5nKCkgfTsKKyAgICByZXR1
cm4gdmVydGljYWxFbGxpcHNpc1N0cjsKIH0KIAogYm9vbCBUZXh0VXRpbDo6aGFzSGFuZ2FibGVQ
dW5jdHVhdGlvblN0YXJ0KGNvbnN0IElubGluZVRleHRJdGVtJiBpbmxpbmVUZXh0SXRlbSwgY29u
c3QgUmVuZGVyU3R5bGUmIHN0eWxlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvdGV4dC9UZXh0VXRpbC5oIGIvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvdGV4dC9UZXh0VXRpbC5oCmluZGV4
IDFkZjBlN2I5MDQ2ZS4uNGEzZjg2YWM5OTkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS90ZXh0L1RleHRVdGlsLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvdGV4dC9UZXh0VXRp
bC5oCkBAIC04Nyw3ICs4Nyw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBpc1N0cm9uZ0Rp
cmVjdGlvbmFsaXR5Q2hhcmFjdGVyKGNoYXIzMl90KTsKICAgICBzdGF0aWMgYm9vbCBjb250YWlu
c1N0cm9uZ0RpcmVjdGlvbmFsaXR5VGV4dChTdHJpbmdWaWV3KTsKIAotICAgIHN0YXRpYyBUZXh0
UnVuIGVsbGlwc2lzVGV4dFJ1bihib29sIGlzSG9yaXpvbnRhbCA9IHRydWUpOworICAgIHN0YXRp
YyBBdG9tU3RyaW5nIGVsbGlwc2lzVGV4dEluSW5saW5lRGlyZWN0aW9uKGJvb2wgaXNIb3Jpem9u
dGFsID0gdHJ1ZSk7CiAKICAgICBzdGF0aWMgc2l6ZV90IGZpcnN0VXNlclBlcmNlaXZlZENoYXJh
Y3Rlckxlbmd0aChjb25zdCBJbmxpbmVUZXh0SXRlbSYpOwogICAgIHN0YXRpYyBzaXplX3QgZmly
c3RVc2VyUGVyY2VpdmVkQ2hhcmFjdGVyTGVuZ3RoKGNvbnN0IElubGluZVRleHRCb3gmLCBzaXpl
X3Qgc3RhcnRQb3NpdGlvbiwgc2l6ZV90IGxlbmd0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvaW50ZWdyYXRpb24vaW5saW5lL0lubGluZUl0ZXJhdG9yTGluZUJveE1vZGVy
blBhdGguaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9pbmxpbmUvSW5saW5l
SXRlcmF0b3JMaW5lQm94TW9kZXJuUGF0aC5oCmluZGV4IDBmNDEwZDFmODY4Mi4uZWMxNzZjZWJi
NGU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vaW5saW5l
L0lubGluZUl0ZXJhdG9yTGluZUJveE1vZGVyblBhdGguaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvaW50ZWdyYXRpb24vaW5saW5lL0lubGluZUl0ZXJhdG9yTGluZUJveE1vZGVyblBhdGgu
aApAQCAtNTgsOCArNTgsOCBAQCBwdWJsaWM6CiAgICAgZmxvYXQgc2Nyb2xsYWJsZU92ZXJmbG93
Qm90dG9tKCkgY29uc3QgeyByZXR1cm4gbGluZSgpLnNjcm9sbGFibGVPdmVyZmxvdygpLm1heFko
KTsgfQogCiAgICAgYm9vbCBoYXNFbGxpcHNpcygpIGNvbnN0IHsgcmV0dXJuIGxpbmUoKS5oYXNF
bGxpcHNpcygpOyB9Ci0gICAgRmxvYXRSZWN0IGVsbGlwc2lzVmlzdWFsUmVjdElnbm9yaW5nQmxv
Y2tEaXJlY3Rpb24oKSBjb25zdCB7IHJldHVybiAqbGluZSgpLmVsbGlwc2lzVmlzdWFsUmVjdCgp
OyB9Ci0gICAgVGV4dFJ1biBlbGxpcHNpc1RleHQoKSBjb25zdCB7IHJldHVybiBsaW5lKCkuZWxs
aXBzaXNUZXh0KCk7IH0KKyAgICBGbG9hdFJlY3QgZWxsaXBzaXNWaXN1YWxSZWN0SWdub3JpbmdC
bG9ja0RpcmVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIGxpbmUoKS5lbGxpcHNpcygpLT52aXN1YWxS
ZWN0OyB9CisgICAgVGV4dFJ1biBlbGxpcHNpc1RleHQoKSBjb25zdCB7IHJldHVybiBUZXh0UnVu
IHsgbGluZSgpLmVsbGlwc2lzKCktPnRleHQuc3RyaW5nKCkgfTsgfQogCiAgICAgZmxvYXQgY29u
dGVudExvZ2ljYWxUb3BBZGp1c3RlZEZvclByZWNlZGluZ0xpbmVCb3goKSBjb25zdAogICAgIHsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>472370</attachid>
            <date>2024-08-30 07:04:00 -0700</date>
            <delta_ts>2024-08-30 08:46:24 -0700</delta_ts>
            <desc>[fast-cq]Patch</desc>
            <filename>bug-278863-20240830070359.patch</filename>
            <type>text/plain</type>
            <size>24795</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">RnJvbSBkZGY4MmQ4MDBjOGQxNDdiYzliNTcyZWEzMzU2YTNhNzYzNDJiYTQyIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGFuIEJhcmFkbGF5IDx6YWxhbkBhcHBsZS5jb20+CkRhdGU6
IFRodSwgMjkgQXVnIDIwMjQgMDk6MDg6NDcgLTA3MDAKU3ViamVjdDogW1BBVENIXSBbY3NzLWxp
bmUtY2xhbXBdIFN0YXJ0IHVzaW5nIGJsb2NrLWVsbGlwc2lzIHN0cmluZyBmb3IKIGVsbGlwc2lz
IGNvbnRlbnQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI3ODg2MwoK
UmV2aWV3ZWQgYnkgQW50dGkgS29pdmlzdG8uCgoxLiBFbGxpcHNpcyBjb250ZW50IGlzIGVpdGhl
ciAnLi4uJyAob3ZlcmZsb3cgaW4gaW5saW5lIGRpcmVjdGlvbiBhbmQgbGVnYWN5IGxpbmUgY2xh
bXApCm9yIHN1cHBsaWVkIGJ5ICdibG9jay1lbGxpcHNpcycgY3NzIHByb3BlcnR5IChjb3VsZCBi
ZSBub25lLCBtZWFuaW5nIG5vIGNoYW5nZSB0byByZW5kZXJpbmcgb3RoZXIgdGhhbiB0cnVuY2F0
aW9uIGluIGJsb2NrIGRpcmVjdGlvbikKMi4gSW5saW5lRGlzcGxheTo6TGluZSBub3cgaGFzIEVs
bGlwc2lzIHN0cnVjdCBjb250YWluaW5nIGFsbCBlbGxpcHNpcyByZWxhdGVkIGNvbnRlbnQuCgoq
IFNvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZv
cm1hdHRpbmdDb250ZXh0LmNwcDoKKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ0Nv
bnRleHQ6OmxpbmVMYXlvdXQpOgooV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nQ29u
dGV4dDo6Y3JlYXRlRGlzcGxheUNvbnRlbnRGb3JJbmxpbmVDb250ZW50KToKKiBTb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMYXlvdXRTdGF0ZS5o
OgooV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVMYXlvdXRTdGF0ZTo6c2V0TGVnYWN5Q2xhbXBlZExp
bmVJbmRleCk6CihXZWJDb3JlOjpMYXlvdXQ6OklubGluZUxheW91dFN0YXRlOjpsZWdhY3lDbGFt
cGVkTGluZUluZGV4IGNvbnN0KToKKFdlYkNvcmU6OkxheW91dDo6SW5saW5lTGF5b3V0U3RhdGU6
OnNldENsYW1wZWRMaW5lSW5kZXgpOiBEZWxldGVkLgooV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVM
YXlvdXRTdGF0ZTo6Y2xhbXBlZExpbmVJbmRleCBjb25zdCk6IERlbGV0ZWQuCiogU291cmNlL1dl
YkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvZGlzcGxheS9JbmxpbmVEaXNw
bGF5TGluZS5oOgooV2ViQ29yZTo6SW5saW5lRGlzcGxheTo6TGluZTo6c2V0RWxsaXBzaXMpOgoo
V2ViQ29yZTo6SW5saW5lRGlzcGxheTo6TGluZTo6ZWxsaXBzaXMgY29uc3QpOgooV2ViQ29yZTo6
SW5saW5lRGlzcGxheTo6TGluZTo6aGFzRWxsaXBzaXMgY29uc3QpOgooV2ViQ29yZTo6SW5saW5l
RGlzcGxheTo6TGluZTo6aXNGdWxseVRydW5jYXRlZEluQmxvY2tEaXJlY3Rpb24gY29uc3QpOgoo
V2ViQ29yZTo6SW5saW5lRGlzcGxheTo6TGluZTo6bW92ZUluQmxvY2tEaXJlY3Rpb24pOgooV2Vi
Q29yZTo6SW5saW5lRGlzcGxheTo6TGluZTo6dmlzaWJsZVJlY3RJZ25vcmluZ0Jsb2NrRGlyZWN0
aW9uIGNvbnN0KToKKFdlYkNvcmU6OklubGluZURpc3BsYXk6OkxpbmU6OmVsbGlwc2lzVmlzdWFs
UmVjdCBjb25zdCk6IERlbGV0ZWQuCihXZWJDb3JlOjpJbmxpbmVEaXNwbGF5OjpMaW5lOjplbGxp
cHNpc1RleHQgY29uc3QpOiBEZWxldGVkLgooV2ViQ29yZTo6SW5saW5lRGlzcGxheTo6TGluZTo6
c2V0RWxsaXBzaXNWaXN1YWxSZWN0KTogRGVsZXRlZC4KKiBTb3VyY2UvV2ViQ29yZS9sYXlvdXQv
Zm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9kaXNwbGF5L0lubGluZURpc3BsYXlMaW5lQnVpbGRl
ci5jcHA6CihXZWJDb3JlOjpMYXlvdXQ6OnRyYWlsaW5nRWxsaXBzaXNWaXN1YWxSZWN0QWZ0ZXJU
cnVuY2F0aW9uKToKKFdlYkNvcmU6OkxheW91dDo6bWFrZVJvb21Gb3JMaW5rQm94T25DbGFtcGVk
TGluZUlmTmVlZGVkKToKKFdlYkNvcmU6OkxheW91dDo6bW92ZURpc3BsYXlCb3hUb0NsYW1wZWRM
aW5lKToKKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRGlzcGxheUxpbmVCdWlsZGVyOjphZGRMZWdh
Y3lMaW5lQ2xhbXBUcmFpbGluZ0xpbmtCb3hJZkFwcGxpY2FibGUpOgooV2ViQ29yZTo6TGF5b3V0
OjpJbmxpbmVEaXNwbGF5TGluZUJ1aWxkZXI6OmFwcGx5RWxsaXBzaXNJZk5lZWRlZCk6CihXZWJD
b3JlOjpMYXlvdXQ6OklubGluZURpc3BsYXlMaW5lQnVpbGRlcjo6dHJhaWxpbmdFbGxpcHNpc1Zp
c3VhbFJlY3RBZnRlclRydW5jYXRpb24pOiBEZWxldGVkLgooV2ViQ29yZTo6TGF5b3V0OjpJbmxp
bmVEaXNwbGF5TGluZUJ1aWxkZXI6OmFkZExpbmVDbGFtcFRyYWlsaW5nTGlua0JveElmQXBwbGlj
YWJsZSk6IERlbGV0ZWQuCiogU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0
cy9pbmxpbmUvZGlzcGxheS9JbmxpbmVEaXNwbGF5TGluZUJ1aWxkZXIuaDoKKiBTb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS90ZXh0L1RleHRVdGlsLmNwcDoK
KFdlYkNvcmU6OkxheW91dDo6VGV4dFV0aWw6OmVsbGlwc2lzVGV4dEluSW5saW5lRGlyZWN0aW9u
KToKKFdlYkNvcmU6OkxheW91dDo6VGV4dFV0aWw6OmVsbGlwc2lzVGV4dFJ1bik6IERlbGV0ZWQu
CiogU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvdGV4dC9U
ZXh0VXRpbC5oOgoqIFNvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9pbmxpbmUvSW5s
aW5lSXRlcmF0b3JMaW5lQm94TW9kZXJuUGF0aC5oOgooV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6
OkxpbmVCb3hJdGVyYXRvck1vZGVyblBhdGg6OmVsbGlwc2lzVmlzdWFsUmVjdElnbm9yaW5nQmxv
Y2tEaXJlY3Rpb24gY29uc3QpOgooV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OkxpbmVCb3hJdGVy
YXRvck1vZGVyblBhdGg6OmVsbGlwc2lzVGV4dCBjb25zdCk6Ci0tLQogLi4uL2lubGluZS9Jbmxp
bmVGb3JtYXR0aW5nQ29udGV4dC5jcHAgICAgICAgIHwgMTUgKystLS0KIC4uLi9pbmxpbmUvSW5s
aW5lTGF5b3V0U3RhdGUuaCAgICAgICAgICAgICAgICB8ICA2ICstCiAuLi4vaW5saW5lL2Rpc3Bs
YXkvSW5saW5lRGlzcGxheUxpbmUuaCAgICAgICAgfCAzMSArKysrKy0tLS0tCiAuLi4vZGlzcGxh
eS9JbmxpbmVEaXNwbGF5TGluZUJ1aWxkZXIuY3BwICAgICAgfCA1NyArKysrKysrKysrKystLS0t
LS0tCiAuLi4vaW5saW5lL2Rpc3BsYXkvSW5saW5lRGlzcGxheUxpbmVCdWlsZGVyLmggfCAgNCAr
LQogLi4uL2lubGluZS90ZXh0L1RleHRVdGlsLmNwcCAgICAgICAgICAgICAgICAgIHwgIDYgKy0K
IC4uLi9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL3RleHQvVGV4dFV0aWwuaCB8ICAyICstCiAu
Li4vaW5saW5lL0lubGluZUl0ZXJhdG9yTGluZUJveE1vZGVyblBhdGguaCAgfCAgNCArLQogOCBm
aWxlcyBjaGFuZ2VkLCA3NCBpbnNlcnRpb25zKCspLCA1MSBkZWxldGlvbnMoLSkKCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9Jbmxp
bmVGb3JtYXR0aW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGlu
Z0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHAKaW5kZXggMzc3OWE5
NWM5ODdiLi5jZmYyNGY2OWQ5MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9m
b3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVG
b3JtYXR0aW5nQ29udGV4dC5jcHAKQEAgLTMyNiw3ICszMjYsNyBAQCBJbmxpbmVMYXlvdXRSZXN1
bHQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmxpbmVMYXlvdXQoQWJzdHJhY3RMaW5lQnVpbGRl
ciYgbGluZQogICAgICAgICBwcmV2aW91c0xpbmVFbmQgPSBsaW5lQ29udGVudEVuZDsKICAgICAg
ICAgbGluZUxvZ2ljYWxUb3AgPSBmb3JtYXR0aW5nVXRpbHMoKS5sb2dpY2FsVG9wRm9yTmV4dExp
bmUobGluZUxheW91dFJlc3VsdCwgbGluZUxvZ2ljYWxSZWN0LCBmbG9hdGluZ0NvbnRleHQpOwog
ICAgIH0KLSAgICBJbmxpbmVEaXNwbGF5TGluZUJ1aWxkZXI6OmFkZExpbmVDbGFtcFRyYWlsaW5n
TGlua0JveElmQXBwbGljYWJsZSgqdGhpcywgbGF5b3V0U3RhdGUoKSwgbGF5b3V0UmVzdWx0LmRp
c3BsYXlDb250ZW50KTsKKyAgICBJbmxpbmVEaXNwbGF5TGluZUJ1aWxkZXI6OmFkZExlZ2FjeUxp
bmVDbGFtcFRyYWlsaW5nTGlua0JveElmQXBwbGljYWJsZSgqdGhpcywgbGF5b3V0U3RhdGUoKSwg
bGF5b3V0UmVzdWx0LmRpc3BsYXlDb250ZW50KTsKICAgICByZXR1cm4gbGF5b3V0UmVzdWx0Owog
fQogCkBAIC0zOTMsNyArMzkzLDkgQEAgdm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6dXBk
YXRlQm94R2VvbWV0cnlGb3JQbGFjZWRGbG9hdHMoY29uc3QgTGluZUxheW91dFIKIAogSW5saW5l
UmVjdCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6Y3JlYXRlRGlzcGxheUNvbnRlbnRGb3JJbmxp
bmVDb250ZW50KGNvbnN0IExpbmVCb3gmIGxpbmVCb3gsIGNvbnN0IExpbmVMYXlvdXRSZXN1bHQm
IGxpbmVMYXlvdXRSZXN1bHQsIGNvbnN0IENvbnN0cmFpbnRzRm9ySW5saW5lQ29udGVudCYgY29u
c3RyYWludHMsIElubGluZURpc3BsYXk6OkNvbnRlbnQmIGRpc3BsYXlDb250ZW50LCBzaXplX3Qg
bnVtYmVyT2ZQcmV2aW91c0xpbmVzV2l0aElubGluZUNvbnRlbnQpCiB7Ci0gICAgYXV0byBudW1i
ZXJPZlZpc2libGVMaW5lc0FsbG93ZWQgPSBsYXlvdXRTdGF0ZSgpLnBhcmVudEJsb2NrTGF5b3V0
U3RhdGUoKS5saW5lQ2xhbXAoKSA/IHN0ZDo6bWFrZV9vcHRpb25hbChsYXlvdXRTdGF0ZSgpLnBh
cmVudEJsb2NrTGF5b3V0U3RhdGUoKS5saW5lQ2xhbXAoKS0+bWF4aW11bUxpbmVzKSA6IHN0ZDo6
bnVsbG9wdDsKKyAgICBhdXRvIGxpbmVDbGFtcCA9IGxheW91dFN0YXRlKCkucGFyZW50QmxvY2tM
YXlvdXRTdGF0ZSgpLmxpbmVDbGFtcCgpOworICAgIGF1dG8gaXNMZWdhY3lMaW5lQ2xhbXAgPSBs
aW5lQ2xhbXAgJiYgbGluZUNsYW1wLT5pc0xlZ2FjeTsKKyAgICBhdXRvIG51bWJlck9mVmlzaWJs
ZUxpbmVzQWxsb3dlZCA9IGxpbmVDbGFtcCA/IHN0ZDo6bWFrZV9vcHRpb25hbChsaW5lQ2xhbXAt
Pm1heGltdW1MaW5lcykgOiBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvIG51bWJlck9mTGluZXNX
aXRoSW5saW5lQ29udGVudCA9IG51bWJlck9mUHJldmlvdXNMaW5lc1dpdGhJbmxpbmVDb250ZW50
ICsgKCFsaW5lTGF5b3V0UmVzdWx0LmlubGluZUNvbnRlbnQuaXNFbXB0eSgpID8gMSA6IDApOwog
ICAgIGF1dG8gbGluZUlzRnVsbHlUcnVuY2F0ZWRJbkJsb2NrRGlyZWN0aW9uID0gbnVtYmVyT2ZW
aXNpYmxlTGluZXNBbGxvd2VkICYmIG51bWJlck9mTGluZXNXaXRoSW5saW5lQ29udGVudCA+ICpu
dW1iZXJPZlZpc2libGVMaW5lc0FsbG93ZWQ7CkBAIC00MDEsMTEgKzQwMywxMCBAQCBJbmxpbmVS
ZWN0IElubGluZUZvcm1hdHRpbmdDb250ZXh0OjpjcmVhdGVEaXNwbGF5Q29udGVudEZvcklubGlu
ZUNvbnRlbnQoY29uc3QgTAogICAgIGF1dG8gYm94ZXMgPSBJbmxpbmVEaXNwbGF5Q29udGVudEJ1
aWxkZXIgeyAqdGhpcywgY29uc3RyYWludHMsIGxpbmVCb3gsIGRpc3BsYXlMaW5lIH0uYnVpbGQo
bGluZUxheW91dFJlc3VsdCk7CiAKICAgICBhdXRvIHRydW5jYXRpb25Qb2xpY3kgPSBJbmxpbmVG
b3JtYXR0aW5nVXRpbHM6OmxpbmVFbmRpbmdUcnVuY2F0aW9uUG9saWN5KHJvb3QoKS5zdHlsZSgp
LCBudW1iZXJPZkxpbmVzV2l0aElubGluZUNvbnRlbnQsIG51bWJlck9mVmlzaWJsZUxpbmVzQWxs
b3dlZCk7Ci0gICAgaWYgKGF1dG8gZWxsaXBzaXNSZWN0ID0gSW5saW5lRGlzcGxheUxpbmVCdWls
ZGVyOjp0cmFpbGluZ0VsbGlwc2lzVmlzdWFsUmVjdEFmdGVyVHJ1bmNhdGlvbih0cnVuY2F0aW9u
UG9saWN5LCBkaXNwbGF5TGluZSwgYm94ZXMsIGxpbmVMYXlvdXRSZXN1bHQuaXNGaXJzdExhc3Qu
aXNMYXN0TGluZVdpdGhJbmxpbmVDb250ZW50KSkgewotICAgICAgICBkaXNwbGF5TGluZS5zZXRF
bGxpcHNpc1Zpc3VhbFJlY3QoKmVsbGlwc2lzUmVjdCk7Ci0gICAgICAgIGlmICh0cnVuY2F0aW9u
UG9saWN5ID09IExpbmVFbmRpbmdUcnVuY2F0aW9uUG9saWN5OjpXaGVuQ29udGVudE92ZXJmbG93
c0luQmxvY2tEaXJlY3Rpb24pCi0gICAgICAgICAgICBsYXlvdXRTdGF0ZSgpLnNldENsYW1wZWRM
aW5lSW5kZXgobGluZUJveC5saW5lSW5kZXgoKSk7Ci0gICAgfQorICAgIElubGluZURpc3BsYXlM
aW5lQnVpbGRlcjo6YXBwbHlFbGxpcHNpc0lmTmVlZGVkKHRydW5jYXRpb25Qb2xpY3ksIGRpc3Bs
YXlMaW5lLCBib3hlcywgbGluZUxheW91dFJlc3VsdC5pc0ZpcnN0TGFzdC5pc0xhc3RMaW5lV2l0
aElubGluZUNvbnRlbnQsIGlzTGVnYWN5TGluZUNsYW1wKTsKKyAgICBhdXRvIGxpbmVIYXNMZWdh
Y3lMaW5lQ2xhbXAgPSBpc0xlZ2FjeUxpbmVDbGFtcCAmJiBkaXNwbGF5TGluZS5oYXNFbGxpcHNp
cygpICYmIHRydW5jYXRpb25Qb2xpY3kgPT0gTGluZUVuZGluZ1RydW5jYXRpb25Qb2xpY3k6Oldo
ZW5Db250ZW50T3ZlcmZsb3dzSW5CbG9ja0RpcmVjdGlvbjsKKyAgICBpZiAobGluZUhhc0xlZ2Fj
eUxpbmVDbGFtcCkKKyAgICAgICAgbGF5b3V0U3RhdGUoKS5zZXRMZWdhY3lDbGFtcGVkTGluZUlu
ZGV4KGxpbmVCb3gubGluZUluZGV4KCkpOwogCiAgICAgZGlzcGxheUNvbnRlbnQuYm94ZXMuYXBw
ZW5kVmVjdG9yKFdURk1vdmUoYm94ZXMpKTsKICAgICBkaXNwbGF5Q29udGVudC5saW5lcy5hcHBl
bmQoZGlzcGxheUxpbmUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1h
dHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGF5b3V0U3RhdGUuaCBiL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxheW91dFN0YXRlLmgKaW5k
ZXggNzEzOTEyMzI4NGFiLi43NWFjYjI1MjBmM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxheW91dFN0YXRlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5l
TGF5b3V0U3RhdGUuaApAQCAtNTAsOCArNTAsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRBdmFp
bGFibGVMaW5lV2lkdGhPdmVycmlkZShBdmFpbGFibGVMaW5lV2lkdGhPdmVycmlkZSBhdmFpbGFi
bGVMaW5lV2lkdGhPdmVycmlkZSkgeyBtX2F2YWlsYWJsZUxpbmVXaWR0aE92ZXJyaWRlID0gYXZh
aWxhYmxlTGluZVdpZHRoT3ZlcnJpZGU7IH0KICAgICBjb25zdCBBdmFpbGFibGVMaW5lV2lkdGhP
dmVycmlkZSYgYXZhaWxhYmxlTGluZVdpZHRoT3ZlcnJpZGUoKSBjb25zdCB7IHJldHVybiBtX2F2
YWlsYWJsZUxpbmVXaWR0aE92ZXJyaWRlOyB9CiAKLSAgICB2b2lkIHNldENsYW1wZWRMaW5lSW5k
ZXgoc2l6ZV90IGxpbmVJbmRleCkgeyBtX2NsYW1wZWRMaW5lSW5kZXggPSBsaW5lSW5kZXg7IH0K
LSAgICBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gY2xhbXBlZExpbmVJbmRleCgpIGNvbnN0IHsgcmV0
dXJuIG1fY2xhbXBlZExpbmVJbmRleDsgfQorICAgIHZvaWQgc2V0TGVnYWN5Q2xhbXBlZExpbmVJ
bmRleChzaXplX3QgbGluZUluZGV4KSB7IG1fbGVnYWN5Q2xhbXBlZExpbmVJbmRleCA9IGxpbmVJ
bmRleDsgfQorICAgIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBsZWdhY3lDbGFtcGVkTGluZUluZGV4
KCkgY29uc3QgeyByZXR1cm4gbV9sZWdhY3lDbGFtcGVkTGluZUluZGV4OyB9CiAKICAgICB2b2lk
IHNldEh5cGhlbmF0aW9uTGltaXRMaW5lcyhzaXplX3QgaHlwaGVuYXRpb25MaW1pdExpbmVzKSB7
IG1faHlwaGVuYXRpb25MaW1pdExpbmVzID0gaHlwaGVuYXRpb25MaW1pdExpbmVzOyB9CiAgICAg
dm9pZCBpbmNyZW1lbnRTdWNjZXNzaXZlSHlwaGVuYXRlZExpbmVDb3VudCgpIHsgKyttX3N1Y2Nl
c3NpdmVIeXBoZW5hdGVkTGluZUNvdW50OyB9CkBAIC03NSw3ICs3NSw3IEBAIHByaXZhdGU6CiAg
ICAgSW5saW5lTGF5b3V0VW5pdCBtX2NsZWFyR2FwQmVmb3JlRmlyc3RMaW5lIHsgMC5mIH07CiAg
ICAgSW5saW5lTGF5b3V0VW5pdCBtX2NsZWFyR2FwQWZ0ZXJMYXN0TGluZSB7IDAuZiB9OwogICAg
IElubGluZUxheW91dFVuaXQgbV9maXJzdExpbmVTdGFydFRyaW1Gb3JJbml0aWFsTGV0dGVyIHsg
MC5mIH07Ci0gICAgc3RkOjpvcHRpb25hbDxzaXplX3Q+IG1fY2xhbXBlZExpbmVJbmRleCB7IH07
CisgICAgc3RkOjpvcHRpb25hbDxzaXplX3Q+IG1fbGVnYWN5Q2xhbXBlZExpbmVJbmRleCB7IH07
CiAgICAgc3RkOjpvcHRpb25hbDxzaXplX3Q+IG1faHlwaGVuYXRpb25MaW1pdExpbmVzIHsgfTsK
ICAgICBzaXplX3QgbV9zdWNjZXNzaXZlSHlwaGVuYXRlZExpbmVDb3VudCB7IDAgfTsKICAgICAv
LyBGSVhNRTogVGhpcyBpcyByZXF1aXJlZCBieSB0aGUgaW50ZWdhcmF0aW9uIGNvZGVwYXRoLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxp
bmUvZGlzcGxheS9JbmxpbmVEaXNwbGF5TGluZS5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zv
cm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvZGlzcGxheS9JbmxpbmVEaXNwbGF5TGluZS5oCmluZGV4
IDMyY2RjZDJkYzY1Yi4uYzkwNjkxOWY1Mjk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9kaXNwbGF5L0lubGluZURpc3BsYXlMaW5l
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUv
ZGlzcGxheS9JbmxpbmVEaXNwbGF5TGluZS5oCkBAIC03NSwxMyArNzUsNiBAQCBwdWJsaWM6CiAg
ICAgYm9vbCBpc0hvcml6b250YWwoKSBjb25zdCB7IHJldHVybiBtX2lzSG9yaXpvbnRhbDsgfQog
ICAgIGJvb2wgaXNMZWZ0VG9SaWdodElubGluZURpcmVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1f
aXNMZWZ0VG9SaWdodERpcmVjdGlvbjsgfQogCi0gICAgYm9vbCBpc0Z1bGx5VHJ1bmNhdGVkSW5C
bG9ja0RpcmVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNGdWxseVRydW5jYXRlZEluQmxvY2tE
aXJlY3Rpb247IH0KLQotICAgIGJvb2wgaGFzRWxsaXBzaXMoKSBjb25zdCB7IHJldHVybiBtX2Vs
bGlwc2lzVmlzdWFsUmVjdC5oYXNfdmFsdWUoKTsgfQotICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRS
ZWN0PiBlbGxpcHNpc1Zpc3VhbFJlY3QoKSBjb25zdCB7IHJldHVybiBtX2VsbGlwc2lzVmlzdWFs
UmVjdDsgfQotICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBub3QgYmUgcGFydCBvZiBMaW5lLgot
ICAgIFRleHRSdW4gZWxsaXBzaXNUZXh0KCkgY29uc3QgeyByZXR1cm4gVGV4dFJ1biB7IExheW91
dDo6VGV4dFV0aWw6OmVsbGlwc2lzVGV4dFJ1bihpc0hvcml6b250YWwoKSkgfTsgfQotCiAgICAg
ZmxvYXQgY29udGVudExvZ2ljYWxMZWZ0KCkgY29uc3QgeyByZXR1cm4gbV9jb250ZW50TG9naWNh
bExlZnQ7IH0KICAgICAvLyBUaGlzIGlzICJ2aXN1YWwiIGxlZnQgaW4gaW5saW5lIGRpcmVjdGlv
biAoaXQgaXMgc3RpbGwgY29uc2lkZXJlZCBsb2dpY2FsIGFzIHRoZXJlJ3Mgbm8gZmxpcCBmb3Ig
d3JpdGluZyBtb2RlKS4KICAgICBmbG9hdCBjb250ZW50TG9naWNhbExlZnRJZ25vcmluZ0lubGlu
ZURpcmVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fY29udGVudExvZ2ljYWxMZWZ0SWdub3JpbmdJ
bmxpbmVEaXJlY3Rpb247IH0KQEAgLTkzLDcgKzg2LDE4IEBAIHB1YmxpYzoKICAgICBib29sIGlz
Rmlyc3RBZnRlclBhZ2VCcmVhaygpIGNvbnN0IHsgcmV0dXJuIG1faXNGaXJzdEFmdGVyUGFnZUJy
ZWFrOyB9CiAKICAgICB2b2lkIG1vdmVJbkJsb2NrRGlyZWN0aW9uKGZsb2F0IG9mZnNldCwgYm9v
bCBpc0hvcml6b250YWxXcml0aW5nTW9kZSk7Ci0gICAgdm9pZCBzZXRFbGxpcHNpc1Zpc3VhbFJl
Y3QoY29uc3QgRmxvYXRSZWN0JiBlbGxpcHNpc1Zpc3VhbFJlY3QpIHsgbV9lbGxpcHNpc1Zpc3Vh
bFJlY3QgPSBlbGxpcHNpc1Zpc3VhbFJlY3Q7IH0KKyAgICBzdHJ1Y3QgRWxsaXBzaXMgeworICAg
ICAgICBlbnVtIGNsYXNzIFR5cGUgOiB1aW50OF90IHsgSW5saW5lLCBCbG9jayB9OworICAgICAg
ICBUeXBlIHR5cGUgeyBUeXBlOjpJbmxpbmUgfTsKKyAgICAgICAgLy8gVGhpcyBpcyB2aXN1YWwg
cmVjdCBpZ25vcmluZyBibG9jayBkaXJlY3Rpb24uCisgICAgICAgIEZsb2F0UmVjdCB2aXN1YWxS
ZWN0OworICAgICAgICBBdG9tU3RyaW5nIHRleHQ7CisgICAgfTsKKyAgICB2b2lkIHNldEVsbGlw
c2lzKGNvbnN0IEVsbGlwc2lzJiBlbGxpcHNpcykgeyBtX2VsbGlwc2lzID0gZWxsaXBzaXM7IH0K
KyAgICBzdGQ6Om9wdGlvbmFsPEVsbGlwc2lzPiBlbGxpcHNpcygpIGNvbnN0IHsgcmV0dXJuIG1f
ZWxsaXBzaXM7IH0KKyAgICBib29sIGhhc0VsbGlwc2lzKCkgY29uc3QgeyByZXR1cm4gISFtX2Vs
bGlwc2lzOyB9CisKKyAgICBib29sIGlzRnVsbHlUcnVuY2F0ZWRJbkJsb2NrRGlyZWN0aW9uKCkg
Y29uc3QgeyByZXR1cm4gbV9pc0Z1bGx5VHJ1bmNhdGVkSW5CbG9ja0RpcmVjdGlvbjsgfQogCiAg
ICAgYm9vbCBoYXNDb250ZW50QWZ0ZXJFbGxpcHNpc0JveCgpIGNvbnN0IHsgcmV0dXJuIG1faGFz
Q29udGVudEFmdGVyRWxsaXBzaXNCb3g7IH0KICAgICB2b2lkIHNldEhhc0NvbnRlbnRBZnRlckVs
bGlwc2lzQm94KCkgeyBtX2hhc0NvbnRlbnRBZnRlckVsbGlwc2lzQm94ID0gdHJ1ZTsgfQpAQCAt
MTMyLDggKzEzNiw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2lzRmlyc3RBZnRlclBhZ2VCcmVh
ayA6IDEgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9pc0Z1bGx5VHJ1bmNhdGVkSW5CbG9ja0RpcmVj
dGlvbiA6IDEgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9oYXNDb250ZW50QWZ0ZXJFbGxpcHNpc0Jv
eCA6IDEgeyBmYWxzZSB9OwotICAgIC8vIFRoaXMgaXMgdmlzdWFsIHJlY3QgaWdub3JpbmcgYmxv
Y2sgZGlyZWN0aW9uLgotICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBtX2VsbGlwc2lzVmlz
dWFsUmVjdCB7IH07CisgICAgc3RkOjpvcHRpb25hbDxFbGxpcHNpcz4gbV9lbGxpcHNpcyB7IH07
CiB9OwogCiBpbmxpbmUgTGluZTo6TGluZShjb25zdCBGbG9hdFJlY3QmIGxpbmVCb3hMb2dpY2Fs
UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBsaW5lQm94UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBjb250
ZW50T3ZlcmZsb3csIEVuY2xvc2luZ1RvcEFuZEJvdHRvbSBlbmNsb3NpbmdMb2dpY2FsVG9wQW5k
Qm90dG9tLCBmbG9hdCBhbGlnbm1lbnRCYXNlbGluZSwgRm9udEJhc2VsaW5lIGJhc2VsaW5lVHlw
ZSwgZmxvYXQgY29udGVudExvZ2ljYWxMZWZ0LCBmbG9hdCBjb250ZW50TG9naWNhbExlZnRJZ25v
cmluZ0lubGluZURpcmVjdGlvbiwgZmxvYXQgY29udGVudExvZ2ljYWxXaWR0aCwgYm9vbCBpc0xl
ZnRUb1JpZ2h0RGlyZWN0aW9uLCBib29sIGlzSG9yaXpvbnRhbCwgYm9vbCBpc1RydW5jYXRlZElu
QmxvY2tEaXJlY3Rpb24pCkBAIC0xNjUsOCArMTY4LDggQEAgaW5saW5lIHZvaWQgTGluZTo6bW92
ZUluQmxvY2tEaXJlY3Rpb24oZmxvYXQgb2Zmc2V0LCBib29sIGlzSG9yaXpvbnRhbFdyaXRpbmdN
b2QKICAgICBtX3Njcm9sbGFibGVPdmVyZmxvdy5tb3ZlKHBoeXNpY2FsT2Zmc2V0KTsKICAgICBt
X2NvbnRlbnRPdmVyZmxvdy5tb3ZlKHBoeXNpY2FsT2Zmc2V0KTsKICAgICBtX2lua092ZXJmbG93
Lm1vdmUocGh5c2ljYWxPZmZzZXQpOwotICAgIGlmIChtX2VsbGlwc2lzVmlzdWFsUmVjdC5oYXNf
dmFsdWUoKSkKLSAgICAgICAgbV9lbGxpcHNpc1Zpc3VhbFJlY3QtPm1vdmUocGh5c2ljYWxPZmZz
ZXQpOworICAgIGlmIChtX2VsbGlwc2lzKQorICAgICAgICBtX2VsbGlwc2lzLT52aXN1YWxSZWN0
Lm1vdmUocGh5c2ljYWxPZmZzZXQpOwogCiAgICAgbV9saW5lQm94TG9naWNhbFJlY3QubW92ZSh7
IHsgfSwgb2Zmc2V0IH0pOwogICAgIG1fZW5jbG9zaW5nTG9naWNhbFRvcEFuZEJvdHRvbS50b3Ag
Kz0gb2Zmc2V0OwpAQCAtMTgwLDEwICsxODMsMTAgQEAgaW5saW5lIEZsb2F0UmVjdCBMaW5lOjp2
aXNpYmxlUmVjdElnbm9yaW5nQmxvY2tEaXJlY3Rpb24oKSBjb25zdAogICAgIGlmICghaGFzRWxs
aXBzaXMoKSB8fCBoYXNDb250ZW50QWZ0ZXJFbGxpcHNpc0JveCgpKQogICAgICAgICByZXR1cm4g
bV9pbmtPdmVyZmxvdzsKICAgICBpZiAobV9pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKSB7Ci0gICAg
ICAgIGF1dG8gdmlzaWJsZUxpbmVCb3hSaWdodCA9IHN0ZDo6bWluKG1fbGluZUJveFJlY3QubWF4
WCgpLCBtX2VsbGlwc2lzVmlzdWFsUmVjdC0+bWF4WCgpKTsKKyAgICAgICAgYXV0byB2aXNpYmxl
TGluZUJveFJpZ2h0ID0gc3RkOjptaW4obV9saW5lQm94UmVjdC5tYXhYKCksIG1fZWxsaXBzaXMt
PnZpc3VhbFJlY3QubWF4WCgpKTsKICAgICAgICAgcmV0dXJuIHsgbV9saW5lQm94UmVjdC5sb2Nh
dGlvbigpLCBGbG9hdFBvaW50IHsgdmlzaWJsZUxpbmVCb3hSaWdodCwgbV9saW5lQm94UmVjdC5t
YXhZKCkgfSB9OwogICAgIH0KLSAgICBhdXRvIHZpc2libGVMaW5lQm94TGVmdCA9IHN0ZDo6bWF4
KG1fbGluZUJveFJlY3QueCgpLCBtX2VsbGlwc2lzVmlzdWFsUmVjdC0+eCgpKTsKKyAgICBhdXRv
IHZpc2libGVMaW5lQm94TGVmdCA9IHN0ZDo6bWF4KG1fbGluZUJveFJlY3QueCgpLCBtX2VsbGlw
c2lzLT52aXN1YWxSZWN0LngoKSk7CiAgICAgcmV0dXJuIHsgRmxvYXRQb2ludCB7IHZpc2libGVM
aW5lQm94TGVmdCwgbV9saW5lQm94UmVjdC55KCkgfSwgRmxvYXRQb2ludCB7IG1fbGluZUJveFJl
Y3QubWF4WCgpLCBtX2xpbmVCb3hSZWN0Lm1heFkoKSB9IH07CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL2Rpc3BsYXkvSW5s
aW5lRGlzcGxheUxpbmVCdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0
aW5nQ29udGV4dHMvaW5saW5lL2Rpc3BsYXkvSW5saW5lRGlzcGxheUxpbmVCdWlsZGVyLmNwcApp
bmRleCBkMzZkNjRmNzMyYjQuLjNkNTc4NmE4NDQyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvZGlzcGxheS9JbmxpbmVEaXNwbGF5
TGluZUJ1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29u
dGV4dHMvaW5saW5lL2Rpc3BsYXkvSW5saW5lRGlzcGxheUxpbmVCdWlsZGVyLmNwcApAQCAtMjg0
LDMxICsyODQsMjUgQEAgc3RhdGljIGZsb2F0IHRydW5jYXRlT3ZlcmZsb3dpbmdEaXNwbGF5Qm94
ZXMoSW5saW5lRGlzcGxheTo6Qm94ZXMmIGJveGVzLCBzaXplX3QKICAgICByZXR1cm4gdHJ1bmNh
dGVMZWZ0LnZhbHVlX29yKGxlZnQoYm94ZXMuZmlyc3QoKSkpIC0gZWxsaXBzaXNXaWR0aDsKIH0K
IAotc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+IElubGluZURpc3BsYXlMaW5lQnVpbGRlcjo6dHJh
aWxpbmdFbGxpcHNpc1Zpc3VhbFJlY3RBZnRlclRydW5jYXRpb24oTGluZUVuZGluZ1RydW5jYXRp
b25Qb2xpY3kgbGluZUVuZGluZ1RydW5jYXRpb25Qb2xpY3ksIGNvbnN0IElubGluZURpc3BsYXk6
OkxpbmUmIGRpc3BsYXlMaW5lLCBJbmxpbmVEaXNwbGF5OjpCb3hlcyYgZGlzcGxheUJveGVzLCBi
b29sIGlzTGFzdExpbmVXaXRoSW5saW5lQ29udGVudCkKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPEZs
b2F0UmVjdD4gdHJhaWxpbmdFbGxpcHNpc1Zpc3VhbFJlY3RBZnRlclRydW5jYXRpb24oTGluZUVu
ZGluZ1RydW5jYXRpb25Qb2xpY3kgbGluZUVuZGluZ1RydW5jYXRpb25Qb2xpY3ksIFN0cmluZyBl
bGxpcHNpc1RleHQsIGNvbnN0IElubGluZURpc3BsYXk6OkxpbmUmIGRpc3BsYXlMaW5lLCBJbmxp
bmVEaXNwbGF5OjpCb3hlcyYgZGlzcGxheUJveGVzLCBib29sIGlzTGFzdExpbmVXaXRoSW5saW5l
Q29udGVudCkKIHsKKyAgICBBU1NFUlQobGluZUVuZGluZ1RydW5jYXRpb25Qb2xpY3kgIT0gTGlu
ZUVuZGluZ1RydW5jYXRpb25Qb2xpY3k6Ok5vVHJ1bmNhdGlvbik7CiAgICAgaWYgKGRpc3BsYXlC
b3hlcy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiB7IH07CiAKLSAgICBhdXRvIGlzVHJ1bmNh
dGVkQXBwbGljYWJsZSA9IFsmXSB7Ci0gICAgICAgIHN3aXRjaCAobGluZUVuZGluZ1RydW5jYXRp
b25Qb2xpY3kpIHsKLSAgICAgICAgY2FzZSBMaW5lRW5kaW5nVHJ1bmNhdGlvblBvbGljeTo6Tm9U
cnVuY2F0aW9uOgotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBjYXNlIExpbmVF
bmRpbmdUcnVuY2F0aW9uUG9saWN5OjpXaGVuQ29udGVudE92ZXJmbG93c0luSW5saW5lRGlyZWN0
aW9uOgorICAgIGF1dG8gbmVlZHNFbGxpcHNpcyA9IFsmXSB7CisgICAgICAgIGlmIChsaW5lRW5k
aW5nVHJ1bmNhdGlvblBvbGljeSA9PSBMaW5lRW5kaW5nVHJ1bmNhdGlvblBvbGljeTo6V2hlbkNv
bnRlbnRPdmVyZmxvd3NJbklubGluZURpcmVjdGlvbikKICAgICAgICAgICAgIHJldHVybiBkaXNw
bGF5TGluZS5jb250ZW50TG9naWNhbFdpZHRoKCkgJiYgZGlzcGxheUxpbmUuY29udGVudExvZ2lj
YWxXaWR0aCgpID4gZGlzcGxheUxpbmUubGluZUJveExvZ2ljYWxSZWN0KCkud2lkdGgoKTsKLSAg
ICAgICAgY2FzZSBMaW5lRW5kaW5nVHJ1bmNhdGlvblBvbGljeTo6V2hlbkNvbnRlbnRPdmVyZmxv
d3NJbkJsb2NrRGlyZWN0aW9uOgotICAgICAgICAgICAgcmV0dXJuICFpc0xhc3RMaW5lV2l0aElu
bGluZUNvbnRlbnQ7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQorICAgICAgICBB
U1NFUlQobGluZUVuZGluZ1RydW5jYXRpb25Qb2xpY3kgPT0gTGluZUVuZGluZ1RydW5jYXRpb25Q
b2xpY3k6OldoZW5Db250ZW50T3ZlcmZsb3dzSW5CbG9ja0RpcmVjdGlvbik7CisgICAgICAgIHJl
dHVybiAhaXNMYXN0TGluZVdpdGhJbmxpbmVDb250ZW50OwogICAgIH07Ci0gICAgaWYgKCFpc1Ry
dW5jYXRlZEFwcGxpY2FibGUoKSkKKyAgICBpZiAoIW5lZWRzRWxsaXBzaXMoKSkKICAgICAgICAg
cmV0dXJuIHsgfTsKIAogICAgIEFTU0VSVChkaXNwbGF5Qm94ZXNbMF0uaXNSb290SW5saW5lQm94
KCkpOwogICAgIGF1dG8mIHJvb3RJbmxpbmVCb3ggPSBkaXNwbGF5Qm94ZXNbMF07CiAgICAgYXV0
byYgcm9vdFN0eWxlID0gcm9vdElubGluZUJveC5zdHlsZSgpOwotICAgIGF1dG8gZWxsaXBzaXNX
aWR0aCA9IHN0ZDo6bWF4KDAuZiwgcm9vdFN0eWxlLmZvbnRDYXNjYWRlKCkud2lkdGgoVGV4dFV0
aWw6OmVsbGlwc2lzVGV4dFJ1bigpKSk7CisgICAgYXV0byBlbGxpcHNpc1dpZHRoID0gc3RkOjpt
YXgoMC5mLCByb290U3R5bGUuZm9udENhc2NhZGUoKS53aWR0aChUZXh0UnVuIHsgZWxsaXBzaXNU
ZXh0IH0pKTsKIAogICAgIGF1dG8gY29udGVudE5lZWRzVHJ1bmNhdGlvbiA9IFsmXSB7CiAgICAg
ICAgIHN3aXRjaCAobGluZUVuZGluZ1RydW5jYXRpb25Qb2xpY3kpIHsKQEAgLTM2NCw3ICszNTgs
NyBAQCBzdGF0aWMgY29uc3RleHByIGludCBsZWdhY3lNYXRjaGluZ0xpbmtCb3hPZmZzZXQgPSAz
Owogc3RhdGljIGlubGluZSB2b2lkIG1ha2VSb29tRm9yTGlua0JveE9uQ2xhbXBlZExpbmVJZk5l
ZWRlZChhdXRvJiBjbGFtcGVkTGluZSwgYXV0byYgZGlzcGxheUJveGVzLCBhdXRvIGluc2VydGlv
blBvc2l0aW9uLCBhdXRvIGxpbmtDb250ZW50V2lkdGgpCiB7CiAgICAgQVNTRVJUKGluc2VydGlv
blBvc2l0aW9uKTsKLSAgICBhdXRvIGVsbGlwc2lzQm94UmVjdCA9ICpjbGFtcGVkTGluZS5lbGxp
cHNpc1Zpc3VhbFJlY3QoKTsKKyAgICBhdXRvIGVsbGlwc2lzQm94UmVjdCA9IGNsYW1wZWRMaW5l
LmVsbGlwc2lzKCktPnZpc3VhbFJlY3Q7CiAgICAgaWYgKGVsbGlwc2lzQm94UmVjdC5tYXhYKCkg
KyBsaW5rQ29udGVudFdpZHRoIDw9IGNsYW1wZWRMaW5lLnJpZ2h0KCkpCiAgICAgICAgIHJldHVy
bjsKICAgICBhdXRvJiByb290U3R5bGUgPSBkaXNwbGF5Qm94ZXNbMF0ubGF5b3V0Qm94KCkuc3R5
bGUoKTsKQEAgLTM4MiwxOSArMzc2LDE5IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBtYWtlUm9vbUZv
ckxpbmtCb3hPbkNsYW1wZWRMaW5lSWZOZWVkZWQoYXV0byYgY2xhbXBlZExpbmUsIGF1CiAgICAg
YXV0byBlbGxpc3BzaXNQb3NpdGlvbiA9IGNsYW1wZWRMaW5lLnJpZ2h0KCkgLSBsaW5rQ29udGVu
dFdpZHRoIC0gbGVnYWN5TWF0Y2hpbmdMaW5rQm94T2Zmc2V0OwogICAgIGF1dG8gZWxsaXBzaXNT
dGFydCA9IHRydW5jYXRlT3ZlcmZsb3dpbmdEaXNwbGF5Qm94ZXMoZGlzcGxheUJveGVzLCBzdGFy
dEluZGV4KCksIGVuZEluZGV4LCBjbGFtcGVkTGluZS5sZWZ0KCksIGVsbGlzcHNpc1Bvc2l0aW9u
LCBlbGxpcHNpc0JveFJlY3Qud2lkdGgoKSwgcm9vdFN0eWxlLCBMaW5lRW5kaW5nVHJ1bmNhdGlv
blBvbGljeTo6V2hlbkNvbnRlbnRPdmVyZmxvd3NJbkJsb2NrRGlyZWN0aW9uKTsKICAgICBlbGxp
cHNpc0JveFJlY3Quc2V0WChlbGxpcHNpc1N0YXJ0KTsKLSAgICBjbGFtcGVkTGluZS5zZXRFbGxp
cHNpc1Zpc3VhbFJlY3QoZWxsaXBzaXNCb3hSZWN0KTsKKyAgICBjbGFtcGVkTGluZS5zZXRFbGxp
cHNpcyh7IElubGluZURpc3BsYXk6OkxpbmU6OkVsbGlwc2lzOjpUeXBlOjpCbG9jaywgZWxsaXBz
aXNCb3hSZWN0LCBUZXh0VXRpbDo6ZWxsaXBzaXNUZXh0SW5JbmxpbmVEaXJlY3Rpb24oY2xhbXBl
ZExpbmUuaXNIb3Jpem9udGFsKCkpIH0pOwogfQogCiBzdGF0aWMgaW5saW5lIHZvaWQgbW92ZURp
c3BsYXlCb3hUb0NsYW1wZWRMaW5lKGF1dG8mIGRpc3BsYXlMaW5lcywgYXV0byBjbGFtcGVkTGlu
ZUluZGV4LCBhdXRvJiBkaXNwbGF5Qm94LCBhdXRvIGhvcml6b250YWxPZmZzZXQpCiB7CiAgICAg
YXV0byYgY2xhbXBlZExpbmUgPSBkaXNwbGF5TGluZXNbY2xhbXBlZExpbmVJbmRleF07Ci0gICAg
ZGlzcGxheUJveC5zZXRMZWZ0KGNsYW1wZWRMaW5lLmVsbGlwc2lzVmlzdWFsUmVjdCgpLT5tYXhY
KCkgKyBob3Jpem9udGFsT2Zmc2V0ICsgbGVnYWN5TWF0Y2hpbmdMaW5rQm94T2Zmc2V0KTsKKyAg
ICBkaXNwbGF5Qm94LnNldExlZnQoY2xhbXBlZExpbmUuZWxsaXBzaXMoKS0+dmlzdWFsUmVjdC5t
YXhYKCkgKyBob3Jpem9udGFsT2Zmc2V0ICsgbGVnYWN5TWF0Y2hpbmdMaW5rQm94T2Zmc2V0KTsK
ICAgICAvLyBBc3N1bWUgYmFzZWxpbmUgYWxpZ25tZW50IGhlcmUuCiAgICAgZGlzcGxheUJveC5t
b3ZlVmVydGljYWxseSgoY2xhbXBlZExpbmUudG9wKCkgKyBjbGFtcGVkTGluZS5iYXNlbGluZSgp
KSAtIChkaXNwbGF5TGluZXMubGFzdCgpLnRvcCgpICsgZGlzcGxheUxpbmVzLmxhc3QoKS5iYXNl
bGluZSgpKSk7CiAgICAgZGlzcGxheUJveC5tb3ZlVG9MaW5lKGNsYW1wZWRMaW5lSW5kZXgpOwog
fQogCi12b2lkIElubGluZURpc3BsYXlMaW5lQnVpbGRlcjo6YWRkTGluZUNsYW1wVHJhaWxpbmdM
aW5rQm94SWZBcHBsaWNhYmxlKGNvbnN0IElubGluZUZvcm1hdHRpbmdDb250ZXh0JiBpbmxpbmVG
b3JtYXR0aW5nQ29udGV4dCwgY29uc3QgSW5saW5lTGF5b3V0U3RhdGUmIGlubGluZUxheW91dFN0
YXRlLCBJbmxpbmVEaXNwbGF5OjpDb250ZW50JiBkaXNwbGF5Q29udGVudCkKK3ZvaWQgSW5saW5l
RGlzcGxheUxpbmVCdWlsZGVyOjphZGRMZWdhY3lMaW5lQ2xhbXBUcmFpbGluZ0xpbmtCb3hJZkFw
cGxpY2FibGUoY29uc3QgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQmIGlubGluZUZvcm1hdHRpbmdD
b250ZXh0LCBjb25zdCBJbmxpbmVMYXlvdXRTdGF0ZSYgaW5saW5lTGF5b3V0U3RhdGUsIElubGlu
ZURpc3BsYXk6OkNvbnRlbnQmIGRpc3BsYXlDb250ZW50KQogewogICAgIC8vIFRoaXMgaXMgbGlu
ay1ib3ggdHlwZSBvZiBsaW5lIGNsYW1waW5nICgtd2Via2l0LWxpbmUtY2xhbXApIHdoZXJlIHdl
IGNoZWNrIGlmIHRoZSBpbmxpbmUgY29udGVudCBlbmRzIGluIGEgbGluawogICAgIC8vIGFuZCBt
b3ZlIHN1Y2ggbGluayBjb250ZW50IG5leHQgdG8gdGhlIGNsYW1wZWQgbGluZSdzIHRyYWlsaW5n
IGVsbGlzcHNpcy4gSXQgaXMgbWVhbnQgdG8gcHJvZHVjZSB0aGUgZm9sbG93aW5nIHJlbmRlcmlu
ZwpAQCAtNDA3LDcgKzQwMSw3IEBAIHZvaWQgSW5saW5lRGlzcGxheUxpbmVCdWlsZGVyOjphZGRM
aW5lQ2xhbXBUcmFpbGluZ0xpbmtCb3hJZkFwcGxpY2FibGUoY29uc3QgSW5sCiAgICAgLy8gYXQg
aHR0cHM6Ly9jb21taXRzLndlYmtpdC5vcmcvNjA4NkBtYWluIHRvIHN1cHBvcnQgc3BlY2lhbCBh
cnRpY2xlIHJlbmRlcmluZyB3aXRoIGNsYW1wZWQgbGluZXMuCiAgICAgLy8gSXQgc3VwcG9ydHMg
aG9yaXpvbnRhbCwgbGVmdC10by1yaWdodCBjb250ZW50IG9ubHkgd2hlcmUgdGhlIGxpbmsgaW5s
aW5lIGJveCBoYXMgKG5vbi1zcGxpdCkgdGV4dCBjb250ZW50IGFuZCB3aGVuCiAgICAgLy8gdGhl
IGxpbmsgY29udGVudCAoJ21vcmUgaW5mbycpIGZpdHMgdGhlIGNsYW1wZWQgbGluZS4KLSAgICBh
dXRvIGNsYW1wZWRMaW5lSW5kZXggPSBpbmxpbmVMYXlvdXRTdGF0ZS5jbGFtcGVkTGluZUluZGV4
KCk7CisgICAgYXV0byBjbGFtcGVkTGluZUluZGV4ID0gaW5saW5lTGF5b3V0U3RhdGUubGVnYWN5
Q2xhbXBlZExpbmVJbmRleCgpOwogICAgIGlmICghY2xhbXBlZExpbmVJbmRleCkKICAgICAgICAg
cmV0dXJuOwogICAgIGF1dG8mIGRpc3BsYXlMaW5lcyA9IGRpc3BsYXlDb250ZW50LmxpbmVzOwpA
QCAtNDY2LDYgKzQ2MCwzMSBAQCB2b2lkIElubGluZURpc3BsYXlMaW5lQnVpbGRlcjo6YWRkTGlu
ZUNsYW1wVHJhaWxpbmdMaW5rQm94SWZBcHBsaWNhYmxlKGNvbnN0IElubAogICAgIGNsYW1wZWRM
aW5lLnNldEhhc0NvbnRlbnRBZnRlckVsbGlwc2lzQm94KCk7CiB9CiAKK3ZvaWQgSW5saW5lRGlz
cGxheUxpbmVCdWlsZGVyOjphcHBseUVsbGlwc2lzSWZOZWVkZWQoTGluZUVuZGluZ1RydW5jYXRp
b25Qb2xpY3kgdHJ1bmNhdGlvblBvbGljeSwgSW5saW5lRGlzcGxheTo6TGluZSYgZGlzcGxheUxp
bmUsIElubGluZURpc3BsYXk6OkJveGVzJiBkaXNwbGF5Qm94ZXMsIGJvb2wgaXNMYXN0TGluZVdp
dGhJbmxpbmVDb250ZW50LCBib29sIGlzTGVnYWN5TGluZUNsYW1wKQoreworICAgIGlmICh0cnVu
Y2F0aW9uUG9saWN5ID09IExpbmVFbmRpbmdUcnVuY2F0aW9uUG9saWN5OjpOb1RydW5jYXRpb24g
fHwgIWRpc3BsYXlCb3hlcy5zaXplKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gZWxs
aXBzaXNUZXh0ID0gWyZdIHsKKyAgICAgICAgaWYgKHRydW5jYXRpb25Qb2xpY3kgPT0gTGluZUVu
ZGluZ1RydW5jYXRpb25Qb2xpY3k6OldoZW5Db250ZW50T3ZlcmZsb3dzSW5JbmxpbmVEaXJlY3Rp
b24gfHwgaXNMZWdhY3lMaW5lQ2xhbXApIHsKKyAgICAgICAgICAgIC8vIExlZ2FjeSBsaW5lIGNs
YW1wIGFsd2F5cyB1c2VzIC4uLgorICAgICAgICAgICAgcmV0dXJuIFRleHRVdGlsOjplbGxpcHNp
c1RleHRJbklubGluZURpcmVjdGlvbihkaXNwbGF5TGluZS5pc0hvcml6b250YWwoKSk7CisgICAg
ICAgIH0KKyAgICAgICAgYXV0byYgYmxvY2tFbGxpcHNpcyA9IGRpc3BsYXlCb3hlc1swXS5sYXlv
dXRCb3goKS5zdHlsZSgpLmJsb2NrRWxsaXBzaXMoKTsKKyAgICAgICAgaWYgKGJsb2NrRWxsaXBz
aXMudHlwZSA9PSBCbG9ja0VsbGlwc2lzOjpUeXBlOjpOb25lKQorICAgICAgICAgICAgcmV0dXJu
IG51bGxBdG9tKCk7CisgICAgICAgIGlmIChibG9ja0VsbGlwc2lzLnR5cGUgPT0gQmxvY2tFbGxp
cHNpczo6VHlwZTo6QXV0bykKKyAgICAgICAgICAgIHJldHVybiBUZXh0VXRpbDo6ZWxsaXBzaXNU
ZXh0SW5JbmxpbmVEaXJlY3Rpb24oZGlzcGxheUxpbmUuaXNIb3Jpem9udGFsKCkpOworICAgICAg
ICByZXR1cm4gYmxvY2tFbGxpcHNpcy5zdHJpbmc7CisgICAgfSgpOworCisgICAgaWYgKGVsbGlw
c2lzVGV4dC5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKGF1dG8gZWxsaXBz
aXNSZWN0ID0gdHJhaWxpbmdFbGxpcHNpc1Zpc3VhbFJlY3RBZnRlclRydW5jYXRpb24odHJ1bmNh
dGlvblBvbGljeSwgZWxsaXBzaXNUZXh0LCBkaXNwbGF5TGluZSwgZGlzcGxheUJveGVzLCBpc0xh
c3RMaW5lV2l0aElubGluZUNvbnRlbnQpKQorICAgICAgICBkaXNwbGF5TGluZS5zZXRFbGxpcHNp
cyh7IHRydW5jYXRpb25Qb2xpY3kgPT0gTGluZUVuZGluZ1RydW5jYXRpb25Qb2xpY3k6OldoZW5D
b250ZW50T3ZlcmZsb3dzSW5JbmxpbmVEaXJlY3Rpb24gPyBJbmxpbmVEaXNwbGF5OjpMaW5lOjpF
bGxpcHNpczo6VHlwZTo6SW5saW5lIDogSW5saW5lRGlzcGxheTo6TGluZTo6RWxsaXBzaXM6OlR5
cGU6OkJsb2NrLCAqZWxsaXBzaXNSZWN0LCBlbGxpcHNpc1RleHQgfSk7Cit9CisKIH0KIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxp
bmUvZGlzcGxheS9JbmxpbmVEaXNwbGF5TGluZUJ1aWxkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL2Rpc3BsYXkvSW5saW5lRGlzcGxheUxpbmVC
dWlsZGVyLmgKaW5kZXggY2IxMDlhZTkxYjc4Li5kZjY5MTUwY2Y5MDkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL2Rpc3BsYXkvSW5s
aW5lRGlzcGxheUxpbmVCdWlsZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1h
dHRpbmdDb250ZXh0cy9pbmxpbmUvZGlzcGxheS9JbmxpbmVEaXNwbGF5TGluZUJ1aWxkZXIuaApA
QCAtNDEsOCArNDEsOCBAQCBwdWJsaWM6CiAKICAgICBJbmxpbmVEaXNwbGF5OjpMaW5lIGJ1aWxk
KGNvbnN0IExpbmVMYXlvdXRSZXN1bHQmLCBjb25zdCBMaW5lQm94JiwgYm9vbCBsaW5lSXNGdWxs
eVRydW5jYXRlZEluQmxvY2tEaXJlY3Rpb24pIGNvbnN0OwogCi0gICAgc3RhdGljIHN0ZDo6b3B0
aW9uYWw8RmxvYXRSZWN0PiB0cmFpbGluZ0VsbGlwc2lzVmlzdWFsUmVjdEFmdGVyVHJ1bmNhdGlv
bihMaW5lRW5kaW5nVHJ1bmNhdGlvblBvbGljeSwgY29uc3QgSW5saW5lRGlzcGxheTo6TGluZSYs
IElubGluZURpc3BsYXk6OkJveGVzJiwgYm9vbCBpc0xhc3RMaW5lV2l0aElubGluZUNvbnRlbnQp
OwotICAgIHN0YXRpYyB2b2lkIGFkZExpbmVDbGFtcFRyYWlsaW5nTGlua0JveElmQXBwbGljYWJs
ZShjb25zdCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dCYsIGNvbnN0IElubGluZUxheW91dFN0YXRl
JiwgSW5saW5lRGlzcGxheTo6Q29udGVudCYpOworICAgIHN0YXRpYyB2b2lkIGFwcGx5RWxsaXBz
aXNJZk5lZWRlZChMaW5lRW5kaW5nVHJ1bmNhdGlvblBvbGljeSwgSW5saW5lRGlzcGxheTo6TGlu
ZSYsIElubGluZURpc3BsYXk6OkJveGVzJiwgYm9vbCBpc0xhc3RMaW5lV2l0aElubGluZUNvbnRl
bnQsIGJvb2wgaXNMZWdhY3lMaW5lQ2xhbXApOworICAgIHN0YXRpYyB2b2lkIGFkZExlZ2FjeUxp
bmVDbGFtcFRyYWlsaW5nTGlua0JveElmQXBwbGljYWJsZShjb25zdCBJbmxpbmVGb3JtYXR0aW5n
Q29udGV4dCYsIGNvbnN0IElubGluZUxheW91dFN0YXRlJiwgSW5saW5lRGlzcGxheTo6Q29udGVu
dCYpOwogCiBwcml2YXRlOgogICAgIHN0cnVjdCBFbmNsb3NpbmdMaW5lR2VvbWV0cnkgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUv
dGV4dC9UZXh0VXRpbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRl
eHRzL2lubGluZS90ZXh0L1RleHRVdGlsLmNwcAppbmRleCAwYWJhOWQzZGE2MTcuLjA2MDRkMzQ3
ZTQ4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0
cy9pbmxpbmUvdGV4dC9UZXh0VXRpbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zv
cm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvdGV4dC9UZXh0VXRpbC5jcHAKQEAgLTU3OCwxNCArNTc4
LDE0IEBAIFRleHREaXJlY3Rpb24gVGV4dFV0aWw6OmRpcmVjdGlvbkZvclRleHRDb250ZW50KFN0
cmluZ1ZpZXcgY29udGVudCkKICAgICByZXR1cm4gdWJpZGlfZ2V0QmFzZURpcmVjdGlvbihjaGFy
YWN0ZXJzLmRhdGEoKSwgY2hhcmFjdGVycy5zaXplKCkpID09IFVCSURJX1JUTCA/IFRleHREaXJl
Y3Rpb246OlJUTCA6IFRleHREaXJlY3Rpb246OkxUUjsKIH0KIAotVGV4dFJ1biBUZXh0VXRpbDo6
ZWxsaXBzaXNUZXh0UnVuKGJvb2wgaXNIb3Jpem9udGFsKQorQXRvbVN0cmluZyBUZXh0VXRpbDo6
ZWxsaXBzaXNUZXh0SW5JbmxpbmVEaXJlY3Rpb24oYm9vbCBpc0hvcml6b250YWwpCiB7CiAgICAg
aWYgKGlzSG9yaXpvbnRhbCkgewogICAgICAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJv
eWVkPGNvbnN0IEF0b21TdHJpbmc+IGhvcml6b250YWxFbGxpcHNpc1N0cihzcGFuKGhvcml6b250
YWxFbGxpcHNpcykpOwotICAgICAgICByZXR1cm4gVGV4dFJ1biB7IGhvcml6b250YWxFbGxpcHNp
c1N0ci0+c3RyaW5nKCkgfTsKKyAgICAgICAgcmV0dXJuIGhvcml6b250YWxFbGxpcHNpc1N0cjsK
ICAgICB9CiAgICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3Ry
aW5nPiB2ZXJ0aWNhbEVsbGlwc2lzU3RyKHNwYW4odmVydGljYWxFbGxpcHNpcykpOwotICAgIHJl
dHVybiBUZXh0UnVuIHsgdmVydGljYWxFbGxpcHNpc1N0ci0+c3RyaW5nKCkgfTsKKyAgICByZXR1
cm4gdmVydGljYWxFbGxpcHNpc1N0cjsKIH0KIAogYm9vbCBUZXh0VXRpbDo6aGFzSGFuZ2FibGVQ
dW5jdHVhdGlvblN0YXJ0KGNvbnN0IElubGluZVRleHRJdGVtJiBpbmxpbmVUZXh0SXRlbSwgY29u
c3QgUmVuZGVyU3R5bGUmIHN0eWxlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvdGV4dC9UZXh0VXRpbC5oIGIvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvdGV4dC9UZXh0VXRpbC5oCmluZGV4
IDFkZjBlN2I5MDQ2ZS4uNGEzZjg2YWM5OTkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS90ZXh0L1RleHRVdGlsLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvdGV4dC9UZXh0VXRp
bC5oCkBAIC04Nyw3ICs4Nyw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBpc1N0cm9uZ0Rp
cmVjdGlvbmFsaXR5Q2hhcmFjdGVyKGNoYXIzMl90KTsKICAgICBzdGF0aWMgYm9vbCBjb250YWlu
c1N0cm9uZ0RpcmVjdGlvbmFsaXR5VGV4dChTdHJpbmdWaWV3KTsKIAotICAgIHN0YXRpYyBUZXh0
UnVuIGVsbGlwc2lzVGV4dFJ1bihib29sIGlzSG9yaXpvbnRhbCA9IHRydWUpOworICAgIHN0YXRp
YyBBdG9tU3RyaW5nIGVsbGlwc2lzVGV4dEluSW5saW5lRGlyZWN0aW9uKGJvb2wgaXNIb3Jpem9u
dGFsID0gdHJ1ZSk7CiAKICAgICBzdGF0aWMgc2l6ZV90IGZpcnN0VXNlclBlcmNlaXZlZENoYXJh
Y3Rlckxlbmd0aChjb25zdCBJbmxpbmVUZXh0SXRlbSYpOwogICAgIHN0YXRpYyBzaXplX3QgZmly
c3RVc2VyUGVyY2VpdmVkQ2hhcmFjdGVyTGVuZ3RoKGNvbnN0IElubGluZVRleHRCb3gmLCBzaXpl
X3Qgc3RhcnRQb3NpdGlvbiwgc2l6ZV90IGxlbmd0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvaW50ZWdyYXRpb24vaW5saW5lL0lubGluZUl0ZXJhdG9yTGluZUJveE1vZGVy
blBhdGguaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9pbmxpbmUvSW5saW5l
SXRlcmF0b3JMaW5lQm94TW9kZXJuUGF0aC5oCmluZGV4IDBmNDEwZDFmODY4Mi4uZWMxNzZjZWJi
NGU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vaW5saW5l
L0lubGluZUl0ZXJhdG9yTGluZUJveE1vZGVyblBhdGguaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvaW50ZWdyYXRpb24vaW5saW5lL0lubGluZUl0ZXJhdG9yTGluZUJveE1vZGVyblBhdGgu
aApAQCAtNTgsOCArNTgsOCBAQCBwdWJsaWM6CiAgICAgZmxvYXQgc2Nyb2xsYWJsZU92ZXJmbG93
Qm90dG9tKCkgY29uc3QgeyByZXR1cm4gbGluZSgpLnNjcm9sbGFibGVPdmVyZmxvdygpLm1heFko
KTsgfQogCiAgICAgYm9vbCBoYXNFbGxpcHNpcygpIGNvbnN0IHsgcmV0dXJuIGxpbmUoKS5oYXNF
bGxpcHNpcygpOyB9Ci0gICAgRmxvYXRSZWN0IGVsbGlwc2lzVmlzdWFsUmVjdElnbm9yaW5nQmxv
Y2tEaXJlY3Rpb24oKSBjb25zdCB7IHJldHVybiAqbGluZSgpLmVsbGlwc2lzVmlzdWFsUmVjdCgp
OyB9Ci0gICAgVGV4dFJ1biBlbGxpcHNpc1RleHQoKSBjb25zdCB7IHJldHVybiBsaW5lKCkuZWxs
aXBzaXNUZXh0KCk7IH0KKyAgICBGbG9hdFJlY3QgZWxsaXBzaXNWaXN1YWxSZWN0SWdub3JpbmdC
bG9ja0RpcmVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIGxpbmUoKS5lbGxpcHNpcygpLT52aXN1YWxS
ZWN0OyB9CisgICAgVGV4dFJ1biBlbGxpcHNpc1RleHQoKSBjb25zdCB7IHJldHVybiBUZXh0UnVu
IHsgbGluZSgpLmVsbGlwc2lzKCktPnRleHQuc3RyaW5nKCkgfTsgfQogCiAgICAgZmxvYXQgY29u
dGVudExvZ2ljYWxUb3BBZGp1c3RlZEZvclByZWNlZGluZ0xpbmVCb3goKSBjb25zdAogICAgIHsK
</data>

          </attachment>
      

    </bug>

</bugzilla>