<?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>213816</bug_id>
          
          <creation_ts>2020-06-30 14:22:23 -0700</creation_ts>
          <short_desc>WKUserScripts injecting into all frames seem to violate app-bound domains</short_desc>
          <delta_ts>2020-07-01 09:04:01 -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>WebKit Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Kate Cheney">katherine_cheney</reporter>
          <assigned_to name="Kate Cheney">katherine_cheney</assigned_to>
          <cc>beidson</cc>
    
    <cc>bfulgham</cc>
    
    <cc>wilander</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1667738</commentid>
    <comment_count>0</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-06-30 14:22:23 -0700</bug_when>
    <thetext>WKUserScripts can inject user script into all frames when the top frame is app-bound, since only the top frame navigation is checked for app-bound status. This seems to violate principles of app-bound domains.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1667739</commentid>
    <comment_count>1</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-06-30 14:23:41 -0700</bug_when>
    <thetext>&lt;rdar://problem/64872296&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1667752</commentid>
    <comment_count>2</comment_count>
      <attachid>403244</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-06-30 14:55:23 -0700</bug_when>
    <thetext>Created attachment 403244
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1667759</commentid>
    <comment_count>3</comment_count>
      <attachid>403244</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2020-06-30 15:08:10 -0700</bug_when>
    <thetext>Comment on attachment 403244
Patch

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

Other than rebasing first and adding a test, looks good.

&gt; Source/WebKit/WebProcess/WebPage/WebPage.cpp:3461
&gt; -    if (shouldEnableInAppBrowserPrivacyProtections()) {
&gt; +    if (frame-&gt;shouldEnableInAppBrowserPrivacyProtections()) {
&gt;          send(Messages::WebPageProxy::ScriptValueCallback({ }, ExceptionDetails { &quot;Unable to execute JavaScript&quot;_s }, callbackID));

You will have to rebase before this lands.

Also, this is an interesting new case that now needs to be tested (as of https://trac.webkit.org/changeset/263727/webkit) - Could you add to the API test an attempt to evaluate javascript to the non app-bound domain should fail?

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/InAppBrowserPrivacy.mm:113
&gt; +    else if ([task.request.URL.path isEqualToString:@&quot;/should-load-for-main-frame-only&quot;])
&gt; +        countInjectedScriptSource++;

Another way to do this is checking the WKFrameInfo on the WKURLSchemeHandlerTask and see if it&apos;s the main frame, and get its URL, etc.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1667778</commentid>
    <comment_count>4</comment_count>
      <attachid>403250</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-06-30 16:16:15 -0700</bug_when>
    <thetext>Created attachment 403250
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1667961</commentid>
    <comment_count>5</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-07-01 09:04:01 -0700</bug_when>
    <thetext>Committed r263806: &lt;https://trac.webkit.org/changeset/263806&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 403250.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403244</attachid>
            <date>2020-06-30 14:55:23 -0700</date>
            <delta_ts>2020-06-30 16:16:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213816-20200630145522.patch</filename>
            <type>text/plain</type>
            <size>26588</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYzNzY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDhiYzQ2M2U5NzBiOWMzNzdm
ZGEyOGRlOGQ2NGQ2OTY1YTU5ZjZjOTYuLmQyNDM3ZWViYzA1YzkyMDNiNWIyZmRmNDc0OWQzYzFk
NTRkODAyM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjIgQEAKKzIwMjAtMDYtMzAgIEthdGUgQ2hl
bmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CisKKyAgICAgICAgV0tVc2VyU2NyaXB0
cyBpbmplY3RpbmcgaW50byBhbGwgZnJhbWVzIHNlZW0gdG8gdmlvbGF0ZSBhcHAtYm91bmQgZG9t
YWlucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEz
ODE2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82NDg3MjI5Nj4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQYXRjaCB0byBtYWtlIGFwcC1ib3VuZCBk
b21haW4gY2hlY2tzIG9uIGEgcGVyLWZyYW1lIGJhc2lzIGluc3RlYWQKKyAgICAgICAgb2YgcGVy
LXBhZ2UtYmFzZWQtb24tbWFpbi1mcmFtZS4gVGhpcyB3aWxsIHByZXZlbnQgV0tVc2VyU2NyaXB0
cyBmcm9tCisgICAgICAgIGJlaW5nIGluamVjdGVkIGluIHN1YmZyYW1lcyB3aGVuIHRoZSBtYWlu
IGZyYW1lIGlzIGFwcC1ib3VuZC4gTm93LCBhbGwKKyAgICAgICAgYW5jZXN0b3JzIG9mIGEgZnJh
bWUgbXVzdCBiZSBhcHAtYm91bmQgaW4gb3JkZXIgZm9yIGEgZnJhbWUgdG8KKyAgICAgICAgZXZh
bHVhdGUgdXNlciBzY3JpcHQuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXRJc05hdmlnYXRpbmdUb0FwcEJv
dW5kRG9tYWluQW5kQ2hlY2tJZlBlcm1pdHRlZCk6CisgICAgICAgIE1vdmUgJ2lzTWFpbkZyYW1l
JyBjaGVjayB0byBiZSBpbnNpZGUgb2YgdGhlIGNoZWNrIGZvcgorICAgICAgICBtX2xpbWl0c05h
dmlnYXRpb25zVG9BcHBCb3VuZERvbWFpbnMuIFRoZSBuYXZpZ2F0aW9uIHNob3VsZCBmYWlsIGlm
CisgICAgICAgIHRoZSBtYWluIGZyYW1lIGlzIG5vdCBhcHAtYm91bmQgYW5kIHRoZSBXS1dlYlZp
ZXcgaXMgbWFya2VkIHdpdGggdGhlCisgICAgICAgIGxpbWl0c05hdmlnYXRpb25Ub0FwcEJvdW5k
RG9tYWlucyBmbGFnLCBidXQgbm9uLWFwcC1ib3VuZCBzdWJmcmFtZQorICAgICAgICBsb2FkcyBh
cmUgYWxsb3dlZCB0byBjb250aW51ZS4KKworICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojppc1RvcEZyYW1l
TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4gY29uc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJQcm9jZXNzUG9vbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpkb3du
bG9hZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViTG9hZGVyU3RyYXRlZ3k6OnNjaGVkdWxlTG9hZEZyb21O
ZXR3b3JrUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkxvYWRlclN0cmF0ZWd5Ojpsb2Fk
UmVzb3VyY2VTeW5jaHJvbm91c2x5KToKKyAgICAgICAgKFdlYktpdDo6V2ViTG9hZGVyU3RyYXRl
Z3k6OnN0YXJ0UGluZ0xvYWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJMb2FkZXJTdHJhdGVneTo6
cHJlY29ubmVjdFRvKToKKyAgICAgICAgRm9yIHJlcG9ydGluZyBsb2FkcyB0byB0aGUgTmV0d29y
ayBQcm9jZXNzLCB3ZSBvbmx5IGNhcmUgaWYgdGhlIG1haW4KKyAgICAgICAgZnJhbWUgaXMgYXBw
IGJvdW5kLCBzbyB3ZSBuZWVkIHRvIHN0b3JlIHRoYXQgaW5mbyBpbiB0aGUgV2ViUGFnZSBhbmQK
KyAgICAgICAgV2ViUGFnZVByb3h5LgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1l
TG9hZGVyQ2xpZW50OjpzaG91bGRFbmFibGVJbkFwcEJyb3dzZXJQcml2YWN5UHJvdGVjdGlvbnMg
Y29uc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYkZyYW1lOjpzdGFydERvd25sb2FkKToKKyAgICAgICAgKFdlYktpdDo6
V2ViRnJhbWU6OmNvbnZlcnRNYWluUmVzb3VyY2VMb2FkVG9Eb3dubG9hZCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkZyYW1lOjpzaG91bGRFbmFibGVJbkFwcEJyb3dzZXJQcml2YWN5UHJvdGVjdGlv
bnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6aXNUb3BGcmFtZU5hdmlnYXRpbmdUb0Fw
cEJvdW5kRG9tYWluIGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJh
bWUuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWU6OnNldElzTmF2aWdhdGluZ1RvQXBwQm91
bmREb21haW4pOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6aXNOYXZpZ2F0aW5nVG9BcHBC
b3VuZERvbWFpbiBjb25zdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpsb2FkUmVxdWVzdCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2U6OmxvYWREYXRhSW1wbCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6
OmRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnJ1
bkphdmFTY3JpcHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZXRJc05hdmlnYXRpbmdU
b0FwcEJvdW5kRG9tYWluKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2hvdWxkRW5hYmxl
SW5BcHBCcm93c2VyUHJpdmFjeVByb3RlY3Rpb25zKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpuZWVk
c0luQXBwQnJvd3NlclByaXZhY3lRdWlya3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpp
c05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgTW92
ZSBhbGwgYXBwLWJvdW5kIGRvbWFpbiBsb2dpYyBmcm9tIHRoZSBXZWJQYWdlIHRvIHRoZSBXZWJG
cmFtZSBub3cKKyAgICAgICAgdGhhdCBjaGVja3MgYXJlIG9uIGEgcGVyLWZyYW1lIGJhc2lzLgor
CiAyMDIwLTA2LTMwICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgogCiAgICAg
ICAgIFttYWNPU10gU3RvcCBibG9ja2luZyB0d28gYXVkaW8tcmVsYXRlZCB1c2VyIGNsaWVudCBj
bGFzc2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCA3YTc0
NzI1NTA5ZGYyYTc2MWJlMTE1MGVhYWU0NmQ0NDZkYzU5Y2I1Li44NzFmMjdhMGQ5Y2FmZDVhNmI4
Yjc3YWVkMDMxYzEyOGM0MGYzMjIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5jcHAKQEAgLTMxNDMsMzEgKzMxNDMsMzQgQEAgc3RhdGljIGJvb2wgc2hvdWxkVHJlYXRV
UkxQcm90b2NvbEFzQXBwQm91bmQoY29uc3QgVVJMJiByZXF1ZXN0VVJMKQogYm9vbCBXZWJQYWdl
UHJveHk6OnNldElzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW5BbmRDaGVja0lmUGVybWl0dGVk
KGJvb2wgaXNNYWluRnJhbWUsIGNvbnN0IFVSTCYgcmVxdWVzdFVSTCwgT3B0aW9uYWw8TmF2aWdh
dGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4pCiB7CiAj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBpZiAoaXNNYWluRnJhbWUpIHsKLSAgICAgICAg
aWYgKFdFQl9QQUdFX1BST1hZX0FERElUSU9OU19TRVRJU05BVklHQVRJTkdUT0FQUEJPVU5ERE9N
QUlOKQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIGlmICghaXNOYXZpZ2F0aW5n
VG9BcHBCb3VuZERvbWFpbikgewotICAgICAgICAgICAgbV9pc05hdmlnYXRpbmdUb0FwcEJvdW5k
RG9tYWluID0gV1RGOjpudWxsb3B0OwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAg
IH0KLSAgICAgICAgaWYgKG1faWdub3Jlc0FwcEJvdW5kRG9tYWlucykKLSAgICAgICAgICAgIHJl
dHVybiB0cnVlOwotICAgICAgICAKLSAgICAgICAgaWYgKHNob3VsZFRyZWF0VVJMUHJvdG9jb2xB
c0FwcEJvdW5kKHJlcXVlc3RVUkwpKSB7Ci0gICAgICAgICAgICBpc05hdmlnYXRpbmdUb0FwcEJv
dW5kRG9tYWluID0gTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW46OlllczsKLSAgICAgICAgICAg
IG1fbGltaXRzTmF2aWdhdGlvbnNUb0FwcEJvdW5kRG9tYWlucyA9IHRydWU7Ci0gICAgICAgIH0K
LSAgICAgICAgaWYgKG1fbGltaXRzTmF2aWdhdGlvbnNUb0FwcEJvdW5kRG9tYWlucykgewotICAg
ICAgICAgICAgaWYgKCppc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluID09IE5hdmlnYXRpbmdU
b0FwcEJvdW5kRG9tYWluOjpObykKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
ICAgICAgICBtX2NvbmZpZ3VyYXRpb24tPnNldFdlYlZpZXdDYXRlZ29yeShXZWJWaWV3Q2F0ZWdv
cnk6OkFwcEJvdW5kRG9tYWluKTsKLSAgICAgICAgICAgIG1faXNOYXZpZ2F0aW5nVG9BcHBCb3Vu
ZERvbWFpbiA9IE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOjpZZXM7Ci0gICAgICAgIH0gZWxz
ZSB7Ci0gICAgICAgICAgICBpZiAobV9oYXNFeGVjdXRlZEFwcEJvdW5kQmVoYXZpb3JCZWZvcmVO
YXZpZ2F0aW9uKQorICAgIGlmIChXRUJfUEFHRV9QUk9YWV9BRERJVElPTlNfU0VUSVNOQVZJR0FU
SU5HVE9BUFBCT1VORERPTUFJTikKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKCFpc05h
dmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKSB7CisgICAgICAgIG1faXNOYXZpZ2F0aW5nVG9BcHBC
b3VuZERvbWFpbiA9IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQor
ICAgIGlmIChtX2lnbm9yZXNBcHBCb3VuZERvbWFpbnMpCisgICAgICAgIHJldHVybiB0cnVlOwor
CisgICAgaWYgKHNob3VsZFRyZWF0VVJMUHJvdG9jb2xBc0FwcEJvdW5kKHJlcXVlc3RVUkwpKSB7
CisgICAgICAgIGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4gPSBOYXZpZ2F0aW5nVG9BcHBC
b3VuZERvbWFpbjo6WWVzOworICAgICAgICBtX2xpbWl0c05hdmlnYXRpb25zVG9BcHBCb3VuZERv
bWFpbnMgPSB0cnVlOworICAgIH0KKyAgICBpZiAobV9saW1pdHNOYXZpZ2F0aW9uc1RvQXBwQm91
bmREb21haW5zKSB7CisgICAgICAgIGlmICgqaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiA9
PSBOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbjo6Tm8pIHsKKyAgICAgICAgICAgIGlmIChpc01h
aW5GcmFtZSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICBtX2Nv
bmZpZ3VyYXRpb24tPnNldFdlYlZpZXdDYXRlZ29yeShXZWJWaWV3Q2F0ZWdvcnk6OkluQXBwQnJv
d3Nlcik7CiAgICAgICAgICAgICBtX2lzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4gPSBOYXZp
Z2F0aW5nVG9BcHBCb3VuZERvbWFpbjo6Tm87CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICAgICAgfQorICAgICAgICBtX2NvbmZpZ3VyYXRpb24tPnNldFdlYlZpZXdDYXRlZ29yeShXZWJW
aWV3Q2F0ZWdvcnk6OkFwcEJvdW5kRG9tYWluKTsKKyAgICAgICAgbV9pc05hdmlnYXRpbmdUb0Fw
cEJvdW5kRG9tYWluID0gTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW46OlllczsKKyAgICB9IGVs
c2UgeworICAgICAgICBpZiAobV9oYXNFeGVjdXRlZEFwcEJvdW5kQmVoYXZpb3JCZWZvcmVOYXZp
Z2F0aW9uKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBtX2NvbmZpZ3VyYXRp
b24tPnNldFdlYlZpZXdDYXRlZ29yeShXZWJWaWV3Q2F0ZWdvcnk6OkluQXBwQnJvd3Nlcik7Cisg
ICAgICAgIG1faXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiA9IE5hdmlnYXRpbmdUb0FwcEJv
dW5kRG9tYWluOjpObzsKICAgICB9CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShpc01haW5GcmFt
ZSk7CkBAIC01MjEzLDYgKzUyMTYsOCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5
Rm9yTmF2aWdhdGlvbkFjdGlvbihSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2NlcwogICAgICAg
ICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFBvbGljeUFjdGlvbjo6SWdub3JlKTsKICAgICAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoZnJhbWUt
PmlzTWFpbkZyYW1lKCkpCisgICAgICAgICAgICAgICAgbV9pc1RvcEZyYW1lTmF2aWdhdGluZ1Rv
QXBwQm91bmREb21haW4gPSBtX2lzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW47CiAgICAgICAg
IH0KIAogICAgICAgICBpZiAoIW1fcGFnZUNsaWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmgKaW5kZXggYWUxOTViZDdlMmY4MjQwZDFlN2Q4OGM3YjdkZTE0MjJhNGRiOTI5
Ni4uNjQ2NDIxNTFiMmYwYjQyNjNiMWUxNDk4NWRjYWQ5YmQ0NGUwZWRhNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTE3NTksNiArMTc1OSw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIGlzRm9yY2VkSW50b0FwcEJvdW5kTW9kZVRlc3RpbmcoQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChib29sKT4mJik7CiAKICAgICBPcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERv
bWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbigpIGNvbnN0IHsgcmV0dXJuIG1faXNO
YXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbjsgfQorICAgIE9wdGlvbmFsPE5hdmlnYXRpbmdUb0Fw
cEJvdW5kRG9tYWluPiBpc1RvcEZyYW1lTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4oKSBjb25z
dCB7IHJldHVybiBtX2lzVG9wRnJhbWVOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbjsgfQogCiAg
ICAgdm9pZCBkaXNhYmxlU2VydmljZVdvcmtlckVudGl0bGVtZW50SW5OZXR3b3JrUHJvY2Vzcygp
OwogICAgIHZvaWQgY2xlYXJTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnRPdmVycmlkZShDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwpAQCAtMjgzMyw2ICsyODM0LDcgQEAgcHJpdmF0ZToKICNl
bmRpZgogICAgICAgICAKICAgICBPcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4g
bV9pc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOworICAgIE9wdGlvbmFsPE5hdmlnYXRpbmdU
b0FwcEJvdW5kRG9tYWluPiBtX2lzVG9wRnJhbWVOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbjsK
ICAgICBib29sIG1faWdub3Jlc0FwcEJvdW5kRG9tYWlucyB7IGZhbHNlIH07CiAgICAgYm9vbCBt
X3VzZXJTY3JpcHRzTm90aWZpZWQgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9saW1pdHNOYXZpZ2F0
aW9uc1RvQXBwQm91bmREb21haW5zIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQb29sLmNwcAppbmRleCAyYjI3Njk0MTUwMmYzOWJlNWIzMTE5ZDAwNDBiMWU3
MGZhMjAyZDk5Li4yMGNmOTI2YWM4MDNkOWIzZmIwMzRlMDAwYjk2ZGVjNWFiMTJiZDA0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCkBAIC0xMzg5LDcgKzEz
ODksNyBAQCBEb3dubG9hZFByb3h5JiBXZWJQcm9jZXNzUG9vbDo6ZG93bmxvYWQoV2Vic2l0ZURh
dGFTdG9yZSYgZGF0YVN0b3JlLCBXZWJQYWdlUHJveAogICAgIE9wdGlvbmFsPE5hdmlnYXRpbmdU
b0FwcEJvdW5kRG9tYWluPiBpc0FwcEJvdW5kID0gTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW46
Ok5vOwogICAgIGlmIChpbml0aWF0aW5nUGFnZSkgewogICAgICAgICBpbml0aWF0aW5nUGFnZS0+
aGFuZGxlRG93bmxvYWRSZXF1ZXN0KGRvd25sb2FkUHJveHkpOwotICAgICAgICBpc0FwcEJvdW5k
ID0gaW5pdGlhdGluZ1BhZ2UtPmlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4oKTsKKyAgICAg
ICAgaXNBcHBCb3VuZCA9IGluaXRpYXRpbmdQYWdlLT5pc1RvcEZyYW1lTmF2aWdhdGluZ1RvQXBw
Qm91bmREb21haW4oKTsKICAgICB9CiAKICAgICBpZiAobmV0d29ya1Byb2Nlc3MoKSkgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRl
Z3kuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRl
Z3kuY3BwCmluZGV4IDZhN2VjYTYwMThmNjJjMWI4YTJhNDJiMzNkNTY1Zjg5NmE2MTNmZWEuLjFm
MGU1ZTliMDkyZDMxYjdiY2FhNTgxNTI3MjQ2YjQ0NWI1NWNlZjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAKQEAg
LTMzNyw4ICszMzcsOCBAQCB2b2lkIFdlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxvYWRGcm9t
TmV0d29ya1Byb2Nlc3MoUmVzb3VyY2VMb2FkZXImIHJlc291cmNlTAogICAgIGF1dG8qIHdlYkZy
YW1lTG9hZGVyQ2xpZW50ID0gZnJhbWUgPyB0b1dlYkZyYW1lTG9hZGVyQ2xpZW50KGZyYW1lLT5s
b2FkZXIoKS5jbGllbnQoKSkgOiBudWxscHRyOwogICAgIGF1dG8qIHdlYkZyYW1lID0gd2ViRnJh
bWVMb2FkZXJDbGllbnQgPyAmd2ViRnJhbWVMb2FkZXJDbGllbnQtPndlYkZyYW1lKCkgOiBudWxs
cHRyOwogICAgIGF1dG8qIHdlYlBhZ2UgPSB3ZWJGcmFtZSA/IHdlYkZyYW1lLT5wYWdlKCkgOiBu
dWxscHRyOwotICAgIGlmICh3ZWJQYWdlKQotICAgICAgICBsb2FkUGFyYW1ldGVycy5pc05hdmln
YXRpbmdUb0FwcEJvdW5kRG9tYWluID0gd2ViUGFnZS0+aXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERv
bWFpbigpOworICAgIGlmICh3ZWJGcmFtZSkKKyAgICAgICAgbG9hZFBhcmFtZXRlcnMuaXNOYXZp
Z2F0aW5nVG9BcHBCb3VuZERvbWFpbiA9IHdlYkZyYW1lLT5pc1RvcEZyYW1lTmF2aWdhdGluZ1Rv
QXBwQm91bmREb21haW4oKTsKIAogI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCiAgICAg
aWYgKGRvY3VtZW50KSB7CkBAIC02MDMsOSArNjAzLDggQEAgdm9pZCBXZWJMb2FkZXJTdHJhdGVn
eTo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShGcmFtZUxvYWRlciYgZnJhbWVMb2FkZXIsIHVu
c2kKICAgICB9CiAgICAgbG9hZFBhcmFtZXRlcnMub3JpZ2luYWxSZXF1ZXN0SGVhZGVycyA9IG9y
aWdpbmFsUmVxdWVzdEhlYWRlcnM7CiAgICAgCi0gICAgaWYgKHdlYlBhZ2UpCi0gICAgICAgIGxv
YWRQYXJhbWV0ZXJzLmlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4gPSB3ZWJQYWdlLT5pc05h
dmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKCk7Ci0KKyAgICBpZiAod2ViRnJhbWUpCisgICAgICAg
IGxvYWRQYXJhbWV0ZXJzLmlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4gPSB3ZWJGcmFtZS0+
aXNUb3BGcmFtZU5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKCk7CiAgICAgYWRkUGFyYW1ldGVy
c1NoYXJlZCh3ZWJGcmFtZS0+Y29yZUZyYW1lKCksIGxvYWRQYXJhbWV0ZXJzKTsKIAogICAgIGRh
dGEuc2hyaW5rKDApOwpAQCAtNjg1LDcgKzY4NCw3IEBAIHZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6
OnN0YXJ0UGluZ0xvYWQoRnJhbWUmIGZyYW1lLCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNv
CiAgICAgfQogICAgIGFkZFBhcmFtZXRlcnNTaGFyZWQoJmZyYW1lLCBsb2FkUGFyYW1ldGVycyk7
CiAgICAgCi0gICAgbG9hZFBhcmFtZXRlcnMuaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiA9
IHdlYlBhZ2UtPmlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4oKTsKKyAgICBsb2FkUGFyYW1l
dGVycy5pc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluID0gd2ViRnJhbWUtPmlzVG9wRnJhbWVO
YXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbigpOwogICAgIAogI2lmIEVOQUJMRShDT05URU5UX0VY
VEVOU0lPTlMpCiAgICAgbG9hZFBhcmFtZXRlcnMubWFpbkRvY3VtZW50VVJMID0gZG9jdW1lbnQt
PnRvcERvY3VtZW50KCkudXJsKCk7CkBAIC03NTMsNyArNzUyLDcgQEAgdm9pZCBXZWJMb2FkZXJT
dHJhdGVneTo6cHJlY29ubmVjdFRvKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3Qs
IFdlYlBhZ2UKICAgICBwYXJhbWV0ZXJzLnNob3VsZFJlc3RyaWN0SFRUUFJlc3BvbnNlQWNjZXNz
ID0gc2hvdWxkUGVyZm9ybVNlY3VyaXR5Q2hlY2tzKCk7CiAgICAgLy8gRklYTUU6IFVzZSB0aGUg
cHJvcGVyIGRlc3RpbmF0aW9uIG9uY2UgYWxsIGZldGNoIG9wdGlvbnMgYXJlIHBhc3NlZC4KICAg
ICBwYXJhbWV0ZXJzLm9wdGlvbnMuZGVzdGluYXRpb24gPSBGZXRjaE9wdGlvbnM6OkRlc3RpbmF0
aW9uOjpFbXB0eVN0cmluZzsKLSAgICBwYXJhbWV0ZXJzLmlzTmF2aWdhdGluZ1RvQXBwQm91bmRE
b21haW4gPSB3ZWJQYWdlLmlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4oKTsKKyAgICBwYXJh
bWV0ZXJzLmlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4gPSB3ZWJGcmFtZS5pc1RvcEZyYW1l
TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4oKTsKIAogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRv
bigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1l
c3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UHJlY29ubmVjdFRvKHByZWNv
bm5lY3Rpb25JZGVudGlmaWVyLCBXVEZNb3ZlKHBhcmFtZXRlcnMpKSwgMCk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50LmNwcAppbmRleCAwNTg3YzM4ODYxYjBiNzdiZWFhOWRjYzkxMTg5
NTMwNWU0ZmExNTVlLi5jOTc1YmYxZGQ4ZGU1ZTE0MzAwNGM0M2FlMzczZmE5NDRhNTg1MjNhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKQEAgLTE5MTIsMTQgKzE5MTIsNyBAQCB2
b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpmaW5pc2hlZExvYWRpbmdBcHBsaWNhdGlvbk1hbmlm
ZXN0KHVpbnQ2NF90IGNhbGxiYWNrSQogCiBib29sIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpzaG91
bGRFbmFibGVJbkFwcEJyb3dzZXJQcml2YWN5UHJvdGVjdGlvbnMoKSBjb25zdAogewotICAgIGlm
ICghbV9mcmFtZS0+aXNNYWluRnJhbWUoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAg
YXV0byogd2ViUGFnZSA9IG1fZnJhbWUtPnBhZ2UoKTsKLSAgICBpZiAoIXdlYlBhZ2UpCi0gICAg
ICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJldHVybiB3ZWJQYWdlLT5zaG91bGRFbmFibGVJbkFw
cEJyb3dzZXJQcml2YWN5UHJvdGVjdGlvbnMoKTsKKyAgICByZXR1cm4gbV9mcmFtZS0+c2hvdWxk
RW5hYmxlSW5BcHBCcm93c2VyUHJpdmFjeVByb3RlY3Rpb25zKCk7CiB9CiAKIHZvaWQgV2ViRnJh
bWVMb2FkZXJDbGllbnQ6Om5vdGlmeVBhZ2VPZkFwcEJvdW5kQmVoYXZpb3IoKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCmluZGV4IDlkNzY3OTQ4ZGI2
NmU1YmFjMTBmNzZlNTY2ODFkMGFmYThiMTNjZWQuLjRiN2E3N2I0ZTY3MzVkYzBhYjdiNDYwNDlm
NjdlODQzMGI3YmU0YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYkZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJGcmFtZS5jcHAKQEAgLTI4OCw5ICsyODgsNyBAQCB2b2lkIFdlYkZyYW1lOjpzdGFydERvd25s
b2FkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgU3RyaQog
ICAgIG1fcG9saWN5RG93bmxvYWRJRCA9IHsgfTsKIAogICAgIE9wdGlvbmFsPE5hdmlnYXRpbmdU
b0FwcEJvdW5kRG9tYWluPiBpc0FwcEJvdW5kID0gTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW46
Ok5vOwotICAgIGlmIChwYWdlKCkpCi0gICAgICAgIGlzQXBwQm91bmQgPSBwYWdlKCktPmlzTmF2
aWdhdGluZ1RvQXBwQm91bmREb21haW4oKTsKLSAgICAKKyAgICBpc0FwcEJvdW5kID0gbV9pc05h
dmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOwogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVu
c3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2Vz
OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6U3RhcnREb3dubG9hZChwb2xpY3lEb3du
bG9hZElELCByZXF1ZXN0LCAgaXNBcHBCb3VuZCwgc3VnZ2VzdGVkTmFtZSksIDApOwogfQogCkBA
IC0zMTQsOSArMzEyLDcgQEAgdm9pZCBXZWJGcmFtZTo6Y29udmVydE1haW5SZXNvdXJjZUxvYWRU
b0Rvd25sb2FkKERvY3VtZW50TG9hZGVyKiBkb2N1bWVudExvYWRlciwKICAgICAgICAgbWFpblJl
c291cmNlTG9hZElkZW50aWZpZXIgPSAwOwogCiAgICAgT3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBw
Qm91bmREb21haW4+IGlzQXBwQm91bmQgPSBOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbjo6Tm87
Ci0gICAgaWYgKHBhZ2UoKSkKLSAgICAgICAgaXNBcHBCb3VuZCA9IHBhZ2UoKS0+aXNOYXZpZ2F0
aW5nVG9BcHBCb3VuZERvbWFpbigpOwotICAgICAgICAKKyAgICBpc0FwcEJvdW5kID0gbV9pc05h
dmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOwogICAgIHdlYlByb2Nlc3MuZW5zdXJlTmV0d29ya1By
b2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpDb252ZXJ0TWFpblJlc291cmNlTG9hZFRvRG93bmxvYWQobWFp
blJlc291cmNlTG9hZElkZW50aWZpZXIsIHBvbGljeURvd25sb2FkSUQsIHJlcXVlc3QsIHJlc3Bv
bnNlLCBpc0FwcEJvdW5kKSwgMCk7CiB9CiAKQEAgLTg1OCw1ICs4NTQsMjggQEAgUmVmUHRyPFNo
YXJlYWJsZUJpdG1hcD4gV2ViRnJhbWU6OmNyZWF0ZVNlbGVjdGlvblNuYXBzaG90KCkgY29uc3QK
IAogICAgIHJldHVybiBzaGFyZWRTbmFwc2hvdDsKIH0KKworYm9vbCBXZWJGcmFtZTo6c2hvdWxk
RW5hYmxlSW5BcHBCcm93c2VyUHJpdmFjeVByb3RlY3Rpb25zKCkKK3sKKyAgICBpZiAocGFnZSgp
ICYmIHBhZ2UoKS0+bmVlZHNJbkFwcEJyb3dzZXJQcml2YWN5UXVpcmtzKCkpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIGJvb2wgdHJlZUhhc05vbkFwcEJvdW5kRnJhbWUgPSBtX2lzTmF2
aWdhdGluZ1RvQXBwQm91bmREb21haW4gJiYgbV9pc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWlu
ID09IE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOjpObzsKKyAgICBpZiAoIXRyZWVIYXNOb25B
cHBCb3VuZEZyYW1lKSB7CisgICAgICAgIGZvciAoV2ViRnJhbWUqIGZyYW1lID0gdGhpczsgIWZy
YW1lLT5pc01haW5GcmFtZSgpOyBmcmFtZSA9IGZyYW1lLT5wYXJlbnRGcmFtZSgpKSB7CisgICAg
ICAgICAgICBpZiAoZnJhbWUtPmlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4oKSAmJiBmcmFt
ZS0+aXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbigpID09IE5hdmlnYXRpbmdUb0FwcEJvdW5k
RG9tYWluOjpObykgeworICAgICAgICAgICAgICAgIHRyZWVIYXNOb25BcHBCb3VuZEZyYW1lID0g
dHJ1ZTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
ICAgIH0KKyAgICByZXR1cm4gdHJlZUhhc05vbkFwcEJvdW5kRnJhbWU7Cit9CisKK09wdGlvbmFs
PE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBXZWJGcmFtZTo6aXNUb3BGcmFtZU5hdmlnYXRp
bmdUb0FwcEJvdW5kRG9tYWluKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZnJvbUNvcmVGcmFtZSht
X2NvcmVGcmFtZS0+bWFpbkZyYW1lKCkpLT5pc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKCk7
Cit9CisKICAgICAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmgKaW5kZXggZGEwMjkyMTE3MjkyMzA2YjIwMTJiNjA4ODA3
ZTc1ZDhmYTM0YWRkMi4uNDk4YTY2NWI4ZTJlM2JkNDgzMTdiNDY5ZTNlYmUxNDkwOGRmNmRhMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5oCkBAIC0xNzIs
NiArMTcyLDEwIEBAIHB1YmxpYzoKICNlbmRpZgogCiAgICAgV2ViRnJhbWVMb2FkZXJDbGllbnQq
IGZyYW1lTG9hZGVyQ2xpZW50KCkgY29uc3Q7CisgICAgYm9vbCBzaG91bGRFbmFibGVJbkFwcEJy
b3dzZXJQcml2YWN5UHJvdGVjdGlvbnMoKTsKKyAgICB2b2lkIHNldElzTmF2aWdhdGluZ1RvQXBw
Qm91bmREb21haW4oT3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdh
dGluZ1RvQXBwQm91bmREb21haW4pIHsgbV9pc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluID0g
aXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbjsgfTsKKyAgICBPcHRpb25hbDxOYXZpZ2F0aW5n
VG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbigpIGNvbnN0IHsg
cmV0dXJuIG1faXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbjsgfQorICAgIE9wdGlvbmFsPE5h
dmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc1RvcEZyYW1lTmF2aWdhdGluZ1RvQXBwQm91bmRE
b21haW4oKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBXZWJGcmFtZSgpOwpAQCAtMTkyLDYgKzE5
Niw4IEBAIHByaXZhdGU6CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBUcmFuc2FjdGlv
bklEIG1fZmlyc3RMYXllclRyZWVUcmFuc2FjdGlvbklEQWZ0ZXJEaWRDb21taXRMb2FkOwogI2Vu
ZGlmCisgICAgT3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IG1faXNOYXZpZ2F0
aW5nVG9BcHBCb3VuZERvbWFpbjsKKwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDFiZmUzYmY4
MjBmODJjYTgxYTQzZWFmMmZhODU4YzIyNGY0N2M1NzIuLmZlNjkyNjc1ZjUyZDVlYjE4MGQ4MTUz
MzU0MTNiMTgyMTU2NGJkZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwCkBAIC0xNTM0LDcgKzE1MzQsNyBAQCB2b2lkIFdlYlBhZ2U6OnBsYXRmb3Jt
RGlkUmVjZWl2ZUxvYWRQYXJhbWV0ZXJzKGNvbnN0IExvYWRQYXJhbWV0ZXJzJiBsb2FkUGFyYW1l
dAogCiB2b2lkIFdlYlBhZ2U6OmxvYWRSZXF1ZXN0KExvYWRQYXJhbWV0ZXJzJiYgbG9hZFBhcmFt
ZXRlcnMpCiB7Ci0gICAgc2V0SXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbihsb2FkUGFyYW1l
dGVycy5pc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKTsKKyAgICBzZXRJc05hdmlnYXRpbmdU
b0FwcEJvdW5kRG9tYWluKGxvYWRQYXJhbWV0ZXJzLmlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21h
aW4sICZtX21haW5GcmFtZS5nZXQoKSk7CiAKICAgICBTZW5kU3RvcFJlc3BvbnNpdmVuZXNzVGlt
ZXIgc3RvcHBlcjsKIApAQCAtMTU3Miw3ICsxNTcyLDcgQEAgTk9fUkVUVVJOIHZvaWQgV2ViUGFn
ZTo6bG9hZFJlcXVlc3RXYWl0aW5nRm9yUHJvY2Vzc0xhdW5jaChMb2FkUGFyYW1ldGVycyYmLCBV
UkwKIAogdm9pZCBXZWJQYWdlOjpsb2FkRGF0YUltcGwodWludDY0X3QgbmF2aWdhdGlvbklELCBi
b29sIHNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVz
RGF0YT4mJiB3ZWJzaXRlUG9saWNpZXMsIFJlZjxTaGFyZWRCdWZmZXI+JiYgc2hhcmVkQnVmZmVy
LCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nTmFtZSwgY29u
c3QgVVJMJiBiYXNlVVJMLCBjb25zdCBVUkwmIHVucmVhY2hhYmxlVVJMLCBjb25zdCBVc2VyRGF0
YSYgdXNlckRhdGEsIE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05hdmln
YXRpbmdUb0FwcEJvdW5kRG9tYWluLCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IHNob3Vs
ZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kpCiB7Ci0gICAgc2V0SXNOYXZpZ2F0aW5nVG9BcHBCb3Vu
ZERvbWFpbihpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKTsKKyAgICBzZXRJc05hdmlnYXRp
bmdUb0FwcEJvdW5kRG9tYWluKGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sICZtX21haW5G
cmFtZS5nZXQoKSk7CiAKICAgICBTZW5kU3RvcFJlc3BvbnNpdmVuZXNzVGltZXIgc3RvcHBlcjsK
IApAQCAtMzI4NCwxMSArMzI4NCwxMSBAQCB2b2lkIFdlYlBhZ2U6OnNldExheWVySG9zdGluZ01v
ZGUoTGF5ZXJIb3N0aW5nTW9kZSBsYXllckhvc3RpbmdNb2RlKQogCiB2b2lkIFdlYlBhZ2U6OmRp
ZFJlY2VpdmVQb2xpY3lEZWNpc2lvbihGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgdWludDY0X3Qg
bGlzdGVuZXJJRCwgUG9saWN5RGVjaXNpb24mJiBwb2xpY3lEZWNpc2lvbikKIHsKLSAgICBzZXRJ
c05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKHBvbGljeURlY2lzaW9uLmlzTmF2aWdhdGluZ1Rv
QXBwQm91bmREb21haW4pOwotCiAgICAgV2ViRnJhbWUqIGZyYW1lID0gV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCkud2ViRnJhbWUoZnJhbWVJRCk7CiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0
dXJuOworCisgICAgc2V0SXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbihwb2xpY3lEZWNpc2lv
bi5pc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCBmcmFtZSk7CiAgICAgZnJhbWUtPmRpZFJl
Y2VpdmVQb2xpY3lEZWNpc2lvbihsaXN0ZW5lcklELCBXVEZNb3ZlKHBvbGljeURlY2lzaW9uKSk7
CiB9CiAKQEAgLTM0NTcsNyArMzQ1Nyw3IEBAIHZvaWQgV2ViUGFnZTo6cnVuSmF2YVNjcmlwdChX
ZWJGcmFtZSogZnJhbWUsIFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYgcGFyYW1ldGVyCiAKICAg
ICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTY3JpcHRWYWx1ZUNhbGxiYWNrKGRh
dGFSZWZlcmVuY2UsIGRldGFpbHMsIGNhbGxiYWNrSUQpKTsKICAgICB9OwotICAgIGlmIChzaG91
bGRFbmFibGVJbkFwcEJyb3dzZXJQcml2YWN5UHJvdGVjdGlvbnMoKSkgeworICAgIGlmIChmcmFt
ZS0+c2hvdWxkRW5hYmxlSW5BcHBCcm93c2VyUHJpdmFjeVByb3RlY3Rpb25zKCkpIHsKICAgICAg
ICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTY3JpcHRWYWx1ZUNhbGxiYWNrKHsgfSwg
RXhjZXB0aW9uRGV0YWlscyB7ICJVbmFibGUgdG8gZXhlY3V0ZSBKYXZhU2NyaXB0Il9zIH0sIGNh
bGxiYWNrSUQpKTsKICAgICAgICAgaWYgKGF1dG8qIGRvY3VtZW50ID0gbV9wYWdlLT5tYWluRnJh
bWUoKS5kb2N1bWVudCgpKQogICAgICAgICAgICAgZG9jdW1lbnQtPmFkZENvbnNvbGVNZXNzYWdl
KE1lc3NhZ2VTb3VyY2U6OlNlY3VyaXR5LCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsICJJZ25vcmlu
ZyB1c2VyIHNjcmlwdCBpbmplY3Rpb24gZm9yIG5vbi1hcHAgYm91bmQgZG9tYWluLiIpOwpAQCAt
NzE2Miw5ICs3MTYyLDkgQEAgdm9pZCBXZWJQYWdlOjphbmltYXRpb25EaWRGaW5pc2hGb3JFbGVt
ZW50KGNvbnN0IFdlYkNvcmU6OkVsZW1lbnQmKQogCiAjZW5kaWYKIAotdm9pZCBXZWJQYWdlOjpz
ZXRJc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJv
dW5kRG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKQordm9pZCBXZWJQYWdlOjpz
ZXRJc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJv
dW5kRG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCBXZWJGcmFtZSogZnJhbWUp
CiB7Ci0gICAgbV9pc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluID0gaXNOYXZpZ2F0aW5nVG9B
cHBCb3VuZERvbWFpbjsKKyAgICBmcmFtZS0+c2V0SXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFp
bihpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKTsKICAgICAKICAgICBtX25hdmlnYXRpb25I
YXNPY2N1cmVkID0gdHJ1ZTsKIH0KQEAgLTcxNzUsMTQgKzcxNzUsNiBAQCB2b2lkIFdlYlBhZ2U6
Om5vdGlmeVBhZ2VPZkFwcEJvdW5kQmVoYXZpb3IoKQogICAgICAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OlNldEhhc0V4ZWN1dGVkQXBwQm91bmRCZWhhdmlvckJlZm9yZU5hdmlnYXRp
b24oKSk7CiB9CiAKLWJvb2wgV2ViUGFnZTo6c2hvdWxkRW5hYmxlSW5BcHBCcm93c2VyUHJpdmFj
eVByb3RlY3Rpb25zKCkKLXsKLSAgICBpZiAobV9uZWVkc0luQXBwQnJvd3NlclByaXZhY3lRdWly
a3MpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJldHVybiBpc05hdmlnYXRpbmdUb0Fw
cEJvdW5kRG9tYWluKCkgJiYgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbigpID09IE5hdmln
YXRpbmdUb0FwcEJvdW5kRG9tYWluOjpObzsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAK
ICN1bmRlZiBSRUxFQVNFX0xPR19JRl9BTExPV0VECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggZjk0YWNhYWYxODU1Mzg3ZjVlYzA4OGJmM2YzNzZiYjFl
YTFjZWFlZC4uOTIwNDE4NjJlM2MyMzBmOTg0ZTUwY2IyNjkzNmYwOWU1ZTFmNmYzNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtMTMyNiwxMCArMTMy
Niw5IEBAIHB1YmxpYzoKICAgICB2b2lkIGdldEFsbEZyYW1lcyhDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKEZyYW1lVHJlZU5vZGVEYXRhJiYpPiYmKTsKIAogICAgIHZvaWQgbm90aWZ5UGFnZU9mQXBw
Qm91bmRCZWhhdmlvcigpOwotICAgIGJvb2wgc2hvdWxkRW5hYmxlSW5BcHBCcm93c2VyUHJpdmFj
eVByb3RlY3Rpb25zKCk7Ci0gICAgdm9pZCBzZXRJc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWlu
KE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPik7Ci0gICAgT3B0aW9uYWw8TmF2
aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4oKSBj
b25zdCB7IHJldHVybiBtX2lzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW47IH0KLSAgICAKKyAg
ICB2b2lkIHNldElzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4oT3B0aW9uYWw8TmF2aWdhdGlu
Z1RvQXBwQm91bmREb21haW4+LCBXZWJGcmFtZSopOworICAgIGJvb2wgbmVlZHNJbkFwcEJyb3dz
ZXJQcml2YWN5UXVpcmtzKCkgeyByZXR1cm4gbV9uZWVkc0luQXBwQnJvd3NlclByaXZhY3lRdWly
a3M7IH0KKwogICAgIGJvb2wgc2hvdWxkVXNlUmVtb3RlUmVuZGVyaW5nRm9yKFdlYkNvcmU6OlJl
bmRlcmluZ1B1cnBvc2UpOwogCiAjaWYgRU5BQkxFKE1FRElBX1VTQUdFKQpAQCAtMjEzMCw3ICsy
MTI5LDYgQEAgcHJpdmF0ZToKICAgICBTdHJpbmcgbV90aGVtZU5hbWU7CiAjZW5kaWYKICAgICAK
LSAgICBPcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gbV9pc05hdmlnYXRpbmdU
b0FwcEJvdW5kRG9tYWluOwogICAgIGJvb2wgbV9saW1pdHNOYXZpZ2F0aW9uc1RvQXBwQm91bmRE
b21haW5zIHsgZmFsc2UgfTsKICAgICBib29sIG1fbmF2aWdhdGlvbkhhc09jY3VyZWQgeyBmYWxz
ZSB9OwogfTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwpp
bmRleCAyZGVkZjUzMjU2ZWM3MzQ4NDg2ZGMyMTA1NDI2YTJkMWNkMzIwZjE0Li43OTQwYzZkNGE4
MDcyN2I1ZTI5NWM0MmE1NmY0YzFhZWQwODMyYzdhIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VM
b2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMjAtMDYtMzAgIEth
dGUgQ2hlbmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CisKKyAgICAgICAgV0tVc2Vy
U2NyaXB0cyBpbmplY3RpbmcgaW50byBhbGwgZnJhbWVzIHNlZW0gdG8gdmlvbGF0ZSBhcHAtYm91
bmQgZG9tYWlucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjEzODE2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82NDg3MjI5Nj4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBBUEkgdGVzdCBjb3Zl
cmFnZS4gU2V0cyB1cCBhIHRyZWUgbGlrZSBzbzogW2FwcC1ib3VuZCBkb21haW4sCisgICAgICAg
IG5vbi1hcHAtYm91bmQgZG9tYWluLCBhcHAtYm91bmQgZG9tYWluXS4gU2NyaXB0IGluamVjdGlv
biBzaG91bGQgb25seQorICAgICAgICBiZSBzdWNjZXNzZnVsIGluIHRoZSB0b3AgZnJhbWUuIFNp
bmNlIG1lc3NhZ2UgaGFuZGxlcnMgYXJlIGRpc2FibGVkIGZvciBub24tCisgICAgICAgIGFwcC1i
b3VuZCBkb21haW5zLCB0aGlzIHRlc3QgaW5qZWN0cyBzY3JpcHQgd2hpY2ggbG9hZHMgYW4gaW1h
Z2UgdXNpbmcgYQorICAgICAgICBjdXN0b20gdXJsIHNjaGVtZS4gSWYgdGhlIGxvYWQgc3VjY2Vl
ZHMsIHdlIGluY3JlbWVudCBhIGNvdW50ZXIsIGFuZAorICAgICAgICBleHBlY3Qgb25seSBvbmUg
c3VjY2Vzc2Z1bCBzY3JpcHQgbG9hZCAodGhlIG1haW4gZnJhbWUpLgorCisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbkFwcEJyb3dzZXJQcml2YWN5Lm1tOgorICAg
ICAgICAoLVtJbkFwcEJyb3dzZXJTY2hlbWVIYW5kbGVyIHdlYlZpZXc6c3RhcnRVUkxTY2hlbWVU
YXNrOl0pOgorCiAyMDIwLTA2LTMwICBQZW5nIExpdSAgPHBlbmcubGl1NkBhcHBsZS5jb20+CiAK
ICAgICAgICAgRW5hYmxlIHRoZSBzdXBwb3J0IG9mIEZVTExTQ1JFRU5fQVBJIGluIFdlYktpdFRl
c3RSdW5uZXIKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvSW5BcHBCcm93c2VyUHJpdmFjeS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFjeS5tbQppbmRleCA2NzUzYjJmMTgxMTA0YTliOWE5
YjlhYWY1NTdmYWFjYWRjYWZjMmI0Li43MGQwOTFhMmZiMzg2Mjk5Mzg1NWRhNWY1MTNjMDNkNzYz
YmExNWVlIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L0luQXBwQnJvd3NlclByaXZhY3kubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9JbkFwcEJyb3dzZXJQcml2YWN5Lm1tCkBAIC04Myw2ICs4Myw3IEBAIC0gKE5T
RXJyb3IgKil3YWl0Rm9yRGlkRmFpbFByb3Zpc2lvbmFsTmF2aWdhdGlvbkVycm9yCiBAZW5kCiAK
IHN0YXRpYyBOU1N0cmluZyAqIGNvbnN0IHVzZXJTY3JpcHRTb3VyY2UgPSBAIndpbmRvdy53a1Vz
ZXJTY3JpcHRJbmplY3RlZCA9IHRydWUiOworc3RhdGljIGludCBjb3VudEluamVjdGVkU2NyaXB0
U291cmNlID0gMDsKIAogQGludGVyZmFjZSBJbkFwcEJyb3dzZXJTY2hlbWVIYW5kbGVyIDogTlNP
YmplY3QgPFdLVVJMU2NoZW1lSGFuZGxlcj4KIEBlbmQKQEAgLTkzLDcgKzk0LDcgQEAgLSAodm9p
ZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHN0YXJ0VVJMU2NoZW1lVGFzazooaWQgPFdL
VVJMU2NoZW1lVGFzaz4pdGEKIHsKICAgICBOU1N0cmluZyAqcmVzcG9uc2UgPSBuaWw7CiAgICAg
aWYgKFt0YXNrLnJlcXVlc3QuVVJMLnBhdGggaXNFcXVhbFRvU3RyaW5nOkAiL2luLWFwcC1icm93
c2VyLXByaXZhY3ktdGVzdC11c2VyLXNjcmlwdCJdKQotICAgICAgICByZXNwb25zZSA9IEAiPHNj
cmlwdD53aW5kb3cud2tVc2VyU2NyaXB0SW5qZWN0ZWQgPSBmYWxzZTs8L3NjcmlwdD4iOworICAg
ICAgICByZXNwb25zZSA9IEAiPGJvZHkgaWQgPSAnYm9keSc+PHNjcmlwdD53aW5kb3cud2tVc2Vy
U2NyaXB0SW5qZWN0ZWQgPSBmYWxzZTs8L3NjcmlwdD4iOwogICAgIGVsc2UgaWYgKFt0YXNrLnJl
cXVlc3QuVVJMLnBhdGggaXNFcXVhbFRvU3RyaW5nOkAiL2luLWFwcC1icm93c2VyLXByaXZhY3kt
dGVzdC11c2VyLWFnZW50LXNjcmlwdCJdKQogICAgICAgICByZXNwb25zZSA9IEAiPHNjcmlwdD4g
d2luZG93LndrVXNlclNjcmlwdEluamVjdGVkID0gdHJ1ZTsgPC9zY3JpcHQ+IjsKICAgICBlbHNl
IGlmIChbdGFzay5yZXF1ZXN0LlVSTC5wYXRoIGlzRXF1YWxUb1N0cmluZzpAIi9pbi1hcHAtYnJv
d3Nlci1wcml2YWN5LXRlc3QtdXNlci1zdHlsZS1zaGVldHMiXSkKQEAgLTEwNCw2ICsxMDUsMTIg
QEAgLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHN0YXJ0VVJMU2NoZW1lVGFz
azooaWQgPFdLVVJMU2NoZW1lVGFzaz4pdGEKICAgICAgICAgcmVzcG9uc2UgPSBAIjxib2R5IHN0
eWxlPSdiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsnPjwvYm9keT48c2NyaXB0PmlmICh3aW5kb3cu
d2Via2l0Lm1lc3NhZ2VIYW5kbGVycylcbndpbmRvdy53ZWJraXQubWVzc2FnZUhhbmRsZXJzLnRl
c3RIYW5kbGVyLnBvc3RNZXNzYWdlKCdGYWlsZWQnKTsgXG5lbHNlIFxuIGRvY3VtZW50LmJvZHku
c3R5bGUuYmFja2dyb3VuZCA9ICdyZWQnOzwvc2NyaXB0PiI7CiAgICAgZWxzZSBpZiAoW3Rhc2su
cmVxdWVzdC5VUkwucGF0aCBpc0VxdWFsVG9TdHJpbmc6QCIvYXBwLWJvdW5kLWRvbWFpbi1sb2Fk
Il0pCiAgICAgICAgIHJlc3BvbnNlID0gQCI8Ym9keT48L2JvZHk+IjsKKyAgICBlbHNlIGlmIChb
dGFzay5yZXF1ZXN0LlVSTC5wYXRoIGlzRXF1YWxUb1N0cmluZzpAIi9pbi1hcHAtYnJvd3Nlci1w
cml2YWN5LXRlc3QtdXNlci1zY3JpcHQtaWZyYW1lIl0pCisgICAgICAgIHJlc3BvbnNlID0gQCI8
Ym9keSBpZCA9ICdib2R5Jz48L2JvZHk+PGlmcmFtZSBzcmM9J2luLWFwcC1icm93c2VyOi8vYXBw
bGUuY29tL2luLWFwcC1icm93c2VyLXByaXZhY3ktdGVzdC11c2VyLXNjcmlwdCcgaWQ9J25lc3Rl
ZEZyYW1lJz48L2lmcmFtZT48L2JvZHk+IjsKKyAgICBlbHNlIGlmIChbdGFzay5yZXF1ZXN0LlVS
TC5wYXRoIGlzRXF1YWxUb1N0cmluZzpAIi9pbi1hcHAtYnJvd3Nlci1wcml2YWN5LXRlc3QtdXNl
ci1zY3JpcHQtbmVzdGVkLWlmcmFtZSJdKQorICAgICAgICByZXNwb25zZSA9IEAiPGJvZHkgaWQg
PSAnYm9keSc+PC9ib2R5PjxpZnJhbWUgc3JjPSdpbi1hcHAtYnJvd3NlcjovL25vbkFwcEJvdW5k
RG9tYWluL2luLWFwcC1icm93c2VyLXByaXZhY3ktdGVzdC11c2VyLXNjcmlwdC1pZnJhbWUnIGlk
PSdpZnJhbWUnPjwvaWZyYW1lPjwvYm9keT4iOworICAgIGVsc2UgaWYgKFt0YXNrLnJlcXVlc3Qu
VVJMLnBhdGggaXNFcXVhbFRvU3RyaW5nOkAiL3Nob3VsZC1sb2FkLWZvci1tYWluLWZyYW1lLW9u
bHkiXSkKKyAgICAgICAgY291bnRJbmplY3RlZFNjcmlwdFNvdXJjZSsrOwogCiAgICAgW3Rhc2sg
ZGlkUmVjZWl2ZVJlc3BvbnNlOltbW05TVVJMUmVzcG9uc2UgYWxsb2NdIGluaXRXaXRoVVJMOnRh
c2sucmVxdWVzdC5VUkwgTUlNRVR5cGU6QCJ0ZXh0L2h0bWwiIGV4cGVjdGVkQ29udGVudExlbmd0
aDpyZXNwb25zZS5sZW5ndGggdGV4dEVuY29kaW5nTmFtZTpuaWxdIGF1dG9yZWxlYXNlXV07CiAg
ICAgW3Rhc2sgZGlkUmVjZWl2ZURhdGE6W3Jlc3BvbnNlIGRhdGFVc2luZ0VuY29kaW5nOk5TVVRG
OFN0cmluZ0VuY29kaW5nXV07CkBAIC0xMDUzLDYgKzEwNjAsMzMgQEAgVEVTVChJbkFwcEJyb3dz
ZXJQcml2YWN5LCBJbmplY3RTY3JpcHRUaGVuTmF2aWdhdGVUb05vbkFwcEJvdW5kRG9tYWluRmFp
bHMpCiAgICAgRVhQRUNUX1dLX1NUUkVRKGVycm9yLmxvY2FsaXplZERlc2NyaXB0aW9uLCBAIkFw
cC1ib3VuZCBkb21haW4gZmFpbHVyZSIpOwogfQogCitURVNUKEluQXBwQnJvd3NlclByaXZhY3ks
IEluamVjdFNjcmlwdEluTm9uQXBwQm91bmRTdWJmcmFtZUFwcEJvdW5kTWFpbmZyYW1lRmFpbHMp
Cit7CisgICAgaXNEb25lID0gZmFsc2U7CisgICAgaW5pdGlhbGl6ZUluQXBwQnJvd3NlclByaXZh
Y3lUZXN0U2V0dGluZ3MoKTsKKworICAgIGF1dG8gdXNlclNjcmlwdCA9IGFkb3B0TlMoW1tXS1Vz
ZXJTY3JpcHQgYWxsb2NdIGluaXRXaXRoU291cmNlOkAidmFyIGltZyA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoJ2ltZycpOyBpbWcuc3JjID0gJ2luLWFwcC1icm93c2VyOi8vL3Nob3VsZC1sb2Fk
LWZvci1tYWluLWZyYW1lLW9ubHknOyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYm9keScpLmFw
cGVuZENoaWxkKGltZyk7IiBpbmplY3Rpb25UaW1lOldLVXNlclNjcmlwdEluamVjdGlvblRpbWVB
dERvY3VtZW50U3RhcnQgZm9yTWFpbkZyYW1lT25seTpOT10pOworCisgICAgV0tXZWJWaWV3Q29u
ZmlndXJhdGlvbiAqY29uZmlndXJhdGlvbiA9IFtXS1dlYlZpZXdDb25maWd1cmF0aW9uIF90ZXN0
X2NvbmZpZ3VyYXRpb25XaXRoVGVzdFBsdWdJbkNsYXNzTmFtZTpAIldlYlByb2Nlc3NQbHVnSW5X
aXRoSW50ZXJuYWxzIiBjb25maWd1cmVKU0NGb3JUZXN0aW5nOllFU107CisgICAgYXV0byBzY2hl
bWVIYW5kbGVyID0gYWRvcHROUyhbW0luQXBwQnJvd3NlclNjaGVtZUhhbmRsZXIgYWxsb2NdIGlu
aXRdKTsKKyAgICBbY29uZmlndXJhdGlvbiBzZXRVUkxTY2hlbWVIYW5kbGVyOnNjaGVtZUhhbmRs
ZXIuZ2V0KCkgZm9yVVJMU2NoZW1lOkAiaW4tYXBwLWJyb3dzZXIiXTsKKyAgICBbW2NvbmZpZ3Vy
YXRpb24gcHJlZmVyZW5jZXNdIF9zZXROZWVkc0luQXBwQnJvd3NlclByaXZhY3lRdWlya3M6Tk9d
OworICAgIFtjb25maWd1cmF0aW9uIHNldExpbWl0c05hdmlnYXRpb25zVG9BcHBCb3VuZERvbWFp
bnM6WUVTXTsKKyAgICBbW2NvbmZpZ3VyYXRpb24gdXNlckNvbnRlbnRDb250cm9sbGVyXSBhZGRV
c2VyU2NyaXB0OnVzZXJTY3JpcHQuZ2V0KCldOworCisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHRO
UyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0WmVybyBjb25maWd1
cmF0aW9uOmNvbmZpZ3VyYXRpb25dKTsKKyAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbQXBw
Qm91bmREb21haW5EZWxlZ2F0ZSBuZXddKTsKKyAgICBbd2ViVmlldyBzZXROYXZpZ2F0aW9uRGVs
ZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOworCisgICAgLy8gTG9hZCBhbiBhcHAtYm91bmQgZG9tYWlu
IHdpdGggYW4gaWZyYW1lIHRoYXQgaXMgbm90IGFwcC1ib3VuZC4KKyAgICBOU1VSTFJlcXVlc3Qg
KnJlcXVlc3QgPSBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3Ry
aW5nOkAiaW4tYXBwLWJyb3dzZXI6Ly9hcHBsZS5jb20vaW4tYXBwLWJyb3dzZXItcHJpdmFjeS10
ZXN0LXVzZXItc2NyaXB0LW5lc3RlZC1pZnJhbWUiXV07CisgICAgW3dlYlZpZXcgbG9hZFJlcXVl
c3Q6cmVxdWVzdF07CisgICAgW2RlbGVnYXRlIHdhaXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9uXTsK
KworICAgIEVYUEVDVF9FUShjb3VudEluamVjdGVkU2NyaXB0U291cmNlLCAxKTsKKyAgICBjbGVh
blVwSW5BcHBCcm93c2VyUHJpdmFjeVRlc3RTZXR0aW5ncygpOworfQorCiBURVNUKEluQXBwQnJv
d3NlclByaXZhY3ksIFdlYlZpZXdDYXRlZ29yeSkKIHsKICAgICBpbml0aWFsaXplSW5BcHBCcm93
c2VyUHJpdmFjeVRlc3RTZXR0aW5ncygpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403250</attachid>
            <date>2020-06-30 16:16:15 -0700</date>
            <delta_ts>2020-07-01 09:04:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213816-20200630161614.patch</filename>
            <type>text/plain</type>
            <size>31203</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYzNzc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDkzYTc2ZDRiZmUzNWY2YTNj
MGZkNWUwN2I5OTk0ZDE5MjcwMGQ1N2YuLmY4ZTllZDQyMGM5ZDNjM2I1YTAxNjliYTYxNDExZjEy
MjVkODFjOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjIgQEAKKzIwMjAtMDYtMzAgIEthdGUgQ2hl
bmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CisKKyAgICAgICAgV0tVc2VyU2NyaXB0
cyBpbmplY3RpbmcgaW50byBhbGwgZnJhbWVzIHNlZW0gdG8gdmlvbGF0ZSBhcHAtYm91bmQgZG9t
YWlucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEz
ODE2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82NDg3MjI5Nj4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQYXRjaCB0byBtYWtlIGFwcC1ib3VuZCBk
b21haW4gY2hlY2tzIG9uIGEgcGVyLWZyYW1lIGJhc2lzIGluc3RlYWQKKyAgICAgICAgb2YgcGVy
LXBhZ2UtYmFzZWQtb24tbWFpbi1mcmFtZS4gVGhpcyB3aWxsIHByZXZlbnQgV0tVc2VyU2NyaXB0
cyBmcm9tCisgICAgICAgIGJlaW5nIGluamVjdGVkIGluIHN1YmZyYW1lcyB3aGVuIHRoZSBtYWlu
IGZyYW1lIGlzIGFwcC1ib3VuZC4gTm93LCBhbGwKKyAgICAgICAgYW5jZXN0b3JzIG9mIGEgZnJh
bWUgbXVzdCBiZSBhcHAtYm91bmQgaW4gb3JkZXIgZm9yIGEgZnJhbWUgdG8KKyAgICAgICAgZXZh
bHVhdGUgdXNlciBzY3JpcHQuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXRJc05hdmlnYXRpbmdUb0FwcEJv
dW5kRG9tYWluQW5kQ2hlY2tJZlBlcm1pdHRlZCk6CisgICAgICAgIE1vdmUgJ2lzTWFpbkZyYW1l
JyBjaGVjayB0byBiZSBpbnNpZGUgb2YgdGhlIGNoZWNrIGZvcgorICAgICAgICBtX2xpbWl0c05h
dmlnYXRpb25zVG9BcHBCb3VuZERvbWFpbnMuIFRoZSBuYXZpZ2F0aW9uIHNob3VsZCBmYWlsIGlm
CisgICAgICAgIHRoZSBtYWluIGZyYW1lIGlzIG5vdCBhcHAtYm91bmQgYW5kIHRoZSBXS1dlYlZp
ZXcgaXMgbWFya2VkIHdpdGggdGhlCisgICAgICAgIGxpbWl0c05hdmlnYXRpb25Ub0FwcEJvdW5k
RG9tYWlucyBmbGFnLCBidXQgbm9uLWFwcC1ib3VuZCBzdWJmcmFtZQorICAgICAgICBsb2FkcyBh
cmUgYWxsb3dlZCB0byBjb250aW51ZS4KKworICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojppc1RvcEZyYW1l
TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4gY29uc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJQcm9jZXNzUG9vbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpkb3du
bG9hZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViTG9hZGVyU3RyYXRlZ3k6OnNjaGVkdWxlTG9hZEZyb21O
ZXR3b3JrUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkxvYWRlclN0cmF0ZWd5Ojpsb2Fk
UmVzb3VyY2VTeW5jaHJvbm91c2x5KToKKyAgICAgICAgKFdlYktpdDo6V2ViTG9hZGVyU3RyYXRl
Z3k6OnN0YXJ0UGluZ0xvYWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJMb2FkZXJTdHJhdGVneTo6
cHJlY29ubmVjdFRvKToKKyAgICAgICAgRm9yIHJlcG9ydGluZyBsb2FkcyB0byB0aGUgTmV0d29y
ayBQcm9jZXNzLCB3ZSBvbmx5IGNhcmUgaWYgdGhlIG1haW4KKyAgICAgICAgZnJhbWUgaXMgYXBw
IGJvdW5kLCBzbyB3ZSBuZWVkIHRvIHN0b3JlIHRoYXQgaW5mbyBpbiB0aGUgV2ViUGFnZSBhbmQK
KyAgICAgICAgV2ViUGFnZVByb3h5LgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1l
TG9hZGVyQ2xpZW50OjpzaG91bGRFbmFibGVJbkFwcEJyb3dzZXJQcml2YWN5UHJvdGVjdGlvbnMg
Y29uc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYkZyYW1lOjpzdGFydERvd25sb2FkKToKKyAgICAgICAgKFdlYktpdDo6
V2ViRnJhbWU6OmNvbnZlcnRNYWluUmVzb3VyY2VMb2FkVG9Eb3dubG9hZCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkZyYW1lOjpzaG91bGRFbmFibGVJbkFwcEJyb3dzZXJQcml2YWN5UHJvdGVjdGlv
bnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6aXNUb3BGcmFtZU5hdmlnYXRpbmdUb0Fw
cEJvdW5kRG9tYWluIGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJh
bWUuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWU6OnNldElzTmF2aWdhdGluZ1RvQXBwQm91
bmREb21haW4pOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6aXNOYXZpZ2F0aW5nVG9BcHBC
b3VuZERvbWFpbiBjb25zdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpsb2FkUmVxdWVzdCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2U6OmxvYWREYXRhSW1wbCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6
OmRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnJ1
bkphdmFTY3JpcHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZXRJc05hdmlnYXRpbmdU
b0FwcEJvdW5kRG9tYWluKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2hvdWxkRW5hYmxl
SW5BcHBCcm93c2VyUHJpdmFjeVByb3RlY3Rpb25zKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpuZWVk
c0luQXBwQnJvd3NlclByaXZhY3lRdWlya3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpp
c05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgTW92
ZSBhbGwgYXBwLWJvdW5kIGRvbWFpbiBsb2dpYyBmcm9tIHRoZSBXZWJQYWdlIHRvIHRoZSBXZWJG
cmFtZSBub3cKKyAgICAgICAgdGhhdCBjaGVja3MgYXJlIG9uIGEgcGVyLWZyYW1lIGJhc2lzLgor
CiAyMDIwLTA2LTMwICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAg
ICBBcHAtYm91bmQgSmF2YVNjcmlwdCBhbmQgTmF2aWdhdGlvbiBmYWlsdXJlcyBzaG91bGQgaGF2
ZSBzcGVjaWZpYyBlcnJvciBjb2Rlcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwCmluZGV4IDg5ZjRhOGRkNDMxMzIwNmNiZjViM2I3YTNlY2YxOGIzMWZhYjcxOWQuLjZi
NDAwZGMwNjIxMTNiYmM5MTBiYjU0OWI0OTFkNDExYmQ5MzZlZGIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMzE0MywzMSArMzE0MywzNCBAQCBzdGF0aWMg
Ym9vbCBzaG91bGRUcmVhdFVSTFByb3RvY29sQXNBcHBCb3VuZChjb25zdCBVUkwmIHJlcXVlc3RV
UkwpCiBib29sIFdlYlBhZ2VQcm94eTo6c2V0SXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbkFu
ZENoZWNrSWZQZXJtaXR0ZWQoYm9vbCBpc01haW5GcmFtZSwgY29uc3QgVVJMJiByZXF1ZXN0VVJM
LCBPcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBC
b3VuZERvbWFpbikKIHsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIGlmIChpc01haW5G
cmFtZSkgewotICAgICAgICBpZiAoV0VCX1BBR0VfUFJPWFlfQURESVRJT05TX1NFVElTTkFWSUdB
VElOR1RPQVBQQk9VTkRET01BSU4pCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAg
aWYgKCFpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKSB7Ci0gICAgICAgICAgICBtX2lzTmF2
aWdhdGluZ1RvQXBwQm91bmREb21haW4gPSBXVEY6Om51bGxvcHQ7Ci0gICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKLSAgICAgICAgfQotICAgICAgICBpZiAobV9pZ25vcmVzQXBwQm91bmREb21haW5z
KQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIAotICAgICAgICBpZiAoc2hvdWxk
VHJlYXRVUkxQcm90b2NvbEFzQXBwQm91bmQocmVxdWVzdFVSTCkpIHsKLSAgICAgICAgICAgIGlz
TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4gPSBOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbjo6
WWVzOwotICAgICAgICAgICAgbV9saW1pdHNOYXZpZ2F0aW9uc1RvQXBwQm91bmREb21haW5zID0g
dHJ1ZTsKLSAgICAgICAgfQotICAgICAgICBpZiAobV9saW1pdHNOYXZpZ2F0aW9uc1RvQXBwQm91
bmREb21haW5zKSB7Ci0gICAgICAgICAgICBpZiAoKmlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21h
aW4gPT0gTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW46Ok5vKQotICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICAgICAgICAgIG1fY29uZmlndXJhdGlvbi0+c2V0V2ViVmlld0NhdGVn
b3J5KFdlYlZpZXdDYXRlZ29yeTo6QXBwQm91bmREb21haW4pOwotICAgICAgICAgICAgbV9pc05h
dmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluID0gTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW46Olll
czsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGlmIChtX2hhc0V4ZWN1dGVkQXBwQm91
bmRCZWhhdmlvckJlZm9yZU5hdmlnYXRpb24pCisgICAgaWYgKFdFQl9QQUdFX1BST1hZX0FERElU
SU9OU19TRVRJU05BVklHQVRJTkdUT0FQUEJPVU5ERE9NQUlOKQorICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICBpZiAoIWlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4pIHsKKyAgICAgICAgbV9p
c05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluID0gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICB9CisgICAgaWYgKG1faWdub3Jlc0FwcEJvdW5kRG9tYWlucykKKyAgICAg
ICAgcmV0dXJuIHRydWU7CisKKyAgICBpZiAoc2hvdWxkVHJlYXRVUkxQcm90b2NvbEFzQXBwQm91
bmQocmVxdWVzdFVSTCkpIHsKKyAgICAgICAgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiA9
IE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOjpZZXM7CisgICAgICAgIG1fbGltaXRzTmF2aWdh
dGlvbnNUb0FwcEJvdW5kRG9tYWlucyA9IHRydWU7CisgICAgfQorICAgIGlmIChtX2xpbWl0c05h
dmlnYXRpb25zVG9BcHBCb3VuZERvbWFpbnMpIHsKKyAgICAgICAgaWYgKCppc05hdmlnYXRpbmdU
b0FwcEJvdW5kRG9tYWluID09IE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOjpObykgeworICAg
ICAgICAgICAgaWYgKGlzTWFpbkZyYW1lKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAgICAgICAgIG1fY29uZmlndXJhdGlvbi0+c2V0V2ViVmlld0NhdGVnb3J5KFdlYlZpZXdD
YXRlZ29yeTo6SW5BcHBCcm93c2VyKTsKICAgICAgICAgICAgIG1faXNOYXZpZ2F0aW5nVG9BcHBC
b3VuZERvbWFpbiA9IE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOjpObzsKKyAgICAgICAgICAg
IHJldHVybiB0cnVlOwogICAgICAgICB9CisgICAgICAgIG1fY29uZmlndXJhdGlvbi0+c2V0V2Vi
Vmlld0NhdGVnb3J5KFdlYlZpZXdDYXRlZ29yeTo6QXBwQm91bmREb21haW4pOworICAgICAgICBt
X2lzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4gPSBOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFp
bjo6WWVzOworICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChtX2hhc0V4ZWN1dGVkQXBwQm91bmRC
ZWhhdmlvckJlZm9yZU5hdmlnYXRpb24pCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgIG1fY29uZmlndXJhdGlvbi0+c2V0V2ViVmlld0NhdGVnb3J5KFdlYlZpZXdDYXRlZ29yeTo6
SW5BcHBCcm93c2VyKTsKKyAgICAgICAgbV9pc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluID0g
TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW46Ok5vOwogICAgIH0KICNlbHNlCiAgICAgVU5VU0VE
X1BBUkFNKGlzTWFpbkZyYW1lKTsKQEAgLTUyMTQsNiArNTIxNyw4IEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKFJlZjxXZWJQcm9jZXNzUHJveHk+
JiYgcHJvY2VzCiAgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoUG9saWN5QWN0aW9u
OjpJZ25vcmUpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIGlmIChmcmFtZS0+aXNNYWluRnJhbWUoKSkKKyAgICAgICAgICAgICAgICBtX2lzVG9w
RnJhbWVOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiA9IG1faXNOYXZpZ2F0aW5nVG9BcHBCb3Vu
ZERvbWFpbjsKICAgICAgICAgfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmgKaW5kZXggM2MzNWFlYWVjYjIyZDE1ZWU4N2RhYWFkY2RlNDc0ZTRmMzUyYTk1Mi4u
ZjhjZTUwOGVhMTc3OGJkNWQ1NDg4MTJhNjAzMDVkMTg5ZTEyODNlMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTE3NTksNiArMTc1OSw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIGlzRm9yY2VkSW50b0FwcEJvdW5kTW9kZVRlc3RpbmcoQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChib29sKT4mJik7CiAKICAgICBPcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFp
bj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbigpIGNvbnN0IHsgcmV0dXJuIG1faXNOYXZp
Z2F0aW5nVG9BcHBCb3VuZERvbWFpbjsgfQorICAgIE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJv
dW5kRG9tYWluPiBpc1RvcEZyYW1lTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4oKSBjb25zdCB7
IHJldHVybiBtX2lzVG9wRnJhbWVOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbjsgfQogCiAjaWYg
UExBVEZPUk0oQ09DT0EpCiAgICAgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBlcnJvckZvclVucGVy
bWl0dGVkQXBwQm91bmREb21haW5OYXZpZ2F0aW9uKGNvbnN0IFVSTCYpOwpAQCAtMjgzNyw2ICsy
ODM4LDcgQEAgcHJpdmF0ZToKICNlbmRpZgogICAgICAgICAKICAgICBPcHRpb25hbDxOYXZpZ2F0
aW5nVG9BcHBCb3VuZERvbWFpbj4gbV9pc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOworICAg
IE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBtX2lzVG9wRnJhbWVOYXZpZ2F0
aW5nVG9BcHBCb3VuZERvbWFpbjsKICAgICBib29sIG1faWdub3Jlc0FwcEJvdW5kRG9tYWlucyB7
IGZhbHNlIH07CiAgICAgYm9vbCBtX3VzZXJTY3JpcHRzTm90aWZpZWQgeyBmYWxzZSB9OwogICAg
IGJvb2wgbV9saW1pdHNOYXZpZ2F0aW9uc1RvQXBwQm91bmREb21haW5zIHsgZmFsc2UgfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAppbmRleCAyYjI3Njk0MTUw
MmYzOWJlNWIzMTE5ZDAwNDBiMWU3MGZhMjAyZDk5Li4yMGNmOTI2YWM4MDNkOWIzZmIwMzRlMDAw
Yjk2ZGVjNWFiMTJiZDA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUG9vbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bv
b2wuY3BwCkBAIC0xMzg5LDcgKzEzODksNyBAQCBEb3dubG9hZFByb3h5JiBXZWJQcm9jZXNzUG9v
bDo6ZG93bmxvYWQoV2Vic2l0ZURhdGFTdG9yZSYgZGF0YVN0b3JlLCBXZWJQYWdlUHJveAogICAg
IE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc0FwcEJvdW5kID0gTmF2aWdh
dGluZ1RvQXBwQm91bmREb21haW46Ok5vOwogICAgIGlmIChpbml0aWF0aW5nUGFnZSkgewogICAg
ICAgICBpbml0aWF0aW5nUGFnZS0+aGFuZGxlRG93bmxvYWRSZXF1ZXN0KGRvd25sb2FkUHJveHkp
OwotICAgICAgICBpc0FwcEJvdW5kID0gaW5pdGlhdGluZ1BhZ2UtPmlzTmF2aWdhdGluZ1RvQXBw
Qm91bmREb21haW4oKTsKKyAgICAgICAgaXNBcHBCb3VuZCA9IGluaXRpYXRpbmdQYWdlLT5pc1Rv
cEZyYW1lTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4oKTsKICAgICB9CiAKICAgICBpZiAobmV0
d29ya1Byb2Nlc3MoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05l
dHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05l
dHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwCmluZGV4IDZhN2VjYTYwMThmNjJjMWI4YTJhNDJi
MzNkNTY1Zjg5NmE2MTNmZWEuLjFmMGU1ZTliMDkyZDMxYjdiY2FhNTgxNTI3MjQ2YjQ0NWI1NWNl
ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRl
clN0cmF0ZWd5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJM
b2FkZXJTdHJhdGVneS5jcHAKQEAgLTMzNyw4ICszMzcsOCBAQCB2b2lkIFdlYkxvYWRlclN0cmF0
ZWd5OjpzY2hlZHVsZUxvYWRGcm9tTmV0d29ya1Byb2Nlc3MoUmVzb3VyY2VMb2FkZXImIHJlc291
cmNlTAogICAgIGF1dG8qIHdlYkZyYW1lTG9hZGVyQ2xpZW50ID0gZnJhbWUgPyB0b1dlYkZyYW1l
TG9hZGVyQ2xpZW50KGZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKSkgOiBudWxscHRyOwogICAgIGF1
dG8qIHdlYkZyYW1lID0gd2ViRnJhbWVMb2FkZXJDbGllbnQgPyAmd2ViRnJhbWVMb2FkZXJDbGll
bnQtPndlYkZyYW1lKCkgOiBudWxscHRyOwogICAgIGF1dG8qIHdlYlBhZ2UgPSB3ZWJGcmFtZSA/
IHdlYkZyYW1lLT5wYWdlKCkgOiBudWxscHRyOwotICAgIGlmICh3ZWJQYWdlKQotICAgICAgICBs
b2FkUGFyYW1ldGVycy5pc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluID0gd2ViUGFnZS0+aXNO
YXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbigpOworICAgIGlmICh3ZWJGcmFtZSkKKyAgICAgICAg
bG9hZFBhcmFtZXRlcnMuaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiA9IHdlYkZyYW1lLT5p
c1RvcEZyYW1lTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4oKTsKIAogI2lmIEVOQUJMRShDT05U
RU5UX0VYVEVOU0lPTlMpCiAgICAgaWYgKGRvY3VtZW50KSB7CkBAIC02MDMsOSArNjAzLDggQEAg
dm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShGcmFtZUxv
YWRlciYgZnJhbWVMb2FkZXIsIHVuc2kKICAgICB9CiAgICAgbG9hZFBhcmFtZXRlcnMub3JpZ2lu
YWxSZXF1ZXN0SGVhZGVycyA9IG9yaWdpbmFsUmVxdWVzdEhlYWRlcnM7CiAgICAgCi0gICAgaWYg
KHdlYlBhZ2UpCi0gICAgICAgIGxvYWRQYXJhbWV0ZXJzLmlzTmF2aWdhdGluZ1RvQXBwQm91bmRE
b21haW4gPSB3ZWJQYWdlLT5pc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKCk7Ci0KKyAgICBp
ZiAod2ViRnJhbWUpCisgICAgICAgIGxvYWRQYXJhbWV0ZXJzLmlzTmF2aWdhdGluZ1RvQXBwQm91
bmREb21haW4gPSB3ZWJGcmFtZS0+aXNUb3BGcmFtZU5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWlu
KCk7CiAgICAgYWRkUGFyYW1ldGVyc1NoYXJlZCh3ZWJGcmFtZS0+Y29yZUZyYW1lKCksIGxvYWRQ
YXJhbWV0ZXJzKTsKIAogICAgIGRhdGEuc2hyaW5rKDApOwpAQCAtNjg1LDcgKzY4NCw3IEBAIHZv
aWQgV2ViTG9hZGVyU3RyYXRlZ3k6OnN0YXJ0UGluZ0xvYWQoRnJhbWUmIGZyYW1lLCBSZXNvdXJj
ZVJlcXVlc3QmIHJlcXVlc3QsIGNvCiAgICAgfQogICAgIGFkZFBhcmFtZXRlcnNTaGFyZWQoJmZy
YW1lLCBsb2FkUGFyYW1ldGVycyk7CiAgICAgCi0gICAgbG9hZFBhcmFtZXRlcnMuaXNOYXZpZ2F0
aW5nVG9BcHBCb3VuZERvbWFpbiA9IHdlYlBhZ2UtPmlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21h
aW4oKTsKKyAgICBsb2FkUGFyYW1ldGVycy5pc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluID0g
d2ViRnJhbWUtPmlzVG9wRnJhbWVOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbigpOwogICAgIAog
I2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCiAgICAgbG9hZFBhcmFtZXRlcnMubWFpbkRv
Y3VtZW50VVJMID0gZG9jdW1lbnQtPnRvcERvY3VtZW50KCkudXJsKCk7CkBAIC03NTMsNyArNzUy
LDcgQEAgdm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6cHJlY29ubmVjdFRvKFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFdlYlBhZ2UKICAgICBwYXJhbWV0ZXJzLnNob3VsZFJlc3Ry
aWN0SFRUUFJlc3BvbnNlQWNjZXNzID0gc2hvdWxkUGVyZm9ybVNlY3VyaXR5Q2hlY2tzKCk7CiAg
ICAgLy8gRklYTUU6IFVzZSB0aGUgcHJvcGVyIGRlc3RpbmF0aW9uIG9uY2UgYWxsIGZldGNoIG9w
dGlvbnMgYXJlIHBhc3NlZC4KICAgICBwYXJhbWV0ZXJzLm9wdGlvbnMuZGVzdGluYXRpb24gPSBG
ZXRjaE9wdGlvbnM6OkRlc3RpbmF0aW9uOjpFbXB0eVN0cmluZzsKLSAgICBwYXJhbWV0ZXJzLmlz
TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4gPSB3ZWJQYWdlLmlzTmF2aWdhdGluZ1RvQXBwQm91
bmREb21haW4oKTsKKyAgICBwYXJhbWV0ZXJzLmlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4g
PSB3ZWJGcmFtZS5pc1RvcEZyYW1lTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4oKTsKIAogICAg
IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigp
LmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6UHJlY29ubmVjdFRvKHByZWNvbm5lY3Rpb25JZGVudGlmaWVyLCBXVEZNb3ZlKHBhcmFtZXRl
cnMpKSwgMCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAppbmRleCAwNTg3YzM4
ODYxYjBiNzdiZWFhOWRjYzkxMTg5NTMwNWU0ZmExNTVlLi5jOTc1YmYxZGQ4ZGU1ZTE0MzAwNGM0
M2FlMzczZmE5NDRhNTg1MjNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKQEAg
LTE5MTIsMTQgKzE5MTIsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpmaW5pc2hlZExv
YWRpbmdBcHBsaWNhdGlvbk1hbmlmZXN0KHVpbnQ2NF90IGNhbGxiYWNrSQogCiBib29sIFdlYkZy
YW1lTG9hZGVyQ2xpZW50OjpzaG91bGRFbmFibGVJbkFwcEJyb3dzZXJQcml2YWN5UHJvdGVjdGlv
bnMoKSBjb25zdAogewotICAgIGlmICghbV9mcmFtZS0+aXNNYWluRnJhbWUoKSkKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotCi0gICAgYXV0byogd2ViUGFnZSA9IG1fZnJhbWUtPnBhZ2UoKTsKLSAg
ICBpZiAoIXdlYlBhZ2UpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJldHVybiB3ZWJQ
YWdlLT5zaG91bGRFbmFibGVJbkFwcEJyb3dzZXJQcml2YWN5UHJvdGVjdGlvbnMoKTsKKyAgICBy
ZXR1cm4gbV9mcmFtZS0+c2hvdWxkRW5hYmxlSW5BcHBCcm93c2VyUHJpdmFjeVByb3RlY3Rpb25z
KCk7CiB9CiAKIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6Om5vdGlmeVBhZ2VPZkFwcEJvdW5k
QmVoYXZpb3IoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViRnJhbWUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUu
Y3BwCmluZGV4IDlkNzY3OTQ4ZGI2NmU1YmFjMTBmNzZlNTY2ODFkMGFmYThiMTNjZWQuLjRiN2E3
N2I0ZTY3MzVkYzBhYjdiNDYwNDlmNjdlODQzMGI3YmU0YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKQEAgLTI4OCw5ICsyODgsNyBAQCB2b2lk
IFdlYkZyYW1lOjpzdGFydERvd25sb2FkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYg
cmVxdWVzdCwgY29uc3QgU3RyaQogICAgIG1fcG9saWN5RG93bmxvYWRJRCA9IHsgfTsKIAogICAg
IE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc0FwcEJvdW5kID0gTmF2aWdh
dGluZ1RvQXBwQm91bmREb21haW46Ok5vOwotICAgIGlmIChwYWdlKCkpCi0gICAgICAgIGlzQXBw
Qm91bmQgPSBwYWdlKCktPmlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4oKTsKLSAgICAKKyAg
ICBpc0FwcEJvdW5kID0gbV9pc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOwogICAgIFdlYlBy
b2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5l
Y3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6U3Rh
cnREb3dubG9hZChwb2xpY3lEb3dubG9hZElELCByZXF1ZXN0LCAgaXNBcHBCb3VuZCwgc3VnZ2Vz
dGVkTmFtZSksIDApOwogfQogCkBAIC0zMTQsOSArMzEyLDcgQEAgdm9pZCBXZWJGcmFtZTo6Y29u
dmVydE1haW5SZXNvdXJjZUxvYWRUb0Rvd25sb2FkKERvY3VtZW50TG9hZGVyKiBkb2N1bWVudExv
YWRlciwKICAgICAgICAgbWFpblJlc291cmNlTG9hZElkZW50aWZpZXIgPSAwOwogCiAgICAgT3B0
aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzQXBwQm91bmQgPSBOYXZpZ2F0aW5n
VG9BcHBCb3VuZERvbWFpbjo6Tm87Ci0gICAgaWYgKHBhZ2UoKSkKLSAgICAgICAgaXNBcHBCb3Vu
ZCA9IHBhZ2UoKS0+aXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbigpOwotICAgICAgICAKKyAg
ICBpc0FwcEJvdW5kID0gbV9pc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOwogICAgIHdlYlBy
b2Nlc3MuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQo
TWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDb252ZXJ0TWFpblJlc291
cmNlTG9hZFRvRG93bmxvYWQobWFpblJlc291cmNlTG9hZElkZW50aWZpZXIsIHBvbGljeURvd25s
b2FkSUQsIHJlcXVlc3QsIHJlc3BvbnNlLCBpc0FwcEJvdW5kKSwgMCk7CiB9CiAKQEAgLTg1OCw1
ICs4NTQsMjggQEAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gV2ViRnJhbWU6OmNyZWF0ZVNlbGVj
dGlvblNuYXBzaG90KCkgY29uc3QKIAogICAgIHJldHVybiBzaGFyZWRTbmFwc2hvdDsKIH0KKwor
Ym9vbCBXZWJGcmFtZTo6c2hvdWxkRW5hYmxlSW5BcHBCcm93c2VyUHJpdmFjeVByb3RlY3Rpb25z
KCkKK3sKKyAgICBpZiAocGFnZSgpICYmIHBhZ2UoKS0+bmVlZHNJbkFwcEJyb3dzZXJQcml2YWN5
UXVpcmtzKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGJvb2wgdHJlZUhhc05vbkFw
cEJvdW5kRnJhbWUgPSBtX2lzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4gJiYgbV9pc05hdmln
YXRpbmdUb0FwcEJvdW5kRG9tYWluID09IE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOjpObzsK
KyAgICBpZiAoIXRyZWVIYXNOb25BcHBCb3VuZEZyYW1lKSB7CisgICAgICAgIGZvciAoV2ViRnJh
bWUqIGZyYW1lID0gdGhpczsgIWZyYW1lLT5pc01haW5GcmFtZSgpOyBmcmFtZSA9IGZyYW1lLT5w
YXJlbnRGcmFtZSgpKSB7CisgICAgICAgICAgICBpZiAoZnJhbWUtPmlzTmF2aWdhdGluZ1RvQXBw
Qm91bmREb21haW4oKSAmJiBmcmFtZS0+aXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbigpID09
IE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOjpObykgeworICAgICAgICAgICAgICAgIHRyZWVI
YXNOb25BcHBCb3VuZEZyYW1lID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gdHJlZUhhc05vbkFwcEJvdW5k
RnJhbWU7Cit9CisKK09wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBXZWJGcmFt
ZTo6aXNUb3BGcmFtZU5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gZnJvbUNvcmVGcmFtZShtX2NvcmVGcmFtZS0+bWFpbkZyYW1lKCkpLT5pc05hdmlnYXRp
bmdUb0FwcEJvdW5kRG9tYWluKCk7Cit9CisKICAgICAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmgKaW5kZXggZGEwMjky
MTE3MjkyMzA2YjIwMTJiNjA4ODA3ZTc1ZDhmYTM0YWRkMi4uNDk4YTY2NWI4ZTJlM2JkNDgzMTdi
NDY5ZTNlYmUxNDkwOGRmNmRhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViRnJhbWUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJGcmFtZS5oCkBAIC0xNzIsNiArMTcyLDEwIEBAIHB1YmxpYzoKICNlbmRpZgogCiAgICAg
V2ViRnJhbWVMb2FkZXJDbGllbnQqIGZyYW1lTG9hZGVyQ2xpZW50KCkgY29uc3Q7CisgICAgYm9v
bCBzaG91bGRFbmFibGVJbkFwcEJyb3dzZXJQcml2YWN5UHJvdGVjdGlvbnMoKTsKKyAgICB2b2lk
IHNldElzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4oT3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBw
Qm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4pIHsgbV9pc05hdmlnYXRp
bmdUb0FwcEJvdW5kRG9tYWluID0gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbjsgfTsKKyAg
ICBPcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBC
b3VuZERvbWFpbigpIGNvbnN0IHsgcmV0dXJuIG1faXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFp
bjsgfQorICAgIE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc1RvcEZyYW1l
TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4oKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBXZWJG
cmFtZSgpOwpAQCAtMTkyLDYgKzE5Niw4IEBAIHByaXZhdGU6CiAjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKICAgICBUcmFuc2FjdGlvbklEIG1fZmlyc3RMYXllclRyZWVUcmFuc2FjdGlvbklEQWZ0
ZXJEaWRDb21taXRMb2FkOwogI2VuZGlmCisgICAgT3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91
bmREb21haW4+IG1faXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbjsKKwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuY3BwCmluZGV4IDc3OTY2OGJhMzE2YTNmOWNhYzAyOWU5NGRkMjlkZWRhNTQ5MWYzMzguLjQ4
ODAwNmY3YzMxOGE5ZTNjY2NjOWI3ODQ2OTVlM2MyYmY2OGI5YzkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0xNTM0LDcgKzE1MzQsNyBAQCB2
b2lkIFdlYlBhZ2U6OnBsYXRmb3JtRGlkUmVjZWl2ZUxvYWRQYXJhbWV0ZXJzKGNvbnN0IExvYWRQ
YXJhbWV0ZXJzJiBsb2FkUGFyYW1ldAogCiB2b2lkIFdlYlBhZ2U6OmxvYWRSZXF1ZXN0KExvYWRQ
YXJhbWV0ZXJzJiYgbG9hZFBhcmFtZXRlcnMpCiB7Ci0gICAgc2V0SXNOYXZpZ2F0aW5nVG9BcHBC
b3VuZERvbWFpbihsb2FkUGFyYW1ldGVycy5pc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKTsK
KyAgICBzZXRJc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKGxvYWRQYXJhbWV0ZXJzLmlzTmF2
aWdhdGluZ1RvQXBwQm91bmREb21haW4sICZtX21haW5GcmFtZS5nZXQoKSk7CiAKICAgICBTZW5k
U3RvcFJlc3BvbnNpdmVuZXNzVGltZXIgc3RvcHBlcjsKIApAQCAtMTU3Miw3ICsxNTcyLDcgQEAg
Tk9fUkVUVVJOIHZvaWQgV2ViUGFnZTo6bG9hZFJlcXVlc3RXYWl0aW5nRm9yUHJvY2Vzc0xhdW5j
aChMb2FkUGFyYW1ldGVycyYmLCBVUkwKIAogdm9pZCBXZWJQYWdlOjpsb2FkRGF0YUltcGwodWlu
dDY0X3QgbmF2aWdhdGlvbklELCBib29sIHNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwgT3B0
aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiB3ZWJzaXRlUG9saWNpZXMsIFJlZjxTaGFyZWRC
dWZmZXI+JiYgc2hhcmVkQnVmZmVyLCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBTdHJp
bmcmIGVuY29kaW5nTmFtZSwgY29uc3QgVVJMJiBiYXNlVVJMLCBjb25zdCBVUkwmIHVucmVhY2hh
YmxlVVJMLCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEsIE9wdGlvbmFsPE5hdmlnYXRpbmdUb0Fw
cEJvdW5kRG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCBTaG91bGRPcGVuRXh0
ZXJuYWxVUkxzUG9saWN5IHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kpCiB7Ci0gICAgc2V0
SXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbihpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWlu
KTsKKyAgICBzZXRJc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKGlzTmF2aWdhdGluZ1RvQXBw
Qm91bmREb21haW4sICZtX21haW5GcmFtZS5nZXQoKSk7CiAKICAgICBTZW5kU3RvcFJlc3BvbnNp
dmVuZXNzVGltZXIgc3RvcHBlcjsKIApAQCAtMzI4NCwxMSArMzI4NCwxMSBAQCB2b2lkIFdlYlBh
Z2U6OnNldExheWVySG9zdGluZ01vZGUoTGF5ZXJIb3N0aW5nTW9kZSBsYXllckhvc3RpbmdNb2Rl
KQogCiB2b2lkIFdlYlBhZ2U6OmRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbihGcmFtZUlkZW50aWZp
ZXIgZnJhbWVJRCwgdWludDY0X3QgbGlzdGVuZXJJRCwgUG9saWN5RGVjaXNpb24mJiBwb2xpY3lE
ZWNpc2lvbikKIHsKLSAgICBzZXRJc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKHBvbGljeURl
Y2lzaW9uLmlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4pOwotCiAgICAgV2ViRnJhbWUqIGZy
YW1lID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViRnJhbWUoZnJhbWVJRCk7CiAgICAgaWYg
KCFmcmFtZSkKICAgICAgICAgcmV0dXJuOworCisgICAgc2V0SXNOYXZpZ2F0aW5nVG9BcHBCb3Vu
ZERvbWFpbihwb2xpY3lEZWNpc2lvbi5pc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCBmcmFt
ZSk7CiAgICAgZnJhbWUtPmRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbihsaXN0ZW5lcklELCBXVEZN
b3ZlKHBvbGljeURlY2lzaW9uKSk7CiB9CiAKQEAgLTM0NTcsNyArMzQ1Nyw3IEBAIHZvaWQgV2Vi
UGFnZTo6cnVuSmF2YVNjcmlwdChXZWJGcmFtZSogZnJhbWUsIFJ1bkphdmFTY3JpcHRQYXJhbWV0
ZXJzJiYgcGFyYW1ldGVyCiAKICAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpT
Y3JpcHRWYWx1ZUNhbGxiYWNrKGRhdGFSZWZlcmVuY2UsIGRldGFpbHMsIGNhbGxiYWNrSUQpKTsK
ICAgICB9OwotICAgIGlmIChzaG91bGRFbmFibGVJbkFwcEJyb3dzZXJQcml2YWN5UHJvdGVjdGlv
bnMoKSkgeworICAgIGlmIChmcmFtZS0+c2hvdWxkRW5hYmxlSW5BcHBCcm93c2VyUHJpdmFjeVBy
b3RlY3Rpb25zKCkpIHsKICAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTY3Jp
cHRWYWx1ZUNhbGxiYWNrKHsgfSwgRXhjZXB0aW9uRGV0YWlscyB7ICJVbmFibGUgdG8gZXhlY3V0
ZSBKYXZhU2NyaXB0IGluIGEgZnJhbWUgdGhhdCBpcyBub3QgaW4gYW4gYXBwLWJvdW5kIGRvbWFp
biJfcywgMCwgMCwgRXhjZXB0aW9uRGV0YWlsczo6VHlwZTo6QXBwQm91bmREb21haW4gfSwgY2Fs
bGJhY2tJRCkpOwogICAgICAgICBpZiAoYXV0byogZG9jdW1lbnQgPSBtX3BhZ2UtPm1haW5GcmFt
ZSgpLmRvY3VtZW50KCkpCiAgICAgICAgICAgICBkb2N1bWVudC0+YWRkQ29uc29sZU1lc3NhZ2Uo
TWVzc2FnZVNvdXJjZTo6U2VjdXJpdHksIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgIklnbm9yaW5n
IHVzZXIgc2NyaXB0IGluamVjdGlvbiBmb3Igbm9uLWFwcCBib3VuZCBkb21haW4uIik7CkBAIC03
MTYyLDkgKzcxNjIsOSBAQCB2b2lkIFdlYlBhZ2U6OmFuaW1hdGlvbkRpZEZpbmlzaEZvckVsZW1l
bnQoY29uc3QgV2ViQ29yZTo6RWxlbWVudCYpCiAKICNlbmRpZgogCi12b2lkIFdlYlBhZ2U6OnNl
dElzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4oT3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91
bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4pCit2b2lkIFdlYlBhZ2U6OnNl
dElzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4oT3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91
bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sIFdlYkZyYW1lKiBmcmFtZSkK
IHsKLSAgICBtX2lzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4gPSBpc05hdmlnYXRpbmdUb0Fw
cEJvdW5kRG9tYWluOworICAgIGZyYW1lLT5zZXRJc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWlu
KGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4pOwogICAgIAogICAgIG1fbmF2aWdhdGlvbkhh
c09jY3VyZWQgPSB0cnVlOwogfQpAQCAtNzE3NSwxNCArNzE3NSw2IEBAIHZvaWQgV2ViUGFnZTo6
bm90aWZ5UGFnZU9mQXBwQm91bmRCZWhhdmlvcigpCiAgICAgICAgIHNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2VQcm94eTo6U2V0SGFzRXhlY3V0ZWRBcHBCb3VuZEJlaGF2aW9yQmVmb3JlTmF2aWdhdGlv
bigpKTsKIH0KIAotYm9vbCBXZWJQYWdlOjpzaG91bGRFbmFibGVJbkFwcEJyb3dzZXJQcml2YWN5
UHJvdGVjdGlvbnMoKQotewotICAgIGlmIChtX25lZWRzSW5BcHBCcm93c2VyUHJpdmFjeVF1aXJr
cykKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIGlzTmF2aWdhdGluZ1RvQXBw
Qm91bmREb21haW4oKSAmJiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKCkgPT0gTmF2aWdh
dGluZ1RvQXBwQm91bmREb21haW46Ok5vOwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAog
I3VuZGVmIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuaAppbmRleCBmOTRhY2FhZjE4NTUzODdmNWVjMDg4YmYzZjM3NmJiMWVh
MWNlYWVkLi45MjA0MTg2MmUzYzIzMGY5ODRlNTBjYjI2OTM2ZjA5ZTVlMWY2ZjM2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC0xMzI2LDEwICsxMzI2
LDkgQEAgcHVibGljOgogICAgIHZvaWQgZ2V0QWxsRnJhbWVzKENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoRnJhbWVUcmVlTm9kZURhdGEmJik+JiYpOwogCiAgICAgdm9pZCBub3RpZnlQYWdlT2ZBcHBC
b3VuZEJlaGF2aW9yKCk7Ci0gICAgYm9vbCBzaG91bGRFbmFibGVJbkFwcEJyb3dzZXJQcml2YWN5
UHJvdGVjdGlvbnMoKTsKLSAgICB2b2lkIHNldElzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4o
T3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+KTsKLSAgICBPcHRpb25hbDxOYXZp
Z2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbigpIGNv
bnN0IHsgcmV0dXJuIG1faXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbjsgfQotICAgIAorICAg
IHZvaWQgc2V0SXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbihPcHRpb25hbDxOYXZpZ2F0aW5n
VG9BcHBCb3VuZERvbWFpbj4sIFdlYkZyYW1lKik7CisgICAgYm9vbCBuZWVkc0luQXBwQnJvd3Nl
clByaXZhY3lRdWlya3MoKSB7IHJldHVybiBtX25lZWRzSW5BcHBCcm93c2VyUHJpdmFjeVF1aXJr
czsgfQorCiAgICAgYm9vbCBzaG91bGRVc2VSZW1vdGVSZW5kZXJpbmdGb3IoV2ViQ29yZTo6UmVu
ZGVyaW5nUHVycG9zZSk7CiAKICNpZiBFTkFCTEUoTUVESUFfVVNBR0UpCkBAIC0yMTMwLDcgKzIx
MjksNiBAQCBwcml2YXRlOgogICAgIFN0cmluZyBtX3RoZW1lTmFtZTsKICNlbmRpZgogICAgIAot
ICAgIE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBtX2lzTmF2aWdhdGluZ1Rv
QXBwQm91bmREb21haW47CiAgICAgYm9vbCBtX2xpbWl0c05hdmlnYXRpb25zVG9BcHBCb3VuZERv
bWFpbnMgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9uYXZpZ2F0aW9uSGFzT2NjdXJlZCB7IGZhbHNl
IH07CiB9OwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmlu
ZGV4IDcwNjBmYzZkMGVhZGVmZWYyNzdmNTViYmZiZWYxNzQzZTgyZmY3YjcuLmU5YjgyMTlhYzE3
MzA1MWY2MjBjMWUxNGNlZjcxNDdlMTQzMTVkODMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxv
ZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAyMC0wNi0zMCAgS2F0
ZSBDaGVuZXkgIDxrYXRoZXJpbmVfY2hlbmV5QGFwcGxlLmNvbT4KKworICAgICAgICBXS1VzZXJT
Y3JpcHRzIGluamVjdGluZyBpbnRvIGFsbCBmcmFtZXMgc2VlbSB0byB2aW9sYXRlIGFwcC1ib3Vu
ZCBkb21haW5zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMTM4MTYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzY0ODcyMjk2PgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIEFQSSB0ZXN0IGNvdmVy
YWdlLiBTZXRzIHVwIGEgdHJlZSBsaWtlIHNvOiBbYXBwLWJvdW5kIGRvbWFpbiwKKyAgICAgICAg
bm9uLWFwcC1ib3VuZCBkb21haW4sIGFwcC1ib3VuZCBkb21haW5dLiBTY3JpcHQgaW5qZWN0aW9u
IHNob3VsZCBvbmx5CisgICAgICAgIGJlIHN1Y2Nlc3NmdWwgaW4gdGhlIHRvcCBmcmFtZS4gU2lu
Y2UgbWVzc2FnZSBoYW5kbGVycyBhcmUgZGlzYWJsZWQgZm9yIG5vbi0KKyAgICAgICAgYXBwLWJv
dW5kIGRvbWFpbnMsIHRoaXMgdGVzdCBpbmplY3RzIHNjcmlwdCB3aGljaCBsb2FkcyBhbiBpbWFn
ZSB1c2luZyBhCisgICAgICAgIGN1c3RvbSB1cmwgc2NoZW1lLiBJZiB0aGUgbG9hZCBzdWNjZWVk
cywgd2UgaW5jcmVtZW50IGEgY291bnRlciwgYW5kCisgICAgICAgIGV4cGVjdCBvbmx5IG9uZSBz
dWNjZXNzZnVsIHNjcmlwdCBsb2FkICh0aGUgbWFpbiBmcmFtZSkuCisKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luQXBwQnJvd3NlclByaXZhY3kubW06CisgICAg
ICAgICgtW0luQXBwQnJvd3NlclNjaGVtZUhhbmRsZXIgd2ViVmlldzpzdGFydFVSTFNjaGVtZVRh
c2s6XSk6CisKIDIwMjAtMDYtMzAgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgog
CiAgICAgICAgIEFwcC1ib3VuZCBKYXZhU2NyaXB0IGFuZCBOYXZpZ2F0aW9uIGZhaWx1cmVzIHNo
b3VsZCBoYXZlIHNwZWNpZmljIGVycm9yIGNvZGVzLgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbkFwcEJyb3dzZXJQcml2YWN5Lm1tIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbkFwcEJyb3dzZXJQcml2YWN5Lm1tCmlu
ZGV4IDQ0YzNiMzZiNTNiYzI2YWMwZTU5ZTUzMGRhYWI3MTAyZDJmMDFhYjEuLjVjMGMxZWJhZDRh
ODQyYmNkMjA0YjM4NzExMGIwNTdkMDY5NjRiNzUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFjeS5tbQorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luQXBwQnJvd3NlclByaXZhY3kubW0K
QEAgLTM0LDYgKzM0LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvUnVudGltZUFwcGxpY2F0aW9uQ2hl
Y2tzLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tIVFRQQ29va2llU3RvcmVQcml2YXRlLmg+CiAjaW1w
b3J0IDxXZWJLaXQvV0tQcmVmZXJlbmNlc1ByaXZhdGUuaD4KKyNpbXBvcnQgPFdlYktpdC9XS1VS
TFNjaGVtZVRhc2tQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tVc2VyQ29udGVudENvbnRy
b2xsZXJQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0
ZS5oPgogI2ltcG9ydCA8V2ViS2l0L19XS1VzZXJDb250ZW50V29ybGQuaD4KQEAgLTgzLDYgKzg0
LDggQEAgLSAoTlNFcnJvciAqKXdhaXRGb3JEaWRGYWlsUHJvdmlzaW9uYWxOYXZpZ2F0aW9uRXJy
b3IKIEBlbmQKIAogc3RhdGljIE5TU3RyaW5nICogY29uc3QgdXNlclNjcmlwdFNvdXJjZSA9IEAi
d2luZG93LndrVXNlclNjcmlwdEluamVjdGVkID0gdHJ1ZSI7CitzdGF0aWMgYm9vbCBtYWluRnJh
bWVSZWNlaXZlZFNjcmlwdFNvdXJjZSA9IGZhbHNlOworc3RhdGljIGJvb2wgc3ViRnJhbWVSZWNl
aXZlZFNjcmlwdFNvdXJjZSA9IGZhbHNlOwogCiBAaW50ZXJmYWNlIEluQXBwQnJvd3NlclNjaGVt
ZUhhbmRsZXIgOiBOU09iamVjdCA8V0tVUkxTY2hlbWVIYW5kbGVyPgogQGVuZApAQCAtOTMsNyAr
OTYsNyBAQCAtICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgc3RhcnRVUkxTY2hl
bWVUYXNrOihpZCA8V0tVUkxTY2hlbWVUYXNrPil0YQogewogICAgIE5TU3RyaW5nICpyZXNwb25z
ZSA9IG5pbDsKICAgICBpZiAoW3Rhc2sucmVxdWVzdC5VUkwucGF0aCBpc0VxdWFsVG9TdHJpbmc6
QCIvaW4tYXBwLWJyb3dzZXItcHJpdmFjeS10ZXN0LXVzZXItc2NyaXB0Il0pCi0gICAgICAgIHJl
c3BvbnNlID0gQCI8c2NyaXB0PndpbmRvdy53a1VzZXJTY3JpcHRJbmplY3RlZCA9IGZhbHNlOzwv
c2NyaXB0PiI7CisgICAgICAgIHJlc3BvbnNlID0gQCI8Ym9keSBpZCA9ICdib2R5Jz48c2NyaXB0
PndpbmRvdy53a1VzZXJTY3JpcHRJbmplY3RlZCA9IGZhbHNlOzwvc2NyaXB0PiI7CiAgICAgZWxz
ZSBpZiAoW3Rhc2sucmVxdWVzdC5VUkwucGF0aCBpc0VxdWFsVG9TdHJpbmc6QCIvaW4tYXBwLWJy
b3dzZXItcHJpdmFjeS10ZXN0LXVzZXItYWdlbnQtc2NyaXB0Il0pCiAgICAgICAgIHJlc3BvbnNl
ID0gQCI8c2NyaXB0PiB3aW5kb3cud2tVc2VyU2NyaXB0SW5qZWN0ZWQgPSB0cnVlOyA8L3Njcmlw
dD4iOwogICAgIGVsc2UgaWYgKFt0YXNrLnJlcXVlc3QuVVJMLnBhdGggaXNFcXVhbFRvU3RyaW5n
OkAiL2luLWFwcC1icm93c2VyLXByaXZhY3ktdGVzdC11c2VyLXN0eWxlLXNoZWV0cyJdKQpAQCAt
MTA0LDYgKzEwNywxNCBAQCAtICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgc3Rh
cnRVUkxTY2hlbWVUYXNrOihpZCA8V0tVUkxTY2hlbWVUYXNrPil0YQogICAgICAgICByZXNwb25z
ZSA9IEAiPGJvZHkgc3R5bGU9J2JhY2tncm91bmQtY29sb3I6IGdyZWVuOyc+PC9ib2R5PjxzY3Jp
cHQ+aWYgKHdpbmRvdy53ZWJraXQubWVzc2FnZUhhbmRsZXJzKVxud2luZG93LndlYmtpdC5tZXNz
YWdlSGFuZGxlcnMudGVzdEhhbmRsZXIucG9zdE1lc3NhZ2UoJ0ZhaWxlZCcpOyBcbmVsc2UgXG4g
ZG9jdW1lbnQuYm9keS5zdHlsZS5iYWNrZ3JvdW5kID0gJ3JlZCc7PC9zY3JpcHQ+IjsKICAgICBl
bHNlIGlmIChbdGFzay5yZXF1ZXN0LlVSTC5wYXRoIGlzRXF1YWxUb1N0cmluZzpAIi9hcHAtYm91
bmQtZG9tYWluLWxvYWQiXSkKICAgICAgICAgcmVzcG9uc2UgPSBAIjxib2R5PjwvYm9keT4iOwor
ICAgIGVsc2UgaWYgKFt0YXNrLnJlcXVlc3QuVVJMLnBhdGggaXNFcXVhbFRvU3RyaW5nOkAiL2lu
LWFwcC1icm93c2VyLXByaXZhY3ktdGVzdC11c2VyLXNjcmlwdC1pZnJhbWUiXSkKKyAgICAgICAg
cmVzcG9uc2UgPSBAIjxib2R5IGlkID0gJ2JvZHknPjwvYm9keT48aWZyYW1lIHNyYz0naW4tYXBw
LWJyb3dzZXI6Ly9hcHBsZS5jb20vaW4tYXBwLWJyb3dzZXItcHJpdmFjeS10ZXN0LXVzZXItc2Ny
aXB0JyBpZD0nbmVzdGVkRnJhbWUnPjwvaWZyYW1lPjwvYm9keT4iOworICAgIGVsc2UgaWYgKFt0
YXNrLnJlcXVlc3QuVVJMLnBhdGggaXNFcXVhbFRvU3RyaW5nOkAiL2luLWFwcC1icm93c2VyLXBy
aXZhY3ktdGVzdC11c2VyLXNjcmlwdC1uZXN0ZWQtaWZyYW1lIl0pCisgICAgICAgIHJlc3BvbnNl
ID0gQCI8Ym9keSBpZCA9ICdib2R5Jz48L2JvZHk+PGlmcmFtZSBzcmM9J2luLWFwcC1icm93c2Vy
Oi8vbm9uQXBwQm91bmREb21haW4vaW4tYXBwLWJyb3dzZXItcHJpdmFjeS10ZXN0LXVzZXItc2Ny
aXB0LWlmcmFtZScgaWQ9J2lmcmFtZSc+PC9pZnJhbWU+PC9ib2R5PiI7CisgICAgZWxzZSBpZiAo
KChpZDxXS1VSTFNjaGVtZVRhc2tQcml2YXRlPil0YXNrKS5fZnJhbWUuaXNNYWluRnJhbWUgJiYg
W3Rhc2sucmVxdWVzdC5VUkwucGF0aCBpc0VxdWFsVG9TdHJpbmc6QCIvc2hvdWxkLWxvYWQtZm9y
LW1haW4tZnJhbWUtb25seSJdKQorICAgICAgICBtYWluRnJhbWVSZWNlaXZlZFNjcmlwdFNvdXJj
ZSA9IHRydWU7CisgICAgZWxzZSBpZiAoW3Rhc2sucmVxdWVzdC5VUkwucGF0aCBpc0VxdWFsVG9T
dHJpbmc6QCIvc2hvdWxkLWxvYWQtZm9yLW1haW4tZnJhbWUtb25seSJdKQorICAgICAgICBzdWJG
cmFtZVJlY2VpdmVkU2NyaXB0U291cmNlID0gdHJ1ZTsKIAogICAgIFt0YXNrIGRpZFJlY2VpdmVS
ZXNwb25zZTpbW1tOU1VSTFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0aFVSTDp0YXNrLnJlcXVlc3Qu
VVJMIE1JTUVUeXBlOkAidGV4dC9odG1sIiBleHBlY3RlZENvbnRlbnRMZW5ndGg6cmVzcG9uc2Uu
bGVuZ3RoIHRleHRFbmNvZGluZ05hbWU6bmlsXSBhdXRvcmVsZWFzZV1dOwogICAgIFt0YXNrIGRp
ZFJlY2VpdmVEYXRhOltyZXNwb25zZSBkYXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNv
ZGluZ11dOwpAQCAtMTA1Nyw2ICsxMDY4LDExNSBAQCBURVNUKEluQXBwQnJvd3NlclByaXZhY3ks
IEluamVjdFNjcmlwdFRoZW5OYXZpZ2F0ZVRvTm9uQXBwQm91bmREb21haW5GYWlscykKICAgICBF
WFBFQ1RfRVEoZXJyb3IuY29kZSwgV0tFcnJvck5hdmlnYXRpb25BcHBCb3VuZERvbWFpbik7CiB9
CiAKK1RFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgSW5qZWN0U2NyaXB0SW5Ob25BcHBCb3VuZFN1
YmZyYW1lQXBwQm91bmRNYWluZnJhbWVGYWlscykKK3sKKyAgICBpc0RvbmUgPSBmYWxzZTsKKyAg
ICBpbml0aWFsaXplSW5BcHBCcm93c2VyUHJpdmFjeVRlc3RTZXR0aW5ncygpOworCisgICAgYXV0
byB1c2VyU2NyaXB0ID0gYWRvcHROUyhbW1dLVXNlclNjcmlwdCBhbGxvY10gaW5pdFdpdGhTb3Vy
Y2U6QCJ2YXIgaW1nID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW1nJyk7IGltZy5zcmMgPSAn
aW4tYXBwLWJyb3dzZXI6Ly8vc2hvdWxkLWxvYWQtZm9yLW1haW4tZnJhbWUtb25seSc7IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCdib2R5JykuYXBwZW5kQ2hpbGQoaW1nKTsiIGluamVjdGlvblRp
bWU6V0tVc2VyU2NyaXB0SW5qZWN0aW9uVGltZUF0RG9jdW1lbnRTdGFydCBmb3JNYWluRnJhbWVP
bmx5Ok5PXSk7CisKKyAgICBXS1dlYlZpZXdDb25maWd1cmF0aW9uICpjb25maWd1cmF0aW9uID0g
W1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gX3Rlc3RfY29uZmlndXJhdGlvbldpdGhUZXN0UGx1Z0lu
Q2xhc3NOYW1lOkAiV2ViUHJvY2Vzc1BsdWdJbldpdGhJbnRlcm5hbHMiIGNvbmZpZ3VyZUpTQ0Zv
clRlc3Rpbmc6WUVTXTsKKyAgICBhdXRvIHNjaGVtZUhhbmRsZXIgPSBhZG9wdE5TKFtbSW5BcHBC
cm93c2VyU2NoZW1lSGFuZGxlciBhbGxvY10gaW5pdF0pOworICAgIFtjb25maWd1cmF0aW9uIHNl
dFVSTFNjaGVtZUhhbmRsZXI6c2NoZW1lSGFuZGxlci5nZXQoKSBmb3JVUkxTY2hlbWU6QCJpbi1h
cHAtYnJvd3NlciJdOworICAgIFtbY29uZmlndXJhdGlvbiBwcmVmZXJlbmNlc10gX3NldE5lZWRz
SW5BcHBCcm93c2VyUHJpdmFjeVF1aXJrczpOT107CisgICAgW2NvbmZpZ3VyYXRpb24gc2V0TGlt
aXRzTmF2aWdhdGlvbnNUb0FwcEJvdW5kRG9tYWluczpZRVNdOworICAgIFtbY29uZmlndXJhdGlv
biB1c2VyQ29udGVudENvbnRyb2xsZXJdIGFkZFVzZXJTY3JpcHQ6dXNlclNjcmlwdC5nZXQoKV07
CisKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5p
dFdpdGhGcmFtZTpDR1JlY3RaZXJvIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbl0pOworICAg
IGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtBcHBCb3VuZERvbWFpbkRlbGVnYXRlIG5ld10pOwor
ICAgIFt3ZWJWaWV3IHNldE5hdmlnYXRpb25EZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CisKKyAg
ICAvLyBMb2FkIGFuIGFwcC1ib3VuZCBkb21haW4gd2l0aCBhbiBpZnJhbWUgdGhhdCBpcyBub3Qg
YXBwLWJvdW5kLgorICAgIE5TVVJMUmVxdWVzdCAqcmVxdWVzdCA9IFtOU1VSTFJlcXVlc3QgcmVx
dWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJpbi1hcHAtYnJvd3NlcjovL2FwcGxl
LmNvbS9pbi1hcHAtYnJvd3Nlci1wcml2YWN5LXRlc3QtdXNlci1zY3JpcHQtbmVzdGVkLWlmcmFt
ZSJdXTsKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpyZXF1ZXN0XTsKKyAgICBbZGVsZWdhdGUg
d2FpdEZvckRpZEZpbmlzaE5hdmlnYXRpb25dOworCisgICAgRVhQRUNUX1RSVUUobWFpbkZyYW1l
UmVjZWl2ZWRTY3JpcHRTb3VyY2UpOworICAgIEVYUEVDVF9GQUxTRShzdWJGcmFtZVJlY2VpdmVk
U2NyaXB0U291cmNlKTsKKyAgICBjbGVhblVwSW5BcHBCcm93c2VyUHJpdmFjeVRlc3RTZXR0aW5n
cygpOworfQorCitzdGF0aWMgTlNNdXRhYmxlU2V0PFdLRnJhbWVJbmZvICo+ICphbGxGcmFtZXM7
CisKK1RFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgSmF2YVNjcmlwdEluTm9uQXBwQm91bmRGcmFt
ZUZhaWxzKQoreworICAgIGFsbEZyYW1lcyA9IFtbTlNNdXRhYmxlU2V0PFdLRnJhbWVJbmZvICo+
IGFsbG9jXSBpbml0XTsKKworICAgIGlzRG9uZSA9IGZhbHNlOworICAgIGluaXRpYWxpemVJbkFw
cEJyb3dzZXJQcml2YWN5VGVzdFNldHRpbmdzKCk7CisKKyAgICBhdXRvIHVzZXJTY3JpcHQgPSBh
ZG9wdE5TKFtbV0tVc2VyU2NyaXB0IGFsbG9jXSBpbml0V2l0aFNvdXJjZTpAInZhciBpbWcgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbWcnKTsgaW1nLnNyYyA9ICdpbi1hcHAtYnJvd3Nlcjov
Ly9zaG91bGQtbG9hZC1mb3ItbWFpbi1mcmFtZS1vbmx5JzsgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ2JvZHknKS5hcHBlbmRDaGlsZChpbWcpOyIgaW5qZWN0aW9uVGltZTpXS1VzZXJTY3JpcHRJ
bmplY3Rpb25UaW1lQXREb2N1bWVudFN0YXJ0IGZvck1haW5GcmFtZU9ubHk6Tk9dKTsKKworICAg
IFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gKmNvbmZpZ3VyYXRpb24gPSBbV0tXZWJWaWV3Q29uZmln
dXJhdGlvbiBfdGVzdF9jb25maWd1cmF0aW9uV2l0aFRlc3RQbHVnSW5DbGFzc05hbWU6QCJXZWJQ
cm9jZXNzUGx1Z0luV2l0aEludGVybmFscyIgY29uZmlndXJlSlNDRm9yVGVzdGluZzpZRVNdOwor
ICAgIGF1dG8gc2NoZW1lSGFuZGxlciA9IGFkb3B0TlMoW1tJbkFwcEJyb3dzZXJTY2hlbWVIYW5k
bGVyIGFsbG9jXSBpbml0XSk7CisgICAgW2NvbmZpZ3VyYXRpb24gc2V0VVJMU2NoZW1lSGFuZGxl
cjpzY2hlbWVIYW5kbGVyLmdldCgpIGZvclVSTFNjaGVtZTpAImluLWFwcC1icm93c2VyIl07Cisg
ICAgW1tjb25maWd1cmF0aW9uIHByZWZlcmVuY2VzXSBfc2V0TmVlZHNJbkFwcEJyb3dzZXJQcml2
YWN5UXVpcmtzOk5PXTsKKyAgICBbY29uZmlndXJhdGlvbiBzZXRMaW1pdHNOYXZpZ2F0aW9uc1Rv
QXBwQm91bmREb21haW5zOllFU107CisgICAgW1tjb25maWd1cmF0aW9uIHVzZXJDb250ZW50Q29u
dHJvbGxlcl0gYWRkVXNlclNjcmlwdDp1c2VyU2NyaXB0LmdldCgpXTsKKworICAgIGF1dG8gd2Vi
VmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVj
dFplcm8gY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXSk7CisgICAgYXV0byBuYXZpZ2F0aW9u
RGVsZWdhdGUgPSBhZG9wdE5TKFtbVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZSBhbGxvY10gaW5pdF0p
OworCisgICAgX19ibG9jayBib29sIGRpZEZpbmlzaE5hdmlnYXRpb24gPSBmYWxzZTsKKyAgICBb
bmF2aWdhdGlvbkRlbGVnYXRlIHNldERpZEZpbmlzaE5hdmlnYXRpb246XihXS1dlYlZpZXcgKiwg
V0tOYXZpZ2F0aW9uICopIHsKKyAgICAgICAgZGlkRmluaXNoTmF2aWdhdGlvbiA9IHRydWU7Cisg
ICAgfV07CisKKyAgICBbbmF2aWdhdGlvbkRlbGVnYXRlIHNldERlY2lkZVBvbGljeUZvck5hdmln
YXRpb25BY3Rpb246WyZdIChXS05hdmlnYXRpb25BY3Rpb24gKmFjdGlvbiwgdm9pZCAoXmRlY2lz
aW9uSGFuZGxlcikoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5KSkgeworICAgICAgICBpZiAoYWN0
aW9uLnRhcmdldEZyYW1lKQorICAgICAgICAgICAgW2FsbEZyYW1lcyBhZGRPYmplY3Q6YWN0aW9u
LnRhcmdldEZyYW1lXTsKKworICAgICAgICBkZWNpc2lvbkhhbmRsZXIoV0tOYXZpZ2F0aW9uQWN0
aW9uUG9saWN5QWxsb3cpOworICAgIH1dOworCisgICAgW3dlYlZpZXcgc2V0TmF2aWdhdGlvbkRl
bGVnYXRlOm5hdmlnYXRpb25EZWxlZ2F0ZS5nZXQoKV07CisgICAgCisgICAgLy8gTG9hZCBhbiBh
cHAtYm91bmQgZG9tYWluIHdpdGggYW4gaWZyYW1lIHRoYXQgaXMgbm90IGFwcC1ib3VuZC4KKyAg
ICBOU1VSTFJlcXVlc3QgKnJlcXVlc3QgPSBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltO
U1VSTCBVUkxXaXRoU3RyaW5nOkAiaW4tYXBwLWJyb3dzZXI6Ly9hcHBsZS5jb20vaW4tYXBwLWJy
b3dzZXItcHJpdmFjeS10ZXN0LXVzZXItc2NyaXB0LW5lc3RlZC1pZnJhbWUiXV07CisgICAgW3dl
YlZpZXcgbG9hZFJlcXVlc3Q6cmVxdWVzdF07CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpy
dW4oJmRpZEZpbmlzaE5hdmlnYXRpb24pOworCisgICAgRVhQRUNUX0VRKGFsbEZyYW1lcy5jb3Vu
dCwgM3UpOworCisgICAgc3RhdGljIHNpemVfdCBmaW5pc2hlZEZyYW1lcyA9IDA7CisgICAgc3Rh
dGljIGJvb2wgaXNEb25lID0gZmFsc2U7CisKKyAgICBmb3IgKFdLRnJhbWVJbmZvICpmcmFtZSBp
biBhbGxGcmFtZXMpIHsKKyAgICAgICAgYm9vbCBpc01haW5GcmFtZSA9IGZyYW1lLmlzTWFpbkZy
YW1lOworICAgICAgICBbd2ViVmlldyBjYWxsQXN5bmNKYXZhU2NyaXB0OkAicmV0dXJuIGxvY2F0
aW9uLmhyZWY7IiBhcmd1bWVudHM6bmlsIGluRnJhbWU6ZnJhbWUgaW5Db250ZW50V29ybGQ6V0tD
b250ZW50V29ybGQuZGVmYXVsdENsaWVudFdvcmxkIGNvbXBsZXRpb25IYW5kbGVyOltpc01haW5G
cmFtZV0gKGlkIHJlc3VsdCwgTlNFcnJvciAqZXJyb3IpIHsKKyAgICAgICAgICAgIGlmIChpc01h
aW5GcmFtZSkgeworICAgICAgICAgICAgICAgIEVYUEVDVF9UUlVFKFtyZXN1bHQgaXNLaW5kT2ZD
bGFzczpbTlNTdHJpbmcgY2xhc3NdXSk7CisgICAgICAgICAgICAgICAgRVhQRUNUX0ZBTFNFKCEh
ZXJyb3IpOworICAgICAgICAgICAgICAgIEVYUEVDVF9UUlVFKFtyZXN1bHQgaXNFcXVhbFRvU3Ry
aW5nOkAiaW4tYXBwLWJyb3dzZXI6Ly9hcHBsZS5jb20vaW4tYXBwLWJyb3dzZXItcHJpdmFjeS10
ZXN0LXVzZXItc2NyaXB0LW5lc3RlZC1pZnJhbWUiXSk7CisgICAgICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgICAgIEVYUEVDVF9UUlVFKCEhZXJyb3IpOworICAgICAgICAgICAgICAgIEVY
UEVDVF9FUShlcnJvci5jb2RlLCBXS0Vycm9ySmF2YVNjcmlwdEFwcEJvdW5kRG9tYWluKTsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKCsrZmluaXNoZWRGcmFtZXMgPT0gYWxsRnJh
bWVzLmNvdW50ICogMikKKyAgICAgICAgICAgICAgICBpc0RvbmUgPSB0cnVlOworICAgICAgICB9
XTsKKworCisgICAgICAgIFt3ZWJWaWV3IGV2YWx1YXRlSmF2YVNjcmlwdDpAImxvY2F0aW9uLmhy
ZWY7IiBpbkZyYW1lOmZyYW1lIGluQ29udGVudFdvcmxkOldLQ29udGVudFdvcmxkLmRlZmF1bHRD
bGllbnRXb3JsZCBjb21wbGV0aW9uSGFuZGxlcjpbaXNNYWluRnJhbWVdIChpZCByZXN1bHQsIE5T
RXJyb3IgKmVycm9yKSB7CisgICAgICAgICAgICBpZiAoaXNNYWluRnJhbWUpIHsKKyAgICAgICAg
ICAgICAgICBFWFBFQ1RfVFJVRShbcmVzdWx0IGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNz
XV0pOworICAgICAgICAgICAgICAgIEVYUEVDVF9GQUxTRSghIWVycm9yKTsKKyAgICAgICAgICAg
ICAgICBFWFBFQ1RfVFJVRShbcmVzdWx0IGlzRXF1YWxUb1N0cmluZzpAImluLWFwcC1icm93c2Vy
Oi8vYXBwbGUuY29tL2luLWFwcC1icm93c2VyLXByaXZhY3ktdGVzdC11c2VyLXNjcmlwdC1uZXN0
ZWQtaWZyYW1lIl0pOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBFWFBF
Q1RfVFJVRSghIWVycm9yKTsKKyAgICAgICAgICAgICAgICBFWFBFQ1RfRVEoZXJyb3IuY29kZSwg
V0tFcnJvckphdmFTY3JpcHRBcHBCb3VuZERvbWFpbik7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIGlmICgrK2ZpbmlzaGVkRnJhbWVzID09IGFsbEZyYW1lcy5jb3VudCAqIDIpCisgICAg
ICAgICAgICAgICAgaXNEb25lID0gdHJ1ZTsKKyAgICAgICAgfV07CisgICAgfQorICAgIAorICAg
IFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKK30KKwogVEVTVChJbkFwcEJyb3dz
ZXJQcml2YWN5LCBXZWJWaWV3Q2F0ZWdvcnkpCiB7CiAgICAgaW5pdGlhbGl6ZUluQXBwQnJvd3Nl
clByaXZhY3lUZXN0U2V0dGluZ3MoKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>