<?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>180184</bug_id>
          
          <creation_ts>2017-11-29 22:42:32 -0800</creation_ts>
          <short_desc>[Attachment Support] Implement SPI for clients to update a given attachment&apos;s data</short_desc>
          <delta_ts>2017-12-16 13:23:31 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>HTML Editing</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>commit-queue</cc>
    
    <cc>mitz</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>1376216</commentid>
    <comment_count>0</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-11-29 22:42:32 -0800</bug_when>
    <thetext>&lt;rdar://problem/35355731&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1376224</commentid>
    <comment_count>1</comment_count>
      <attachid>327955</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-11-29 23:09:22 -0800</bug_when>
    <thetext>Created attachment 327955
First pass</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1376331</commentid>
    <comment_count>2</comment_count>
      <attachid>327978</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-11-30 08:13:50 -0800</bug_when>
    <thetext>Created attachment 327978
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1377049</commentid>
    <comment_count>3</comment_count>
      <attachid>327978</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2017-12-01 14:02:43 -0800</bug_when>
    <thetext>Comment on attachment 327978
Patch

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

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/WKAttachmentTests.mm:275
&gt; +        resultError = retainPtr(error);

Why even the retainPtr()?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1377053</commentid>
    <comment_count>4</comment_count>
      <attachid>327978</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-12-01 14:06:37 -0800</bug_when>
    <thetext>Comment on attachment 327978
Patch

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

&gt;&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/WKAttachmentTests.mm:275
&gt;&gt; +        resultError = retainPtr(error);
&gt; 
&gt; Why even the retainPtr()?

True, explicit retainPtr()&apos;s unneeded here. Removed!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1377088</commentid>
    <comment_count>5</comment_count>
      <attachid>328165</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-12-01 15:04:42 -0800</bug_when>
    <thetext>Created attachment 328165
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1377102</commentid>
    <comment_count>6</comment_count>
      <attachid>328165</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-12-01 15:36:45 -0800</bug_when>
    <thetext>Comment on attachment 328165
Patch for landing

Clearing flags on attachment: 328165

Committed r225422: &lt;https://trac.webkit.org/changeset/225422&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>327955</attachid>
            <date>2017-11-29 23:09:22 -0800</date>
            <delta_ts>2017-11-30 08:13:48 -0800</delta_ts>
            <desc>First pass</desc>
            <filename>bug-180184-20171129230921.patch</filename>
            <type>text/plain</type>
            <size>26499</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI1MzE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWI5NGY5OTE3NWZkZjg0
YmU2Y2Y5Mzk2ZGQ1NmI4YzNkZDk1ZmI0Zi4uZWRmYjZiYzI0MjVlNmE3YjU3ODc4NzRkOTFkN2Vi
OTA3YjUzYjFiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDE3LTExLTI5ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtBdHRhY2htZW50
IFN1cHBvcnRdIEltcGxlbWVudCBTUEkgZm9yIGNsaWVudHMgdG8gdXBkYXRlIGEgZ2l2ZW4gYXR0
YWNobWVudCdzIGRhdGEKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE4MDE4NAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzUzNTU3MzE+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIG5hdGl2ZSBBUEkg
c3VwcG9ydCBmb3IgTWFpbCB0byB1cGRhdGUgdGhlIGRhdGEgKGFuZCBvcHRpb25hbGx5LCB0aGUg
bmFtZSBhbmQgdHlwZSkgb2YgYSBnaXZlbiBhdHRhY2htZW50CisgICAgICAgIGVsZW1lbnQuIFNl
ZSBwZXItbWV0aG9kIGNvbW1lbnRzIGJlbG93IGZvciBtb3JlIGRldGFpbC4KKworICAgICAgICBU
ZXN0OiBXS0F0dGFjaG1lbnRUZXN0cy5DaGFuZ2VBdHRhY2htZW50RGF0YUFuZEZpbGVJbmZvcm1h
dGlvbgorICAgICAgICAgICAgICBXS0F0dGFjaG1lbnRUZXN0cy5DaGFuZ2VBdHRhY2htZW50RGF0
YVVwZGF0ZXNXaXRoSW5QbGFjZURpc3BsYXkKKworICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6aW5zZXJ0QXR0YWNobWVudCk6CisgICAgICAg
ICogaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TEF0dGFjaG1lbnRFbGVtZW50OjpzZXRGaWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxBdHRh
Y2htZW50RWxlbWVudDo6aW52YWxpZGF0ZVNoYWRvd1Jvb3RDaGlsZHJlbklmTmVjZXNzYXJ5KToK
KworICAgICAgICBQdWxsIG91dCBsb2dpYyB0byBoaWRlIGFuZCByZXNldCBzaGFkb3cgRE9NIHN0
YXRlIGludG8gYSBzZXBhcmF0ZSBoZWxwZXIsIGFuZCBhZGRpdGlvbmFsbHkgaGlkZSBib3RoIHRo
ZSBpbWFnZQorICAgICAgICBhbmQgdmlkZW8gY2hpbGQgZWxlbWVudHMgaWYgdGhleSBleGlzdC4g
VGhpcyBwcmV2ZW50cyB1cyBmcm9tIGdldHRpbmcgaW50byBhIHN0YXRlIHdoZXJlIGJvdGggaW1h
Z2UgYW5kIHZpZGVvCisgICAgICAgIGVsZW1lbnRzIG1heSBhcHBlYXIgc2lkZS1ieS1zaWRlIHdo
ZW4gY2hhbmdpbmcgZGF0YSBmcm9tIGFuIGltYWdlIHRvIGEgdmlkZW8gb3IgdmljZSB2ZXJzYS4K
KworICAgICAgICAoV2ViQ29yZTo6SFRNTEF0dGFjaG1lbnRFbGVtZW50Ojp1cGRhdGVGaWxlV2l0
aERhdGEpOgorCisgICAgICAgIEFkZCBhIG5ldyBoZWxwZXIgdG8gdXBkYXRlIHRoZSBiYWNraW5n
IEZpbGUgb2YgYW4gYXR0YWNobWVudCBlbGVtZW50IGZyb20gZGF0YSwgb3B0aW9uYWxseSB1cGRh
dGluZyB0aGUgZmlsZW5hbWUKKyAgICAgICAgYW5kIGNvbnRlbnQgdHlwZSBhcyB3ZWxsLgorCisg
ICAgICAgIChXZWJDb3JlOjpIVE1MQXR0YWNobWVudEVsZW1lbnQ6OnBvcHVsYXRlU2hhZG93Um9v
dElmTmVjZXNzYXJ5KToKKyAgICAgICAgKiBodG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5oOgor
CiAyMDE3LTExLTI5ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAg
U2VydmljZVdvcmtlciBXZWJQcm9jZXNzIHNvbWV0aW1lcyBjcmFzaGVzIGluIEpTVk1DbGllbnRE
YXRhOjp+SlNWTUNsaWVudERhdGEoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBhOTM1MTk0ZGJjNmRhZTM4OGY1MTk0
YjlmMTYyYmY0YzdmZmY3OTM5Li5iNjI5YzlhMTdiMDYxYjgyZGE4ZDFkOGRkYWQ2OWYyYzE2ZjNi
MjYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDE3LTExLTI5ICBXZW5zb24gSHNpZWgg
IDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtBdHRhY2htZW50IFN1cHBvcnRd
IEltcGxlbWVudCBTUEkgZm9yIGNsaWVudHMgdG8gdXBkYXRlIGEgZ2l2ZW4gYXR0YWNobWVudCdz
IGRhdGEKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4
MDE4NAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzUzNTU3MzE+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHBsdW1iaW5nIHRvIHRoZSB3ZWIg
cHJvY2VzcyBmb3Igc2V0dGluZyB0aGUgYXR0YWNobWVudCBkYXRhIChhbmQgb3B0aW9uYWxseSwg
dGhlIGNvbnRlbnQgdHlwZSBhbmQvb3IgZmlsZQorICAgICAgICBuYW1lKSBvZiBhIGdpdmVuIGF0
dGFjaG1lbnQuIFNlZSBXZWJDb3JlIENoYW5nZUxvZyBmb3IgbW9yZSBkZXRhaWwuIENoYW5nZXMg
Y292ZXJlZCBieSBuZXcgQVBJIHRlc3RzLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElB
dHRhY2htZW50LmNwcDoKKyAgICAgICAgKEFQSTo6QXR0YWNobWVudDo6c2V0RGF0YUFuZENvbnRl
bnRUeXBlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0F0dGFjaG1lbnQuaDoKKworICAgICAgICBBZGQg
bnVsbGFiaWxpdHkgYW5ub3RhdGlvbnMgYXJvdW5kIF9XS0F0dGFjaG1lbnQgU1BJIG1ldGhvZHMu
CisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0F0dGFjaG1lbnQubW06CisgICAg
ICAgICgtW19XS0F0dGFjaG1lbnQgc2V0RGF0YTpuZXdDb250ZW50VHlwZTpuZXdGaWxlbmFtZTpj
b21wbGV0aW9uOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldEF0dGFjaG1lbnREYXRhQW5kQ29udGVudFR5
cGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNl
dEF0dGFjaG1lbnREYXRhQW5kQ29udGVudFR5cGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVz
c2FnZXMuaW46CisKIDIwMTctMTEtMjkgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBs
ZS5jb20+CiAKICAgICAgICAgW0F0dGFjaG1lbnQgU3VwcG9ydF0gSW1wbGVtZW50IFNQSSBmb3Ig
Y2xpZW50cyB0byBtYWtlIGFuIGF0dGFjaG1lbnQgZWxlbWVudCBkaXNwbGF5IGluLXBsYWNlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0VkaXRvci5jcHAKaW5kZXggYmNjNmZkYzM2MjM4ZGIzZmU2MTFiMWQyYzEw
MTVkNjNlMjA3MWFlMC4uMTUyZjQ2ZGQzZDNjZDQ2MWM2MWYzMTA3ZWY3ZGM3ZjJkMjc4NjdhYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcApAQCAtMzgwMiw3ICszODAyLDcgQEAgdm9pZCBF
ZGl0b3I6Omluc2VydEF0dGFjaG1lbnQoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBB
dHRhY2htZW50RGlzcGxheU8KIHsKICAgICBpZiAoIWNvbnRlbnRUeXBlKQogICAgICAgICBjb250
ZW50VHlwZSA9IEZpbGU6OmNvbnRlbnRUeXBlRm9yRmlsZShmaWxlbmFtZSk7Ci0gICAgaW5zZXJ0
QXR0YWNobWVudEZyb21GaWxlKGlkZW50aWZpZXIsIG9wdGlvbnMsIGZpbGVuYW1lLCAqY29udGVu
dFR5cGUsIEZpbGU6OmNyZWF0ZShCbG9iOjpjcmVhdGUoZGF0YSwgKmNvbnRlbnRUeXBlKSwgZmls
ZW5hbWUpKTsKKyAgICBpbnNlcnRBdHRhY2htZW50RnJvbUZpbGUoaWRlbnRpZmllciwgb3B0aW9u
cywgZmlsZW5hbWUsICpjb250ZW50VHlwZSwgRmlsZTo6Y3JlYXRlKEJsb2I6OmNyZWF0ZShXVEZN
b3ZlKGRhdGEpLCAqY29udGVudFR5cGUpLCBmaWxlbmFtZSkpOwogfQogCiB2b2lkIEVkaXRvcjo6
aW5zZXJ0QXR0YWNobWVudEZyb21GaWxlKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3Qg
QXR0YWNobWVudERpc3BsYXlPcHRpb25zJiBvcHRpb25zLCBjb25zdCBTdHJpbmcmIGZpbGVuYW1l
LCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBSZWY8RmlsZT4mJiBmaWxlKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuY3BwCmluZGV4IDU0ZjAzMjBlZDRl
ZmFjMTEzYjUwYTM5ZjljNDM2ODY1ZGMxMTU5ZjcuLjI3NjkwMjA3M2QyMzhhNmQwNzMzODljMzhk
ODM1N2E1NjFhNzg1MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFj
aG1lbnRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50
RWxlbWVudC5jcHAKQEAgLTQzLDYgKzQzLDcgQEAKICNpbmNsdWRlICJSZW5kZXJCbG9ja0Zsb3cu
aCIKICNpbmNsdWRlICJTaGFkb3dSb290LmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCisj
aW5jbHVkZSA8cGFsL0ZpbGVTaXplRm9ybWF0dGVyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IApAQCAtMTIwLDExICsxMjEsMjAgQEAgdm9pZCBIVE1MQXR0YWNobWVudEVsZW1lbnQ6OnNldEZp
bGUoUmVmUHRyPEZpbGU+JiYgZmlsZSkKICAgICBpZiAoYXV0byogcmVuZGVyQXR0YWNobWVudCA9
IGF0dGFjaG1lbnRSZW5kZXJlcigpKQogICAgICAgICByZW5kZXJBdHRhY2htZW50LT5pbnZhbGlk
YXRlKCk7CiAKLSAgICBpZiAoYXV0byBpbWFnZSA9IGlubmVySW1hZ2UoKSkKKyAgICBpbnZhbGlk
YXRlU2hhZG93Um9vdENoaWxkcmVuSWZOZWNlc3NhcnkoKTsKKyAgICBwb3B1bGF0ZVNoYWRvd1Jv
b3RJZk5lY2Vzc2FyeSgpOworfQorCit2b2lkIEhUTUxBdHRhY2htZW50RWxlbWVudDo6aW52YWxp
ZGF0ZVNoYWRvd1Jvb3RDaGlsZHJlbklmTmVjZXNzYXJ5KCkKK3sKKyAgICBpZiAoYXV0byBpbWFn
ZSA9IGlubmVySW1hZ2UoKSkgewogICAgICAgICBpbWFnZS0+c2V0QXR0cmlidXRlV2l0aG91dFN5
bmNocm9uaXphdGlvbihzcmNBdHRyLCBlbXB0eVN0cmluZygpKTsKLSAgICBpZiAoYXV0byB2aWRl
byA9IGlubmVyVmlkZW8oKSkKKyAgICAgICAgaW1hZ2UtPnNldElubGluZVN0eWxlUHJvcGVydHko
Q1NTUHJvcGVydHlEaXNwbGF5LCBDU1NWYWx1ZU5vbmUsIHRydWUpOworICAgIH0KKyAgICBpZiAo
YXV0byB2aWRlbyA9IGlubmVyVmlkZW8oKSkgewogICAgICAgICB2aWRlby0+c2V0QXR0cmlidXRl
V2l0aG91dFN5bmNocm9uaXphdGlvbihzcmNBdHRyLCBlbXB0eVN0cmluZygpKTsKLSAgICBwb3B1
bGF0ZVNoYWRvd1Jvb3RJZk5lY2Vzc2FyeSgpOworICAgICAgICB2aWRlby0+c2V0SW5saW5lU3R5
bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eURpc3BsYXksIENTU1ZhbHVlTm9uZSwgdHJ1ZSk7CisgICAg
fQogfQogCiBSZW5kZXJBdHRhY2htZW50KiBIVE1MQXR0YWNobWVudEVsZW1lbnQ6OmF0dGFjaG1l
bnRSZW5kZXJlcigpIGNvbnN0CkBAIC0yMDgsNiArMjE4LDE4IEBAIHZvaWQgSFRNTEF0dGFjaG1l
bnRFbGVtZW50Ojp1cGRhdGVEaXNwbGF5TW9kZShBdHRhY2htZW50RGlzcGxheU1vZGUgbW9kZSkK
ICAgICBpbnZhbGlkYXRlU3R5bGVBbmRSZW5kZXJlcnNGb3JTdWJ0cmVlKCk7CiB9CiAKK3ZvaWQg
SFRNTEF0dGFjaG1lbnRFbGVtZW50Ojp1cGRhdGVGaWxlV2l0aERhdGEoUmVmPFNoYXJlZEJ1ZmZl
cj4mJiBkYXRhLCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4mJiBuZXdDb250ZW50VHlwZSwgc3RkOjpv
cHRpb25hbDxTdHJpbmc+JiYgbmV3RmlsZW5hbWUpCit7CisgICAgYXV0byBmaWxlbmFtZSA9IG5l
d0ZpbGVuYW1lID8gKm5ld0ZpbGVuYW1lIDogYXR0YWNobWVudFRpdGxlKCk7CisgICAgYXV0byBj
b250ZW50VHlwZSA9IG5ld0NvbnRlbnRUeXBlID8gKm5ld0NvbnRlbnRUeXBlIDogYXR0YWNobWVu
dFR5cGUoKTsKKyAgICBhdXRvIGZpbGUgPSBGaWxlOjpjcmVhdGUoQmxvYjo6Y3JlYXRlKFdURk1v
dmUoZGF0YSksIGNvbnRlbnRUeXBlKSwgZmlsZW5hbWUpOworCisgICAgc2V0QXR0cmlidXRlV2l0
aG91dFN5bmNocm9uaXphdGlvbih0aXRsZUF0dHIsIGZpbGVuYW1lKTsKKyAgICBzZXRBdHRyaWJ1
dGVXaXRob3V0U3luY2hyb25pemF0aW9uKHN1YnRpdGxlQXR0ciwgZmlsZVNpemVEZXNjcmlwdGlv
bihmaWxlLT5zaXplKCkpKTsKKyAgICBzZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9u
KHR5cGVBdHRyLCBjb250ZW50VHlwZSk7CisgICAgc2V0RmlsZShXVEZNb3ZlKGZpbGUpKTsKK30K
KwogUmVmPEhUTUxJbWFnZUVsZW1lbnQ+IEhUTUxBdHRhY2htZW50RWxlbWVudDo6ZW5zdXJlSW5u
ZXJJbWFnZSgpCiB7CiAgICAgaWYgKGF1dG8gaW1hZ2UgPSBpbm5lckltYWdlKCkpCkBAIC0yNTAs
MTQgKzI3MiwxNyBAQCB2b2lkIEhUTUxBdHRhY2htZW50RWxlbWVudDo6cG9wdWxhdGVTaGFkb3dS
b290SWZOZWNlc3NhcnkoKQogCiAgICAgaWYgKE1JTUVUeXBlUmVnaXN0cnk6OmlzU3VwcG9ydGVk
SW1hZ2VNSU1FVHlwZShtaW1lVHlwZSkgfHwgTUlNRVR5cGVSZWdpc3RyeTo6aXNQREZNSU1FVHlw
ZShtaW1lVHlwZSkpIHsKICAgICAgICAgYXV0byBpbWFnZSA9IGVuc3VyZUlubmVySW1hZ2UoKTsK
LSAgICAgICAgaWYgKGltYWdlLT5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKHNyY0F0
dHIpLmlzRW1wdHkoKSkKKyAgICAgICAgaWYgKGltYWdlLT5hdHRyaWJ1dGVXaXRob3V0U3luY2hy
b25pemF0aW9uKHNyY0F0dHIpLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgaW1hZ2UtPnNldEF0
dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oc3JjQXR0ciwgRE9NVVJMOjpjcmVhdGVPYmpl
Y3RVUkwoZG9jdW1lbnQoKSwgKm1fZmlsZSkpOworICAgICAgICAgICAgaW1hZ2UtPnNldElubGlu
ZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlEaXNwbGF5LCBDU1NWYWx1ZUlubGluZSwgdHJ1ZSk7
CisgICAgICAgIH0KIAogICAgIH0gZWxzZSBpZiAoTUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBwb3J0
ZWRNZWRpYU1JTUVUeXBlKG1pbWVUeXBlKSkgewogICAgICAgICBhdXRvIHZpZGVvID0gZW5zdXJl
SW5uZXJWaWRlbygpOwogICAgICAgICBpZiAodmlkZW8tPmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJv
bml6YXRpb24oc3JjQXR0cikuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICB2aWRlby0+c2V0QXR0
cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihzcmNBdHRyLCBET01VUkw6OmNyZWF0ZU9iamVj
dFVSTChkb2N1bWVudCgpLCAqbV9maWxlKSk7CiAgICAgICAgICAgICB2aWRlby0+c2V0QXR0cmli
dXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihjb250cm9sc0F0dHIsIGVtcHR5U3RyaW5nKCkpOwor
ICAgICAgICAgICAgdmlkZW8tPnNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlEaXNw
bGF5LCBDU1NWYWx1ZUlubGluZSwgdHJ1ZSk7CiAgICAgICAgIH0KICAgICB9CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5oIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuaAppbmRleCA1ZTUzZDY1NjBmZDY3
YTA2ODc2MDE3YTRmMmRhNjg1YTYxY2MxNjQ2Li5jOGYzNWQ1YjU0OGEzN2VhZTkyYmJiZGI4NGE2
N2Y3ZTA0NjJhOWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2ht
ZW50RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVt
ZW50LmgKQEAgLTUxLDYgKzUxLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0VW5pcXVlSWRlbnRp
Zmllcihjb25zdCBTdHJpbmcmKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdXBkYXRlRGlz
cGxheU1vZGUoQXR0YWNobWVudERpc3BsYXlNb2RlKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHVwZGF0ZUZpbGVXaXRoRGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEsIHN0ZDo6b3B0aW9u
YWw8U3RyaW5nPiYmIG5ld0NvbnRlbnRUeXBlID0gc3RkOjpudWxsb3B0LCBzdGQ6Om9wdGlvbmFs
PFN0cmluZz4mJiBuZXdGaWxlbmFtZSA9IHN0ZDo6bnVsbG9wdCk7CiAKICAgICBJbnNlcnRlZElu
dG9BbmNlc3RvclJlc3VsdCBpbnNlcnRlZEludG9BbmNlc3RvcihJbnNlcnRpb25UeXBlLCBDb250
YWluZXJOb2RlJikgZmluYWw7CiAgICAgdm9pZCByZW1vdmVkRnJvbUFuY2VzdG9yKFJlbW92YWxU
eXBlLCBDb250YWluZXJOb2RlJikgZmluYWw7CkBAIC03NSw2ICs3Niw3IEBAIHByaXZhdGU6CiAg
ICAgUmVmUHRyPEhUTUxWaWRlb0VsZW1lbnQ+IGlubmVyVmlkZW8oKSBjb25zdDsKIAogICAgIHZv
aWQgcG9wdWxhdGVTaGFkb3dSb290SWZOZWNlc3NhcnkoKTsKKyAgICB2b2lkIGludmFsaWRhdGVT
aGFkb3dSb290Q2hpbGRyZW5JZk5lY2Vzc2FyeSgpOwogCiAgICAgQXR0YWNobWVudERpc3BsYXlN
b2RlIGRlZmF1bHREaXNwbGF5TW9kZSgpIGNvbnN0CiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuY3BwCmluZGV4IDc3OGJhNjY0ZjA4NjJhMmM0NTA1
N2VhMzc2Y2Q0NjMxMDhhM2Y5OGYuLjg1YThhM2U4YTVmMDY5NjlmMzQyMDMzMjQ0ZTlhMDc3YjUx
OTAwMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2ht
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5j
cHAKQEAgLTY0LDQgKzY0LDE0IEBAIHZvaWQgQXR0YWNobWVudDo6c2V0RGlzcGxheU9wdGlvbnMo
V2ViQ29yZTo6QXR0YWNobWVudERpc3BsYXlPcHRpb25zIG9wdGlvbnMsIEZ1CiAgICAgICAgIGNh
bGxiYWNrKFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvcjo6T3duZXJXYXNJbnZhbGlkYXRlZCk7
CiB9CiAKK3ZvaWQgQXR0YWNobWVudDo6c2V0RGF0YUFuZENvbnRlbnRUeXBlKFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgV1RGOjpTdHJpbmcmIG5ld0NvbnRlbnRUeXBlLCBjb25z
dCBXVEY6OlN0cmluZyYgbmV3RmlsZW5hbWUsIEZ1bmN0aW9uPHZvaWQoV2ViS2l0OjpDYWxsYmFj
a0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFjaykKK3sKKyAgICBhdXRvIG9wdGlvbmFsTmV3Q29udGVu
dFR5cGUgPSBuZXdDb250ZW50VHlwZS5pc051bGwoKSA/IHN0ZDo6bnVsbG9wdCA6IHN0ZDo6b3B0
aW9uYWw8V1RGOjpTdHJpbmc+IHsgbmV3Q29udGVudFR5cGUgfTsKKyAgICBhdXRvIG9wdGlvbmFs
TmV3RmlsZW5hbWUgPSBuZXdGaWxlbmFtZS5pc051bGwoKSA/IHN0ZDo6bnVsbG9wdCA6IHN0ZDo6
b3B0aW9uYWw8V1RGOjpTdHJpbmc+IHsgbmV3RmlsZW5hbWUgfTsKKyAgICBpZiAobV93ZWJQYWdl
KQorICAgICAgICBtX3dlYlBhZ2UtPnNldEF0dGFjaG1lbnREYXRhQW5kQ29udGVudFR5cGUobV9p
ZGVudGlmaWVyLCBkYXRhLCBXVEZNb3ZlKG9wdGlvbmFsTmV3Q29udGVudFR5cGUpLCBXVEZNb3Zl
KG9wdGlvbmFsTmV3RmlsZW5hbWUpLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CisgICAgZWxzZQorICAg
ICAgICBjYWxsYmFjayhXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3I6Ok93bmVyV2FzSW52YWxp
ZGF0ZWQpOworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
QVBJQXR0YWNobWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1l
bnQuaAppbmRleCA5ZmU3NWM5YWI5MGYyZjJhZWVlYjQ5NWI0Y2QwMzI2MzJjM2M1NzE5Li5kMjZm
MmVmNzY4YmVkNzQ4NTk4MjgwYTM5YzE0MzBiYmUxNTljNGZmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmgKQEAgLTUxLDYgKzUxLDcgQEAgcHVibGljOgog
ICAgIGNvbnN0IFdURjo6U3RyaW5nJiBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVu
dGlmaWVyOyB9CiAgICAgdm9pZCByZXF1ZXN0RGF0YShGdW5jdGlvbjx2b2lkKFJlZlB0cjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+LCBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKICAg
ICB2b2lkIHNldERpc3BsYXlPcHRpb25zKFdlYkNvcmU6OkF0dGFjaG1lbnREaXNwbGF5T3B0aW9u
cywgRnVuY3Rpb248dm9pZChXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKKyAgICB2
b2lkIHNldERhdGFBbmRDb250ZW50VHlwZShXZWJDb3JlOjpTaGFyZWRCdWZmZXImLCBjb25zdCBX
VEY6OlN0cmluZyYgbmV3Q29udGVudFR5cGUsIGNvbnN0IFdURjo6U3RyaW5nJiBuZXdGaWxlbmFt
ZSwgRnVuY3Rpb248dm9pZChXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKIAogcHJp
dmF0ZToKICAgICBleHBsaWNpdCBBdHRhY2htZW50KGNvbnN0IFdURjo6U3RyaW5nJiBpZGVudGlm
aWVyLCBXZWJLaXQ6OldlYlBhZ2VQcm94eSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL19XS0F0dGFjaG1lbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9fV0tBdHRhY2htZW50LmgKaW5kZXggZjgzNjg5ZGQyNjQ1Nzc5ZmRlZmNj
OWM5ZDY1MWI4NWFhNTEyZDgwOC4uMjEwY2EwZWVhNGI3YjNjNmUyZjU0ZWVkODdlNjNlN2NhZmQ0
YjNmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0F0
dGFjaG1lbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXR0
YWNobWVudC5oCkBAIC0yOSw2ICsyOSw4IEBACiAKICNpZiBXS19BUElfRU5BQkxFRAogCitOU19B
U1NVTUVfTk9OTlVMTF9CRUdJTgorCiB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBfV0tBdHRh
Y2htZW50RGlzcGxheU1vZGUpIHsKICAgICBfV0tBdHRhY2htZW50RGlzcGxheU1vZGVBdXRvID0g
MSwKICAgICBfV0tBdHRhY2htZW50RGlzcGxheU1vZGVJblBsYWNlLApAQCAtNDIsOCArNDQsMTEg
QEAgV0tfQ0xBU1NfQVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEp
KQogCiBXS19DTEFTU19BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RC
QSkpCiBAaW50ZXJmYWNlIF9XS0F0dGFjaG1lbnQgOiBOU09iamVjdAotLSAodm9pZClyZXF1ZXN0
RGF0YToodm9pZCheKShOU0RhdGEgKiwgTlNFcnJvciAqKSljb21wbGV0aW9uSGFuZGxlcjsKLS0g
KHZvaWQpc2V0RGlzcGxheU9wdGlvbnM6KF9XS0F0dGFjaG1lbnREaXNwbGF5T3B0aW9ucyAqKW9w
dGlvbnMgY29tcGxldGlvbjoodm9pZCheKShOU0Vycm9yICopKWNvbXBsZXRpb25IYW5kbGVyOwor
LSAodm9pZClyZXF1ZXN0RGF0YToodm9pZCheKShOU0RhdGEgKiBfTnVsbGFibGUsIE5TRXJyb3Ig
KiBfTnVsbGFibGUpKWNvbXBsZXRpb25IYW5kbGVyOworLSAodm9pZClzZXREaXNwbGF5T3B0aW9u
czooX1dLQXR0YWNobWVudERpc3BsYXlPcHRpb25zICopb3B0aW9ucyBjb21wbGV0aW9uOih2b2lk
KF4gX051bGxhYmxlKShOU0Vycm9yICogX051bGxhYmxlKSljb21wbGV0aW9uSGFuZGxlcjsKKy0g
KHZvaWQpc2V0RGF0YTooTlNEYXRhICopZGF0YSBuZXdDb250ZW50VHlwZToobnVsbGFibGUgTlNT
dHJpbmcgKiluZXdDb250ZW50VHlwZSBuZXdGaWxlbmFtZToobnVsbGFibGUgTlNTdHJpbmcgKilu
ZXdGaWxlbmFtZSBjb21wbGV0aW9uOih2b2lkKF4gX051bGxhYmxlKShOU0Vycm9yICogX051bGxh
YmxlKSljb21wbGV0aW9uSGFuZGxlcjsKIEBlbmQKIAorTlNfQVNTVU1FX05PTk5VTExfRU5ECisK
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19X
S0F0dGFjaG1lbnQubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXR0
YWNobWVudC5tbQppbmRleCBlMzhlZGM1ZWE0MThkMWE1N2E0OTU1ZTYwODg4YzAwNWZlYzdlNTRj
Li45MzljYzg3MjI0ZTU1MDdlYTE5YzhmNzU2NTUyNGI5NmMzMDBkZDQ0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXR0YWNobWVudC5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXR0YWNobWVudC5tbQpAQCAtMTA4
LDYgKzEwOCwyMCBAQCAtICh2b2lkKXNldERpc3BsYXlPcHRpb25zOihfV0tBdHRhY2htZW50RGlz
cGxheU9wdGlvbnMgKilvcHRpb25zIGNvbXBsZXRpb246KHZvaQogICAgIH0pOwogfQogCistICh2
b2lkKXNldERhdGE6KE5TRGF0YSAqKWRhdGEgbmV3Q29udGVudFR5cGU6KE5TU3RyaW5nICopbmV3
Q29udGVudFR5cGUgbmV3RmlsZW5hbWU6KE5TU3RyaW5nICopbmV3RmlsZW5hbWUgY29tcGxldGlv
bjoodm9pZCheKShOU0Vycm9yICopKWNvbXBsZXRpb25IYW5kbGVyCit7CisgICAgYXV0byBidWZm
ZXIgPSBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKKyAgICBfYXR0YWNobWVu
dC0+c2V0RGF0YUFuZENvbnRlbnRUeXBlKGJ1ZmZlci5nZXQoKSwgbmV3Q29udGVudFR5cGUsIG5l
d0ZpbGVuYW1lLCBbY2FwdHVyZWRCbG9jayA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxl
ciksIGNhcHR1cmVkQnVmZmVyID0gYnVmZmVyLmNvcHlSZWYoKV0gKENhbGxiYWNrQmFzZTo6RXJy
b3IgZXJyb3IpIHsKKyAgICAgICAgaWYgKCFjYXB0dXJlZEJsb2NrKQorICAgICAgICAgICAgcmV0
dXJuOworCisgICAgICAgIGlmIChlcnJvciA9PSBDYWxsYmFja0Jhc2U6OkVycm9yOjpOb25lKQor
ICAgICAgICAgICAgY2FwdHVyZWRCbG9jayhuaWwpOworICAgICAgICBlbHNlCisgICAgICAgICAg
ICBjYXB0dXJlZEJsb2NrKFtOU0Vycm9yIGVycm9yV2l0aERvbWFpbjpXS0Vycm9yRG9tYWluIGNv
ZGU6MSB1c2VySW5mbzpuaWxdKTsKKyAgICB9KTsKK30KKwogLSAoTlNTdHJpbmcgKil1bmlxdWVJ
ZGVudGlmaWVyCiB7CiAgICAgcmV0dXJuIF9hdHRhY2htZW50LT5pZGVudGlmaWVyKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCAxNDNlOWQ1MWYzMTdkOWFk
YjdkNDZiNGQ4MDg1MDFiYjk5YjcxMDY5Li5iNWE2NDNmMjhlMDgyYTVkOWM5ZGEwZDk3MDY0YTMz
NTE0YWVmYTFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAg
LTcxODIsNiArNzE4MiwxNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0QXR0YWNobWVudERpc3Bs
YXlPcHRpb25zKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgQXR0YWNobQogICAgIG1fcHJvY2Vz
cy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0QXR0YWNobWVudERpc3BsYXlPcHRpb25zKGlk
ZW50aWZpZXIsIG9wdGlvbnMsIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CiB9CiAKK3ZvaWQgV2Vi
UGFnZVByb3h5OjpzZXRBdHRhY2htZW50RGF0YUFuZENvbnRlbnRUeXBlKGNvbnN0IFN0cmluZyYg
aWRlbnRpZmllciwgU2hhcmVkQnVmZmVyJiBkYXRhLCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4mJiBu
ZXdDb250ZW50VHlwZSwgc3RkOjpvcHRpb25hbDxTdHJpbmc+JiYgbmV3RmlsZW5hbWUsIEZ1bmN0
aW9uPHZvaWQoQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2spCit7CisgICAgaWYgKCFp
c1ZhbGlkKCkpIHsKKyAgICAgICAgY2FsbGJhY2soQ2FsbGJhY2tCYXNlOjpFcnJvcjo6T3duZXJX
YXNJbnZhbGlkYXRlZCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIGNhbGxi
YWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFjayksIG1fcHJvY2Vzcy0+dGhy
b3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgbV9wcm9jZXNzLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRBdHRhY2htZW50RGF0YUFuZENvbnRlbnRUeXBlKGlkZW50
aWZpZXIsIElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSB7ICZkYXRhIH0sIFdURk1vdmUo
bmV3Q29udGVudFR5cGUpLCBXVEZNb3ZlKG5ld0ZpbGVuYW1lKSwgY2FsbGJhY2tJRCksIG1fcGFn
ZUlEKTsKK30KKwogdm9pZCBXZWJQYWdlUHJveHk6OmRpZEluc2VydEF0dGFjaG1lbnQoY29uc3Qg
U3RyaW5nJiBpZGVudGlmaWVyKQogewogICAgIG1fcGFnZUNsaWVudC5kaWRJbnNlcnRBdHRhY2ht
ZW50KGlkZW50aWZpZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRl
eCBmMjUyOTYwOGJiMmYyZDQ0ZTgzMmVjNjY3MzA5NTlkY2Q1YmMyMzI2Li44YzE4M2NlMjBlYjQy
MGRkOWVkZDBkNWU0NmNmOTc0YmIyZjU5ZmViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaApAQCAtMTIyNSw2ICsxMjI1LDcgQEAgcHVibGljOgogICAgIHZvaWQgaW5zZXJ0
QXR0YWNobWVudChjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OkF0dGFj
aG1lbnREaXNwbGF5T3B0aW9ucyYsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIHN0ZDo6b3B0aW9u
YWw8U3RyaW5nPiBjb250ZW50VHlwZSwgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJiBkYXRhLCBGdW5j
dGlvbjx2b2lkKENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKICAgICB2b2lkIHJlcXVlc3RBdHRh
Y2htZW50RGF0YShjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIEZ1bmN0aW9uPHZvaWQoUmVmUHRy
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4sIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKICAgICB2
b2lkIHNldEF0dGFjaG1lbnREaXNwbGF5T3B0aW9ucyhjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIs
IFdlYkNvcmU6OkF0dGFjaG1lbnREaXNwbGF5T3B0aW9ucywgRnVuY3Rpb248dm9pZChDYWxsYmFj
a0Jhc2U6OkVycm9yKT4mJik7CisgICAgdm9pZCBzZXRBdHRhY2htZW50RGF0YUFuZENvbnRlbnRU
eXBlKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJiBkYXRh
LCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4mJiBuZXdDb250ZW50VHlwZSwgc3RkOjpvcHRpb25hbDxT
dHJpbmc+JiYgbmV3RmlsZW5hbWUsIEZ1bmN0aW9uPHZvaWQoQ2FsbGJhY2tCYXNlOjpFcnJvcik+
JiYpOwogI2VuZGlmCiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwCmluZGV4IGFkNDI0MmM5NzJkNDEwMDk2MDhjNThlYjZiZDE3NDE0OWQy
NmZiOTguLjhkYjgzNTJhMjI0MzY1M2Y0OTU3ZTk2MTA2OWNlYmJjYmU5YTllMWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC01Nzk5LDYgKzU3
OTksMTUgQEAgdm9pZCBXZWJQYWdlOjpzZXRBdHRhY2htZW50RGlzcGxheU9wdGlvbnMoY29uc3Qg
U3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBBdHRhY2gKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OlZvaWRDYWxsYmFjayhjYWxsYmFja0lEKSk7CiB9CiAKK3ZvaWQgV2ViUGFnZTo6
c2V0QXR0YWNobWVudERhdGFBbmRDb250ZW50VHlwZShjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIs
IGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwgc3RkOjpvcHRpb25hbDxTdHJpbmc+IG5l
d0NvbnRlbnRUeXBlLCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gbmV3RmlsZW5hbWUsIENhbGxiYWNr
SUQgY2FsbGJhY2tJRCkKK3sKKyAgICBpZiAoYXV0byBhdHRhY2htZW50ID0gYXR0YWNobWVudEVs
ZW1lbnRXaXRoSWRlbnRpZmllcihpZGVudGlmaWVyKSkgeworICAgICAgICBhdHRhY2htZW50LT5k
b2N1bWVudCgpLnVwZGF0ZUxheW91dCgpOworICAgICAgICBhdHRhY2htZW50LT51cGRhdGVGaWxl
V2l0aERhdGEoU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKSwg
V1RGTW92ZShuZXdDb250ZW50VHlwZSksIFdURk1vdmUobmV3RmlsZW5hbWUpKTsKKyAgICB9Cisg
ICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpWb2lkQ2FsbGJhY2soY2FsbGJhY2tJRCkp
OworfQorCiBSZWZQdHI8SFRNTEF0dGFjaG1lbnRFbGVtZW50PiBXZWJQYWdlOjphdHRhY2htZW50
RWxlbWVudFdpdGhJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllcikgY29uc3QKIHsK
ICAgICAvLyBGSVhNRTogSGFuZGxlIGF0dGFjaG1lbnQgZWxlbWVudHMgaW4gc3ViZnJhbWVzIHRv
byBhcyB3ZWxsLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmlu
ZGV4IDY0ZDY2ZjI5Y2JlNDQzZjBhNWQyYzM0OTBhZWU3OTliMTdmMDQyNmIuLjA3NGU0ODMwN2Yx
MjU0MGJkNGY2NzZmMjQxZWI3MDJhNjgwNjZkNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTEwMTgsNiArMTAxOCw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIGluc2VydEF0dGFjaG1lbnQoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBXZWJD
b3JlOjpBdHRhY2htZW50RGlzcGxheU9wdGlvbnMmLCBjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBz
dGQ6Om9wdGlvbmFsPFN0cmluZz4gY29udGVudFR5cGUsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5j
ZSYsIENhbGxiYWNrSUQpOwogICAgIHZvaWQgcmVxdWVzdEF0dGFjaG1lbnREYXRhKGNvbnN0IFN0
cmluZyYgaWRlbnRpZmllciwgQ2FsbGJhY2tJRCk7CiAgICAgdm9pZCBzZXRBdHRhY2htZW50RGlz
cGxheU9wdGlvbnMoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpBdHRh
Y2htZW50RGlzcGxheU9wdGlvbnMmLCBDYWxsYmFja0lEKTsKKyAgICB2b2lkIHNldEF0dGFjaG1l
bnREYXRhQW5kQ29udGVudFR5cGUoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBJUEM6
OkRhdGFSZWZlcmVuY2UmLCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gbmV3Q29udGVudFR5cGUsIHN0
ZDo6b3B0aW9uYWw8U3RyaW5nPiBuZXdGaWxlbmFtZSwgQ2FsbGJhY2tJRCk7CiAjZW5kaWYKIAog
cHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLm1lc3NhZ2VzLmluCmluZGV4IDRjNDI4MDU5MmEzMjA1OTliYWNmNDE4MWRlMmFmZWNhYmJh
ZDAwN2MuLjEzNjlkNDdhNTM4MDRkMjA2YTVjYTIzYmY5NzRhZTE5YzFmZWE0ZTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4K
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5p
bgpAQCAtNDg5LDUgKzQ4OSw2IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2UgTGVnYWN5UmVjZWl2ZXIg
ewogICAgIEluc2VydEF0dGFjaG1lbnQoU3RyaW5nIGlkZW50aWZpZXIsIHN0cnVjdCBXZWJDb3Jl
OjpBdHRhY2htZW50RGlzcGxheU9wdGlvbnMgb3B0aW9ucywgU3RyaW5nIGZpbGVuYW1lLCBzdGQ6
Om9wdGlvbmFsPFN0cmluZz4gY29udGVudFR5cGUsIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhLCBX
ZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICAgICBSZXF1ZXN0QXR0YWNobWVudERhdGEo
U3RyaW5nIGlkZW50aWZpZXIsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogICAgIFNl
dEF0dGFjaG1lbnREaXNwbGF5T3B0aW9ucyhTdHJpbmcgaWRlbnRpZmllciwgc3RydWN0IFdlYkNv
cmU6OkF0dGFjaG1lbnREaXNwbGF5T3B0aW9ucyBvcHRpb25zLCBXZWJLaXQ6OkNhbGxiYWNrSUQg
Y2FsbGJhY2tJRCkKKyAgICBTZXRBdHRhY2htZW50RGF0YUFuZENvbnRlbnRUeXBlKFN0cmluZyBp
ZGVudGlmaWVyLCBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YSwgc3RkOjpvcHRpb25hbDxTdHJpbmc+
IG5ld0NvbnRlbnRUeXBlLCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gbmV3RmlsZW5hbWUsIFdlYktp
dDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogI2VuZGlmCiB9CmRpZmYgLS1naXQgYS9Ub29scy9D
aGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNjVhYWRmYmNmMGU4MDNmMGYwNzU5NGQ5
ZDYyNjFhMmViNzQyY2I1My4uOWJkMGY3MTVkZmNjZTA0MGNmYzUzZjI3OTliYmE1MTM3YzRiNzM5
NiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE3IEBACisyMDE3LTExLTI5ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBw
bGUuY29tPgorCisgICAgICAgIFtBdHRhY2htZW50IFN1cHBvcnRdIEltcGxlbWVudCBTUEkgZm9y
IGNsaWVudHMgdG8gdXBkYXRlIGEgZ2l2ZW4gYXR0YWNobWVudCdzIGRhdGEKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MDE4NAorICAgICAgICA8cmRh
cjovL3Byb2JsZW0vMzUzNTU3MzE+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQWRkcyB0d28gbmV3IEFQSSB0ZXN0cyB0byBleGVyY2lzZSB0aGUgYXR0
YWNobWVudCBkYXRhIHVwZGF0ZSBmbG93LgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9XS0F0dGFjaG1lbnRUZXN0cy5tbToKKyAgICAgICAgKC1bX1dLQXR0YWNo
bWVudCBzeW5jaHJvbm91c2x5U2V0RGF0YTpuZXdDb250ZW50VHlwZTpuZXdGaWxlbmFtZTplcnJv
cjpdKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorCiAyMDE3LTExLTI5ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFtBdHRhY2htZW50
IFN1cHBvcnRdIEltcGxlbWVudCBTUEkgZm9yIGNsaWVudHMgdG8gbWFrZSBhbiBhdHRhY2htZW50
IGVsZW1lbnQgZGlzcGxheSBpbi1wbGFjZQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9XS0F0dGFjaG1lbnRUZXN0cy5tbSBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tBdHRhY2htZW50VGVzdHMubW0KaW5kZXggMDBhNTAz
OGQ4NDhiZWY4NThmM2I4MGMzZmFlN2E1MWY1YjA4OTNjYi4uNDNmZDhkNmI4YWYyNGQzZGJjOTc4
YzMwODgxN2I4NGMwMDU4NDdhZiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9XS0F0dGFjaG1lbnRUZXN0cy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLQXR0YWNobWVudFRlc3RzLm1tCkBAIC0yNjcsNiArMjY3
LDIxIEBAIC0gKE5TRGF0YSAqKXN5bmNocm9ub3VzbHlSZXF1ZXN0RGF0YTooTlNFcnJvciAqKill
cnJvcgogICAgIHJldHVybiByZXN1bHQuYXV0b3JlbGVhc2UoKTsKIH0KIAorLSAodm9pZClzeW5j
aHJvbm91c2x5U2V0RGF0YTooTlNEYXRhICopZGF0YSBuZXdDb250ZW50VHlwZTooTlNTdHJpbmcg
KiluZXdDb250ZW50VHlwZSBuZXdGaWxlbmFtZTooTlNTdHJpbmcgKiluZXdGaWxlbmFtZSBlcnJv
cjooTlNFcnJvciAqKillcnJvcgoreworICAgIF9fYmxvY2sgUmV0YWluUHRyPE5TRXJyb3I+IHJl
c3VsdEVycm9yOworICAgIF9fYmxvY2sgYm9vbCBkb25lID0gZmFsc2U7CisgICAgW3NlbGYgc2V0
RGF0YTpkYXRhIG5ld0NvbnRlbnRUeXBlOm5ld0NvbnRlbnRUeXBlIG5ld0ZpbGVuYW1lOm5ld0Zp
bGVuYW1lIGNvbXBsZXRpb246XihOU0Vycm9yICplcnJvcikgeworICAgICAgICByZXN1bHRFcnJv
ciA9IHJldGFpblB0cihlcnJvcik7CisgICAgICAgIGRvbmUgPSB0cnVlOworICAgIH1dOworCisg
ICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKKworICAgIGlmIChlcnJvcikKKyAg
ICAgICAgKmVycm9yID0gcmVzdWx0RXJyb3IuYXV0b3JlbGVhc2UoKTsKK30KKwogLSAodm9pZCll
eHBlY3RSZXF1ZXN0ZWREYXRhVG9CZTooTlNEYXRhICopZXhwZWN0ZWREYXRhCiB7CiAgICAgTlNF
cnJvciAqZGF0YVJlcXVlc3RFcnJvciA9IG5pbDsKQEAgLTU3OCw2ICs1OTMsODkgQEAgVEVTVChX
S0F0dGFjaG1lbnRUZXN0cywgSW5QbGFjZVBERkF0dGFjaG1lbnRDdXRBbmRQYXN0ZSkKICAgICBb
YXR0YWNobWVudCBleHBlY3RSZXF1ZXN0ZWREYXRhVG9CZTpwZGZEYXRhLmdldCgpXTsKIH0KIAor
VEVTVChXS0F0dGFjaG1lbnRUZXN0cywgQ2hhbmdlQXR0YWNobWVudERhdGFBbmRGaWxlSW5mb3Jt
YXRpb24pCit7CisgICAgYXV0byB3ZWJWaWV3ID0gd2ViVmlld0ZvclRlc3RpbmdBdHRhY2htZW50
cygpOworICAgIFJldGFpblB0cjxfV0tBdHRhY2htZW50PiBhdHRhY2htZW50OworICAgIHsKKyAg
ICAgICAgUmV0YWluUHRyPE5TRGF0YT4gcGRmRGF0YSA9IHRlc3RQREZEYXRhKCk7CisgICAgICAg
IE9ic2VydmVBdHRhY2htZW50VXBkYXRlc0ZvclNjb3BlIG9ic2VydmVyKHdlYlZpZXcuZ2V0KCkp
OworICAgICAgICBhdHRhY2htZW50ID0gcmV0YWluUHRyKFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlJ
bnNlcnRBdHRhY2htZW50V2l0aEZpbGVuYW1lOkAidGVzdC5wZGYiIGNvbnRlbnRUeXBlOkAiYXBw
bGljYXRpb24vcGRmIiBkYXRhOnBkZkRhdGEuZ2V0KCkgb3B0aW9uczpkaXNwbGF5T3B0aW9uc1dp
dGhNb2RlKF9XS0F0dGFjaG1lbnREaXNwbGF5TW9kZUFzSWNvbildKTsKKyAgICAgICAgW2F0dGFj
aG1lbnQgZXhwZWN0UmVxdWVzdGVkRGF0YVRvQmU6cGRmRGF0YS5nZXQoKV07CisgICAgICAgIEVY
UEVDVF9XS19TVFJFUShAInRlc3QucGRmIiwgW3dlYlZpZXcgdmFsdWVPZkF0dHJpYnV0ZTpAInRp
dGxlIiBmb3JRdWVyeVNlbGVjdG9yOkAiYXR0YWNobWVudCJdKTsKKyAgICAgICAgRVhQRUNUX1dL
X1NUUkVRKEAiYXBwbGljYXRpb24vcGRmIiwgW3dlYlZpZXcgdmFsdWVPZkF0dHJpYnV0ZTpAInR5
cGUiIGZvclF1ZXJ5U2VsZWN0b3I6QCJhdHRhY2htZW50Il0pOworICAgICAgICBvYnNlcnZlci5l
eHBlY3RBdHRhY2htZW50VXBkYXRlcyhAW10sIEBbYXR0YWNobWVudC5nZXQoKV0pOworICAgIH0K
KyAgICB7CisgICAgICAgIFJldGFpblB0cjxOU0RhdGE+IGltYWdlRGF0YSA9IHRlc3RJbWFnZURh
dGEoKTsKKyAgICAgICAgT2JzZXJ2ZUF0dGFjaG1lbnRVcGRhdGVzRm9yU2NvcGUgb2JzZXJ2ZXIo
d2ViVmlldy5nZXQoKSk7CisgICAgICAgIFthdHRhY2htZW50IHN5bmNocm9ub3VzbHlTZXREYXRh
OmltYWdlRGF0YS5nZXQoKSBuZXdDb250ZW50VHlwZTpAImltYWdlL3BuZyIgbmV3RmlsZW5hbWU6
QCJpY29uLnBuZyIgZXJyb3I6bmlsXTsKKyAgICAgICAgW2F0dGFjaG1lbnQgZXhwZWN0UmVxdWVz
dGVkRGF0YVRvQmU6aW1hZ2VEYXRhLmdldCgpXTsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKEAi
aWNvbi5wbmciLCBbd2ViVmlldyB2YWx1ZU9mQXR0cmlidXRlOkAidGl0bGUiIGZvclF1ZXJ5U2Vs
ZWN0b3I6QCJhdHRhY2htZW50Il0pOworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoQCJpbWFnZS9w
bmciLCBbd2ViVmlldyB2YWx1ZU9mQXR0cmlidXRlOkAidHlwZSIgZm9yUXVlcnlTZWxlY3RvcjpA
ImF0dGFjaG1lbnQiXSk7CisgICAgICAgIG9ic2VydmVyLmV4cGVjdEF0dGFjaG1lbnRVcGRhdGVz
KEBbXSwgQFtdKTsKKyAgICB9CisgICAgeworICAgICAgICBSZXRhaW5QdHI8TlNEYXRhPiB0ZXh0
RGF0YSA9IHRlc3RIVE1MRGF0YSgpOworICAgICAgICBPYnNlcnZlQXR0YWNobWVudFVwZGF0ZXNG
b3JTY29wZSBvYnNlcnZlcih3ZWJWaWV3LmdldCgpKTsKKyAgICAgICAgW2F0dGFjaG1lbnQgc3lu
Y2hyb25vdXNseVNldERpc3BsYXlPcHRpb25zOmRpc3BsYXlPcHRpb25zV2l0aE1vZGUoX1dLQXR0
YWNobWVudERpc3BsYXlNb2RlQXNJY29uKSBlcnJvcjpuaWxdOworICAgICAgICAvLyBUaGUgbmV3
IGNvbnRlbnQgdHlwZSBzaG91bGQgYmUgaW5mZXJyZWQgZnJvbSB0aGUgZmlsZSBuYW1lLgorICAg
ICAgICBbYXR0YWNobWVudCBzeW5jaHJvbm91c2x5U2V0RGF0YTp0ZXh0RGF0YS5nZXQoKSBuZXdD
b250ZW50VHlwZTpuaWwgbmV3RmlsZW5hbWU6QCJmb28udHh0IiBlcnJvcjpuaWxdOworICAgICAg
ICBbYXR0YWNobWVudCBleHBlY3RSZXF1ZXN0ZWREYXRhVG9CZTp0ZXh0RGF0YS5nZXQoKV07Cisg
ICAgICAgIEVYUEVDVF9XS19TVFJFUShAImZvby50eHQiLCBbd2ViVmlldyB2YWx1ZU9mQXR0cmli
dXRlOkAidGl0bGUiIGZvclF1ZXJ5U2VsZWN0b3I6QCJhdHRhY2htZW50Il0pOworICAgICAgICBF
WFBFQ1RfV0tfU1RSRVEoQCJ0ZXh0L3BsYWluIiwgW3dlYlZpZXcgdmFsdWVPZkF0dHJpYnV0ZTpA
InR5cGUiIGZvclF1ZXJ5U2VsZWN0b3I6QCJhdHRhY2htZW50Il0pOworICAgICAgICBvYnNlcnZl
ci5leHBlY3RBdHRhY2htZW50VXBkYXRlcyhAW10sIEBbXSk7CisgICAgfQorICAgIHsKKyAgICAg
ICAgUmV0YWluUHRyPE5TRGF0YT4gc2Vjb25kVGV4dERhdGEgPSBbQCJIZWxsbyB3b3JsZCIgZGF0
YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddOworICAgICAgICBPYnNlcnZlQXR0
YWNobWVudFVwZGF0ZXNGb3JTY29wZSBvYnNlcnZlcih3ZWJWaWV3LmdldCgpKTsKKyAgICAgICAg
Ly8gQm90aCB0aGUgcHJldmlvdXMgZmlsZSBuYW1lIGFuZCB0eXBlIHNob3VsZCBiZSBpbmZlcnJl
ZC4KKyAgICAgICAgW2F0dGFjaG1lbnQgc3luY2hyb25vdXNseVNldERhdGE6c2Vjb25kVGV4dERh
dGEuZ2V0KCkgbmV3Q29udGVudFR5cGU6bmlsIG5ld0ZpbGVuYW1lOm5pbCBlcnJvcjpuaWxdOwor
ICAgICAgICBbYXR0YWNobWVudCBleHBlY3RSZXF1ZXN0ZWREYXRhVG9CZTpzZWNvbmRUZXh0RGF0
YS5nZXQoKV07CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShAImZvby50eHQiLCBbd2ViVmlldyB2
YWx1ZU9mQXR0cmlidXRlOkAidGl0bGUiIGZvclF1ZXJ5U2VsZWN0b3I6QCJhdHRhY2htZW50Il0p
OworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoQCJ0ZXh0L3BsYWluIiwgW3dlYlZpZXcgdmFsdWVP
ZkF0dHJpYnV0ZTpAInR5cGUiIGZvclF1ZXJ5U2VsZWN0b3I6QCJhdHRhY2htZW50Il0pOworICAg
ICAgICBvYnNlcnZlci5leHBlY3RBdHRhY2htZW50VXBkYXRlcyhAW10sIEBbXSk7CisgICAgfQor
ICAgIFt3ZWJWaWV3IGV4cGVjdFVwZGF0ZXNBZnRlckNvbW1hbmQ6QCJEZWxldGVCYWNrd2FyZCIg
d2l0aEFyZ3VtZW50Om5pbCBleHBlY3RlZFJlbW92YWxzOkBbYXR0YWNobWVudC5nZXQoKV0gZXhw
ZWN0ZWRJbnNlcnRpb25zOkBbXV07Cit9CisKK1RFU1QoV0tBdHRhY2htZW50VGVzdHMsIENoYW5n
ZUF0dGFjaG1lbnREYXRhVXBkYXRlc1dpdGhJblBsYWNlRGlzcGxheSkKK3sKKyAgICBhdXRvIHdl
YlZpZXcgPSB3ZWJWaWV3Rm9yVGVzdGluZ0F0dGFjaG1lbnRzKCk7CisgICAgUmV0YWluUHRyPF9X
S0F0dGFjaG1lbnQ+IGF0dGFjaG1lbnQ7CisgICAgeworICAgICAgICBSZXRhaW5QdHI8TlNEYXRh
PiBwZGZEYXRhID0gdGVzdFBERkRhdGEoKTsKKyAgICAgICAgT2JzZXJ2ZUF0dGFjaG1lbnRVcGRh
dGVzRm9yU2NvcGUgb2JzZXJ2ZXIod2ViVmlldy5nZXQoKSk7CisgICAgICAgIGF0dGFjaG1lbnQg
PSByZXRhaW5QdHIoW3dlYlZpZXcgc3luY2hyb25vdXNseUluc2VydEF0dGFjaG1lbnRXaXRoRmls
ZW5hbWU6QCJ0ZXN0LnBkZiIgY29udGVudFR5cGU6QCJhcHBsaWNhdGlvbi9wZGYiIGRhdGE6cGRm
RGF0YS5nZXQoKSBvcHRpb25zOmRpc3BsYXlPcHRpb25zV2l0aE1vZGUoX1dLQXR0YWNobWVudERp
c3BsYXlNb2RlSW5QbGFjZSldKTsKKyAgICAgICAgW3dlYlZpZXcgd2FpdEZvckF0dGFjaG1lbnRF
bGVtZW50U2l6ZVRvQmVjb21lOkNHU2l6ZU1ha2UoMTMwLCAyOSldOworICAgICAgICBbYXR0YWNo
bWVudCBleHBlY3RSZXF1ZXN0ZWREYXRhVG9CZTpwZGZEYXRhLmdldCgpXTsKKyAgICAgICAgRVhQ
RUNUX1dLX1NUUkVRKEAidGVzdC5wZGYiLCBbd2ViVmlldyB2YWx1ZU9mQXR0cmlidXRlOkAidGl0
bGUiIGZvclF1ZXJ5U2VsZWN0b3I6QCJhdHRhY2htZW50Il0pOworICAgICAgICBFWFBFQ1RfV0tf
U1RSRVEoQCJhcHBsaWNhdGlvbi9wZGYiLCBbd2ViVmlldyB2YWx1ZU9mQXR0cmlidXRlOkAidHlw
ZSIgZm9yUXVlcnlTZWxlY3RvcjpAImF0dGFjaG1lbnQiXSk7CisgICAgICAgIG9ic2VydmVyLmV4
cGVjdEF0dGFjaG1lbnRVcGRhdGVzKEBbXSwgQFthdHRhY2htZW50LmdldCgpXSk7CisgICAgfQor
ICAgIHsKKyAgICAgICAgUmV0YWluUHRyPE5TRGF0YT4gdmlkZW9EYXRhID0gdGVzdFZpZGVvRGF0
YSgpOworICAgICAgICBPYnNlcnZlQXR0YWNobWVudFVwZGF0ZXNGb3JTY29wZSBvYnNlcnZlcih3
ZWJWaWV3LmdldCgpKTsKKyAgICAgICAgW2F0dGFjaG1lbnQgc3luY2hyb25vdXNseVNldERhdGE6
dmlkZW9EYXRhLmdldCgpIG5ld0NvbnRlbnRUeXBlOkAidmlkZW8vbXA0IiBuZXdGaWxlbmFtZTpA
InRlc3QubXA0IiBlcnJvcjpuaWxdOworICAgICAgICBbd2ViVmlldyB3YWl0Rm9yQXR0YWNobWVu
dEVsZW1lbnRTaXplVG9CZWNvbWU6Q0dTaXplTWFrZSgzMjAsIDI0MCldOworICAgICAgICBbYXR0
YWNobWVudCBleHBlY3RSZXF1ZXN0ZWREYXRhVG9CZTp2aWRlb0RhdGEuZ2V0KCldOworICAgICAg
ICBFWFBFQ1RfV0tfU1RSRVEoQCJ0ZXN0Lm1wNCIsIFt3ZWJWaWV3IHZhbHVlT2ZBdHRyaWJ1dGU6
QCJ0aXRsZSIgZm9yUXVlcnlTZWxlY3RvcjpAImF0dGFjaG1lbnQiXSk7CisgICAgICAgIEVYUEVD
VF9XS19TVFJFUShAInZpZGVvL21wNCIsIFt3ZWJWaWV3IHZhbHVlT2ZBdHRyaWJ1dGU6QCJ0eXBl
IiBmb3JRdWVyeVNlbGVjdG9yOkAiYXR0YWNobWVudCJdKTsKKyAgICAgICAgb2JzZXJ2ZXIuZXhw
ZWN0QXR0YWNobWVudFVwZGF0ZXMoQFtdLCBAW10pOworICAgIH0KKyAgICB7CisgICAgICAgIFJl
dGFpblB0cjxOU0RhdGE+IGltYWdlRGF0YSA9IHRlc3RJbWFnZURhdGEoKTsKKyAgICAgICAgT2Jz
ZXJ2ZUF0dGFjaG1lbnRVcGRhdGVzRm9yU2NvcGUgb2JzZXJ2ZXIod2ViVmlldy5nZXQoKSk7Cisg
ICAgICAgIFthdHRhY2htZW50IHN5bmNocm9ub3VzbHlTZXREYXRhOmltYWdlRGF0YS5nZXQoKSBu
ZXdDb250ZW50VHlwZTpAImltYWdlL3BuZyIgbmV3RmlsZW5hbWU6QCJpY29uLnBuZyIgZXJyb3I6
bmlsXTsKKyAgICAgICAgW3dlYlZpZXcgd2FpdEZvckF0dGFjaG1lbnRFbGVtZW50U2l6ZVRvQmVj
b21lOkNHU2l6ZU1ha2UoMjE1LCAxNzQpXTsKKyAgICAgICAgW2F0dGFjaG1lbnQgZXhwZWN0UmVx
dWVzdGVkRGF0YVRvQmU6aW1hZ2VEYXRhLmdldCgpXTsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVR
KEAiaWNvbi5wbmciLCBbd2ViVmlldyB2YWx1ZU9mQXR0cmlidXRlOkAidGl0bGUiIGZvclF1ZXJ5
U2VsZWN0b3I6QCJhdHRhY2htZW50Il0pOworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoQCJpbWFn
ZS9wbmciLCBbd2ViVmlldyB2YWx1ZU9mQXR0cmlidXRlOkAidHlwZSIgZm9yUXVlcnlTZWxlY3Rv
cjpAImF0dGFjaG1lbnQiXSk7CisgICAgICAgIG9ic2VydmVyLmV4cGVjdEF0dGFjaG1lbnRVcGRh
dGVzKEBbXSwgQFtdKTsKKyAgICB9CisgICAgW3dlYlZpZXcgZXhwZWN0VXBkYXRlc0FmdGVyQ29t
bWFuZDpAIkRlbGV0ZUJhY2t3YXJkIiB3aXRoQXJndW1lbnQ6bmlsIGV4cGVjdGVkUmVtb3ZhbHM6
QFthdHRhY2htZW50LmdldCgpXSBleHBlY3RlZEluc2VydGlvbnM6QFtdXTsKK30KKwogfSAvLyBu
YW1lc3BhY2UgVGVzdFdlYktpdEFQSQogCiAjZW5kaWYgLy8gV0tfQVBJX0VOQUJMRUQK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>327978</attachid>
            <date>2017-11-30 08:13:50 -0800</date>
            <delta_ts>2017-12-01 14:02:43 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-180184-20171130081349.patch</filename>
            <type>text/plain</type>
            <size>26517</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI1MzE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWI5NGY5OTE3NWZkZjg0
YmU2Y2Y5Mzk2ZGQ1NmI4YzNkZDk1ZmI0Zi4uZWRmYjZiYzI0MjVlNmE3YjU3ODc4NzRkOTFkN2Vi
OTA3YjUzYjFiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDE3LTExLTI5ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtBdHRhY2htZW50
IFN1cHBvcnRdIEltcGxlbWVudCBTUEkgZm9yIGNsaWVudHMgdG8gdXBkYXRlIGEgZ2l2ZW4gYXR0
YWNobWVudCdzIGRhdGEKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE4MDE4NAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzUzNTU3MzE+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIG5hdGl2ZSBBUEkg
c3VwcG9ydCBmb3IgTWFpbCB0byB1cGRhdGUgdGhlIGRhdGEgKGFuZCBvcHRpb25hbGx5LCB0aGUg
bmFtZSBhbmQgdHlwZSkgb2YgYSBnaXZlbiBhdHRhY2htZW50CisgICAgICAgIGVsZW1lbnQuIFNl
ZSBwZXItbWV0aG9kIGNvbW1lbnRzIGJlbG93IGZvciBtb3JlIGRldGFpbC4KKworICAgICAgICBU
ZXN0OiBXS0F0dGFjaG1lbnRUZXN0cy5DaGFuZ2VBdHRhY2htZW50RGF0YUFuZEZpbGVJbmZvcm1h
dGlvbgorICAgICAgICAgICAgICBXS0F0dGFjaG1lbnRUZXN0cy5DaGFuZ2VBdHRhY2htZW50RGF0
YVVwZGF0ZXNXaXRoSW5QbGFjZURpc3BsYXkKKworICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6aW5zZXJ0QXR0YWNobWVudCk6CisgICAgICAg
ICogaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TEF0dGFjaG1lbnRFbGVtZW50OjpzZXRGaWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxBdHRh
Y2htZW50RWxlbWVudDo6aW52YWxpZGF0ZVNoYWRvd1Jvb3RDaGlsZHJlbklmTmVjZXNzYXJ5KToK
KworICAgICAgICBQdWxsIG91dCBsb2dpYyB0byBoaWRlIGFuZCByZXNldCBzaGFkb3cgRE9NIHN0
YXRlIGludG8gYSBzZXBhcmF0ZSBoZWxwZXIsIGFuZCBhZGRpdGlvbmFsbHkgaGlkZSBib3RoIHRo
ZSBpbWFnZQorICAgICAgICBhbmQgdmlkZW8gY2hpbGQgZWxlbWVudHMgaWYgdGhleSBleGlzdC4g
VGhpcyBwcmV2ZW50cyB1cyBmcm9tIGdldHRpbmcgaW50byBhIHN0YXRlIHdoZXJlIGJvdGggaW1h
Z2UgYW5kIHZpZGVvCisgICAgICAgIGVsZW1lbnRzIG1heSBhcHBlYXIgc2lkZS1ieS1zaWRlIHdo
ZW4gY2hhbmdpbmcgZGF0YSBmcm9tIGFuIGltYWdlIHRvIGEgdmlkZW8gb3IgdmljZSB2ZXJzYS4K
KworICAgICAgICAoV2ViQ29yZTo6SFRNTEF0dGFjaG1lbnRFbGVtZW50Ojp1cGRhdGVGaWxlV2l0
aERhdGEpOgorCisgICAgICAgIEFkZCBhIG5ldyBoZWxwZXIgdG8gdXBkYXRlIHRoZSBiYWNraW5n
IEZpbGUgb2YgYW4gYXR0YWNobWVudCBlbGVtZW50IGZyb20gZGF0YSwgb3B0aW9uYWxseSB1cGRh
dGluZyB0aGUgZmlsZW5hbWUKKyAgICAgICAgYW5kIGNvbnRlbnQgdHlwZSBhcyB3ZWxsLgorCisg
ICAgICAgIChXZWJDb3JlOjpIVE1MQXR0YWNobWVudEVsZW1lbnQ6OnBvcHVsYXRlU2hhZG93Um9v
dElmTmVjZXNzYXJ5KToKKyAgICAgICAgKiBodG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5oOgor
CiAyMDE3LTExLTI5ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAg
U2VydmljZVdvcmtlciBXZWJQcm9jZXNzIHNvbWV0aW1lcyBjcmFzaGVzIGluIEpTVk1DbGllbnRE
YXRhOjp+SlNWTUNsaWVudERhdGEoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBhOTM1MTk0ZGJjNmRhZTM4OGY1MTk0
YjlmMTYyYmY0YzdmZmY3OTM5Li5iNjI5YzlhMTdiMDYxYjgyZGE4ZDFkOGRkYWQ2OWYyYzE2ZjNi
MjYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDE3LTExLTI5ICBXZW5zb24gSHNpZWgg
IDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtBdHRhY2htZW50IFN1cHBvcnRd
IEltcGxlbWVudCBTUEkgZm9yIGNsaWVudHMgdG8gdXBkYXRlIGEgZ2l2ZW4gYXR0YWNobWVudCdz
IGRhdGEKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4
MDE4NAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzUzNTU3MzE+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHBsdW1iaW5nIHRvIHRoZSB3ZWIg
cHJvY2VzcyBmb3Igc2V0dGluZyB0aGUgYXR0YWNobWVudCBkYXRhIChhbmQgb3B0aW9uYWxseSwg
dGhlIGNvbnRlbnQgdHlwZSBhbmQvb3IgZmlsZQorICAgICAgICBuYW1lKSBvZiBhIGdpdmVuIGF0
dGFjaG1lbnQuIFNlZSBXZWJDb3JlIENoYW5nZUxvZyBmb3IgbW9yZSBkZXRhaWwuIENoYW5nZXMg
Y292ZXJlZCBieSBuZXcgQVBJIHRlc3RzLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElB
dHRhY2htZW50LmNwcDoKKyAgICAgICAgKEFQSTo6QXR0YWNobWVudDo6c2V0RGF0YUFuZENvbnRl
bnRUeXBlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0F0dGFjaG1lbnQuaDoKKworICAgICAgICBBZGQg
bnVsbGFiaWxpdHkgYW5ub3RhdGlvbnMgYXJvdW5kIF9XS0F0dGFjaG1lbnQgU1BJIG1ldGhvZHMu
CisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0F0dGFjaG1lbnQubW06CisgICAg
ICAgICgtW19XS0F0dGFjaG1lbnQgc2V0RGF0YTpuZXdDb250ZW50VHlwZTpuZXdGaWxlbmFtZTpj
b21wbGV0aW9uOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldEF0dGFjaG1lbnREYXRhQW5kQ29udGVudFR5
cGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNl
dEF0dGFjaG1lbnREYXRhQW5kQ29udGVudFR5cGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVz
c2FnZXMuaW46CisKIDIwMTctMTEtMjkgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBs
ZS5jb20+CiAKICAgICAgICAgW0F0dGFjaG1lbnQgU3VwcG9ydF0gSW1wbGVtZW50IFNQSSBmb3Ig
Y2xpZW50cyB0byBtYWtlIGFuIGF0dGFjaG1lbnQgZWxlbWVudCBkaXNwbGF5IGluLXBsYWNlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0VkaXRvci5jcHAKaW5kZXggYmNjNmZkYzM2MjM4ZGIzZmU2MTFiMWQyYzEw
MTVkNjNlMjA3MWFlMC4uMTUyZjQ2ZGQzZDNjZDQ2MWM2MWYzMTA3ZWY3ZGM3ZjJkMjc4NjdhYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcApAQCAtMzgwMiw3ICszODAyLDcgQEAgdm9pZCBF
ZGl0b3I6Omluc2VydEF0dGFjaG1lbnQoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBB
dHRhY2htZW50RGlzcGxheU8KIHsKICAgICBpZiAoIWNvbnRlbnRUeXBlKQogICAgICAgICBjb250
ZW50VHlwZSA9IEZpbGU6OmNvbnRlbnRUeXBlRm9yRmlsZShmaWxlbmFtZSk7Ci0gICAgaW5zZXJ0
QXR0YWNobWVudEZyb21GaWxlKGlkZW50aWZpZXIsIG9wdGlvbnMsIGZpbGVuYW1lLCAqY29udGVu
dFR5cGUsIEZpbGU6OmNyZWF0ZShCbG9iOjpjcmVhdGUoZGF0YSwgKmNvbnRlbnRUeXBlKSwgZmls
ZW5hbWUpKTsKKyAgICBpbnNlcnRBdHRhY2htZW50RnJvbUZpbGUoaWRlbnRpZmllciwgb3B0aW9u
cywgZmlsZW5hbWUsICpjb250ZW50VHlwZSwgRmlsZTo6Y3JlYXRlKEJsb2I6OmNyZWF0ZShXVEZN
b3ZlKGRhdGEpLCAqY29udGVudFR5cGUpLCBmaWxlbmFtZSkpOwogfQogCiB2b2lkIEVkaXRvcjo6
aW5zZXJ0QXR0YWNobWVudEZyb21GaWxlKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3Qg
QXR0YWNobWVudERpc3BsYXlPcHRpb25zJiBvcHRpb25zLCBjb25zdCBTdHJpbmcmIGZpbGVuYW1l
LCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBSZWY8RmlsZT4mJiBmaWxlKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuY3BwCmluZGV4IDU0ZjAzMjBlZDRl
ZmFjMTEzYjUwYTM5ZjljNDM2ODY1ZGMxMTU5ZjcuLjFhMDMzNzlhYTU1ODgwNmMxZjQyMzM1ZWYw
N2U0ZGFhMDZiNzAyM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFj
aG1lbnRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50
RWxlbWVudC5jcHAKQEAgLTQzLDYgKzQzLDcgQEAKICNpbmNsdWRlICJSZW5kZXJCbG9ja0Zsb3cu
aCIKICNpbmNsdWRlICJTaGFkb3dSb290LmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCisj
aW5jbHVkZSA8cGFsL0ZpbGVTaXplRm9ybWF0dGVyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IApAQCAtMTIwLDExICsxMjEsMjAgQEAgdm9pZCBIVE1MQXR0YWNobWVudEVsZW1lbnQ6OnNldEZp
bGUoUmVmUHRyPEZpbGU+JiYgZmlsZSkKICAgICBpZiAoYXV0byogcmVuZGVyQXR0YWNobWVudCA9
IGF0dGFjaG1lbnRSZW5kZXJlcigpKQogICAgICAgICByZW5kZXJBdHRhY2htZW50LT5pbnZhbGlk
YXRlKCk7CiAKLSAgICBpZiAoYXV0byBpbWFnZSA9IGlubmVySW1hZ2UoKSkKKyAgICBpbnZhbGlk
YXRlU2hhZG93Um9vdENoaWxkcmVuSWZOZWNlc3NhcnkoKTsKKyAgICBwb3B1bGF0ZVNoYWRvd1Jv
b3RJZk5lY2Vzc2FyeSgpOworfQorCit2b2lkIEhUTUxBdHRhY2htZW50RWxlbWVudDo6aW52YWxp
ZGF0ZVNoYWRvd1Jvb3RDaGlsZHJlbklmTmVjZXNzYXJ5KCkKK3sKKyAgICBpZiAoYXV0byBpbWFn
ZSA9IGlubmVySW1hZ2UoKSkgewogICAgICAgICBpbWFnZS0+c2V0QXR0cmlidXRlV2l0aG91dFN5
bmNocm9uaXphdGlvbihzcmNBdHRyLCBlbXB0eVN0cmluZygpKTsKLSAgICBpZiAoYXV0byB2aWRl
byA9IGlubmVyVmlkZW8oKSkKKyAgICAgICAgaW1hZ2UtPnNldElubGluZVN0eWxlUHJvcGVydHko
Q1NTUHJvcGVydHlEaXNwbGF5LCBDU1NWYWx1ZU5vbmUsIHRydWUpOworICAgIH0KKyAgICBpZiAo
YXV0byB2aWRlbyA9IGlubmVyVmlkZW8oKSkgewogICAgICAgICB2aWRlby0+c2V0QXR0cmlidXRl
V2l0aG91dFN5bmNocm9uaXphdGlvbihzcmNBdHRyLCBlbXB0eVN0cmluZygpKTsKLSAgICBwb3B1
bGF0ZVNoYWRvd1Jvb3RJZk5lY2Vzc2FyeSgpOworICAgICAgICB2aWRlby0+c2V0SW5saW5lU3R5
bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eURpc3BsYXksIENTU1ZhbHVlTm9uZSwgdHJ1ZSk7CisgICAg
fQogfQogCiBSZW5kZXJBdHRhY2htZW50KiBIVE1MQXR0YWNobWVudEVsZW1lbnQ6OmF0dGFjaG1l
bnRSZW5kZXJlcigpIGNvbnN0CkBAIC0yMDgsNiArMjE4LDE4IEBAIHZvaWQgSFRNTEF0dGFjaG1l
bnRFbGVtZW50Ojp1cGRhdGVEaXNwbGF5TW9kZShBdHRhY2htZW50RGlzcGxheU1vZGUgbW9kZSkK
ICAgICBpbnZhbGlkYXRlU3R5bGVBbmRSZW5kZXJlcnNGb3JTdWJ0cmVlKCk7CiB9CiAKK3ZvaWQg
SFRNTEF0dGFjaG1lbnRFbGVtZW50Ojp1cGRhdGVGaWxlV2l0aERhdGEoUmVmPFNoYXJlZEJ1ZmZl
cj4mJiBkYXRhLCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4mJiBuZXdDb250ZW50VHlwZSwgc3RkOjpv
cHRpb25hbDxTdHJpbmc+JiYgbmV3RmlsZW5hbWUpCit7CisgICAgYXV0byBmaWxlbmFtZSA9IG5l
d0ZpbGVuYW1lID8gKm5ld0ZpbGVuYW1lIDogYXR0YWNobWVudFRpdGxlKCk7CisgICAgYXV0byBj
b250ZW50VHlwZSA9IG5ld0NvbnRlbnRUeXBlID8gKm5ld0NvbnRlbnRUeXBlIDogRmlsZTo6Y29u
dGVudFR5cGVGb3JGaWxlKGZpbGVuYW1lKTsKKyAgICBhdXRvIGZpbGUgPSBGaWxlOjpjcmVhdGUo
QmxvYjo6Y3JlYXRlKFdURk1vdmUoZGF0YSksIGNvbnRlbnRUeXBlKSwgZmlsZW5hbWUpOworCisg
ICAgc2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbih0aXRsZUF0dHIsIGZpbGVuYW1l
KTsKKyAgICBzZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKHN1YnRpdGxlQXR0ciwg
ZmlsZVNpemVEZXNjcmlwdGlvbihmaWxlLT5zaXplKCkpKTsKKyAgICBzZXRBdHRyaWJ1dGVXaXRo
b3V0U3luY2hyb25pemF0aW9uKHR5cGVBdHRyLCBjb250ZW50VHlwZSk7CisgICAgc2V0RmlsZShX
VEZNb3ZlKGZpbGUpKTsKK30KKwogUmVmPEhUTUxJbWFnZUVsZW1lbnQ+IEhUTUxBdHRhY2htZW50
RWxlbWVudDo6ZW5zdXJlSW5uZXJJbWFnZSgpCiB7CiAgICAgaWYgKGF1dG8gaW1hZ2UgPSBpbm5l
ckltYWdlKCkpCkBAIC0yNTAsMTQgKzI3MiwxNyBAQCB2b2lkIEhUTUxBdHRhY2htZW50RWxlbWVu
dDo6cG9wdWxhdGVTaGFkb3dSb290SWZOZWNlc3NhcnkoKQogCiAgICAgaWYgKE1JTUVUeXBlUmVn
aXN0cnk6OmlzU3VwcG9ydGVkSW1hZ2VNSU1FVHlwZShtaW1lVHlwZSkgfHwgTUlNRVR5cGVSZWdp
c3RyeTo6aXNQREZNSU1FVHlwZShtaW1lVHlwZSkpIHsKICAgICAgICAgYXV0byBpbWFnZSA9IGVu
c3VyZUlubmVySW1hZ2UoKTsKLSAgICAgICAgaWYgKGltYWdlLT5hdHRyaWJ1dGVXaXRob3V0U3lu
Y2hyb25pemF0aW9uKHNyY0F0dHIpLmlzRW1wdHkoKSkKKyAgICAgICAgaWYgKGltYWdlLT5hdHRy
aWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKHNyY0F0dHIpLmlzRW1wdHkoKSkgewogICAgICAg
ICAgICAgaW1hZ2UtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oc3JjQXR0ciwg
RE9NVVJMOjpjcmVhdGVPYmplY3RVUkwoZG9jdW1lbnQoKSwgKm1fZmlsZSkpOworICAgICAgICAg
ICAgaW1hZ2UtPnNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlEaXNwbGF5LCBDU1NW
YWx1ZUlubGluZSwgdHJ1ZSk7CisgICAgICAgIH0KIAogICAgIH0gZWxzZSBpZiAoTUlNRVR5cGVS
ZWdpc3RyeTo6aXNTdXBwb3J0ZWRNZWRpYU1JTUVUeXBlKG1pbWVUeXBlKSkgewogICAgICAgICBh
dXRvIHZpZGVvID0gZW5zdXJlSW5uZXJWaWRlbygpOwogICAgICAgICBpZiAodmlkZW8tPmF0dHJp
YnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oc3JjQXR0cikuaXNFbXB0eSgpKSB7CiAgICAgICAg
ICAgICB2aWRlby0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihzcmNBdHRyLCBE
T01VUkw6OmNyZWF0ZU9iamVjdFVSTChkb2N1bWVudCgpLCAqbV9maWxlKSk7CiAgICAgICAgICAg
ICB2aWRlby0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihjb250cm9sc0F0dHIs
IGVtcHR5U3RyaW5nKCkpOworICAgICAgICAgICAgdmlkZW8tPnNldElubGluZVN0eWxlUHJvcGVy
dHkoQ1NTUHJvcGVydHlEaXNwbGF5LCBDU1NWYWx1ZUlubGluZSwgdHJ1ZSk7CiAgICAgICAgIH0K
ICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50
RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuaApp
bmRleCA1ZTUzZDY1NjBmZDY3YTA2ODc2MDE3YTRmMmRhNjg1YTYxY2MxNjQ2Li5jOGYzNWQ1YjU0
OGEzN2VhZTkyYmJiZGI4NGE2N2Y3ZTA0NjJhOWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEF0dGFjaG1lbnRFbGVtZW50LmgKQEAgLTUxLDYgKzUxLDcgQEAgcHVibGljOgogICAgIHZv
aWQgc2V0VW5pcXVlSWRlbnRpZmllcihjb25zdCBTdHJpbmcmKTsKIAogICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgdXBkYXRlRGlzcGxheU1vZGUoQXR0YWNobWVudERpc3BsYXlNb2RlKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0ZUZpbGVXaXRoRGF0YShSZWY8U2hhcmVkQnVmZmVyPiYm
IGRhdGEsIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiYmIG5ld0NvbnRlbnRUeXBlID0gc3RkOjpudWxs
b3B0LCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4mJiBuZXdGaWxlbmFtZSA9IHN0ZDo6bnVsbG9wdCk7
CiAKICAgICBJbnNlcnRlZEludG9BbmNlc3RvclJlc3VsdCBpbnNlcnRlZEludG9BbmNlc3RvcihJ
bnNlcnRpb25UeXBlLCBDb250YWluZXJOb2RlJikgZmluYWw7CiAgICAgdm9pZCByZW1vdmVkRnJv
bUFuY2VzdG9yKFJlbW92YWxUeXBlLCBDb250YWluZXJOb2RlJikgZmluYWw7CkBAIC03NSw2ICs3
Niw3IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPEhUTUxWaWRlb0VsZW1lbnQ+IGlubmVyVmlkZW8o
KSBjb25zdDsKIAogICAgIHZvaWQgcG9wdWxhdGVTaGFkb3dSb290SWZOZWNlc3NhcnkoKTsKKyAg
ICB2b2lkIGludmFsaWRhdGVTaGFkb3dSb290Q2hpbGRyZW5JZk5lY2Vzc2FyeSgpOwogCiAgICAg
QXR0YWNobWVudERpc3BsYXlNb2RlIGRlZmF1bHREaXNwbGF5TW9kZSgpIGNvbnN0CiAgICAgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuY3BwCmluZGV4IDc3
OGJhNjY0ZjA4NjJhMmM0NTA1N2VhMzc2Y2Q0NjMxMDhhM2Y5OGYuLjg1YThhM2U4YTVmMDY5Njlm
MzQyMDMzMjQ0ZTlhMDc3YjUxOTAwMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9BUElBdHRhY2htZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQVBJQXR0YWNobWVudC5jcHAKQEAgLTY0LDQgKzY0LDE0IEBAIHZvaWQgQXR0YWNobWVudDo6
c2V0RGlzcGxheU9wdGlvbnMoV2ViQ29yZTo6QXR0YWNobWVudERpc3BsYXlPcHRpb25zIG9wdGlv
bnMsIEZ1CiAgICAgICAgIGNhbGxiYWNrKFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvcjo6T3du
ZXJXYXNJbnZhbGlkYXRlZCk7CiB9CiAKK3ZvaWQgQXR0YWNobWVudDo6c2V0RGF0YUFuZENvbnRl
bnRUeXBlKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgV1RGOjpTdHJpbmcmIG5l
d0NvbnRlbnRUeXBlLCBjb25zdCBXVEY6OlN0cmluZyYgbmV3RmlsZW5hbWUsIEZ1bmN0aW9uPHZv
aWQoV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFjaykKK3sKKyAgICBhdXRv
IG9wdGlvbmFsTmV3Q29udGVudFR5cGUgPSBuZXdDb250ZW50VHlwZS5pc051bGwoKSA/IHN0ZDo6
bnVsbG9wdCA6IHN0ZDo6b3B0aW9uYWw8V1RGOjpTdHJpbmc+IHsgbmV3Q29udGVudFR5cGUgfTsK
KyAgICBhdXRvIG9wdGlvbmFsTmV3RmlsZW5hbWUgPSBuZXdGaWxlbmFtZS5pc051bGwoKSA/IHN0
ZDo6bnVsbG9wdCA6IHN0ZDo6b3B0aW9uYWw8V1RGOjpTdHJpbmc+IHsgbmV3RmlsZW5hbWUgfTsK
KyAgICBpZiAobV93ZWJQYWdlKQorICAgICAgICBtX3dlYlBhZ2UtPnNldEF0dGFjaG1lbnREYXRh
QW5kQ29udGVudFR5cGUobV9pZGVudGlmaWVyLCBkYXRhLCBXVEZNb3ZlKG9wdGlvbmFsTmV3Q29u
dGVudFR5cGUpLCBXVEZNb3ZlKG9wdGlvbmFsTmV3RmlsZW5hbWUpLCBXVEZNb3ZlKGNhbGxiYWNr
KSk7CisgICAgZWxzZQorICAgICAgICBjYWxsYmFjayhXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJy
b3I6Ok93bmVyV2FzSW52YWxpZGF0ZWQpOworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0FQSUF0dGFjaG1lbnQuaAppbmRleCA5ZmU3NWM5YWI5MGYyZjJhZWVlYjQ5NWI0Y2Qw
MzI2MzJjM2M1NzE5Li5kMjZmMmVmNzY4YmVkNzQ4NTk4MjgwYTM5YzE0MzBiYmUxNTljNGZmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmgKQEAgLTUxLDYg
KzUxLDcgQEAgcHVibGljOgogICAgIGNvbnN0IFdURjo6U3RyaW5nJiBpZGVudGlmaWVyKCkgY29u
c3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CiAgICAgdm9pZCByZXF1ZXN0RGF0YShGdW5jdGlv
bjx2b2lkKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+LCBXZWJLaXQ6OkNhbGxiYWNrQmFz
ZTo6RXJyb3IpPiYmKTsKICAgICB2b2lkIHNldERpc3BsYXlPcHRpb25zKFdlYkNvcmU6OkF0dGFj
aG1lbnREaXNwbGF5T3B0aW9ucywgRnVuY3Rpb248dm9pZChXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6
RXJyb3IpPiYmKTsKKyAgICB2b2lkIHNldERhdGFBbmRDb250ZW50VHlwZShXZWJDb3JlOjpTaGFy
ZWRCdWZmZXImLCBjb25zdCBXVEY6OlN0cmluZyYgbmV3Q29udGVudFR5cGUsIGNvbnN0IFdURjo6
U3RyaW5nJiBuZXdGaWxlbmFtZSwgRnVuY3Rpb248dm9pZChXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6
RXJyb3IpPiYmKTsKIAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBBdHRhY2htZW50KGNvbnN0IFdU
Rjo6U3RyaW5nJiBpZGVudGlmaWVyLCBXZWJLaXQ6OldlYlBhZ2VQcm94eSYpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0F0dGFjaG1lbnQuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdHRhY2htZW50LmgKaW5kZXggZjgz
Njg5ZGQyNjQ1Nzc5ZmRlZmNjOWM5ZDY1MWI4NWFhNTEyZDgwOC4uMjEwY2EwZWVhNGI3YjNjNmUy
ZjU0ZWVkODdlNjNlN2NhZmQ0YjNmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL19XS0F0dGFjaG1lbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvX1dLQXR0YWNobWVudC5oCkBAIC0yOSw2ICsyOSw4IEBACiAKICNpZiBXS19B
UElfRU5BQkxFRAogCitOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgorCiB0eXBlZGVmIE5TX0VOVU0o
TlNJbnRlZ2VyLCBfV0tBdHRhY2htZW50RGlzcGxheU1vZGUpIHsKICAgICBfV0tBdHRhY2htZW50
RGlzcGxheU1vZGVBdXRvID0gMSwKICAgICBfV0tBdHRhY2htZW50RGlzcGxheU1vZGVJblBsYWNl
LApAQCAtNDIsOCArNDQsMTEgQEAgV0tfQ0xBU1NfQVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJB
KSwgaW9zKFdLX0lPU19UQkEpKQogCiBXS19DTEFTU19BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19U
QkEpLCBpb3MoV0tfSU9TX1RCQSkpCiBAaW50ZXJmYWNlIF9XS0F0dGFjaG1lbnQgOiBOU09iamVj
dAotLSAodm9pZClyZXF1ZXN0RGF0YToodm9pZCheKShOU0RhdGEgKiwgTlNFcnJvciAqKSljb21w
bGV0aW9uSGFuZGxlcjsKLS0gKHZvaWQpc2V0RGlzcGxheU9wdGlvbnM6KF9XS0F0dGFjaG1lbnRE
aXNwbGF5T3B0aW9ucyAqKW9wdGlvbnMgY29tcGxldGlvbjoodm9pZCheKShOU0Vycm9yICopKWNv
bXBsZXRpb25IYW5kbGVyOworLSAodm9pZClyZXF1ZXN0RGF0YToodm9pZCheKShOU0RhdGEgKiBf
TnVsbGFibGUsIE5TRXJyb3IgKiBfTnVsbGFibGUpKWNvbXBsZXRpb25IYW5kbGVyOworLSAodm9p
ZClzZXREaXNwbGF5T3B0aW9uczooX1dLQXR0YWNobWVudERpc3BsYXlPcHRpb25zICopb3B0aW9u
cyBjb21wbGV0aW9uOih2b2lkKF4gX051bGxhYmxlKShOU0Vycm9yICogX051bGxhYmxlKSljb21w
bGV0aW9uSGFuZGxlcjsKKy0gKHZvaWQpc2V0RGF0YTooTlNEYXRhICopZGF0YSBuZXdDb250ZW50
VHlwZToobnVsbGFibGUgTlNTdHJpbmcgKiluZXdDb250ZW50VHlwZSBuZXdGaWxlbmFtZToobnVs
bGFibGUgTlNTdHJpbmcgKiluZXdGaWxlbmFtZSBjb21wbGV0aW9uOih2b2lkKF4gX051bGxhYmxl
KShOU0Vycm9yICogX051bGxhYmxlKSljb21wbGV0aW9uSGFuZGxlcjsKIEBlbmQKIAorTlNfQVNT
VU1FX05PTk5VTExfRU5ECisKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL19XS0F0dGFjaG1lbnQubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvX1dLQXR0YWNobWVudC5tbQppbmRleCBlMzhlZGM1ZWE0MThkMWE1N2E0OTU1
ZTYwODg4YzAwNWZlYzdlNTRjLi45MzljYzg3MjI0ZTU1MDdlYTE5YzhmNzU2NTUyNGI5NmMzMDBk
ZDQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXR0
YWNobWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXR0
YWNobWVudC5tbQpAQCAtMTA4LDYgKzEwOCwyMCBAQCAtICh2b2lkKXNldERpc3BsYXlPcHRpb25z
OihfV0tBdHRhY2htZW50RGlzcGxheU9wdGlvbnMgKilvcHRpb25zIGNvbXBsZXRpb246KHZvaQog
ICAgIH0pOwogfQogCistICh2b2lkKXNldERhdGE6KE5TRGF0YSAqKWRhdGEgbmV3Q29udGVudFR5
cGU6KE5TU3RyaW5nICopbmV3Q29udGVudFR5cGUgbmV3RmlsZW5hbWU6KE5TU3RyaW5nICopbmV3
RmlsZW5hbWUgY29tcGxldGlvbjoodm9pZCheKShOU0Vycm9yICopKWNvbXBsZXRpb25IYW5kbGVy
Cit7CisgICAgYXV0byBidWZmZXIgPSBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRh
KTsKKyAgICBfYXR0YWNobWVudC0+c2V0RGF0YUFuZENvbnRlbnRUeXBlKGJ1ZmZlci5nZXQoKSwg
bmV3Q29udGVudFR5cGUsIG5ld0ZpbGVuYW1lLCBbY2FwdHVyZWRCbG9jayA9IG1ha2VCbG9ja1B0
cihjb21wbGV0aW9uSGFuZGxlciksIGNhcHR1cmVkQnVmZmVyID0gYnVmZmVyLmNvcHlSZWYoKV0g
KENhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsKKyAgICAgICAgaWYgKCFjYXB0dXJlZEJsb2Nr
KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGlmIChlcnJvciA9PSBDYWxsYmFja0Jh
c2U6OkVycm9yOjpOb25lKQorICAgICAgICAgICAgY2FwdHVyZWRCbG9jayhuaWwpOworICAgICAg
ICBlbHNlCisgICAgICAgICAgICBjYXB0dXJlZEJsb2NrKFtOU0Vycm9yIGVycm9yV2l0aERvbWFp
bjpXS0Vycm9yRG9tYWluIGNvZGU6MSB1c2VySW5mbzpuaWxdKTsKKyAgICB9KTsKK30KKwogLSAo
TlNTdHJpbmcgKil1bmlxdWVJZGVudGlmaWVyCiB7CiAgICAgcmV0dXJuIF9hdHRhY2htZW50LT5p
ZGVudGlmaWVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRl
eCAxNDNlOWQ1MWYzMTdkOWFkYjdkNDZiNGQ4MDg1MDFiYjk5YjcxMDY5Li5iNWE2NDNmMjhlMDgy
YTVkOWM5ZGEwZDk3MDY0YTMzNTE0YWVmYTFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHAKQEAgLTcxODIsNiArNzE4MiwxNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
c2V0QXR0YWNobWVudERpc3BsYXlPcHRpb25zKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgQXR0
YWNobQogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0QXR0YWNobWVu
dERpc3BsYXlPcHRpb25zKGlkZW50aWZpZXIsIG9wdGlvbnMsIGNhbGxiYWNrSUQpLCBtX3BhZ2VJ
RCk7CiB9CiAKK3ZvaWQgV2ViUGFnZVByb3h5OjpzZXRBdHRhY2htZW50RGF0YUFuZENvbnRlbnRU
eXBlKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgU2hhcmVkQnVmZmVyJiBkYXRhLCBzdGQ6Om9w
dGlvbmFsPFN0cmluZz4mJiBuZXdDb250ZW50VHlwZSwgc3RkOjpvcHRpb25hbDxTdHJpbmc+JiYg
bmV3RmlsZW5hbWUsIEZ1bmN0aW9uPHZvaWQoQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJh
Y2spCit7CisgICAgaWYgKCFpc1ZhbGlkKCkpIHsKKyAgICAgICAgY2FsbGJhY2soQ2FsbGJhY2tC
YXNlOjpFcnJvcjo6T3duZXJXYXNJbnZhbGlkYXRlZCk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFj
ayksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7Cisg
ICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRBdHRhY2htZW50RGF0YUFu
ZENvbnRlbnRUeXBlKGlkZW50aWZpZXIsIElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSB7
ICZkYXRhIH0sIFdURk1vdmUobmV3Q29udGVudFR5cGUpLCBXVEZNb3ZlKG5ld0ZpbGVuYW1lKSwg
Y2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKK30KKwogdm9pZCBXZWJQYWdlUHJveHk6OmRpZEluc2Vy
dEF0dGFjaG1lbnQoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyKQogewogICAgIG1fcGFnZUNsaWVu
dC5kaWRJbnNlcnRBdHRhY2htZW50KGlkZW50aWZpZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaAppbmRleCBmMjUyOTYwOGJiMmYyZDQ0ZTgzMmVjNjY3MzA5NTlkY2Q1YmMy
MzI2Li44YzE4M2NlMjBlYjQyMGRkOWVkZDBkNWU0NmNmOTc0YmIyZjU5ZmViIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMTIyNSw2ICsxMjI1LDcgQEAgcHVibGlj
OgogICAgIHZvaWQgaW5zZXJ0QXR0YWNobWVudChjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNv
bnN0IFdlYkNvcmU6OkF0dGFjaG1lbnREaXNwbGF5T3B0aW9ucyYsIGNvbnN0IFN0cmluZyYgZmls
ZW5hbWUsIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBjb250ZW50VHlwZSwgV2ViQ29yZTo6U2hhcmVk
QnVmZmVyJiBkYXRhLCBGdW5jdGlvbjx2b2lkKENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKICAg
ICB2b2lkIHJlcXVlc3RBdHRhY2htZW50RGF0YShjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIEZ1
bmN0aW9uPHZvaWQoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4sIENhbGxiYWNrQmFzZTo6
RXJyb3IpPiYmKTsKICAgICB2b2lkIHNldEF0dGFjaG1lbnREaXNwbGF5T3B0aW9ucyhjb25zdCBT
dHJpbmcmIGlkZW50aWZpZXIsIFdlYkNvcmU6OkF0dGFjaG1lbnREaXNwbGF5T3B0aW9ucywgRnVu
Y3Rpb248dm9pZChDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CisgICAgdm9pZCBzZXRBdHRhY2ht
ZW50RGF0YUFuZENvbnRlbnRUeXBlKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgV2ViQ29yZTo6
U2hhcmVkQnVmZmVyJiBkYXRhLCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4mJiBuZXdDb250ZW50VHlw
ZSwgc3RkOjpvcHRpb25hbDxTdHJpbmc+JiYgbmV3RmlsZW5hbWUsIEZ1bmN0aW9uPHZvaWQoQ2Fs
bGJhY2tCYXNlOjpFcnJvcik+JiYpOwogI2VuZGlmCiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IGFkNDI0MmM5NzJkNDEwMDk2
MDhjNThlYjZiZDE3NDE0OWQyNmZiOTguLjhkYjgzNTJhMjI0MzY1M2Y0OTU3ZTk2MTA2OWNlYmJj
YmU5YTllMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwCkBAIC01Nzk5LDYgKzU3OTksMTUgQEAgdm9pZCBXZWJQYWdlOjpzZXRBdHRhY2htZW50RGlz
cGxheU9wdGlvbnMoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBBdHRhY2gKICAgICBz
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlZvaWRDYWxsYmFjayhjYWxsYmFja0lEKSk7CiB9
CiAKK3ZvaWQgV2ViUGFnZTo6c2V0QXR0YWNobWVudERhdGFBbmRDb250ZW50VHlwZShjb25zdCBT
dHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwgc3RkOjpv
cHRpb25hbDxTdHJpbmc+IG5ld0NvbnRlbnRUeXBlLCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gbmV3
RmlsZW5hbWUsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKK3sKKyAgICBpZiAoYXV0byBhdHRhY2ht
ZW50ID0gYXR0YWNobWVudEVsZW1lbnRXaXRoSWRlbnRpZmllcihpZGVudGlmaWVyKSkgeworICAg
ICAgICBhdHRhY2htZW50LT5kb2N1bWVudCgpLnVwZGF0ZUxheW91dCgpOworICAgICAgICBhdHRh
Y2htZW50LT51cGRhdGVGaWxlV2l0aERhdGEoU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRh
KCksIGRhdGEuc2l6ZSgpKSwgV1RGTW92ZShuZXdDb250ZW50VHlwZSksIFdURk1vdmUobmV3Rmls
ZW5hbWUpKTsKKyAgICB9CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpWb2lkQ2Fs
bGJhY2soY2FsbGJhY2tJRCkpOworfQorCiBSZWZQdHI8SFRNTEF0dGFjaG1lbnRFbGVtZW50PiBX
ZWJQYWdlOjphdHRhY2htZW50RWxlbWVudFdpdGhJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgaWRl
bnRpZmllcikgY29uc3QKIHsKICAgICAvLyBGSVhNRTogSGFuZGxlIGF0dGFjaG1lbnQgZWxlbWVu
dHMgaW4gc3ViZnJhbWVzIHRvbyBhcyB3ZWxsLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5oCmluZGV4IDY0ZDY2ZjI5Y2JlNDQzZjBhNWQyYzM0OTBhZWU3OTliMTdm
MDQyNmIuLjA3NGU0ODMwN2YxMjU0MGJkNGY2NzZmMjQxZWI3MDJhNjgwNjZkNmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTEwMTgsNiArMTAxOCw3
IEBAIHB1YmxpYzoKICAgICB2b2lkIGluc2VydEF0dGFjaG1lbnQoY29uc3QgU3RyaW5nJiBpZGVu
dGlmaWVyLCBjb25zdCBXZWJDb3JlOjpBdHRhY2htZW50RGlzcGxheU9wdGlvbnMmLCBjb25zdCBT
dHJpbmcmIGZpbGVuYW1lLCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gY29udGVudFR5cGUsIGNvbnN0
IElQQzo6RGF0YVJlZmVyZW5jZSYsIENhbGxiYWNrSUQpOwogICAgIHZvaWQgcmVxdWVzdEF0dGFj
aG1lbnREYXRhKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgQ2FsbGJhY2tJRCk7CiAgICAgdm9p
ZCBzZXRBdHRhY2htZW50RGlzcGxheU9wdGlvbnMoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBj
b25zdCBXZWJDb3JlOjpBdHRhY2htZW50RGlzcGxheU9wdGlvbnMmLCBDYWxsYmFja0lEKTsKKyAg
ICB2b2lkIHNldEF0dGFjaG1lbnREYXRhQW5kQ29udGVudFR5cGUoY29uc3QgU3RyaW5nJiBpZGVu
dGlmaWVyLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4g
bmV3Q29udGVudFR5cGUsIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBuZXdGaWxlbmFtZSwgQ2FsbGJh
Y2tJRCk7CiAjZW5kaWYKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCmluZGV4IDRjNDI4MDU5MmEzMjA1OTli
YWNmNDE4MWRlMmFmZWNhYmJhZDAwN2MuLjEzNjlkNDdhNTM4MDRkMjA2YTVjYTIzYmY5NzRhZTE5
YzFmZWE0ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5tZXNzYWdlcy5pbgpAQCAtNDg5LDUgKzQ4OSw2IEBAIG1lc3NhZ2VzIC0+IFdlYlBh
Z2UgTGVnYWN5UmVjZWl2ZXIgewogICAgIEluc2VydEF0dGFjaG1lbnQoU3RyaW5nIGlkZW50aWZp
ZXIsIHN0cnVjdCBXZWJDb3JlOjpBdHRhY2htZW50RGlzcGxheU9wdGlvbnMgb3B0aW9ucywgU3Ry
aW5nIGZpbGVuYW1lLCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gY29udGVudFR5cGUsIElQQzo6RGF0
YVJlZmVyZW5jZSBkYXRhLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICAgICBSZXF1
ZXN0QXR0YWNobWVudERhdGEoU3RyaW5nIGlkZW50aWZpZXIsIFdlYktpdDo6Q2FsbGJhY2tJRCBj
YWxsYmFja0lEKQogICAgIFNldEF0dGFjaG1lbnREaXNwbGF5T3B0aW9ucyhTdHJpbmcgaWRlbnRp
Zmllciwgc3RydWN0IFdlYkNvcmU6OkF0dGFjaG1lbnREaXNwbGF5T3B0aW9ucyBvcHRpb25zLCBX
ZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKKyAgICBTZXRBdHRhY2htZW50RGF0YUFuZENv
bnRlbnRUeXBlKFN0cmluZyBpZGVudGlmaWVyLCBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YSwgc3Rk
OjpvcHRpb25hbDxTdHJpbmc+IG5ld0NvbnRlbnRUeXBlLCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4g
bmV3RmlsZW5hbWUsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogI2VuZGlmCiB9CmRp
ZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNjVhYWRm
YmNmMGU4MDNmMGYwNzU5NGQ5ZDYyNjFhMmViNzQyY2I1My4uOWJkMGY3MTVkZmNjZTA0MGNmYzUz
ZjI3OTliYmE1MTM3YzRiNzM5NiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rv
b2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDE3LTExLTI5ICBXZW5zb24gSHNpZWgg
IDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtBdHRhY2htZW50IFN1cHBvcnRd
IEltcGxlbWVudCBTUEkgZm9yIGNsaWVudHMgdG8gdXBkYXRlIGEgZ2l2ZW4gYXR0YWNobWVudCdz
IGRhdGEKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4
MDE4NAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzUzNTU3MzE+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkcyB0d28gbmV3IEFQSSB0ZXN0cyB0
byBleGVyY2lzZSB0aGUgYXR0YWNobWVudCBkYXRhIHVwZGF0ZSBmbG93LgorCisgICAgICAgICog
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0F0dGFjaG1lbnRUZXN0cy5tbToKKyAg
ICAgICAgKC1bX1dLQXR0YWNobWVudCBzeW5jaHJvbm91c2x5U2V0RGF0YTpuZXdDb250ZW50VHlw
ZTpuZXdGaWxlbmFtZTplcnJvcjpdKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgor
CiAyMDE3LTExLTI5ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAg
ICAgICAgIFtBdHRhY2htZW50IFN1cHBvcnRdIEltcGxlbWVudCBTUEkgZm9yIGNsaWVudHMgdG8g
bWFrZSBhbiBhdHRhY2htZW50IGVsZW1lbnQgZGlzcGxheSBpbi1wbGFjZQpkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0F0dGFjaG1lbnRUZXN0cy5t
bSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tBdHRhY2htZW50VGVz
dHMubW0KaW5kZXggMDBhNTAzOGQ4NDhiZWY4NThmM2I4MGMzZmFlN2E1MWY1YjA4OTNjYi4uNDNm
ZDhkNmI4YWYyNGQzZGJjOTc4YzMwODgxN2I4NGMwMDU4NDdhZiAxMDA2NDQKLS0tIGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0F0dGFjaG1lbnRUZXN0cy5tbQorKysg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLQXR0YWNobWVudFRlc3Rz
Lm1tCkBAIC0yNjcsNiArMjY3LDIxIEBAIC0gKE5TRGF0YSAqKXN5bmNocm9ub3VzbHlSZXF1ZXN0
RGF0YTooTlNFcnJvciAqKillcnJvcgogICAgIHJldHVybiByZXN1bHQuYXV0b3JlbGVhc2UoKTsK
IH0KIAorLSAodm9pZClzeW5jaHJvbm91c2x5U2V0RGF0YTooTlNEYXRhICopZGF0YSBuZXdDb250
ZW50VHlwZTooTlNTdHJpbmcgKiluZXdDb250ZW50VHlwZSBuZXdGaWxlbmFtZTooTlNTdHJpbmcg
KiluZXdGaWxlbmFtZSBlcnJvcjooTlNFcnJvciAqKillcnJvcgoreworICAgIF9fYmxvY2sgUmV0
YWluUHRyPE5TRXJyb3I+IHJlc3VsdEVycm9yOworICAgIF9fYmxvY2sgYm9vbCBkb25lID0gZmFs
c2U7CisgICAgW3NlbGYgc2V0RGF0YTpkYXRhIG5ld0NvbnRlbnRUeXBlOm5ld0NvbnRlbnRUeXBl
IG5ld0ZpbGVuYW1lOm5ld0ZpbGVuYW1lIGNvbXBsZXRpb246XihOU0Vycm9yICplcnJvcikgewor
ICAgICAgICByZXN1bHRFcnJvciA9IHJldGFpblB0cihlcnJvcik7CisgICAgICAgIGRvbmUgPSB0
cnVlOworICAgIH1dOworCisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKKwor
ICAgIGlmIChlcnJvcikKKyAgICAgICAgKmVycm9yID0gcmVzdWx0RXJyb3IuYXV0b3JlbGVhc2Uo
KTsKK30KKwogLSAodm9pZClleHBlY3RSZXF1ZXN0ZWREYXRhVG9CZTooTlNEYXRhICopZXhwZWN0
ZWREYXRhCiB7CiAgICAgTlNFcnJvciAqZGF0YVJlcXVlc3RFcnJvciA9IG5pbDsKQEAgLTU3OCw2
ICs1OTMsODkgQEAgVEVTVChXS0F0dGFjaG1lbnRUZXN0cywgSW5QbGFjZVBERkF0dGFjaG1lbnRD
dXRBbmRQYXN0ZSkKICAgICBbYXR0YWNobWVudCBleHBlY3RSZXF1ZXN0ZWREYXRhVG9CZTpwZGZE
YXRhLmdldCgpXTsKIH0KIAorVEVTVChXS0F0dGFjaG1lbnRUZXN0cywgQ2hhbmdlQXR0YWNobWVu
dERhdGFBbmRGaWxlSW5mb3JtYXRpb24pCit7CisgICAgYXV0byB3ZWJWaWV3ID0gd2ViVmlld0Zv
clRlc3RpbmdBdHRhY2htZW50cygpOworICAgIFJldGFpblB0cjxfV0tBdHRhY2htZW50PiBhdHRh
Y2htZW50OworICAgIHsKKyAgICAgICAgUmV0YWluUHRyPE5TRGF0YT4gcGRmRGF0YSA9IHRlc3RQ
REZEYXRhKCk7CisgICAgICAgIE9ic2VydmVBdHRhY2htZW50VXBkYXRlc0ZvclNjb3BlIG9ic2Vy
dmVyKHdlYlZpZXcuZ2V0KCkpOworICAgICAgICBhdHRhY2htZW50ID0gcmV0YWluUHRyKFt3ZWJW
aWV3IHN5bmNocm9ub3VzbHlJbnNlcnRBdHRhY2htZW50V2l0aEZpbGVuYW1lOkAidGVzdC5wZGYi
IGNvbnRlbnRUeXBlOkAiYXBwbGljYXRpb24vcGRmIiBkYXRhOnBkZkRhdGEuZ2V0KCkgb3B0aW9u
czpkaXNwbGF5T3B0aW9uc1dpdGhNb2RlKF9XS0F0dGFjaG1lbnREaXNwbGF5TW9kZUFzSWNvbild
KTsKKyAgICAgICAgW2F0dGFjaG1lbnQgZXhwZWN0UmVxdWVzdGVkRGF0YVRvQmU6cGRmRGF0YS5n
ZXQoKV07CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShAInRlc3QucGRmIiwgW3dlYlZpZXcgdmFs
dWVPZkF0dHJpYnV0ZTpAInRpdGxlIiBmb3JRdWVyeVNlbGVjdG9yOkAiYXR0YWNobWVudCJdKTsK
KyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKEAiYXBwbGljYXRpb24vcGRmIiwgW3dlYlZpZXcgdmFs
dWVPZkF0dHJpYnV0ZTpAInR5cGUiIGZvclF1ZXJ5U2VsZWN0b3I6QCJhdHRhY2htZW50Il0pOwor
ICAgICAgICBvYnNlcnZlci5leHBlY3RBdHRhY2htZW50VXBkYXRlcyhAW10sIEBbYXR0YWNobWVu
dC5nZXQoKV0pOworICAgIH0KKyAgICB7CisgICAgICAgIFJldGFpblB0cjxOU0RhdGE+IGltYWdl
RGF0YSA9IHRlc3RJbWFnZURhdGEoKTsKKyAgICAgICAgT2JzZXJ2ZUF0dGFjaG1lbnRVcGRhdGVz
Rm9yU2NvcGUgb2JzZXJ2ZXIod2ViVmlldy5nZXQoKSk7CisgICAgICAgIFthdHRhY2htZW50IHN5
bmNocm9ub3VzbHlTZXREYXRhOmltYWdlRGF0YS5nZXQoKSBuZXdDb250ZW50VHlwZTpAImltYWdl
L3BuZyIgbmV3RmlsZW5hbWU6QCJpY29uLnBuZyIgZXJyb3I6bmlsXTsKKyAgICAgICAgW2F0dGFj
aG1lbnQgZXhwZWN0UmVxdWVzdGVkRGF0YVRvQmU6aW1hZ2VEYXRhLmdldCgpXTsKKyAgICAgICAg
RVhQRUNUX1dLX1NUUkVRKEAiaWNvbi5wbmciLCBbd2ViVmlldyB2YWx1ZU9mQXR0cmlidXRlOkAi
dGl0bGUiIGZvclF1ZXJ5U2VsZWN0b3I6QCJhdHRhY2htZW50Il0pOworICAgICAgICBFWFBFQ1Rf
V0tfU1RSRVEoQCJpbWFnZS9wbmciLCBbd2ViVmlldyB2YWx1ZU9mQXR0cmlidXRlOkAidHlwZSIg
Zm9yUXVlcnlTZWxlY3RvcjpAImF0dGFjaG1lbnQiXSk7CisgICAgICAgIG9ic2VydmVyLmV4cGVj
dEF0dGFjaG1lbnRVcGRhdGVzKEBbXSwgQFtdKTsKKyAgICB9CisgICAgeworICAgICAgICBSZXRh
aW5QdHI8TlNEYXRhPiB0ZXh0RGF0YSA9IHRlc3RIVE1MRGF0YSgpOworICAgICAgICBPYnNlcnZl
QXR0YWNobWVudFVwZGF0ZXNGb3JTY29wZSBvYnNlcnZlcih3ZWJWaWV3LmdldCgpKTsKKyAgICAg
ICAgW2F0dGFjaG1lbnQgc3luY2hyb25vdXNseVNldERpc3BsYXlPcHRpb25zOmRpc3BsYXlPcHRp
b25zV2l0aE1vZGUoX1dLQXR0YWNobWVudERpc3BsYXlNb2RlQXNJY29uKSBlcnJvcjpuaWxdOwor
ICAgICAgICAvLyBUaGUgbmV3IGNvbnRlbnQgdHlwZSBzaG91bGQgYmUgaW5mZXJyZWQgZnJvbSB0
aGUgZmlsZSBuYW1lLgorICAgICAgICBbYXR0YWNobWVudCBzeW5jaHJvbm91c2x5U2V0RGF0YTp0
ZXh0RGF0YS5nZXQoKSBuZXdDb250ZW50VHlwZTpuaWwgbmV3RmlsZW5hbWU6QCJmb28udHh0IiBl
cnJvcjpuaWxdOworICAgICAgICBbYXR0YWNobWVudCBleHBlY3RSZXF1ZXN0ZWREYXRhVG9CZTp0
ZXh0RGF0YS5nZXQoKV07CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShAImZvby50eHQiLCBbd2Vi
VmlldyB2YWx1ZU9mQXR0cmlidXRlOkAidGl0bGUiIGZvclF1ZXJ5U2VsZWN0b3I6QCJhdHRhY2ht
ZW50Il0pOworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoQCJ0ZXh0L3BsYWluIiwgW3dlYlZpZXcg
dmFsdWVPZkF0dHJpYnV0ZTpAInR5cGUiIGZvclF1ZXJ5U2VsZWN0b3I6QCJhdHRhY2htZW50Il0p
OworICAgICAgICBvYnNlcnZlci5leHBlY3RBdHRhY2htZW50VXBkYXRlcyhAW10sIEBbXSk7Cisg
ICAgfQorICAgIHsKKyAgICAgICAgUmV0YWluUHRyPE5TRGF0YT4gc2Vjb25kVGV4dERhdGEgPSBb
QCJIZWxsbyB3b3JsZCIgZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddOwor
ICAgICAgICBPYnNlcnZlQXR0YWNobWVudFVwZGF0ZXNGb3JTY29wZSBvYnNlcnZlcih3ZWJWaWV3
LmdldCgpKTsKKyAgICAgICAgLy8gQm90aCB0aGUgcHJldmlvdXMgZmlsZSBuYW1lIGFuZCB0eXBl
IHNob3VsZCBiZSBpbmZlcnJlZC4KKyAgICAgICAgW2F0dGFjaG1lbnQgc3luY2hyb25vdXNseVNl
dERhdGE6c2Vjb25kVGV4dERhdGEuZ2V0KCkgbmV3Q29udGVudFR5cGU6bmlsIG5ld0ZpbGVuYW1l
Om5pbCBlcnJvcjpuaWxdOworICAgICAgICBbYXR0YWNobWVudCBleHBlY3RSZXF1ZXN0ZWREYXRh
VG9CZTpzZWNvbmRUZXh0RGF0YS5nZXQoKV07CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShAImZv
by50eHQiLCBbd2ViVmlldyB2YWx1ZU9mQXR0cmlidXRlOkAidGl0bGUiIGZvclF1ZXJ5U2VsZWN0
b3I6QCJhdHRhY2htZW50Il0pOworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoQCJ0ZXh0L3BsYWlu
IiwgW3dlYlZpZXcgdmFsdWVPZkF0dHJpYnV0ZTpAInR5cGUiIGZvclF1ZXJ5U2VsZWN0b3I6QCJh
dHRhY2htZW50Il0pOworICAgICAgICBvYnNlcnZlci5leHBlY3RBdHRhY2htZW50VXBkYXRlcyhA
W10sIEBbXSk7CisgICAgfQorICAgIFt3ZWJWaWV3IGV4cGVjdFVwZGF0ZXNBZnRlckNvbW1hbmQ6
QCJEZWxldGVCYWNrd2FyZCIgd2l0aEFyZ3VtZW50Om5pbCBleHBlY3RlZFJlbW92YWxzOkBbYXR0
YWNobWVudC5nZXQoKV0gZXhwZWN0ZWRJbnNlcnRpb25zOkBbXV07Cit9CisKK1RFU1QoV0tBdHRh
Y2htZW50VGVzdHMsIENoYW5nZUF0dGFjaG1lbnREYXRhVXBkYXRlc1dpdGhJblBsYWNlRGlzcGxh
eSkKK3sKKyAgICBhdXRvIHdlYlZpZXcgPSB3ZWJWaWV3Rm9yVGVzdGluZ0F0dGFjaG1lbnRzKCk7
CisgICAgUmV0YWluUHRyPF9XS0F0dGFjaG1lbnQ+IGF0dGFjaG1lbnQ7CisgICAgeworICAgICAg
ICBSZXRhaW5QdHI8TlNEYXRhPiBwZGZEYXRhID0gdGVzdFBERkRhdGEoKTsKKyAgICAgICAgT2Jz
ZXJ2ZUF0dGFjaG1lbnRVcGRhdGVzRm9yU2NvcGUgb2JzZXJ2ZXIod2ViVmlldy5nZXQoKSk7Cisg
ICAgICAgIGF0dGFjaG1lbnQgPSByZXRhaW5QdHIoW3dlYlZpZXcgc3luY2hyb25vdXNseUluc2Vy
dEF0dGFjaG1lbnRXaXRoRmlsZW5hbWU6QCJ0ZXN0LnBkZiIgY29udGVudFR5cGU6QCJhcHBsaWNh
dGlvbi9wZGYiIGRhdGE6cGRmRGF0YS5nZXQoKSBvcHRpb25zOmRpc3BsYXlPcHRpb25zV2l0aE1v
ZGUoX1dLQXR0YWNobWVudERpc3BsYXlNb2RlSW5QbGFjZSldKTsKKyAgICAgICAgW3dlYlZpZXcg
d2FpdEZvckF0dGFjaG1lbnRFbGVtZW50U2l6ZVRvQmVjb21lOkNHU2l6ZU1ha2UoMTMwLCAyOSld
OworICAgICAgICBbYXR0YWNobWVudCBleHBlY3RSZXF1ZXN0ZWREYXRhVG9CZTpwZGZEYXRhLmdl
dCgpXTsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKEAidGVzdC5wZGYiLCBbd2ViVmlldyB2YWx1
ZU9mQXR0cmlidXRlOkAidGl0bGUiIGZvclF1ZXJ5U2VsZWN0b3I6QCJhdHRhY2htZW50Il0pOwor
ICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoQCJhcHBsaWNhdGlvbi9wZGYiLCBbd2ViVmlldyB2YWx1
ZU9mQXR0cmlidXRlOkAidHlwZSIgZm9yUXVlcnlTZWxlY3RvcjpAImF0dGFjaG1lbnQiXSk7Cisg
ICAgICAgIG9ic2VydmVyLmV4cGVjdEF0dGFjaG1lbnRVcGRhdGVzKEBbXSwgQFthdHRhY2htZW50
LmdldCgpXSk7CisgICAgfQorICAgIHsKKyAgICAgICAgUmV0YWluUHRyPE5TRGF0YT4gdmlkZW9E
YXRhID0gdGVzdFZpZGVvRGF0YSgpOworICAgICAgICBPYnNlcnZlQXR0YWNobWVudFVwZGF0ZXNG
b3JTY29wZSBvYnNlcnZlcih3ZWJWaWV3LmdldCgpKTsKKyAgICAgICAgW2F0dGFjaG1lbnQgc3lu
Y2hyb25vdXNseVNldERhdGE6dmlkZW9EYXRhLmdldCgpIG5ld0NvbnRlbnRUeXBlOkAidmlkZW8v
bXA0IiBuZXdGaWxlbmFtZTpAInRlc3QubXA0IiBlcnJvcjpuaWxdOworICAgICAgICBbd2ViVmll
dyB3YWl0Rm9yQXR0YWNobWVudEVsZW1lbnRTaXplVG9CZWNvbWU6Q0dTaXplTWFrZSgzMjAsIDI0
MCldOworICAgICAgICBbYXR0YWNobWVudCBleHBlY3RSZXF1ZXN0ZWREYXRhVG9CZTp2aWRlb0Rh
dGEuZ2V0KCldOworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoQCJ0ZXN0Lm1wNCIsIFt3ZWJWaWV3
IHZhbHVlT2ZBdHRyaWJ1dGU6QCJ0aXRsZSIgZm9yUXVlcnlTZWxlY3RvcjpAImF0dGFjaG1lbnQi
XSk7CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShAInZpZGVvL21wNCIsIFt3ZWJWaWV3IHZhbHVl
T2ZBdHRyaWJ1dGU6QCJ0eXBlIiBmb3JRdWVyeVNlbGVjdG9yOkAiYXR0YWNobWVudCJdKTsKKyAg
ICAgICAgb2JzZXJ2ZXIuZXhwZWN0QXR0YWNobWVudFVwZGF0ZXMoQFtdLCBAW10pOworICAgIH0K
KyAgICB7CisgICAgICAgIFJldGFpblB0cjxOU0RhdGE+IGltYWdlRGF0YSA9IHRlc3RJbWFnZURh
dGEoKTsKKyAgICAgICAgT2JzZXJ2ZUF0dGFjaG1lbnRVcGRhdGVzRm9yU2NvcGUgb2JzZXJ2ZXIo
d2ViVmlldy5nZXQoKSk7CisgICAgICAgIFthdHRhY2htZW50IHN5bmNocm9ub3VzbHlTZXREYXRh
OmltYWdlRGF0YS5nZXQoKSBuZXdDb250ZW50VHlwZTpAImltYWdlL3BuZyIgbmV3RmlsZW5hbWU6
QCJpY29uLnBuZyIgZXJyb3I6bmlsXTsKKyAgICAgICAgW3dlYlZpZXcgd2FpdEZvckF0dGFjaG1l
bnRFbGVtZW50U2l6ZVRvQmVjb21lOkNHU2l6ZU1ha2UoMjE1LCAxNzQpXTsKKyAgICAgICAgW2F0
dGFjaG1lbnQgZXhwZWN0UmVxdWVzdGVkRGF0YVRvQmU6aW1hZ2VEYXRhLmdldCgpXTsKKyAgICAg
ICAgRVhQRUNUX1dLX1NUUkVRKEAiaWNvbi5wbmciLCBbd2ViVmlldyB2YWx1ZU9mQXR0cmlidXRl
OkAidGl0bGUiIGZvclF1ZXJ5U2VsZWN0b3I6QCJhdHRhY2htZW50Il0pOworICAgICAgICBFWFBF
Q1RfV0tfU1RSRVEoQCJpbWFnZS9wbmciLCBbd2ViVmlldyB2YWx1ZU9mQXR0cmlidXRlOkAidHlw
ZSIgZm9yUXVlcnlTZWxlY3RvcjpAImF0dGFjaG1lbnQiXSk7CisgICAgICAgIG9ic2VydmVyLmV4
cGVjdEF0dGFjaG1lbnRVcGRhdGVzKEBbXSwgQFtdKTsKKyAgICB9CisgICAgW3dlYlZpZXcgZXhw
ZWN0VXBkYXRlc0FmdGVyQ29tbWFuZDpAIkRlbGV0ZUJhY2t3YXJkIiB3aXRoQXJndW1lbnQ6bmls
IGV4cGVjdGVkUmVtb3ZhbHM6QFthdHRhY2htZW50LmdldCgpXSBleHBlY3RlZEluc2VydGlvbnM6
QFtdXTsKK30KKwogfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQogCiAjZW5kaWYgLy8gV0tf
QVBJX0VOQUJMRUQK
</data>
<flag name="review"
          id="347172"
          type_id="1"
          status="+"
          setter="thorton"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>328165</attachid>
            <date>2017-12-01 15:04:42 -0800</date>
            <delta_ts>2017-12-01 15:36:45 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-180184-20171201150442.patch</filename>
            <type>text/plain</type>
            <size>38099</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI1MzUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWY4NGVmMzc2OGQ1MWU0
OGFiNDQ5MmFiMDY1MjY1MjhjNjNiMWVjMC4uZGQ5NWM2OTEzZWRiZWEzM2E2YTk2NGFiODg5ZjI3
OTVlNGEzNjlhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDE3LTExLTI5ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtBdHRhY2htZW50
IFN1cHBvcnRdIEltcGxlbWVudCBTUEkgZm9yIGNsaWVudHMgdG8gdXBkYXRlIGEgZ2l2ZW4gYXR0
YWNobWVudCdzIGRhdGEKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE4MDE4NAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzUzNTU3MzE+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgVGltIEhvcnRvbi4KKworICAgICAgICBBZGQgbmF0aXZlIEFQSSBzdXBw
b3J0IGZvciBNYWlsIHRvIHVwZGF0ZSB0aGUgZGF0YSAoYW5kIG9wdGlvbmFsbHksIHRoZSBuYW1l
IGFuZCB0eXBlKSBvZiBhIGdpdmVuIGF0dGFjaG1lbnQKKyAgICAgICAgZWxlbWVudC4gU2VlIHBl
ci1tZXRob2QgY29tbWVudHMgYmVsb3cgZm9yIG1vcmUgZGV0YWlsLgorCisgICAgICAgIFRlc3Q6
IFdLQXR0YWNobWVudFRlc3RzLkNoYW5nZUF0dGFjaG1lbnREYXRhQW5kRmlsZUluZm9ybWF0aW9u
CisgICAgICAgICAgICAgIFdLQXR0YWNobWVudFRlc3RzLkNoYW5nZUF0dGFjaG1lbnREYXRhVXBk
YXRlc1dpdGhJblBsYWNlRGlzcGxheQorCisgICAgICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjppbnNlcnRBdHRhY2htZW50KToKKyAgICAgICAgKiBo
dG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQXR0
YWNobWVudEVsZW1lbnQ6OnNldEZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEF0dGFjaG1l
bnRFbGVtZW50OjppbnZhbGlkYXRlU2hhZG93Um9vdENoaWxkcmVuSWZOZWNlc3NhcnkpOgorCisg
ICAgICAgIFB1bGwgb3V0IGxvZ2ljIHRvIGhpZGUgYW5kIHJlc2V0IHNoYWRvdyBET00gc3RhdGUg
aW50byBhIHNlcGFyYXRlIGhlbHBlciwgYW5kIGFkZGl0aW9uYWxseSBoaWRlIGJvdGggdGhlIGlt
YWdlCisgICAgICAgIGFuZCB2aWRlbyBjaGlsZCBlbGVtZW50cyBpZiB0aGV5IGV4aXN0LiBUaGlz
IHByZXZlbnRzIHVzIGZyb20gZ2V0dGluZyBpbnRvIGEgc3RhdGUgd2hlcmUgYm90aCBpbWFnZSBh
bmQgdmlkZW8KKyAgICAgICAgZWxlbWVudHMgbWF5IGFwcGVhciBzaWRlLWJ5LXNpZGUgd2hlbiBj
aGFuZ2luZyBkYXRhIGZyb20gYW4gaW1hZ2UgdG8gYSB2aWRlbyBvciB2aWNlIHZlcnNhLgorCisg
ICAgICAgIChXZWJDb3JlOjpIVE1MQXR0YWNobWVudEVsZW1lbnQ6OnVwZGF0ZUZpbGVXaXRoRGF0
YSk6CisKKyAgICAgICAgQWRkIGEgbmV3IGhlbHBlciB0byB1cGRhdGUgdGhlIGJhY2tpbmcgRmls
ZSBvZiBhbiBhdHRhY2htZW50IGVsZW1lbnQgZnJvbSBkYXRhLCBvcHRpb25hbGx5IHVwZGF0aW5n
IHRoZSBmaWxlbmFtZQorICAgICAgICBhbmQgY29udGVudCB0eXBlIGFzIHdlbGwuCisKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxBdHRhY2htZW50RWxlbWVudDo6cG9wdWxhdGVTaGFkb3dSb290SWZO
ZWNlc3NhcnkpOgorICAgICAgICAqIGh0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50Lmg6CisKIDIw
MTctMTEtMzAgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBTZXJ2
aWNlV29ya2VyVGhyZWFkJ3MgbV9leHRlbmRlZEV2ZW50cyBnZXRzIGRlc3Ryb3llZCBvbiB0aGUg
d3JvbmcgdGhyZWFkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDg0ZGZiNmM2NjYxYTM5NzQwNTFhNDNlODhjNDcxZTZi
NzdjMTc3YzIuLjNlMmE1ODVhNjg1ZjVmNWJmMDA3ZjI4ZGRjYWM3MjVjODIyM2EzMDcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMzEgQEAKKzIwMTctMTEtMjkgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9o
c2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgW0F0dGFjaG1lbnQgU3VwcG9ydF0gSW1wbGVtZW50
IFNQSSBmb3IgY2xpZW50cyB0byB1cGRhdGUgYSBnaXZlbiBhdHRhY2htZW50J3MgZGF0YQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgwMTg0CisgICAg
ICAgIDxyZGFyOi8vcHJvYmxlbS8zNTM1NTczMT4KKworICAgICAgICBSZXZpZXdlZCBieSBUaW0g
SG9ydG9uLgorCisgICAgICAgIEFkZCBwbHVtYmluZyB0byB0aGUgd2ViIHByb2Nlc3MgZm9yIHNl
dHRpbmcgdGhlIGF0dGFjaG1lbnQgZGF0YSAoYW5kIG9wdGlvbmFsbHksIHRoZSBjb250ZW50IHR5
cGUgYW5kL29yIGZpbGUKKyAgICAgICAgbmFtZSkgb2YgYSBnaXZlbiBhdHRhY2htZW50LiBTZWUg
V2ViQ29yZSBDaGFuZ2VMb2cgZm9yIG1vcmUgZGV0YWlsLiBDaGFuZ2VzIGNvdmVyZWQgYnkgbmV3
IEFQSSB0ZXN0cy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5jcHA6
CisgICAgICAgIChBUEk6OkF0dGFjaG1lbnQ6OnNldERhdGFBbmRDb250ZW50VHlwZSk6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tBdHRhY2htZW50Lmg6CisKKyAgICAgICAgQWRkIG51bGxhYmlsaXR5IGFu
bm90YXRpb25zIGFyb3VuZCBfV0tBdHRhY2htZW50IFNQSSBtZXRob2RzLgorCisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdHRhY2htZW50Lm1tOgorICAgICAgICAoLVtfV0tBdHRh
Y2htZW50IHNldERhdGE6bmV3Q29udGVudFR5cGU6bmV3RmlsZW5hbWU6Y29tcGxldGlvbjpdKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5OjpzZXRBdHRhY2htZW50RGF0YUFuZENvbnRlbnRUeXBlKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZXRBdHRhY2htZW50RGF0
YUFuZENvbnRlbnRUeXBlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5o
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorCiAy
MDE3LTExLTMwICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBbTWFj
XSByZW1vdmUgdW5uZWVkZWQgUmV0YWluUHRyIHVzZSBpbnRyb2R1Y2VkIGluIHIyMjUxNDIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRWRpdG9yLmNwcAppbmRleCBiY2M2ZmRjMzYyMzhkYjNmZTYxMWIxZDJjMTAx
NWQ2M2UyMDcxYWUwLi4xNTJmNDZkZDNkM2NkNDYxYzYxZjMxMDdlZjdkYzdmMmQyNzg2N2FjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCkBAIC0zODAyLDcgKzM4MDIsNyBAQCB2b2lkIEVk
aXRvcjo6aW5zZXJ0QXR0YWNobWVudChjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IEF0
dGFjaG1lbnREaXNwbGF5TwogewogICAgIGlmICghY29udGVudFR5cGUpCiAgICAgICAgIGNvbnRl
bnRUeXBlID0gRmlsZTo6Y29udGVudFR5cGVGb3JGaWxlKGZpbGVuYW1lKTsKLSAgICBpbnNlcnRB
dHRhY2htZW50RnJvbUZpbGUoaWRlbnRpZmllciwgb3B0aW9ucywgZmlsZW5hbWUsICpjb250ZW50
VHlwZSwgRmlsZTo6Y3JlYXRlKEJsb2I6OmNyZWF0ZShkYXRhLCAqY29udGVudFR5cGUpLCBmaWxl
bmFtZSkpOworICAgIGluc2VydEF0dGFjaG1lbnRGcm9tRmlsZShpZGVudGlmaWVyLCBvcHRpb25z
LCBmaWxlbmFtZSwgKmNvbnRlbnRUeXBlLCBGaWxlOjpjcmVhdGUoQmxvYjo6Y3JlYXRlKFdURk1v
dmUoZGF0YSksICpjb250ZW50VHlwZSksIGZpbGVuYW1lKSk7CiB9CiAKIHZvaWQgRWRpdG9yOjpp
bnNlcnRBdHRhY2htZW50RnJvbUZpbGUoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBB
dHRhY2htZW50RGlzcGxheU9wdGlvbnMmIG9wdGlvbnMsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUs
IGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIFJlZjxGaWxlPiYmIGZpbGUpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5jcHAKaW5kZXggNTRmMDMyMGVkNGVm
YWMxMTNiNTBhMzlmOWM0MzY4NjVkYzExNTlmNy4uMWEwMzM3OWFhNTU4ODA2YzFmNDIzMzVlZjA3
ZTRkYWEwNmI3MDIzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNo
bWVudEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRF
bGVtZW50LmNwcApAQCAtNDMsNiArNDMsNyBAQAogI2luY2x1ZGUgIlJlbmRlckJsb2NrRmxvdy5o
IgogI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKKyNp
bmNsdWRlIDxwYWwvRmlsZVNpemVGb3JtYXR0ZXIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CkBAIC0xMjAsMTEgKzEyMSwyMCBAQCB2b2lkIEhUTUxBdHRhY2htZW50RWxlbWVudDo6c2V0Rmls
ZShSZWZQdHI8RmlsZT4mJiBmaWxlKQogICAgIGlmIChhdXRvKiByZW5kZXJBdHRhY2htZW50ID0g
YXR0YWNobWVudFJlbmRlcmVyKCkpCiAgICAgICAgIHJlbmRlckF0dGFjaG1lbnQtPmludmFsaWRh
dGUoKTsKIAotICAgIGlmIChhdXRvIGltYWdlID0gaW5uZXJJbWFnZSgpKQorICAgIGludmFsaWRh
dGVTaGFkb3dSb290Q2hpbGRyZW5JZk5lY2Vzc2FyeSgpOworICAgIHBvcHVsYXRlU2hhZG93Um9v
dElmTmVjZXNzYXJ5KCk7Cit9CisKK3ZvaWQgSFRNTEF0dGFjaG1lbnRFbGVtZW50OjppbnZhbGlk
YXRlU2hhZG93Um9vdENoaWxkcmVuSWZOZWNlc3NhcnkoKQoreworICAgIGlmIChhdXRvIGltYWdl
ID0gaW5uZXJJbWFnZSgpKSB7CiAgICAgICAgIGltYWdlLT5zZXRBdHRyaWJ1dGVXaXRob3V0U3lu
Y2hyb25pemF0aW9uKHNyY0F0dHIsIGVtcHR5U3RyaW5nKCkpOwotICAgIGlmIChhdXRvIHZpZGVv
ID0gaW5uZXJWaWRlbygpKQorICAgICAgICBpbWFnZS0+c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShD
U1NQcm9wZXJ0eURpc3BsYXksIENTU1ZhbHVlTm9uZSwgdHJ1ZSk7CisgICAgfQorICAgIGlmIChh
dXRvIHZpZGVvID0gaW5uZXJWaWRlbygpKSB7CiAgICAgICAgIHZpZGVvLT5zZXRBdHRyaWJ1dGVX
aXRob3V0U3luY2hyb25pemF0aW9uKHNyY0F0dHIsIGVtcHR5U3RyaW5nKCkpOwotICAgIHBvcHVs
YXRlU2hhZG93Um9vdElmTmVjZXNzYXJ5KCk7CisgICAgICAgIHZpZGVvLT5zZXRJbmxpbmVTdHls
ZVByb3BlcnR5KENTU1Byb3BlcnR5RGlzcGxheSwgQ1NTVmFsdWVOb25lLCB0cnVlKTsKKyAgICB9
CiB9CiAKIFJlbmRlckF0dGFjaG1lbnQqIEhUTUxBdHRhY2htZW50RWxlbWVudDo6YXR0YWNobWVu
dFJlbmRlcmVyKCkgY29uc3QKQEAgLTIwOCw2ICsyMTgsMTggQEAgdm9pZCBIVE1MQXR0YWNobWVu
dEVsZW1lbnQ6OnVwZGF0ZURpc3BsYXlNb2RlKEF0dGFjaG1lbnREaXNwbGF5TW9kZSBtb2RlKQog
ICAgIGludmFsaWRhdGVTdHlsZUFuZFJlbmRlcmVyc0ZvclN1YnRyZWUoKTsKIH0KIAordm9pZCBI
VE1MQXR0YWNobWVudEVsZW1lbnQ6OnVwZGF0ZUZpbGVXaXRoRGF0YShSZWY8U2hhcmVkQnVmZmVy
PiYmIGRhdGEsIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiYmIG5ld0NvbnRlbnRUeXBlLCBzdGQ6Om9w
dGlvbmFsPFN0cmluZz4mJiBuZXdGaWxlbmFtZSkKK3sKKyAgICBhdXRvIGZpbGVuYW1lID0gbmV3
RmlsZW5hbWUgPyAqbmV3RmlsZW5hbWUgOiBhdHRhY2htZW50VGl0bGUoKTsKKyAgICBhdXRvIGNv
bnRlbnRUeXBlID0gbmV3Q29udGVudFR5cGUgPyAqbmV3Q29udGVudFR5cGUgOiBGaWxlOjpjb250
ZW50VHlwZUZvckZpbGUoZmlsZW5hbWUpOworICAgIGF1dG8gZmlsZSA9IEZpbGU6OmNyZWF0ZShC
bG9iOjpjcmVhdGUoV1RGTW92ZShkYXRhKSwgY29udGVudFR5cGUpLCBmaWxlbmFtZSk7CisKKyAg
ICBzZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKHRpdGxlQXR0ciwgZmlsZW5hbWUp
OworICAgIHNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oc3VidGl0bGVBdHRyLCBm
aWxlU2l6ZURlc2NyaXB0aW9uKGZpbGUtPnNpemUoKSkpOworICAgIHNldEF0dHJpYnV0ZVdpdGhv
dXRTeW5jaHJvbml6YXRpb24odHlwZUF0dHIsIGNvbnRlbnRUeXBlKTsKKyAgICBzZXRGaWxlKFdU
Rk1vdmUoZmlsZSkpOworfQorCiBSZWY8SFRNTEltYWdlRWxlbWVudD4gSFRNTEF0dGFjaG1lbnRF
bGVtZW50OjplbnN1cmVJbm5lckltYWdlKCkKIHsKICAgICBpZiAoYXV0byBpbWFnZSA9IGlubmVy
SW1hZ2UoKSkKQEAgLTI1MCwxNCArMjcyLDE3IEBAIHZvaWQgSFRNTEF0dGFjaG1lbnRFbGVtZW50
Ojpwb3B1bGF0ZVNoYWRvd1Jvb3RJZk5lY2Vzc2FyeSgpCiAKICAgICBpZiAoTUlNRVR5cGVSZWdp
c3RyeTo6aXNTdXBwb3J0ZWRJbWFnZU1JTUVUeXBlKG1pbWVUeXBlKSB8fCBNSU1FVHlwZVJlZ2lz
dHJ5Ojppc1BERk1JTUVUeXBlKG1pbWVUeXBlKSkgewogICAgICAgICBhdXRvIGltYWdlID0gZW5z
dXJlSW5uZXJJbWFnZSgpOwotICAgICAgICBpZiAoaW1hZ2UtPmF0dHJpYnV0ZVdpdGhvdXRTeW5j
aHJvbml6YXRpb24oc3JjQXR0cikuaXNFbXB0eSgpKQorICAgICAgICBpZiAoaW1hZ2UtPmF0dHJp
YnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oc3JjQXR0cikuaXNFbXB0eSgpKSB7CiAgICAgICAg
ICAgICBpbWFnZS0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihzcmNBdHRyLCBE
T01VUkw6OmNyZWF0ZU9iamVjdFVSTChkb2N1bWVudCgpLCAqbV9maWxlKSk7CisgICAgICAgICAg
ICBpbWFnZS0+c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eURpc3BsYXksIENTU1Zh
bHVlSW5saW5lLCB0cnVlKTsKKyAgICAgICAgfQogCiAgICAgfSBlbHNlIGlmIChNSU1FVHlwZVJl
Z2lzdHJ5Ojppc1N1cHBvcnRlZE1lZGlhTUlNRVR5cGUobWltZVR5cGUpKSB7CiAgICAgICAgIGF1
dG8gdmlkZW8gPSBlbnN1cmVJbm5lclZpZGVvKCk7CiAgICAgICAgIGlmICh2aWRlby0+YXR0cmli
dXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihzcmNBdHRyKS5pc0VtcHR5KCkpIHsKICAgICAgICAg
ICAgIHZpZGVvLT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKHNyY0F0dHIsIERP
TVVSTDo6Y3JlYXRlT2JqZWN0VVJMKGRvY3VtZW50KCksICptX2ZpbGUpKTsKICAgICAgICAgICAg
IHZpZGVvLT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGNvbnRyb2xzQXR0ciwg
ZW1wdHlTdHJpbmcoKSk7CisgICAgICAgICAgICB2aWRlby0+c2V0SW5saW5lU3R5bGVQcm9wZXJ0
eShDU1NQcm9wZXJ0eURpc3BsYXksIENTU1ZhbHVlSW5saW5lLCB0cnVlKTsKICAgICAgICAgfQog
ICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRF
bGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5oCmlu
ZGV4IDVlNTNkNjU2MGZkNjdhMDY4NzYwMTdhNGYyZGE2ODVhNjFjYzE2NDYuLmM4ZjM1ZDViNTQ4
YTM3ZWFlOTJiYmJkYjg0YTY3ZjdlMDQ2MmE5ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MQXR0YWNobWVudEVsZW1lbnQuaApAQCAtNTEsNiArNTEsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBzZXRVbmlxdWVJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYpOwogCiAgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCB1cGRhdGVEaXNwbGF5TW9kZShBdHRhY2htZW50RGlzcGxheU1vZGUpOworICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgdXBkYXRlRmlsZVdpdGhEYXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYg
ZGF0YSwgc3RkOjpvcHRpb25hbDxTdHJpbmc+JiYgbmV3Q29udGVudFR5cGUgPSBzdGQ6Om51bGxv
cHQsIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiYmIG5ld0ZpbGVuYW1lID0gc3RkOjpudWxsb3B0KTsK
IAogICAgIEluc2VydGVkSW50b0FuY2VzdG9yUmVzdWx0IGluc2VydGVkSW50b0FuY2VzdG9yKElu
c2VydGlvblR5cGUsIENvbnRhaW5lck5vZGUmKSBmaW5hbDsKICAgICB2b2lkIHJlbW92ZWRGcm9t
QW5jZXN0b3IoUmVtb3ZhbFR5cGUsIENvbnRhaW5lck5vZGUmKSBmaW5hbDsKQEAgLTc1LDYgKzc2
LDcgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8SFRNTFZpZGVvRWxlbWVudD4gaW5uZXJWaWRlbygp
IGNvbnN0OwogCiAgICAgdm9pZCBwb3B1bGF0ZVNoYWRvd1Jvb3RJZk5lY2Vzc2FyeSgpOworICAg
IHZvaWQgaW52YWxpZGF0ZVNoYWRvd1Jvb3RDaGlsZHJlbklmTmVjZXNzYXJ5KCk7CiAKICAgICBB
dHRhY2htZW50RGlzcGxheU1vZGUgZGVmYXVsdERpc3BsYXlNb2RlKCkgY29uc3QKICAgICB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5jcHAKaW5kZXggNzc4
YmE2NjRmMDg2MmEyYzQ1MDU3ZWEzNzZjZDQ2MzEwOGEzZjk4Zi4uODVhOGEzZThhNWYwNjk2OWYz
NDIwMzMyNDRlOWEwNzdiNTE5MDAwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0FQSUF0dGFjaG1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9BUElBdHRhY2htZW50LmNwcApAQCAtNjQsNCArNjQsMTQgQEAgdm9pZCBBdHRhY2htZW50Ojpz
ZXREaXNwbGF5T3B0aW9ucyhXZWJDb3JlOjpBdHRhY2htZW50RGlzcGxheU9wdGlvbnMgb3B0aW9u
cywgRnUKICAgICAgICAgY2FsbGJhY2soV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yOjpPd25l
cldhc0ludmFsaWRhdGVkKTsKIH0KIAordm9pZCBBdHRhY2htZW50OjpzZXREYXRhQW5kQ29udGVu
dFR5cGUoV2ViQ29yZTo6U2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBXVEY6OlN0cmluZyYgbmV3
Q29udGVudFR5cGUsIGNvbnN0IFdURjo6U3RyaW5nJiBuZXdGaWxlbmFtZSwgRnVuY3Rpb248dm9p
ZChXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrKQoreworICAgIGF1dG8g
b3B0aW9uYWxOZXdDb250ZW50VHlwZSA9IG5ld0NvbnRlbnRUeXBlLmlzTnVsbCgpID8gc3RkOjpu
dWxsb3B0IDogc3RkOjpvcHRpb25hbDxXVEY6OlN0cmluZz4geyBuZXdDb250ZW50VHlwZSB9Owor
ICAgIGF1dG8gb3B0aW9uYWxOZXdGaWxlbmFtZSA9IG5ld0ZpbGVuYW1lLmlzTnVsbCgpID8gc3Rk
OjpudWxsb3B0IDogc3RkOjpvcHRpb25hbDxXVEY6OlN0cmluZz4geyBuZXdGaWxlbmFtZSB9Owor
ICAgIGlmIChtX3dlYlBhZ2UpCisgICAgICAgIG1fd2ViUGFnZS0+c2V0QXR0YWNobWVudERhdGFB
bmRDb250ZW50VHlwZShtX2lkZW50aWZpZXIsIGRhdGEsIFdURk1vdmUob3B0aW9uYWxOZXdDb250
ZW50VHlwZSksIFdURk1vdmUob3B0aW9uYWxOZXdGaWxlbmFtZSksIFdURk1vdmUoY2FsbGJhY2sp
KTsKKyAgICBlbHNlCisgICAgICAgIGNhbGxiYWNrKFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJv
cjo6T3duZXJXYXNJbnZhbGlkYXRlZCk7Cit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQVBJQXR0YWNobWVudC5oCmluZGV4IDlmZTc1YzlhYjkwZjJmMmFlZWViNDk1YjRjZDAz
MjYzMmMzYzU3MTkuLmQyNmYyZWY3NjhiZWQ3NDg1OTgyODBhMzljMTQzMGJiZTE1OWM0ZmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuaApAQCAtNTEsNiAr
NTEsNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgV1RGOjpTdHJpbmcmIGlkZW50aWZpZXIoKSBjb25z
dCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KICAgICB2b2lkIHJlcXVlc3REYXRhKEZ1bmN0aW9u
PHZvaWQoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4sIFdlYktpdDo6Q2FsbGJhY2tCYXNl
OjpFcnJvcik+JiYpOwogICAgIHZvaWQgc2V0RGlzcGxheU9wdGlvbnMoV2ViQ29yZTo6QXR0YWNo
bWVudERpc3BsYXlPcHRpb25zLCBGdW5jdGlvbjx2b2lkKFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpF
cnJvcik+JiYpOworICAgIHZvaWQgc2V0RGF0YUFuZENvbnRlbnRUeXBlKFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlciYsIGNvbnN0IFdURjo6U3RyaW5nJiBuZXdDb250ZW50VHlwZSwgY29uc3QgV1RGOjpT
dHJpbmcmIG5ld0ZpbGVuYW1lLCBGdW5jdGlvbjx2b2lkKFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpF
cnJvcik+JiYpOwogCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IEF0dGFjaG1lbnQoY29uc3QgV1RG
OjpTdHJpbmcmIGlkZW50aWZpZXIsIFdlYktpdDo6V2ViUGFnZVByb3h5Jik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXR0YWNobWVudC5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0F0dGFjaG1lbnQuaAppbmRleCBmODM2
ODlkZDI2NDU3NzlmZGVmY2M5YzlkNjUxYjg1YWE1MTJkODA4Li4yMTBjYTBlZWE0YjdiM2M2ZTJm
NTRlZWQ4N2U2M2U3Y2FmZDRiM2YyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvX1dLQXR0YWNobWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tBdHRhY2htZW50LmgKQEAgLTI5LDYgKzI5LDggQEAKIAogI2lmIFdLX0FQ
SV9FTkFCTEVECiAKK05TX0FTU1VNRV9OT05OVUxMX0JFR0lOCisKIHR5cGVkZWYgTlNfRU5VTShO
U0ludGVnZXIsIF9XS0F0dGFjaG1lbnREaXNwbGF5TW9kZSkgewogICAgIF9XS0F0dGFjaG1lbnRE
aXNwbGF5TW9kZUF1dG8gPSAxLAogICAgIF9XS0F0dGFjaG1lbnREaXNwbGF5TW9kZUluUGxhY2Us
CkBAIC00Miw4ICs0NCwxMSBAQCBXS19DTEFTU19BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEp
LCBpb3MoV0tfSU9TX1RCQSkpCiAKIFdLX0NMQVNTX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RC
QSksIGlvcyhXS19JT1NfVEJBKSkKIEBpbnRlcmZhY2UgX1dLQXR0YWNobWVudCA6IE5TT2JqZWN0
Ci0tICh2b2lkKXJlcXVlc3REYXRhOih2b2lkKF4pKE5TRGF0YSAqLCBOU0Vycm9yICopKWNvbXBs
ZXRpb25IYW5kbGVyOwotLSAodm9pZClzZXREaXNwbGF5T3B0aW9uczooX1dLQXR0YWNobWVudERp
c3BsYXlPcHRpb25zICopb3B0aW9ucyBjb21wbGV0aW9uOih2b2lkKF4pKE5TRXJyb3IgKikpY29t
cGxldGlvbkhhbmRsZXI7CistICh2b2lkKXJlcXVlc3REYXRhOih2b2lkKF4pKE5TRGF0YSAqIF9O
dWxsYWJsZSwgTlNFcnJvciAqIF9OdWxsYWJsZSkpY29tcGxldGlvbkhhbmRsZXI7CistICh2b2lk
KXNldERpc3BsYXlPcHRpb25zOihfV0tBdHRhY2htZW50RGlzcGxheU9wdGlvbnMgKilvcHRpb25z
IGNvbXBsZXRpb246KHZvaWQoXiBfTnVsbGFibGUpKE5TRXJyb3IgKiBfTnVsbGFibGUpKWNvbXBs
ZXRpb25IYW5kbGVyOworLSAodm9pZClzZXREYXRhOihOU0RhdGEgKilkYXRhIG5ld0NvbnRlbnRU
eXBlOihudWxsYWJsZSBOU1N0cmluZyAqKW5ld0NvbnRlbnRUeXBlIG5ld0ZpbGVuYW1lOihudWxs
YWJsZSBOU1N0cmluZyAqKW5ld0ZpbGVuYW1lIGNvbXBsZXRpb246KHZvaWQoXiBfTnVsbGFibGUp
KE5TRXJyb3IgKiBfTnVsbGFibGUpKWNvbXBsZXRpb25IYW5kbGVyOwogQGVuZAogCitOU19BU1NV
TUVfTk9OTlVMTF9FTkQKKwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvX1dLQXR0YWNobWVudC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tBdHRhY2htZW50Lm1tCmluZGV4IGUzOGVkYzVlYTQxOGQxYTU3YTQ5NTVl
NjA4ODhjMDA1ZmVjN2U1NGMuLjkzOWNjODcyMjRlNTUwN2VhMTljOGY3NTY1NTI0Yjk2YzMwMGRk
NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdHRh
Y2htZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdHRh
Y2htZW50Lm1tCkBAIC0xMDgsNiArMTA4LDIwIEBAIC0gKHZvaWQpc2V0RGlzcGxheU9wdGlvbnM6
KF9XS0F0dGFjaG1lbnREaXNwbGF5T3B0aW9ucyAqKW9wdGlvbnMgY29tcGxldGlvbjoodm9pCiAg
ICAgfSk7CiB9CiAKKy0gKHZvaWQpc2V0RGF0YTooTlNEYXRhICopZGF0YSBuZXdDb250ZW50VHlw
ZTooTlNTdHJpbmcgKiluZXdDb250ZW50VHlwZSBuZXdGaWxlbmFtZTooTlNTdHJpbmcgKiluZXdG
aWxlbmFtZSBjb21wbGV0aW9uOih2b2lkKF4pKE5TRXJyb3IgKikpY29tcGxldGlvbkhhbmRsZXIK
K3sKKyAgICBhdXRvIGJ1ZmZlciA9IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEp
OworICAgIF9hdHRhY2htZW50LT5zZXREYXRhQW5kQ29udGVudFR5cGUoYnVmZmVyLmdldCgpLCBu
ZXdDb250ZW50VHlwZSwgbmV3RmlsZW5hbWUsIFtjYXB0dXJlZEJsb2NrID0gbWFrZUJsb2NrUHRy
KGNvbXBsZXRpb25IYW5kbGVyKSwgY2FwdHVyZWRCdWZmZXIgPSBidWZmZXIuY29weVJlZigpXSAo
Q2FsbGJhY2tCYXNlOjpFcnJvciBlcnJvcikgeworICAgICAgICBpZiAoIWNhcHR1cmVkQmxvY2sp
CisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgaWYgKGVycm9yID09IENhbGxiYWNrQmFz
ZTo6RXJyb3I6Ok5vbmUpCisgICAgICAgICAgICBjYXB0dXJlZEJsb2NrKG5pbCk7CisgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIGNhcHR1cmVkQmxvY2soW05TRXJyb3IgZXJyb3JXaXRoRG9tYWlu
OldLRXJyb3JEb21haW4gY29kZToxIHVzZXJJbmZvOm5pbF0pOworICAgIH0pOworfQorCiAtIChO
U1N0cmluZyAqKXVuaXF1ZUlkZW50aWZpZXIKIHsKICAgICByZXR1cm4gX2F0dGFjaG1lbnQtPmlk
ZW50aWZpZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4
IDE0M2U5ZDUxZjMxN2Q5YWRiN2Q0NmI0ZDgwODUwMWJiOTliNzEwNjkuLmI1YTY0M2YyOGUwODJh
NWQ5YzlkYTBkOTcwNjRhMzM1MTRhZWZhMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcApAQCAtNzE4Miw2ICs3MTgyLDE3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpz
ZXRBdHRhY2htZW50RGlzcGxheU9wdGlvbnMoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBBdHRh
Y2htCiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRBdHRhY2htZW50
RGlzcGxheU9wdGlvbnMoaWRlbnRpZmllciwgb3B0aW9ucywgY2FsbGJhY2tJRCksIG1fcGFnZUlE
KTsKIH0KIAordm9pZCBXZWJQYWdlUHJveHk6OnNldEF0dGFjaG1lbnREYXRhQW5kQ29udGVudFR5
cGUoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBTaGFyZWRCdWZmZXImIGRhdGEsIHN0ZDo6b3B0
aW9uYWw8U3RyaW5nPiYmIG5ld0NvbnRlbnRUeXBlLCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4mJiBu
ZXdGaWxlbmFtZSwgRnVuY3Rpb248dm9pZChDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFj
aykKK3sKKyAgICBpZiAoIWlzVmFsaWQoKSkgeworICAgICAgICBjYWxsYmFjayhDYWxsYmFja0Jh
c2U6OkVycm9yOjpPd25lcldhc0ludmFsaWRhdGVkKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNr
KSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKKyAg
ICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldEF0dGFjaG1lbnREYXRhQW5k
Q29udGVudFR5cGUoaWRlbnRpZmllciwgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIHsg
JmRhdGEgfSwgV1RGTW92ZShuZXdDb250ZW50VHlwZSksIFdURk1vdmUobmV3RmlsZW5hbWUpLCBj
YWxsYmFja0lEKSwgbV9wYWdlSUQpOworfQorCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkSW5zZXJ0
QXR0YWNobWVudChjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIpCiB7CiAgICAgbV9wYWdlQ2xpZW50
LmRpZEluc2VydEF0dGFjaG1lbnQoaWRlbnRpZmllcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5oCmluZGV4IGYyNTI5NjA4YmIyZjJkNDRlODMyZWM2NjczMDk1OWRjZDViYzIz
MjYuLjhjMTgzY2UyMGViNDIwZGQ5ZWRkMGQ1ZTQ2Y2Y5NzRiYjJmNTlmZWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0xMjI1LDYgKzEyMjUsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCBpbnNlcnRBdHRhY2htZW50KGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29u
c3QgV2ViQ29yZTo6QXR0YWNobWVudERpc3BsYXlPcHRpb25zJiwgY29uc3QgU3RyaW5nJiBmaWxl
bmFtZSwgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGNvbnRlbnRUeXBlLCBXZWJDb3JlOjpTaGFyZWRC
dWZmZXImIGRhdGEsIEZ1bmN0aW9uPHZvaWQoQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOwogICAg
IHZvaWQgcmVxdWVzdEF0dGFjaG1lbnREYXRhKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgRnVu
Y3Rpb248dm9pZChSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiwgQ2FsbGJhY2tCYXNlOjpF
cnJvcik+JiYpOwogICAgIHZvaWQgc2V0QXR0YWNobWVudERpc3BsYXlPcHRpb25zKGNvbnN0IFN0
cmluZyYgaWRlbnRpZmllciwgV2ViQ29yZTo6QXR0YWNobWVudERpc3BsYXlPcHRpb25zLCBGdW5j
dGlvbjx2b2lkKENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKKyAgICB2b2lkIHNldEF0dGFjaG1l
bnREYXRhQW5kQ29udGVudFR5cGUoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBXZWJDb3JlOjpT
aGFyZWRCdWZmZXImIGRhdGEsIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiYmIG5ld0NvbnRlbnRUeXBl
LCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4mJiBuZXdGaWxlbmFtZSwgRnVuY3Rpb248dm9pZChDYWxs
YmFja0Jhc2U6OkVycm9yKT4mJik7CiAjZW5kaWYKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggYWQ0MjQyYzk3MmQ0MTAwOTYw
OGM1OGViNmJkMTc0MTQ5ZDI2ZmI5OC4uOGRiODM1MmEyMjQzNjUzZjQ5NTdlOTYxMDY5Y2ViYmNi
ZTlhOWUxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHAKQEAgLTU3OTksNiArNTc5OSwxNSBAQCB2b2lkIFdlYlBhZ2U6OnNldEF0dGFjaG1lbnREaXNw
bGF5T3B0aW9ucyhjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IEF0dGFjaAogICAgIHNl
bmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6Vm9pZENhbGxiYWNrKGNhbGxiYWNrSUQpKTsKIH0K
IAordm9pZCBXZWJQYWdlOjpzZXRBdHRhY2htZW50RGF0YUFuZENvbnRlbnRUeXBlKGNvbnN0IFN0
cmluZyYgaWRlbnRpZmllciwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBzdGQ6Om9w
dGlvbmFsPFN0cmluZz4gbmV3Q29udGVudFR5cGUsIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBuZXdG
aWxlbmFtZSwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQoreworICAgIGlmIChhdXRvIGF0dGFjaG1l
bnQgPSBhdHRhY2htZW50RWxlbWVudFdpdGhJZGVudGlmaWVyKGlkZW50aWZpZXIpKSB7CisgICAg
ICAgIGF0dGFjaG1lbnQtPmRvY3VtZW50KCkudXBkYXRlTGF5b3V0KCk7CisgICAgICAgIGF0dGFj
aG1lbnQtPnVwZGF0ZUZpbGVXaXRoRGF0YShTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmRhdGEo
KSwgZGF0YS5zaXplKCkpLCBXVEZNb3ZlKG5ld0NvbnRlbnRUeXBlKSwgV1RGTW92ZShuZXdGaWxl
bmFtZSkpOworICAgIH0KKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlZvaWRDYWxs
YmFjayhjYWxsYmFja0lEKSk7Cit9CisKIFJlZlB0cjxIVE1MQXR0YWNobWVudEVsZW1lbnQ+IFdl
YlBhZ2U6OmF0dGFjaG1lbnRFbGVtZW50V2l0aElkZW50aWZpZXIoY29uc3QgU3RyaW5nJiBpZGVu
dGlmaWVyKSBjb25zdAogewogICAgIC8vIEZJWE1FOiBIYW5kbGUgYXR0YWNobWVudCBlbGVtZW50
cyBpbiBzdWJmcmFtZXMgdG9vIGFzIHdlbGwuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmgKaW5kZXggOTUzYjMyNjRjYzY1YTljNGZmOGM2ZmM3ZmIyMjhhM2YyYmFj
OWFlMi4uZjAxOWMwYzQ2MGMxZDc5NzU0MGExN2EwOWRjZjg5NmI3ZjJhNDkxYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtMTAxOCw2ICsxMDE4LDcg
QEAgcHVibGljOgogICAgIHZvaWQgaW5zZXJ0QXR0YWNobWVudChjb25zdCBTdHJpbmcmIGlkZW50
aWZpZXIsIGNvbnN0IFdlYkNvcmU6OkF0dGFjaG1lbnREaXNwbGF5T3B0aW9ucyYsIGNvbnN0IFN0
cmluZyYgZmlsZW5hbWUsIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBjb250ZW50VHlwZSwgY29uc3Qg
SVBDOjpEYXRhUmVmZXJlbmNlJiwgQ2FsbGJhY2tJRCk7CiAgICAgdm9pZCByZXF1ZXN0QXR0YWNo
bWVudERhdGEoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBDYWxsYmFja0lEKTsKICAgICB2b2lk
IHNldEF0dGFjaG1lbnREaXNwbGF5T3B0aW9ucyhjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNv
bnN0IFdlYkNvcmU6OkF0dGFjaG1lbnREaXNwbGF5T3B0aW9ucyYsIENhbGxiYWNrSUQpOworICAg
IHZvaWQgc2V0QXR0YWNobWVudERhdGFBbmRDb250ZW50VHlwZShjb25zdCBTdHJpbmcmIGlkZW50
aWZpZXIsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBu
ZXdDb250ZW50VHlwZSwgc3RkOjpvcHRpb25hbDxTdHJpbmc+IG5ld0ZpbGVuYW1lLCBDYWxsYmFj
a0lEKTsKICNlbmRpZgogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggNGM0MjgwNTkyYTMyMDU5OWJh
Y2Y0MTgxZGUyYWZlY2FiYmFkMDA3Yy4uMTM2OWQ0N2E1MzgwNGQyMDZhNWNhMjNiZjk3NGFlMTlj
MWZlYTRlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC00ODksNSArNDg5LDYgQEAgbWVzc2FnZXMgLT4gV2ViUGFn
ZSBMZWdhY3lSZWNlaXZlciB7CiAgICAgSW5zZXJ0QXR0YWNobWVudChTdHJpbmcgaWRlbnRpZmll
ciwgc3RydWN0IFdlYkNvcmU6OkF0dGFjaG1lbnREaXNwbGF5T3B0aW9ucyBvcHRpb25zLCBTdHJp
bmcgZmlsZW5hbWUsIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBjb250ZW50VHlwZSwgSVBDOjpEYXRh
UmVmZXJlbmNlIGRhdGEsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogICAgIFJlcXVl
c3RBdHRhY2htZW50RGF0YShTdHJpbmcgaWRlbnRpZmllciwgV2ViS2l0OjpDYWxsYmFja0lEIGNh
bGxiYWNrSUQpCiAgICAgU2V0QXR0YWNobWVudERpc3BsYXlPcHRpb25zKFN0cmluZyBpZGVudGlm
aWVyLCBzdHJ1Y3QgV2ViQ29yZTo6QXR0YWNobWVudERpc3BsYXlPcHRpb25zIG9wdGlvbnMsIFdl
YktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAgIFNldEF0dGFjaG1lbnREYXRhQW5kQ29u
dGVudFR5cGUoU3RyaW5nIGlkZW50aWZpZXIsIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhLCBzdGQ6
Om9wdGlvbmFsPFN0cmluZz4gbmV3Q29udGVudFR5cGUsIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBu
ZXdGaWxlbmFtZSwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAjZW5kaWYKIH0KZGlm
ZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA5ZjBiOTVk
NmVkMWY5NmNkYTZmOWMxZDViNjdiNGQzOWQ0ZDZjMWFhLi40YzFlMDQwMmY1MmNjYjQxOTgxNzk3
NmZlOTIzZTYxNzBiZWE0ZjJiIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9v
bHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTctMTEtMjkgIFdlbnNvbiBIc2llaCAg
PHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgW0F0dGFjaG1lbnQgU3VwcG9ydF0g
SW1wbGVtZW50IFNQSSBmb3IgY2xpZW50cyB0byB1cGRhdGUgYSBnaXZlbiBhdHRhY2htZW50J3Mg
ZGF0YQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgw
MTg0CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zNTM1NTczMT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBUaW0gSG9ydG9uLgorCisgICAgICAgIEFkZHMgdHdvIG5ldyBBUEkgdGVzdHMgdG8gZXhl
cmNpc2UgdGhlIGF0dGFjaG1lbnQgZGF0YSB1cGRhdGUgZmxvdy4KKworICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tBdHRhY2htZW50VGVzdHMubW06CisgICAgICAg
IChUZXN0V2ViS2l0QVBJOjpPYnNlcnZlQXR0YWNobWVudFVwZGF0ZXNGb3JTY29wZTo6T2JzZXJ2
ZUF0dGFjaG1lbnRVcGRhdGVzRm9yU2NvcGUpOgorICAgICAgICAoLVtfV0tBdHRhY2htZW50IHN5
bmNocm9ub3VzbHlTZXREaXNwbGF5T3B0aW9uczplcnJvcjpdKToKKyAgICAgICAgKC1bX1dLQXR0
YWNobWVudCBzeW5jaHJvbm91c2x5UmVxdWVzdERhdGE6XSk6CisgICAgICAgICgtW19XS0F0dGFj
aG1lbnQgc3luY2hyb25vdXNseVNldERhdGE6bmV3Q29udGVudFR5cGU6bmV3RmlsZW5hbWU6ZXJy
b3I6XSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKwogMjAxNy0xMS0zMCAgQ2Fy
bG9zIEFsYmVydG8gTG9wZXogUGVyZXogIDxjbG9wZXpAaWdhbGlhLmNvbT4KIAogICAgICAgICBB
ZGQgYSBzY3JpcHQgZm9yIGF1dG9tYXRpY2FsbHkgcnVubmluZyB0aGUgYnVpbGRib3QgY29uZmln
dXJhdGlvbnMgb24gYSB0ZXN0IGVudmlyb25tZW50LgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0F0dGFjaG1lbnRUZXN0cy5tbSBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tBdHRhY2htZW50VGVzdHMubW0KaW5kZXgg
YjNkYjczOGQxYTQ1YWY2OWM3OThjMWViYzkzMTVlZjg0YzNlNjZjMS4uOTNhZDJhNDg1NzFlZGUy
ODRmNGYyNjBiYjcyMWFmMzQ3OWFmNDM4MiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9XS0F0dGFjaG1lbnRUZXN0cy5tbQorKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLQXR0YWNobWVudFRlc3RzLm1tCkBAIC04Miw3
ICs4Miw3IEBAIHB1YmxpYzoKICAgICBPYnNlcnZlQXR0YWNobWVudFVwZGF0ZXNGb3JTY29wZShU
ZXN0V0tXZWJWaWV3ICp3ZWJWaWV3KQogICAgICAgICA6IG1fd2ViVmlldyh3ZWJWaWV3KQogICAg
IHsKLSAgICAgICAgbV9wcmV2aW91c0RlbGVnYXRlID0gcmV0YWluUHRyKHdlYlZpZXcuVUlEZWxl
Z2F0ZSk7CisgICAgICAgIG1fcHJldmlvdXNEZWxlZ2F0ZSA9IHdlYlZpZXcuVUlEZWxlZ2F0ZTsK
ICAgICAgICAgbV9vYnNlcnZlciA9IGFkb3B0TlMoW1tBdHRhY2htZW50VXBkYXRlT2JzZXJ2ZXIg
YWxsb2NdIGluaXRdKTsKICAgICAgICAgd2ViVmlldy5VSURlbGVnYXRlID0gbV9vYnNlcnZlci5n
ZXQoKTsKICAgICB9CkBAIC0yMzMsNyArMjMzLDcgQEAgLSAodm9pZClzeW5jaHJvbm91c2x5U2V0
RGlzcGxheU9wdGlvbnM6KF9XS0F0dGFjaG1lbnREaXNwbGF5T3B0aW9ucyAqKW9wdGlvbnMgZXIK
ICAgICBfX2Jsb2NrIFJldGFpblB0cjxOU0Vycm9yPiByZXN1bHRFcnJvcjsKICAgICBfX2Jsb2Nr
IGJvb2wgZG9uZSA9IGZhbHNlOwogICAgIFtzZWxmIHNldERpc3BsYXlPcHRpb25zOm9wdGlvbnMg
Y29tcGxldGlvbjpeKE5TRXJyb3IgKmVycm9yKSB7Ci0gICAgICAgIHJlc3VsdEVycm9yID0gcmV0
YWluUHRyKGVycm9yKTsKKyAgICAgICAgcmVzdWx0RXJyb3IgPSBlcnJvcjsKICAgICAgICAgZG9u
ZSA9IHRydWU7CiAgICAgfV07CiAKQEAgLTI0OSw4ICsyNDksOCBAQCAtIChOU0RhdGEgKilzeW5j
aHJvbm91c2x5UmVxdWVzdERhdGE6KE5TRXJyb3IgKiopZXJyb3IKICAgICBfX2Jsb2NrIFJldGFp
blB0cjxOU0Vycm9yPiByZXN1bHRFcnJvcjsKICAgICBfX2Jsb2NrIGJvb2wgZG9uZSA9IGZhbHNl
OwogICAgIFtzZWxmIHJlcXVlc3REYXRhOl4oTlNEYXRhICpkYXRhLCBOU0Vycm9yICplcnJvcikg
ewotICAgICAgICByZXN1bHQgPSByZXRhaW5QdHIoZGF0YSk7Ci0gICAgICAgIHJlc3VsdEVycm9y
ID0gcmV0YWluUHRyKGVycm9yKTsKKyAgICAgICAgcmVzdWx0ID0gZGF0YTsKKyAgICAgICAgcmVz
dWx0RXJyb3IgPSBlcnJvcjsKICAgICAgICAgZG9uZSA9IHRydWU7CiAgICAgfV07CiAKQEAgLTI2
Miw2ICsyNjIsMjEgQEAgLSAoTlNEYXRhICopc3luY2hyb25vdXNseVJlcXVlc3REYXRhOihOU0Vy
cm9yICoqKWVycm9yCiAgICAgcmV0dXJuIHJlc3VsdC5hdXRvcmVsZWFzZSgpOwogfQogCistICh2
b2lkKXN5bmNocm9ub3VzbHlTZXREYXRhOihOU0RhdGEgKilkYXRhIG5ld0NvbnRlbnRUeXBlOihO
U1N0cmluZyAqKW5ld0NvbnRlbnRUeXBlIG5ld0ZpbGVuYW1lOihOU1N0cmluZyAqKW5ld0ZpbGVu
YW1lIGVycm9yOihOU0Vycm9yICoqKWVycm9yCit7CisgICAgX19ibG9jayBSZXRhaW5QdHI8TlNF
cnJvcj4gcmVzdWx0RXJyb3I7CisgICAgX19ibG9jayBib29sIGRvbmUgPSBmYWxzZTsKKyAgICBb
c2VsZiBzZXREYXRhOmRhdGEgbmV3Q29udGVudFR5cGU6bmV3Q29udGVudFR5cGUgbmV3RmlsZW5h
bWU6bmV3RmlsZW5hbWUgY29tcGxldGlvbjpeKE5TRXJyb3IgKmVycm9yKSB7CisgICAgICAgIHJl
c3VsdEVycm9yID0gZXJyb3I7CisgICAgICAgIGRvbmUgPSB0cnVlOworICAgIH1dOworCisgICAg
VGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKKworICAgIGlmIChlcnJvcikKKyAgICAg
ICAgKmVycm9yID0gcmVzdWx0RXJyb3IuYXV0b3JlbGVhc2UoKTsKK30KKwogLSAodm9pZClleHBl
Y3RSZXF1ZXN0ZWREYXRhVG9CZTooTlNEYXRhICopZXhwZWN0ZWREYXRhCiB7CiAgICAgTlNFcnJv
ciAqZGF0YVJlcXVlc3RFcnJvciA9IG5pbDsKQEAgLTI4Niw3ICszMDEsNyBAQCBURVNUKFdLQXR0
YWNobWVudFRlc3RzLCBBdHRhY2htZW50RWxlbWVudEluc2VydGlvbikKICAgICB7CiAgICAgICAg
IE9ic2VydmVBdHRhY2htZW50VXBkYXRlc0ZvclNjb3BlIG9ic2VydmVyKHdlYlZpZXcuZ2V0KCkp
OwogICAgICAgICAvLyBVc2UgdGhlIGdpdmVuIGNvbnRlbnQgdHlwZSBmb3IgdGhlIGF0dGFjaG1l
bnQgZWxlbWVudCdzIHR5cGUuCi0gICAgICAgIGZpcnN0QXR0YWNobWVudCA9IHJldGFpblB0cihb
d2ViVmlldyBzeW5jaHJvbm91c2x5SW5zZXJ0QXR0YWNobWVudFdpdGhGaWxlbmFtZTpAImZvbyIg
Y29udGVudFR5cGU6QCJ0ZXh0L2h0bWwiIGRhdGE6dGVzdEhUTUxEYXRhKCkgb3B0aW9uczpuaWxd
KTsKKyAgICAgICAgZmlyc3RBdHRhY2htZW50ID0gW3dlYlZpZXcgc3luY2hyb25vdXNseUluc2Vy
dEF0dGFjaG1lbnRXaXRoRmlsZW5hbWU6QCJmb28iIGNvbnRlbnRUeXBlOkAidGV4dC9odG1sIiBk
YXRhOnRlc3RIVE1MRGF0YSgpIG9wdGlvbnM6bmlsXTsKICAgICAgICAgRVhQRUNUX1dLX1NUUkVR
KEAiZm9vIiwgW3dlYlZpZXcgdmFsdWVPZkF0dHJpYnV0ZTpAInRpdGxlIiBmb3JRdWVyeVNlbGVj
dG9yOkAiYXR0YWNobWVudCJdKTsKICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKEAidGV4dC9odG1s
IiwgW3dlYlZpZXcgdmFsdWVPZkF0dHJpYnV0ZTpAInR5cGUiIGZvclF1ZXJ5U2VsZWN0b3I6QCJh
dHRhY2htZW50Il0pOwogICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoQCIzOCBieXRlcyIsIFt3ZWJW
aWV3IHZhbHVlT2ZBdHRyaWJ1dGU6QCJzdWJ0aXRsZSIgZm9yUXVlcnlTZWxlY3RvcjpAImF0dGFj
aG1lbnQiXSk7CkBAIC0yOTksNyArMzE0LDcgQEAgVEVTVChXS0F0dGFjaG1lbnRUZXN0cywgQXR0
YWNobWVudEVsZW1lbnRJbnNlcnRpb24pCiAgICAgICAgIE9ic2VydmVBdHRhY2htZW50VXBkYXRl
c0ZvclNjb3BlIHNjb3BlKHdlYlZpZXcuZ2V0KCkpOwogICAgICAgICAvLyBTaW5jZSBubyBjb250
ZW50IHR5cGUgaXMgZXhwbGljaXRseSBzcGVjaWZpZWQsIGNvbXB1dGUgaXQgZnJvbSB0aGUgZmls
ZSBleHRlbnNpb24uCiAgICAgICAgIFt3ZWJWaWV3IF9leGVjdXRlRWRpdENvbW1hbmQ6QCJEZWxl
dGVCYWNrd2FyZCIgYXJndW1lbnQ6bmlsIGNvbXBsZXRpb246bmlsXTsKLSAgICAgICAgc2Vjb25k
QXR0YWNobWVudCA9IHJldGFpblB0cihbd2ViVmlldyBzeW5jaHJvbm91c2x5SW5zZXJ0QXR0YWNo
bWVudFdpdGhGaWxlbmFtZTpAImJhci5wbmciIGNvbnRlbnRUeXBlOm5pbCBkYXRhOnRlc3RJbWFn
ZURhdGEoKSBvcHRpb25zOm5pbF0pOworICAgICAgICBzZWNvbmRBdHRhY2htZW50ID0gW3dlYlZp
ZXcgc3luY2hyb25vdXNseUluc2VydEF0dGFjaG1lbnRXaXRoRmlsZW5hbWU6QCJiYXIucG5nIiBj
b250ZW50VHlwZTpuaWwgZGF0YTp0ZXN0SW1hZ2VEYXRhKCkgb3B0aW9uczpuaWxdOwogICAgICAg
ICBFWFBFQ1RfV0tfU1RSRVEoQCJiYXIucG5nIiwgW3dlYlZpZXcgdmFsdWVPZkF0dHJpYnV0ZTpA
InRpdGxlIiBmb3JRdWVyeVNlbGVjdG9yOkAiYXR0YWNobWVudCJdKTsKICAgICAgICAgRVhQRUNU
X1dLX1NUUkVRKEAiaW1hZ2UvcG5nIiwgW3dlYlZpZXcgdmFsdWVPZkF0dHJpYnV0ZTpAInR5cGUi
IGZvclF1ZXJ5U2VsZWN0b3I6QCJhdHRhY2htZW50Il0pOwogICAgICAgICBFWFBFQ1RfV0tfU1RS
RVEoQCIzNyBLQiIsIFt3ZWJWaWV3IHZhbHVlT2ZBdHRyaWJ1dGU6QCJzdWJ0aXRsZSIgZm9yUXVl
cnlTZWxlY3RvcjpAImF0dGFjaG1lbnQiXSk7CkBAIC0zMTYsNyArMzMxLDcgQEAgVEVTVChXS0F0
dGFjaG1lbnRUZXN0cywgQXR0YWNobWVudFVwZGF0ZXNXaGVuSW5zZXJ0aW5nQW5kRGVsZXRpbmdO
ZXdsaW5lKQogICAgIFJldGFpblB0cjxfV0tBdHRhY2htZW50PiBhdHRhY2htZW50OwogICAgIHsK
ICAgICAgICAgT2JzZXJ2ZUF0dGFjaG1lbnRVcGRhdGVzRm9yU2NvcGUgb2JzZXJ2ZXIod2ViVmll
dy5nZXQoKSk7Ci0gICAgICAgIGF0dGFjaG1lbnQgPSByZXRhaW5QdHIoW3dlYlZpZXcgc3luY2hy
b25vdXNseUluc2VydEF0dGFjaG1lbnRXaXRoRmlsZW5hbWU6QCJmb28udHh0IiBjb250ZW50VHlw
ZTpAInRleHQvcGxhaW4iIGRhdGE6dGVzdEhUTUxEYXRhKCkgb3B0aW9uczpuaWxdKTsKKyAgICAg
ICAgYXR0YWNobWVudCA9IFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlJbnNlcnRBdHRhY2htZW50V2l0
aEZpbGVuYW1lOkAiZm9vLnR4dCIgY29udGVudFR5cGU6QCJ0ZXh0L3BsYWluIiBkYXRhOnRlc3RI
VE1MRGF0YSgpIG9wdGlvbnM6bmlsXTsKICAgICAgICAgb2JzZXJ2ZXIuZXhwZWN0QXR0YWNobWVu
dFVwZGF0ZXMoQFsgXSwgQFthdHRhY2htZW50LmdldCgpXSk7CiAgICAgfQogICAgIFt3ZWJWaWV3
IGV4cGVjdFVwZGF0ZXNBZnRlckNvbW1hbmQ6QCJJbnNlcnRQYXJhZ3JhcGgiIHdpdGhBcmd1bWVu
dDpuaWwgZXhwZWN0ZWRSZW1vdmFsczpAW10gZXhwZWN0ZWRJbnNlcnRpb25zOkBbXV07CkBAIC0z
MzQsMTEgKzM0OSwxMSBAQCBURVNUKFdLQXR0YWNobWVudFRlc3RzLCBBdHRhY2htZW50VXBkYXRl
c1doZW5JbnNlcnRpbmdBbmREZWxldGluZ05ld2xpbmUpCiBURVNUKFdLQXR0YWNobWVudFRlc3Rz
LCBBdHRhY2htZW50VXBkYXRlc1doZW5VbmRvaW5nQW5kUmVkb2luZykKIHsKICAgICBhdXRvIHdl
YlZpZXcgPSB3ZWJWaWV3Rm9yVGVzdGluZ0F0dGFjaG1lbnRzKCk7Ci0gICAgUmV0YWluUHRyPE5T
RGF0YT4gaHRtbERhdGEgPSByZXRhaW5QdHIodGVzdEhUTUxEYXRhKCkpOworICAgIFJldGFpblB0
cjxOU0RhdGE+IGh0bWxEYXRhID0gdGVzdEhUTUxEYXRhKCk7CiAgICAgUmV0YWluUHRyPF9XS0F0
dGFjaG1lbnQ+IGF0dGFjaG1lbnQ7CiAgICAgewogICAgICAgICBPYnNlcnZlQXR0YWNobWVudFVw
ZGF0ZXNGb3JTY29wZSBvYnNlcnZlcih3ZWJWaWV3LmdldCgpKTsKLSAgICAgICAgYXR0YWNobWVu
dCA9IHJldGFpblB0cihbd2ViVmlldyBzeW5jaHJvbm91c2x5SW5zZXJ0QXR0YWNobWVudFdpdGhG
aWxlbmFtZTpAImZvby50eHQiIGNvbnRlbnRUeXBlOkAidGV4dC9wbGFpbiIgZGF0YTp0ZXN0SFRN
TERhdGEoKSBvcHRpb25zOm5pbF0pOworICAgICAgICBhdHRhY2htZW50ID0gW3dlYlZpZXcgc3lu
Y2hyb25vdXNseUluc2VydEF0dGFjaG1lbnRXaXRoRmlsZW5hbWU6QCJmb28udHh0IiBjb250ZW50
VHlwZTpAInRleHQvcGxhaW4iIGRhdGE6dGVzdEhUTUxEYXRhKCkgb3B0aW9uczpuaWxdOwogICAg
ICAgICBvYnNlcnZlci5leHBlY3RBdHRhY2htZW50VXBkYXRlcyhAWyBdLCBAW2F0dGFjaG1lbnQu
Z2V0KCldKTsKICAgICB9CiAgICAgW3dlYlZpZXcgZXhwZWN0VXBkYXRlc0FmdGVyQ29tbWFuZDpA
IlVuZG8iIHdpdGhBcmd1bWVudDpuaWwgZXhwZWN0ZWRSZW1vdmFsczpAW2F0dGFjaG1lbnQuZ2V0
KCldIGV4cGVjdGVkSW5zZXJ0aW9uczpAW11dOwpAQCAtMzY0LDcgKzM3OSw3IEBAIFRFU1QoV0tB
dHRhY2htZW50VGVzdHMsIEF0dGFjaG1lbnRVcGRhdGVzV2hlbkNoYW5naW5nRm9udFN0eWxlcykK
ICAgICBbd2ViVmlldyBfc3luY2hyb25vdXNseUV4ZWN1dGVFZGl0Q29tbWFuZDpAIkluc2VydFRl
eHQiIGFyZ3VtZW50OkAiSGVsbG8iXTsKICAgICB7CiAgICAgICAgIE9ic2VydmVBdHRhY2htZW50
VXBkYXRlc0ZvclNjb3BlIG9ic2VydmVyKHdlYlZpZXcuZ2V0KCkpOwotICAgICAgICBhdHRhY2ht
ZW50ID0gcmV0YWluUHRyKFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlJbnNlcnRBdHRhY2htZW50V2l0
aEZpbGVuYW1lOkAiZm9vLnR4dCIgY29udGVudFR5cGU6QCJ0ZXh0L3BsYWluIiBkYXRhOnRlc3RI
VE1MRGF0YSgpIG9wdGlvbnM6bmlsXSk7CisgICAgICAgIGF0dGFjaG1lbnQgPSBbd2ViVmlldyBz
eW5jaHJvbm91c2x5SW5zZXJ0QXR0YWNobWVudFdpdGhGaWxlbmFtZTpAImZvby50eHQiIGNvbnRl
bnRUeXBlOkAidGV4dC9wbGFpbiIgZGF0YTp0ZXN0SFRNTERhdGEoKSBvcHRpb25zOm5pbF07CiAg
ICAgICAgIG9ic2VydmVyLmV4cGVjdEF0dGFjaG1lbnRVcGRhdGVzKEBbIF0sIEBbYXR0YWNobWVu
dC5nZXQoKV0pOwogICAgIH0KICAgICBbd2ViVmlldyBleHBlY3RVcGRhdGVzQWZ0ZXJDb21tYW5k
OkAiSW5zZXJ0VGV4dCIgd2l0aEFyZ3VtZW50OkAiV29ybGQiIGV4cGVjdGVkUmVtb3ZhbHM6QFtd
IGV4cGVjdGVkSW5zZXJ0aW9uczpAW11dOwpAQCAtMzg1LDcgKzQwMCw3IEBAIFRFU1QoV0tBdHRh
Y2htZW50VGVzdHMsIEF0dGFjaG1lbnRVcGRhdGVzV2hlbkluc2VydGluZ0xpc3RzKQogICAgIFJl
dGFpblB0cjxfV0tBdHRhY2htZW50PiBhdHRhY2htZW50OwogICAgIHsKICAgICAgICAgT2JzZXJ2
ZUF0dGFjaG1lbnRVcGRhdGVzRm9yU2NvcGUgb2JzZXJ2ZXIod2ViVmlldy5nZXQoKSk7Ci0gICAg
ICAgIGF0dGFjaG1lbnQgPSByZXRhaW5QdHIoW3dlYlZpZXcgc3luY2hyb25vdXNseUluc2VydEF0
dGFjaG1lbnRXaXRoRmlsZW5hbWU6QCJmb28udHh0IiBjb250ZW50VHlwZTpAInRleHQvcGxhaW4i
IGRhdGE6dGVzdEhUTUxEYXRhKCkgb3B0aW9uczpuaWxdKTsKKyAgICAgICAgYXR0YWNobWVudCA9
IFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlJbnNlcnRBdHRhY2htZW50V2l0aEZpbGVuYW1lOkAiZm9v
LnR4dCIgY29udGVudFR5cGU6QCJ0ZXh0L3BsYWluIiBkYXRhOnRlc3RIVE1MRGF0YSgpIG9wdGlv
bnM6bmlsXTsKICAgICAgICAgb2JzZXJ2ZXIuZXhwZWN0QXR0YWNobWVudFVwZGF0ZXMoQFsgXSwg
QFthdHRhY2htZW50LmdldCgpXSk7CiAgICAgfQogICAgIFt3ZWJWaWV3IGV4cGVjdFVwZGF0ZXNB
ZnRlckNvbW1hbmQ6QCJJbnNlcnRPcmRlcmVkTGlzdCIgd2l0aEFyZ3VtZW50Om5pbCBleHBlY3Rl
ZFJlbW92YWxzOkBbXSBleHBlY3RlZEluc2VydGlvbnM6QFtdXTsKQEAgLTQyMSw3ICs0MzYsNyBA
QCBURVNUKFdLQXR0YWNobWVudFRlc3RzLCBBdHRhY2htZW50VXBkYXRlc1doZW5DdXR0aW5nQW5k
UGFzdGluZykKICAgICBSZXRhaW5QdHI8X1dLQXR0YWNobWVudD4gYXR0YWNobWVudDsKICAgICB7
CiAgICAgICAgIE9ic2VydmVBdHRhY2htZW50VXBkYXRlc0ZvclNjb3BlIG9ic2VydmVyKHdlYlZp
ZXcuZ2V0KCkpOwotICAgICAgICBhdHRhY2htZW50ID0gcmV0YWluUHRyKFt3ZWJWaWV3IHN5bmNo
cm9ub3VzbHlJbnNlcnRBdHRhY2htZW50V2l0aEZpbGVuYW1lOkAiZm9vLnR4dCIgY29udGVudFR5
cGU6QCJ0ZXh0L3BsYWluIiBkYXRhOnRlc3RIVE1MRGF0YSgpIG9wdGlvbnM6bmlsXSk7CisgICAg
ICAgIGF0dGFjaG1lbnQgPSBbd2ViVmlldyBzeW5jaHJvbm91c2x5SW5zZXJ0QXR0YWNobWVudFdp
dGhGaWxlbmFtZTpAImZvby50eHQiIGNvbnRlbnRUeXBlOkAidGV4dC9wbGFpbiIgZGF0YTp0ZXN0
SFRNTERhdGEoKSBvcHRpb25zOm5pbF07CiAgICAgICAgIG9ic2VydmVyLmV4cGVjdEF0dGFjaG1l
bnRVcGRhdGVzKEBbXSwgQFthdHRhY2htZW50LmdldCgpXSk7CiAgICAgfQogICAgIFthdHRhY2ht
ZW50IGV4cGVjdFJlcXVlc3RlZERhdGFUb0JlOnRlc3RIVE1MRGF0YSgpXTsKQEAgLTQ0Niw3ICs0
NjEsNyBAQCBURVNUKFdLQXR0YWNobWVudFRlc3RzLCBBdHRhY2htZW50RGF0YUZvckVtcHR5Rmls
ZSkKICAgICBSZXRhaW5QdHI8X1dLQXR0YWNobWVudD4gYXR0YWNobWVudDsKICAgICB7CiAgICAg
ICAgIE9ic2VydmVBdHRhY2htZW50VXBkYXRlc0ZvclNjb3BlIG9ic2VydmVyKHdlYlZpZXcuZ2V0
KCkpOwotICAgICAgICBhdHRhY2htZW50ID0gcmV0YWluUHRyKFt3ZWJWaWV3IHN5bmNocm9ub3Vz
bHlJbnNlcnRBdHRhY2htZW50V2l0aEZpbGVuYW1lOkAiZW1wdHkudHh0IiBjb250ZW50VHlwZTpA
InRleHQvcGxhaW4iIGRhdGE6W05TRGF0YSBkYXRhXSBvcHRpb25zOm5pbF0pOworICAgICAgICBh
dHRhY2htZW50ID0gW3dlYlZpZXcgc3luY2hyb25vdXNseUluc2VydEF0dGFjaG1lbnRXaXRoRmls
ZW5hbWU6QCJlbXB0eS50eHQiIGNvbnRlbnRUeXBlOkAidGV4dC9wbGFpbiIgZGF0YTpbTlNEYXRh
IGRhdGFdIG9wdGlvbnM6bmlsXTsKICAgICAgICAgb2JzZXJ2ZXIuZXhwZWN0QXR0YWNobWVudFVw
ZGF0ZXMoQFtdLCBAW2F0dGFjaG1lbnQuZ2V0KCldKTsKICAgICB9CiAgICAgW2F0dGFjaG1lbnQg
ZXhwZWN0UmVxdWVzdGVkRGF0YVRvQmU6W05TRGF0YSBkYXRhXV07CkBAIC00NjUsNyArNDgwLDcg
QEAgVEVTVChXS0F0dGFjaG1lbnRUZXN0cywgTXVsdGlwbGVTaW11bHRhbmVvdXNBdHRhY2htZW50
RGF0YVJlcXVlc3RzKQogICAgIFJldGFpblB0cjxfV0tBdHRhY2htZW50PiBhdHRhY2htZW50Owog
ICAgIHsKICAgICAgICAgT2JzZXJ2ZUF0dGFjaG1lbnRVcGRhdGVzRm9yU2NvcGUgb2JzZXJ2ZXIo
d2ViVmlldy5nZXQoKSk7Ci0gICAgICAgIGF0dGFjaG1lbnQgPSByZXRhaW5QdHIoW3dlYlZpZXcg
c3luY2hyb25vdXNseUluc2VydEF0dGFjaG1lbnRXaXRoRmlsZW5hbWU6QCJmb28udHh0IiBjb250
ZW50VHlwZTpAInRleHQvcGxhaW4iIGRhdGE6aHRtbERhdGEuZ2V0KCkgb3B0aW9uczpuaWxdKTsK
KyAgICAgICAgYXR0YWNobWVudCA9IFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlJbnNlcnRBdHRhY2ht
ZW50V2l0aEZpbGVuYW1lOkAiZm9vLnR4dCIgY29udGVudFR5cGU6QCJ0ZXh0L3BsYWluIiBkYXRh
Omh0bWxEYXRhLmdldCgpIG9wdGlvbnM6bmlsXTsKICAgICAgICAgb2JzZXJ2ZXIuZXhwZWN0QXR0
YWNobWVudFVwZGF0ZXMoQFtdLCBAW2F0dGFjaG1lbnQuZ2V0KCldKTsKICAgICB9CiAgICAgX19i
bG9jayBSZXRhaW5QdHI8TlNEYXRhPiBkYXRhRm9yRmlyc3RSZXF1ZXN0OwpAQCAtNDczLDExICs0
ODgsMTEgQEAgVEVTVChXS0F0dGFjaG1lbnRUZXN0cywgTXVsdGlwbGVTaW11bHRhbmVvdXNBdHRh
Y2htZW50RGF0YVJlcXVlc3RzKQogICAgIF9fYmxvY2sgYm9vbCBkb25lID0gZmFsc2U7CiAgICAg
W2F0dGFjaG1lbnQgcmVxdWVzdERhdGE6XihOU0RhdGEgKmRhdGEsIE5TRXJyb3IgKmVycm9yKSB7
CiAgICAgICAgIEVYUEVDVF9UUlVFKCFlcnJvcik7Ci0gICAgICAgIGRhdGFGb3JGaXJzdFJlcXVl
c3QgPSByZXRhaW5QdHIoZGF0YSk7CisgICAgICAgIGRhdGFGb3JGaXJzdFJlcXVlc3QgPSBkYXRh
OwogICAgIH1dOwogICAgIFthdHRhY2htZW50IHJlcXVlc3REYXRhOl4oTlNEYXRhICpkYXRhLCBO
U0Vycm9yICplcnJvcikgewogICAgICAgICBFWFBFQ1RfVFJVRSghZXJyb3IpOwotICAgICAgICBk
YXRhRm9yU2Vjb25kUmVxdWVzdCA9IHJldGFpblB0cihkYXRhKTsKKyAgICAgICAgZGF0YUZvclNl
Y29uZFJlcXVlc3QgPSBkYXRhOwogICAgICAgICBkb25lID0gdHJ1ZTsKICAgICB9XTsKIApAQCAt
NDk0LDcgKzUwOSw3IEBAIFRFU1QoV0tBdHRhY2htZW50VGVzdHMsIEluUGxhY2VJbWFnZUF0dGFj
aG1lbnRUb2dnbGVEaXNwbGF5TW9kZSkKICAgICBSZXRhaW5QdHI8X1dLQXR0YWNobWVudD4gYXR0
YWNobWVudDsKICAgICB7CiAgICAgICAgIE9ic2VydmVBdHRhY2htZW50VXBkYXRlc0ZvclNjb3Bl
IG9ic2VydmVyKHdlYlZpZXcuZ2V0KCkpOwotICAgICAgICBhdHRhY2htZW50ID0gcmV0YWluUHRy
KFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlJbnNlcnRBdHRhY2htZW50V2l0aEZpbGVuYW1lOkAiaWNv
bi5wbmciIGNvbnRlbnRUeXBlOkAiaW1hZ2UvcG5nIiBkYXRhOmltYWdlRGF0YS5nZXQoKSBvcHRp
b25zOmRpc3BsYXlPcHRpb25zV2l0aE1vZGUoX1dLQXR0YWNobWVudERpc3BsYXlNb2RlQXNJY29u
KV0pOworICAgICAgICBhdHRhY2htZW50ID0gW3dlYlZpZXcgc3luY2hyb25vdXNseUluc2VydEF0
dGFjaG1lbnRXaXRoRmlsZW5hbWU6QCJpY29uLnBuZyIgY29udGVudFR5cGU6QCJpbWFnZS9wbmci
IGRhdGE6aW1hZ2VEYXRhLmdldCgpIG9wdGlvbnM6ZGlzcGxheU9wdGlvbnNXaXRoTW9kZShfV0tB
dHRhY2htZW50RGlzcGxheU1vZGVBc0ljb24pXTsKICAgICAgICAgW2F0dGFjaG1lbnQgZXhwZWN0
UmVxdWVzdGVkRGF0YVRvQmU6aW1hZ2VEYXRhLmdldCgpXTsKICAgICAgICAgb2JzZXJ2ZXIuZXhw
ZWN0QXR0YWNobWVudFVwZGF0ZXMoQFtdLCBAW2F0dGFjaG1lbnQuZ2V0KCldKTsKICAgICB9CkBA
IC01MjAsNyArNTM1LDcgQEAgVEVTVChXS0F0dGFjaG1lbnRUZXN0cywgSW5QbGFjZUltYWdlQXR0
YWNobWVudFBhcmFncmFwaEluc2VydGlvbikKICAgICBSZXRhaW5QdHI8X1dLQXR0YWNobWVudD4g
YXR0YWNobWVudDsKICAgICB7CiAgICAgICAgIE9ic2VydmVBdHRhY2htZW50VXBkYXRlc0ZvclNj
b3BlIG9ic2VydmVyKHdlYlZpZXcuZ2V0KCkpOwotICAgICAgICBhdHRhY2htZW50ID0gcmV0YWlu
UHRyKFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlJbnNlcnRBdHRhY2htZW50V2l0aEZpbGVuYW1lOkAi
aWNvbi5wbmciIGNvbnRlbnRUeXBlOkAiaW1hZ2UvcG5nIiBkYXRhOmltYWdlRGF0YS5nZXQoKSBv
cHRpb25zOmRpc3BsYXlPcHRpb25zV2l0aE1vZGUoX1dLQXR0YWNobWVudERpc3BsYXlNb2RlSW5Q
bGFjZSldKTsKKyAgICAgICAgYXR0YWNobWVudCA9IFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlJbnNl
cnRBdHRhY2htZW50V2l0aEZpbGVuYW1lOkAiaWNvbi5wbmciIGNvbnRlbnRUeXBlOkAiaW1hZ2Uv
cG5nIiBkYXRhOmltYWdlRGF0YS5nZXQoKSBvcHRpb25zOmRpc3BsYXlPcHRpb25zV2l0aE1vZGUo
X1dLQXR0YWNobWVudERpc3BsYXlNb2RlSW5QbGFjZSldOwogICAgICAgICBvYnNlcnZlci5leHBl
Y3RBdHRhY2htZW50VXBkYXRlcyhAW10sIEBbYXR0YWNobWVudC5nZXQoKV0pOwogICAgIH0KICAg
ICBbd2ViVmlldyBleHBlY3RVcGRhdGVzQWZ0ZXJDb21tYW5kOkAiSW5zZXJ0UGFyYWdyYXBoIiB3
aXRoQXJndW1lbnQ6bmlsIGV4cGVjdGVkUmVtb3ZhbHM6QFtdIGV4cGVjdGVkSW5zZXJ0aW9uczpA
W11dOwpAQCAtNTQ0LDcgKzU1OSw3IEBAIFRFU1QoV0tBdHRhY2htZW50VGVzdHMsIEluUGxhY2VW
aWRlb0F0dGFjaG1lbnRJbnNlcnRpb25XaXRoaW5MaXN0KQogICAgIFt3ZWJWaWV3IF9zeW5jaHJv
bm91c2x5RXhlY3V0ZUVkaXRDb21tYW5kOkAiSW5zZXJ0T3JkZXJlZExpc3QiIGFyZ3VtZW50Om5p
bF07CiAgICAgewogICAgICAgICBPYnNlcnZlQXR0YWNobWVudFVwZGF0ZXNGb3JTY29wZSBvYnNl
cnZlcih3ZWJWaWV3LmdldCgpKTsKLSAgICAgICAgYXR0YWNobWVudCA9IHJldGFpblB0cihbd2Vi
VmlldyBzeW5jaHJvbm91c2x5SW5zZXJ0QXR0YWNobWVudFdpdGhGaWxlbmFtZTpAInRlc3QubXA0
IiBjb250ZW50VHlwZTpAInZpZGVvL21wNCIgZGF0YTp2aWRlb0RhdGEuZ2V0KCkgb3B0aW9uczpk
aXNwbGF5T3B0aW9uc1dpdGhNb2RlKF9XS0F0dGFjaG1lbnREaXNwbGF5TW9kZUluUGxhY2UpXSk7
CisgICAgICAgIGF0dGFjaG1lbnQgPSBbd2ViVmlldyBzeW5jaHJvbm91c2x5SW5zZXJ0QXR0YWNo
bWVudFdpdGhGaWxlbmFtZTpAInRlc3QubXA0IiBjb250ZW50VHlwZTpAInZpZGVvL21wNCIgZGF0
YTp2aWRlb0RhdGEuZ2V0KCkgb3B0aW9uczpkaXNwbGF5T3B0aW9uc1dpdGhNb2RlKF9XS0F0dGFj
aG1lbnREaXNwbGF5TW9kZUluUGxhY2UpXTsKICAgICAgICAgb2JzZXJ2ZXIuZXhwZWN0QXR0YWNo
bWVudFVwZGF0ZXMoQFtdLCBAW2F0dGFjaG1lbnQuZ2V0KCldKTsKICAgICB9CiAgICAgW3dlYlZp
ZXcgd2FpdEZvckF0dGFjaG1lbnRFbGVtZW50U2l6ZVRvQmVjb21lOkNHU2l6ZU1ha2UoMzIwLCAy
NDApXTsKQEAgLTU2NCw3ICs1NzksNyBAQCBURVNUKFdLQXR0YWNobWVudFRlc3RzLCBJblBsYWNl
UERGQXR0YWNobWVudEN1dEFuZFBhc3RlKQogICAgIFJldGFpblB0cjxfV0tBdHRhY2htZW50PiBh
dHRhY2htZW50OwogICAgIHsKICAgICAgICAgT2JzZXJ2ZUF0dGFjaG1lbnRVcGRhdGVzRm9yU2Nv
cGUgb2JzZXJ2ZXIod2ViVmlldy5nZXQoKSk7Ci0gICAgICAgIGF0dGFjaG1lbnQgPSByZXRhaW5Q
dHIoW3dlYlZpZXcgc3luY2hyb25vdXNseUluc2VydEF0dGFjaG1lbnRXaXRoRmlsZW5hbWU6QCJ0
ZXN0LnBkZiIgY29udGVudFR5cGU6QCJhcHBsaWNhdGlvbi9wZGYiIGRhdGE6cGRmRGF0YS5nZXQo
KSBvcHRpb25zOmRpc3BsYXlPcHRpb25zV2l0aE1vZGUoX1dLQXR0YWNobWVudERpc3BsYXlNb2Rl
SW5QbGFjZSldKTsKKyAgICAgICAgYXR0YWNobWVudCA9IFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlJ
bnNlcnRBdHRhY2htZW50V2l0aEZpbGVuYW1lOkAidGVzdC5wZGYiIGNvbnRlbnRUeXBlOkAiYXBw
bGljYXRpb24vcGRmIiBkYXRhOnBkZkRhdGEuZ2V0KCkgb3B0aW9uczpkaXNwbGF5T3B0aW9uc1dp
dGhNb2RlKF9XS0F0dGFjaG1lbnREaXNwbGF5TW9kZUluUGxhY2UpXTsKICAgICAgICAgb2JzZXJ2
ZXIuZXhwZWN0QXR0YWNobWVudFVwZGF0ZXMoQFtdLCBAW2F0dGFjaG1lbnQuZ2V0KCldKTsKICAg
ICAgICAgW3dlYlZpZXcgd2FpdEZvckF0dGFjaG1lbnRFbGVtZW50U2l6ZVRvQmVjb21lOkNHU2l6
ZU1ha2UoMTMwLCAyOSldOwogICAgIH0KQEAgLTU3Nyw2ICs1OTIsODkgQEAgVEVTVChXS0F0dGFj
aG1lbnRUZXN0cywgSW5QbGFjZVBERkF0dGFjaG1lbnRDdXRBbmRQYXN0ZSkKICAgICBbYXR0YWNo
bWVudCBleHBlY3RSZXF1ZXN0ZWREYXRhVG9CZTpwZGZEYXRhLmdldCgpXTsKIH0KIAorVEVTVChX
S0F0dGFjaG1lbnRUZXN0cywgQ2hhbmdlQXR0YWNobWVudERhdGFBbmRGaWxlSW5mb3JtYXRpb24p
Cit7CisgICAgYXV0byB3ZWJWaWV3ID0gd2ViVmlld0ZvclRlc3RpbmdBdHRhY2htZW50cygpOwor
ICAgIFJldGFpblB0cjxfV0tBdHRhY2htZW50PiBhdHRhY2htZW50OworICAgIHsKKyAgICAgICAg
UmV0YWluUHRyPE5TRGF0YT4gcGRmRGF0YSA9IHRlc3RQREZEYXRhKCk7CisgICAgICAgIE9ic2Vy
dmVBdHRhY2htZW50VXBkYXRlc0ZvclNjb3BlIG9ic2VydmVyKHdlYlZpZXcuZ2V0KCkpOworICAg
ICAgICBhdHRhY2htZW50ID0gW3dlYlZpZXcgc3luY2hyb25vdXNseUluc2VydEF0dGFjaG1lbnRX
aXRoRmlsZW5hbWU6QCJ0ZXN0LnBkZiIgY29udGVudFR5cGU6QCJhcHBsaWNhdGlvbi9wZGYiIGRh
dGE6cGRmRGF0YS5nZXQoKSBvcHRpb25zOmRpc3BsYXlPcHRpb25zV2l0aE1vZGUoX1dLQXR0YWNo
bWVudERpc3BsYXlNb2RlQXNJY29uKV07CisgICAgICAgIFthdHRhY2htZW50IGV4cGVjdFJlcXVl
c3RlZERhdGFUb0JlOnBkZkRhdGEuZ2V0KCldOworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoQCJ0
ZXN0LnBkZiIsIFt3ZWJWaWV3IHZhbHVlT2ZBdHRyaWJ1dGU6QCJ0aXRsZSIgZm9yUXVlcnlTZWxl
Y3RvcjpAImF0dGFjaG1lbnQiXSk7CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShAImFwcGxpY2F0
aW9uL3BkZiIsIFt3ZWJWaWV3IHZhbHVlT2ZBdHRyaWJ1dGU6QCJ0eXBlIiBmb3JRdWVyeVNlbGVj
dG9yOkAiYXR0YWNobWVudCJdKTsKKyAgICAgICAgb2JzZXJ2ZXIuZXhwZWN0QXR0YWNobWVudFVw
ZGF0ZXMoQFtdLCBAW2F0dGFjaG1lbnQuZ2V0KCldKTsKKyAgICB9CisgICAgeworICAgICAgICBS
ZXRhaW5QdHI8TlNEYXRhPiBpbWFnZURhdGEgPSB0ZXN0SW1hZ2VEYXRhKCk7CisgICAgICAgIE9i
c2VydmVBdHRhY2htZW50VXBkYXRlc0ZvclNjb3BlIG9ic2VydmVyKHdlYlZpZXcuZ2V0KCkpOwor
ICAgICAgICBbYXR0YWNobWVudCBzeW5jaHJvbm91c2x5U2V0RGF0YTppbWFnZURhdGEuZ2V0KCkg
bmV3Q29udGVudFR5cGU6QCJpbWFnZS9wbmciIG5ld0ZpbGVuYW1lOkAiaWNvbi5wbmciIGVycm9y
Om5pbF07CisgICAgICAgIFthdHRhY2htZW50IGV4cGVjdFJlcXVlc3RlZERhdGFUb0JlOmltYWdl
RGF0YS5nZXQoKV07CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShAImljb24ucG5nIiwgW3dlYlZp
ZXcgdmFsdWVPZkF0dHJpYnV0ZTpAInRpdGxlIiBmb3JRdWVyeVNlbGVjdG9yOkAiYXR0YWNobWVu
dCJdKTsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKEAiaW1hZ2UvcG5nIiwgW3dlYlZpZXcgdmFs
dWVPZkF0dHJpYnV0ZTpAInR5cGUiIGZvclF1ZXJ5U2VsZWN0b3I6QCJhdHRhY2htZW50Il0pOwor
ICAgICAgICBvYnNlcnZlci5leHBlY3RBdHRhY2htZW50VXBkYXRlcyhAW10sIEBbXSk7CisgICAg
fQorICAgIHsKKyAgICAgICAgUmV0YWluUHRyPE5TRGF0YT4gdGV4dERhdGEgPSB0ZXN0SFRNTERh
dGEoKTsKKyAgICAgICAgT2JzZXJ2ZUF0dGFjaG1lbnRVcGRhdGVzRm9yU2NvcGUgb2JzZXJ2ZXIo
d2ViVmlldy5nZXQoKSk7CisgICAgICAgIFthdHRhY2htZW50IHN5bmNocm9ub3VzbHlTZXREaXNw
bGF5T3B0aW9uczpkaXNwbGF5T3B0aW9uc1dpdGhNb2RlKF9XS0F0dGFjaG1lbnREaXNwbGF5TW9k
ZUFzSWNvbikgZXJyb3I6bmlsXTsKKyAgICAgICAgLy8gVGhlIG5ldyBjb250ZW50IHR5cGUgc2hv
dWxkIGJlIGluZmVycmVkIGZyb20gdGhlIGZpbGUgbmFtZS4KKyAgICAgICAgW2F0dGFjaG1lbnQg
c3luY2hyb25vdXNseVNldERhdGE6dGV4dERhdGEuZ2V0KCkgbmV3Q29udGVudFR5cGU6bmlsIG5l
d0ZpbGVuYW1lOkAiZm9vLnR4dCIgZXJyb3I6bmlsXTsKKyAgICAgICAgW2F0dGFjaG1lbnQgZXhw
ZWN0UmVxdWVzdGVkRGF0YVRvQmU6dGV4dERhdGEuZ2V0KCldOworICAgICAgICBFWFBFQ1RfV0tf
U1RSRVEoQCJmb28udHh0IiwgW3dlYlZpZXcgdmFsdWVPZkF0dHJpYnV0ZTpAInRpdGxlIiBmb3JR
dWVyeVNlbGVjdG9yOkAiYXR0YWNobWVudCJdKTsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKEAi
dGV4dC9wbGFpbiIsIFt3ZWJWaWV3IHZhbHVlT2ZBdHRyaWJ1dGU6QCJ0eXBlIiBmb3JRdWVyeVNl
bGVjdG9yOkAiYXR0YWNobWVudCJdKTsKKyAgICAgICAgb2JzZXJ2ZXIuZXhwZWN0QXR0YWNobWVu
dFVwZGF0ZXMoQFtdLCBAW10pOworICAgIH0KKyAgICB7CisgICAgICAgIFJldGFpblB0cjxOU0Rh
dGE+IHNlY29uZFRleHREYXRhID0gW0AiSGVsbG8gd29ybGQiIGRhdGFVc2luZ0VuY29kaW5nOk5T
VVRGOFN0cmluZ0VuY29kaW5nXTsKKyAgICAgICAgT2JzZXJ2ZUF0dGFjaG1lbnRVcGRhdGVzRm9y
U2NvcGUgb2JzZXJ2ZXIod2ViVmlldy5nZXQoKSk7CisgICAgICAgIC8vIEJvdGggdGhlIHByZXZp
b3VzIGZpbGUgbmFtZSBhbmQgdHlwZSBzaG91bGQgYmUgaW5mZXJyZWQuCisgICAgICAgIFthdHRh
Y2htZW50IHN5bmNocm9ub3VzbHlTZXREYXRhOnNlY29uZFRleHREYXRhLmdldCgpIG5ld0NvbnRl
bnRUeXBlOm5pbCBuZXdGaWxlbmFtZTpuaWwgZXJyb3I6bmlsXTsKKyAgICAgICAgW2F0dGFjaG1l
bnQgZXhwZWN0UmVxdWVzdGVkRGF0YVRvQmU6c2Vjb25kVGV4dERhdGEuZ2V0KCldOworICAgICAg
ICBFWFBFQ1RfV0tfU1RSRVEoQCJmb28udHh0IiwgW3dlYlZpZXcgdmFsdWVPZkF0dHJpYnV0ZTpA
InRpdGxlIiBmb3JRdWVyeVNlbGVjdG9yOkAiYXR0YWNobWVudCJdKTsKKyAgICAgICAgRVhQRUNU
X1dLX1NUUkVRKEAidGV4dC9wbGFpbiIsIFt3ZWJWaWV3IHZhbHVlT2ZBdHRyaWJ1dGU6QCJ0eXBl
IiBmb3JRdWVyeVNlbGVjdG9yOkAiYXR0YWNobWVudCJdKTsKKyAgICAgICAgb2JzZXJ2ZXIuZXhw
ZWN0QXR0YWNobWVudFVwZGF0ZXMoQFtdLCBAW10pOworICAgIH0KKyAgICBbd2ViVmlldyBleHBl
Y3RVcGRhdGVzQWZ0ZXJDb21tYW5kOkAiRGVsZXRlQmFja3dhcmQiIHdpdGhBcmd1bWVudDpuaWwg
ZXhwZWN0ZWRSZW1vdmFsczpAW2F0dGFjaG1lbnQuZ2V0KCldIGV4cGVjdGVkSW5zZXJ0aW9uczpA
W11dOworfQorCitURVNUKFdLQXR0YWNobWVudFRlc3RzLCBDaGFuZ2VBdHRhY2htZW50RGF0YVVw
ZGF0ZXNXaXRoSW5QbGFjZURpc3BsYXkpCit7CisgICAgYXV0byB3ZWJWaWV3ID0gd2ViVmlld0Zv
clRlc3RpbmdBdHRhY2htZW50cygpOworICAgIFJldGFpblB0cjxfV0tBdHRhY2htZW50PiBhdHRh
Y2htZW50OworICAgIHsKKyAgICAgICAgUmV0YWluUHRyPE5TRGF0YT4gcGRmRGF0YSA9IHRlc3RQ
REZEYXRhKCk7CisgICAgICAgIE9ic2VydmVBdHRhY2htZW50VXBkYXRlc0ZvclNjb3BlIG9ic2Vy
dmVyKHdlYlZpZXcuZ2V0KCkpOworICAgICAgICBhdHRhY2htZW50ID0gW3dlYlZpZXcgc3luY2hy
b25vdXNseUluc2VydEF0dGFjaG1lbnRXaXRoRmlsZW5hbWU6QCJ0ZXN0LnBkZiIgY29udGVudFR5
cGU6QCJhcHBsaWNhdGlvbi9wZGYiIGRhdGE6cGRmRGF0YS5nZXQoKSBvcHRpb25zOmRpc3BsYXlP
cHRpb25zV2l0aE1vZGUoX1dLQXR0YWNobWVudERpc3BsYXlNb2RlSW5QbGFjZSldOworICAgICAg
ICBbd2ViVmlldyB3YWl0Rm9yQXR0YWNobWVudEVsZW1lbnRTaXplVG9CZWNvbWU6Q0dTaXplTWFr
ZSgxMzAsIDI5KV07CisgICAgICAgIFthdHRhY2htZW50IGV4cGVjdFJlcXVlc3RlZERhdGFUb0Jl
OnBkZkRhdGEuZ2V0KCldOworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoQCJ0ZXN0LnBkZiIsIFt3
ZWJWaWV3IHZhbHVlT2ZBdHRyaWJ1dGU6QCJ0aXRsZSIgZm9yUXVlcnlTZWxlY3RvcjpAImF0dGFj
aG1lbnQiXSk7CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShAImFwcGxpY2F0aW9uL3BkZiIsIFt3
ZWJWaWV3IHZhbHVlT2ZBdHRyaWJ1dGU6QCJ0eXBlIiBmb3JRdWVyeVNlbGVjdG9yOkAiYXR0YWNo
bWVudCJdKTsKKyAgICAgICAgb2JzZXJ2ZXIuZXhwZWN0QXR0YWNobWVudFVwZGF0ZXMoQFtdLCBA
W2F0dGFjaG1lbnQuZ2V0KCldKTsKKyAgICB9CisgICAgeworICAgICAgICBSZXRhaW5QdHI8TlNE
YXRhPiB2aWRlb0RhdGEgPSB0ZXN0VmlkZW9EYXRhKCk7CisgICAgICAgIE9ic2VydmVBdHRhY2ht
ZW50VXBkYXRlc0ZvclNjb3BlIG9ic2VydmVyKHdlYlZpZXcuZ2V0KCkpOworICAgICAgICBbYXR0
YWNobWVudCBzeW5jaHJvbm91c2x5U2V0RGF0YTp2aWRlb0RhdGEuZ2V0KCkgbmV3Q29udGVudFR5
cGU6QCJ2aWRlby9tcDQiIG5ld0ZpbGVuYW1lOkAidGVzdC5tcDQiIGVycm9yOm5pbF07CisgICAg
ICAgIFt3ZWJWaWV3IHdhaXRGb3JBdHRhY2htZW50RWxlbWVudFNpemVUb0JlY29tZTpDR1NpemVN
YWtlKDMyMCwgMjQwKV07CisgICAgICAgIFthdHRhY2htZW50IGV4cGVjdFJlcXVlc3RlZERhdGFU
b0JlOnZpZGVvRGF0YS5nZXQoKV07CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShAInRlc3QubXA0
IiwgW3dlYlZpZXcgdmFsdWVPZkF0dHJpYnV0ZTpAInRpdGxlIiBmb3JRdWVyeVNlbGVjdG9yOkAi
YXR0YWNobWVudCJdKTsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKEAidmlkZW8vbXA0IiwgW3dl
YlZpZXcgdmFsdWVPZkF0dHJpYnV0ZTpAInR5cGUiIGZvclF1ZXJ5U2VsZWN0b3I6QCJhdHRhY2ht
ZW50Il0pOworICAgICAgICBvYnNlcnZlci5leHBlY3RBdHRhY2htZW50VXBkYXRlcyhAW10sIEBb
XSk7CisgICAgfQorICAgIHsKKyAgICAgICAgUmV0YWluUHRyPE5TRGF0YT4gaW1hZ2VEYXRhID0g
dGVzdEltYWdlRGF0YSgpOworICAgICAgICBPYnNlcnZlQXR0YWNobWVudFVwZGF0ZXNGb3JTY29w
ZSBvYnNlcnZlcih3ZWJWaWV3LmdldCgpKTsKKyAgICAgICAgW2F0dGFjaG1lbnQgc3luY2hyb25v
dXNseVNldERhdGE6aW1hZ2VEYXRhLmdldCgpIG5ld0NvbnRlbnRUeXBlOkAiaW1hZ2UvcG5nIiBu
ZXdGaWxlbmFtZTpAImljb24ucG5nIiBlcnJvcjpuaWxdOworICAgICAgICBbd2ViVmlldyB3YWl0
Rm9yQXR0YWNobWVudEVsZW1lbnRTaXplVG9CZWNvbWU6Q0dTaXplTWFrZSgyMTUsIDE3NCldOwor
ICAgICAgICBbYXR0YWNobWVudCBleHBlY3RSZXF1ZXN0ZWREYXRhVG9CZTppbWFnZURhdGEuZ2V0
KCldOworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoQCJpY29uLnBuZyIsIFt3ZWJWaWV3IHZhbHVl
T2ZBdHRyaWJ1dGU6QCJ0aXRsZSIgZm9yUXVlcnlTZWxlY3RvcjpAImF0dGFjaG1lbnQiXSk7Cisg
ICAgICAgIEVYUEVDVF9XS19TVFJFUShAImltYWdlL3BuZyIsIFt3ZWJWaWV3IHZhbHVlT2ZBdHRy
aWJ1dGU6QCJ0eXBlIiBmb3JRdWVyeVNlbGVjdG9yOkAiYXR0YWNobWVudCJdKTsKKyAgICAgICAg
b2JzZXJ2ZXIuZXhwZWN0QXR0YWNobWVudFVwZGF0ZXMoQFtdLCBAW10pOworICAgIH0KKyAgICBb
d2ViVmlldyBleHBlY3RVcGRhdGVzQWZ0ZXJDb21tYW5kOkAiRGVsZXRlQmFja3dhcmQiIHdpdGhB
cmd1bWVudDpuaWwgZXhwZWN0ZWRSZW1vdmFsczpAW2F0dGFjaG1lbnQuZ2V0KCldIGV4cGVjdGVk
SW5zZXJ0aW9uczpAW11dOworfQorCiB9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCiAKICNl
bmRpZiAvLyBXS19BUElfRU5BQkxFRAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>