<?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>188596</bug_id>
          
          <creation_ts>2018-08-14 20:52:43 -0700</creation_ts>
          <short_desc>[Attachment SPI] Remove attachment display mode options</short_desc>
          <delta_ts>2018-08-15 07:27:14 -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>WebKit2</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="Wenson Hsieh">wenson_hsieh</reporter>
          <assigned_to name="Wenson Hsieh">wenson_hsieh</assigned_to>
          <cc>bdakin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>mitz</cc>
    
    <cc>sam</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1450225</commentid>
    <comment_count>0</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-08-14 20:52:43 -0700</bug_when>
    <thetext>Remove attachment display mode options, since r227068 offers a more suitable alternative for the purposes of Mail.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1450233</commentid>
    <comment_count>1</comment_count>
      <attachid>347147</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-08-14 21:17:49 -0700</bug_when>
    <thetext>Created attachment 347147
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1450234</commentid>
    <comment_count>2</comment_count>
      <attachid>347147</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-08-14 21:20:41 -0700</bug_when>
    <thetext>Comment on attachment 347147
Patch

Oops, this actually won&apos;t work — Mail still sets mode to _WKAttachmentDisplayModeAsIcon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1450235</commentid>
    <comment_count>3</comment_count>
      <attachid>347148</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-08-14 21:26:52 -0700</bug_when>
    <thetext>Created attachment 347148
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1450283</commentid>
    <comment_count>4</comment_count>
      <attachid>347148</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-08-15 07:26:13 -0700</bug_when>
    <thetext>Comment on attachment 347148
Patch

Clearing flags on attachment: 347148

Committed r234885: &lt;https://trac.webkit.org/changeset/234885&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1450284</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-08-15 07:26:14 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1450286</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-08-15 07:27:14 -0700</bug_when>
    <thetext>&lt;rdar://problem/43332450&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>347147</attachid>
            <date>2018-08-14 21:17:49 -0700</date>
            <delta_ts>2018-08-14 21:26:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-188596-20180814211748.patch</filename>
            <type>text/plain</type>
            <size>52767</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM0ODYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmMwYmJiZGM4N2NjZGU3
MjM0NjMyY2JiNDE1Y2E5YmVkMTc5N2M4ZS4uNWJlM2ZjOTE2MzIxMGU4Njc1NWEyZDM0Y2VhMjU3
ZjlkM2RhNGI2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU2IEBACisyMDE4LTA4LTE0ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtBdHRhY2htZW50
IFNQSV0gUmVtb3ZlIGF0dGFjaG1lbnQgZGlzcGxheSBtb2RlIG9wdGlvbnMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4ODU5NgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92ZSB0aGUgYWJpbGl0eSB0
byBzcGVjaWZ5IGFuICJpbi1wbGFjZSIgb3IgImljb24iIHJlcHJlc2VudGF0aW9uIGZvciBhdHRh
Y2htZW50IGVsZW1lbnRzLCBhcyB3ZWxsIGFzIGxvZ2ljCisgICAgICAgIG5lZWRlZCB0byBhbGxv
dyBhbiBhdHRhY2htZW50IGVsZW1lbnQgdG8gcmVuZGVyIGltYWdlIG9yIHZpZGVvIGVsZW1lbnRz
IGluIGEgc2hhZG93IHJvb3QuIFRoZSByZXF1aXJlbWVudHMgdGhhdAorICAgICAgICBpbml0aWFs
bHkgZHJvdmUgdGhpcyBlZmZvcnQgYXJlIG9idmlhdGVkIGJ5IHIyMjcwNjgsIHdoaWNoIGFsbG93
cyBNYWlsIHRvIGludGVyY2VwdCBhbmQgcHJvdmlkZSBhIGN1c3RvbSBzY2hlbWUKKyAgICAgICAg
Zm9yIGltYWdlcyBpbnNlcnRlZCBpbnRvIHRoZSBkb2N1bWVudCB2aWEgcmljaCBlZGl0aW5nIG9w
ZXJhdGlvbnMuCisKKyAgICAgICAgUmVtb3ZlZCBzb21lIGV4aXN0aW5nIEFQSSB0ZXN0cyBpbiBf
V0tBdHRhY2htZW50VGVzdHMgdGhhdCBleGVyY2lzZWQgdGhpcyBmdW5jdGlvbmFsaXR5LgorCisg
ICAgICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpp
bnNlcnRBdHRhY2htZW50RnJvbUZpbGUpOgorICAgICAgICAqIGVkaXRpbmcvY29jb2EvV2ViQ29u
dGVudFJlYWRlckNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRnJhZ21lbnRGb3JJ
bWFnZUF0dGFjaG1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6cmVwbGFjZVJpY2hDb250ZW50V2l0
aEF0dGFjaG1lbnRzKToKKyAgICAgICAgKiBodG1sL0F0dGFjaG1lbnRUeXBlcy5oOgorICAgICAg
ICAoV2ViQ29yZTo6QXR0YWNobWVudERpc3BsYXlPcHRpb25zOjplbmNvZGUgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6QXR0YWNobWVudERpc3BsYXlPcHRpb25zOjpkZWNvZGUpOgorCisgICAg
ICAgIFJlbW92ZSBsb2dpYyBmb3IgZW5jb2RpbmcgdGhlIGF0dGFjaG1lbnQgZGlzcGxheSBtb2Rl
LiBXaGlsZSB0aGlzIGxlYXZlcyBBdHRhY2htZW50RGlzcGxheU9wdGlvbnMgY29tcGxldGVseQor
ICAgICAgICBlbXB0eSwgSSBoYXZlbid0IHJlbW92ZWQgQXR0YWNobWVudERpc3BsYXlPcHRpb25z
IGFzIHdlbGwgaW4gdGhpcyBwYXRjaCwgc2luY2UgaXQncyBub3QgY2xlYXIgdGhhdCB3ZSB3b24n
dCBiZQorICAgICAgICBuZWVkaW5nIGFueSBtZWNoYW5pc20gZm9yIGluZmx1ZW5jaW5nIHRoZSBk
aXNwbGF5IG9mIGF0dGFjaG1lbnQgZWxlbWVudHMgaW5zZXJ0ZWQgdmlhIG5hdGl2ZSBTUEkuCisK
KyAgICAgICAgKCk6IERlbGV0ZWQuCisgICAgICAgICogaHRtbC9IVE1MQXR0YWNobWVudEVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEF0dGFjaG1lbnRFbGVtZW50OjpjcmVhdGVF
bGVtZW50UmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEF0dGFjaG1lbnRFbGVtZW50
OjpzZXRGaWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxBdHRhY2htZW50RWxlbWVudDo6cGFy
c2VBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEF0dGFjaG1lbnRFbGVtZW50Ojpp
bnZhbGlkYXRlU2hhZG93Um9vdENoaWxkcmVuSWZOZWNlc3NhcnkpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTEF0dGFjaG1lbnRFbGVtZW50OjphdHRhY2htZW50UmVuZGVyZXIgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SFRNTEF0dGFjaG1lbnRFbGVtZW50Ojp1
cGRhdGVEaXNwbGF5TW9kZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MQXR0YWNo
bWVudEVsZW1lbnQ6OmVuc3VyZUlubmVySW1hZ2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTEF0dGFjaG1lbnRFbGVtZW50OjplbnN1cmVJbm5lclZpZGVvKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxBdHRhY2htZW50RWxlbWVudDo6aW5uZXJJbWFnZSBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MQXR0YWNobWVudEVsZW1lbnQ6OmlubmVy
VmlkZW8gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SFRNTEF0dGFjaG1lbnRF
bGVtZW50Ojpwb3B1bGF0ZVNoYWRvd1Jvb3RJZk5lY2Vzc2FyeSk6IERlbGV0ZWQuCisKKyAgICAg
ICAgUmVtb3ZlIGxvZ2ljIGZvciBidWlsZGluZyB0aGUgc2hhZG93IHJvb3QgdG8gaG91c2UgaW5s
aW5lIG1lZGlhIGVsZW1lbnRzLgorCisgICAgICAgICogaHRtbC9IVE1MQXR0YWNobWVudEVsZW1l
bnQuaDoKKworICAgICAgICBUaGUgcmVuZGVyZXIgb2YgdGhlIGF0dGFjaG1lbnQgZWxlbWVudCBp
cyBvbmNlIGFnYWluIGFsd2F5cyBhIGBSZW5kZXJBdHRhY2htZW50YCwgc28gd2UgY2FuIHJlbW92
ZQorICAgICAgICBgYXR0YWNobWVudFJlbmRlcmVyKClgIGFsdG9nZXRoZXIgYW5kIHJldmVydCB0
byBvdmVycmlkaW5nIGByZW5kZXJlcigpYCB0byByZXR1cm4gYSBgUmVuZGVyQXR0YWNobWVudCpg
LgorCisgICAgICAgICogcGFnZS9EcmFnQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpEcmFnQ29udHJvbGxlcjo6c3RhcnREcmFnKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
QXR0YWNobWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEF0dGFjaG1lbnRFbGVtZW50Ojpy
ZW5kZXJlciBjb25zdCk6CisKIDIwMTgtMDgtMTQgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0
ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBVc2UgYSBWYXJpYW50IGluc3RlYWQgb2YgYSB1
bmlvbiBpbiBDU1NTZWxlY3RvcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAzM2IxMWViMDE2NDFhYTczOWExMjcyZTdi
MTA4NjU5ZDA3NTQwMzY2Li5lNWFiMTMxODNmMTkwYWIwY2Q5OGE4YjM2ZmJhMWEwZTc2MGE4MTFm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDE4LTA4LTE0ICBXZW5zb24gSHNpZWggIDx3
ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtBdHRhY2htZW50IFNQSV0gUmVtb3Zl
IGF0dGFjaG1lbnQgZGlzcGxheSBtb2RlIG9wdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4ODU5NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92ZSBhdHRhY2htZW50IGRpc3BsYXkgbW9kZSBm
cm9tIFdlYktpdC4gTm90ZSB0aGF0IF9XS0F0dGFjaG1lbnREaXNwbGF5T3B0aW9ucyBuZWVkcyB0
byByZW1haW4gaW4gdGhlIHByaXZhdGUKKyAgICAgICAgaGVhZGVyIGZvciBzb3VyY2UgY29tcGF0
aWJpbGl0eSB3aXRoIE1haWwuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0F0
dGFjaG1lbnQubW06CisgICAgICAgICgtW19XS0F0dGFjaG1lbnREaXNwbGF5T3B0aW9ucyBjb3Jl
RGlzcGxheU9wdGlvbnNdKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNldEF0dGFjaG1lbnREaXNw
bGF5T3B0aW9ucyk6CisKIDIwMTgtMDgtMTQgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUu
Y29tPgogCiAgICAgICAgIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uIHNob3VsZCB1c2UgT3B0
aW9uU2V0IGZvciBjaGFuZ2UgZmxhZ3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAppbmRleCAx
YmFjN2Y0ZTM2ZGYzNjVlYjJlZjJiNzI4MGNjODQyNDQyYTk0YWVhLi43ZDI2YzU2MzZiZTMxZWYz
NmI3MTNmMDc3ODA0MzFhNjQ5ZDRlMDU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0VkaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCkBA
IC0zODczLDcgKzM4NzMsNyBAQCB2b2lkIEVkaXRvcjo6aW5zZXJ0QXR0YWNobWVudChjb25zdCBT
dHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IEF0dGFjaG1lbnREaXNwbGF5TwogICAgIGluc2VydEF0
dGFjaG1lbnRGcm9tRmlsZShpZGVudGlmaWVyLCBvcHRpb25zLCBmaWxlbmFtZSwgKmNvbnRlbnRU
eXBlLCBGaWxlOjpjcmVhdGUoQmxvYjo6Y3JlYXRlKFdURk1vdmUoZGF0YSksICpjb250ZW50VHlw
ZSksIGZpbGVuYW1lKSk7CiB9CiAKLXZvaWQgRWRpdG9yOjppbnNlcnRBdHRhY2htZW50RnJvbUZp
bGUoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBBdHRhY2htZW50RGlzcGxheU9wdGlv
bnMmIG9wdGlvbnMsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgY29udGVu
dFR5cGUsIFJlZjxGaWxlPiYmIGZpbGUpCit2b2lkIEVkaXRvcjo6aW5zZXJ0QXR0YWNobWVudEZy
b21GaWxlKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgQXR0YWNobWVudERpc3BsYXlP
cHRpb25zJiwgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlw
ZSwgUmVmPEZpbGU+JiYgZmlsZSkKIHsKICAgICBhdXRvIGF0dGFjaG1lbnQgPSBIVE1MQXR0YWNo
bWVudEVsZW1lbnQ6OmNyZWF0ZShIVE1MTmFtZXM6OmF0dGFjaG1lbnRUYWcsIGRvY3VtZW50KCkp
OwogICAgIGF0dGFjaG1lbnQtPnNldEF0dHJpYnV0ZShIVE1MTmFtZXM6OnRpdGxlQXR0ciwgZmls
ZW5hbWUpOwpAQCAtMzg4MSw3ICszODgxLDYgQEAgdm9pZCBFZGl0b3I6Omluc2VydEF0dGFjaG1l
bnRGcm9tRmlsZShjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IEF0dGFjaG1lbnQKICAg
ICBhdHRhY2htZW50LT5zZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjp0eXBlQXR0ciwgY29udGVudFR5
cGUpOwogICAgIGF0dGFjaG1lbnQtPnNldFVuaXF1ZUlkZW50aWZpZXIoaWRlbnRpZmllcik7CiAg
ICAgYXR0YWNobWVudC0+c2V0RmlsZShXVEZNb3ZlKGZpbGUpKTsKLSAgICBhdHRhY2htZW50LT51
cGRhdGVEaXNwbGF5TW9kZShvcHRpb25zLm1vZGUpOwogCiAgICAgYXV0byBmcmFnbWVudFRvSW5z
ZXJ0ID0gZG9jdW1lbnQoKS5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7CiAgICAgZnJhZ21lbnRU
b0luc2VydC0+YXBwZW5kQ2hpbGQoYXR0YWNobWVudC5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbSBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tCmluZGV4IDk3
Mjg1NTg3YmUyMDZmOTRhYmJhOGI3MDExZDNkZDYyNmEzNGE4MGQuLjFjYjJiMWNlNmFkY2E0NjU2
MTE3Y2RhMjc0YjA4MTFkMzE4OGI0NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tCkBAIC0yMDksNyArMjA5LDYgQEAg
c3RhdGljIFJlZjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVGcmFnbWVudEZvckltYWdlQXR0YWNo
bWVudChEb2N1bWVudCYgZG9jdW1lbnQKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQog
ICAgIGF1dG8gYXR0YWNobWVudCA9IEhUTUxBdHRhY2htZW50RWxlbWVudDo6Y3JlYXRlKEhUTUxO
YW1lczo6YXR0YWNobWVudFRhZywgZG9jdW1lbnQpOwogICAgIGF0dGFjaG1lbnQtPnNldEZpbGUo
RmlsZTo6Y3JlYXRlKGJsb2IsIEF0b21pY1N0cmluZygiaW1hZ2UiKSksIEhUTUxBdHRhY2htZW50
RWxlbWVudDo6VXBkYXRlRGlzcGxheUF0dHJpYnV0ZXM6Olllcyk7Ci0gICAgYXR0YWNobWVudC0+
dXBkYXRlRGlzcGxheU1vZGUoQXR0YWNobWVudERpc3BsYXlNb2RlOjpJblBsYWNlKTsKIAogICAg
IGF1dG8gZnJhZ21lbnQgPSBkb2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7CiAgICAg
ZnJhZ21lbnQtPmFwcGVuZENoaWxkKGF0dGFjaG1lbnQpOwpAQCAtMjI1LDcgKzIyNCw2IEBAIHN0
YXRpYyB2b2lkIHJlcGxhY2VSaWNoQ29udGVudFdpdGhBdHRhY2htZW50cyhEb2N1bWVudEZyYWdt
ZW50JiBmcmFnbWVudCwgY29uc3QKIHsKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQog
ICAgIHN0cnVjdCBBdHRhY2htZW50UmVwbGFjZW1lbnRJbmZvIHsKLSAgICAgICAgQXR0YWNobWVu
dERpc3BsYXlNb2RlIGRpc3BsYXlNb2RlOwogICAgICAgICBSZWY8RmlsZT4gZmlsZTsKICAgICAg
ICAgUmVmPEVsZW1lbnQ+IGVsZW1lbnRUb1JlcGxhY2U7CiAgICAgfTsKQEAgLTI1Nyw3ICsyNTUs
NyBAQCBzdGF0aWMgdm9pZCByZXBsYWNlUmljaENvbnRlbnRXaXRoQXR0YWNobWVudHMoRG9jdW1l
bnRGcmFnbWVudCYgZnJhZ21lbnQsIGNvbnN0CiAgICAgICAgIGlmICh0aXRsZS5pc0VtcHR5KCkp
CiAgICAgICAgICAgICB0aXRsZSA9IEF0b21pY1N0cmluZygibWVkaWEiKTsKIAotICAgICAgICBh
dHRhY2htZW50UmVwbGFjZW1lbnRJbmZvLmFwcGVuZCh7IEF0dGFjaG1lbnREaXNwbGF5TW9kZTo6
SW5QbGFjZSwgRmlsZTo6Y3JlYXRlKCpibG9iLCB0aXRsZSksIGltYWdlIH0pOworICAgICAgICBh
dHRhY2htZW50UmVwbGFjZW1lbnRJbmZvLmFwcGVuZCh7IEZpbGU6OmNyZWF0ZSgqYmxvYiwgdGl0
bGUpLCBpbWFnZSB9KTsKICAgICB9CiAKICAgICBmb3IgKGF1dG8mIG9iamVjdCA6IGRlc2NlbmRh
bnRzT2ZUeXBlPEhUTUxPYmplY3RFbGVtZW50PihmcmFnbWVudCkpIHsKQEAgLTI3Nyw3ICsyNzUs
NyBAQCBzdGF0aWMgdm9pZCByZXBsYWNlUmljaENvbnRlbnRXaXRoQXR0YWNobWVudHMoRG9jdW1l
bnRGcmFnbWVudCYgZnJhZ21lbnQsIGNvbnN0CiAgICAgICAgIGlmICh0aXRsZS5pc0VtcHR5KCkp
CiAgICAgICAgICAgICB0aXRsZSA9IEF0b21pY1N0cmluZygiZmlsZSIpOwogCi0gICAgICAgIGF0
dGFjaG1lbnRSZXBsYWNlbWVudEluZm8uYXBwZW5kKHsgQXR0YWNobWVudERpc3BsYXlNb2RlOjpB
c0ljb24sIEZpbGU6OmNyZWF0ZSgqYmxvYiwgdGl0bGUpLCBvYmplY3QgfSk7CisgICAgICAgIGF0
dGFjaG1lbnRSZXBsYWNlbWVudEluZm8uYXBwZW5kKHsgRmlsZTo6Y3JlYXRlKCpibG9iLCB0aXRs
ZSksIG9iamVjdCB9KTsKICAgICB9CiAKICAgICBmb3IgKGF1dG8mIGluZm8gOiBhdHRhY2htZW50
UmVwbGFjZW1lbnRJbmZvKSB7CkBAIC0yODksNyArMjg3LDYgQEAgc3RhdGljIHZvaWQgcmVwbGFj
ZVJpY2hDb250ZW50V2l0aEF0dGFjaG1lbnRzKERvY3VtZW50RnJhZ21lbnQmIGZyYWdtZW50LCBj
b25zdAogCiAgICAgICAgIGF1dG8gYXR0YWNobWVudCA9IEhUTUxBdHRhY2htZW50RWxlbWVudDo6
Y3JlYXRlKEhUTUxOYW1lczo6YXR0YWNobWVudFRhZywgZnJhZ21lbnQuZG9jdW1lbnQoKSk7CiAg
ICAgICAgIGF0dGFjaG1lbnQtPnNldEZpbGUoV1RGTW92ZShmaWxlKSwgSFRNTEF0dGFjaG1lbnRF
bGVtZW50OjpVcGRhdGVEaXNwbGF5QXR0cmlidXRlczo6WWVzKTsKLSAgICAgICAgYXR0YWNobWVu
dC0+dXBkYXRlRGlzcGxheU1vZGUoaW5mby5kaXNwbGF5TW9kZSk7CiAgICAgICAgIHBhcmVudC0+
cmVwbGFjZUNoaWxkKGF0dGFjaG1lbnQsIGVsZW1lbnRUb1JlcGxhY2UpOwogICAgIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9BdHRhY2htZW50VHlwZXMuaCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvQXR0YWNobWVudFR5cGVzLmgKaW5kZXggODhjMTgxN2VhZjA0Y2YxY2MxNjQ2
N2Y2YTE3NzZjZmQ3ZGMxNDIwYi4uYjUwNzdjYTQwODIyMTc1NTBlMWJmNWNiNzQyODVjYzRhNDNl
ZTZjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9BdHRhY2htZW50VHlwZXMuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0F0dGFjaG1lbnRUeXBlcy5oCkBAIC0zNCwzMSArMzQs
MjAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBTaGFyZWRCdWZmZXI7CiAKLWVudW0g
Y2xhc3MgQXR0YWNobWVudERpc3BsYXlNb2RlIHsKLSAgICBBdXRvLAotICAgIEluUGxhY2UsCi0g
ICAgQXNJY29uCi19OwotCiBzdHJ1Y3QgQXR0YWNobWVudERpc3BsYXlPcHRpb25zIHsKLSAgICBB
dHRhY2htZW50RGlzcGxheU1vZGUgbW9kZSB7IEF0dGFjaG1lbnREaXNwbGF5TW9kZTo6QXV0byB9
OwotCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNv
bnN0OwogICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEF0
dGFjaG1lbnREaXNwbGF5T3B0aW9ucz4gZGVjb2RlKERlY29kZXImKTsKIH07CiAKIHRlbXBsYXRl
PGNsYXNzIEVuY29kZXI+IGlubGluZSB2b2lkIEF0dGFjaG1lbnREaXNwbGF5T3B0aW9uczo6ZW5j
b2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7Ci0gICAgZW5jb2Rlci5lbmNvZGVFbnVtKG1v
ZGUpOworICAgIFVOVVNFRF9QQVJBTShlbmNvZGVyKTsKIH0KIAogdGVtcGxhdGU8Y2xhc3MgRGVj
b2Rlcj4gaW5saW5lIHN0ZDo6b3B0aW9uYWw8QXR0YWNobWVudERpc3BsYXlPcHRpb25zPiBBdHRh
Y2htZW50RGlzcGxheU9wdGlvbnM6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewotICAgIEF0
dGFjaG1lbnREaXNwbGF5TW9kZSBtb2RlOwotICAgIGlmICghZGVjb2Rlci5kZWNvZGVFbnVtKG1v
ZGUpKQotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotCi0gICAgcmV0dXJuIHt7IG1vZGUg
fX07CisgICAgVU5VU0VEX1BBUkFNKGRlY29kZXIpOworICAgIHJldHVybiBBdHRhY2htZW50RGlz
cGxheU9wdGlvbnMoKTsKIH0KIAogc3RydWN0IEF0dGFjaG1lbnRJbmZvIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmNwcAppbmRleCBmZTdkZDUzM2EyMmI4
YjNhN2MzN2VlM2ZlYzEzZjI0ZWQ0OGI0MDBhLi5lMTcxOWNkMTFmNjY2MDM1YmQ4MDRkYjNiOTdi
MmYzMzZhMDBmMzA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2ht
ZW50RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVs
ZW1lbnQuY3BwCkBAIC0zNSwyMSArMzUsMTIgQEAKICNpbmNsdWRlICJGaWxlUmVhZGVyTG9hZGVy
LmgiCiAjaW5jbHVkZSAiRmlsZVJlYWRlckxvYWRlckNsaWVudC5oIgogI2luY2x1ZGUgIkZyYW1l
LmgiCi0jaW5jbHVkZSAiSFRNTEltYWdlRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5o
IgotI2luY2x1ZGUgIkhUTUxWaWRlb0VsZW1lbnQuaCIKLSNpbmNsdWRlICJNSU1FVHlwZVJlZ2lz
dHJ5LmgiCiAjaW5jbHVkZSAiUmVuZGVyQXR0YWNobWVudC5oIgotI2luY2x1ZGUgIlJlbmRlckJs
b2NrRmxvdy5oIgotI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZm
ZXIuaCIKICNpbmNsdWRlIDxwYWwvRmlsZVNpemVGb3JtYXR0ZXIuaD4KICNpbmNsdWRlIDx3dGYv
SXNvTWFsbG9jSW5saW5lcy5oPgogCi0jaWYgUExBVEZPUk0oQ09DT0EpCi0jaW5jbHVkZSAiVVRJ
VXRpbGl0aWVzLmgiCi0jZW5kaWYKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBXVEZfTUFLRV9J
U09fQUxMT0NBVEVEX0lNUEwoSFRNTEF0dGFjaG1lbnRFbGVtZW50KTsKQEAgLTEwMSwxMSArOTIs
NiBAQCBSZWY8SFRNTEF0dGFjaG1lbnRFbGVtZW50PiBIVE1MQXR0YWNobWVudEVsZW1lbnQ6OmNy
ZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YQogCiBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4g
SFRNTEF0dGFjaG1lbnRFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUm
JiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKIHsKLSAgICBpZiAoIXN0eWxlLmhh
c0FwcGVhcmFuY2UoKSkgewotICAgICAgICAvLyBJZiB0aGlzIGF0dGFjaG1lbnQgZWxlbWVudCBk
b2Vzbid0IGhhdmUgYW4gYXBwZWFyYW5jZSwgZGVmZXIgcmVuZGVyaW5nIHRvIGNoaWxkIGVsZW1l
bnRzLgotICAgICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyQmxvY2tGbG93PigqdGhp
cywgV1RGTW92ZShzdHlsZSkpOwotICAgIH0KLQogICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxS
ZW5kZXJBdHRhY2htZW50PigqdGhpcywgV1RGTW92ZShzdHlsZSkpOwogfQogCkBAIC0xMzUsMjkg
KzEyMSw4IEBAIHZvaWQgSFRNTEF0dGFjaG1lbnRFbGVtZW50OjpzZXRGaWxlKFJlZlB0cjxGaWxl
PiYmIGZpbGUsIFVwZGF0ZURpc3BsYXlBdHRyaWJ1dGVzCiAgICAgICAgIH0KICAgICB9CiAKLSAg
ICBpZiAoYXV0byogcmVuZGVyQXR0YWNobWVudCA9IGF0dGFjaG1lbnRSZW5kZXJlcigpKQotICAg
ICAgICByZW5kZXJBdHRhY2htZW50LT5pbnZhbGlkYXRlKCk7Ci0KLSAgICBpbnZhbGlkYXRlU2hh
ZG93Um9vdENoaWxkcmVuSWZOZWNlc3NhcnkoKTsKLSAgICBwb3B1bGF0ZVNoYWRvd1Jvb3RJZk5l
Y2Vzc2FyeSgpOwotfQotCi12b2lkIEhUTUxBdHRhY2htZW50RWxlbWVudDo6aW52YWxpZGF0ZVNo
YWRvd1Jvb3RDaGlsZHJlbklmTmVjZXNzYXJ5KCkKLXsKLSAgICBpZiAoYXV0byBpbWFnZSA9IGlu
bmVySW1hZ2UoKSkgewotICAgICAgICBpbWFnZS0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9u
aXphdGlvbihzcmNBdHRyLCBlbXB0eVN0cmluZygpKTsKLSAgICAgICAgaW1hZ2UtPnNldElubGlu
ZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlEaXNwbGF5LCBDU1NWYWx1ZU5vbmUsIHRydWUpOwot
ICAgIH0KLSAgICBpZiAoYXV0byB2aWRlbyA9IGlubmVyVmlkZW8oKSkgewotICAgICAgICB2aWRl
by0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihzcmNBdHRyLCBlbXB0eVN0cmlu
ZygpKTsKLSAgICAgICAgdmlkZW8tPnNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlE
aXNwbGF5LCBDU1NWYWx1ZU5vbmUsIHRydWUpOwotICAgIH0KLX0KLQotUmVuZGVyQXR0YWNobWVu
dCogSFRNTEF0dGFjaG1lbnRFbGVtZW50OjphdHRhY2htZW50UmVuZGVyZXIoKSBjb25zdAotewot
ICAgIGF1dG8qIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKTsKLSAgICByZXR1cm4gaXM8UmVu
ZGVyQXR0YWNobWVudD4ocmVuZGVyZXIpID8gZG93bmNhc3Q8UmVuZGVyQXR0YWNobWVudD4ocmVu
ZGVyZXIpIDogbnVsbHB0cjsKKyAgICBpZiAoYXV0byogcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJl
cigpKQorICAgICAgICByZW5kZXJlci0+aW52YWxpZGF0ZSgpOwogfQogCiBOb2RlOjpJbnNlcnRl
ZEludG9BbmNlc3RvclJlc3VsdCBIVE1MQXR0YWNobWVudEVsZW1lbnQ6Omluc2VydGVkSW50b0Fu
Y2VzdG9yKEluc2VydGlvblR5cGUgdHlwZSwgQ29udGFpbmVyTm9kZSYgYW5jZXN0b3IpCkBAIC0x
NzgsOCArMTQzLDggQEAgdm9pZCBIVE1MQXR0YWNobWVudEVsZW1lbnQ6OnJlbW92ZWRGcm9tQW5j
ZXN0b3IoUmVtb3ZhbFR5cGUgdHlwZSwgQ29udGFpbmVyTm9kZSYKIHZvaWQgSFRNTEF0dGFjaG1l
bnRFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25z
dCBBdG9taWNTdHJpbmcmIHZhbHVlKQogewogICAgIGlmIChuYW1lID09IHByb2dyZXNzQXR0ciB8
fCBuYW1lID09IHN1YnRpdGxlQXR0ciB8fCBuYW1lID09IHRpdGxlQXR0ciB8fCBuYW1lID09IHR5
cGVBdHRyKSB7Ci0gICAgICAgIGlmIChhdXRvKiByZW5kZXJBdHRhY2htZW50ID0gYXR0YWNobWVu
dFJlbmRlcmVyKCkpCi0gICAgICAgICAgICByZW5kZXJBdHRhY2htZW50LT5pbnZhbGlkYXRlKCk7
CisgICAgICAgIGlmIChhdXRvKiByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCkpCisgICAgICAg
ICAgICByZW5kZXJlci0+aW52YWxpZGF0ZSgpOwogICAgIH0KIAogICAgIEhUTUxFbGVtZW50Ojpw
YXJzZUF0dHJpYnV0ZShuYW1lLCB2YWx1ZSk7CkBAIC0yMDMsMjggKzE2OCw2IEBAIFN0cmluZyBI
VE1MQXR0YWNobWVudEVsZW1lbnQ6OmF0dGFjaG1lbnRQYXRoKCkgY29uc3QKICAgICByZXR1cm4g
YXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbih3ZWJraXRhdHRhY2htZW50cGF0aEF0dHIp
OwogfQogCi12b2lkIEhUTUxBdHRhY2htZW50RWxlbWVudDo6dXBkYXRlRGlzcGxheU1vZGUoQXR0
YWNobWVudERpc3BsYXlNb2RlIG1vZGUpCi17Ci0gICAgbW9kZSA9IG1vZGUgPT0gQXR0YWNobWVu
dERpc3BsYXlNb2RlOjpBdXRvID8gZGVmYXVsdERpc3BsYXlNb2RlKCkgOiBtb2RlOwotCi0gICAg
c3dpdGNoIChtb2RlKSB7Ci0gICAgY2FzZSBBdHRhY2htZW50RGlzcGxheU1vZGU6OkluUGxhY2U6
Ci0gICAgICAgIHBvcHVsYXRlU2hhZG93Um9vdElmTmVjZXNzYXJ5KCk7Ci0gICAgICAgIHNldElu
bGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlXZWJraXRBcHBlYXJhbmNlLCBDU1NWYWx1ZU5v
bmUsIHRydWUpOwotICAgICAgICBzZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5RGlz
cGxheSwgQ1NTVmFsdWVJbmxpbmVCbG9jaywgdHJ1ZSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNh
c2UgQXR0YWNobWVudERpc3BsYXlNb2RlOjpBc0ljb246Ci0gICAgICAgIHJlbW92ZUlubGluZVN0
eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlXZWJraXRBcHBlYXJhbmNlKTsKLSAgICAgICAgcmVtb3Zl
SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eURpc3BsYXkpOwotICAgICAgICBicmVhazsK
LSAgICBkZWZhdWx0OgotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgYnJl
YWs7Ci0gICAgfQotCi0gICAgaW52YWxpZGF0ZVN0eWxlQW5kUmVuZGVyZXJzRm9yU3VidHJlZSgp
OwotfQotCiB2b2lkIEhUTUxBdHRhY2htZW50RWxlbWVudDo6dXBkYXRlRmlsZVdpdGhEYXRhKFJl
ZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSwgc3RkOjpvcHRpb25hbDxTdHJpbmc+JiYgbmV3Q29udGVu
dFR5cGUsIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiYmIG5ld0ZpbGVuYW1lKQogewogICAgIGF1dG8g
ZmlsZW5hbWUgPSBuZXdGaWxlbmFtZSA/ICpuZXdGaWxlbmFtZSA6IGF0dGFjaG1lbnRUaXRsZSgp
OwpAQCAtMjMzLDc1ICsxNzYsNiBAQCB2b2lkIEhUTUxBdHRhY2htZW50RWxlbWVudDo6dXBkYXRl
RmlsZVdpdGhEYXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSwgc3RkOjpvcAogICAgIHNldEZp
bGUoV1RGTW92ZShmaWxlKSwgVXBkYXRlRGlzcGxheUF0dHJpYnV0ZXM6Olllcyk7CiB9CiAKLVJl
ZjxIVE1MSW1hZ2VFbGVtZW50PiBIVE1MQXR0YWNobWVudEVsZW1lbnQ6OmVuc3VyZUlubmVySW1h
Z2UoKQotewotICAgIGlmIChhdXRvIGltYWdlID0gaW5uZXJJbWFnZSgpKQotICAgICAgICByZXR1
cm4gKmltYWdlOwotCi0gICAgYXV0byBpbWFnZSA9IEhUTUxJbWFnZUVsZW1lbnQ6OmNyZWF0ZShk
b2N1bWVudCgpKTsKLSAgICBlbnN1cmVVc2VyQWdlbnRTaGFkb3dSb290KCkuYXBwZW5kQ2hpbGQo
aW1hZ2UpOwotICAgIHJldHVybiBpbWFnZTsKLX0KLQotUmVmPEhUTUxWaWRlb0VsZW1lbnQ+IEhU
TUxBdHRhY2htZW50RWxlbWVudDo6ZW5zdXJlSW5uZXJWaWRlbygpCi17Ci0gICAgaWYgKGF1dG8g
dmlkZW8gPSBpbm5lclZpZGVvKCkpCi0gICAgICAgIHJldHVybiAqdmlkZW87Ci0KLSAgICBhdXRv
IHZpZGVvID0gSFRNTFZpZGVvRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KCkpOwotICAgIGVuc3Vy
ZVVzZXJBZ2VudFNoYWRvd1Jvb3QoKS5hcHBlbmRDaGlsZCh2aWRlbyk7Ci0gICAgcmV0dXJuIHZp
ZGVvOwotfQotCi1SZWZQdHI8SFRNTEltYWdlRWxlbWVudD4gSFRNTEF0dGFjaG1lbnRFbGVtZW50
Ojppbm5lckltYWdlKCkgY29uc3QKLXsKLSAgICBpZiAoYXV0byByb290ID0gdXNlckFnZW50U2hh
ZG93Um9vdCgpKQotICAgICAgICByZXR1cm4gY2hpbGRyZW5PZlR5cGU8SFRNTEltYWdlRWxlbWVu
dD4oKnJvb3QpLmZpcnN0KCk7Ci0gICAgcmV0dXJuIG51bGxwdHI7Ci19Ci0KLVJlZlB0cjxIVE1M
VmlkZW9FbGVtZW50PiBIVE1MQXR0YWNobWVudEVsZW1lbnQ6OmlubmVyVmlkZW8oKSBjb25zdAot
ewotICAgIGlmIChhdXRvIHJvb3QgPSB1c2VyQWdlbnRTaGFkb3dSb290KCkpCi0gICAgICAgIHJl
dHVybiBjaGlsZHJlbk9mVHlwZTxIVE1MVmlkZW9FbGVtZW50Pigqcm9vdCkuZmlyc3QoKTsKLSAg
ICByZXR1cm4gbnVsbHB0cjsKLX0KLQotdm9pZCBIVE1MQXR0YWNobWVudEVsZW1lbnQ6OnBvcHVs
YXRlU2hhZG93Um9vdElmTmVjZXNzYXJ5KCkKLXsKLSAgICBpZiAoIW1fZmlsZSkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgYXV0byBtaW1lVHlwZSA9IGF0dGFjaG1lbnRUeXBlKCk7Ci0KLSNpZiBQ
TEFURk9STShDT0NPQSkKLSAgICBpZiAoaXNEZWNsYXJlZFVUSShtaW1lVHlwZSkpCi0gICAgICAg
IG1pbWVUeXBlID0gTUlNRVR5cGVGcm9tVVRJKG1pbWVUeXBlKTsKLSNlbmRpZgotCi0gICAgaWYg
KG1pbWVUeXBlLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKE1JTUVUeXBl
UmVnaXN0cnk6OmlzU3VwcG9ydGVkSW1hZ2VNSU1FVHlwZShtaW1lVHlwZSkgfHwgTUlNRVR5cGVS
ZWdpc3RyeTo6aXNQREZNSU1FVHlwZShtaW1lVHlwZSkpIHsKLSAgICAgICAgYXV0byBpbWFnZSA9
IGVuc3VyZUlubmVySW1hZ2UoKTsKLSAgICAgICAgaWYgKGltYWdlLT5hdHRyaWJ1dGVXaXRob3V0
U3luY2hyb25pemF0aW9uKHNyY0F0dHIpLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgaW1hZ2Ut
PnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oc3JjQXR0ciwgRE9NVVJMOjpjcmVh
dGVPYmplY3RVUkwoZG9jdW1lbnQoKSwgKm1fZmlsZSkpOwotICAgICAgICAgICAgaW1hZ2UtPnNl
dEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oZHJhZ2dhYmxlQXR0ciwgQXRvbWljU3Ry
aW5nKCJmYWxzZSIpKTsKLSAgICAgICAgICAgIGltYWdlLT5zZXRJbmxpbmVTdHlsZVByb3BlcnR5
KENTU1Byb3BlcnR5RGlzcGxheSwgQ1NTVmFsdWVJbmxpbmUsIHRydWUpOwotICAgICAgICAgICAg
aW1hZ2UtPnNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlNYXhXaWR0aCwgMTAwLCBD
U1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGU6OkNTU19QRVJDRU5UQUdFLCB0cnVlKTsKLSAgICAg
ICAgfQotCi0gICAgfSBlbHNlIGlmIChNSU1FVHlwZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZE1lZGlh
TUlNRVR5cGUobWltZVR5cGUpKSB7Ci0gICAgICAgIGF1dG8gdmlkZW8gPSBlbnN1cmVJbm5lclZp
ZGVvKCk7Ci0gICAgICAgIGlmICh2aWRlby0+YXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlv
bihzcmNBdHRyKS5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgIHZpZGVvLT5zZXRBdHRyaWJ1dGVX
aXRob3V0U3luY2hyb25pemF0aW9uKHNyY0F0dHIsIERPTVVSTDo6Y3JlYXRlT2JqZWN0VVJMKGRv
Y3VtZW50KCksICptX2ZpbGUpKTsKLSAgICAgICAgICAgIHZpZGVvLT5zZXRBdHRyaWJ1dGVXaXRo
b3V0U3luY2hyb25pemF0aW9uKGNvbnRyb2xzQXR0ciwgZW1wdHlTdHJpbmcoKSk7Ci0gICAgICAg
ICAgICB2aWRlby0+c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eURpc3BsYXksIENT
U1ZhbHVlSW5saW5lLCB0cnVlKTsKLSAgICAgICAgICAgIHZpZGVvLT5zZXRJbmxpbmVTdHlsZVBy
b3BlcnR5KENTU1Byb3BlcnR5TWF4V2lkdGgsIDEwMCwgQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRU
eXBlOjpDU1NfUEVSQ0VOVEFHRSwgdHJ1ZSk7Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KIHZvaWQg
SFRNTEF0dGFjaG1lbnRFbGVtZW50OjpyZXF1ZXN0SW5mbyhGdW5jdGlvbjx2b2lkKGNvbnN0IEF0
dGFjaG1lbnRJbmZvJik+JiYgY2FsbGJhY2spCiB7CiAgICAgaWYgKCFtX2ZpbGUpIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5oCmluZGV4IDIzNjdlOGUzNzJh
MDVkM2IzODllMDdjOGJiZjUyMTM0Y2JmYjI3NjcuLjE0ZmM4NGJkOWE1NzkwMTYwZDBiODdhZjMz
ZmQ5ODQ5YzRjOWE5M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFj
aG1lbnRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVs
ZW1lbnQuaApAQCAtNTMsNyArNTMsNiBAQCBwdWJsaWM6CiAgICAgU3RyaW5nIHVuaXF1ZUlkZW50
aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX3VuaXF1ZUlkZW50aWZpZXI7IH0KICAgICB2b2lkIHNl
dFVuaXF1ZUlkZW50aWZpZXIoY29uc3QgU3RyaW5nJiB1bmlxdWVJZGVudGlmaWVyKSB7IG1fdW5p
cXVlSWRlbnRpZmllciA9IHVuaXF1ZUlkZW50aWZpZXI7IH0KIAotICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgdXBkYXRlRGlzcGxheU1vZGUoQXR0YWNobWVudERpc3BsYXlNb2RlKTsKICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHVwZGF0ZUZpbGVXaXRoRGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmIGRh
dGEsIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiYmIG5ld0NvbnRlbnRUeXBlID0gc3RkOjpudWxsb3B0
LCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4mJiBuZXdGaWxlbmFtZSA9IHN0ZDo6bnVsbG9wdCk7CiAK
ICAgICBJbnNlcnRlZEludG9BbmNlc3RvclJlc3VsdCBpbnNlcnRlZEludG9BbmNlc3RvcihJbnNl
cnRpb25UeXBlLCBDb250YWluZXJOb2RlJikgZmluYWw7CkBAIC02Myw3ICs2Miw3IEBAIHB1Ymxp
YzoKICAgICBTdHJpbmcgYXR0YWNobWVudFR5cGUoKSBjb25zdDsKICAgICBTdHJpbmcgYXR0YWNo
bWVudFBhdGgoKSBjb25zdDsKIAotICAgIFJlbmRlckF0dGFjaG1lbnQqIGF0dGFjaG1lbnRSZW5k
ZXJlcigpIGNvbnN0OworICAgIFJlbmRlckF0dGFjaG1lbnQqIHJlbmRlcmVyKCkgY29uc3Q7CiAK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlcXVlc3RJbmZvKEZ1bmN0aW9uPHZvaWQoY29uc3Qg
QXR0YWNobWVudEluZm8mKT4mJiBjYWxsYmFjayk7CiAgICAgdm9pZCBkZXN0cm95UmVhZGVyKEF0
dGFjaG1lbnREYXRhUmVhZGVyJik7CkBAIC03MywyMiArNzIsNiBAQCBwcml2YXRlOgogICAgIHZp
cnR1YWwgfkhUTUxBdHRhY2htZW50RWxlbWVudCgpOwogCiAgICAgUmVuZGVyUHRyPFJlbmRlckVs
ZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmLCBjb25zdCBSZW5kZXJU
cmVlUG9zaXRpb24mKSBmaW5hbDsKLSAgICBSZWY8SFRNTEltYWdlRWxlbWVudD4gZW5zdXJlSW5u
ZXJJbWFnZSgpOwotICAgIFJlZjxIVE1MVmlkZW9FbGVtZW50PiBlbnN1cmVJbm5lclZpZGVvKCk7
Ci0gICAgUmVmUHRyPEhUTUxJbWFnZUVsZW1lbnQ+IGlubmVySW1hZ2UoKSBjb25zdDsKLSAgICBS
ZWZQdHI8SFRNTFZpZGVvRWxlbWVudD4gaW5uZXJWaWRlbygpIGNvbnN0OwotCi0gICAgdm9pZCBw
b3B1bGF0ZVNoYWRvd1Jvb3RJZk5lY2Vzc2FyeSgpOwotICAgIHZvaWQgaW52YWxpZGF0ZVNoYWRv
d1Jvb3RDaGlsZHJlbklmTmVjZXNzYXJ5KCk7Ci0KLSAgICBBdHRhY2htZW50RGlzcGxheU1vZGUg
ZGVmYXVsdERpc3BsYXlNb2RlKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIC8vIEZJWE1FOiBGb3Ig
bm93LCBhbGwgYXR0YWNobWVudCBlbGVtZW50cyBhdXRvbWF0aWNhbGx5IGRpc3BsYXkgdXNpbmcg
YSBmaWxlIGljb24uCi0gICAgICAgIC8vIEluIGEgZm9sbG93dXAgcGF0Y2gsIHdlJ2xsIGNoYW5n
ZSB0aGUgZGVmYXVsdCBiZWhhdmlvciB0byB1c2UgaW4tcGxhY2UgcHJlc2VudGF0aW9uCi0gICAg
ICAgIC8vIGZvciBjZXJ0YWluIGltYWdlIE1JTUUgdHlwZXMuCi0gICAgICAgIHJldHVybiBBdHRh
Y2htZW50RGlzcGxheU1vZGU6OkFzSWNvbjsKLSAgICB9Ci0KICAgICBib29sIHNob3VsZFNlbGVj
dE9uTW91c2VEb3duKCkgZmluYWwgewogI2lmIFBMQVRGT1JNKElPUykKICAgICAgICAgcmV0dXJu
IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcAppbmRleCA2YzQ5ZTY2
OTgzNDUyZGZkZDhkNzA2NGRkYTQ2MTI5MGY1NTlhMmE3Li43YjUwM2JlYjJjYmJlY2QyNDgxMTcz
ODU4NjFjNzllNzQxYjQ3ZjZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdD
b250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNw
cApAQCAtMTA4OCw3ICsxMDg4LDcgQEAgYm9vbCBEcmFnQ29udHJvbGxlcjo6c3RhcnREcmFnKEZy
YW1lJiBzcmMsIGNvbnN0IERyYWdTdGF0ZSYgc3RhdGUsIERyYWdPcGVyYXRpb24KICNpZiBFTkFC
TEUoQVRUQUNITUVOVF9FTEVNRU5UKQogICAgIGlmIChpczxIVE1MQXR0YWNobWVudEVsZW1lbnQ+
KGVsZW1lbnQpICYmIG1fZHJhZ1NvdXJjZUFjdGlvbiAmIERyYWdTb3VyY2VBY3Rpb25BdHRhY2ht
ZW50KSB7CiAgICAgICAgIGF1dG8mIGF0dGFjaG1lbnQgPSBkb3duY2FzdDxIVE1MQXR0YWNobWVu
dEVsZW1lbnQ+KGVsZW1lbnQpOwotICAgICAgICBhdXRvKiBhdHRhY2htZW50UmVuZGVyZXIgPSBh
dHRhY2htZW50LmF0dGFjaG1lbnRSZW5kZXJlcigpOworICAgICAgICBhdXRvKiBhdHRhY2htZW50
UmVuZGVyZXIgPSBhdHRhY2htZW50LnJlbmRlcmVyKCk7CiAKICAgICAgICAgc3JjLmVkaXRvcigp
LnNldElnbm9yZVNlbGVjdGlvbkNoYW5nZXModHJ1ZSk7CiAgICAgICAgIGF1dG8gcHJldmlvdXNT
ZWxlY3Rpb24gPSBzcmMuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQXR0YWNobWVudC5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckF0dGFjaG1lbnQuaAppbmRleCA4ZGRlYzVkNjFhNzkyZjE0MjNmMTNl
NDNmYmJjYjk1YTQyNjVjZjU2Li40Y2FhZTAzNzA5ZDljYTQ2NDdlOTgwNmYwY2MzNmYyNzc5ZGQx
YTJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQXR0YWNobWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJBdHRhY2htZW50LmgKQEAg
LTU5LDYgKzU5LDExIEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3Nob3VsZERyYXdCb3JkZXIgeyB0
cnVlIH07CiB9OwogCitpbmxpbmUgUmVuZGVyQXR0YWNobWVudCogSFRNTEF0dGFjaG1lbnRFbGVt
ZW50OjpyZW5kZXJlcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIGRvd25jYXN0PFJlbmRlckF0dGFj
aG1lbnQ+KEhUTUxFbGVtZW50OjpyZW5kZXJlcigpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQogCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1JFTkRFUl9PQkpFQ1QoUmVuZGVyQXR0YWNo
bWVudCwgaXNBdHRhY2htZW50KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvX1dLQXR0YWNobWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL19XS0F0dGFjaG1lbnQuaAppbmRleCAwODI5OTM5ZmJiY2EyY2IyN2U2MDY5ODYwYzQ2
NmZmYjhkMzA0Y2ZiLi42MzVlODhkZTE0MTQxZDIyZWRkYTJjYjJhOTgzZTViNzU4ZDlmYzcwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXR0YWNobWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdHRhY2htZW50
LmgKQEAgLTMxLDE1ICszMSw4IEBACiAKIE5TX0FTU1VNRV9OT05OVUxMX0JFR0lOCiAKLXR5cGVk
ZWYgTlNfRU5VTShOU0ludGVnZXIsIF9XS0F0dGFjaG1lbnREaXNwbGF5TW9kZSkgewotICAgIF9X
S0F0dGFjaG1lbnREaXNwbGF5TW9kZUF1dG8gPSAxLAotICAgIF9XS0F0dGFjaG1lbnREaXNwbGF5
TW9kZUluUGxhY2UsCi0gICAgX1dLQXR0YWNobWVudERpc3BsYXlNb2RlQXNJY29uCi19IFdLX0FQ
SV9BVkFJTEFCTEUobWFjb3N4KDEwLjEzLjQpLCBpb3MoMTEuMykpOwotCiBXS19DTEFTU19BVkFJ
TEFCTEUobWFjb3N4KDEwLjEzLjQpLCBpb3MoMTEuMykpCiBAaW50ZXJmYWNlIF9XS0F0dGFjaG1l
bnREaXNwbGF5T3B0aW9ucyA6IE5TT2JqZWN0Ci1AcHJvcGVydHkgKG5vbmF0b21pYykgX1dLQXR0
YWNobWVudERpc3BsYXlNb2RlIG1vZGU7CiBAZW5kCiAKIFdLX0NMQVNTX0FWQUlMQUJMRShtYWNv
c3goV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdHRhY2htZW50Lm1tIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL19XS0F0dGFjaG1lbnQubW0KaW5kZXggMmRlNTAwY2U5MmM2Zjgw
Yzg0MTE2ZDJiNmQ4OWUyMGJkZjg3ZDFmNi4uMDE4ZWNhM2E5NTQ0OTVhZjQ3YzRiYzljNTlmZDJm
MDIyNmQ0YjRhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L19XS0F0dGFjaG1lbnQubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L19XS0F0dGFjaG1lbnQubW0KQEAgLTM5LDM0ICszOSw2IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJL
aXQ7CiAKIEBpbXBsZW1lbnRhdGlvbiBfV0tBdHRhY2htZW50RGlzcGxheU9wdGlvbnMgOiBOU09i
amVjdAogCi0tIChpbnN0YW5jZXR5cGUpaW5pdAotewotICAgIGlmIChzZWxmID0gW3N1cGVyIGlu
aXRdKQotICAgICAgICBfbW9kZSA9IF9XS0F0dGFjaG1lbnREaXNwbGF5TW9kZUF1dG87Ci0KLSAg
ICByZXR1cm4gc2VsZjsKLX0KLQotLSAoV2ViQ29yZTo6QXR0YWNobWVudERpc3BsYXlPcHRpb25z
KWNvcmVEaXNwbGF5T3B0aW9ucwotewotICAgIFdlYkNvcmU6OkF0dGFjaG1lbnREaXNwbGF5TW9k
ZSBtb2RlOwotICAgIHN3aXRjaCAoc2VsZi5tb2RlKSB7Ci0gICAgY2FzZSBfV0tBdHRhY2htZW50
RGlzcGxheU1vZGVBdXRvOgotICAgICAgICBtb2RlID0gV2ViQ29yZTo6QXR0YWNobWVudERpc3Bs
YXlNb2RlOjpBdXRvOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIF9XS0F0dGFjaG1lbnREaXNw
bGF5TW9kZUFzSWNvbjoKLSAgICAgICAgbW9kZSA9IFdlYkNvcmU6OkF0dGFjaG1lbnREaXNwbGF5
TW9kZTo6QXNJY29uOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIF9XS0F0dGFjaG1lbnREaXNw
bGF5TW9kZUluUGxhY2U6Ci0gICAgICAgIG1vZGUgPSBXZWJDb3JlOjpBdHRhY2htZW50RGlzcGxh
eU1vZGU6OkluUGxhY2U7Ci0gICAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICBtb2RlID0gV2ViQ29yZTo6QXR0YWNobWVudERp
c3BsYXlNb2RlOjpBdXRvOwotICAgIH0KLSAgICByZXR1cm4geyBtb2RlIH07Ci19Ci0KIEBlbmQK
IAogQGltcGxlbWVudGF0aW9uIF9XS0F0dGFjaG1lbnRJbmZvIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggZDZiOTY1NTY4NjZkOTg1NjBiMGIy
ZWY0ZTNkYTg1ZTU1NzM5MzNlYS4uNTExNDNhMzJkYjQwOTllNmZmZjVhNThjMDRiNWEwZjc3ODQ3
NzhlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAK
QEAgLTYxMDUsMTIgKzYxMDUsOCBAQCB2b2lkIFdlYlBhZ2U6OnJlcXVlc3RBdHRhY2htZW50SW5m
byhjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIENhbGxiYWNrSUQgY2FsbGJhYwogICAgIH0pOwog
fQogCi12b2lkIFdlYlBhZ2U6OnNldEF0dGFjaG1lbnREaXNwbGF5T3B0aW9ucyhjb25zdCBTdHJp
bmcmIGlkZW50aWZpZXIsIGNvbnN0IEF0dGFjaG1lbnREaXNwbGF5T3B0aW9ucyYgb3B0aW9ucywg
Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlOjpzZXRBdHRhY2htZW50RGlzcGxh
eU9wdGlvbnMoY29uc3QgU3RyaW5nJiwgY29uc3QgQXR0YWNobWVudERpc3BsYXlPcHRpb25zJiwg
Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewotICAgIGlmIChhdXRvIGF0dGFjaG1lbnQgPSBhdHRh
Y2htZW50RWxlbWVudFdpdGhJZGVudGlmaWVyKGlkZW50aWZpZXIpKSB7Ci0gICAgICAgIGF0dGFj
aG1lbnQtPmRvY3VtZW50KCkudXBkYXRlTGF5b3V0KCk7Ci0gICAgICAgIGF0dGFjaG1lbnQtPnVw
ZGF0ZURpc3BsYXlNb2RlKG9wdGlvbnMubW9kZSk7Ci0gICAgfQogICAgIHNlbmQoTWVzc2FnZXM6
OldlYlBhZ2VQcm94eTo6Vm9pZENhbGxiYWNrKGNhbGxiYWNrSUQpKTsKIH0KIApkaWZmIC0tZ2l0
IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDA1MmMxNzUwMDZmNjU3
NTc2NTVlNTk3OTMwM2QzZmMxOGQyYzdmYzcuLjU1Y2M4ZTI3NTYyYmM5ZjdlN2NiZDk4NzZjOTVj
NjFiZWVlOTZmOTEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxOC0wOC0xNCAgV2Vuc29uIEhzaWVoICA8d2Vuc29u
X2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBbQXR0YWNobWVudCBTUEldIFJlbW92ZSBhdHRh
Y2htZW50IGRpc3BsYXkgbW9kZSBvcHRpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xODg1OTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBSZW1vdmUgQVBJIHRlc3RzIGFuZCBBUEkgdGVzdCBoZWxwZXJz
IGZvciB2ZXJpZnlpbmcgdGhlIGJlaGF2aW9yIG9mIGluLXBsYWNlIG1lZGlhIGF0dGFjaG1lbnQg
ZWxlbWVudHMuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dL
QXR0YWNobWVudFRlc3RzLm1tOgorICAgICAgICAoLVtUZXN0V0tXZWJWaWV3IHN5bmNocm9ub3Vz
bHlJbnNlcnRBdHRhY2htZW50V2l0aEZpbGVuYW1lOmNvbnRlbnRUeXBlOmRhdGE6XSk6CisgICAg
ICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKHRlc3RWaWRlb0RhdGEpOiBEZWxl
dGVkLgorICAgICAgICAoZGlzcGxheU9wdGlvbnNXaXRoTW9kZSk6IERlbGV0ZWQuCisgICAgICAg
ICgtW1Rlc3RXS1dlYlZpZXcgc3luY2hyb25vdXNseUluc2VydEF0dGFjaG1lbnRXaXRoRmlsZW5h
bWU6Y29udGVudFR5cGU6ZGF0YTpvcHRpb25zOl0pOiBEZWxldGVkLgorCiAyMDE4LTA4LTE0ICBG
dWppaSBIaXJvbm9yaSAgPEhpcm9ub3JpLkZ1amlpQHNvbnkuY29tPgogCiAgICAgICAgIFt3ZWJr
aXRweV1bV2luXSBMYXlvdXRUZXN0czogdGVzdCBuYW1lcyBzaG91bGQgYmUgVW5peCBzdHlsZSwg
c2VwYXJhdGVkIGJ5IHNsYXNoIG5vdCBiYWNrc2xhc2gKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tBdHRhY2htZW50VGVzdHMubW0gYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLQXR0YWNobWVudFRlc3RzLm1tCmluZGV4
IGQ4ZjU2YmQzNzI3OWI2M2NmNGI4NTMyZmZlODQyM2NhYjdhYmZiMmMuLjJmN2M1MDM2OWQxZjJl
OWRkOGY5ODAzZjg4ZjEzNTNjNTJhMzM5NDggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tBdHRhY2htZW50VGVzdHMubW0KKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0F0dGFjaG1lbnRUZXN0cy5tbQpAQCAtMTg4
LDEyICsxODgsNiBAQCBzdGF0aWMgTlNEYXRhICp0ZXN0SW1hZ2VEYXRhKCkKICAgICByZXR1cm4g
W05TRGF0YSBkYXRhV2l0aENvbnRlbnRzT2ZVUkw6dGVzdEltYWdlRmlsZVVSTCgpXTsKIH0KIAot
c3RhdGljIE5TRGF0YSAqdGVzdFZpZGVvRGF0YSgpCi17Ci0gICAgTlNVUkwgKnVybCA9IFtbTlNC
dW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJ0ZXN0IiB3aXRoRXh0ZW5zaW9uOkAi
bXA0IiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdOwotICAgIHJldHVy
biBbTlNEYXRhIGRhdGFXaXRoQ29udGVudHNPZlVSTDp1cmxdOwotfQotCiBzdGF0aWMgTlNVUkwg
KnRlc3RQREZGaWxlVVJMKCkKIHsKICAgICByZXR1cm4gW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBV
UkxGb3JSZXNvdXJjZTpAInRlc3QiIHdpdGhFeHRlbnNpb246QCJwZGYiIHN1YmRpcmVjdG9yeTpA
IlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07CkBAIC0yMDQsMTMgKzE5OCw2IEBAIHN0YXRpYyBO
U0RhdGEgKnRlc3RQREZEYXRhKCkKICAgICByZXR1cm4gW05TRGF0YSBkYXRhV2l0aENvbnRlbnRz
T2ZVUkw6dGVzdFBERkZpbGVVUkwoKV07CiB9CiAKLXN0YXRpYyBfV0tBdHRhY2htZW50RGlzcGxh
eU9wdGlvbnMgKmRpc3BsYXlPcHRpb25zV2l0aE1vZGUoX1dLQXR0YWNobWVudERpc3BsYXlNb2Rl
IG1vZGUpCi17Ci0gICAgX1dLQXR0YWNobWVudERpc3BsYXlPcHRpb25zICpvcHRpb25zID0gW1tb
X1dLQXR0YWNobWVudERpc3BsYXlPcHRpb25zIGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07Ci0g
ICAgb3B0aW9ucy5tb2RlID0gbW9kZTsKLSAgICByZXR1cm4gb3B0aW9uczsKLX0KLQogQGltcGxl
bWVudGF0aW9uIFRlc3RXS1dlYlZpZXcgKEF0dGFjaG1lbnRUZXN0aW5nKQogCiAtIChOU0FycmF5
PE5TU3RyaW5nICo+ICopdGFnc0luQm9keQpAQCAtMjUwLDEwICsyMzcsMTAgQEAgc3RhdGljIF9X
S0F0dGFjaG1lbnREaXNwbGF5T3B0aW9ucyAqZGlzcGxheU9wdGlvbnNXaXRoTW9kZShfV0tBdHRh
Y2htZW50RGlzcGxheU0KICAgICByZXR1cm4gc3VjY2VzczsKIH0KIAotLSAoX1dLQXR0YWNobWVu
dCAqKXN5bmNocm9ub3VzbHlJbnNlcnRBdHRhY2htZW50V2l0aEZpbGVuYW1lOihOU1N0cmluZyAq
KWZpbGVuYW1lIGNvbnRlbnRUeXBlOihOU1N0cmluZyAqKWNvbnRlbnRUeXBlIGRhdGE6KE5TRGF0
YSAqKWRhdGEgb3B0aW9uczooX1dLQXR0YWNobWVudERpc3BsYXlPcHRpb25zICopb3B0aW9ucwor
LSAoX1dLQXR0YWNobWVudCAqKXN5bmNocm9ub3VzbHlJbnNlcnRBdHRhY2htZW50V2l0aEZpbGVu
YW1lOihOU1N0cmluZyAqKWZpbGVuYW1lIGNvbnRlbnRUeXBlOihOU1N0cmluZyAqKWNvbnRlbnRU
eXBlIGRhdGE6KE5TRGF0YSAqKWRhdGEKIHsKICAgICBfX2Jsb2NrIGJvb2wgZG9uZSA9IGZhbHNl
OwotICAgIFJldGFpblB0cjxfV0tBdHRhY2htZW50PiBhdHRhY2htZW50ID0gW3NlbGYgX2luc2Vy
dEF0dGFjaG1lbnRXaXRoRmlsZW5hbWU6ZmlsZW5hbWUgY29udGVudFR5cGU6Y29udGVudFR5cGUg
ZGF0YTpkYXRhIG9wdGlvbnM6b3B0aW9ucyBjb21wbGV0aW9uOl4oQk9PTCkgeworICAgIFJldGFp
blB0cjxfV0tBdHRhY2htZW50PiBhdHRhY2htZW50ID0gW3NlbGYgX2luc2VydEF0dGFjaG1lbnRX
aXRoRmlsZW5hbWU6ZmlsZW5hbWUgY29udGVudFR5cGU6Y29udGVudFR5cGUgZGF0YTpkYXRhIG9w
dGlvbnM6bmlsIGNvbXBsZXRpb246XihCT09MKSB7CiAgICAgICAgIGRvbmUgPSB0cnVlOwogICAg
IH1dOwogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CkBAIC01MDUsNyArNDky
LDcgQEAgVEVTVChXS0F0dGFjaG1lbnRUZXN0cywgQXR0YWNobWVudEVsZW1lbnRJbnNlcnRpb24p
CiAgICAgewogICAgICAgICBPYnNlcnZlQXR0YWNobWVudFVwZGF0ZXNGb3JTY29wZSBvYnNlcnZl
cih3ZWJWaWV3LmdldCgpKTsKICAgICAgICAgLy8gVXNlIHRoZSBnaXZlbiBjb250ZW50IHR5cGUg
Zm9yIHRoZSBhdHRhY2htZW50IGVsZW1lbnQncyB0eXBlLgotICAgICAgICBmaXJzdEF0dGFjaG1l
bnQgPSBbd2ViVmlldyBzeW5jaHJvbm91c2x5SW5zZXJ0QXR0YWNobWVudFdpdGhGaWxlbmFtZTpA
ImZvbyIgY29udGVudFR5cGU6QCJ0ZXh0L2h0bWwiIGRhdGE6dGVzdEhUTUxEYXRhKCkgb3B0aW9u
czpuaWxdOworICAgICAgICBmaXJzdEF0dGFjaG1lbnQgPSBbd2ViVmlldyBzeW5jaHJvbm91c2x5
SW5zZXJ0QXR0YWNobWVudFdpdGhGaWxlbmFtZTpAImZvbyIgY29udGVudFR5cGU6QCJ0ZXh0L2h0
bWwiIGRhdGE6dGVzdEhUTUxEYXRhKCldOwogICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoQCJmb28i
LCBbd2ViVmlldyB2YWx1ZU9mQXR0cmlidXRlOkAidGl0bGUiIGZvclF1ZXJ5U2VsZWN0b3I6QCJh
dHRhY2htZW50Il0pOwogICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoQCJ0ZXh0L2h0bWwiLCBbd2Vi
VmlldyB2YWx1ZU9mQXR0cmlidXRlOkAidHlwZSIgZm9yUXVlcnlTZWxlY3RvcjpAImF0dGFjaG1l
bnQiXSk7CiAgICAgICAgIEVYUEVDVF9XS19TVFJFUShAIjM4IGJ5dGVzIiwgW3dlYlZpZXcgdmFs
dWVPZkF0dHJpYnV0ZTpAInN1YnRpdGxlIiBmb3JRdWVyeVNlbGVjdG9yOkAiYXR0YWNobWVudCJd
KTsKQEAgLTUyMiw3ICs1MDksNyBAQCBURVNUKFdLQXR0YWNobWVudFRlc3RzLCBBdHRhY2htZW50
RWxlbWVudEluc2VydGlvbikKICAgICAgICAgT2JzZXJ2ZUF0dGFjaG1lbnRVcGRhdGVzRm9yU2Nv
cGUgc2NvcGUod2ViVmlldy5nZXQoKSk7CiAgICAgICAgIC8vIFNpbmNlIG5vIGNvbnRlbnQgdHlw
ZSBpcyBleHBsaWNpdGx5IHNwZWNpZmllZCwgY29tcHV0ZSBpdCBmcm9tIHRoZSBmaWxlIGV4dGVu
c2lvbi4KICAgICAgICAgW3dlYlZpZXcgX2V4ZWN1dGVFZGl0Q29tbWFuZDpAIkRlbGV0ZUJhY2t3
YXJkIiBhcmd1bWVudDpuaWwgY29tcGxldGlvbjpuaWxdOwotICAgICAgICBzZWNvbmRBdHRhY2ht
ZW50ID0gW3dlYlZpZXcgc3luY2hyb25vdXNseUluc2VydEF0dGFjaG1lbnRXaXRoRmlsZW5hbWU6
QCJiYXIucG5nIiBjb250ZW50VHlwZTpuaWwgZGF0YTp0ZXN0SW1hZ2VEYXRhKCkgb3B0aW9uczpu
aWxdOworICAgICAgICBzZWNvbmRBdHRhY2htZW50ID0gW3dlYlZpZXcgc3luY2hyb25vdXNseUlu
c2VydEF0dGFjaG1lbnRXaXRoRmlsZW5hbWU6QCJiYXIucG5nIiBjb250ZW50VHlwZTpuaWwgZGF0
YTp0ZXN0SW1hZ2VEYXRhKCldOwogICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoQCJiYXIucG5nIiwg
W3dlYlZpZXcgdmFsdWVPZkF0dHJpYnV0ZTpAInRpdGxlIiBmb3JRdWVyeVNlbGVjdG9yOkAiYXR0
YWNobWVudCJdKTsKICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKEAiaW1hZ2UvcG5nIiwgW3dlYlZp
ZXcgdmFsdWVPZkF0dHJpYnV0ZTpAInR5cGUiIGZvclF1ZXJ5U2VsZWN0b3I6QCJhdHRhY2htZW50
Il0pOwogICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoQCIzNyBLQiIsIFt3ZWJWaWV3IHZhbHVlT2ZB
dHRyaWJ1dGU6QCJzdWJ0aXRsZSIgZm9yUXVlcnlTZWxlY3RvcjpAImF0dGFjaG1lbnQiXSk7CkBA
IC01NDIsNyArNTI5LDcgQEAgVEVTVChXS0F0dGFjaG1lbnRUZXN0cywgQXR0YWNobWVudFVwZGF0
ZXNXaGVuSW5zZXJ0aW5nQW5kRGVsZXRpbmdOZXdsaW5lKQogICAgIFJldGFpblB0cjxfV0tBdHRh
Y2htZW50PiBhdHRhY2htZW50OwogICAgIHsKICAgICAgICAgT2JzZXJ2ZUF0dGFjaG1lbnRVcGRh
dGVzRm9yU2NvcGUgb2JzZXJ2ZXIod2ViVmlldy5nZXQoKSk7Ci0gICAgICAgIGF0dGFjaG1lbnQg
PSBbd2ViVmlldyBzeW5jaHJvbm91c2x5SW5zZXJ0QXR0YWNobWVudFdpdGhGaWxlbmFtZTpAImZv
by50eHQiIGNvbnRlbnRUeXBlOkAidGV4dC9wbGFpbiIgZGF0YTp0ZXN0SFRNTERhdGEoKSBvcHRp
b25zOm5pbF07CisgICAgICAgIGF0dGFjaG1lbnQgPSBbd2ViVmlldyBzeW5jaHJvbm91c2x5SW5z
ZXJ0QXR0YWNobWVudFdpdGhGaWxlbmFtZTpAImZvby50eHQiIGNvbnRlbnRUeXBlOkAidGV4dC9w
bGFpbiIgZGF0YTp0ZXN0SFRNTERhdGEoKV07CiAgICAgICAgIG9ic2VydmVyLmV4cGVjdEF0dGFj
aG1lbnRVcGRhdGVzKEBbIF0sIEBbYXR0YWNobWVudC5nZXQoKV0pOwogICAgIH0KICAgICBbd2Vi
VmlldyBleHBlY3RVcGRhdGVzQWZ0ZXJDb21tYW5kOkAiSW5zZXJ0UGFyYWdyYXBoIiB3aXRoQXJn
dW1lbnQ6bmlsIGV4cGVjdGVkUmVtb3ZhbHM6QFtdIGV4cGVjdGVkSW5zZXJ0aW9uczpAW11dOwpA
QCAtNTY5LDcgKzU1Niw3IEBAIFRFU1QoV0tBdHRhY2htZW50VGVzdHMsIEF0dGFjaG1lbnRVcGRh
dGVzV2hlblVuZG9pbmdBbmRSZWRvaW5nKQogICAgIFJldGFpblB0cjxfV0tBdHRhY2htZW50PiBh
dHRhY2htZW50OwogICAgIHsKICAgICAgICAgT2JzZXJ2ZUF0dGFjaG1lbnRVcGRhdGVzRm9yU2Nv
cGUgb2JzZXJ2ZXIod2ViVmlldy5nZXQoKSk7Ci0gICAgICAgIGF0dGFjaG1lbnQgPSBbd2ViVmll
dyBzeW5jaHJvbm91c2x5SW5zZXJ0QXR0YWNobWVudFdpdGhGaWxlbmFtZTpAImZvby50eHQiIGNv
bnRlbnRUeXBlOkAidGV4dC9wbGFpbiIgZGF0YTp0ZXN0SFRNTERhdGEoKSBvcHRpb25zOm5pbF07
CisgICAgICAgIGF0dGFjaG1lbnQgPSBbd2ViVmlldyBzeW5jaHJvbm91c2x5SW5zZXJ0QXR0YWNo
bWVudFdpdGhGaWxlbmFtZTpAImZvby50eHQiIGNvbnRlbnRUeXBlOkAidGV4dC9wbGFpbiIgZGF0
YTp0ZXN0SFRNTERhdGEoKV07CiAgICAgICAgIG9ic2VydmVyLmV4cGVjdEF0dGFjaG1lbnRVcGRh
dGVzKEBbIF0sIEBbYXR0YWNobWVudC5nZXQoKV0pOwogICAgIH0KICAgICBbd2ViVmlldyBleHBl
Y3RVcGRhdGVzQWZ0ZXJDb21tYW5kOkAiVW5kbyIgd2l0aEFyZ3VtZW50Om5pbCBleHBlY3RlZFJl
bW92YWxzOkBbYXR0YWNobWVudC5nZXQoKV0gZXhwZWN0ZWRJbnNlcnRpb25zOkBbXV07CkBAIC01
OTUsNyArNTgyLDcgQEAgVEVTVChXS0F0dGFjaG1lbnRUZXN0cywgQXR0YWNobWVudFVwZGF0ZXNX
aGVuQ2hhbmdpbmdGb250U3R5bGVzKQogICAgIFt3ZWJWaWV3IF9zeW5jaHJvbm91c2x5RXhlY3V0
ZUVkaXRDb21tYW5kOkAiSW5zZXJ0VGV4dCIgYXJndW1lbnQ6QCJIZWxsbyJdOwogICAgIHsKICAg
ICAgICAgT2JzZXJ2ZUF0dGFjaG1lbnRVcGRhdGVzRm9yU2NvcGUgb2JzZXJ2ZXIod2ViVmlldy5n
ZXQoKSk7Ci0gICAgICAgIGF0dGFjaG1lbnQgPSBbd2ViVmlldyBzeW5jaHJvbm91c2x5SW5zZXJ0
QXR0YWNobWVudFdpdGhGaWxlbmFtZTpAImZvby50eHQiIGNvbnRlbnRUeXBlOkAidGV4dC9wbGFp
biIgZGF0YTp0ZXN0SFRNTERhdGEoKSBvcHRpb25zOm5pbF07CisgICAgICAgIGF0dGFjaG1lbnQg
PSBbd2ViVmlldyBzeW5jaHJvbm91c2x5SW5zZXJ0QXR0YWNobWVudFdpdGhGaWxlbmFtZTpAImZv
by50eHQiIGNvbnRlbnRUeXBlOkAidGV4dC9wbGFpbiIgZGF0YTp0ZXN0SFRNTERhdGEoKV07CiAg
ICAgICAgIG9ic2VydmVyLmV4cGVjdEF0dGFjaG1lbnRVcGRhdGVzKEBbIF0sIEBbYXR0YWNobWVu
dC5nZXQoKV0pOwogICAgIH0KICAgICBbd2ViVmlldyBleHBlY3RVcGRhdGVzQWZ0ZXJDb21tYW5k
OkAiSW5zZXJ0VGV4dCIgd2l0aEFyZ3VtZW50OkAiV29ybGQiIGV4cGVjdGVkUmVtb3ZhbHM6QFtd
IGV4cGVjdGVkSW5zZXJ0aW9uczpAW11dOwpAQCAtNjE5LDcgKzYwNiw3IEBAIFRFU1QoV0tBdHRh
Y2htZW50VGVzdHMsIEF0dGFjaG1lbnRVcGRhdGVzV2hlbkluc2VydGluZ0xpc3RzKQogICAgIFJl
dGFpblB0cjxfV0tBdHRhY2htZW50PiBhdHRhY2htZW50OwogICAgIHsKICAgICAgICAgT2JzZXJ2
ZUF0dGFjaG1lbnRVcGRhdGVzRm9yU2NvcGUgb2JzZXJ2ZXIod2ViVmlldy5nZXQoKSk7Ci0gICAg
ICAgIGF0dGFjaG1lbnQgPSBbd2ViVmlldyBzeW5jaHJvbm91c2x5SW5zZXJ0QXR0YWNobWVudFdp
dGhGaWxlbmFtZTpAImZvby50eHQiIGNvbnRlbnRUeXBlOkAidGV4dC9wbGFpbiIgZGF0YTp0ZXN0
SFRNTERhdGEoKSBvcHRpb25zOm5pbF07CisgICAgICAgIGF0dGFjaG1lbnQgPSBbd2ViVmlldyBz
eW5jaHJvbm91c2x5SW5zZXJ0QXR0YWNobWVudFdpdGhGaWxlbmFtZTpAImZvby50eHQiIGNvbnRl
bnRUeXBlOkAidGV4dC9wbGFpbiIgZGF0YTp0ZXN0SFRNTERhdGEoKV07CiAgICAgICAgIG9ic2Vy
dmVyLmV4cGVjdEF0dGFjaG1lbnRVcGRhdGVzKEBbIF0sIEBbYXR0YWNobWVudC5nZXQoKV0pOwog
ICAgIH0KICAgICBbd2ViVmlldyBleHBlY3RVcGRhdGVzQWZ0ZXJDb21tYW5kOkAiSW5zZXJ0T3Jk
ZXJlZExpc3QiIHdpdGhBcmd1bWVudDpuaWwgZXhwZWN0ZWRSZW1vdmFsczpAW10gZXhwZWN0ZWRJ
bnNlcnRpb25zOkBbXV07CkBAIC02NjMsNyArNjUwLDcgQEAgVEVTVChXS0F0dGFjaG1lbnRUZXN0
cywgQXR0YWNobWVudFVwZGF0ZXNXaGVuQ3V0dGluZ0FuZFBhc3RpbmcpCiAgICAgUmV0YWluUHRy
PF9XS0F0dGFjaG1lbnQ+IGF0dGFjaG1lbnQ7CiAgICAgewogICAgICAgICBPYnNlcnZlQXR0YWNo
bWVudFVwZGF0ZXNGb3JTY29wZSBvYnNlcnZlcih3ZWJWaWV3LmdldCgpKTsKLSAgICAgICAgYXR0
YWNobWVudCA9IFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlJbnNlcnRBdHRhY2htZW50V2l0aEZpbGVu
YW1lOkAiZm9vLnR4dCIgY29udGVudFR5cGU6QCJ0ZXh0L3BsYWluIiBkYXRhOnRlc3RIVE1MRGF0
YSgpIG9wdGlvbnM6bmlsXTsKKyAgICAgICAgYXR0YWNobWVudCA9IFt3ZWJWaWV3IHN5bmNocm9u
b3VzbHlJbnNlcnRBdHRhY2htZW50V2l0aEZpbGVuYW1lOkAiZm9vLnR4dCIgY29udGVudFR5cGU6
QCJ0ZXh0L3BsYWluIiBkYXRhOnRlc3RIVE1MRGF0YSgpXTsKICAgICAgICAgb2JzZXJ2ZXIuZXhw
ZWN0QXR0YWNobWVudFVwZGF0ZXMoQFtdLCBAW2F0dGFjaG1lbnQuZ2V0KCldKTsKICAgICB9CiAg
ICAgW2F0dGFjaG1lbnQgZXhwZWN0UmVxdWVzdGVkRGF0YVRvQmU6dGVzdEhUTUxEYXRhKCldOwpA
QCAtNjkyLDcgKzY3OSw3IEBAIFRFU1QoV0tBdHRhY2htZW50VGVzdHMsIEF0dGFjaG1lbnREYXRh
Rm9yRW1wdHlGaWxlKQogICAgIFJldGFpblB0cjxfV0tBdHRhY2htZW50PiBhdHRhY2htZW50Owog
ICAgIHsKICAgICAgICAgT2JzZXJ2ZUF0dGFjaG1lbnRVcGRhdGVzRm9yU2NvcGUgb2JzZXJ2ZXIo
d2ViVmlldy5nZXQoKSk7Ci0gICAgICAgIGF0dGFjaG1lbnQgPSBbd2ViVmlldyBzeW5jaHJvbm91
c2x5SW5zZXJ0QXR0YWNobWVudFdpdGhGaWxlbmFtZTpAImVtcHR5LnR4dCIgY29udGVudFR5cGU6
QCJ0ZXh0L3BsYWluIiBkYXRhOltOU0RhdGEgZGF0YV0gb3B0aW9uczpuaWxdOworICAgICAgICBh
dHRhY2htZW50ID0gW3dlYlZpZXcgc3luY2hyb25vdXNseUluc2VydEF0dGFjaG1lbnRXaXRoRmls
ZW5hbWU6QCJlbXB0eS50eHQiIGNvbnRlbnRUeXBlOkAidGV4dC9wbGFpbiIgZGF0YTpbTlNEYXRh
IGRhdGFdXTsKICAgICAgICAgb2JzZXJ2ZXIuZXhwZWN0QXR0YWNobWVudFVwZGF0ZXMoQFtdLCBA
W2F0dGFjaG1lbnQuZ2V0KCldKTsKICAgICB9CiAgICAgW2F0dGFjaG1lbnQgZXhwZWN0UmVxdWVz
dGVkRGF0YVRvQmU6W05TRGF0YSBkYXRhXV07CkBAIC03MDUsMjAgKzY5Miw2IEBAIFRFU1QoV0tB
dHRhY2htZW50VGVzdHMsIEF0dGFjaG1lbnREYXRhRm9yRW1wdHlGaWxlKQogICAgIFthdHRhY2ht
ZW50IGV4cGVjdFJlcXVlc3RlZERhdGFUb0JlOm5pbF07CiB9CiAKLVRFU1QoV0tBdHRhY2htZW50
VGVzdHMsIEluc2VydGVkSW1hZ2VTaXplSXNDbGFtcGVkQnlNYXhXaWR0aCkKLXsKLSAgICBhdXRv
IHdlYlZpZXcgPSB3ZWJWaWV3Rm9yVGVzdGluZ0F0dGFjaG1lbnRzKENHU2l6ZU1ha2UoMTAwLCAx
MDApKTsKLSAgICBSZXRhaW5QdHI8TlNEYXRhPiBpbWFnZURhdGEgPSB0ZXN0SW1hZ2VEYXRhKCk7
Ci0gICAgUmV0YWluUHRyPF9XS0F0dGFjaG1lbnQ+IGF0dGFjaG1lbnQ7Ci0gICAgewotICAgICAg
ICBPYnNlcnZlQXR0YWNobWVudFVwZGF0ZXNGb3JTY29wZSBvYnNlcnZlcih3ZWJWaWV3LmdldCgp
KTsKLSAgICAgICAgYXR0YWNobWVudCA9IFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlJbnNlcnRBdHRh
Y2htZW50V2l0aEZpbGVuYW1lOkAiaWNvbi5wbmciIGNvbnRlbnRUeXBlOkAiaW1hZ2UvcG5nIiBk
YXRhOmltYWdlRGF0YS5nZXQoKSBvcHRpb25zOmRpc3BsYXlPcHRpb25zV2l0aE1vZGUoX1dLQXR0
YWNobWVudERpc3BsYXlNb2RlSW5QbGFjZSldOwotICAgICAgICBbYXR0YWNobWVudCBleHBlY3RS
ZXF1ZXN0ZWREYXRhVG9CZTppbWFnZURhdGEuZ2V0KCldOwotICAgICAgICBvYnNlcnZlci5leHBl
Y3RBdHRhY2htZW50VXBkYXRlcyhAW10sIEBbYXR0YWNobWVudC5nZXQoKV0pOwotICAgIH0KLSAg
ICBbd2ViVmlldyB3YWl0Rm9yQXR0YWNobWVudEVsZW1lbnRTaXplVG9CZWNvbWU6Q0dTaXplTWFr
ZSg4NCwgNjcpXTsKLX0KLQogVEVTVChXS0F0dGFjaG1lbnRUZXN0cywgTXVsdGlwbGVTaW11bHRh
bmVvdXNBdHRhY2htZW50RGF0YVJlcXVlc3RzKQogewogICAgIGF1dG8gd2ViVmlldyA9IHdlYlZp
ZXdGb3JUZXN0aW5nQXR0YWNobWVudHMoKTsKQEAgLTcyNiw3ICs2OTksNyBAQCBURVNUKFdLQXR0
YWNobWVudFRlc3RzLCBNdWx0aXBsZVNpbXVsdGFuZW91c0F0dGFjaG1lbnREYXRhUmVxdWVzdHMp
CiAgICAgUmV0YWluUHRyPF9XS0F0dGFjaG1lbnQ+IGF0dGFjaG1lbnQ7CiAgICAgewogICAgICAg
ICBPYnNlcnZlQXR0YWNobWVudFVwZGF0ZXNGb3JTY29wZSBvYnNlcnZlcih3ZWJWaWV3LmdldCgp
KTsKLSAgICAgICAgYXR0YWNobWVudCA9IFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlJbnNlcnRBdHRh
Y2htZW50V2l0aEZpbGVuYW1lOkAiZm9vLnR4dCIgY29udGVudFR5cGU6QCJ0ZXh0L3BsYWluIiBk
YXRhOmh0bWxEYXRhLmdldCgpIG9wdGlvbnM6bmlsXTsKKyAgICAgICAgYXR0YWNobWVudCA9IFt3
ZWJWaWV3IHN5bmNocm9ub3VzbHlJbnNlcnRBdHRhY2htZW50V2l0aEZpbGVuYW1lOkAiZm9vLnR4
dCIgY29udGVudFR5cGU6QCJ0ZXh0L3BsYWluIiBkYXRhOmh0bWxEYXRhLmdldCgpXTsKICAgICAg
ICAgb2JzZXJ2ZXIuZXhwZWN0QXR0YWNobWVudFVwZGF0ZXMoQFtdLCBAW2F0dGFjaG1lbnQuZ2V0
KCldKTsKICAgICB9CiAgICAgX19ibG9jayBSZXRhaW5QdHI8TlNEYXRhPiBkYXRhRm9yRmlyc3RS
ZXF1ZXN0OwpAQCAtNzQ4LDk3ICs3MjEsNiBAQCBURVNUKFdLQXR0YWNobWVudFRlc3RzLCBNdWx0
aXBsZVNpbXVsdGFuZW91c0F0dGFjaG1lbnREYXRhUmVxdWVzdHMpCiAgICAgRVhQRUNUX1RSVUUo
W2RhdGFGb3JTZWNvbmRSZXF1ZXN0IGlzRXF1YWxUb0RhdGE6aHRtbERhdGEuZ2V0KCldKTsKIH0K
IAotVEVTVChXS0F0dGFjaG1lbnRUZXN0cywgSW5QbGFjZUltYWdlQXR0YWNobWVudFRvZ2dsZURp
c3BsYXlNb2RlKQotewotICAgIGF1dG8gd2ViVmlldyA9IHdlYlZpZXdGb3JUZXN0aW5nQXR0YWNo
bWVudHMoKTsKLSAgICBSZXRhaW5QdHI8TlNEYXRhPiBpbWFnZURhdGEgPSB0ZXN0SW1hZ2VEYXRh
KCk7Ci0gICAgUmV0YWluUHRyPF9XS0F0dGFjaG1lbnQ+IGF0dGFjaG1lbnQ7Ci0gICAgewotICAg
ICAgICBPYnNlcnZlQXR0YWNobWVudFVwZGF0ZXNGb3JTY29wZSBvYnNlcnZlcih3ZWJWaWV3Lmdl
dCgpKTsKLSAgICAgICAgYXR0YWNobWVudCA9IFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlJbnNlcnRB
dHRhY2htZW50V2l0aEZpbGVuYW1lOkAiaWNvbi5wbmciIGNvbnRlbnRUeXBlOkAiaW1hZ2UvcG5n
IiBkYXRhOmltYWdlRGF0YS5nZXQoKSBvcHRpb25zOmRpc3BsYXlPcHRpb25zV2l0aE1vZGUoX1dL
QXR0YWNobWVudERpc3BsYXlNb2RlQXNJY29uKV07Ci0gICAgICAgIFthdHRhY2htZW50IGV4cGVj
dFJlcXVlc3RlZERhdGFUb0JlOmltYWdlRGF0YS5nZXQoKV07Ci0gICAgICAgIG9ic2VydmVyLmV4
cGVjdEF0dGFjaG1lbnRVcGRhdGVzKEBbXSwgQFthdHRhY2htZW50LmdldCgpXSk7Ci0gICAgfQot
ICAgIENHU2l6ZSBpY29uQXR0YWNobWVudFNpemUgPSBbd2ViVmlldyBhdHRhY2htZW50RWxlbWVu
dFNpemVdOwotCi0gICAgW2F0dGFjaG1lbnQgc3luY2hyb25vdXNseVNldERpc3BsYXlPcHRpb25z
OmRpc3BsYXlPcHRpb25zV2l0aE1vZGUoX1dLQXR0YWNobWVudERpc3BsYXlNb2RlSW5QbGFjZSkg
ZXJyb3I6bmlsXTsKLSAgICBbYXR0YWNobWVudCBleHBlY3RSZXF1ZXN0ZWREYXRhVG9CZTppbWFn
ZURhdGEuZ2V0KCldOwotICAgIFt3ZWJWaWV3IHdhaXRGb3JBdHRhY2htZW50RWxlbWVudFNpemVU
b0JlY29tZTpDR1NpemVNYWtlKDIxNSwgMTc0KV07Ci0KLSAgICBbYXR0YWNobWVudCBzeW5jaHJv
bm91c2x5U2V0RGlzcGxheU9wdGlvbnM6ZGlzcGxheU9wdGlvbnNXaXRoTW9kZShfV0tBdHRhY2ht
ZW50RGlzcGxheU1vZGVBc0ljb24pIGVycm9yOm5pbF07Ci0gICAgW2F0dGFjaG1lbnQgZXhwZWN0
UmVxdWVzdGVkRGF0YVRvQmU6aW1hZ2VEYXRhLmdldCgpXTsKLSAgICBbd2ViVmlldyB3YWl0Rm9y
QXR0YWNobWVudEVsZW1lbnRTaXplVG9CZWNvbWU6aWNvbkF0dGFjaG1lbnRTaXplXTsKLQotICAg
IFthdHRhY2htZW50IHN5bmNocm9ub3VzbHlTZXREaXNwbGF5T3B0aW9uczpkaXNwbGF5T3B0aW9u
c1dpdGhNb2RlKF9XS0F0dGFjaG1lbnREaXNwbGF5TW9kZUluUGxhY2UpIGVycm9yOm5pbF07Ci0g
ICAgW2F0dGFjaG1lbnQgZXhwZWN0UmVxdWVzdGVkRGF0YVRvQmU6aW1hZ2VEYXRhLmdldCgpXTsK
LSAgICBbd2ViVmlldyB3YWl0Rm9yQXR0YWNobWVudEVsZW1lbnRTaXplVG9CZWNvbWU6Q0dTaXpl
TWFrZSgyMTUsIDE3NCldOwotfQotCi1URVNUKFdLQXR0YWNobWVudFRlc3RzLCBJblBsYWNlSW1h
Z2VBdHRhY2htZW50UGFyYWdyYXBoSW5zZXJ0aW9uKQotewotICAgIGF1dG8gd2ViVmlldyA9IHdl
YlZpZXdGb3JUZXN0aW5nQXR0YWNobWVudHMoKTsKLSAgICBSZXRhaW5QdHI8TlNEYXRhPiBpbWFn
ZURhdGEgPSB0ZXN0SW1hZ2VEYXRhKCk7Ci0gICAgUmV0YWluUHRyPF9XS0F0dGFjaG1lbnQ+IGF0
dGFjaG1lbnQ7Ci0gICAgewotICAgICAgICBPYnNlcnZlQXR0YWNobWVudFVwZGF0ZXNGb3JTY29w
ZSBvYnNlcnZlcih3ZWJWaWV3LmdldCgpKTsKLSAgICAgICAgYXR0YWNobWVudCA9IFt3ZWJWaWV3
IHN5bmNocm9ub3VzbHlJbnNlcnRBdHRhY2htZW50V2l0aEZpbGVuYW1lOkAiaWNvbi5wbmciIGNv
bnRlbnRUeXBlOkAiaW1hZ2UvcG5nIiBkYXRhOmltYWdlRGF0YS5nZXQoKSBvcHRpb25zOmRpc3Bs
YXlPcHRpb25zV2l0aE1vZGUoX1dLQXR0YWNobWVudERpc3BsYXlNb2RlSW5QbGFjZSldOwotICAg
ICAgICBvYnNlcnZlci5leHBlY3RBdHRhY2htZW50VXBkYXRlcyhAW10sIEBbYXR0YWNobWVudC5n
ZXQoKV0pOwotICAgIH0KLSAgICBbd2ViVmlldyBleHBlY3RVcGRhdGVzQWZ0ZXJDb21tYW5kOkAi
SW5zZXJ0UGFyYWdyYXBoIiB3aXRoQXJndW1lbnQ6bmlsIGV4cGVjdGVkUmVtb3ZhbHM6QFtdIGV4
cGVjdGVkSW5zZXJ0aW9uczpAW11dOwotICAgIFt3ZWJWaWV3IGV4cGVjdFVwZGF0ZXNBZnRlckNv
bW1hbmQ6QCJEZWxldGVCYWNrd2FyZCIgd2l0aEFyZ3VtZW50Om5pbCBleHBlY3RlZFJlbW92YWxz
OkBbXSBleHBlY3RlZEluc2VydGlvbnM6QFtdXTsKLSAgICBbd2ViVmlldyBzdHJpbmdCeUV2YWx1
YXRpbmdKYXZhU2NyaXB0OkAiZ2V0U2VsZWN0aW9uKCkuY29sbGFwc2UoZG9jdW1lbnQuYm9keSki
XTsKLSAgICBbd2ViVmlldyBleHBlY3RVcGRhdGVzQWZ0ZXJDb21tYW5kOkAiSW5zZXJ0UGFyYWdy
YXBoIiB3aXRoQXJndW1lbnQ6bmlsIGV4cGVjdGVkUmVtb3ZhbHM6QFtdIGV4cGVjdGVkSW5zZXJ0
aW9uczpAW11dOwotICAgIFt3ZWJWaWV3IGV4cGVjdFVwZGF0ZXNBZnRlckNvbW1hbmQ6QCJEZWxl
dGVCYWNrd2FyZCIgd2l0aEFyZ3VtZW50Om5pbCBleHBlY3RlZFJlbW92YWxzOkBbXSBleHBlY3Rl
ZEluc2VydGlvbnM6QFtdXTsKLQotICAgIFthdHRhY2htZW50IGV4cGVjdFJlcXVlc3RlZERhdGFU
b0JlOmltYWdlRGF0YS5nZXQoKV07Ci0gICAgRVhQRUNUX1dLX1NUUkVRKFthdHRhY2htZW50IHVu
aXF1ZUlkZW50aWZpZXJdLCBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAi
ZG9jdW1lbnQucXVlcnlTZWxlY3RvcignYXR0YWNobWVudCcpLnVuaXF1ZUlkZW50aWZpZXIiXSk7
Ci0gICAgW3dlYlZpZXcgd2FpdEZvckF0dGFjaG1lbnRFbGVtZW50U2l6ZVRvQmVjb21lOkNHU2l6
ZU1ha2UoMjE1LCAxNzQpXTsKLQotICAgIFt3ZWJWaWV3IGV4cGVjdFVwZGF0ZXNBZnRlckNvbW1h
bmQ6QCJEZWxldGVGb3J3YXJkIiB3aXRoQXJndW1lbnQ6bmlsIGV4cGVjdGVkUmVtb3ZhbHM6QFth
dHRhY2htZW50LmdldCgpXSBleHBlY3RlZEluc2VydGlvbnM6QFtdXTsKLX0KLQotVEVTVChXS0F0
dGFjaG1lbnRUZXN0cywgSW5QbGFjZVZpZGVvQXR0YWNobWVudEluc2VydGlvbldpdGhpbkxpc3Qp
Ci17Ci0gICAgYXV0byB3ZWJWaWV3ID0gd2ViVmlld0ZvclRlc3RpbmdBdHRhY2htZW50cygpOwot
ICAgIFJldGFpblB0cjxOU0RhdGE+IHZpZGVvRGF0YSA9IHRlc3RWaWRlb0RhdGEoKTsKLSAgICBS
ZXRhaW5QdHI8X1dLQXR0YWNobWVudD4gYXR0YWNobWVudDsKLQotICAgIFt3ZWJWaWV3IF9zeW5j
aHJvbm91c2x5RXhlY3V0ZUVkaXRDb21tYW5kOkAiSW5zZXJ0T3JkZXJlZExpc3QiIGFyZ3VtZW50
Om5pbF07Ci0gICAgewotICAgICAgICBPYnNlcnZlQXR0YWNobWVudFVwZGF0ZXNGb3JTY29wZSBv
YnNlcnZlcih3ZWJWaWV3LmdldCgpKTsKLSAgICAgICAgYXR0YWNobWVudCA9IFt3ZWJWaWV3IHN5
bmNocm9ub3VzbHlJbnNlcnRBdHRhY2htZW50V2l0aEZpbGVuYW1lOkAidGVzdC5tcDQiIGNvbnRl
bnRUeXBlOkAidmlkZW8vbXA0IiBkYXRhOnZpZGVvRGF0YS5nZXQoKSBvcHRpb25zOmRpc3BsYXlP
cHRpb25zV2l0aE1vZGUoX1dLQXR0YWNobWVudERpc3BsYXlNb2RlSW5QbGFjZSldOwotICAgICAg
ICBvYnNlcnZlci5leHBlY3RBdHRhY2htZW50VXBkYXRlcyhAW10sIEBbYXR0YWNobWVudC5nZXQo
KV0pOwotICAgIH0KLSAgICBbd2ViVmlldyB3YWl0Rm9yQXR0YWNobWVudEVsZW1lbnRTaXplVG9C
ZWNvbWU6Q0dTaXplTWFrZSgzMjAsIDI0MCldOwotCi0gICAgW3dlYlZpZXcgZXhwZWN0VXBkYXRl
c0FmdGVyQ29tbWFuZDpAIkRlbGV0ZUJhY2t3YXJkIiB3aXRoQXJndW1lbnQ6bmlsIGV4cGVjdGVk
UmVtb3ZhbHM6QFthdHRhY2htZW50LmdldCgpXSBleHBlY3RlZEluc2VydGlvbnM6QFtdXTsKLSAg
ICBbd2ViVmlldyBleHBlY3RVcGRhdGVzQWZ0ZXJDb21tYW5kOkAiVW5kbyIgd2l0aEFyZ3VtZW50
Om5pbCBleHBlY3RlZFJlbW92YWxzOkBbXSBleHBlY3RlZEluc2VydGlvbnM6QFthdHRhY2htZW50
LmdldCgpXV07Ci0gICAgW3dlYlZpZXcgZXhwZWN0VXBkYXRlc0FmdGVyQ29tbWFuZDpAIkluc2Vy
dE9yZGVyZWRMaXN0IiB3aXRoQXJndW1lbnQ6bmlsIGV4cGVjdGVkUmVtb3ZhbHM6QFtdIGV4cGVj
dGVkSW5zZXJ0aW9uczpAW11dOwotCi0gICAgW3dlYlZpZXcgd2FpdEZvckF0dGFjaG1lbnRFbGVt
ZW50U2l6ZVRvQmVjb21lOkNHU2l6ZU1ha2UoMzIwLCAyNDApXTsKLSAgICBbYXR0YWNobWVudCBl
eHBlY3RSZXF1ZXN0ZWREYXRhVG9CZTp2aWRlb0RhdGEuZ2V0KCldOwotfQotCi1URVNUKFdLQXR0
YWNobWVudFRlc3RzLCBJblBsYWNlUERGQXR0YWNobWVudEN1dEFuZFBhc3RlKQotewotICAgIGF1
dG8gd2ViVmlldyA9IHdlYlZpZXdGb3JUZXN0aW5nQXR0YWNobWVudHMoKTsKLSAgICBSZXRhaW5Q
dHI8TlNEYXRhPiBwZGZEYXRhID0gdGVzdFBERkRhdGEoKTsKLSAgICBSZXRhaW5QdHI8X1dLQXR0
YWNobWVudD4gYXR0YWNobWVudDsKLSAgICB7Ci0gICAgICAgIE9ic2VydmVBdHRhY2htZW50VXBk
YXRlc0ZvclNjb3BlIG9ic2VydmVyKHdlYlZpZXcuZ2V0KCkpOwotICAgICAgICBhdHRhY2htZW50
ID0gW3dlYlZpZXcgc3luY2hyb25vdXNseUluc2VydEF0dGFjaG1lbnRXaXRoRmlsZW5hbWU6QCJ0
ZXN0LnBkZiIgY29udGVudFR5cGU6QCJhcHBsaWNhdGlvbi9wZGYiIGRhdGE6cGRmRGF0YS5nZXQo
KSBvcHRpb25zOmRpc3BsYXlPcHRpb25zV2l0aE1vZGUoX1dLQXR0YWNobWVudERpc3BsYXlNb2Rl
SW5QbGFjZSldOwotICAgICAgICBvYnNlcnZlci5leHBlY3RBdHRhY2htZW50VXBkYXRlcyhAW10s
IEBbYXR0YWNobWVudC5nZXQoKV0pOwotICAgICAgICBbd2ViVmlldyB3YWl0Rm9yQXR0YWNobWVu
dEVsZW1lbnRTaXplVG9CZWNvbWU6Q0dTaXplTWFrZSgxMzAsIDI5KV07Ci0gICAgfQotCi0gICAg
W3dlYlZpZXcgX3N5bmNocm9ub3VzbHlFeGVjdXRlRWRpdENvbW1hbmQ6QCJTZWxlY3RBbGwiIGFy
Z3VtZW50Om5pbF07Ci0gICAgW3dlYlZpZXcgZXhwZWN0VXBkYXRlc0FmdGVyQ29tbWFuZDpAIkN1
dCIgd2l0aEFyZ3VtZW50Om5pbCBleHBlY3RlZFJlbW92YWxzOkBbYXR0YWNobWVudC5nZXQoKV0g
ZXhwZWN0ZWRJbnNlcnRpb25zOkBbXV07Ci0KLSAgICBbd2ViVmlldyBleHBlY3RVcGRhdGVzQWZ0
ZXJDb21tYW5kOkAiUGFzdGUiIHdpdGhBcmd1bWVudDpuaWwgZXhwZWN0ZWRSZW1vdmFsczpAW10g
ZXhwZWN0ZWRJbnNlcnRpb25zOkBbYXR0YWNobWVudC5nZXQoKV1dOwotICAgIFt3ZWJWaWV3IHdh
aXRGb3JBdHRhY2htZW50RWxlbWVudFNpemVUb0JlY29tZTpDR1NpemVNYWtlKDEzMCwgMjkpXTsK
LSAgICBbYXR0YWNobWVudCBleHBlY3RSZXF1ZXN0ZWREYXRhVG9CZTpwZGZEYXRhLmdldCgpXTsK
LX0KLQogVEVTVChXS0F0dGFjaG1lbnRUZXN0cywgQ2hhbmdlQXR0YWNobWVudERhdGFBbmRGaWxl
SW5mb3JtYXRpb24pCiB7CiAgICAgYXV0byB3ZWJWaWV3ID0gd2ViVmlld0ZvclRlc3RpbmdBdHRh
Y2htZW50cygpOwpAQCAtODQ2LDcgKzcyOCw3IEBAIFRFU1QoV0tBdHRhY2htZW50VGVzdHMsIENo
YW5nZUF0dGFjaG1lbnREYXRhQW5kRmlsZUluZm9ybWF0aW9uKQogICAgIHsKICAgICAgICAgUmV0
YWluUHRyPE5TRGF0YT4gcGRmRGF0YSA9IHRlc3RQREZEYXRhKCk7CiAgICAgICAgIE9ic2VydmVB
dHRhY2htZW50VXBkYXRlc0ZvclNjb3BlIG9ic2VydmVyKHdlYlZpZXcuZ2V0KCkpOwotICAgICAg
ICBhdHRhY2htZW50ID0gW3dlYlZpZXcgc3luY2hyb25vdXNseUluc2VydEF0dGFjaG1lbnRXaXRo
RmlsZW5hbWU6QCJ0ZXN0LnBkZiIgY29udGVudFR5cGU6QCJhcHBsaWNhdGlvbi9wZGYiIGRhdGE6
cGRmRGF0YS5nZXQoKSBvcHRpb25zOmRpc3BsYXlPcHRpb25zV2l0aE1vZGUoX1dLQXR0YWNobWVu
dERpc3BsYXlNb2RlQXNJY29uKV07CisgICAgICAgIGF0dGFjaG1lbnQgPSBbd2ViVmlldyBzeW5j
aHJvbm91c2x5SW5zZXJ0QXR0YWNobWVudFdpdGhGaWxlbmFtZTpAInRlc3QucGRmIiBjb250ZW50
VHlwZTpAImFwcGxpY2F0aW9uL3BkZiIgZGF0YTpwZGZEYXRhLmdldCgpXTsKICAgICAgICAgW2F0
dGFjaG1lbnQgZXhwZWN0UmVxdWVzdGVkRGF0YVRvQmU6cGRmRGF0YS5nZXQoKV07CiAgICAgICAg
IEVYUEVDVF9XS19TVFJFUShAInRlc3QucGRmIiwgW3dlYlZpZXcgdmFsdWVPZkF0dHJpYnV0ZTpA
InRpdGxlIiBmb3JRdWVyeVNlbGVjdG9yOkAiYXR0YWNobWVudCJdKTsKICAgICAgICAgRVhQRUNU
X1dLX1NUUkVRKEAiYXBwbGljYXRpb24vcGRmIiwgW3dlYlZpZXcgdmFsdWVPZkF0dHJpYnV0ZTpA
InR5cGUiIGZvclF1ZXJ5U2VsZWN0b3I6QCJhdHRhY2htZW50Il0pOwpAQCAtODY0LDcgKzc0Niw2
IEBAIFRFU1QoV0tBdHRhY2htZW50VGVzdHMsIENoYW5nZUF0dGFjaG1lbnREYXRhQW5kRmlsZUlu
Zm9ybWF0aW9uKQogICAgIHsKICAgICAgICAgUmV0YWluUHRyPE5TRGF0YT4gdGV4dERhdGEgPSB0
ZXN0SFRNTERhdGEoKTsKICAgICAgICAgT2JzZXJ2ZUF0dGFjaG1lbnRVcGRhdGVzRm9yU2NvcGUg
b2JzZXJ2ZXIod2ViVmlldy5nZXQoKSk7Ci0gICAgICAgIFthdHRhY2htZW50IHN5bmNocm9ub3Vz
bHlTZXREaXNwbGF5T3B0aW9uczpkaXNwbGF5T3B0aW9uc1dpdGhNb2RlKF9XS0F0dGFjaG1lbnRE
aXNwbGF5TW9kZUFzSWNvbikgZXJyb3I6bmlsXTsKICAgICAgICAgLy8gVGhlIG5ldyBjb250ZW50
IHR5cGUgc2hvdWxkIGJlIGluZmVycmVkIGZyb20gdGhlIGZpbGUgbmFtZS4KICAgICAgICAgW2F0
dGFjaG1lbnQgc3luY2hyb25vdXNseVNldERhdGE6dGV4dERhdGEuZ2V0KCkgbmV3Q29udGVudFR5
cGU6bmlsIG5ld0ZpbGVuYW1lOkAiZm9vLnR4dCIgZXJyb3I6bmlsXTsKICAgICAgICAgW2F0dGFj
aG1lbnQgZXhwZWN0UmVxdWVzdGVkRGF0YVRvQmU6dGV4dERhdGEuZ2V0KCldOwpAQCAtODg1LDQz
ICs3NjYsNiBAQCBURVNUKFdLQXR0YWNobWVudFRlc3RzLCBDaGFuZ2VBdHRhY2htZW50RGF0YUFu
ZEZpbGVJbmZvcm1hdGlvbikKICAgICBbd2ViVmlldyBleHBlY3RVcGRhdGVzQWZ0ZXJDb21tYW5k
OkAiRGVsZXRlQmFja3dhcmQiIHdpdGhBcmd1bWVudDpuaWwgZXhwZWN0ZWRSZW1vdmFsczpAW2F0
dGFjaG1lbnQuZ2V0KCldIGV4cGVjdGVkSW5zZXJ0aW9uczpAW11dOwogfQogCi1URVNUKFdLQXR0
YWNobWVudFRlc3RzLCBDaGFuZ2VBdHRhY2htZW50RGF0YVVwZGF0ZXNXaXRoSW5QbGFjZURpc3Bs
YXkpCi17Ci0gICAgYXV0byB3ZWJWaWV3ID0gd2ViVmlld0ZvclRlc3RpbmdBdHRhY2htZW50cygp
OwotICAgIFJldGFpblB0cjxfV0tBdHRhY2htZW50PiBhdHRhY2htZW50OwotICAgIHsKLSAgICAg
ICAgUmV0YWluUHRyPE5TRGF0YT4gcGRmRGF0YSA9IHRlc3RQREZEYXRhKCk7Ci0gICAgICAgIE9i
c2VydmVBdHRhY2htZW50VXBkYXRlc0ZvclNjb3BlIG9ic2VydmVyKHdlYlZpZXcuZ2V0KCkpOwot
ICAgICAgICBhdHRhY2htZW50ID0gW3dlYlZpZXcgc3luY2hyb25vdXNseUluc2VydEF0dGFjaG1l
bnRXaXRoRmlsZW5hbWU6QCJ0ZXN0LnBkZiIgY29udGVudFR5cGU6QCJhcHBsaWNhdGlvbi9wZGYi
IGRhdGE6cGRmRGF0YS5nZXQoKSBvcHRpb25zOmRpc3BsYXlPcHRpb25zV2l0aE1vZGUoX1dLQXR0
YWNobWVudERpc3BsYXlNb2RlSW5QbGFjZSldOwotICAgICAgICBbd2ViVmlldyB3YWl0Rm9yQXR0
YWNobWVudEVsZW1lbnRTaXplVG9CZWNvbWU6Q0dTaXplTWFrZSgxMzAsIDI5KV07Ci0gICAgICAg
IFthdHRhY2htZW50IGV4cGVjdFJlcXVlc3RlZERhdGFUb0JlOnBkZkRhdGEuZ2V0KCldOwotICAg
ICAgICBFWFBFQ1RfV0tfU1RSRVEoQCJ0ZXN0LnBkZiIsIFt3ZWJWaWV3IHZhbHVlT2ZBdHRyaWJ1
dGU6QCJ0aXRsZSIgZm9yUXVlcnlTZWxlY3RvcjpAImF0dGFjaG1lbnQiXSk7Ci0gICAgICAgIEVY
UEVDVF9XS19TVFJFUShAImFwcGxpY2F0aW9uL3BkZiIsIFt3ZWJWaWV3IHZhbHVlT2ZBdHRyaWJ1
dGU6QCJ0eXBlIiBmb3JRdWVyeVNlbGVjdG9yOkAiYXR0YWNobWVudCJdKTsKLSAgICAgICAgb2Jz
ZXJ2ZXIuZXhwZWN0QXR0YWNobWVudFVwZGF0ZXMoQFtdLCBAW2F0dGFjaG1lbnQuZ2V0KCldKTsK
LSAgICB9Ci0gICAgewotICAgICAgICBSZXRhaW5QdHI8TlNEYXRhPiB2aWRlb0RhdGEgPSB0ZXN0
VmlkZW9EYXRhKCk7Ci0gICAgICAgIE9ic2VydmVBdHRhY2htZW50VXBkYXRlc0ZvclNjb3BlIG9i
c2VydmVyKHdlYlZpZXcuZ2V0KCkpOwotICAgICAgICBbYXR0YWNobWVudCBzeW5jaHJvbm91c2x5
U2V0RGF0YTp2aWRlb0RhdGEuZ2V0KCkgbmV3Q29udGVudFR5cGU6QCJ2aWRlby9tcDQiIG5ld0Zp
bGVuYW1lOkAidGVzdC5tcDQiIGVycm9yOm5pbF07Ci0gICAgICAgIFt3ZWJWaWV3IHdhaXRGb3JB
dHRhY2htZW50RWxlbWVudFNpemVUb0JlY29tZTpDR1NpemVNYWtlKDMyMCwgMjQwKV07Ci0gICAg
ICAgIFthdHRhY2htZW50IGV4cGVjdFJlcXVlc3RlZERhdGFUb0JlOnZpZGVvRGF0YS5nZXQoKV07
Ci0gICAgICAgIEVYUEVDVF9XS19TVFJFUShAInRlc3QubXA0IiwgW3dlYlZpZXcgdmFsdWVPZkF0
dHJpYnV0ZTpAInRpdGxlIiBmb3JRdWVyeVNlbGVjdG9yOkAiYXR0YWNobWVudCJdKTsKLSAgICAg
ICAgRVhQRUNUX1dLX1NUUkVRKEAidmlkZW8vbXA0IiwgW3dlYlZpZXcgdmFsdWVPZkF0dHJpYnV0
ZTpAInR5cGUiIGZvclF1ZXJ5U2VsZWN0b3I6QCJhdHRhY2htZW50Il0pOwotICAgICAgICBvYnNl
cnZlci5leHBlY3RBdHRhY2htZW50VXBkYXRlcyhAW10sIEBbXSk7Ci0gICAgfQotICAgIHsKLSAg
ICAgICAgUmV0YWluUHRyPE5TRGF0YT4gaW1hZ2VEYXRhID0gdGVzdEltYWdlRGF0YSgpOwotICAg
ICAgICBPYnNlcnZlQXR0YWNobWVudFVwZGF0ZXNGb3JTY29wZSBvYnNlcnZlcih3ZWJWaWV3Lmdl
dCgpKTsKLSAgICAgICAgW2F0dGFjaG1lbnQgc3luY2hyb25vdXNseVNldERhdGE6aW1hZ2VEYXRh
LmdldCgpIG5ld0NvbnRlbnRUeXBlOkAiaW1hZ2UvcG5nIiBuZXdGaWxlbmFtZTpAImljb24ucG5n
IiBlcnJvcjpuaWxdOwotICAgICAgICBbd2ViVmlldyB3YWl0Rm9yQXR0YWNobWVudEVsZW1lbnRT
aXplVG9CZWNvbWU6Q0dTaXplTWFrZSgyMTUsIDE3NCldOwotICAgICAgICBbYXR0YWNobWVudCBl
eHBlY3RSZXF1ZXN0ZWREYXRhVG9CZTppbWFnZURhdGEuZ2V0KCldOwotICAgICAgICBFWFBFQ1Rf
V0tfU1RSRVEoQCJpY29uLnBuZyIsIFt3ZWJWaWV3IHZhbHVlT2ZBdHRyaWJ1dGU6QCJ0aXRsZSIg
Zm9yUXVlcnlTZWxlY3RvcjpAImF0dGFjaG1lbnQiXSk7Ci0gICAgICAgIEVYUEVDVF9XS19TVFJF
UShAImltYWdlL3BuZyIsIFt3ZWJWaWV3IHZhbHVlT2ZBdHRyaWJ1dGU6QCJ0eXBlIiBmb3JRdWVy
eVNlbGVjdG9yOkAiYXR0YWNobWVudCJdKTsKLSAgICAgICAgb2JzZXJ2ZXIuZXhwZWN0QXR0YWNo
bWVudFVwZGF0ZXMoQFtdLCBAW10pOwotICAgIH0KLSAgICBbd2ViVmlldyBleHBlY3RVcGRhdGVz
QWZ0ZXJDb21tYW5kOkAiRGVsZXRlQmFja3dhcmQiIHdpdGhBcmd1bWVudDpuaWwgZXhwZWN0ZWRS
ZW1vdmFsczpAW2F0dGFjaG1lbnQuZ2V0KCldIGV4cGVjdGVkSW5zZXJ0aW9uczpAW11dOwotfQot
CiBURVNUKFdLQXR0YWNobWVudFRlc3RzLCBJbnNlcnRQYXN0ZWRJbWFnZUFzQXR0YWNobWVudCkK
IHsKICAgICBwbGF0Zm9ybUNvcHlQTkcoKTsKQEAgLTEwNTQsNyArODk4LDcgQEAgVEVTVChXS0F0
dGFjaG1lbnRUZXN0cywgSW5zZXJ0QW5kUmVtb3ZlRHVwbGljYXRlQXR0YWNobWVudCkKICAgICBS
ZXRhaW5QdHI8X1dLQXR0YWNobWVudD4gcGFzdGVkQXR0YWNobWVudDsKICAgICB7CiAgICAgICAg
IE9ic2VydmVBdHRhY2htZW50VXBkYXRlc0ZvclNjb3BlIG9ic2VydmVyKHdlYlZpZXcuZ2V0KCkp
OwotICAgICAgICBvcmlnaW5hbEF0dGFjaG1lbnQgPSBbd2ViVmlldyBzeW5jaHJvbm91c2x5SW5z
ZXJ0QXR0YWNobWVudFdpdGhGaWxlbmFtZTpAImZvby50eHQiIGNvbnRlbnRUeXBlOkAidGV4dC9w
bGFpbiIgZGF0YTpkYXRhLmdldCgpIG9wdGlvbnM6bmlsXTsKKyAgICAgICAgb3JpZ2luYWxBdHRh
Y2htZW50ID0gW3dlYlZpZXcgc3luY2hyb25vdXNseUluc2VydEF0dGFjaG1lbnRXaXRoRmlsZW5h
bWU6QCJmb28udHh0IiBjb250ZW50VHlwZTpAInRleHQvcGxhaW4iIGRhdGE6ZGF0YS5nZXQoKV07
CiAgICAgICAgIEVYUEVDVF9FUSgwVSwgb2JzZXJ2ZXIub2JzZXJ2ZXIoKS5yZW1vdmVkLmNvdW50
KTsKICAgICAgICAgb2JzZXJ2ZXIuZXhwZWN0QXR0YWNobWVudFVwZGF0ZXMoQFtdLCBAW29yaWdp
bmFsQXR0YWNobWVudC5nZXQoKV0pOwogICAgIH0KQEAgLTEwOTAsNyArOTM0LDcgQEAgVEVTVChX
S0F0dGFjaG1lbnRUZXN0cywgSW5zZXJ0RHVwbGljYXRlQXR0YWNobWVudEFuZFVwZGF0ZURhdGEp
CiAgICAgUmV0YWluUHRyPF9XS0F0dGFjaG1lbnQ+IHBhc3RlZEF0dGFjaG1lbnQ7CiAgICAgewog
ICAgICAgICBPYnNlcnZlQXR0YWNobWVudFVwZGF0ZXNGb3JTY29wZSBvYnNlcnZlcih3ZWJWaWV3
LmdldCgpKTsKLSAgICAgICAgb3JpZ2luYWxBdHRhY2htZW50ID0gW3dlYlZpZXcgc3luY2hyb25v
dXNseUluc2VydEF0dGFjaG1lbnRXaXRoRmlsZW5hbWU6QCJmb28udHh0IiBjb250ZW50VHlwZTpA
InRleHQvcGxhaW4iIGRhdGE6b3JpZ2luYWxEYXRhLmdldCgpIG9wdGlvbnM6bmlsXTsKKyAgICAg
ICAgb3JpZ2luYWxBdHRhY2htZW50ID0gW3dlYlZpZXcgc3luY2hyb25vdXNseUluc2VydEF0dGFj
aG1lbnRXaXRoRmlsZW5hbWU6QCJmb28udHh0IiBjb250ZW50VHlwZTpAInRleHQvcGxhaW4iIGRh
dGE6b3JpZ2luYWxEYXRhLmdldCgpXTsKICAgICAgICAgRVhQRUNUX0VRKDBVLCBvYnNlcnZlci5v
YnNlcnZlcigpLnJlbW92ZWQuY291bnQpOwogICAgICAgICBvYnNlcnZlci5leHBlY3RBdHRhY2ht
ZW50VXBkYXRlcyhAW10sIEBbb3JpZ2luYWxBdHRhY2htZW50LmdldCgpXSk7CiAgICAgfQpAQCAt
MTM4Niw3ICsxMjMwLDcgQEAgVEVTVChXS0F0dGFjaG1lbnRUZXN0c0lPUywgRHJhZ0F0dGFjaG1l
bnRJbnNlcnRlZEFzRGF0YSkKICAgICBSZXRhaW5QdHI8X1dLQXR0YWNobWVudD4gYXR0YWNobWVu
dDsKICAgICB7CiAgICAgICAgIE9ic2VydmVBdHRhY2htZW50VXBkYXRlc0ZvclNjb3BlIG9ic2Vy
dmVyKHdlYlZpZXcuZ2V0KCkpOwotICAgICAgICBhdHRhY2htZW50ID0gW3dlYlZpZXcgc3luY2hy
b25vdXNseUluc2VydEF0dGFjaG1lbnRXaXRoRmlsZW5hbWU6QCJkb2N1bWVudC5wZGYiIGNvbnRl
bnRUeXBlOkAiYXBwbGljYXRpb24vcGRmIiBkYXRhOmRhdGEuZ2V0KCkgb3B0aW9uczpkaXNwbGF5
T3B0aW9uc1dpdGhNb2RlKF9XS0F0dGFjaG1lbnREaXNwbGF5TW9kZUFzSWNvbildOworICAgICAg
ICBhdHRhY2htZW50ID0gW3dlYlZpZXcgc3luY2hyb25vdXNseUluc2VydEF0dGFjaG1lbnRXaXRo
RmlsZW5hbWU6QCJkb2N1bWVudC5wZGYiIGNvbnRlbnRUeXBlOkAiYXBwbGljYXRpb24vcGRmIiBk
YXRhOmRhdGEuZ2V0KCldOwogICAgICAgICBvYnNlcnZlci5leHBlY3RBdHRhY2htZW50VXBkYXRl
cyhAW10sIEBbYXR0YWNobWVudC5nZXQoKV0pOwogICAgIH0KIApAQCAtMTQwOCwzNCArMTI1Miw2
IEBAIFRFU1QoV0tBdHRhY2htZW50VGVzdHNJT1MsIERyYWdBdHRhY2htZW50SW5zZXJ0ZWRBc0Rh
dGEpCiAgICAgW2RyYWdBbmREcm9wU2ltdWxhdG9yIGVuZERhdGFUcmFuc2Zlcl07CiB9CiAKLVRF
U1QoV0tBdHRhY2htZW50VGVzdHNJT1MsIERyYWdJblBsYWNlVmlkZW9BdHRhY2htZW50RWxlbWVu
dCkKLXsKLSAgICBhdXRvIHdlYlZpZXcgPSB3ZWJWaWV3Rm9yVGVzdGluZ0F0dGFjaG1lbnRzKCk7
Ci0gICAgYXV0byBkYXRhID0gcmV0YWluUHRyKHRlc3RWaWRlb0RhdGEoKSk7Ci0gICAgUmV0YWlu
UHRyPF9XS0F0dGFjaG1lbnQ+IGF0dGFjaG1lbnQ7Ci0gICAgewotICAgICAgICBPYnNlcnZlQXR0
YWNobWVudFVwZGF0ZXNGb3JTY29wZSBvYnNlcnZlcih3ZWJWaWV3LmdldCgpKTsKLSAgICAgICAg
YXR0YWNobWVudCA9IFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlJbnNlcnRBdHRhY2htZW50V2l0aEZp
bGVuYW1lOkAidmlkZW8ubXA0IiBjb250ZW50VHlwZTpAInZpZGVvL21wNCIgZGF0YTpkYXRhLmdl
dCgpIG9wdGlvbnM6ZGlzcGxheU9wdGlvbnNXaXRoTW9kZShfV0tBdHRhY2htZW50RGlzcGxheU1v
ZGVJblBsYWNlKV07Ci0gICAgICAgIG9ic2VydmVyLmV4cGVjdEF0dGFjaG1lbnRVcGRhdGVzKEBb
XSwgQFthdHRhY2htZW50LmdldCgpXSk7Ci0gICAgfQotCi0gICAgW3dlYlZpZXcgd2FpdEZvckF0
dGFjaG1lbnRFbGVtZW50U2l6ZVRvQmVjb21lOkNHU2l6ZU1ha2UoMzIwLCAyNDApXTsKLSAgICBb
YXR0YWNobWVudCBleHBlY3RSZXF1ZXN0ZWREYXRhVG9CZTpkYXRhLmdldCgpXTsKLSAgICBFWFBF
Q1RfV0tfU1RSRVEoInZpZGVvLm1wNCIsIFt3ZWJWaWV3IHZhbHVlT2ZBdHRyaWJ1dGU6QCJ0aXRs
ZSIgZm9yUXVlcnlTZWxlY3RvcjpAImF0dGFjaG1lbnQiXSk7Ci0gICAgRVhQRUNUX1dLX1NUUkVR
KCJ2aWRlby9tcDQiLCBbd2ViVmlldyB2YWx1ZU9mQXR0cmlidXRlOkAidHlwZSIgZm9yUXVlcnlT
ZWxlY3RvcjpAImF0dGFjaG1lbnQiXSk7Ci0KLSAgICBbd2ViVmlldyBldmFsdWF0ZUphdmFTY3Jp
cHQ6QCJnZXRTZWxlY3Rpb24oKS5yZW1vdmVBbGxSYW5nZXMoKSIgY29tcGxldGlvbkhhbmRsZXI6
bmlsXTsKLSAgICBhdXRvIGRyYWdBbmREcm9wU2ltdWxhdG9yID0gYWRvcHROUyhbW0RyYWdBbmRE
cm9wU2ltdWxhdG9yIGFsbG9jXSBpbml0V2l0aFdlYlZpZXc6d2ViVmlldy5nZXQoKV0pOwotICAg
IFtkcmFnQW5kRHJvcFNpbXVsYXRvciBydW5Gcm9tOkNHUG9pbnRNYWtlKDI1LCAyNSkgdG86Q0dQ
b2ludE1ha2UoLTEwMCwgLTEwMCldOwotCi0gICAgRVhQRUNUX0VRKDFVLCBbZHJhZ0FuZERyb3BT
aW11bGF0b3Igc291cmNlSXRlbVByb3ZpZGVyc10uY291bnQpOwotICAgIE5TSXRlbVByb3ZpZGVy
ICppdGVtUHJvdmlkZXIgPSBbZHJhZ0FuZERyb3BTaW11bGF0b3Igc291cmNlSXRlbVByb3ZpZGVy
c10uZmlyc3RPYmplY3Q7Ci0gICAgRVhQRUNUX0VRKFVJUHJlZmVycmVkUHJlc2VudGF0aW9uU3R5
bGVBdHRhY2htZW50LCBpdGVtUHJvdmlkZXIucHJlZmVycmVkUHJlc2VudGF0aW9uU3R5bGUpOwot
ICAgIFtpdGVtUHJvdmlkZXIgZXhwZWN0VHlwZTooTlNTdHJpbmcgKilrVVRUeXBlTVBFRzQgd2l0
aERhdGE6ZGF0YS5nZXQoKV07Ci0gICAgRVhQRUNUX1dLX1NUUkVRKCJ2aWRlby5tcDQiLCBbaXRl
bVByb3ZpZGVyIHN1Z2dlc3RlZE5hbWVdKTsKLSAgICBbZHJhZ0FuZERyb3BTaW11bGF0b3IgZW5k
RGF0YVRyYW5zZmVyXTsKLX0KLQogVEVTVChXS0F0dGFjaG1lbnRUZXN0c0lPUywgTW92ZUF0dGFj
aG1lbnRFbGVtZW50QXNJY29uQnlEcmFnZ2luZykKIHsKICAgICBhdXRvIHdlYlZpZXcgPSB3ZWJW
aWV3Rm9yVGVzdGluZ0F0dGFjaG1lbnRzKCk7CkBAIC0xNDQzLDcgKzEyNTksNyBAQCBURVNUKFdL
QXR0YWNobWVudFRlc3RzSU9TLCBNb3ZlQXR0YWNobWVudEVsZW1lbnRBc0ljb25CeURyYWdnaW5n
KQogICAgIFJldGFpblB0cjxfV0tBdHRhY2htZW50PiBhdHRhY2htZW50OwogICAgIHsKICAgICAg
ICAgT2JzZXJ2ZUF0dGFjaG1lbnRVcGRhdGVzRm9yU2NvcGUgb2JzZXJ2ZXIod2ViVmlldy5nZXQo
KSk7Ci0gICAgICAgIGF0dGFjaG1lbnQgPSBbd2ViVmlldyBzeW5jaHJvbm91c2x5SW5zZXJ0QXR0
YWNobWVudFdpdGhGaWxlbmFtZTpAImRvY3VtZW50LnBkZiIgY29udGVudFR5cGU6QCJhcHBsaWNh
dGlvbi9wZGYiIGRhdGE6ZGF0YS5nZXQoKSBvcHRpb25zOmRpc3BsYXlPcHRpb25zV2l0aE1vZGUo
X1dLQXR0YWNobWVudERpc3BsYXlNb2RlQXNJY29uKV07CisgICAgICAgIGF0dGFjaG1lbnQgPSBb
d2ViVmlldyBzeW5jaHJvbm91c2x5SW5zZXJ0QXR0YWNobWVudFdpdGhGaWxlbmFtZTpAImRvY3Vt
ZW50LnBkZiIgY29udGVudFR5cGU6QCJhcHBsaWNhdGlvbi9wZGYiIGRhdGE6ZGF0YS5nZXQoKV07
CiAgICAgICAgIG9ic2VydmVyLmV4cGVjdEF0dGFjaG1lbnRVcGRhdGVzKEBbXSwgQFthdHRhY2ht
ZW50LmdldCgpXSk7CiAgICAgfQogCkBAIC0xNDY0LDM1ICsxMjgwLDYgQEAgVEVTVChXS0F0dGFj
aG1lbnRUZXN0c0lPUywgTW92ZUF0dGFjaG1lbnRFbGVtZW50QXNJY29uQnlEcmFnZ2luZykKICAg
ICBbZHJhZ0FuZERyb3BTaW11bGF0b3IgZW5kRGF0YVRyYW5zZmVyXTsKIH0KIAotVEVTVChXS0F0
dGFjaG1lbnRUZXN0c0lPUywgTW92ZUluUGxhY2VBdHRhY2htZW50RWxlbWVudEJ5RHJhZ2dpbmcp
Ci17Ci0gICAgYXV0byB3ZWJWaWV3ID0gd2ViVmlld0ZvclRlc3RpbmdBdHRhY2htZW50cygpOwot
ICAgIGF1dG8gZGF0YSA9IHJldGFpblB0cih0ZXN0SW1hZ2VEYXRhKCkpOwotICAgIFJldGFpblB0
cjxfV0tBdHRhY2htZW50PiBhdHRhY2htZW50OwotICAgIHsKLSAgICAgICAgT2JzZXJ2ZUF0dGFj
aG1lbnRVcGRhdGVzRm9yU2NvcGUgb2JzZXJ2ZXIod2ViVmlldy5nZXQoKSk7Ci0gICAgICAgIGF0
dGFjaG1lbnQgPSBbd2ViVmlldyBzeW5jaHJvbm91c2x5SW5zZXJ0QXR0YWNobWVudFdpdGhGaWxl
bmFtZTpAImljb24ucG5nIiBjb250ZW50VHlwZTpAImltYWdlL3BuZyIgZGF0YTpkYXRhLmdldCgp
IG9wdGlvbnM6ZGlzcGxheU9wdGlvbnNXaXRoTW9kZShfV0tBdHRhY2htZW50RGlzcGxheU1vZGVJ
blBsYWNlKV07Ci0gICAgICAgIG9ic2VydmVyLmV4cGVjdEF0dGFjaG1lbnRVcGRhdGVzKEBbXSwg
QFthdHRhY2htZW50LmdldCgpXSk7Ci0gICAgfQotCi0gICAgW3dlYlZpZXcgd2FpdEZvckF0dGFj
aG1lbnRFbGVtZW50U2l6ZVRvQmVjb21lOkNHU2l6ZU1ha2UoMjE1LCAxNzQpXTsKLSAgICBbd2Vi
VmlldyBfZXhlY3V0ZUVkaXRDb21tYW5kOkAiSW5zZXJ0UGFyYWdyYXBoIiBhcmd1bWVudDpuaWwg
Y29tcGxldGlvbjpuaWxdOwotICAgIFt3ZWJWaWV3IF9leGVjdXRlRWRpdENvbW1hbmQ6QCJJbnNl
cnRIVE1MIiBhcmd1bWVudDpAIjxzdHJvbmc+dGV4dDwvc3Ryb25nPiIgY29tcGxldGlvbjpuaWxd
OwotICAgIFt3ZWJWaWV3IF9zeW5jaHJvbm91c2x5RXhlY3V0ZUVkaXRDb21tYW5kOkAiSW5zZXJ0
UGFyYWdyYXBoIiBhcmd1bWVudDpuaWxdOwotICAgIFt3ZWJWaWV3IGV4cGVjdEVsZW1lbnRUYWc6
QCJBVFRBQ0hNRU5UIiB0b0NvbWVCZWZvcmU6QCJTVFJPTkciXTsKLQotICAgIGF1dG8gZHJhZ0Fu
ZERyb3BTaW11bGF0b3IgPSBhZG9wdE5TKFtbRHJhZ0FuZERyb3BTaW11bGF0b3IgYWxsb2NdIGlu
aXRXaXRoV2ViVmlldzp3ZWJWaWV3LmdldCgpXSk7Ci0gICAgW2RyYWdBbmREcm9wU2ltdWxhdG9y
IHJ1bkZyb206Q0dQb2ludE1ha2UoMjUsIDI1KSB0bzpDR1BvaW50TWFrZSgyNSwgNDI1KV07Ci0K
LSAgICBhdHRhY2htZW50ID0gW1tkcmFnQW5kRHJvcFNpbXVsYXRvciBpbnNlcnRlZEF0dGFjaG1l
bnRzXSBmaXJzdE9iamVjdF07Ci0gICAgW2F0dGFjaG1lbnQgZXhwZWN0UmVxdWVzdGVkRGF0YVRv
QmU6ZGF0YS5nZXQoKV07Ci0gICAgRVhQRUNUX1dLX1NUUkVRKCJpY29uLnBuZyIsIFt3ZWJWaWV3
IHZhbHVlT2ZBdHRyaWJ1dGU6QCJ0aXRsZSIgZm9yUXVlcnlTZWxlY3RvcjpAImF0dGFjaG1lbnQi
XSk7Ci0gICAgRVhQRUNUX1dLX1NUUkVRKCJpbWFnZS9wbmciLCBbd2ViVmlldyB2YWx1ZU9mQXR0
cmlidXRlOkAidHlwZSIgZm9yUXVlcnlTZWxlY3RvcjpAImF0dGFjaG1lbnQiXSk7Ci0KLSAgICBb
d2ViVmlldyBleHBlY3RFbGVtZW50VGFnOkAiU1RST05HIiB0b0NvbWVCZWZvcmU6QCJBVFRBQ0hN
RU5UIl07Ci0gICAgW2RyYWdBbmREcm9wU2ltdWxhdG9yIGVuZERhdGFUcmFuc2Zlcl07Ci19Ci0K
ICNlbmRpZiAvLyBQTEFURk9STShJT1MpCiAKIH0gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBhN2I2NTgyZjM1YzY1ODc0MzhhYTVjYmU3ODg3NWU5ODVjYTBiYWI5Li43ZjM5YWY1
ODYxZjk1NTlmN2U0Y2RiMDE0MWEwNjNlNWQxMTQyNTcwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAK
KzIwMTgtMDgtMTQgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAg
ICAgICAgW0F0dGFjaG1lbnQgU1BJXSBSZW1vdmUgYXR0YWNobWVudCBkaXNwbGF5IG1vZGUgb3B0
aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg4
NTk2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVt
b3ZlIGEgbGF5b3V0IHRlc3Qgd2hpY2ggdmVyaWZpZWQgdGhhdCBhdHRhY2htZW50IGVsZW1lbnRz
IHdpdGggYC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZWAgd291bGQgcmVuZGVyCisgICAgICAgIGNo
aWxkIGVsZW1lbnRzLiBUaGlzIHdhcyBvbmx5IHVzZWQgdG8gaW1wbGVtZW50IGluLXBsYWNlIGF0
dGFjaG1lbnQgZGlzcGxheSBtb2Rlcy4KKworICAgICAgICAqIGZhc3QvYXR0YWNobWVudC9hdHRh
Y2htZW50LXdpdGhvdXQtYXBwZWFyYW5jZS1leHBlY3RlZC5odG1sOiBSZW1vdmVkLgorICAgICAg
ICAqIGZhc3QvYXR0YWNobWVudC9hdHRhY2htZW50LXdpdGhvdXQtYXBwZWFyYW5jZS5odG1sOiBS
ZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRpb25zOgorCiAyMDE4
LTA4LTE0ICBSeWFuIEhhZGRhZCAgPHJ5YW5oYWRkYWRAYXBwbGUuY29tPgogCiAgICAgICAgIE1h
cmsgc3ZnL2N1c3RvbS9zY3JvbGxpbmctZW1iZWRkZWQtc3ZnLWZpbGUtaW1hZ2UtcmVwYWludC1w
cm9ibGVtLmh0bWwgYXMgZmxha3kuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2F0dGFj
aG1lbnQvYXR0YWNobWVudC13aXRob3V0LWFwcGVhcmFuY2UtZXhwZWN0ZWQuaHRtbCBiL0xheW91
dFRlc3RzL2Zhc3QvYXR0YWNobWVudC9hdHRhY2htZW50LXdpdGhvdXQtYXBwZWFyYW5jZS1leHBl
Y3RlZC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNGNiZmMyZGQzNDY0NjZi
ODc5MGNkM2JjNDBhYTZlYjIxYjkyY2NlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2Zhc3QvYXR0YWNobWVudC9hdHRhY2htZW50LXdp
dGhvdXQtYXBwZWFyYW5jZS1leHBlY3RlZC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTMgKzAs
MCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxzdHlsZT4KLSAgICBzcGFuIHsKLSAgICAg
ICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwotICAgIH0KLTwvc3R5bGU+Ci08Ym9keT4KLTxkaXY+
VGhpcyB0ZXN0IHBhc3NlcyBpZiB5b3Ugb2JzZXJ2ZSB0d28gZ3JlZW4gc3F1YXJlcyBiZWxvdy48
L2Rpdj4KLTxzcGFuPjxkaXYgc3R5bGU9IndpZHRoOiAxMDBweDsgaGVpZ2h0OiAxMDBweDsgYmFj
a2dyb3VuZC1jb2xvcjogZ3JlZW47IGNvbG9yOiB3aGl0ZTsiPkxvcmVtLjwvZGl2Pjwvc3Bhbj4K
LTxzcGFuPjxkaXYgc3R5bGU9IndpZHRoOiAxMDBweDsgaGVpZ2h0OiAxMDBweDsgYmFja2dyb3Vu
ZC1jb2xvcjogZ3JlZW47IGNvbG9yOiB3aGl0ZTsiPklwc3VtLjwvZGl2Pjwvc3Bhbj4KLTwvYm9k
eT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvYXR0YWNobWVudC9hdHRh
Y2htZW50LXdpdGhvdXQtYXBwZWFyYW5jZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9hdHRhY2ht
ZW50L2F0dGFjaG1lbnQtd2l0aG91dC1hcHBlYXJhbmNlLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDFjZmE0NzkyZTAwODBkODdlNmJiZDM5ZTY2NGMzZWZhMjM5NWMyZTkuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMv
ZmFzdC9hdHRhY2htZW50L2F0dGFjaG1lbnQtd2l0aG91dC1hcHBlYXJhbmNlLmh0bWwKKysrIC9k
ZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi08IURPQ1RZUEUgaHRtbD48IS0tIHdlYmtpdC10ZXN0
LXJ1bm5lciBbIGVuYWJsZUF0dGFjaG1lbnRFbGVtZW50PXRydWUgXSAtLT4KLTxodG1sPgotPGJv
ZHk+Ci08ZGl2PlRoaXMgdGVzdCBwYXNzZXMgaWYgeW91IG9ic2VydmUgdHdvIGdyZWVuIHNxdWFy
ZXMgYmVsb3cuPC9kaXY+Ci08YXR0YWNobWVudCBzdHlsZT0iLXdlYmtpdC1hcHBlYXJhbmNlOiBu
b25lOyI+PGRpdiBzdHlsZT0id2lkdGg6IDEwMHB4OyBoZWlnaHQ6IDEwMHB4OyBiYWNrZ3JvdW5k
LWNvbG9yOiBncmVlbjsgY29sb3I6IHdoaXRlOyI+TG9yZW0uPC9kaXY+PC9hdHRhY2htZW50Pgot
PGF0dGFjaG1lbnQgaWQ9ImF0dGFjaG1lbnQiPjxkaXYgc3R5bGU9IndpZHRoOiAxMDBweDsgaGVp
Z2h0OiAxMDBweDsgYmFja2dyb3VuZC1jb2xvcjogZ3JlZW47IGNvbG9yOiB3aGl0ZTsiPklwc3Vt
LjwvZGl2PjwvYXR0YWNobWVudD4KLTxzY3JpcHQ+Ci0gICAgYXR0YWNobWVudC5zdHlsZS53ZWJr
aXRBcHBlYXJhbmNlID0gIm5vbmUiOwotPC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDk1NWQ1NWQwM2I1MDI0
N2M1YTIzY2E4ZDRiOTRhMTI3NzMxZjdiNmUuLmJjZTkzOGExZDU2NzMwMjM1ZWY3MWY4OTkwNTcx
MjNjNWFlMGUwZjYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9UZXN0RXhw
ZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRpb25z
CkBAIC0zMzg1LDggKzMzODUsNiBAQCB3ZWJraXQub3JnL2IvMTc3NjMyIGZhc3QvdGV4dC9mbGFn
LWNvZGVwb2ludC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiAKIHdlYmtpdC5vcmcvYi8xNzkw
NTIgY29tcG9zaXRpbmcvY29udGVudHMtZm9ybWF0L3N1YnBpeGVsLWFudGlhbGlhc2VkLW5lc3Rl
ZC1sYXllci5odG1sIFsgRmFpbHVyZSBdCiAKLXdlYmtpdC5vcmcvYi8xODAzNzEgZmFzdC9hdHRh
Y2htZW50L2F0dGFjaG1lbnQtd2l0aG91dC1hcHBlYXJhbmNlLmh0bWwgWyBJbWFnZU9ubHlGYWls
dXJlIF0KLQogd2Via2l0Lm9yZy9iLzE4MDc0OSBodHRwL3dwdC9vZmZzY3JlZW4tY2FudmFzL3Ry
YW5zZmVyVG9JbWFnZUJpdG1hcC13ZWJnbC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiAKIHdl
YmtpdC5vcmcvYi8xODA4MDIgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3dl
YmFwcGFwaXMvc3lzdGVtLXN0YXRlLWFuZC1jYXBhYmlsaXRpZXMvdGhlLW5hdmlnYXRvci1vYmpl
Y3QvbmF2aWdhdG9yLXBsdWdpbmFycmF5Lmh0bWwgWyBGYWlsdXJlIF0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>347148</attachid>
            <date>2018-08-14 21:26:52 -0700</date>
            <delta_ts>2018-08-15 07:26:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-188596-20180814212651.patch</filename>
            <type>text/plain</type>
            <size>51936</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM0ODYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmMwYmJiZGM4N2NjZGU3
MjM0NjMyY2JiNDE1Y2E5YmVkMTc5N2M4ZS4uNWJlM2ZjOTE2MzIxMGU4Njc1NWEyZDM0Y2VhMjU3
ZjlkM2RhNGI2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU2IEBACisyMDE4LTA4LTE0ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtBdHRhY2htZW50
IFNQSV0gUmVtb3ZlIGF0dGFjaG1lbnQgZGlzcGxheSBtb2RlIG9wdGlvbnMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4ODU5NgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92ZSB0aGUgYWJpbGl0eSB0
byBzcGVjaWZ5IGFuICJpbi1wbGFjZSIgb3IgImljb24iIHJlcHJlc2VudGF0aW9uIGZvciBhdHRh
Y2htZW50IGVsZW1lbnRzLCBhcyB3ZWxsIGFzIGxvZ2ljCisgICAgICAgIG5lZWRlZCB0byBhbGxv
dyBhbiBhdHRhY2htZW50IGVsZW1lbnQgdG8gcmVuZGVyIGltYWdlIG9yIHZpZGVvIGVsZW1lbnRz
IGluIGEgc2hhZG93IHJvb3QuIFRoZSByZXF1aXJlbWVudHMgdGhhdAorICAgICAgICBpbml0aWFs
bHkgZHJvdmUgdGhpcyBlZmZvcnQgYXJlIG9idmlhdGVkIGJ5IHIyMjcwNjgsIHdoaWNoIGFsbG93
cyBNYWlsIHRvIGludGVyY2VwdCBhbmQgcHJvdmlkZSBhIGN1c3RvbSBzY2hlbWUKKyAgICAgICAg
Zm9yIGltYWdlcyBpbnNlcnRlZCBpbnRvIHRoZSBkb2N1bWVudCB2aWEgcmljaCBlZGl0aW5nIG9w
ZXJhdGlvbnMuCisKKyAgICAgICAgUmVtb3ZlZCBzb21lIGV4aXN0aW5nIEFQSSB0ZXN0cyBpbiBf
V0tBdHRhY2htZW50VGVzdHMgdGhhdCBleGVyY2lzZWQgdGhpcyBmdW5jdGlvbmFsaXR5LgorCisg
ICAgICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpp
bnNlcnRBdHRhY2htZW50RnJvbUZpbGUpOgorICAgICAgICAqIGVkaXRpbmcvY29jb2EvV2ViQ29u
dGVudFJlYWRlckNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRnJhZ21lbnRGb3JJ
bWFnZUF0dGFjaG1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6cmVwbGFjZVJpY2hDb250ZW50V2l0
aEF0dGFjaG1lbnRzKToKKyAgICAgICAgKiBodG1sL0F0dGFjaG1lbnRUeXBlcy5oOgorICAgICAg
ICAoV2ViQ29yZTo6QXR0YWNobWVudERpc3BsYXlPcHRpb25zOjplbmNvZGUgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6QXR0YWNobWVudERpc3BsYXlPcHRpb25zOjpkZWNvZGUpOgorCisgICAg
ICAgIFJlbW92ZSBsb2dpYyBmb3IgZW5jb2RpbmcgdGhlIGF0dGFjaG1lbnQgZGlzcGxheSBtb2Rl
LiBXaGlsZSB0aGlzIGxlYXZlcyBBdHRhY2htZW50RGlzcGxheU9wdGlvbnMgY29tcGxldGVseQor
ICAgICAgICBlbXB0eSwgSSBoYXZlbid0IHJlbW92ZWQgQXR0YWNobWVudERpc3BsYXlPcHRpb25z
IGFzIHdlbGwgaW4gdGhpcyBwYXRjaCwgc2luY2UgaXQncyBub3QgY2xlYXIgdGhhdCB3ZSB3b24n
dCBiZQorICAgICAgICBuZWVkaW5nIGFueSBtZWNoYW5pc20gZm9yIGluZmx1ZW5jaW5nIHRoZSBk
aXNwbGF5IG9mIGF0dGFjaG1lbnQgZWxlbWVudHMgaW5zZXJ0ZWQgdmlhIG5hdGl2ZSBTUEkuCisK
KyAgICAgICAgKCk6IERlbGV0ZWQuCisgICAgICAgICogaHRtbC9IVE1MQXR0YWNobWVudEVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEF0dGFjaG1lbnRFbGVtZW50OjpjcmVhdGVF
bGVtZW50UmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEF0dGFjaG1lbnRFbGVtZW50
OjpzZXRGaWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxBdHRhY2htZW50RWxlbWVudDo6cGFy
c2VBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEF0dGFjaG1lbnRFbGVtZW50Ojpp
bnZhbGlkYXRlU2hhZG93Um9vdENoaWxkcmVuSWZOZWNlc3NhcnkpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTEF0dGFjaG1lbnRFbGVtZW50OjphdHRhY2htZW50UmVuZGVyZXIgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SFRNTEF0dGFjaG1lbnRFbGVtZW50Ojp1
cGRhdGVEaXNwbGF5TW9kZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MQXR0YWNo
bWVudEVsZW1lbnQ6OmVuc3VyZUlubmVySW1hZ2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTEF0dGFjaG1lbnRFbGVtZW50OjplbnN1cmVJbm5lclZpZGVvKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxBdHRhY2htZW50RWxlbWVudDo6aW5uZXJJbWFnZSBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MQXR0YWNobWVudEVsZW1lbnQ6OmlubmVy
VmlkZW8gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SFRNTEF0dGFjaG1lbnRF
bGVtZW50Ojpwb3B1bGF0ZVNoYWRvd1Jvb3RJZk5lY2Vzc2FyeSk6IERlbGV0ZWQuCisKKyAgICAg
ICAgUmVtb3ZlIGxvZ2ljIGZvciBidWlsZGluZyB0aGUgc2hhZG93IHJvb3QgdG8gaG91c2UgaW5s
aW5lIG1lZGlhIGVsZW1lbnRzLgorCisgICAgICAgICogaHRtbC9IVE1MQXR0YWNobWVudEVsZW1l
bnQuaDoKKworICAgICAgICBUaGUgcmVuZGVyZXIgb2YgdGhlIGF0dGFjaG1lbnQgZWxlbWVudCBp
cyBvbmNlIGFnYWluIGFsd2F5cyBhIGBSZW5kZXJBdHRhY2htZW50YCwgc28gd2UgY2FuIHJlbW92
ZQorICAgICAgICBgYXR0YWNobWVudFJlbmRlcmVyKClgIGFsdG9nZXRoZXIgYW5kIHJldmVydCB0
byBvdmVycmlkaW5nIGByZW5kZXJlcigpYCB0byByZXR1cm4gYSBgUmVuZGVyQXR0YWNobWVudCpg
LgorCisgICAgICAgICogcGFnZS9EcmFnQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpEcmFnQ29udHJvbGxlcjo6c3RhcnREcmFnKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
QXR0YWNobWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEF0dGFjaG1lbnRFbGVtZW50Ojpy
ZW5kZXJlciBjb25zdCk6CisKIDIwMTgtMDgtMTQgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0
ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBVc2UgYSBWYXJpYW50IGluc3RlYWQgb2YgYSB1
bmlvbiBpbiBDU1NTZWxlY3RvcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAzM2IxMWViMDE2NDFhYTczOWExMjcyZTdi
MTA4NjU5ZDA3NTQwMzY2Li5lNWFiMTMxODNmMTkwYWIwY2Q5OGE4YjM2ZmJhMWEwZTc2MGE4MTFm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDE4LTA4LTE0ICBXZW5zb24gSHNpZWggIDx3
ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtBdHRhY2htZW50IFNQSV0gUmVtb3Zl
IGF0dGFjaG1lbnQgZGlzcGxheSBtb2RlIG9wdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4ODU5NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92ZSBhdHRhY2htZW50IGRpc3BsYXkgbW9kZSBm
cm9tIFdlYktpdC4gTm90ZSB0aGF0IF9XS0F0dGFjaG1lbnREaXNwbGF5T3B0aW9ucyBuZWVkcyB0
byByZW1haW4gaW4gdGhlIHByaXZhdGUKKyAgICAgICAgaGVhZGVyIGZvciBzb3VyY2UgY29tcGF0
aWJpbGl0eSB3aXRoIE1haWwuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0F0
dGFjaG1lbnQubW06CisgICAgICAgICgtW19XS0F0dGFjaG1lbnREaXNwbGF5T3B0aW9ucyBjb3Jl
RGlzcGxheU9wdGlvbnNdKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNldEF0dGFjaG1lbnREaXNw
bGF5T3B0aW9ucyk6CisKIDIwMTgtMDgtMTQgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUu
Y29tPgogCiAgICAgICAgIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uIHNob3VsZCB1c2UgT3B0
aW9uU2V0IGZvciBjaGFuZ2UgZmxhZ3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAppbmRleCAx
YmFjN2Y0ZTM2ZGYzNjVlYjJlZjJiNzI4MGNjODQyNDQyYTk0YWVhLi43ZDI2YzU2MzZiZTMxZWYz
NmI3MTNmMDc3ODA0MzFhNjQ5ZDRlMDU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0VkaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCkBA
IC0zODczLDcgKzM4NzMsNyBAQCB2b2lkIEVkaXRvcjo6aW5zZXJ0QXR0YWNobWVudChjb25zdCBT
dHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IEF0dGFjaG1lbnREaXNwbGF5TwogICAgIGluc2VydEF0
dGFjaG1lbnRGcm9tRmlsZShpZGVudGlmaWVyLCBvcHRpb25zLCBmaWxlbmFtZSwgKmNvbnRlbnRU
eXBlLCBGaWxlOjpjcmVhdGUoQmxvYjo6Y3JlYXRlKFdURk1vdmUoZGF0YSksICpjb250ZW50VHlw
ZSksIGZpbGVuYW1lKSk7CiB9CiAKLXZvaWQgRWRpdG9yOjppbnNlcnRBdHRhY2htZW50RnJvbUZp
bGUoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBBdHRhY2htZW50RGlzcGxheU9wdGlv
bnMmIG9wdGlvbnMsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgY29udGVu
dFR5cGUsIFJlZjxGaWxlPiYmIGZpbGUpCit2b2lkIEVkaXRvcjo6aW5zZXJ0QXR0YWNobWVudEZy
b21GaWxlKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgQXR0YWNobWVudERpc3BsYXlP
cHRpb25zJiwgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlw
ZSwgUmVmPEZpbGU+JiYgZmlsZSkKIHsKICAgICBhdXRvIGF0dGFjaG1lbnQgPSBIVE1MQXR0YWNo
bWVudEVsZW1lbnQ6OmNyZWF0ZShIVE1MTmFtZXM6OmF0dGFjaG1lbnRUYWcsIGRvY3VtZW50KCkp
OwogICAgIGF0dGFjaG1lbnQtPnNldEF0dHJpYnV0ZShIVE1MTmFtZXM6OnRpdGxlQXR0ciwgZmls
ZW5hbWUpOwpAQCAtMzg4MSw3ICszODgxLDYgQEAgdm9pZCBFZGl0b3I6Omluc2VydEF0dGFjaG1l
bnRGcm9tRmlsZShjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IEF0dGFjaG1lbnQKICAg
ICBhdHRhY2htZW50LT5zZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjp0eXBlQXR0ciwgY29udGVudFR5
cGUpOwogICAgIGF0dGFjaG1lbnQtPnNldFVuaXF1ZUlkZW50aWZpZXIoaWRlbnRpZmllcik7CiAg
ICAgYXR0YWNobWVudC0+c2V0RmlsZShXVEZNb3ZlKGZpbGUpKTsKLSAgICBhdHRhY2htZW50LT51
cGRhdGVEaXNwbGF5TW9kZShvcHRpb25zLm1vZGUpOwogCiAgICAgYXV0byBmcmFnbWVudFRvSW5z
ZXJ0ID0gZG9jdW1lbnQoKS5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7CiAgICAgZnJhZ21lbnRU
b0luc2VydC0+YXBwZW5kQ2hpbGQoYXR0YWNobWVudC5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbSBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tCmluZGV4IDk3
Mjg1NTg3YmUyMDZmOTRhYmJhOGI3MDExZDNkZDYyNmEzNGE4MGQuLjFjYjJiMWNlNmFkY2E0NjU2
MTE3Y2RhMjc0YjA4MTFkMzE4OGI0NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tCkBAIC0yMDksNyArMjA5LDYgQEAg
c3RhdGljIFJlZjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVGcmFnbWVudEZvckltYWdlQXR0YWNo
bWVudChEb2N1bWVudCYgZG9jdW1lbnQKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQog
ICAgIGF1dG8gYXR0YWNobWVudCA9IEhUTUxBdHRhY2htZW50RWxlbWVudDo6Y3JlYXRlKEhUTUxO
YW1lczo6YXR0YWNobWVudFRhZywgZG9jdW1lbnQpOwogICAgIGF0dGFjaG1lbnQtPnNldEZpbGUo
RmlsZTo6Y3JlYXRlKGJsb2IsIEF0b21pY1N0cmluZygiaW1hZ2UiKSksIEhUTUxBdHRhY2htZW50
RWxlbWVudDo6VXBkYXRlRGlzcGxheUF0dHJpYnV0ZXM6Olllcyk7Ci0gICAgYXR0YWNobWVudC0+
dXBkYXRlRGlzcGxheU1vZGUoQXR0YWNobWVudERpc3BsYXlNb2RlOjpJblBsYWNlKTsKIAogICAg
IGF1dG8gZnJhZ21lbnQgPSBkb2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7CiAgICAg
ZnJhZ21lbnQtPmFwcGVuZENoaWxkKGF0dGFjaG1lbnQpOwpAQCAtMjI1LDcgKzIyNCw2IEBAIHN0
YXRpYyB2b2lkIHJlcGxhY2VSaWNoQ29udGVudFdpdGhBdHRhY2htZW50cyhEb2N1bWVudEZyYWdt
ZW50JiBmcmFnbWVudCwgY29uc3QKIHsKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQog
ICAgIHN0cnVjdCBBdHRhY2htZW50UmVwbGFjZW1lbnRJbmZvIHsKLSAgICAgICAgQXR0YWNobWVu
dERpc3BsYXlNb2RlIGRpc3BsYXlNb2RlOwogICAgICAgICBSZWY8RmlsZT4gZmlsZTsKICAgICAg
ICAgUmVmPEVsZW1lbnQ+IGVsZW1lbnRUb1JlcGxhY2U7CiAgICAgfTsKQEAgLTI1Nyw3ICsyNTUs
NyBAQCBzdGF0aWMgdm9pZCByZXBsYWNlUmljaENvbnRlbnRXaXRoQXR0YWNobWVudHMoRG9jdW1l
bnRGcmFnbWVudCYgZnJhZ21lbnQsIGNvbnN0CiAgICAgICAgIGlmICh0aXRsZS5pc0VtcHR5KCkp
CiAgICAgICAgICAgICB0aXRsZSA9IEF0b21pY1N0cmluZygibWVkaWEiKTsKIAotICAgICAgICBh
dHRhY2htZW50UmVwbGFjZW1lbnRJbmZvLmFwcGVuZCh7IEF0dGFjaG1lbnREaXNwbGF5TW9kZTo6
SW5QbGFjZSwgRmlsZTo6Y3JlYXRlKCpibG9iLCB0aXRsZSksIGltYWdlIH0pOworICAgICAgICBh
dHRhY2htZW50UmVwbGFjZW1lbnRJbmZvLmFwcGVuZCh7IEZpbGU6OmNyZWF0ZSgqYmxvYiwgdGl0
bGUpLCBpbWFnZSB9KTsKICAgICB9CiAKICAgICBmb3IgKGF1dG8mIG9iamVjdCA6IGRlc2NlbmRh
bnRzT2ZUeXBlPEhUTUxPYmplY3RFbGVtZW50PihmcmFnbWVudCkpIHsKQEAgLTI3Nyw3ICsyNzUs
NyBAQCBzdGF0aWMgdm9pZCByZXBsYWNlUmljaENvbnRlbnRXaXRoQXR0YWNobWVudHMoRG9jdW1l
bnRGcmFnbWVudCYgZnJhZ21lbnQsIGNvbnN0CiAgICAgICAgIGlmICh0aXRsZS5pc0VtcHR5KCkp
CiAgICAgICAgICAgICB0aXRsZSA9IEF0b21pY1N0cmluZygiZmlsZSIpOwogCi0gICAgICAgIGF0
dGFjaG1lbnRSZXBsYWNlbWVudEluZm8uYXBwZW5kKHsgQXR0YWNobWVudERpc3BsYXlNb2RlOjpB
c0ljb24sIEZpbGU6OmNyZWF0ZSgqYmxvYiwgdGl0bGUpLCBvYmplY3QgfSk7CisgICAgICAgIGF0
dGFjaG1lbnRSZXBsYWNlbWVudEluZm8uYXBwZW5kKHsgRmlsZTo6Y3JlYXRlKCpibG9iLCB0aXRs
ZSksIG9iamVjdCB9KTsKICAgICB9CiAKICAgICBmb3IgKGF1dG8mIGluZm8gOiBhdHRhY2htZW50
UmVwbGFjZW1lbnRJbmZvKSB7CkBAIC0yODksNyArMjg3LDYgQEAgc3RhdGljIHZvaWQgcmVwbGFj
ZVJpY2hDb250ZW50V2l0aEF0dGFjaG1lbnRzKERvY3VtZW50RnJhZ21lbnQmIGZyYWdtZW50LCBj
b25zdAogCiAgICAgICAgIGF1dG8gYXR0YWNobWVudCA9IEhUTUxBdHRhY2htZW50RWxlbWVudDo6
Y3JlYXRlKEhUTUxOYW1lczo6YXR0YWNobWVudFRhZywgZnJhZ21lbnQuZG9jdW1lbnQoKSk7CiAg
ICAgICAgIGF0dGFjaG1lbnQtPnNldEZpbGUoV1RGTW92ZShmaWxlKSwgSFRNTEF0dGFjaG1lbnRF
bGVtZW50OjpVcGRhdGVEaXNwbGF5QXR0cmlidXRlczo6WWVzKTsKLSAgICAgICAgYXR0YWNobWVu
dC0+dXBkYXRlRGlzcGxheU1vZGUoaW5mby5kaXNwbGF5TW9kZSk7CiAgICAgICAgIHBhcmVudC0+
cmVwbGFjZUNoaWxkKGF0dGFjaG1lbnQsIGVsZW1lbnRUb1JlcGxhY2UpOwogICAgIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9BdHRhY2htZW50VHlwZXMuaCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvQXR0YWNobWVudFR5cGVzLmgKaW5kZXggODhjMTgxN2VhZjA0Y2YxY2MxNjQ2
N2Y2YTE3NzZjZmQ3ZGMxNDIwYi4uYjUwNzdjYTQwODIyMTc1NTBlMWJmNWNiNzQyODVjYzRhNDNl
ZTZjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9BdHRhY2htZW50VHlwZXMuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0F0dGFjaG1lbnRUeXBlcy5oCkBAIC0zNCwzMSArMzQs
MjAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBTaGFyZWRCdWZmZXI7CiAKLWVudW0g
Y2xhc3MgQXR0YWNobWVudERpc3BsYXlNb2RlIHsKLSAgICBBdXRvLAotICAgIEluUGxhY2UsCi0g
ICAgQXNJY29uCi19OwotCiBzdHJ1Y3QgQXR0YWNobWVudERpc3BsYXlPcHRpb25zIHsKLSAgICBB
dHRhY2htZW50RGlzcGxheU1vZGUgbW9kZSB7IEF0dGFjaG1lbnREaXNwbGF5TW9kZTo6QXV0byB9
OwotCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNv
bnN0OwogICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEF0
dGFjaG1lbnREaXNwbGF5T3B0aW9ucz4gZGVjb2RlKERlY29kZXImKTsKIH07CiAKIHRlbXBsYXRl
PGNsYXNzIEVuY29kZXI+IGlubGluZSB2b2lkIEF0dGFjaG1lbnREaXNwbGF5T3B0aW9uczo6ZW5j
b2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7Ci0gICAgZW5jb2Rlci5lbmNvZGVFbnVtKG1v
ZGUpOworICAgIFVOVVNFRF9QQVJBTShlbmNvZGVyKTsKIH0KIAogdGVtcGxhdGU8Y2xhc3MgRGVj
b2Rlcj4gaW5saW5lIHN0ZDo6b3B0aW9uYWw8QXR0YWNobWVudERpc3BsYXlPcHRpb25zPiBBdHRh
Y2htZW50RGlzcGxheU9wdGlvbnM6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewotICAgIEF0
dGFjaG1lbnREaXNwbGF5TW9kZSBtb2RlOwotICAgIGlmICghZGVjb2Rlci5kZWNvZGVFbnVtKG1v
ZGUpKQotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotCi0gICAgcmV0dXJuIHt7IG1vZGUg
fX07CisgICAgVU5VU0VEX1BBUkFNKGRlY29kZXIpOworICAgIHJldHVybiBBdHRhY2htZW50RGlz
cGxheU9wdGlvbnMoKTsKIH0KIAogc3RydWN0IEF0dGFjaG1lbnRJbmZvIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmNwcAppbmRleCBmZTdkZDUzM2EyMmI4
YjNhN2MzN2VlM2ZlYzEzZjI0ZWQ0OGI0MDBhLi5lMTcxOWNkMTFmNjY2MDM1YmQ4MDRkYjNiOTdi
MmYzMzZhMDBmMzA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2ht
ZW50RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVs
ZW1lbnQuY3BwCkBAIC0zNSwyMSArMzUsMTIgQEAKICNpbmNsdWRlICJGaWxlUmVhZGVyTG9hZGVy
LmgiCiAjaW5jbHVkZSAiRmlsZVJlYWRlckxvYWRlckNsaWVudC5oIgogI2luY2x1ZGUgIkZyYW1l
LmgiCi0jaW5jbHVkZSAiSFRNTEltYWdlRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5o
IgotI2luY2x1ZGUgIkhUTUxWaWRlb0VsZW1lbnQuaCIKLSNpbmNsdWRlICJNSU1FVHlwZVJlZ2lz
dHJ5LmgiCiAjaW5jbHVkZSAiUmVuZGVyQXR0YWNobWVudC5oIgotI2luY2x1ZGUgIlJlbmRlckJs
b2NrRmxvdy5oIgotI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZm
ZXIuaCIKICNpbmNsdWRlIDxwYWwvRmlsZVNpemVGb3JtYXR0ZXIuaD4KICNpbmNsdWRlIDx3dGYv
SXNvTWFsbG9jSW5saW5lcy5oPgogCi0jaWYgUExBVEZPUk0oQ09DT0EpCi0jaW5jbHVkZSAiVVRJ
VXRpbGl0aWVzLmgiCi0jZW5kaWYKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBXVEZfTUFLRV9J
U09fQUxMT0NBVEVEX0lNUEwoSFRNTEF0dGFjaG1lbnRFbGVtZW50KTsKQEAgLTEwMSwxMSArOTIs
NiBAQCBSZWY8SFRNTEF0dGFjaG1lbnRFbGVtZW50PiBIVE1MQXR0YWNobWVudEVsZW1lbnQ6OmNy
ZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YQogCiBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4g
SFRNTEF0dGFjaG1lbnRFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUm
JiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKIHsKLSAgICBpZiAoIXN0eWxlLmhh
c0FwcGVhcmFuY2UoKSkgewotICAgICAgICAvLyBJZiB0aGlzIGF0dGFjaG1lbnQgZWxlbWVudCBk
b2Vzbid0IGhhdmUgYW4gYXBwZWFyYW5jZSwgZGVmZXIgcmVuZGVyaW5nIHRvIGNoaWxkIGVsZW1l
bnRzLgotICAgICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyQmxvY2tGbG93PigqdGhp
cywgV1RGTW92ZShzdHlsZSkpOwotICAgIH0KLQogICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxS
ZW5kZXJBdHRhY2htZW50PigqdGhpcywgV1RGTW92ZShzdHlsZSkpOwogfQogCkBAIC0xMzUsMjkg
KzEyMSw4IEBAIHZvaWQgSFRNTEF0dGFjaG1lbnRFbGVtZW50OjpzZXRGaWxlKFJlZlB0cjxGaWxl
PiYmIGZpbGUsIFVwZGF0ZURpc3BsYXlBdHRyaWJ1dGVzCiAgICAgICAgIH0KICAgICB9CiAKLSAg
ICBpZiAoYXV0byogcmVuZGVyQXR0YWNobWVudCA9IGF0dGFjaG1lbnRSZW5kZXJlcigpKQotICAg
ICAgICByZW5kZXJBdHRhY2htZW50LT5pbnZhbGlkYXRlKCk7Ci0KLSAgICBpbnZhbGlkYXRlU2hh
ZG93Um9vdENoaWxkcmVuSWZOZWNlc3NhcnkoKTsKLSAgICBwb3B1bGF0ZVNoYWRvd1Jvb3RJZk5l
Y2Vzc2FyeSgpOwotfQotCi12b2lkIEhUTUxBdHRhY2htZW50RWxlbWVudDo6aW52YWxpZGF0ZVNo
YWRvd1Jvb3RDaGlsZHJlbklmTmVjZXNzYXJ5KCkKLXsKLSAgICBpZiAoYXV0byBpbWFnZSA9IGlu
bmVySW1hZ2UoKSkgewotICAgICAgICBpbWFnZS0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9u
aXphdGlvbihzcmNBdHRyLCBlbXB0eVN0cmluZygpKTsKLSAgICAgICAgaW1hZ2UtPnNldElubGlu
ZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlEaXNwbGF5LCBDU1NWYWx1ZU5vbmUsIHRydWUpOwot
ICAgIH0KLSAgICBpZiAoYXV0byB2aWRlbyA9IGlubmVyVmlkZW8oKSkgewotICAgICAgICB2aWRl
by0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihzcmNBdHRyLCBlbXB0eVN0cmlu
ZygpKTsKLSAgICAgICAgdmlkZW8tPnNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlE
aXNwbGF5LCBDU1NWYWx1ZU5vbmUsIHRydWUpOwotICAgIH0KLX0KLQotUmVuZGVyQXR0YWNobWVu
dCogSFRNTEF0dGFjaG1lbnRFbGVtZW50OjphdHRhY2htZW50UmVuZGVyZXIoKSBjb25zdAotewot
ICAgIGF1dG8qIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKTsKLSAgICByZXR1cm4gaXM8UmVu
ZGVyQXR0YWNobWVudD4ocmVuZGVyZXIpID8gZG93bmNhc3Q8UmVuZGVyQXR0YWNobWVudD4ocmVu
ZGVyZXIpIDogbnVsbHB0cjsKKyAgICBpZiAoYXV0byogcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJl
cigpKQorICAgICAgICByZW5kZXJlci0+aW52YWxpZGF0ZSgpOwogfQogCiBOb2RlOjpJbnNlcnRl
ZEludG9BbmNlc3RvclJlc3VsdCBIVE1MQXR0YWNobWVudEVsZW1lbnQ6Omluc2VydGVkSW50b0Fu
Y2VzdG9yKEluc2VydGlvblR5cGUgdHlwZSwgQ29udGFpbmVyTm9kZSYgYW5jZXN0b3IpCkBAIC0x
NzgsOCArMTQzLDggQEAgdm9pZCBIVE1MQXR0YWNobWVudEVsZW1lbnQ6OnJlbW92ZWRGcm9tQW5j
ZXN0b3IoUmVtb3ZhbFR5cGUgdHlwZSwgQ29udGFpbmVyTm9kZSYKIHZvaWQgSFRNTEF0dGFjaG1l
bnRFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25z
dCBBdG9taWNTdHJpbmcmIHZhbHVlKQogewogICAgIGlmIChuYW1lID09IHByb2dyZXNzQXR0ciB8
fCBuYW1lID09IHN1YnRpdGxlQXR0ciB8fCBuYW1lID09IHRpdGxlQXR0ciB8fCBuYW1lID09IHR5
cGVBdHRyKSB7Ci0gICAgICAgIGlmIChhdXRvKiByZW5kZXJBdHRhY2htZW50ID0gYXR0YWNobWVu
dFJlbmRlcmVyKCkpCi0gICAgICAgICAgICByZW5kZXJBdHRhY2htZW50LT5pbnZhbGlkYXRlKCk7
CisgICAgICAgIGlmIChhdXRvKiByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCkpCisgICAgICAg
ICAgICByZW5kZXJlci0+aW52YWxpZGF0ZSgpOwogICAgIH0KIAogICAgIEhUTUxFbGVtZW50Ojpw
YXJzZUF0dHJpYnV0ZShuYW1lLCB2YWx1ZSk7CkBAIC0yMDMsMjggKzE2OCw2IEBAIFN0cmluZyBI
VE1MQXR0YWNobWVudEVsZW1lbnQ6OmF0dGFjaG1lbnRQYXRoKCkgY29uc3QKICAgICByZXR1cm4g
YXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbih3ZWJraXRhdHRhY2htZW50cGF0aEF0dHIp
OwogfQogCi12b2lkIEhUTUxBdHRhY2htZW50RWxlbWVudDo6dXBkYXRlRGlzcGxheU1vZGUoQXR0
YWNobWVudERpc3BsYXlNb2RlIG1vZGUpCi17Ci0gICAgbW9kZSA9IG1vZGUgPT0gQXR0YWNobWVu
dERpc3BsYXlNb2RlOjpBdXRvID8gZGVmYXVsdERpc3BsYXlNb2RlKCkgOiBtb2RlOwotCi0gICAg
c3dpdGNoIChtb2RlKSB7Ci0gICAgY2FzZSBBdHRhY2htZW50RGlzcGxheU1vZGU6OkluUGxhY2U6
Ci0gICAgICAgIHBvcHVsYXRlU2hhZG93Um9vdElmTmVjZXNzYXJ5KCk7Ci0gICAgICAgIHNldElu
bGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlXZWJraXRBcHBlYXJhbmNlLCBDU1NWYWx1ZU5v
bmUsIHRydWUpOwotICAgICAgICBzZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5RGlz
cGxheSwgQ1NTVmFsdWVJbmxpbmVCbG9jaywgdHJ1ZSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNh
c2UgQXR0YWNobWVudERpc3BsYXlNb2RlOjpBc0ljb246Ci0gICAgICAgIHJlbW92ZUlubGluZVN0
eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlXZWJraXRBcHBlYXJhbmNlKTsKLSAgICAgICAgcmVtb3Zl
SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eURpc3BsYXkpOwotICAgICAgICBicmVhazsK
LSAgICBkZWZhdWx0OgotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgYnJl
YWs7Ci0gICAgfQotCi0gICAgaW52YWxpZGF0ZVN0eWxlQW5kUmVuZGVyZXJzRm9yU3VidHJlZSgp
OwotfQotCiB2b2lkIEhUTUxBdHRhY2htZW50RWxlbWVudDo6dXBkYXRlRmlsZVdpdGhEYXRhKFJl
ZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSwgc3RkOjpvcHRpb25hbDxTdHJpbmc+JiYgbmV3Q29udGVu
dFR5cGUsIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiYmIG5ld0ZpbGVuYW1lKQogewogICAgIGF1dG8g
ZmlsZW5hbWUgPSBuZXdGaWxlbmFtZSA/ICpuZXdGaWxlbmFtZSA6IGF0dGFjaG1lbnRUaXRsZSgp
OwpAQCAtMjMzLDc1ICsxNzYsNiBAQCB2b2lkIEhUTUxBdHRhY2htZW50RWxlbWVudDo6dXBkYXRl
RmlsZVdpdGhEYXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSwgc3RkOjpvcAogICAgIHNldEZp
bGUoV1RGTW92ZShmaWxlKSwgVXBkYXRlRGlzcGxheUF0dHJpYnV0ZXM6Olllcyk7CiB9CiAKLVJl
ZjxIVE1MSW1hZ2VFbGVtZW50PiBIVE1MQXR0YWNobWVudEVsZW1lbnQ6OmVuc3VyZUlubmVySW1h
Z2UoKQotewotICAgIGlmIChhdXRvIGltYWdlID0gaW5uZXJJbWFnZSgpKQotICAgICAgICByZXR1
cm4gKmltYWdlOwotCi0gICAgYXV0byBpbWFnZSA9IEhUTUxJbWFnZUVsZW1lbnQ6OmNyZWF0ZShk
b2N1bWVudCgpKTsKLSAgICBlbnN1cmVVc2VyQWdlbnRTaGFkb3dSb290KCkuYXBwZW5kQ2hpbGQo
aW1hZ2UpOwotICAgIHJldHVybiBpbWFnZTsKLX0KLQotUmVmPEhUTUxWaWRlb0VsZW1lbnQ+IEhU
TUxBdHRhY2htZW50RWxlbWVudDo6ZW5zdXJlSW5uZXJWaWRlbygpCi17Ci0gICAgaWYgKGF1dG8g
dmlkZW8gPSBpbm5lclZpZGVvKCkpCi0gICAgICAgIHJldHVybiAqdmlkZW87Ci0KLSAgICBhdXRv
IHZpZGVvID0gSFRNTFZpZGVvRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KCkpOwotICAgIGVuc3Vy
ZVVzZXJBZ2VudFNoYWRvd1Jvb3QoKS5hcHBlbmRDaGlsZCh2aWRlbyk7Ci0gICAgcmV0dXJuIHZp
ZGVvOwotfQotCi1SZWZQdHI8SFRNTEltYWdlRWxlbWVudD4gSFRNTEF0dGFjaG1lbnRFbGVtZW50
Ojppbm5lckltYWdlKCkgY29uc3QKLXsKLSAgICBpZiAoYXV0byByb290ID0gdXNlckFnZW50U2hh
ZG93Um9vdCgpKQotICAgICAgICByZXR1cm4gY2hpbGRyZW5PZlR5cGU8SFRNTEltYWdlRWxlbWVu
dD4oKnJvb3QpLmZpcnN0KCk7Ci0gICAgcmV0dXJuIG51bGxwdHI7Ci19Ci0KLVJlZlB0cjxIVE1M
VmlkZW9FbGVtZW50PiBIVE1MQXR0YWNobWVudEVsZW1lbnQ6OmlubmVyVmlkZW8oKSBjb25zdAot
ewotICAgIGlmIChhdXRvIHJvb3QgPSB1c2VyQWdlbnRTaGFkb3dSb290KCkpCi0gICAgICAgIHJl
dHVybiBjaGlsZHJlbk9mVHlwZTxIVE1MVmlkZW9FbGVtZW50Pigqcm9vdCkuZmlyc3QoKTsKLSAg
ICByZXR1cm4gbnVsbHB0cjsKLX0KLQotdm9pZCBIVE1MQXR0YWNobWVudEVsZW1lbnQ6OnBvcHVs
YXRlU2hhZG93Um9vdElmTmVjZXNzYXJ5KCkKLXsKLSAgICBpZiAoIW1fZmlsZSkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgYXV0byBtaW1lVHlwZSA9IGF0dGFjaG1lbnRUeXBlKCk7Ci0KLSNpZiBQ
TEFURk9STShDT0NPQSkKLSAgICBpZiAoaXNEZWNsYXJlZFVUSShtaW1lVHlwZSkpCi0gICAgICAg
IG1pbWVUeXBlID0gTUlNRVR5cGVGcm9tVVRJKG1pbWVUeXBlKTsKLSNlbmRpZgotCi0gICAgaWYg
KG1pbWVUeXBlLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKE1JTUVUeXBl
UmVnaXN0cnk6OmlzU3VwcG9ydGVkSW1hZ2VNSU1FVHlwZShtaW1lVHlwZSkgfHwgTUlNRVR5cGVS
ZWdpc3RyeTo6aXNQREZNSU1FVHlwZShtaW1lVHlwZSkpIHsKLSAgICAgICAgYXV0byBpbWFnZSA9
IGVuc3VyZUlubmVySW1hZ2UoKTsKLSAgICAgICAgaWYgKGltYWdlLT5hdHRyaWJ1dGVXaXRob3V0
U3luY2hyb25pemF0aW9uKHNyY0F0dHIpLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgaW1hZ2Ut
PnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oc3JjQXR0ciwgRE9NVVJMOjpjcmVh
dGVPYmplY3RVUkwoZG9jdW1lbnQoKSwgKm1fZmlsZSkpOwotICAgICAgICAgICAgaW1hZ2UtPnNl
dEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oZHJhZ2dhYmxlQXR0ciwgQXRvbWljU3Ry
aW5nKCJmYWxzZSIpKTsKLSAgICAgICAgICAgIGltYWdlLT5zZXRJbmxpbmVTdHlsZVByb3BlcnR5
KENTU1Byb3BlcnR5RGlzcGxheSwgQ1NTVmFsdWVJbmxpbmUsIHRydWUpOwotICAgICAgICAgICAg
aW1hZ2UtPnNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlNYXhXaWR0aCwgMTAwLCBD
U1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGU6OkNTU19QRVJDRU5UQUdFLCB0cnVlKTsKLSAgICAg
ICAgfQotCi0gICAgfSBlbHNlIGlmIChNSU1FVHlwZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZE1lZGlh
TUlNRVR5cGUobWltZVR5cGUpKSB7Ci0gICAgICAgIGF1dG8gdmlkZW8gPSBlbnN1cmVJbm5lclZp
ZGVvKCk7Ci0gICAgICAgIGlmICh2aWRlby0+YXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlv
bihzcmNBdHRyKS5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgIHZpZGVvLT5zZXRBdHRyaWJ1dGVX
aXRob3V0U3luY2hyb25pemF0aW9uKHNyY0F0dHIsIERPTVVSTDo6Y3JlYXRlT2JqZWN0VVJMKGRv
Y3VtZW50KCksICptX2ZpbGUpKTsKLSAgICAgICAgICAgIHZpZGVvLT5zZXRBdHRyaWJ1dGVXaXRo
b3V0U3luY2hyb25pemF0aW9uKGNvbnRyb2xzQXR0ciwgZW1wdHlTdHJpbmcoKSk7Ci0gICAgICAg
ICAgICB2aWRlby0+c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eURpc3BsYXksIENT
U1ZhbHVlSW5saW5lLCB0cnVlKTsKLSAgICAgICAgICAgIHZpZGVvLT5zZXRJbmxpbmVTdHlsZVBy
b3BlcnR5KENTU1Byb3BlcnR5TWF4V2lkdGgsIDEwMCwgQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRU
eXBlOjpDU1NfUEVSQ0VOVEFHRSwgdHJ1ZSk7Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KIHZvaWQg
SFRNTEF0dGFjaG1lbnRFbGVtZW50OjpyZXF1ZXN0SW5mbyhGdW5jdGlvbjx2b2lkKGNvbnN0IEF0
dGFjaG1lbnRJbmZvJik+JiYgY2FsbGJhY2spCiB7CiAgICAgaWYgKCFtX2ZpbGUpIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5oCmluZGV4IDIzNjdlOGUzNzJh
MDVkM2IzODllMDdjOGJiZjUyMTM0Y2JmYjI3NjcuLjE0ZmM4NGJkOWE1NzkwMTYwZDBiODdhZjMz
ZmQ5ODQ5YzRjOWE5M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFj
aG1lbnRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVs
ZW1lbnQuaApAQCAtNTMsNyArNTMsNiBAQCBwdWJsaWM6CiAgICAgU3RyaW5nIHVuaXF1ZUlkZW50
aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX3VuaXF1ZUlkZW50aWZpZXI7IH0KICAgICB2b2lkIHNl
dFVuaXF1ZUlkZW50aWZpZXIoY29uc3QgU3RyaW5nJiB1bmlxdWVJZGVudGlmaWVyKSB7IG1fdW5p
cXVlSWRlbnRpZmllciA9IHVuaXF1ZUlkZW50aWZpZXI7IH0KIAotICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgdXBkYXRlRGlzcGxheU1vZGUoQXR0YWNobWVudERpc3BsYXlNb2RlKTsKICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHVwZGF0ZUZpbGVXaXRoRGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmIGRh
dGEsIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiYmIG5ld0NvbnRlbnRUeXBlID0gc3RkOjpudWxsb3B0
LCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4mJiBuZXdGaWxlbmFtZSA9IHN0ZDo6bnVsbG9wdCk7CiAK
ICAgICBJbnNlcnRlZEludG9BbmNlc3RvclJlc3VsdCBpbnNlcnRlZEludG9BbmNlc3RvcihJbnNl
cnRpb25UeXBlLCBDb250YWluZXJOb2RlJikgZmluYWw7CkBAIC02Myw3ICs2Miw3IEBAIHB1Ymxp
YzoKICAgICBTdHJpbmcgYXR0YWNobWVudFR5cGUoKSBjb25zdDsKICAgICBTdHJpbmcgYXR0YWNo
bWVudFBhdGgoKSBjb25zdDsKIAotICAgIFJlbmRlckF0dGFjaG1lbnQqIGF0dGFjaG1lbnRSZW5k
ZXJlcigpIGNvbnN0OworICAgIFJlbmRlckF0dGFjaG1lbnQqIHJlbmRlcmVyKCkgY29uc3Q7CiAK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlcXVlc3RJbmZvKEZ1bmN0aW9uPHZvaWQoY29uc3Qg
QXR0YWNobWVudEluZm8mKT4mJiBjYWxsYmFjayk7CiAgICAgdm9pZCBkZXN0cm95UmVhZGVyKEF0
dGFjaG1lbnREYXRhUmVhZGVyJik7CkBAIC03MywyMiArNzIsNiBAQCBwcml2YXRlOgogICAgIHZp
cnR1YWwgfkhUTUxBdHRhY2htZW50RWxlbWVudCgpOwogCiAgICAgUmVuZGVyUHRyPFJlbmRlckVs
ZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmLCBjb25zdCBSZW5kZXJU
cmVlUG9zaXRpb24mKSBmaW5hbDsKLSAgICBSZWY8SFRNTEltYWdlRWxlbWVudD4gZW5zdXJlSW5u
ZXJJbWFnZSgpOwotICAgIFJlZjxIVE1MVmlkZW9FbGVtZW50PiBlbnN1cmVJbm5lclZpZGVvKCk7
Ci0gICAgUmVmUHRyPEhUTUxJbWFnZUVsZW1lbnQ+IGlubmVySW1hZ2UoKSBjb25zdDsKLSAgICBS
ZWZQdHI8SFRNTFZpZGVvRWxlbWVudD4gaW5uZXJWaWRlbygpIGNvbnN0OwotCi0gICAgdm9pZCBw
b3B1bGF0ZVNoYWRvd1Jvb3RJZk5lY2Vzc2FyeSgpOwotICAgIHZvaWQgaW52YWxpZGF0ZVNoYWRv
d1Jvb3RDaGlsZHJlbklmTmVjZXNzYXJ5KCk7Ci0KLSAgICBBdHRhY2htZW50RGlzcGxheU1vZGUg
ZGVmYXVsdERpc3BsYXlNb2RlKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIC8vIEZJWE1FOiBGb3Ig
bm93LCBhbGwgYXR0YWNobWVudCBlbGVtZW50cyBhdXRvbWF0aWNhbGx5IGRpc3BsYXkgdXNpbmcg
YSBmaWxlIGljb24uCi0gICAgICAgIC8vIEluIGEgZm9sbG93dXAgcGF0Y2gsIHdlJ2xsIGNoYW5n
ZSB0aGUgZGVmYXVsdCBiZWhhdmlvciB0byB1c2UgaW4tcGxhY2UgcHJlc2VudGF0aW9uCi0gICAg
ICAgIC8vIGZvciBjZXJ0YWluIGltYWdlIE1JTUUgdHlwZXMuCi0gICAgICAgIHJldHVybiBBdHRh
Y2htZW50RGlzcGxheU1vZGU6OkFzSWNvbjsKLSAgICB9Ci0KICAgICBib29sIHNob3VsZFNlbGVj
dE9uTW91c2VEb3duKCkgZmluYWwgewogI2lmIFBMQVRGT1JNKElPUykKICAgICAgICAgcmV0dXJu
IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcAppbmRleCA2YzQ5ZTY2
OTgzNDUyZGZkZDhkNzA2NGRkYTQ2MTI5MGY1NTlhMmE3Li43YjUwM2JlYjJjYmJlY2QyNDgxMTcz
ODU4NjFjNzllNzQxYjQ3ZjZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdD
b250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNw
cApAQCAtMTA4OCw3ICsxMDg4LDcgQEAgYm9vbCBEcmFnQ29udHJvbGxlcjo6c3RhcnREcmFnKEZy
YW1lJiBzcmMsIGNvbnN0IERyYWdTdGF0ZSYgc3RhdGUsIERyYWdPcGVyYXRpb24KICNpZiBFTkFC
TEUoQVRUQUNITUVOVF9FTEVNRU5UKQogICAgIGlmIChpczxIVE1MQXR0YWNobWVudEVsZW1lbnQ+
KGVsZW1lbnQpICYmIG1fZHJhZ1NvdXJjZUFjdGlvbiAmIERyYWdTb3VyY2VBY3Rpb25BdHRhY2ht
ZW50KSB7CiAgICAgICAgIGF1dG8mIGF0dGFjaG1lbnQgPSBkb3duY2FzdDxIVE1MQXR0YWNobWVu
dEVsZW1lbnQ+KGVsZW1lbnQpOwotICAgICAgICBhdXRvKiBhdHRhY2htZW50UmVuZGVyZXIgPSBh
dHRhY2htZW50LmF0dGFjaG1lbnRSZW5kZXJlcigpOworICAgICAgICBhdXRvKiBhdHRhY2htZW50
UmVuZGVyZXIgPSBhdHRhY2htZW50LnJlbmRlcmVyKCk7CiAKICAgICAgICAgc3JjLmVkaXRvcigp
LnNldElnbm9yZVNlbGVjdGlvbkNoYW5nZXModHJ1ZSk7CiAgICAgICAgIGF1dG8gcHJldmlvdXNT
ZWxlY3Rpb24gPSBzcmMuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQXR0YWNobWVudC5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckF0dGFjaG1lbnQuaAppbmRleCA4ZGRlYzVkNjFhNzkyZjE0MjNmMTNl
NDNmYmJjYjk1YTQyNjVjZjU2Li40Y2FhZTAzNzA5ZDljYTQ2NDdlOTgwNmYwY2MzNmYyNzc5ZGQx
YTJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQXR0YWNobWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJBdHRhY2htZW50LmgKQEAg
LTU5LDYgKzU5LDExIEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3Nob3VsZERyYXdCb3JkZXIgeyB0
cnVlIH07CiB9OwogCitpbmxpbmUgUmVuZGVyQXR0YWNobWVudCogSFRNTEF0dGFjaG1lbnRFbGVt
ZW50OjpyZW5kZXJlcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIGRvd25jYXN0PFJlbmRlckF0dGFj
aG1lbnQ+KEhUTUxFbGVtZW50OjpyZW5kZXJlcigpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQogCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1JFTkRFUl9PQkpFQ1QoUmVuZGVyQXR0YWNo
bWVudCwgaXNBdHRhY2htZW50KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvX1dLQXR0YWNobWVudC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9fV0tBdHRhY2htZW50Lm1tCmluZGV4IDJkZTUwMGNlOTJjNmY4MGM4NDExNmQyYjZk
ODllMjBiZGY4N2QxZjYuLjVmMDBjOGNlZTJhM2Y1Y2Q2MTVhODg2Y2E1N2ExYWZiMjcyYTc0MWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdHRhY2ht
ZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdHRhY2ht
ZW50Lm1tCkBAIC0zOSwzMiArMzksOSBAQCB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogCiBAaW1w
bGVtZW50YXRpb24gX1dLQXR0YWNobWVudERpc3BsYXlPcHRpb25zIDogTlNPYmplY3QKIAotLSAo
aW5zdGFuY2V0eXBlKWluaXQKLXsKLSAgICBpZiAoc2VsZiA9IFtzdXBlciBpbml0XSkKLSAgICAg
ICAgX21vZGUgPSBfV0tBdHRhY2htZW50RGlzcGxheU1vZGVBdXRvOwotCi0gICAgcmV0dXJuIHNl
bGY7Ci19Ci0KIC0gKFdlYkNvcmU6OkF0dGFjaG1lbnREaXNwbGF5T3B0aW9ucyljb3JlRGlzcGxh
eU9wdGlvbnMKIHsKLSAgICBXZWJDb3JlOjpBdHRhY2htZW50RGlzcGxheU1vZGUgbW9kZTsKLSAg
ICBzd2l0Y2ggKHNlbGYubW9kZSkgewotICAgIGNhc2UgX1dLQXR0YWNobWVudERpc3BsYXlNb2Rl
QXV0bzoKLSAgICAgICAgbW9kZSA9IFdlYkNvcmU6OkF0dGFjaG1lbnREaXNwbGF5TW9kZTo6QXV0
bzsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBfV0tBdHRhY2htZW50RGlzcGxheU1vZGVBc0lj
b246Ci0gICAgICAgIG1vZGUgPSBXZWJDb3JlOjpBdHRhY2htZW50RGlzcGxheU1vZGU6OkFzSWNv
bjsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBfV0tBdHRhY2htZW50RGlzcGxheU1vZGVJblBs
YWNlOgotICAgICAgICBtb2RlID0gV2ViQ29yZTo6QXR0YWNobWVudERpc3BsYXlNb2RlOjpJblBs
YWNlOwotICAgICAgICBicmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKLSAgICAgICAgbW9kZSA9IFdlYkNvcmU6OkF0dGFjaG1lbnREaXNwbGF5TW9kZTo6
QXV0bzsKLSAgICB9Ci0gICAgcmV0dXJuIHsgbW9kZSB9OworICAgIHJldHVybiB7IH07CiB9CiAK
IEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5k
ZXggZDZiOTY1NTY4NjZkOTg1NjBiMGIyZWY0ZTNkYTg1ZTU1NzM5MzNlYS4uNTExNDNhMzJkYjQw
OTllNmZmZjVhNThjMDRiNWEwZjc3ODQ3NzhlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTYxMDUsMTIgKzYxMDUsOCBAQCB2b2lkIFdlYlBh
Z2U6OnJlcXVlc3RBdHRhY2htZW50SW5mbyhjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIENhbGxi
YWNrSUQgY2FsbGJhYwogICAgIH0pOwogfQogCi12b2lkIFdlYlBhZ2U6OnNldEF0dGFjaG1lbnRE
aXNwbGF5T3B0aW9ucyhjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IEF0dGFjaG1lbnRE
aXNwbGF5T3B0aW9ucyYgb3B0aW9ucywgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQordm9pZCBXZWJQ
YWdlOjpzZXRBdHRhY2htZW50RGlzcGxheU9wdGlvbnMoY29uc3QgU3RyaW5nJiwgY29uc3QgQXR0
YWNobWVudERpc3BsYXlPcHRpb25zJiwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewotICAgIGlm
IChhdXRvIGF0dGFjaG1lbnQgPSBhdHRhY2htZW50RWxlbWVudFdpdGhJZGVudGlmaWVyKGlkZW50
aWZpZXIpKSB7Ci0gICAgICAgIGF0dGFjaG1lbnQtPmRvY3VtZW50KCkudXBkYXRlTGF5b3V0KCk7
Ci0gICAgICAgIGF0dGFjaG1lbnQtPnVwZGF0ZURpc3BsYXlNb2RlKG9wdGlvbnMubW9kZSk7Ci0g
ICAgfQogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6Vm9pZENhbGxiYWNrKGNhbGxi
YWNrSUQpKTsKIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdl
TG9nCmluZGV4IDA1MmMxNzUwMDZmNjU3NTc2NTVlNTk3OTMwM2QzZmMxOGQyYzdmYzcuLjU1Y2M4
ZTI3NTYyYmM5ZjdlN2NiZDk4NzZjOTVjNjFiZWVlOTZmOTEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0No
YW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxOC0wOC0x
NCAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBbQXR0
YWNobWVudCBTUEldIFJlbW92ZSBhdHRhY2htZW50IGRpc3BsYXkgbW9kZSBvcHRpb25zCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODg1OTYKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmUgQVBJIHRl
c3RzIGFuZCBBUEkgdGVzdCBoZWxwZXJzIGZvciB2ZXJpZnlpbmcgdGhlIGJlaGF2aW9yIG9mIGlu
LXBsYWNlIG1lZGlhIGF0dGFjaG1lbnQgZWxlbWVudHMuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLQXR0YWNobWVudFRlc3RzLm1tOgorICAgICAgICAoLVtU
ZXN0V0tXZWJWaWV3IHN5bmNocm9ub3VzbHlJbnNlcnRBdHRhY2htZW50V2l0aEZpbGVuYW1lOmNv
bnRlbnRUeXBlOmRhdGE6XSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAg
ICAgKHRlc3RWaWRlb0RhdGEpOiBEZWxldGVkLgorICAgICAgICAoZGlzcGxheU9wdGlvbnNXaXRo
TW9kZSk6IERlbGV0ZWQuCisgICAgICAgICgtW1Rlc3RXS1dlYlZpZXcgc3luY2hyb25vdXNseUlu
c2VydEF0dGFjaG1lbnRXaXRoRmlsZW5hbWU6Y29udGVudFR5cGU6ZGF0YTpvcHRpb25zOl0pOiBE
ZWxldGVkLgorCiAyMDE4LTA4LTE0ICBGdWppaSBIaXJvbm9yaSAgPEhpcm9ub3JpLkZ1amlpQHNv
bnkuY29tPgogCiAgICAgICAgIFt3ZWJraXRweV1bV2luXSBMYXlvdXRUZXN0czogdGVzdCBuYW1l
cyBzaG91bGQgYmUgVW5peCBzdHlsZSwgc2VwYXJhdGVkIGJ5IHNsYXNoIG5vdCBiYWNrc2xhc2gK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tBdHRh
Y2htZW50VGVzdHMubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dL
QXR0YWNobWVudFRlc3RzLm1tCmluZGV4IGQ4ZjU2YmQzNzI3OWI2M2NmNGI4NTMyZmZlODQyM2Nh
YjdhYmZiMmMuLjJmN2M1MDM2OWQxZjJlOWRkOGY5ODAzZjg4ZjEzNTNjNTJhMzM5NDggMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tBdHRhY2htZW50
VGVzdHMubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0F0
dGFjaG1lbnRUZXN0cy5tbQpAQCAtMTg4LDEyICsxODgsNiBAQCBzdGF0aWMgTlNEYXRhICp0ZXN0
SW1hZ2VEYXRhKCkKICAgICByZXR1cm4gW05TRGF0YSBkYXRhV2l0aENvbnRlbnRzT2ZVUkw6dGVz
dEltYWdlRmlsZVVSTCgpXTsKIH0KIAotc3RhdGljIE5TRGF0YSAqdGVzdFZpZGVvRGF0YSgpCi17
Ci0gICAgTlNVUkwgKnVybCA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6
QCJ0ZXN0IiB3aXRoRXh0ZW5zaW9uOkAibXA0IiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJ
LnJlc291cmNlcyJdOwotICAgIHJldHVybiBbTlNEYXRhIGRhdGFXaXRoQ29udGVudHNPZlVSTDp1
cmxdOwotfQotCiBzdGF0aWMgTlNVUkwgKnRlc3RQREZGaWxlVVJMKCkKIHsKICAgICByZXR1cm4g
W1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAInRlc3QiIHdpdGhFeHRlbnNp
b246QCJwZGYiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07CkBAIC0y
MDQsMTMgKzE5OCw2IEBAIHN0YXRpYyBOU0RhdGEgKnRlc3RQREZEYXRhKCkKICAgICByZXR1cm4g
W05TRGF0YSBkYXRhV2l0aENvbnRlbnRzT2ZVUkw6dGVzdFBERkZpbGVVUkwoKV07CiB9CiAKLXN0
YXRpYyBfV0tBdHRhY2htZW50RGlzcGxheU9wdGlvbnMgKmRpc3BsYXlPcHRpb25zV2l0aE1vZGUo
X1dLQXR0YWNobWVudERpc3BsYXlNb2RlIG1vZGUpCi17Ci0gICAgX1dLQXR0YWNobWVudERpc3Bs
YXlPcHRpb25zICpvcHRpb25zID0gW1tbX1dLQXR0YWNobWVudERpc3BsYXlPcHRpb25zIGFsbG9j
XSBpbml0XSBhdXRvcmVsZWFzZV07Ci0gICAgb3B0aW9ucy5tb2RlID0gbW9kZTsKLSAgICByZXR1
cm4gb3B0aW9uczsKLX0KLQogQGltcGxlbWVudGF0aW9uIFRlc3RXS1dlYlZpZXcgKEF0dGFjaG1l
bnRUZXN0aW5nKQogCiAtIChOU0FycmF5PE5TU3RyaW5nICo+ICopdGFnc0luQm9keQpAQCAtMjUw
LDEwICsyMzcsMTAgQEAgc3RhdGljIF9XS0F0dGFjaG1lbnREaXNwbGF5T3B0aW9ucyAqZGlzcGxh
eU9wdGlvbnNXaXRoTW9kZShfV0tBdHRhY2htZW50RGlzcGxheU0KICAgICByZXR1cm4gc3VjY2Vz
czsKIH0KIAotLSAoX1dLQXR0YWNobWVudCAqKXN5bmNocm9ub3VzbHlJbnNlcnRBdHRhY2htZW50
V2l0aEZpbGVuYW1lOihOU1N0cmluZyAqKWZpbGVuYW1lIGNvbnRlbnRUeXBlOihOU1N0cmluZyAq
KWNvbnRlbnRUeXBlIGRhdGE6KE5TRGF0YSAqKWRhdGEgb3B0aW9uczooX1dLQXR0YWNobWVudERp
c3BsYXlPcHRpb25zICopb3B0aW9ucworLSAoX1dLQXR0YWNobWVudCAqKXN5bmNocm9ub3VzbHlJ
bnNlcnRBdHRhY2htZW50V2l0aEZpbGVuYW1lOihOU1N0cmluZyAqKWZpbGVuYW1lIGNvbnRlbnRU
eXBlOihOU1N0cmluZyAqKWNvbnRlbnRUeXBlIGRhdGE6KE5TRGF0YSAqKWRhdGEKIHsKICAgICBf
X2Jsb2NrIGJvb2wgZG9uZSA9IGZhbHNlOwotICAgIFJldGFpblB0cjxfV0tBdHRhY2htZW50PiBh
dHRhY2htZW50ID0gW3NlbGYgX2luc2VydEF0dGFjaG1lbnRXaXRoRmlsZW5hbWU6ZmlsZW5hbWUg
Y29udGVudFR5cGU6Y29udGVudFR5cGUgZGF0YTpkYXRhIG9wdGlvbnM6b3B0aW9ucyBjb21wbGV0
aW9uOl4oQk9PTCkgeworICAgIFJldGFpblB0cjxfV0tBdHRhY2htZW50PiBhdHRhY2htZW50ID0g
W3NlbGYgX2luc2VydEF0dGFjaG1lbnRXaXRoRmlsZW5hbWU6ZmlsZW5hbWUgY29udGVudFR5cGU6
Y29udGVudFR5cGUgZGF0YTpkYXRhIG9wdGlvbnM6bmlsIGNvbXBsZXRpb246XihCT09MKSB7CiAg
ICAgICAgIGRvbmUgPSB0cnVlOwogICAgIH1dOwogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1
bigmZG9uZSk7CkBAIC01MDUsNyArNDkyLDcgQEAgVEVTVChXS0F0dGFjaG1lbnRUZXN0cywgQXR0
YWNobWVudEVsZW1lbnRJbnNlcnRpb24pCiAgICAgewogICAgICAgICBPYnNlcnZlQXR0YWNobWVu
dFVwZGF0ZXNGb3JTY29wZSBvYnNlcnZlcih3ZWJWaWV3LmdldCgpKTsKICAgICAgICAgLy8gVXNl
IHRoZSBnaXZlbiBjb250ZW50IHR5cGUgZm9yIHRoZSBhdHRhY2htZW50IGVsZW1lbnQncyB0eXBl
LgotICAgICAgICBmaXJzdEF0dGFjaG1lbnQgPSBbd2ViVmlldyBzeW5jaHJvbm91c2x5SW5zZXJ0
QXR0YWNobWVudFdpdGhGaWxlbmFtZTpAImZvbyIgY29udGVudFR5cGU6QCJ0ZXh0L2h0bWwiIGRh
dGE6dGVzdEhUTUxEYXRhKCkgb3B0aW9uczpuaWxdOworICAgICAgICBmaXJzdEF0dGFjaG1lbnQg
PSBbd2ViVmlldyBzeW5jaHJvbm91c2x5SW5zZXJ0QXR0YWNobWVudFdpdGhGaWxlbmFtZTpAImZv
byIgY29udGVudFR5cGU6QCJ0ZXh0L2h0bWwiIGRhdGE6dGVzdEhUTUxEYXRhKCldOwogICAgICAg
ICBFWFBFQ1RfV0tfU1RSRVEoQCJmb28iLCBbd2ViVmlldyB2YWx1ZU9mQXR0cmlidXRlOkAidGl0
bGUiIGZvclF1ZXJ5U2VsZWN0b3I6QCJhdHRhY2htZW50Il0pOwogICAgICAgICBFWFBFQ1RfV0tf
U1RSRVEoQCJ0ZXh0L2h0bWwiLCBbd2ViVmlldyB2YWx1ZU9mQXR0cmlidXRlOkAidHlwZSIgZm9y
UXVlcnlTZWxlY3RvcjpAImF0dGFjaG1lbnQiXSk7CiAgICAgICAgIEVYUEVDVF9XS19TVFJFUShA
IjM4IGJ5dGVzIiwgW3dlYlZpZXcgdmFsdWVPZkF0dHJpYnV0ZTpAInN1YnRpdGxlIiBmb3JRdWVy
eVNlbGVjdG9yOkAiYXR0YWNobWVudCJdKTsKQEAgLTUyMiw3ICs1MDksNyBAQCBURVNUKFdLQXR0
YWNobWVudFRlc3RzLCBBdHRhY2htZW50RWxlbWVudEluc2VydGlvbikKICAgICAgICAgT2JzZXJ2
ZUF0dGFjaG1lbnRVcGRhdGVzRm9yU2NvcGUgc2NvcGUod2ViVmlldy5nZXQoKSk7CiAgICAgICAg
IC8vIFNpbmNlIG5vIGNvbnRlbnQgdHlwZSBpcyBleHBsaWNpdGx5IHNwZWNpZmllZCwgY29tcHV0
ZSBpdCBmcm9tIHRoZSBmaWxlIGV4dGVuc2lvbi4KICAgICAgICAgW3dlYlZpZXcgX2V4ZWN1dGVF
ZGl0Q29tbWFuZDpAIkRlbGV0ZUJhY2t3YXJkIiBhcmd1bWVudDpuaWwgY29tcGxldGlvbjpuaWxd
OwotICAgICAgICBzZWNvbmRBdHRhY2htZW50ID0gW3dlYlZpZXcgc3luY2hyb25vdXNseUluc2Vy
dEF0dGFjaG1lbnRXaXRoRmlsZW5hbWU6QCJiYXIucG5nIiBjb250ZW50VHlwZTpuaWwgZGF0YTp0
ZXN0SW1hZ2VEYXRhKCkgb3B0aW9uczpuaWxdOworICAgICAgICBzZWNvbmRBdHRhY2htZW50ID0g
W3dlYlZpZXcgc3luY2hyb25vdXNseUluc2VydEF0dGFjaG1lbnRXaXRoRmlsZW5hbWU6QCJiYXIu
cG5nIiBjb250ZW50VHlwZTpuaWwgZGF0YTp0ZXN0SW1hZ2VEYXRhKCldOwogICAgICAgICBFWFBF
Q1RfV0tfU1RSRVEoQCJiYXIucG5nIiwgW3dlYlZpZXcgdmFsdWVPZkF0dHJpYnV0ZTpAInRpdGxl
IiBmb3JRdWVyeVNlbGVjdG9yOkAiYXR0YWNobWVudCJdKTsKICAgICAgICAgRVhQRUNUX1dLX1NU
UkVRKEAiaW1hZ2UvcG5nIiwgW3dlYlZpZXcgdmFsdWVPZkF0dHJpYnV0ZTpAInR5cGUiIGZvclF1
ZXJ5U2VsZWN0b3I6QCJhdHRhY2htZW50Il0pOwogICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoQCIz
NyBLQiIsIFt3ZWJWaWV3IHZhbHVlT2ZBdHRyaWJ1dGU6QCJzdWJ0aXRsZSIgZm9yUXVlcnlTZWxl
Y3RvcjpAImF0dGFjaG1lbnQiXSk7CkBAIC01NDIsNyArNTI5LDcgQEAgVEVTVChXS0F0dGFjaG1l
bnRUZXN0cywgQXR0YWNobWVudFVwZGF0ZXNXaGVuSW5zZXJ0aW5nQW5kRGVsZXRpbmdOZXdsaW5l
KQogICAgIFJldGFpblB0cjxfV0tBdHRhY2htZW50PiBhdHRhY2htZW50OwogICAgIHsKICAgICAg
ICAgT2JzZXJ2ZUF0dGFjaG1lbnRVcGRhdGVzRm9yU2NvcGUgb2JzZXJ2ZXIod2ViVmlldy5nZXQo
KSk7Ci0gICAgICAgIGF0dGFjaG1lbnQgPSBbd2ViVmlldyBzeW5jaHJvbm91c2x5SW5zZXJ0QXR0
YWNobWVudFdpdGhGaWxlbmFtZTpAImZvby50eHQiIGNvbnRlbnRUeXBlOkAidGV4dC9wbGFpbiIg
ZGF0YTp0ZXN0SFRNTERhdGEoKSBvcHRpb25zOm5pbF07CisgICAgICAgIGF0dGFjaG1lbnQgPSBb
d2ViVmlldyBzeW5jaHJvbm91c2x5SW5zZXJ0QXR0YWNobWVudFdpdGhGaWxlbmFtZTpAImZvby50
eHQiIGNvbnRlbnRUeXBlOkAidGV4dC9wbGFpbiIgZGF0YTp0ZXN0SFRNTERhdGEoKV07CiAgICAg
ICAgIG9ic2VydmVyLmV4cGVjdEF0dGFjaG1lbnRVcGRhdGVzKEBbIF0sIEBbYXR0YWNobWVudC5n
ZXQoKV0pOwogICAgIH0KICAgICBbd2ViVmlldyBleHBlY3RVcGRhdGVzQWZ0ZXJDb21tYW5kOkAi
SW5zZXJ0UGFyYWdyYXBoIiB3aXRoQXJndW1lbnQ6bmlsIGV4cGVjdGVkUmVtb3ZhbHM6QFtdIGV4
cGVjdGVkSW5zZXJ0aW9uczpAW11dOwpAQCAtNTY5LDcgKzU1Niw3IEBAIFRFU1QoV0tBdHRhY2ht
ZW50VGVzdHMsIEF0dGFjaG1lbnRVcGRhdGVzV2hlblVuZG9pbmdBbmRSZWRvaW5nKQogICAgIFJl
dGFpblB0cjxfV0tBdHRhY2htZW50PiBhdHRhY2htZW50OwogICAgIHsKICAgICAgICAgT2JzZXJ2
ZUF0dGFjaG1lbnRVcGRhdGVzRm9yU2NvcGUgb2JzZXJ2ZXIod2ViVmlldy5nZXQoKSk7Ci0gICAg
ICAgIGF0dGFjaG1lbnQgPSBbd2ViVmlldyBzeW5jaHJvbm91c2x5SW5zZXJ0QXR0YWNobWVudFdp
dGhGaWxlbmFtZTpAImZvby50eHQiIGNvbnRlbnRUeXBlOkAidGV4dC9wbGFpbiIgZGF0YTp0ZXN0
SFRNTERhdGEoKSBvcHRpb25zOm5pbF07CisgICAgICAgIGF0dGFjaG1lbnQgPSBbd2ViVmlldyBz
eW5jaHJvbm91c2x5SW5zZXJ0QXR0YWNobWVudFdpdGhGaWxlbmFtZTpAImZvby50eHQiIGNvbnRl
bnRUeXBlOkAidGV4dC9wbGFpbiIgZGF0YTp0ZXN0SFRNTERhdGEoKV07CiAgICAgICAgIG9ic2Vy
dmVyLmV4cGVjdEF0dGFjaG1lbnRVcGRhdGVzKEBbIF0sIEBbYXR0YWNobWVudC5nZXQoKV0pOwog
ICAgIH0KICAgICBbd2ViVmlldyBleHBlY3RVcGRhdGVzQWZ0ZXJDb21tYW5kOkAiVW5kbyIgd2l0
aEFyZ3VtZW50Om5pbCBleHBlY3RlZFJlbW92YWxzOkBbYXR0YWNobWVudC5nZXQoKV0gZXhwZWN0
ZWRJbnNlcnRpb25zOkBbXV07CkBAIC01OTUsNyArNTgyLDcgQEAgVEVTVChXS0F0dGFjaG1lbnRU
ZXN0cywgQXR0YWNobWVudFVwZGF0ZXNXaGVuQ2hhbmdpbmdGb250U3R5bGVzKQogICAgIFt3ZWJW
aWV3IF9zeW5jaHJvbm91c2x5RXhlY3V0ZUVkaXRDb21tYW5kOkAiSW5zZXJ0VGV4dCIgYXJndW1l
bnQ6QCJIZWxsbyJdOwogICAgIHsKICAgICAgICAgT2JzZXJ2ZUF0dGFjaG1lbnRVcGRhdGVzRm9y
U2NvcGUgb2JzZXJ2ZXIod2ViVmlldy5nZXQoKSk7Ci0gICAgICAgIGF0dGFjaG1lbnQgPSBbd2Vi
VmlldyBzeW5jaHJvbm91c2x5SW5zZXJ0QXR0YWNobWVudFdpdGhGaWxlbmFtZTpAImZvby50eHQi
IGNvbnRlbnRUeXBlOkAidGV4dC9wbGFpbiIgZGF0YTp0ZXN0SFRNTERhdGEoKSBvcHRpb25zOm5p
bF07CisgICAgICAgIGF0dGFjaG1lbnQgPSBbd2ViVmlldyBzeW5jaHJvbm91c2x5SW5zZXJ0QXR0
YWNobWVudFdpdGhGaWxlbmFtZTpAImZvby50eHQiIGNvbnRlbnRUeXBlOkAidGV4dC9wbGFpbiIg
ZGF0YTp0ZXN0SFRNTERhdGEoKV07CiAgICAgICAgIG9ic2VydmVyLmV4cGVjdEF0dGFjaG1lbnRV
cGRhdGVzKEBbIF0sIEBbYXR0YWNobWVudC5nZXQoKV0pOwogICAgIH0KICAgICBbd2ViVmlldyBl
eHBlY3RVcGRhdGVzQWZ0ZXJDb21tYW5kOkAiSW5zZXJ0VGV4dCIgd2l0aEFyZ3VtZW50OkAiV29y
bGQiIGV4cGVjdGVkUmVtb3ZhbHM6QFtdIGV4cGVjdGVkSW5zZXJ0aW9uczpAW11dOwpAQCAtNjE5
LDcgKzYwNiw3IEBAIFRFU1QoV0tBdHRhY2htZW50VGVzdHMsIEF0dGFjaG1lbnRVcGRhdGVzV2hl
bkluc2VydGluZ0xpc3RzKQogICAgIFJldGFpblB0cjxfV0tBdHRhY2htZW50PiBhdHRhY2htZW50
OwogICAgIHsKICAgICAgICAgT2JzZXJ2ZUF0dGFjaG1lbnRVcGRhdGVzRm9yU2NvcGUgb2JzZXJ2
ZXIod2ViVmlldy5nZXQoKSk7Ci0gICAgICAgIGF0dGFjaG1lbnQgPSBbd2ViVmlldyBzeW5jaHJv
bm91c2x5SW5zZXJ0QXR0YWNobWVudFdpdGhGaWxlbmFtZTpAImZvby50eHQiIGNvbnRlbnRUeXBl
OkAidGV4dC9wbGFpbiIgZGF0YTp0ZXN0SFRNTERhdGEoKSBvcHRpb25zOm5pbF07CisgICAgICAg
IGF0dGFjaG1lbnQgPSBbd2ViVmlldyBzeW5jaHJvbm91c2x5SW5zZXJ0QXR0YWNobWVudFdpdGhG
aWxlbmFtZTpAImZvby50eHQiIGNvbnRlbnRUeXBlOkAidGV4dC9wbGFpbiIgZGF0YTp0ZXN0SFRN
TERhdGEoKV07CiAgICAgICAgIG9ic2VydmVyLmV4cGVjdEF0dGFjaG1lbnRVcGRhdGVzKEBbIF0s
IEBbYXR0YWNobWVudC5nZXQoKV0pOwogICAgIH0KICAgICBbd2ViVmlldyBleHBlY3RVcGRhdGVz
QWZ0ZXJDb21tYW5kOkAiSW5zZXJ0T3JkZXJlZExpc3QiIHdpdGhBcmd1bWVudDpuaWwgZXhwZWN0
ZWRSZW1vdmFsczpAW10gZXhwZWN0ZWRJbnNlcnRpb25zOkBbXV07CkBAIC02NjMsNyArNjUwLDcg
QEAgVEVTVChXS0F0dGFjaG1lbnRUZXN0cywgQXR0YWNobWVudFVwZGF0ZXNXaGVuQ3V0dGluZ0Fu
ZFBhc3RpbmcpCiAgICAgUmV0YWluUHRyPF9XS0F0dGFjaG1lbnQ+IGF0dGFjaG1lbnQ7CiAgICAg
ewogICAgICAgICBPYnNlcnZlQXR0YWNobWVudFVwZGF0ZXNGb3JTY29wZSBvYnNlcnZlcih3ZWJW
aWV3LmdldCgpKTsKLSAgICAgICAgYXR0YWNobWVudCA9IFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlJ
bnNlcnRBdHRhY2htZW50V2l0aEZpbGVuYW1lOkAiZm9vLnR4dCIgY29udGVudFR5cGU6QCJ0ZXh0
L3BsYWluIiBkYXRhOnRlc3RIVE1MRGF0YSgpIG9wdGlvbnM6bmlsXTsKKyAgICAgICAgYXR0YWNo
bWVudCA9IFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlJbnNlcnRBdHRhY2htZW50V2l0aEZpbGVuYW1l
OkAiZm9vLnR4dCIgY29udGVudFR5cGU6QCJ0ZXh0L3BsYWluIiBkYXRhOnRlc3RIVE1MRGF0YSgp
XTsKICAgICAgICAgb2JzZXJ2ZXIuZXhwZWN0QXR0YWNobWVudFVwZGF0ZXMoQFtdLCBAW2F0dGFj
aG1lbnQuZ2V0KCldKTsKICAgICB9CiAgICAgW2F0dGFjaG1lbnQgZXhwZWN0UmVxdWVzdGVkRGF0
YVRvQmU6dGVzdEhUTUxEYXRhKCldOwpAQCAtNjkyLDcgKzY3OSw3IEBAIFRFU1QoV0tBdHRhY2ht
ZW50VGVzdHMsIEF0dGFjaG1lbnREYXRhRm9yRW1wdHlGaWxlKQogICAgIFJldGFpblB0cjxfV0tB
dHRhY2htZW50PiBhdHRhY2htZW50OwogICAgIHsKICAgICAgICAgT2JzZXJ2ZUF0dGFjaG1lbnRV
cGRhdGVzRm9yU2NvcGUgb2JzZXJ2ZXIod2ViVmlldy5nZXQoKSk7Ci0gICAgICAgIGF0dGFjaG1l
bnQgPSBbd2ViVmlldyBzeW5jaHJvbm91c2x5SW5zZXJ0QXR0YWNobWVudFdpdGhGaWxlbmFtZTpA
ImVtcHR5LnR4dCIgY29udGVudFR5cGU6QCJ0ZXh0L3BsYWluIiBkYXRhOltOU0RhdGEgZGF0YV0g
b3B0aW9uczpuaWxdOworICAgICAgICBhdHRhY2htZW50ID0gW3dlYlZpZXcgc3luY2hyb25vdXNs
eUluc2VydEF0dGFjaG1lbnRXaXRoRmlsZW5hbWU6QCJlbXB0eS50eHQiIGNvbnRlbnRUeXBlOkAi
dGV4dC9wbGFpbiIgZGF0YTpbTlNEYXRhIGRhdGFdXTsKICAgICAgICAgb2JzZXJ2ZXIuZXhwZWN0
QXR0YWNobWVudFVwZGF0ZXMoQFtdLCBAW2F0dGFjaG1lbnQuZ2V0KCldKTsKICAgICB9CiAgICAg
W2F0dGFjaG1lbnQgZXhwZWN0UmVxdWVzdGVkRGF0YVRvQmU6W05TRGF0YSBkYXRhXV07CkBAIC03
MDUsMjAgKzY5Miw2IEBAIFRFU1QoV0tBdHRhY2htZW50VGVzdHMsIEF0dGFjaG1lbnREYXRhRm9y
RW1wdHlGaWxlKQogICAgIFthdHRhY2htZW50IGV4cGVjdFJlcXVlc3RlZERhdGFUb0JlOm5pbF07
CiB9CiAKLVRFU1QoV0tBdHRhY2htZW50VGVzdHMsIEluc2VydGVkSW1hZ2VTaXplSXNDbGFtcGVk
QnlNYXhXaWR0aCkKLXsKLSAgICBhdXRvIHdlYlZpZXcgPSB3ZWJWaWV3Rm9yVGVzdGluZ0F0dGFj
aG1lbnRzKENHU2l6ZU1ha2UoMTAwLCAxMDApKTsKLSAgICBSZXRhaW5QdHI8TlNEYXRhPiBpbWFn
ZURhdGEgPSB0ZXN0SW1hZ2VEYXRhKCk7Ci0gICAgUmV0YWluUHRyPF9XS0F0dGFjaG1lbnQ+IGF0
dGFjaG1lbnQ7Ci0gICAgewotICAgICAgICBPYnNlcnZlQXR0YWNobWVudFVwZGF0ZXNGb3JTY29w
ZSBvYnNlcnZlcih3ZWJWaWV3LmdldCgpKTsKLSAgICAgICAgYXR0YWNobWVudCA9IFt3ZWJWaWV3
IHN5bmNocm9ub3VzbHlJbnNlcnRBdHRhY2htZW50V2l0aEZpbGVuYW1lOkAiaWNvbi5wbmciIGNv
bnRlbnRUeXBlOkAiaW1hZ2UvcG5nIiBkYXRhOmltYWdlRGF0YS5nZXQoKSBvcHRpb25zOmRpc3Bs
YXlPcHRpb25zV2l0aE1vZGUoX1dLQXR0YWNobWVudERpc3BsYXlNb2RlSW5QbGFjZSldOwotICAg
ICAgICBbYXR0YWNobWVudCBleHBlY3RSZXF1ZXN0ZWREYXRhVG9CZTppbWFnZURhdGEuZ2V0KCld
OwotICAgICAgICBvYnNlcnZlci5leHBlY3RBdHRhY2htZW50VXBkYXRlcyhAW10sIEBbYXR0YWNo
bWVudC5nZXQoKV0pOwotICAgIH0KLSAgICBbd2ViVmlldyB3YWl0Rm9yQXR0YWNobWVudEVsZW1l
bnRTaXplVG9CZWNvbWU6Q0dTaXplTWFrZSg4NCwgNjcpXTsKLX0KLQogVEVTVChXS0F0dGFjaG1l
bnRUZXN0cywgTXVsdGlwbGVTaW11bHRhbmVvdXNBdHRhY2htZW50RGF0YVJlcXVlc3RzKQogewog
ICAgIGF1dG8gd2ViVmlldyA9IHdlYlZpZXdGb3JUZXN0aW5nQXR0YWNobWVudHMoKTsKQEAgLTcy
Niw3ICs2OTksNyBAQCBURVNUKFdLQXR0YWNobWVudFRlc3RzLCBNdWx0aXBsZVNpbXVsdGFuZW91
c0F0dGFjaG1lbnREYXRhUmVxdWVzdHMpCiAgICAgUmV0YWluUHRyPF9XS0F0dGFjaG1lbnQ+IGF0
dGFjaG1lbnQ7CiAgICAgewogICAgICAgICBPYnNlcnZlQXR0YWNobWVudFVwZGF0ZXNGb3JTY29w
ZSBvYnNlcnZlcih3ZWJWaWV3LmdldCgpKTsKLSAgICAgICAgYXR0YWNobWVudCA9IFt3ZWJWaWV3
IHN5bmNocm9ub3VzbHlJbnNlcnRBdHRhY2htZW50V2l0aEZpbGVuYW1lOkAiZm9vLnR4dCIgY29u
dGVudFR5cGU6QCJ0ZXh0L3BsYWluIiBkYXRhOmh0bWxEYXRhLmdldCgpIG9wdGlvbnM6bmlsXTsK
KyAgICAgICAgYXR0YWNobWVudCA9IFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlJbnNlcnRBdHRhY2ht
ZW50V2l0aEZpbGVuYW1lOkAiZm9vLnR4dCIgY29udGVudFR5cGU6QCJ0ZXh0L3BsYWluIiBkYXRh
Omh0bWxEYXRhLmdldCgpXTsKICAgICAgICAgb2JzZXJ2ZXIuZXhwZWN0QXR0YWNobWVudFVwZGF0
ZXMoQFtdLCBAW2F0dGFjaG1lbnQuZ2V0KCldKTsKICAgICB9CiAgICAgX19ibG9jayBSZXRhaW5Q
dHI8TlNEYXRhPiBkYXRhRm9yRmlyc3RSZXF1ZXN0OwpAQCAtNzQ4LDk3ICs3MjEsNiBAQCBURVNU
KFdLQXR0YWNobWVudFRlc3RzLCBNdWx0aXBsZVNpbXVsdGFuZW91c0F0dGFjaG1lbnREYXRhUmVx
dWVzdHMpCiAgICAgRVhQRUNUX1RSVUUoW2RhdGFGb3JTZWNvbmRSZXF1ZXN0IGlzRXF1YWxUb0Rh
dGE6aHRtbERhdGEuZ2V0KCldKTsKIH0KIAotVEVTVChXS0F0dGFjaG1lbnRUZXN0cywgSW5QbGFj
ZUltYWdlQXR0YWNobWVudFRvZ2dsZURpc3BsYXlNb2RlKQotewotICAgIGF1dG8gd2ViVmlldyA9
IHdlYlZpZXdGb3JUZXN0aW5nQXR0YWNobWVudHMoKTsKLSAgICBSZXRhaW5QdHI8TlNEYXRhPiBp
bWFnZURhdGEgPSB0ZXN0SW1hZ2VEYXRhKCk7Ci0gICAgUmV0YWluUHRyPF9XS0F0dGFjaG1lbnQ+
IGF0dGFjaG1lbnQ7Ci0gICAgewotICAgICAgICBPYnNlcnZlQXR0YWNobWVudFVwZGF0ZXNGb3JT
Y29wZSBvYnNlcnZlcih3ZWJWaWV3LmdldCgpKTsKLSAgICAgICAgYXR0YWNobWVudCA9IFt3ZWJW
aWV3IHN5bmNocm9ub3VzbHlJbnNlcnRBdHRhY2htZW50V2l0aEZpbGVuYW1lOkAiaWNvbi5wbmci
IGNvbnRlbnRUeXBlOkAiaW1hZ2UvcG5nIiBkYXRhOmltYWdlRGF0YS5nZXQoKSBvcHRpb25zOmRp
c3BsYXlPcHRpb25zV2l0aE1vZGUoX1dLQXR0YWNobWVudERpc3BsYXlNb2RlQXNJY29uKV07Ci0g
ICAgICAgIFthdHRhY2htZW50IGV4cGVjdFJlcXVlc3RlZERhdGFUb0JlOmltYWdlRGF0YS5nZXQo
KV07Ci0gICAgICAgIG9ic2VydmVyLmV4cGVjdEF0dGFjaG1lbnRVcGRhdGVzKEBbXSwgQFthdHRh
Y2htZW50LmdldCgpXSk7Ci0gICAgfQotICAgIENHU2l6ZSBpY29uQXR0YWNobWVudFNpemUgPSBb
d2ViVmlldyBhdHRhY2htZW50RWxlbWVudFNpemVdOwotCi0gICAgW2F0dGFjaG1lbnQgc3luY2hy
b25vdXNseVNldERpc3BsYXlPcHRpb25zOmRpc3BsYXlPcHRpb25zV2l0aE1vZGUoX1dLQXR0YWNo
bWVudERpc3BsYXlNb2RlSW5QbGFjZSkgZXJyb3I6bmlsXTsKLSAgICBbYXR0YWNobWVudCBleHBl
Y3RSZXF1ZXN0ZWREYXRhVG9CZTppbWFnZURhdGEuZ2V0KCldOwotICAgIFt3ZWJWaWV3IHdhaXRG
b3JBdHRhY2htZW50RWxlbWVudFNpemVUb0JlY29tZTpDR1NpemVNYWtlKDIxNSwgMTc0KV07Ci0K
LSAgICBbYXR0YWNobWVudCBzeW5jaHJvbm91c2x5U2V0RGlzcGxheU9wdGlvbnM6ZGlzcGxheU9w
dGlvbnNXaXRoTW9kZShfV0tBdHRhY2htZW50RGlzcGxheU1vZGVBc0ljb24pIGVycm9yOm5pbF07
Ci0gICAgW2F0dGFjaG1lbnQgZXhwZWN0UmVxdWVzdGVkRGF0YVRvQmU6aW1hZ2VEYXRhLmdldCgp
XTsKLSAgICBbd2ViVmlldyB3YWl0Rm9yQXR0YWNobWVudEVsZW1lbnRTaXplVG9CZWNvbWU6aWNv
bkF0dGFjaG1lbnRTaXplXTsKLQotICAgIFthdHRhY2htZW50IHN5bmNocm9ub3VzbHlTZXREaXNw
bGF5T3B0aW9uczpkaXNwbGF5T3B0aW9uc1dpdGhNb2RlKF9XS0F0dGFjaG1lbnREaXNwbGF5TW9k
ZUluUGxhY2UpIGVycm9yOm5pbF07Ci0gICAgW2F0dGFjaG1lbnQgZXhwZWN0UmVxdWVzdGVkRGF0
YVRvQmU6aW1hZ2VEYXRhLmdldCgpXTsKLSAgICBbd2ViVmlldyB3YWl0Rm9yQXR0YWNobWVudEVs
ZW1lbnRTaXplVG9CZWNvbWU6Q0dTaXplTWFrZSgyMTUsIDE3NCldOwotfQotCi1URVNUKFdLQXR0
YWNobWVudFRlc3RzLCBJblBsYWNlSW1hZ2VBdHRhY2htZW50UGFyYWdyYXBoSW5zZXJ0aW9uKQot
ewotICAgIGF1dG8gd2ViVmlldyA9IHdlYlZpZXdGb3JUZXN0aW5nQXR0YWNobWVudHMoKTsKLSAg
ICBSZXRhaW5QdHI8TlNEYXRhPiBpbWFnZURhdGEgPSB0ZXN0SW1hZ2VEYXRhKCk7Ci0gICAgUmV0
YWluUHRyPF9XS0F0dGFjaG1lbnQ+IGF0dGFjaG1lbnQ7Ci0gICAgewotICAgICAgICBPYnNlcnZl
QXR0YWNobWVudFVwZGF0ZXNGb3JTY29wZSBvYnNlcnZlcih3ZWJWaWV3LmdldCgpKTsKLSAgICAg
ICAgYXR0YWNobWVudCA9IFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlJbnNlcnRBdHRhY2htZW50V2l0
aEZpbGVuYW1lOkAiaWNvbi5wbmciIGNvbnRlbnRUeXBlOkAiaW1hZ2UvcG5nIiBkYXRhOmltYWdl
RGF0YS5nZXQoKSBvcHRpb25zOmRpc3BsYXlPcHRpb25zV2l0aE1vZGUoX1dLQXR0YWNobWVudERp
c3BsYXlNb2RlSW5QbGFjZSldOwotICAgICAgICBvYnNlcnZlci5leHBlY3RBdHRhY2htZW50VXBk
YXRlcyhAW10sIEBbYXR0YWNobWVudC5nZXQoKV0pOwotICAgIH0KLSAgICBbd2ViVmlldyBleHBl
Y3RVcGRhdGVzQWZ0ZXJDb21tYW5kOkAiSW5zZXJ0UGFyYWdyYXBoIiB3aXRoQXJndW1lbnQ6bmls
IGV4cGVjdGVkUmVtb3ZhbHM6QFtdIGV4cGVjdGVkSW5zZXJ0aW9uczpAW11dOwotICAgIFt3ZWJW
aWV3IGV4cGVjdFVwZGF0ZXNBZnRlckNvbW1hbmQ6QCJEZWxldGVCYWNrd2FyZCIgd2l0aEFyZ3Vt
ZW50Om5pbCBleHBlY3RlZFJlbW92YWxzOkBbXSBleHBlY3RlZEluc2VydGlvbnM6QFtdXTsKLSAg
ICBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZ2V0U2VsZWN0aW9uKCku
Y29sbGFwc2UoZG9jdW1lbnQuYm9keSkiXTsKLSAgICBbd2ViVmlldyBleHBlY3RVcGRhdGVzQWZ0
ZXJDb21tYW5kOkAiSW5zZXJ0UGFyYWdyYXBoIiB3aXRoQXJndW1lbnQ6bmlsIGV4cGVjdGVkUmVt
b3ZhbHM6QFtdIGV4cGVjdGVkSW5zZXJ0aW9uczpAW11dOwotICAgIFt3ZWJWaWV3IGV4cGVjdFVw
ZGF0ZXNBZnRlckNvbW1hbmQ6QCJEZWxldGVCYWNrd2FyZCIgd2l0aEFyZ3VtZW50Om5pbCBleHBl
Y3RlZFJlbW92YWxzOkBbXSBleHBlY3RlZEluc2VydGlvbnM6QFtdXTsKLQotICAgIFthdHRhY2ht
ZW50IGV4cGVjdFJlcXVlc3RlZERhdGFUb0JlOmltYWdlRGF0YS5nZXQoKV07Ci0gICAgRVhQRUNU
X1dLX1NUUkVRKFthdHRhY2htZW50IHVuaXF1ZUlkZW50aWZpZXJdLCBbd2ViVmlldyBzdHJpbmdC
eUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1lbnQucXVlcnlTZWxlY3RvcignYXR0YWNobWVu
dCcpLnVuaXF1ZUlkZW50aWZpZXIiXSk7Ci0gICAgW3dlYlZpZXcgd2FpdEZvckF0dGFjaG1lbnRF
bGVtZW50U2l6ZVRvQmVjb21lOkNHU2l6ZU1ha2UoMjE1LCAxNzQpXTsKLQotICAgIFt3ZWJWaWV3
IGV4cGVjdFVwZGF0ZXNBZnRlckNvbW1hbmQ6QCJEZWxldGVGb3J3YXJkIiB3aXRoQXJndW1lbnQ6
bmlsIGV4cGVjdGVkUmVtb3ZhbHM6QFthdHRhY2htZW50LmdldCgpXSBleHBlY3RlZEluc2VydGlv
bnM6QFtdXTsKLX0KLQotVEVTVChXS0F0dGFjaG1lbnRUZXN0cywgSW5QbGFjZVZpZGVvQXR0YWNo
bWVudEluc2VydGlvbldpdGhpbkxpc3QpCi17Ci0gICAgYXV0byB3ZWJWaWV3ID0gd2ViVmlld0Zv
clRlc3RpbmdBdHRhY2htZW50cygpOwotICAgIFJldGFpblB0cjxOU0RhdGE+IHZpZGVvRGF0YSA9
IHRlc3RWaWRlb0RhdGEoKTsKLSAgICBSZXRhaW5QdHI8X1dLQXR0YWNobWVudD4gYXR0YWNobWVu
dDsKLQotICAgIFt3ZWJWaWV3IF9zeW5jaHJvbm91c2x5RXhlY3V0ZUVkaXRDb21tYW5kOkAiSW5z
ZXJ0T3JkZXJlZExpc3QiIGFyZ3VtZW50Om5pbF07Ci0gICAgewotICAgICAgICBPYnNlcnZlQXR0
YWNobWVudFVwZGF0ZXNGb3JTY29wZSBvYnNlcnZlcih3ZWJWaWV3LmdldCgpKTsKLSAgICAgICAg
YXR0YWNobWVudCA9IFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlJbnNlcnRBdHRhY2htZW50V2l0aEZp
bGVuYW1lOkAidGVzdC5tcDQiIGNvbnRlbnRUeXBlOkAidmlkZW8vbXA0IiBkYXRhOnZpZGVvRGF0
YS5nZXQoKSBvcHRpb25zOmRpc3BsYXlPcHRpb25zV2l0aE1vZGUoX1dLQXR0YWNobWVudERpc3Bs
YXlNb2RlSW5QbGFjZSldOwotICAgICAgICBvYnNlcnZlci5leHBlY3RBdHRhY2htZW50VXBkYXRl
cyhAW10sIEBbYXR0YWNobWVudC5nZXQoKV0pOwotICAgIH0KLSAgICBbd2ViVmlldyB3YWl0Rm9y
QXR0YWNobWVudEVsZW1lbnRTaXplVG9CZWNvbWU6Q0dTaXplTWFrZSgzMjAsIDI0MCldOwotCi0g
ICAgW3dlYlZpZXcgZXhwZWN0VXBkYXRlc0FmdGVyQ29tbWFuZDpAIkRlbGV0ZUJhY2t3YXJkIiB3
aXRoQXJndW1lbnQ6bmlsIGV4cGVjdGVkUmVtb3ZhbHM6QFthdHRhY2htZW50LmdldCgpXSBleHBl
Y3RlZEluc2VydGlvbnM6QFtdXTsKLSAgICBbd2ViVmlldyBleHBlY3RVcGRhdGVzQWZ0ZXJDb21t
YW5kOkAiVW5kbyIgd2l0aEFyZ3VtZW50Om5pbCBleHBlY3RlZFJlbW92YWxzOkBbXSBleHBlY3Rl
ZEluc2VydGlvbnM6QFthdHRhY2htZW50LmdldCgpXV07Ci0gICAgW3dlYlZpZXcgZXhwZWN0VXBk
YXRlc0FmdGVyQ29tbWFuZDpAIkluc2VydE9yZGVyZWRMaXN0IiB3aXRoQXJndW1lbnQ6bmlsIGV4
cGVjdGVkUmVtb3ZhbHM6QFtdIGV4cGVjdGVkSW5zZXJ0aW9uczpAW11dOwotCi0gICAgW3dlYlZp
ZXcgd2FpdEZvckF0dGFjaG1lbnRFbGVtZW50U2l6ZVRvQmVjb21lOkNHU2l6ZU1ha2UoMzIwLCAy
NDApXTsKLSAgICBbYXR0YWNobWVudCBleHBlY3RSZXF1ZXN0ZWREYXRhVG9CZTp2aWRlb0RhdGEu
Z2V0KCldOwotfQotCi1URVNUKFdLQXR0YWNobWVudFRlc3RzLCBJblBsYWNlUERGQXR0YWNobWVu
dEN1dEFuZFBhc3RlKQotewotICAgIGF1dG8gd2ViVmlldyA9IHdlYlZpZXdGb3JUZXN0aW5nQXR0
YWNobWVudHMoKTsKLSAgICBSZXRhaW5QdHI8TlNEYXRhPiBwZGZEYXRhID0gdGVzdFBERkRhdGEo
KTsKLSAgICBSZXRhaW5QdHI8X1dLQXR0YWNobWVudD4gYXR0YWNobWVudDsKLSAgICB7Ci0gICAg
ICAgIE9ic2VydmVBdHRhY2htZW50VXBkYXRlc0ZvclNjb3BlIG9ic2VydmVyKHdlYlZpZXcuZ2V0
KCkpOwotICAgICAgICBhdHRhY2htZW50ID0gW3dlYlZpZXcgc3luY2hyb25vdXNseUluc2VydEF0
dGFjaG1lbnRXaXRoRmlsZW5hbWU6QCJ0ZXN0LnBkZiIgY29udGVudFR5cGU6QCJhcHBsaWNhdGlv
bi9wZGYiIGRhdGE6cGRmRGF0YS5nZXQoKSBvcHRpb25zOmRpc3BsYXlPcHRpb25zV2l0aE1vZGUo
X1dLQXR0YWNobWVudERpc3BsYXlNb2RlSW5QbGFjZSldOwotICAgICAgICBvYnNlcnZlci5leHBl
Y3RBdHRhY2htZW50VXBkYXRlcyhAW10sIEBbYXR0YWNobWVudC5nZXQoKV0pOwotICAgICAgICBb
d2ViVmlldyB3YWl0Rm9yQXR0YWNobWVudEVsZW1lbnRTaXplVG9CZWNvbWU6Q0dTaXplTWFrZSgx
MzAsIDI5KV07Ci0gICAgfQotCi0gICAgW3dlYlZpZXcgX3N5bmNocm9ub3VzbHlFeGVjdXRlRWRp
dENvbW1hbmQ6QCJTZWxlY3RBbGwiIGFyZ3VtZW50Om5pbF07Ci0gICAgW3dlYlZpZXcgZXhwZWN0
VXBkYXRlc0FmdGVyQ29tbWFuZDpAIkN1dCIgd2l0aEFyZ3VtZW50Om5pbCBleHBlY3RlZFJlbW92
YWxzOkBbYXR0YWNobWVudC5nZXQoKV0gZXhwZWN0ZWRJbnNlcnRpb25zOkBbXV07Ci0KLSAgICBb
d2ViVmlldyBleHBlY3RVcGRhdGVzQWZ0ZXJDb21tYW5kOkAiUGFzdGUiIHdpdGhBcmd1bWVudDpu
aWwgZXhwZWN0ZWRSZW1vdmFsczpAW10gZXhwZWN0ZWRJbnNlcnRpb25zOkBbYXR0YWNobWVudC5n
ZXQoKV1dOwotICAgIFt3ZWJWaWV3IHdhaXRGb3JBdHRhY2htZW50RWxlbWVudFNpemVUb0JlY29t
ZTpDR1NpemVNYWtlKDEzMCwgMjkpXTsKLSAgICBbYXR0YWNobWVudCBleHBlY3RSZXF1ZXN0ZWRE
YXRhVG9CZTpwZGZEYXRhLmdldCgpXTsKLX0KLQogVEVTVChXS0F0dGFjaG1lbnRUZXN0cywgQ2hh
bmdlQXR0YWNobWVudERhdGFBbmRGaWxlSW5mb3JtYXRpb24pCiB7CiAgICAgYXV0byB3ZWJWaWV3
ID0gd2ViVmlld0ZvclRlc3RpbmdBdHRhY2htZW50cygpOwpAQCAtODQ2LDcgKzcyOCw3IEBAIFRF
U1QoV0tBdHRhY2htZW50VGVzdHMsIENoYW5nZUF0dGFjaG1lbnREYXRhQW5kRmlsZUluZm9ybWF0
aW9uKQogICAgIHsKICAgICAgICAgUmV0YWluUHRyPE5TRGF0YT4gcGRmRGF0YSA9IHRlc3RQREZE
YXRhKCk7CiAgICAgICAgIE9ic2VydmVBdHRhY2htZW50VXBkYXRlc0ZvclNjb3BlIG9ic2VydmVy
KHdlYlZpZXcuZ2V0KCkpOwotICAgICAgICBhdHRhY2htZW50ID0gW3dlYlZpZXcgc3luY2hyb25v
dXNseUluc2VydEF0dGFjaG1lbnRXaXRoRmlsZW5hbWU6QCJ0ZXN0LnBkZiIgY29udGVudFR5cGU6
QCJhcHBsaWNhdGlvbi9wZGYiIGRhdGE6cGRmRGF0YS5nZXQoKSBvcHRpb25zOmRpc3BsYXlPcHRp
b25zV2l0aE1vZGUoX1dLQXR0YWNobWVudERpc3BsYXlNb2RlQXNJY29uKV07CisgICAgICAgIGF0
dGFjaG1lbnQgPSBbd2ViVmlldyBzeW5jaHJvbm91c2x5SW5zZXJ0QXR0YWNobWVudFdpdGhGaWxl
bmFtZTpAInRlc3QucGRmIiBjb250ZW50VHlwZTpAImFwcGxpY2F0aW9uL3BkZiIgZGF0YTpwZGZE
YXRhLmdldCgpXTsKICAgICAgICAgW2F0dGFjaG1lbnQgZXhwZWN0UmVxdWVzdGVkRGF0YVRvQmU6
cGRmRGF0YS5nZXQoKV07CiAgICAgICAgIEVYUEVDVF9XS19TVFJFUShAInRlc3QucGRmIiwgW3dl
YlZpZXcgdmFsdWVPZkF0dHJpYnV0ZTpAInRpdGxlIiBmb3JRdWVyeVNlbGVjdG9yOkAiYXR0YWNo
bWVudCJdKTsKICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKEAiYXBwbGljYXRpb24vcGRmIiwgW3dl
YlZpZXcgdmFsdWVPZkF0dHJpYnV0ZTpAInR5cGUiIGZvclF1ZXJ5U2VsZWN0b3I6QCJhdHRhY2ht
ZW50Il0pOwpAQCAtODY0LDcgKzc0Niw2IEBAIFRFU1QoV0tBdHRhY2htZW50VGVzdHMsIENoYW5n
ZUF0dGFjaG1lbnREYXRhQW5kRmlsZUluZm9ybWF0aW9uKQogICAgIHsKICAgICAgICAgUmV0YWlu
UHRyPE5TRGF0YT4gdGV4dERhdGEgPSB0ZXN0SFRNTERhdGEoKTsKICAgICAgICAgT2JzZXJ2ZUF0
dGFjaG1lbnRVcGRhdGVzRm9yU2NvcGUgb2JzZXJ2ZXIod2ViVmlldy5nZXQoKSk7Ci0gICAgICAg
IFthdHRhY2htZW50IHN5bmNocm9ub3VzbHlTZXREaXNwbGF5T3B0aW9uczpkaXNwbGF5T3B0aW9u
c1dpdGhNb2RlKF9XS0F0dGFjaG1lbnREaXNwbGF5TW9kZUFzSWNvbikgZXJyb3I6bmlsXTsKICAg
ICAgICAgLy8gVGhlIG5ldyBjb250ZW50IHR5cGUgc2hvdWxkIGJlIGluZmVycmVkIGZyb20gdGhl
IGZpbGUgbmFtZS4KICAgICAgICAgW2F0dGFjaG1lbnQgc3luY2hyb25vdXNseVNldERhdGE6dGV4
dERhdGEuZ2V0KCkgbmV3Q29udGVudFR5cGU6bmlsIG5ld0ZpbGVuYW1lOkAiZm9vLnR4dCIgZXJy
b3I6bmlsXTsKICAgICAgICAgW2F0dGFjaG1lbnQgZXhwZWN0UmVxdWVzdGVkRGF0YVRvQmU6dGV4
dERhdGEuZ2V0KCldOwpAQCAtODg1LDQzICs3NjYsNiBAQCBURVNUKFdLQXR0YWNobWVudFRlc3Rz
LCBDaGFuZ2VBdHRhY2htZW50RGF0YUFuZEZpbGVJbmZvcm1hdGlvbikKICAgICBbd2ViVmlldyBl
eHBlY3RVcGRhdGVzQWZ0ZXJDb21tYW5kOkAiRGVsZXRlQmFja3dhcmQiIHdpdGhBcmd1bWVudDpu
aWwgZXhwZWN0ZWRSZW1vdmFsczpAW2F0dGFjaG1lbnQuZ2V0KCldIGV4cGVjdGVkSW5zZXJ0aW9u
czpAW11dOwogfQogCi1URVNUKFdLQXR0YWNobWVudFRlc3RzLCBDaGFuZ2VBdHRhY2htZW50RGF0
YVVwZGF0ZXNXaXRoSW5QbGFjZURpc3BsYXkpCi17Ci0gICAgYXV0byB3ZWJWaWV3ID0gd2ViVmll
d0ZvclRlc3RpbmdBdHRhY2htZW50cygpOwotICAgIFJldGFpblB0cjxfV0tBdHRhY2htZW50PiBh
dHRhY2htZW50OwotICAgIHsKLSAgICAgICAgUmV0YWluUHRyPE5TRGF0YT4gcGRmRGF0YSA9IHRl
c3RQREZEYXRhKCk7Ci0gICAgICAgIE9ic2VydmVBdHRhY2htZW50VXBkYXRlc0ZvclNjb3BlIG9i
c2VydmVyKHdlYlZpZXcuZ2V0KCkpOwotICAgICAgICBhdHRhY2htZW50ID0gW3dlYlZpZXcgc3lu
Y2hyb25vdXNseUluc2VydEF0dGFjaG1lbnRXaXRoRmlsZW5hbWU6QCJ0ZXN0LnBkZiIgY29udGVu
dFR5cGU6QCJhcHBsaWNhdGlvbi9wZGYiIGRhdGE6cGRmRGF0YS5nZXQoKSBvcHRpb25zOmRpc3Bs
YXlPcHRpb25zV2l0aE1vZGUoX1dLQXR0YWNobWVudERpc3BsYXlNb2RlSW5QbGFjZSldOwotICAg
ICAgICBbd2ViVmlldyB3YWl0Rm9yQXR0YWNobWVudEVsZW1lbnRTaXplVG9CZWNvbWU6Q0dTaXpl
TWFrZSgxMzAsIDI5KV07Ci0gICAgICAgIFthdHRhY2htZW50IGV4cGVjdFJlcXVlc3RlZERhdGFU
b0JlOnBkZkRhdGEuZ2V0KCldOwotICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoQCJ0ZXN0LnBkZiIs
IFt3ZWJWaWV3IHZhbHVlT2ZBdHRyaWJ1dGU6QCJ0aXRsZSIgZm9yUXVlcnlTZWxlY3RvcjpAImF0
dGFjaG1lbnQiXSk7Ci0gICAgICAgIEVYUEVDVF9XS19TVFJFUShAImFwcGxpY2F0aW9uL3BkZiIs
IFt3ZWJWaWV3IHZhbHVlT2ZBdHRyaWJ1dGU6QCJ0eXBlIiBmb3JRdWVyeVNlbGVjdG9yOkAiYXR0
YWNobWVudCJdKTsKLSAgICAgICAgb2JzZXJ2ZXIuZXhwZWN0QXR0YWNobWVudFVwZGF0ZXMoQFtd
LCBAW2F0dGFjaG1lbnQuZ2V0KCldKTsKLSAgICB9Ci0gICAgewotICAgICAgICBSZXRhaW5QdHI8
TlNEYXRhPiB2aWRlb0RhdGEgPSB0ZXN0VmlkZW9EYXRhKCk7Ci0gICAgICAgIE9ic2VydmVBdHRh
Y2htZW50VXBkYXRlc0ZvclNjb3BlIG9ic2VydmVyKHdlYlZpZXcuZ2V0KCkpOwotICAgICAgICBb
YXR0YWNobWVudCBzeW5jaHJvbm91c2x5U2V0RGF0YTp2aWRlb0RhdGEuZ2V0KCkgbmV3Q29udGVu
dFR5cGU6QCJ2aWRlby9tcDQiIG5ld0ZpbGVuYW1lOkAidGVzdC5tcDQiIGVycm9yOm5pbF07Ci0g
ICAgICAgIFt3ZWJWaWV3IHdhaXRGb3JBdHRhY2htZW50RWxlbWVudFNpemVUb0JlY29tZTpDR1Np
emVNYWtlKDMyMCwgMjQwKV07Ci0gICAgICAgIFthdHRhY2htZW50IGV4cGVjdFJlcXVlc3RlZERh
dGFUb0JlOnZpZGVvRGF0YS5nZXQoKV07Ci0gICAgICAgIEVYUEVDVF9XS19TVFJFUShAInRlc3Qu
bXA0IiwgW3dlYlZpZXcgdmFsdWVPZkF0dHJpYnV0ZTpAInRpdGxlIiBmb3JRdWVyeVNlbGVjdG9y
OkAiYXR0YWNobWVudCJdKTsKLSAgICAgICAgRVhQRUNUX1dLX1NUUkVRKEAidmlkZW8vbXA0Iiwg
W3dlYlZpZXcgdmFsdWVPZkF0dHJpYnV0ZTpAInR5cGUiIGZvclF1ZXJ5U2VsZWN0b3I6QCJhdHRh
Y2htZW50Il0pOwotICAgICAgICBvYnNlcnZlci5leHBlY3RBdHRhY2htZW50VXBkYXRlcyhAW10s
IEBbXSk7Ci0gICAgfQotICAgIHsKLSAgICAgICAgUmV0YWluUHRyPE5TRGF0YT4gaW1hZ2VEYXRh
ID0gdGVzdEltYWdlRGF0YSgpOwotICAgICAgICBPYnNlcnZlQXR0YWNobWVudFVwZGF0ZXNGb3JT
Y29wZSBvYnNlcnZlcih3ZWJWaWV3LmdldCgpKTsKLSAgICAgICAgW2F0dGFjaG1lbnQgc3luY2hy
b25vdXNseVNldERhdGE6aW1hZ2VEYXRhLmdldCgpIG5ld0NvbnRlbnRUeXBlOkAiaW1hZ2UvcG5n
IiBuZXdGaWxlbmFtZTpAImljb24ucG5nIiBlcnJvcjpuaWxdOwotICAgICAgICBbd2ViVmlldyB3
YWl0Rm9yQXR0YWNobWVudEVsZW1lbnRTaXplVG9CZWNvbWU6Q0dTaXplTWFrZSgyMTUsIDE3NCld
OwotICAgICAgICBbYXR0YWNobWVudCBleHBlY3RSZXF1ZXN0ZWREYXRhVG9CZTppbWFnZURhdGEu
Z2V0KCldOwotICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoQCJpY29uLnBuZyIsIFt3ZWJWaWV3IHZh
bHVlT2ZBdHRyaWJ1dGU6QCJ0aXRsZSIgZm9yUXVlcnlTZWxlY3RvcjpAImF0dGFjaG1lbnQiXSk7
Ci0gICAgICAgIEVYUEVDVF9XS19TVFJFUShAImltYWdlL3BuZyIsIFt3ZWJWaWV3IHZhbHVlT2ZB
dHRyaWJ1dGU6QCJ0eXBlIiBmb3JRdWVyeVNlbGVjdG9yOkAiYXR0YWNobWVudCJdKTsKLSAgICAg
ICAgb2JzZXJ2ZXIuZXhwZWN0QXR0YWNobWVudFVwZGF0ZXMoQFtdLCBAW10pOwotICAgIH0KLSAg
ICBbd2ViVmlldyBleHBlY3RVcGRhdGVzQWZ0ZXJDb21tYW5kOkAiRGVsZXRlQmFja3dhcmQiIHdp
dGhBcmd1bWVudDpuaWwgZXhwZWN0ZWRSZW1vdmFsczpAW2F0dGFjaG1lbnQuZ2V0KCldIGV4cGVj
dGVkSW5zZXJ0aW9uczpAW11dOwotfQotCiBURVNUKFdLQXR0YWNobWVudFRlc3RzLCBJbnNlcnRQ
YXN0ZWRJbWFnZUFzQXR0YWNobWVudCkKIHsKICAgICBwbGF0Zm9ybUNvcHlQTkcoKTsKQEAgLTEw
NTQsNyArODk4LDcgQEAgVEVTVChXS0F0dGFjaG1lbnRUZXN0cywgSW5zZXJ0QW5kUmVtb3ZlRHVw
bGljYXRlQXR0YWNobWVudCkKICAgICBSZXRhaW5QdHI8X1dLQXR0YWNobWVudD4gcGFzdGVkQXR0
YWNobWVudDsKICAgICB7CiAgICAgICAgIE9ic2VydmVBdHRhY2htZW50VXBkYXRlc0ZvclNjb3Bl
IG9ic2VydmVyKHdlYlZpZXcuZ2V0KCkpOwotICAgICAgICBvcmlnaW5hbEF0dGFjaG1lbnQgPSBb
d2ViVmlldyBzeW5jaHJvbm91c2x5SW5zZXJ0QXR0YWNobWVudFdpdGhGaWxlbmFtZTpAImZvby50
eHQiIGNvbnRlbnRUeXBlOkAidGV4dC9wbGFpbiIgZGF0YTpkYXRhLmdldCgpIG9wdGlvbnM6bmls
XTsKKyAgICAgICAgb3JpZ2luYWxBdHRhY2htZW50ID0gW3dlYlZpZXcgc3luY2hyb25vdXNseUlu
c2VydEF0dGFjaG1lbnRXaXRoRmlsZW5hbWU6QCJmb28udHh0IiBjb250ZW50VHlwZTpAInRleHQv
cGxhaW4iIGRhdGE6ZGF0YS5nZXQoKV07CiAgICAgICAgIEVYUEVDVF9FUSgwVSwgb2JzZXJ2ZXIu
b2JzZXJ2ZXIoKS5yZW1vdmVkLmNvdW50KTsKICAgICAgICAgb2JzZXJ2ZXIuZXhwZWN0QXR0YWNo
bWVudFVwZGF0ZXMoQFtdLCBAW29yaWdpbmFsQXR0YWNobWVudC5nZXQoKV0pOwogICAgIH0KQEAg
LTEwOTAsNyArOTM0LDcgQEAgVEVTVChXS0F0dGFjaG1lbnRUZXN0cywgSW5zZXJ0RHVwbGljYXRl
QXR0YWNobWVudEFuZFVwZGF0ZURhdGEpCiAgICAgUmV0YWluUHRyPF9XS0F0dGFjaG1lbnQ+IHBh
c3RlZEF0dGFjaG1lbnQ7CiAgICAgewogICAgICAgICBPYnNlcnZlQXR0YWNobWVudFVwZGF0ZXNG
b3JTY29wZSBvYnNlcnZlcih3ZWJWaWV3LmdldCgpKTsKLSAgICAgICAgb3JpZ2luYWxBdHRhY2ht
ZW50ID0gW3dlYlZpZXcgc3luY2hyb25vdXNseUluc2VydEF0dGFjaG1lbnRXaXRoRmlsZW5hbWU6
QCJmb28udHh0IiBjb250ZW50VHlwZTpAInRleHQvcGxhaW4iIGRhdGE6b3JpZ2luYWxEYXRhLmdl
dCgpIG9wdGlvbnM6bmlsXTsKKyAgICAgICAgb3JpZ2luYWxBdHRhY2htZW50ID0gW3dlYlZpZXcg
c3luY2hyb25vdXNseUluc2VydEF0dGFjaG1lbnRXaXRoRmlsZW5hbWU6QCJmb28udHh0IiBjb250
ZW50VHlwZTpAInRleHQvcGxhaW4iIGRhdGE6b3JpZ2luYWxEYXRhLmdldCgpXTsKICAgICAgICAg
RVhQRUNUX0VRKDBVLCBvYnNlcnZlci5vYnNlcnZlcigpLnJlbW92ZWQuY291bnQpOwogICAgICAg
ICBvYnNlcnZlci5leHBlY3RBdHRhY2htZW50VXBkYXRlcyhAW10sIEBbb3JpZ2luYWxBdHRhY2ht
ZW50LmdldCgpXSk7CiAgICAgfQpAQCAtMTM4Niw3ICsxMjMwLDcgQEAgVEVTVChXS0F0dGFjaG1l
bnRUZXN0c0lPUywgRHJhZ0F0dGFjaG1lbnRJbnNlcnRlZEFzRGF0YSkKICAgICBSZXRhaW5QdHI8
X1dLQXR0YWNobWVudD4gYXR0YWNobWVudDsKICAgICB7CiAgICAgICAgIE9ic2VydmVBdHRhY2ht
ZW50VXBkYXRlc0ZvclNjb3BlIG9ic2VydmVyKHdlYlZpZXcuZ2V0KCkpOwotICAgICAgICBhdHRh
Y2htZW50ID0gW3dlYlZpZXcgc3luY2hyb25vdXNseUluc2VydEF0dGFjaG1lbnRXaXRoRmlsZW5h
bWU6QCJkb2N1bWVudC5wZGYiIGNvbnRlbnRUeXBlOkAiYXBwbGljYXRpb24vcGRmIiBkYXRhOmRh
dGEuZ2V0KCkgb3B0aW9uczpkaXNwbGF5T3B0aW9uc1dpdGhNb2RlKF9XS0F0dGFjaG1lbnREaXNw
bGF5TW9kZUFzSWNvbildOworICAgICAgICBhdHRhY2htZW50ID0gW3dlYlZpZXcgc3luY2hyb25v
dXNseUluc2VydEF0dGFjaG1lbnRXaXRoRmlsZW5hbWU6QCJkb2N1bWVudC5wZGYiIGNvbnRlbnRU
eXBlOkAiYXBwbGljYXRpb24vcGRmIiBkYXRhOmRhdGEuZ2V0KCldOwogICAgICAgICBvYnNlcnZl
ci5leHBlY3RBdHRhY2htZW50VXBkYXRlcyhAW10sIEBbYXR0YWNobWVudC5nZXQoKV0pOwogICAg
IH0KIApAQCAtMTQwOCwzNCArMTI1Miw2IEBAIFRFU1QoV0tBdHRhY2htZW50VGVzdHNJT1MsIERy
YWdBdHRhY2htZW50SW5zZXJ0ZWRBc0RhdGEpCiAgICAgW2RyYWdBbmREcm9wU2ltdWxhdG9yIGVu
ZERhdGFUcmFuc2Zlcl07CiB9CiAKLVRFU1QoV0tBdHRhY2htZW50VGVzdHNJT1MsIERyYWdJblBs
YWNlVmlkZW9BdHRhY2htZW50RWxlbWVudCkKLXsKLSAgICBhdXRvIHdlYlZpZXcgPSB3ZWJWaWV3
Rm9yVGVzdGluZ0F0dGFjaG1lbnRzKCk7Ci0gICAgYXV0byBkYXRhID0gcmV0YWluUHRyKHRlc3RW
aWRlb0RhdGEoKSk7Ci0gICAgUmV0YWluUHRyPF9XS0F0dGFjaG1lbnQ+IGF0dGFjaG1lbnQ7Ci0g
ICAgewotICAgICAgICBPYnNlcnZlQXR0YWNobWVudFVwZGF0ZXNGb3JTY29wZSBvYnNlcnZlcih3
ZWJWaWV3LmdldCgpKTsKLSAgICAgICAgYXR0YWNobWVudCA9IFt3ZWJWaWV3IHN5bmNocm9ub3Vz
bHlJbnNlcnRBdHRhY2htZW50V2l0aEZpbGVuYW1lOkAidmlkZW8ubXA0IiBjb250ZW50VHlwZTpA
InZpZGVvL21wNCIgZGF0YTpkYXRhLmdldCgpIG9wdGlvbnM6ZGlzcGxheU9wdGlvbnNXaXRoTW9k
ZShfV0tBdHRhY2htZW50RGlzcGxheU1vZGVJblBsYWNlKV07Ci0gICAgICAgIG9ic2VydmVyLmV4
cGVjdEF0dGFjaG1lbnRVcGRhdGVzKEBbXSwgQFthdHRhY2htZW50LmdldCgpXSk7Ci0gICAgfQot
Ci0gICAgW3dlYlZpZXcgd2FpdEZvckF0dGFjaG1lbnRFbGVtZW50U2l6ZVRvQmVjb21lOkNHU2l6
ZU1ha2UoMzIwLCAyNDApXTsKLSAgICBbYXR0YWNobWVudCBleHBlY3RSZXF1ZXN0ZWREYXRhVG9C
ZTpkYXRhLmdldCgpXTsKLSAgICBFWFBFQ1RfV0tfU1RSRVEoInZpZGVvLm1wNCIsIFt3ZWJWaWV3
IHZhbHVlT2ZBdHRyaWJ1dGU6QCJ0aXRsZSIgZm9yUXVlcnlTZWxlY3RvcjpAImF0dGFjaG1lbnQi
XSk7Ci0gICAgRVhQRUNUX1dLX1NUUkVRKCJ2aWRlby9tcDQiLCBbd2ViVmlldyB2YWx1ZU9mQXR0
cmlidXRlOkAidHlwZSIgZm9yUXVlcnlTZWxlY3RvcjpAImF0dGFjaG1lbnQiXSk7Ci0KLSAgICBb
d2ViVmlldyBldmFsdWF0ZUphdmFTY3JpcHQ6QCJnZXRTZWxlY3Rpb24oKS5yZW1vdmVBbGxSYW5n
ZXMoKSIgY29tcGxldGlvbkhhbmRsZXI6bmlsXTsKLSAgICBhdXRvIGRyYWdBbmREcm9wU2ltdWxh
dG9yID0gYWRvcHROUyhbW0RyYWdBbmREcm9wU2ltdWxhdG9yIGFsbG9jXSBpbml0V2l0aFdlYlZp
ZXc6d2ViVmlldy5nZXQoKV0pOwotICAgIFtkcmFnQW5kRHJvcFNpbXVsYXRvciBydW5Gcm9tOkNH
UG9pbnRNYWtlKDI1LCAyNSkgdG86Q0dQb2ludE1ha2UoLTEwMCwgLTEwMCldOwotCi0gICAgRVhQ
RUNUX0VRKDFVLCBbZHJhZ0FuZERyb3BTaW11bGF0b3Igc291cmNlSXRlbVByb3ZpZGVyc10uY291
bnQpOwotICAgIE5TSXRlbVByb3ZpZGVyICppdGVtUHJvdmlkZXIgPSBbZHJhZ0FuZERyb3BTaW11
bGF0b3Igc291cmNlSXRlbVByb3ZpZGVyc10uZmlyc3RPYmplY3Q7Ci0gICAgRVhQRUNUX0VRKFVJ
UHJlZmVycmVkUHJlc2VudGF0aW9uU3R5bGVBdHRhY2htZW50LCBpdGVtUHJvdmlkZXIucHJlZmVy
cmVkUHJlc2VudGF0aW9uU3R5bGUpOwotICAgIFtpdGVtUHJvdmlkZXIgZXhwZWN0VHlwZTooTlNT
dHJpbmcgKilrVVRUeXBlTVBFRzQgd2l0aERhdGE6ZGF0YS5nZXQoKV07Ci0gICAgRVhQRUNUX1dL
X1NUUkVRKCJ2aWRlby5tcDQiLCBbaXRlbVByb3ZpZGVyIHN1Z2dlc3RlZE5hbWVdKTsKLSAgICBb
ZHJhZ0FuZERyb3BTaW11bGF0b3IgZW5kRGF0YVRyYW5zZmVyXTsKLX0KLQogVEVTVChXS0F0dGFj
aG1lbnRUZXN0c0lPUywgTW92ZUF0dGFjaG1lbnRFbGVtZW50QXNJY29uQnlEcmFnZ2luZykKIHsK
ICAgICBhdXRvIHdlYlZpZXcgPSB3ZWJWaWV3Rm9yVGVzdGluZ0F0dGFjaG1lbnRzKCk7CkBAIC0x
NDQzLDcgKzEyNTksNyBAQCBURVNUKFdLQXR0YWNobWVudFRlc3RzSU9TLCBNb3ZlQXR0YWNobWVu
dEVsZW1lbnRBc0ljb25CeURyYWdnaW5nKQogICAgIFJldGFpblB0cjxfV0tBdHRhY2htZW50PiBh
dHRhY2htZW50OwogICAgIHsKICAgICAgICAgT2JzZXJ2ZUF0dGFjaG1lbnRVcGRhdGVzRm9yU2Nv
cGUgb2JzZXJ2ZXIod2ViVmlldy5nZXQoKSk7Ci0gICAgICAgIGF0dGFjaG1lbnQgPSBbd2ViVmll
dyBzeW5jaHJvbm91c2x5SW5zZXJ0QXR0YWNobWVudFdpdGhGaWxlbmFtZTpAImRvY3VtZW50LnBk
ZiIgY29udGVudFR5cGU6QCJhcHBsaWNhdGlvbi9wZGYiIGRhdGE6ZGF0YS5nZXQoKSBvcHRpb25z
OmRpc3BsYXlPcHRpb25zV2l0aE1vZGUoX1dLQXR0YWNobWVudERpc3BsYXlNb2RlQXNJY29uKV07
CisgICAgICAgIGF0dGFjaG1lbnQgPSBbd2ViVmlldyBzeW5jaHJvbm91c2x5SW5zZXJ0QXR0YWNo
bWVudFdpdGhGaWxlbmFtZTpAImRvY3VtZW50LnBkZiIgY29udGVudFR5cGU6QCJhcHBsaWNhdGlv
bi9wZGYiIGRhdGE6ZGF0YS5nZXQoKV07CiAgICAgICAgIG9ic2VydmVyLmV4cGVjdEF0dGFjaG1l
bnRVcGRhdGVzKEBbXSwgQFthdHRhY2htZW50LmdldCgpXSk7CiAgICAgfQogCkBAIC0xNDY0LDM1
ICsxMjgwLDYgQEAgVEVTVChXS0F0dGFjaG1lbnRUZXN0c0lPUywgTW92ZUF0dGFjaG1lbnRFbGVt
ZW50QXNJY29uQnlEcmFnZ2luZykKICAgICBbZHJhZ0FuZERyb3BTaW11bGF0b3IgZW5kRGF0YVRy
YW5zZmVyXTsKIH0KIAotVEVTVChXS0F0dGFjaG1lbnRUZXN0c0lPUywgTW92ZUluUGxhY2VBdHRh
Y2htZW50RWxlbWVudEJ5RHJhZ2dpbmcpCi17Ci0gICAgYXV0byB3ZWJWaWV3ID0gd2ViVmlld0Zv
clRlc3RpbmdBdHRhY2htZW50cygpOwotICAgIGF1dG8gZGF0YSA9IHJldGFpblB0cih0ZXN0SW1h
Z2VEYXRhKCkpOwotICAgIFJldGFpblB0cjxfV0tBdHRhY2htZW50PiBhdHRhY2htZW50OwotICAg
IHsKLSAgICAgICAgT2JzZXJ2ZUF0dGFjaG1lbnRVcGRhdGVzRm9yU2NvcGUgb2JzZXJ2ZXIod2Vi
Vmlldy5nZXQoKSk7Ci0gICAgICAgIGF0dGFjaG1lbnQgPSBbd2ViVmlldyBzeW5jaHJvbm91c2x5
SW5zZXJ0QXR0YWNobWVudFdpdGhGaWxlbmFtZTpAImljb24ucG5nIiBjb250ZW50VHlwZTpAImlt
YWdlL3BuZyIgZGF0YTpkYXRhLmdldCgpIG9wdGlvbnM6ZGlzcGxheU9wdGlvbnNXaXRoTW9kZShf
V0tBdHRhY2htZW50RGlzcGxheU1vZGVJblBsYWNlKV07Ci0gICAgICAgIG9ic2VydmVyLmV4cGVj
dEF0dGFjaG1lbnRVcGRhdGVzKEBbXSwgQFthdHRhY2htZW50LmdldCgpXSk7Ci0gICAgfQotCi0g
ICAgW3dlYlZpZXcgd2FpdEZvckF0dGFjaG1lbnRFbGVtZW50U2l6ZVRvQmVjb21lOkNHU2l6ZU1h
a2UoMjE1LCAxNzQpXTsKLSAgICBbd2ViVmlldyBfZXhlY3V0ZUVkaXRDb21tYW5kOkAiSW5zZXJ0
UGFyYWdyYXBoIiBhcmd1bWVudDpuaWwgY29tcGxldGlvbjpuaWxdOwotICAgIFt3ZWJWaWV3IF9l
eGVjdXRlRWRpdENvbW1hbmQ6QCJJbnNlcnRIVE1MIiBhcmd1bWVudDpAIjxzdHJvbmc+dGV4dDwv
c3Ryb25nPiIgY29tcGxldGlvbjpuaWxdOwotICAgIFt3ZWJWaWV3IF9zeW5jaHJvbm91c2x5RXhl
Y3V0ZUVkaXRDb21tYW5kOkAiSW5zZXJ0UGFyYWdyYXBoIiBhcmd1bWVudDpuaWxdOwotICAgIFt3
ZWJWaWV3IGV4cGVjdEVsZW1lbnRUYWc6QCJBVFRBQ0hNRU5UIiB0b0NvbWVCZWZvcmU6QCJTVFJP
TkciXTsKLQotICAgIGF1dG8gZHJhZ0FuZERyb3BTaW11bGF0b3IgPSBhZG9wdE5TKFtbRHJhZ0Fu
ZERyb3BTaW11bGF0b3IgYWxsb2NdIGluaXRXaXRoV2ViVmlldzp3ZWJWaWV3LmdldCgpXSk7Ci0g
ICAgW2RyYWdBbmREcm9wU2ltdWxhdG9yIHJ1bkZyb206Q0dQb2ludE1ha2UoMjUsIDI1KSB0bzpD
R1BvaW50TWFrZSgyNSwgNDI1KV07Ci0KLSAgICBhdHRhY2htZW50ID0gW1tkcmFnQW5kRHJvcFNp
bXVsYXRvciBpbnNlcnRlZEF0dGFjaG1lbnRzXSBmaXJzdE9iamVjdF07Ci0gICAgW2F0dGFjaG1l
bnQgZXhwZWN0UmVxdWVzdGVkRGF0YVRvQmU6ZGF0YS5nZXQoKV07Ci0gICAgRVhQRUNUX1dLX1NU
UkVRKCJpY29uLnBuZyIsIFt3ZWJWaWV3IHZhbHVlT2ZBdHRyaWJ1dGU6QCJ0aXRsZSIgZm9yUXVl
cnlTZWxlY3RvcjpAImF0dGFjaG1lbnQiXSk7Ci0gICAgRVhQRUNUX1dLX1NUUkVRKCJpbWFnZS9w
bmciLCBbd2ViVmlldyB2YWx1ZU9mQXR0cmlidXRlOkAidHlwZSIgZm9yUXVlcnlTZWxlY3RvcjpA
ImF0dGFjaG1lbnQiXSk7Ci0KLSAgICBbd2ViVmlldyBleHBlY3RFbGVtZW50VGFnOkAiU1RST05H
IiB0b0NvbWVCZWZvcmU6QCJBVFRBQ0hNRU5UIl07Ci0gICAgW2RyYWdBbmREcm9wU2ltdWxhdG9y
IGVuZERhdGFUcmFuc2Zlcl07Ci19Ci0KICNlbmRpZiAvLyBQTEFURk9STShJT1MpCiAKIH0gLy8g
bmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxv
ZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBhN2I2NTgyZjM1YzY1ODc0MzhhYTVjYmU3
ODg3NWU5ODVjYTBiYWI5Li43ZjM5YWY1ODYxZjk1NTlmN2U0Y2RiMDE0MWEwNjNlNWQxMTQyNTcw
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTgtMDgtMTQgIFdlbnNvbiBIc2llaCAgPHdlbnNv
bl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgW0F0dGFjaG1lbnQgU1BJXSBSZW1vdmUgYXR0
YWNobWVudCBkaXNwbGF5IG1vZGUgb3B0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg4NTk2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlIGEgbGF5b3V0IHRlc3Qgd2hpY2ggdmVyaWZpZWQg
dGhhdCBhdHRhY2htZW50IGVsZW1lbnRzIHdpdGggYC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZWAg
d291bGQgcmVuZGVyCisgICAgICAgIGNoaWxkIGVsZW1lbnRzLiBUaGlzIHdhcyBvbmx5IHVzZWQg
dG8gaW1wbGVtZW50IGluLXBsYWNlIGF0dGFjaG1lbnQgZGlzcGxheSBtb2Rlcy4KKworICAgICAg
ICAqIGZhc3QvYXR0YWNobWVudC9hdHRhY2htZW50LXdpdGhvdXQtYXBwZWFyYW5jZS1leHBlY3Rl
ZC5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIGZhc3QvYXR0YWNobWVudC9hdHRhY2htZW50LXdp
dGhvdXQtYXBwZWFyYW5jZS5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9U
ZXN0RXhwZWN0YXRpb25zOgorCiAyMDE4LTA4LTE0ICBSeWFuIEhhZGRhZCAgPHJ5YW5oYWRkYWRA
YXBwbGUuY29tPgogCiAgICAgICAgIE1hcmsgc3ZnL2N1c3RvbS9zY3JvbGxpbmctZW1iZWRkZWQt
c3ZnLWZpbGUtaW1hZ2UtcmVwYWludC1wcm9ibGVtLmh0bWwgYXMgZmxha3kuCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L2F0dGFjaG1lbnQvYXR0YWNobWVudC13aXRob3V0LWFwcGVhcmFu
Y2UtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvYXR0YWNobWVudC9hdHRhY2htZW50
LXdpdGhvdXQtYXBwZWFyYW5jZS1leHBlY3RlZC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAyNGNiZmMyZGQzNDY0NjZiODc5MGNkM2JjNDBhYTZlYjIxYjkyY2NlLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2Zhc3Qv
YXR0YWNobWVudC9hdHRhY2htZW50LXdpdGhvdXQtYXBwZWFyYW5jZS1leHBlY3RlZC5odG1sCisr
KyAvZGV2L251bGwKQEAgLTEsMTMgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxz
dHlsZT4KLSAgICBzcGFuIHsKLSAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwotICAgIH0K
LTwvc3R5bGU+Ci08Ym9keT4KLTxkaXY+VGhpcyB0ZXN0IHBhc3NlcyBpZiB5b3Ugb2JzZXJ2ZSB0
d28gZ3JlZW4gc3F1YXJlcyBiZWxvdy48L2Rpdj4KLTxzcGFuPjxkaXYgc3R5bGU9IndpZHRoOiAx
MDBweDsgaGVpZ2h0OiAxMDBweDsgYmFja2dyb3VuZC1jb2xvcjogZ3JlZW47IGNvbG9yOiB3aGl0
ZTsiPkxvcmVtLjwvZGl2Pjwvc3Bhbj4KLTxzcGFuPjxkaXYgc3R5bGU9IndpZHRoOiAxMDBweDsg
aGVpZ2h0OiAxMDBweDsgYmFja2dyb3VuZC1jb2xvcjogZ3JlZW47IGNvbG9yOiB3aGl0ZTsiPklw
c3VtLjwvZGl2Pjwvc3Bhbj4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3QvYXR0YWNobWVudC9hdHRhY2htZW50LXdpdGhvdXQtYXBwZWFyYW5jZS5odG1sIGIv
TGF5b3V0VGVzdHMvZmFzdC9hdHRhY2htZW50L2F0dGFjaG1lbnQtd2l0aG91dC1hcHBlYXJhbmNl
Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFjZmE0NzkyZTAwODBkODdlNmJi
ZDM5ZTY2NGMzZWZhMjM5NWMyZTkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9hdHRhY2htZW50L2F0dGFjaG1lbnQtd2l0aG91
dC1hcHBlYXJhbmNlLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi08IURPQ1RZ
UEUgaHRtbD48IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBbIGVuYWJsZUF0dGFjaG1lbnRFbGVtZW50
PXRydWUgXSAtLT4KLTxodG1sPgotPGJvZHk+Ci08ZGl2PlRoaXMgdGVzdCBwYXNzZXMgaWYgeW91
IG9ic2VydmUgdHdvIGdyZWVuIHNxdWFyZXMgYmVsb3cuPC9kaXY+Ci08YXR0YWNobWVudCBzdHls
ZT0iLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lOyI+PGRpdiBzdHlsZT0id2lkdGg6IDEwMHB4OyBo
ZWlnaHQ6IDEwMHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsgY29sb3I6IHdoaXRlOyI+TG9y
ZW0uPC9kaXY+PC9hdHRhY2htZW50PgotPGF0dGFjaG1lbnQgaWQ9ImF0dGFjaG1lbnQiPjxkaXYg
c3R5bGU9IndpZHRoOiAxMDBweDsgaGVpZ2h0OiAxMDBweDsgYmFja2dyb3VuZC1jb2xvcjogZ3Jl
ZW47IGNvbG9yOiB3aGl0ZTsiPklwc3VtLjwvZGl2PjwvYXR0YWNobWVudD4KLTxzY3JpcHQ+Ci0g
ICAgYXR0YWNobWVudC5zdHlsZS53ZWJraXRBcHBlYXJhbmNlID0gIm5vbmUiOwotPC9zY3JpcHQ+
Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsv
VGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRp
b25zCmluZGV4IDk1NWQ1NWQwM2I1MDI0N2M1YTIzY2E4ZDRiOTRhMTI3NzMxZjdiNmUuLmJjZTkz
OGExZDU2NzMwMjM1ZWY3MWY4OTkwNTcxMjNjNWFlMGUwZjYgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL3BsYXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRm
b3JtL2d0ay9UZXN0RXhwZWN0YXRpb25zCkBAIC0zMzg1LDggKzMzODUsNiBAQCB3ZWJraXQub3Jn
L2IvMTc3NjMyIGZhc3QvdGV4dC9mbGFnLWNvZGVwb2ludC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVy
ZSBdCiAKIHdlYmtpdC5vcmcvYi8xNzkwNTIgY29tcG9zaXRpbmcvY29udGVudHMtZm9ybWF0L3N1
YnBpeGVsLWFudGlhbGlhc2VkLW5lc3RlZC1sYXllci5odG1sIFsgRmFpbHVyZSBdCiAKLXdlYmtp
dC5vcmcvYi8xODAzNzEgZmFzdC9hdHRhY2htZW50L2F0dGFjaG1lbnQtd2l0aG91dC1hcHBlYXJh
bmNlLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLQogd2Via2l0Lm9yZy9iLzE4MDc0OSBodHRw
L3dwdC9vZmZzY3JlZW4tY2FudmFzL3RyYW5zZmVyVG9JbWFnZUJpdG1hcC13ZWJnbC5odG1sIFsg
SW1hZ2VPbmx5RmFpbHVyZSBdCiAKIHdlYmtpdC5vcmcvYi8xODA4MDIgaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9odG1sL3dlYmFwcGFwaXMvc3lzdGVtLXN0YXRlLWFuZC1jYXBhYmls
aXRpZXMvdGhlLW5hdmlnYXRvci1vYmplY3QvbmF2aWdhdG9yLXBsdWdpbmFycmF5Lmh0bWwgWyBG
YWlsdXJlIF0K
</data>

          </attachment>
      

    </bug>

</bugzilla>