<?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>202563</bug_id>
          
          <creation_ts>2019-10-03 22:42:24 -0700</creation_ts>
          <short_desc>[WebAuthn] Supply FrameInfo in -[WKUIDelegatePrivate _webView:runWebAuthenticationPanel:initiatedByFrame:completionHandler:]</short_desc>
          <delta_ts>2019-10-23 12:36:50 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>202559</dependson>
          <blocked>181943</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Jiewen Tan">jiewen_tan</reporter>
          <assigned_to name="Jiewen Tan">jiewen_tan</assigned_to>
          <cc>achristensen</cc>
    
    <cc>alex.gaynor</cc>
    
    <cc>bfulgham</cc>
    
    <cc>jiewen_tan</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1576729</commentid>
    <comment_count>0</comment_count>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2019-10-03 22:42:24 -0700</bug_when>
    <thetext>Supply FrameInfo in -[WKUIDelegatePrivate webView:runWebAuthenticationPanel:initiatedByFrame:completionHandler:].</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1576730</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-10-03 22:42:48 -0700</bug_when>
    <thetext>&lt;rdar://problem/55973968&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1582318</commentid>
    <comment_count>2</comment_count>
      <attachid>381534</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2019-10-22 03:14:33 -0700</bug_when>
    <thetext>Created attachment 381534
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1582654</commentid>
    <comment_count>3</comment_count>
      <attachid>381625</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2019-10-22 16:30:10 -0700</bug_when>
    <thetext>Created attachment 381625
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1582744</commentid>
    <comment_count>4</comment_count>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2019-10-22 22:49:27 -0700</bug_when>
    <thetext>This patch here conflicts with Bug 202561 on some minor ways. Will rebase it depending on which one get landed first.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1582747</commentid>
    <comment_count>5</comment_count>
      <attachid>381659</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2019-10-22 23:08:20 -0700</bug_when>
    <thetext>Created attachment 381659
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1582826</commentid>
    <comment_count>6</comment_count>
      <attachid>381659</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2019-10-23 08:44:21 -0700</bug_when>
    <thetext>Comment on attachment 381659
Patch

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

I have some minor suggestions, but overall looks good! r=me

&gt; Source/WebKit/UIProcess/WebAuthentication/WebAuthenticatorCoordinatorProxy.cpp:74
&gt; +        }, [&amp;](const  ExceptionData&amp; exception) {

It looks like you have two spaces between &apos;const&apos; and &apos;ExceptionData&amp;&apos;.

&gt; Source/WebKit/WebProcess/WebAuthentication/WebAuthenticatorCoordinator.cpp:47
&gt; +void WebAuthenticatorCoordinator::makeCredential(const Frame&amp; frame, const SecurityOrigin&amp; origin, const Vector&lt;uint8_t&gt;&amp; hash, const PublicKeyCredentialCreationOptions&amp; options, RequestCompletionHandler&amp;&amp; handler)

Since origin and hash are coming from the message passing, I wonder if they could be WTFMove&apos;d? Surely the hash would be worth moving.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1582949</commentid>
    <comment_count>7</comment_count>
      <attachid>381659</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2019-10-23 12:33:00 -0700</bug_when>
    <thetext>Comment on attachment 381659
Patch

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

Thanks Brent for r+ this patch.

&gt;&gt; Source/WebKit/UIProcess/WebAuthentication/WebAuthenticatorCoordinatorProxy.cpp:74
&gt;&gt; +        }, [&amp;](const  ExceptionData&amp; exception) {
&gt; 
&gt; It looks like you have two spaces between &apos;const&apos; and &apos;ExceptionData&amp;&apos;.

Fixed.

&gt;&gt; Source/WebKit/WebProcess/WebAuthentication/WebAuthenticatorCoordinator.cpp:47
&gt;&gt; +void WebAuthenticatorCoordinator::makeCredential(const Frame&amp; frame, const SecurityOrigin&amp; origin, const Vector&lt;uint8_t&gt;&amp; hash, const PublicKeyCredentialCreationOptions&amp; options, RequestCompletionHandler&amp;&amp; handler)
&gt; 
&gt; Since origin and hash are coming from the message passing, I wonder if they could be WTFMove&apos;d? Surely the hash would be worth moving.

This is actually for sending the message, and therefore &amp;&amp; will do nothing here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1582954</commentid>
    <comment_count>8</comment_count>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2019-10-23 12:36:50 -0700</bug_when>
    <thetext>Committed r251489: &lt;https://trac.webkit.org/changeset/251489&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>381534</attachid>
            <date>2019-10-22 03:14:33 -0700</date>
            <delta_ts>2019-10-22 16:30:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202563-20191022031432.patch</filename>
            <type>text/plain</type>
            <size>11419</size>
            <attacher name="Jiewen Tan">jiewen_tan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUxMzcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGU0MWRlMzhjNzA1NmMzYzNh
Nzc3M2I2NzJlYWJhNGM2NmYwNGFkMDcuLjM5ZTRjYjAwNjc1MTJjYzRkNmY2MGU0ZTJlNDVmNWNi
MjA3MGU3ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTktMTAtMjIgIEppZXdlbiBU
YW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViQXV0aG5dIFN1cHBseSBG
cmFtZUluZm8gaW4gLVtXS1VJRGVsZWdhdGVQcml2YXRlIHdlYlZpZXc6cnVuV2ViQXV0aGVudGlj
YXRpb25QYW5lbDppbml0aWF0ZWRCeUZyYW1lOmNvbXBsZXRpb25IYW5kbGVyOl0gCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDI1NjMKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzU1OTczOTY4PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElVSUNsaWVudC5oOgorICAgICAg
ICAoQVBJOjpVSUNsaWVudDo6cnVuV2ViQXV0aGVudGljYXRpb25QYW5lbCk6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHA6CisgICAgICAgIChXS1BhZ2VTZXRQYWdlVUlDbGll
bnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLmg6CisgICAgICAgICog
VUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW06CisgICAgICAgIChXZWJLaXQ6OlVJRGVsZWdh
dGU6OlVJQ2xpZW50OjpydW5XZWJBdXRoZW50aWNhdGlvblBhbmVsKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRvck1hbmFnZXIuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpBdXRoZW50aWNhdG9yTWFuYWdlcjo6cnVuUGFuZWwpOgorCiAyMDE5LTEwLTIx
ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIG1vcmUgcmVs
ZWFzZSBsb2dnaW5nIGZvciAiVW5leHBlY3RlZGx5IHJlc3VtZWQiIGFzc2VydGlvbgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVVJQ2xpZW50LmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJVUlDbGllbnQuaAppbmRleCBkOTdkMzkxZGU4ZDhiMzUw
ZWVlZTJlZmM0NGY2N2MwZTY5MzNhYTBlLi43OGYxMjliYjlhYjc4MTM5MTU4Nzk2NTQ3YTZlNjNj
ZWQ2YTBlYWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJVUlD
bGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJVUlDbGllbnQuaApA
QCAtMTk3LDcgKzE5Nyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkU2hvd1NhZmVC
cm93c2luZ1dhcm5pbmcoKSB7IH0KIAogI2lmIEVOQUJMRShXRUJfQVVUSE4pCi0gICAgdmlydHVh
bCB2b2lkIHJ1bldlYkF1dGhlbnRpY2F0aW9uUGFuZWwoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBX
ZWJBdXRoZW50aWNhdGlvblBhbmVsJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJLaXQ6Oldl
YkF1dGhlbnRpY2F0aW9uUGFuZWxSZXN1bHQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7IGNvbXBs
ZXRpb25IYW5kbGVyKFdlYktpdDo6V2ViQXV0aGVudGljYXRpb25QYW5lbFJlc3VsdDo6VW5hdmFp
bGFibGUpOyB9CisgICAgdmlydHVhbCB2b2lkIHJ1bldlYkF1dGhlbnRpY2F0aW9uUGFuZWwoV2Vi
S2l0OjpXZWJQYWdlUHJveHkmLCBXZWJBdXRoZW50aWNhdGlvblBhbmVsJiwgV2ViS2l0OjpXZWJG
cmFtZVByb3h5JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJLaXQ6OldlYkF1dGhlbnRpY2F0
aW9uUGFuZWxSZXN1bHQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7IGNvbXBsZXRpb25IYW5kbGVy
KFdlYktpdDo6V2ViQXV0aGVudGljYXRpb25QYW5lbFJlc3VsdDo6VW5hdmFpbGFibGUpOyB9CiAj
ZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dL
UGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCmluZGV4
IGJiMDQ4YmIxYTYzNTBmN2ZlOTAxNjc3OTg2OGVlM2ExNmY0MWMxMjUuLmM3MjBhMGIwZDJmM2Qz
N2IxMDI1M2E5NmMzM2NkZmVkNGI3Njg5MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0MvV0tQYWdlLmNwcApAQCAtMjA3Niw3ICsyMDc2LDcgQEAgdm9pZCBXS1BhZ2VTZXRQYWdlVUlD
bGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFnZVVJQ2xpZW50QmFzZSogd2tDbGll
bnQKIAogI2lmIEVOQUJMRShXRUJfQVVUSE4pCiAgICAgICAgIC8vIFRoZSBjdXJyZW50IG1ldGhv
ZCBpcyBzcGVjaWFsaXplZCBmb3IgV2ViS2l0VGVzdFJ1bm5lci4KLSAgICAgICAgdm9pZCBydW5X
ZWJBdXRoZW50aWNhdGlvblBhbmVsKFdlYlBhZ2VQcm94eSYsIEFQSTo6V2ViQXV0aGVudGljYXRp
b25QYW5lbCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViS2l0OjpXZWJBdXRoZW50aWNhdGlv
blBhbmVsUmVzdWx0KT4mJiBjb21wbGV0aW9uSGFuZGxlcikgZmluYWwKKyAgICAgICAgdm9pZCBy
dW5XZWJBdXRoZW50aWNhdGlvblBhbmVsKFdlYlBhZ2VQcm94eSYsIEFQSTo6V2ViQXV0aGVudGlj
YXRpb25QYW5lbCYsIFdlYkZyYW1lUHJveHkmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYktp
dDo6V2ViQXV0aGVudGljYXRpb25QYW5lbFJlc3VsdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIGZp
bmFsCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmICghbV9jbGllbnQucnVuV2ViQXV0aGVudGlj
YXRpb25QYW5lbCkgewogICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdlYktpdDo6
V2ViQXV0aGVudGljYXRpb25QYW5lbFJlc3VsdDo6VW5hdmFpbGFibGUpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5oCmluZGV4IDgxZjc4YWEwZmY4MWQ2NTZkODQx
ZTI3Y2VmYTczNmZhMzI0ZTdjMTQuLjljNDM5NTIyNjI5MjIzOTkyYjk4YzA3NjdiYjU5ZDJkODMw
NTBkNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdh
dGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLmgKQEAg
LTE1NSw3ICsxNTUsNyBAQCBwcml2YXRlOgogICAgICAgICB2b2lkIGltYWdlT3JNZWRpYURvY3Vt
ZW50U2l6ZUNoYW5nZWQoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYpIGZpbmFsOwogICAgICAgICB2
b2lkIGRpZFNob3dTYWZlQnJvd3NpbmdXYXJuaW5nKCkgZmluYWw7CiAjaWYgRU5BQkxFKFdFQl9B
VVRITikKLSAgICAgICAgdm9pZCBydW5XZWJBdXRoZW50aWNhdGlvblBhbmVsKFdlYlBhZ2VQcm94
eSYsIEFQSTo6V2ViQXV0aGVudGljYXRpb25QYW5lbCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
V2ViQXV0aGVudGljYXRpb25QYW5lbFJlc3VsdCk+JiYpIGZpbmFsOworICAgICAgICB2b2lkIHJ1
bldlYkF1dGhlbnRpY2F0aW9uUGFuZWwoV2ViUGFnZVByb3h5JiwgQVBJOjpXZWJBdXRoZW50aWNh
dGlvblBhbmVsJiwgV2ViRnJhbWVQcm94eSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQXV0
aGVudGljYXRpb25QYW5lbFJlc3VsdCk+JiYpIGZpbmFsOwogI2VuZGlmCiAKICAgICAgICAgVUlE
ZWxlZ2F0ZSYgbV91aURlbGVnYXRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJ
RGVsZWdhdGUubW0KaW5kZXggNTBkYWFlMzYyMWRhNTcxMGM5ZjI1ZTNiZDBmZmFjMmI0Mzk0N2Qx
NS4uNTk1ODg1YTdhN2U1OTUxZWU2NmY4Yzg1YTdmM2JjYTQ1MTg3ZWE5NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tCkBAIC0xMjgxLDcgKzEyODEsNyBA
QCBzdGF0aWMgV2ViQXV0aGVudGljYXRpb25QYW5lbFJlc3VsdCB3ZWJBdXRoZW50aWNhdGlvblBh
bmVsUmVzdWx0KF9XS1dlYkF1dGhlbnRpYwogICAgIHJldHVybiBXZWJBdXRoZW50aWNhdGlvblBh
bmVsUmVzdWx0OjpVbmF2YWlsYWJsZTsKIH0KIAotdm9pZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6
cnVuV2ViQXV0aGVudGljYXRpb25QYW5lbChXZWJQYWdlUHJveHkmLCBBUEk6OldlYkF1dGhlbnRp
Y2F0aW9uUGFuZWwmIHBhbmVsLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkF1dGhlbnRpY2F0
aW9uUGFuZWxSZXN1bHQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBVSURlbGVnYXRlOjpV
SUNsaWVudDo6cnVuV2ViQXV0aGVudGljYXRpb25QYW5lbChXZWJQYWdlUHJveHkmLCBBUEk6Oldl
YkF1dGhlbnRpY2F0aW9uUGFuZWwmIHBhbmVsLCBXZWJGcmFtZVByb3h5JiB3ZWJGcmFtZVByb3h5
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxSZXN1bHQpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmICghbV91aURlbGVnYXRlLm1fZGVsZWdhdGVN
ZXRob2RzLndlYlZpZXdSdW5XZWJBdXRoZW50aWNhdGlvblBhbmVsSW5pdGlhdGVkQnlGcmFtZUNv
bXBsZXRpb25IYW5kbGVyKSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdlYkF1dGhlbnRp
Y2F0aW9uUGFuZWxSZXN1bHQ6OlVuYXZhaWxhYmxlKTsKQEAgLTEyOTUsNyArMTI5NSw3IEBAIHZv
aWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OnJ1bldlYkF1dGhlbnRpY2F0aW9uUGFuZWwoV2ViUGFn
ZVByb3h5JiwgQVBJOjpXZWJBdXRoCiAgICAgfQogCiAgICAgYXV0byBjaGVja2VyID0gQ29tcGxl
dGlvbkhhbmRsZXJDYWxsQ2hlY2tlcjo6Y3JlYXRlKGRlbGVnYXRlLmdldCgpLCBAc2VsZWN0b3Io
X3dlYlZpZXc6cnVuV2ViQXV0aGVudGljYXRpb25QYW5lbDppbml0aWF0ZWRCeUZyYW1lOmNvbXBs
ZXRpb25IYW5kbGVyOikpOwotICAgIFsoaWQgPFdLVUlEZWxlZ2F0ZVByaXZhdGU+KWRlbGVnYXRl
IF93ZWJWaWV3Om1fdWlEZWxlZ2F0ZS5tX3dlYlZpZXcgcnVuV2ViQXV0aGVudGljYXRpb25QYW5l
bDp3cmFwcGVyKHBhbmVsKSBpbml0aWF0ZWRCeUZyYW1lOm5pbCBjb21wbGV0aW9uSGFuZGxlcjpt
YWtlQmxvY2tQdHIoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
ciksIGNoZWNrZXIgPSBXVEZNb3ZlKGNoZWNrZXIpXSAoX1dLV2ViQXV0aGVudGljYXRpb25QYW5l
bFJlc3VsdCByZXN1bHQpIG11dGFibGUgeworICAgIFsoaWQgPFdLVUlEZWxlZ2F0ZVByaXZhdGU+
KWRlbGVnYXRlIF93ZWJWaWV3Om1fdWlEZWxlZ2F0ZS5tX3dlYlZpZXcgcnVuV2ViQXV0aGVudGlj
YXRpb25QYW5lbDp3cmFwcGVyKHBhbmVsKSBpbml0aWF0ZWRCeUZyYW1lOndyYXBwZXIoQVBJOjpG
cmFtZUluZm86OmNyZWF0ZSh3ZWJGcmFtZVByb3h5LCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6
Y3JlYXRlKHdlYkZyYW1lUHJveHkudXJsKCkpKSkgY29tcGxldGlvbkhhbmRsZXI6bWFrZUJsb2Nr
UHRyKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBjaGVj
a2VyID0gV1RGTW92ZShjaGVja2VyKV0gKF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxSZXN1bHQg
cmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgaWYgKGNoZWNrZXItPmNvbXBsZXRpb25IYW5kbGVy
SGFzQmVlbkNhbGxlZCgpKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBjaGVja2VyLT5k
aWRDYWxsQ29tcGxldGlvbkhhbmRsZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0b3JNYW5hZ2Vy
LmNwcAppbmRleCA0YzgxOWVhYWExMTU0OTYxY2ExN2VkZjIyMDAzY2RkNzUyNWI1ZmVkLi5kODdl
YTQ0MzJlNTk2NTE3NTBmY2VkOTMwNjk0MjEwZjIwMzE1NzNmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yTWFuYWdlci5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQXV0aGVu
dGljYXRvck1hbmFnZXIuY3BwCkBAIC0yOTEsMTAgKzI5MSwxNCBAQCB2b2lkIEF1dGhlbnRpY2F0
b3JNYW5hZ2VyOjpydW5QYW5lbCgpCiAgICAgYXV0byogcGFnZSA9IG1fcGVuZGluZ1JlcXVlc3RE
YXRhLnBhZ2UuZ2V0KCk7CiAgICAgaWYgKCFwYWdlKQogICAgICAgICByZXR1cm47CisgICAgQVNT
RVJUKG1fcGVuZGluZ1JlcXVlc3REYXRhLmZyYW1lSUQgJiYgcGFnZS0+d2ViUGFnZUlEKCkgPT0g
bV9wZW5kaW5nUmVxdWVzdERhdGEuZnJhbWVJRC0+cGFnZUlEKTsKKyAgICBhdXRvKiBmcmFtZSA9
IHBhZ2UtPnByb2Nlc3MoKS53ZWJGcmFtZShtX3BlbmRpbmdSZXF1ZXN0RGF0YS5mcmFtZUlELT5m
cmFtZUlEKTsKKyAgICBpZiAoIWZyYW1lKQorICAgICAgICByZXR1cm47CiAKICAgICBtX3BlbmRp
bmdSZXF1ZXN0RGF0YS5wYW5lbCA9IEFQSTo6V2ViQXV0aGVudGljYXRpb25QYW5lbDo6Y3JlYXRl
KCp0aGlzLCBnZXRScElkKG1fcGVuZGluZ1JlcXVlc3REYXRhLm9wdGlvbnMpKTsKICAgICBhdXRv
JiBwYW5lbCA9ICptX3BlbmRpbmdSZXF1ZXN0RGF0YS5wYW5lbDsKLSAgICBwYWdlLT51aUNsaWVu
dCgpLnJ1bldlYkF1dGhlbnRpY2F0aW9uUGFuZWwoKnBhZ2UsIHBhbmVsLCBbd2Vha1BhbmVsID0g
bWFrZVdlYWtQdHIocGFuZWwpLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwgdGhpc10g
KFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxSZXN1bHQgcmVzdWx0KSB7CisgICAgcGFnZS0+dWlDbGll
bnQoKS5ydW5XZWJBdXRoZW50aWNhdGlvblBhbmVsKCpwYWdlLCBwYW5lbCwgKmZyYW1lLCBbd2Vh
a1BhbmVsID0gbWFrZVdlYWtQdHIocGFuZWwpLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlz
KSwgdGhpc10gKFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxSZXN1bHQgcmVzdWx0KSB7CiAgICAgICAg
IC8vIFRoZSBwYW5lbCBhZGRyZXNzIGlzIHVzZWQgdG8gZGV0ZXJtaW5lIGlmIHRoZSBjdXJyZW50
IHBlbmRpbmcgcmVxdWVzdCBpcyBzdGlsbCB0aGUgc2FtZS4KICAgICAgICAgaWYgKCF3ZWFrVGhp
cyB8fCAhd2Vha1BhbmVsCiAgICAgICAgICAgICB8fCAocmVzdWx0ID09IFdlYkF1dGhlbnRpY2F0
aW9uUGFuZWxSZXN1bHQ6OkRpZE5vdFByZXNlbnQpCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VM
b2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNDIzOTNmZmM0ZmY4YjMyY2FlZTYwMTU4ZWU5MTQ1
MGEyM2FmNDdlOC4uYTA2MmNlMzA2OTE1ODE2NmU2YmVjN2Y3MmU5ZWU2OGRkYTc2NGQ2NiAxMDA2
NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE5IEBACisyMDE5LTEwLTIyICBKaWV3ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CisK
KyAgICAgICAgW1dlYkF1dGhuXSBTdXBwbHkgRnJhbWVJbmZvIGluIC1bV0tVSURlbGVnYXRlUHJp
dmF0ZSB3ZWJWaWV3OnJ1bldlYkF1dGhlbnRpY2F0aW9uUGFuZWw6aW5pdGlhdGVkQnlGcmFtZTpj
b21wbGV0aW9uSGFuZGxlcjpdIAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjAyNTYzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81NTk3Mzk2OD4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRzIG5ldyB0
ZXN0IGNvbnRlbnRzIGludG8gZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW06CisgICAg
ICAgICgtW1Rlc3RXZWJBdXRoZW50aWNhdGlvblBhbmVsVUlEZWxlZ2F0ZSBpbml0XSk6CisgICAg
ICAgICgtW1Rlc3RXZWJBdXRoZW50aWNhdGlvblBhbmVsVUlEZWxlZ2F0ZSBfd2ViVmlldzpydW5X
ZWJBdXRoZW50aWNhdGlvblBhbmVsOmluaXRpYXRlZEJ5RnJhbWU6Y29tcGxldGlvbkhhbmRsZXI6
XSk6CisgICAgICAgICgtW1Rlc3RXZWJBdXRoZW50aWNhdGlvblBhbmVsVUlEZWxlZ2F0ZSBmcmFt
ZV0pOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisKIDIwMTktMTAtMTggIEFha2Fz
aCBKYWluICA8YWFrYXNoX2phaW5AYXBwbGUuY29tPgogCiAgICAgICAgIEVXUyBzaG91bGQgaGF2
ZSBhIHdheSB0byByZXRyeSBhIHBhdGNoCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW0gYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwu
bW0KaW5kZXggNmY0MThhZTAxNDk0ZmYwODMxNzJlMmZhN2U3OWU0MzlkZDllZjdiZS4uMmQxNmI2
NjBhZjJiNTkzMGVkYmI2NzIzMzQ5ZjNlNjNlMjQwZDJkZiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1t
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvX1dLV2ViQXV0aGVu
dGljYXRpb25QYW5lbC5tbQpAQCAtODksMTggKzg5LDIzIEBAIEBlbmQKIEBpbXBsZW1lbnRhdGlv
biBUZXN0V2ViQXV0aGVudGljYXRpb25QYW5lbFVJRGVsZWdhdGUgewogICAgIFJldGFpblB0cjxO
U09iamVjdDxfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsRGVsZWdhdGU+PiBfZGVsZWdhdGU7CiAg
ICAgQmxvY2tQdHI8dm9pZChfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsUmVzdWx0KT4gX2NhbGxi
YWNrOworICAgIFJldGFpblB0cjxXS0ZyYW1lSW5mbz4gX2ZyYW1lSW5mbzsKIH0KIAogLSAoaW5z
dGFuY2V0eXBlKWluaXQKIHsKLSAgICBpZiAoc2VsZiA9IFtzdXBlciBpbml0XSkKKyAgICBpZiAo
c2VsZiA9IFtzdXBlciBpbml0XSkgewogICAgICAgICBzZWxmLmlzUmFjeSA9IGZhbHNlOworICAg
ICAgICBzZWxmLmlzRmFrZSA9IGZhbHNlOworICAgICAgICBzZWxmLmlzTnVsbCA9IGZhbHNlOwor
ICAgIH0KICAgICByZXR1cm4gc2VsZjsKIH0KIAogLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3
ICopd2ViVmlldyBydW5XZWJBdXRoZW50aWNhdGlvblBhbmVsOihfV0tXZWJBdXRoZW50aWNhdGlv
blBhbmVsICopcGFuZWwgaW5pdGlhdGVkQnlGcmFtZTooV0tGcmFtZUluZm8gKilmcmFtZSBjb21w
bGV0aW9uSGFuZGxlcjoodm9pZCAoXikoX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbFJlc3VsdCkp
Y29tcGxldGlvbkhhbmRsZXIKIHsKICAgICB3ZWJBdXRoZW50aWNhdGlvblBhbmVsUmFuID0gdHJ1
ZTsKKyAgICBfZnJhbWVJbmZvID0gZnJhbWU7CiAKICAgICBpZiAoIV9pc051bGwpIHsKICAgICAg
ICAgaWYgKCFfaXNGYWtlKQpAQCAtMTI0LDYgKzEyOSwxMSBAQCAtICh2b2lkKV93ZWJWaWV3OihX
S1dlYlZpZXcgKil3ZWJWaWV3IHJ1bldlYkF1dGhlbnRpY2F0aW9uUGFuZWw6KF9XS1dlYkF1dGhl
bnRpYwogICAgIGNvbXBsZXRpb25IYW5kbGVyKF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxSZXN1
bHRQcmVzZW50ZWQpOwogfQogCistIChXS0ZyYW1lSW5mbyAqKWZyYW1lCit7CisgICAgcmV0dXJu
IF9mcmFtZUluZm8uZ2V0KCk7Cit9CisKIEBlbmQKIAogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkg
ewpAQCAtMjMxLDYgKzI0MSwxMCBAQCBURVNUKFdlYkF1dGhlbnRpY2F0aW9uUGFuZWwsIFBhbmVs
SGlkU3VjY2VzcykKIAogICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVx
dWVzdFdpdGhVUkw6dGVzdFVSTC5nZXQoKV1dOwogICAgIFV0aWw6OnJ1bigmd2ViQXV0aGVudGlj
YXRpb25QYW5lbFJhbik7CisgICAgYXV0byBmcmFtZSA9IFtkZWxlZ2F0ZSBmcmFtZV07CisgICAg
RVhQRUNUX1RSVUUoZnJhbWUubWFpbkZyYW1lKTsKKyAgICBFWFBFQ1RfVFJVRShbZnJhbWUucmVx
dWVzdC5VUkwgaXNFcXVhbDp0ZXN0VVJMLmdldCgpXSk7CisgICAgRVhQRUNUX0VRKGZyYW1lLndl
YlZpZXcsIHdlYlZpZXcuZ2V0KCkpOwogICAgIFV0aWw6OnJ1bigmd2ViQXV0aGVudGljYXRpb25Q
YW5lbFN1Y2NlZGVkKTsKIH0KIApAQCAtNDA5LDEwICs0MjMsMTcgQEAgVEVTVChXZWJBdXRoZW50
aWNhdGlvblBhbmVsLCBTdWJGcmFtZUNoYW5nZUxvY2F0aW9uSGlkQ2FuY2VsKQogICAgIGF1dG8g
ZGVsZWdhdGUgPSBhZG9wdE5TKFtbVGVzdFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxVSURlbGVnYXRl
IGFsbG9jXSBpbml0XSk7CiAgICAgW3dlYlZpZXcgc2V0VUlEZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQo
KV07CiAKLSAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRo
VVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOihpZCltYWtlU3RyaW5nKCJodHRwOi8vbG9jYWxob3N0
OiIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihzZXJ2ZXIucG9ydCgpKSldXV07CisgICAgYXV0byB1
cmwgPSBtYWtlU3RyaW5nKCJodHRwOi8vbG9jYWxob3N0OiIsIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihzZXJ2ZXIucG9ydCgpKSk7CisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVz
dCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzooaWQpdXJsXV1dOwogICAgIFV0
aWw6OnJ1bigmd2ViQXV0aGVudGljYXRpb25QYW5lbFJhbik7CiAgICAgW3dlYlZpZXcgZXZhbHVh
dGVKYXZhU2NyaXB0OkAidGhlRnJhbWUuc3JjID0gJ3NpbXBsZS5odG1sJyIgY29tcGxldGlvbkhh
bmRsZXI6bmlsXTsKICAgICBVdGlsOjpydW4oJndlYkF1dGhlbnRpY2F0aW9uUGFuZWxGYWlsZWQp
OworCisgICAgLy8gQml0IG9mIGV4dHJhIGNoZWNrcworICAgIGF1dG8gZnJhbWUgPSBbZGVsZWdh
dGUgZnJhbWVdOworICAgIEVYUEVDVF9GQUxTRShmcmFtZS5tYWluRnJhbWUpOworICAgIEVYUEVD
VF9XS19TVFJFUShmcmFtZS5yZXF1ZXN0LlVSTC5hYnNvbHV0ZVN0cmluZywgbWFrZVN0cmluZyh1
cmwsICIvaUZyYW1lLmh0bWwiKSk7CisgICAgRVhQRUNUX0VRKGZyYW1lLndlYlZpZXcsIHdlYlZp
ZXcuZ2V0KCkpOwogfQogCiBURVNUKFdlYkF1dGhlbnRpY2F0aW9uUGFuZWwsIFN1YkZyYW1lRGVz
dHJ1Y3Rpb25IaWRDYW5jZWwpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>381625</attachid>
            <date>2019-10-22 16:30:10 -0700</date>
            <delta_ts>2019-10-22 23:08:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202563-20191022163010.patch</filename>
            <type>text/plain</type>
            <size>30714</size>
            <attacher name="Jiewen Tan">jiewen_tan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUxMzcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWE1MmMxZGU3MmMzN2Q5
YTE4NTc5ZTRmYTJkYzdlN2IxNjhiYmZkNi4uZjE4YjliYWY3Yjc0MDgwNWUzZGNmZjE1ZmZjMTQ1
NjJiNjRiN2ZmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDE5LTEwLTIyICBKaWV3
ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkF1dGhuXSBTdXBw
bHkgRnJhbWVJbmZvIGluIC1bV0tVSURlbGVnYXRlUHJpdmF0ZSBfd2ViVmlldzpydW5XZWJBdXRo
ZW50aWNhdGlvblBhbmVsOmluaXRpYXRlZEJ5RnJhbWU6Y29tcGxldGlvbkhhbmRsZXI6XQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAyNTYzCisgICAg
ICAgIDxyZGFyOi8vcHJvYmxlbS81NTk3Mzk2OD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBDb3ZlcmVkIGJ5IG5ldyB0ZXN0IGNvbnRlbnRzIHdpdGhp
biBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIE1vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGlj
YXRvckNvb3JkaW5hdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JDb29y
ZGluYXRvcjo6Y3JlYXRlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JD
b29yZGluYXRvcjo6ZGlzY292ZXJGcm9tRXh0ZXJuYWxTb3VyY2UgY29uc3QpOgorICAgICAgICAq
IE1vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckNvb3JkaW5hdG9yQ2xpZW50Lmg6CisKIDIw
MTktMTAtMjEgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAg
ICAgW2lPUyBXSzJdIFN1cHBvcnQgaGlkaW5nIGlmcmFtZSBzY3JvbGxiYXJzIHZpYSA6Oi13ZWJr
aXQtc2Nyb2xsYmFyIHN0eWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGU0MWRlMzhjNzA1NmMzYzNhNzc3M2I2NzJl
YWJhNGM2NmYwNGFkMDcuLjRhMmU1ZTM3YWEyOTI3NzYzNzcyNjU2YTRiOTg4Y2M2ZWQ2NWVjYTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMzUgQEAKKzIwMTktMTAtMjIgIEppZXdlbiBUYW4gIDxqaWV3
ZW5fdGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViQXV0aG5dIFN1cHBseSBGcmFtZUluZm8g
aW4gLVtXS1VJRGVsZWdhdGVQcml2YXRlIF93ZWJWaWV3OnJ1bldlYkF1dGhlbnRpY2F0aW9uUGFu
ZWw6aW5pdGlhdGVkQnlGcmFtZTpjb21wbGV0aW9uSGFuZGxlcjpdCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDI1NjMKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzU1OTczOTY4PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFRoaXMgcGF0Y2ggbWFrZXMgV0tGcmFtZUluZm8gYXZhaWxhYmxlIHRvIGNsaWVu
dHMgdmlhIHRoZSBhYm92ZSBTUEkuIFRvIGRvIHNvLAorICAgICAgICBTZWN1aXJ0eU9yaWdpbiBv
ZiB0aGUgY2FsbGVyIGRvY3VtZW50IGlzIHBhc3NlZCBmcm9tIFdlYkNvbnRlbnQgUHJvY2Vzcy4K
KworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJVUlDbGllbnQuaDoKKyAgICAgICAgKEFQSTo6
VUlDbGllbnQ6OnJ1bldlYkF1dGhlbnRpY2F0aW9uUGFuZWwpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQy9XS1BhZ2UuY3BwOgorICAgICAgICAoV0tQYWdlU2V0UGFnZVVJQ2xpZW50KToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9Db2NvYS9VSURlbGVnYXRlLm1tOgorICAgICAgICAoV2ViS2l0OjpVSURlbGVnYXRlOjpVSUNs
aWVudDo6cnVuV2ViQXV0aGVudGljYXRpb25QYW5lbCk6CisgICAgICAgICogVUlQcm9jZXNzL1dl
YkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6QXV0aGVudGljYXRvck1hbmFnZXI6OnJ1blBhbmVsKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRpb25SZXF1ZXN0RGF0YS5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0
b3JQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRv
clByb3h5OjptYWtlQ3JlZGVudGlhbCk6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dGhlbnRpY2F0
b3JDb29yZGluYXRvclByb3h5OjpnZXRBc3NlcnRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJB
dXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eTo6aGFuZGxlUmVxdWVzdCk6CisgICAgICAgICog
VUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclBy
b3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRp
Y2F0b3JDb29yZGluYXRvclByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yOjptYWtlQ3JlZGVudGlhbCk6
CisgICAgICAgIChXZWJLaXQ6OldlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvcjo6Z2V0QXNzZXJ0
aW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRp
Y2F0b3JDb29yZGluYXRvci5oOgorCiAyMDE5LTEwLTIxICBDaHJpcyBEdW1leiAgPGNkdW1lekBh
cHBsZS5jb20+CiAKICAgICAgICAgQWRkIG1vcmUgcmVsZWFzZSBsb2dnaW5nIGZvciAiVW5leHBl
Y3RlZGx5IHJlc3VtZWQiIGFzc2VydGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuY3BwCmluZGV4IGM2
NGM5YTMyMmQ3OWQ5MmZlMWIwNmY2NjRhOGExMzg3ZGJiNGVhMDMuLjY2ZTViYTExNTIzNzhkYmM0
NmE2NWQ4YTVjMzc4ZGJiMGFiYTZhYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JDb29yZGluYXRvci5jcHAKQEAgLTIw
NCw3ICsyMDQsNyBAQCB2b2lkIEF1dGhlbnRpY2F0b3JDb29yZGluYXRvcjo6Y3JlYXRlKGNvbnN0
IERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgUHVibGljS2V5QwogICAgICAgICBwcm9taXNlLnJl
amVjdChleGNlcHRpb24udG9FeGNlcHRpb24oKSk7CiAgICAgfTsKICAgICAvLyBBc3luYyBvcGVy
YXRpb25zIGFyZSBkaXNwYXRjaGVkIGFuZCBoYW5kbGVkIGluIHRoZSBtZXNzZW5nZXIuCi0gICAg
bV9jbGllbnQtPm1ha2VDcmVkZW50aWFsKCpmcmFtZSwgY2xpZW50RGF0YUpzb25IYXNoLCBvcHRp
b25zLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CisgICAgbV9jbGllbnQtPm1ha2VDcmVkZW50aWFsKCpm
cmFtZSwgY2FsbGVyT3JpZ2luLCBjbGllbnREYXRhSnNvbkhhc2gsIG9wdGlvbnMsIFdURk1vdmUo
Y2FsbGJhY2spKTsKIH0KIAogdm9pZCBBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3I6OmRpc2NvdmVy
RnJvbUV4dGVybmFsU291cmNlKGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgUHVibGlj
S2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zJiBvcHRpb25zLCBib29sIHNhbWVPcmlnaW5XaXRo
QW5jZXN0b3JzLCBSZWZQdHI8QWJvcnRTaWduYWw+JiYgYWJvcnRTaWduYWwsIENyZWRlbnRpYWxQ
cm9taXNlJiYgcHJvbWlzZSkgY29uc3QKQEAgLTI3NSw3ICsyNzUsNyBAQCB2b2lkIEF1dGhlbnRp
Y2F0b3JDb29yZGluYXRvcjo6ZGlzY292ZXJGcm9tRXh0ZXJuYWxTb3VyY2UoY29uc3QgRG9jdW1l
bnQmIGRvY3VtZQogICAgICAgICBwcm9taXNlLnJlamVjdChleGNlcHRpb24udG9FeGNlcHRpb24o
KSk7CiAgICAgfTsKICAgICAvLyBBc3luYyBvcGVyYXRpb25zIGFyZSBkaXNwYXRjaGVkIGFuZCBo
YW5kbGVkIGluIHRoZSBtZXNzZW5nZXIuCi0gICAgbV9jbGllbnQtPmdldEFzc2VydGlvbigqZnJh
bWUsIGNsaWVudERhdGFKc29uSGFzaCwgb3B0aW9ucywgV1RGTW92ZShjYWxsYmFjaykpOworICAg
IG1fY2xpZW50LT5nZXRBc3NlcnRpb24oKmZyYW1lLCBjYWxsZXJPcmlnaW4sIGNsaWVudERhdGFK
c29uSGFzaCwgb3B0aW9ucywgV1RGTW92ZShjYWxsYmFjaykpOwogfQogCiB2b2lkIEF1dGhlbnRp
Y2F0b3JDb29yZGluYXRvcjo6aXNVc2VyVmVyaWZ5aW5nUGxhdGZvcm1BdXRoZW50aWNhdG9yQXZh
aWxhYmxlKERPTVByb21pc2VEZWZlcnJlZDxJRExCb29sZWFuPiYmIHByb21pc2UpIGNvbnN0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JD
b29yZGluYXRvckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRo
ZW50aWNhdG9yQ29vcmRpbmF0b3JDbGllbnQuaAppbmRleCBiNmNkYjUwYjYwZmQxMjNkODNmNGI2
Y2M2Mzc5MmI2MDJjMTU4OGFhLi5kNmJlMzNiZWVkN2IwNTc3NmU0ZjQ5YTk4ZDk5OWU2NjcyYWQ5
ZDZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRp
Y2F0b3JDb29yZGluYXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXV0aG4vQXV0aGVudGljYXRvckNvb3JkaW5hdG9yQ2xpZW50LmgKQEAgLTM2LDYgKzM2LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBEZWZlcnJlZFByb21pc2U7CiBjbGFzcyBGcmFt
ZTsKK2NsYXNzIFNlY3VyaXR5T3JpZ2luOwogCiBzdHJ1Y3QgUHVibGljS2V5Q3JlZGVudGlhbENy
ZWF0aW9uT3B0aW9uczsKIHN0cnVjdCBQdWJsaWNLZXlDcmVkZW50aWFsRGF0YTsKQEAgLTUxLDgg
KzUyLDggQEAgcHVibGljOgogICAgIEF1dGhlbnRpY2F0b3JDb29yZGluYXRvckNsaWVudCgpID0g
ZGVmYXVsdDsKICAgICB2aXJ0dWFsIH5BdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JDbGllbnQoKSA9
IGRlZmF1bHQ7CiAKLSAgICB2aXJ0dWFsIHZvaWQgbWFrZUNyZWRlbnRpYWwoY29uc3QgRnJhbWUm
LCBjb25zdCBWZWN0b3I8dWludDhfdD4mLCBjb25zdCBQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRp
b25PcHRpb25zJiwgUmVxdWVzdENvbXBsZXRpb25IYW5kbGVyJiYpIHsgfTsKLSAgICB2aXJ0dWFs
IHZvaWQgZ2V0QXNzZXJ0aW9uKGNvbnN0IEZyYW1lJiwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+Jiwg
Y29uc3QgUHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zJiwgUmVxdWVzdENvbXBsZXRp
b25IYW5kbGVyJiYpIHsgfTsKKyAgICB2aXJ0dWFsIHZvaWQgbWFrZUNyZWRlbnRpYWwoY29uc3Qg
RnJhbWUmLCBjb25zdCBTZWN1cml0eU9yaWdpbiYsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYsIGNv
bnN0IFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMmLCBSZXF1ZXN0Q29tcGxldGlv
bkhhbmRsZXImJikgeyB9OworICAgIHZpcnR1YWwgdm9pZCBnZXRBc3NlcnRpb24oY29uc3QgRnJh
bWUmLCBjb25zdCBTZWN1cml0eU9yaWdpbiYsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYsIGNvbnN0
IFB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucyYsIFJlcXVlc3RDb21wbGV0aW9uSGFu
ZGxlciYmKSB7IH07CiAgICAgdmlydHVhbCB2b2lkIGlzVXNlclZlcmlmeWluZ1BsYXRmb3JtQXV0
aGVudGljYXRvckF2YWlsYWJsZShRdWVyeUNvbXBsZXRpb25IYW5kbGVyJiYpIHsgfTsKIH07CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElVSUNsaWVudC5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVVJQ2xpZW50LmgKaW5kZXggZDk3ZDM5MWRl
OGQ4YjM1MGVlZWUyZWZjNDRmNjdjMGU2OTMzYWEwZS4uZmRlZGZlNDYwMmFkN2Y3ZjUzYWMzMWY4
YWNmMWE0NWZmNzA3Njg5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0FQSVVJQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVVJQ2xp
ZW50LmgKQEAgLTE5Nyw3ICsxOTcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZFNo
b3dTYWZlQnJvd3NpbmdXYXJuaW5nKCkgeyB9CiAKICNpZiBFTkFCTEUoV0VCX0FVVEhOKQotICAg
IHZpcnR1YWwgdm9pZCBydW5XZWJBdXRoZW50aWNhdGlvblBhbmVsKFdlYktpdDo6V2ViUGFnZVBy
b3h5JiwgV2ViQXV0aGVudGljYXRpb25QYW5lbCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2Vi
S2l0OjpXZWJBdXRoZW50aWNhdGlvblBhbmVsUmVzdWx0KT4mJiBjb21wbGV0aW9uSGFuZGxlcikg
eyBjb21wbGV0aW9uSGFuZGxlcihXZWJLaXQ6OldlYkF1dGhlbnRpY2F0aW9uUGFuZWxSZXN1bHQ6
OlVuYXZhaWxhYmxlKTsgfQorICAgIHZpcnR1YWwgdm9pZCBydW5XZWJBdXRoZW50aWNhdGlvblBh
bmVsKFdlYktpdDo6V2ViUGFnZVByb3h5JiwgV2ViQXV0aGVudGljYXRpb25QYW5lbCYsIFdlYktp
dDo6V2ViRnJhbWVQcm94eSYsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViS2l0OjpXZWJBdXRoZW50aWNhdGlvblBhbmVsUmVzdWx0
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikgeyBjb21wbGV0aW9uSGFuZGxlcihXZWJLaXQ6OldlYkF1
dGhlbnRpY2F0aW9uUGFuZWxSZXN1bHQ6OlVuYXZhaWxhYmxlKTsgfQogI2VuZGlmCiB9OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAppbmRleCBiYjA0OGJiMWE2MzUw
ZjdmZTkwMTY3Nzk4NjhlZTNhMTZmNDFjMTI1Li40NDYzNzI1MWRmZjVhMTkxNzNiYmFjNDdhNDMx
NWEzZmYyZjhmNmI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9X
S1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAK
QEAgLTIwNzYsNyArMjA3Niw3IEBAIHZvaWQgV0tQYWdlU2V0UGFnZVVJQ2xpZW50KFdLUGFnZVJl
ZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VVSUNsaWVudEJhc2UqIHdrQ2xpZW50CiAKICNpZiBFTkFC
TEUoV0VCX0FVVEhOKQogICAgICAgICAvLyBUaGUgY3VycmVudCBtZXRob2QgaXMgc3BlY2lhbGl6
ZWQgZm9yIFdlYktpdFRlc3RSdW5uZXIuCi0gICAgICAgIHZvaWQgcnVuV2ViQXV0aGVudGljYXRp
b25QYW5lbChXZWJQYWdlUHJveHkmLCBBUEk6OldlYkF1dGhlbnRpY2F0aW9uUGFuZWwmLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFdlYktpdDo6V2ViQXV0aGVudGljYXRpb25QYW5lbFJlc3VsdCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpIGZpbmFsCisgICAgICAgIHZvaWQgcnVuV2ViQXV0aGVudGlj
YXRpb25QYW5lbChXZWJQYWdlUHJveHkmLCBBUEk6OldlYkF1dGhlbnRpY2F0aW9uUGFuZWwmLCBX
ZWJGcmFtZVByb3h5JiwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChXZWJLaXQ6OldlYkF1dGhlbnRpY2F0aW9uUGFuZWxSZXN1bHQpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKSBmaW5hbAogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoIW1f
Y2xpZW50LnJ1bldlYkF1dGhlbnRpY2F0aW9uUGFuZWwpIHsKICAgICAgICAgICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihXZWJLaXQ6OldlYkF1dGhlbnRpY2F0aW9uUGFuZWxSZXN1bHQ6OlVuYXZh
aWxhYmxlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJRGVs
ZWdhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUuaAppbmRl
eCA4MWY3OGFhMGZmODFkNjU2ZDg0MWUyN2NlZmE3MzZmYTMyNGU3YzE0Li5mYWM3MGI2YmMzMGM4
NDZlMjBlMWRhYTIxMmNhMDZiMzA2OGEyMjNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvVUlEZWxlZ2F0ZS5oCkBAIC0xNTUsNyArMTU1LDcgQEAgcHJpdmF0ZToKICAgICAgICAg
dm9pZCBpbWFnZU9yTWVkaWFEb2N1bWVudFNpemVDaGFuZ2VkKGNvbnN0IFdlYkNvcmU6OkludFNp
emUmKSBmaW5hbDsKICAgICAgICAgdm9pZCBkaWRTaG93U2FmZUJyb3dzaW5nV2FybmluZygpIGZp
bmFsOwogI2lmIEVOQUJMRShXRUJfQVVUSE4pCi0gICAgICAgIHZvaWQgcnVuV2ViQXV0aGVudGlj
YXRpb25QYW5lbChXZWJQYWdlUHJveHkmLCBBUEk6OldlYkF1dGhlbnRpY2F0aW9uUGFuZWwmLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxSZXN1bHQpPiYmKSBm
aW5hbDsKKyAgICAgICAgdm9pZCBydW5XZWJBdXRoZW50aWNhdGlvblBhbmVsKFdlYlBhZ2VQcm94
eSYsIEFQSTo6V2ViQXV0aGVudGljYXRpb25QYW5lbCYsIFdlYkZyYW1lUHJveHkmLCBjb25zdCBX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkF1
dGhlbnRpY2F0aW9uUGFuZWxSZXN1bHQpPiYmKSBmaW5hbDsKICNlbmRpZgogCiAgICAgICAgIFVJ
RGVsZWdhdGUmIG1fdWlEZWxlZ2F0ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL1VJRGVsZWdhdGUubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9V
SURlbGVnYXRlLm1tCmluZGV4IDUwZGFhZTM2MjFkYTU3MTBjOWYyNWUzYmQwZmZhYzJiNDM5NDdk
MTUuLmE3NTAzNDYyMDE2ZmUxNjE3MWIxNjA0Njc0ZTE2YzNlYTkyZjk4OWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW0KKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbQpAQCAtMTI4MSw3ICsxMjgxLDcg
QEAgc3RhdGljIFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxSZXN1bHQgd2ViQXV0aGVudGljYXRpb25Q
YW5lbFJlc3VsdChfV0tXZWJBdXRoZW50aWMKICAgICByZXR1cm4gV2ViQXV0aGVudGljYXRpb25Q
YW5lbFJlc3VsdDo6VW5hdmFpbGFibGU7CiB9CiAKLXZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6
OnJ1bldlYkF1dGhlbnRpY2F0aW9uUGFuZWwoV2ViUGFnZVByb3h5JiwgQVBJOjpXZWJBdXRoZW50
aWNhdGlvblBhbmVsJiBwYW5lbCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJBdXRoZW50aWNh
dGlvblBhbmVsUmVzdWx0KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgVUlEZWxlZ2F0ZTo6
VUlDbGllbnQ6OnJ1bldlYkF1dGhlbnRpY2F0aW9uUGFuZWwoV2ViUGFnZVByb3h5JiwgQVBJOjpX
ZWJBdXRoZW50aWNhdGlvblBhbmVsJiBwYW5lbCwgV2ViRnJhbWVQcm94eSYgd2ViRnJhbWVQcm94
eSwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiBvcmlnaW4sIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoV2ViQXV0aGVudGljYXRpb25QYW5lbFJlc3VsdCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCiB7CiAgICAgaWYgKCFtX3VpRGVsZWdhdGUubV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmll
d1J1bldlYkF1dGhlbnRpY2F0aW9uUGFuZWxJbml0aWF0ZWRCeUZyYW1lQ29tcGxldGlvbkhhbmRs
ZXIpIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV2ViQXV0aGVudGljYXRpb25QYW5lbFJl
c3VsdDo6VW5hdmFpbGFibGUpOwpAQCAtMTI5NSw3ICsxMjk1LDcgQEAgdm9pZCBVSURlbGVnYXRl
OjpVSUNsaWVudDo6cnVuV2ViQXV0aGVudGljYXRpb25QYW5lbChXZWJQYWdlUHJveHkmLCBBUEk6
OldlYkF1dGgKICAgICB9CiAKICAgICBhdXRvIGNoZWNrZXIgPSBDb21wbGV0aW9uSGFuZGxlckNh
bGxDaGVja2VyOjpjcmVhdGUoZGVsZWdhdGUuZ2V0KCksIEBzZWxlY3Rvcihfd2ViVmlldzpydW5X
ZWJBdXRoZW50aWNhdGlvblBhbmVsOmluaXRpYXRlZEJ5RnJhbWU6Y29tcGxldGlvbkhhbmRsZXI6
KSk7Ci0gICAgWyhpZCA8V0tVSURlbGVnYXRlUHJpdmF0ZT4pZGVsZWdhdGUgX3dlYlZpZXc6bV91
aURlbGVnYXRlLm1fd2ViVmlldyBydW5XZWJBdXRoZW50aWNhdGlvblBhbmVsOndyYXBwZXIocGFu
ZWwpIGluaXRpYXRlZEJ5RnJhbWU6bmlsIGNvbXBsZXRpb25IYW5kbGVyOm1ha2VCbG9ja1B0cihb
Y29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgY2hlY2tlciA9
IFdURk1vdmUoY2hlY2tlcildIChfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsUmVzdWx0IHJlc3Vs
dCkgbXV0YWJsZSB7CisgICAgWyhpZCA8V0tVSURlbGVnYXRlUHJpdmF0ZT4pZGVsZWdhdGUgX3dl
YlZpZXc6bV91aURlbGVnYXRlLm1fd2ViVmlldyBydW5XZWJBdXRoZW50aWNhdGlvblBhbmVsOndy
YXBwZXIocGFuZWwpIGluaXRpYXRlZEJ5RnJhbWU6d3JhcHBlcihBUEk6OkZyYW1lSW5mbzo6Y3Jl
YXRlKHdlYkZyYW1lUHJveHksIG9yaWdpbi5zZWN1cml0eU9yaWdpbigpKSkgY29tcGxldGlvbkhh
bmRsZXI6bWFrZUJsb2NrUHRyKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpLCBjaGVja2VyID0gV1RGTW92ZShjaGVja2VyKV0gKF9XS1dlYkF1dGhlbnRpY2F0
aW9uUGFuZWxSZXN1bHQgcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgaWYgKGNoZWNrZXItPmNv
bXBsZXRpb25IYW5kbGVySGFzQmVlbkNhbGxlZCgpKQogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICBjaGVja2VyLT5kaWRDYWxsQ29tcGxldGlvbkhhbmRsZXIoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0b3JNYW5h
Z2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhl
bnRpY2F0b3JNYW5hZ2VyLmNwcAppbmRleCA0YzgxOWVhYWExMTU0OTYxY2ExN2VkZjIyMDAzY2Rk
NzUyNWI1ZmVkLi5hYzMyZDAzNTVhZjVjN2E1ZjQ5MzlmYzdjYjE5MzRiNDVmZDc4ZGVmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50
aWNhdG9yTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVu
dGljYXRpb24vQXV0aGVudGljYXRvck1hbmFnZXIuY3BwCkBAIC0yOTEsMTAgKzI5MSwxNCBAQCB2
b2lkIEF1dGhlbnRpY2F0b3JNYW5hZ2VyOjpydW5QYW5lbCgpCiAgICAgYXV0byogcGFnZSA9IG1f
cGVuZGluZ1JlcXVlc3REYXRhLnBhZ2UuZ2V0KCk7CiAgICAgaWYgKCFwYWdlKQogICAgICAgICBy
ZXR1cm47CisgICAgQVNTRVJUKG1fcGVuZGluZ1JlcXVlc3REYXRhLmZyYW1lSUQgJiYgcGFnZS0+
d2ViUGFnZUlEKCkgPT0gbV9wZW5kaW5nUmVxdWVzdERhdGEuZnJhbWVJRC0+cGFnZUlEKTsKKyAg
ICBhdXRvKiBmcmFtZSA9IHBhZ2UtPnByb2Nlc3MoKS53ZWJGcmFtZShtX3BlbmRpbmdSZXF1ZXN0
RGF0YS5mcmFtZUlELT5mcmFtZUlEKTsKKyAgICBpZiAoIWZyYW1lKQorICAgICAgICByZXR1cm47
CiAKICAgICBtX3BlbmRpbmdSZXF1ZXN0RGF0YS5wYW5lbCA9IEFQSTo6V2ViQXV0aGVudGljYXRp
b25QYW5lbDo6Y3JlYXRlKCp0aGlzLCBnZXRScElkKG1fcGVuZGluZ1JlcXVlc3REYXRhLm9wdGlv
bnMpKTsKICAgICBhdXRvJiBwYW5lbCA9ICptX3BlbmRpbmdSZXF1ZXN0RGF0YS5wYW5lbDsKLSAg
ICBwYWdlLT51aUNsaWVudCgpLnJ1bldlYkF1dGhlbnRpY2F0aW9uUGFuZWwoKnBhZ2UsIHBhbmVs
LCBbd2Vha1BhbmVsID0gbWFrZVdlYWtQdHIocGFuZWwpLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRy
KCp0aGlzKSwgdGhpc10gKFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxSZXN1bHQgcmVzdWx0KSB7Cisg
ICAgcGFnZS0+dWlDbGllbnQoKS5ydW5XZWJBdXRoZW50aWNhdGlvblBhbmVsKCpwYWdlLCBwYW5l
bCwgKmZyYW1lLCBtX3BlbmRpbmdSZXF1ZXN0RGF0YS5vcmlnaW4sIFt3ZWFrUGFuZWwgPSBtYWtl
V2Vha1B0cihwYW5lbCksIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpLCB0aGlzXSAoV2Vi
QXV0aGVudGljYXRpb25QYW5lbFJlc3VsdCByZXN1bHQpIHsKICAgICAgICAgLy8gVGhlIHBhbmVs
IGFkZHJlc3MgaXMgdXNlZCB0byBkZXRlcm1pbmUgaWYgdGhlIGN1cnJlbnQgcGVuZGluZyByZXF1
ZXN0IGlzIHN0aWxsIHRoZSBzYW1lLgogICAgICAgICBpZiAoIXdlYWtUaGlzIHx8ICF3ZWFrUGFu
ZWwKICAgICAgICAgICAgIHx8IChyZXN1bHQgPT0gV2ViQXV0aGVudGljYXRpb25QYW5lbFJlc3Vs
dDo6RGlkTm90UHJlc2VudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0aW9uUmVxdWVzdERhdGEuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0aW9uUmVxdWVz
dERhdGEuaAppbmRleCA5OWFlMGZiNzI1NmU2ZjI3Mzk3YTM2YzhkMTIyMWEyODNjZjZiZmQ2Li4z
NjE3ZmU3NTgwNzRlZTQ5ODRlNTA2ZjM0ZTE3ODM3YTQ3ZTk1NGM1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdGlvblJl
cXVlc3REYXRhLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRp
b24vV2ViQXV0aGVudGljYXRpb25SZXF1ZXN0RGF0YS5oCkBAIC0zMiw2ICszMiw3IEBACiAjaW5j
bHVkZSA8V2ViQ29yZS9HbG9iYWxGcmFtZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1B1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1B1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucy5oPgorI2luY2x1ZGUgPFdlYkNvcmUv
U2VjdXJpdHlPcmlnaW5EYXRhLmg+CiAjaW5jbHVkZSA8d3RmL1ZhcmlhbnQuaD4KICNpbmNsdWRl
IDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KQEAgLTQ3LDYgKzQ4LDcg
QEAgc3RydWN0IFdlYkF1dGhlbnRpY2F0aW9uUmVxdWVzdERhdGEgewogICAgIFdlYkF1dGhlbnRp
Y2F0aW9uUGFuZWxSZXN1bHQgcGFuZWxSZXN1bHQgeyBXZWJBdXRoZW50aWNhdGlvblBhbmVsUmVz
dWx0OjpVbmF2YWlsYWJsZSB9OwogICAgIFJlZlB0cjxBUEk6OldlYkF1dGhlbnRpY2F0aW9uUGFu
ZWw+IHBhbmVsOwogICAgIFdURjo6T3B0aW9uYWw8V2ViQ29yZTo6R2xvYmFsRnJhbWVJZGVudGlm
aWVyPiBmcmFtZUlEOworICAgIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBvcmlnaW47CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhl
bnRpY2F0b3JDb29yZGluYXRvclByb3h5LmNwcAppbmRleCBhNmQzYjkxOTAyNjU1NjUzNzU4NDgx
OWVlZmVjZWIxMDZlNGJjYmZkLi45Y2YxNzA5NDgyZDE1NTRmNTAzZDAzM2NiMWNlYmJlNWQzZWNi
YjE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlv
bi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9y
UHJveHkuY3BwCkBAIC0zNywxMCArMzcsMTIgQEAKICNpbmNsdWRlICJXZWJzaXRlRGF0YVN0b3Jl
LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9FeGNlcHRpb25EYXRhLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9QdWJsaWNLZXlDcmVkZW50aWFsRGF0YS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlP
cmlnaW5EYXRhLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYv
UnVuTG9vcC5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwogCiBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eTo6V2ViQXV0aGVudGljYXRvckNv
b3JkaW5hdG9yUHJveHkoV2ViUGFnZVByb3h5JiB3ZWJQYWdlUHJveHkpCiAgICAgOiBtX3dlYlBh
Z2VQcm94eSh3ZWJQYWdlUHJveHkpCkBAIC01MywyMyArNTUsMjMgQEAgV2ViQXV0aGVudGljYXRv
ckNvb3JkaW5hdG9yUHJveHk6On5XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eSgpCiAg
ICAgbV93ZWJQYWdlUHJveHkucHJvY2VzcygpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdl
czo6V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUo
KSwgbV93ZWJQYWdlUHJveHkud2ViUGFnZUlEKCkpOwogfQogCi12b2lkIFdlYkF1dGhlbnRpY2F0
b3JDb29yZGluYXRvclByb3h5OjptYWtlQ3JlZGVudGlhbChGcmFtZUlkZW50aWZpZXIgZnJhbWVJ
ZCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBoYXNoLCBjb25zdCBXZWJDb3JlOjpQdWJsaWNLZXlD
cmVkZW50aWFsQ3JlYXRpb25PcHRpb25zJiBvcHRpb25zLCBSZXF1ZXN0Q29tcGxldGlvbkhhbmRs
ZXImJiBoYW5kbGVyKQordm9pZCBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eTo6bWFr
ZUNyZWRlbnRpYWwoRnJhbWVJZGVudGlmaWVyIGZyYW1lSWQsIFNlY3VyaXR5T3JpZ2luRGF0YSYm
IG9yaWdpbiwgVmVjdG9yPHVpbnQ4X3Q+JiYgaGFzaCwgUHVibGljS2V5Q3JlZGVudGlhbENyZWF0
aW9uT3B0aW9ucyYmIG9wdGlvbnMsIFJlcXVlc3RDb21wbGV0aW9uSGFuZGxlciYmIGhhbmRsZXIp
CiB7Ci0gICAgaGFuZGxlUmVxdWVzdCh7IGhhc2gsIG9wdGlvbnMsIG1ha2VXZWFrUHRyKG1fd2Vi
UGFnZVByb3h5KSwgV2ViQXV0aGVudGljYXRpb25QYW5lbFJlc3VsdDo6VW5hdmFpbGFibGUsIG51
bGxwdHIsIEdsb2JhbEZyYW1lSWRlbnRpZmllciB7IG1fd2ViUGFnZVByb3h5LndlYlBhZ2VJRCgp
LCBmcmFtZUlkIH0gfSwgV1RGTW92ZShoYW5kbGVyKSk7CisgICAgaGFuZGxlUmVxdWVzdCh7IFdU
Rk1vdmUoaGFzaCksIFdURk1vdmUob3B0aW9ucyksIG1ha2VXZWFrUHRyKG1fd2ViUGFnZVByb3h5
KSwgV2ViQXV0aGVudGljYXRpb25QYW5lbFJlc3VsdDo6VW5hdmFpbGFibGUsIG51bGxwdHIsIEds
b2JhbEZyYW1lSWRlbnRpZmllciB7IG1fd2ViUGFnZVByb3h5LndlYlBhZ2VJRCgpLCBmcmFtZUlk
IH0sIFdURk1vdmUob3JpZ2luKSB9LCBXVEZNb3ZlKGhhbmRsZXIpKTsKIH0KIAotdm9pZCBXZWJB
dXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eTo6Z2V0QXNzZXJ0aW9uKEZyYW1lSWRlbnRpZmll
ciBmcmFtZUlkLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGhhc2gsIGNvbnN0IFdlYkNvcmU6OlB1
YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucyYgb3B0aW9ucywgUmVxdWVzdENvbXBsZXRp
b25IYW5kbGVyJiYgaGFuZGxlcikKK3ZvaWQgV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJv
eHk6OmdldEFzc2VydGlvbihGcmFtZUlkZW50aWZpZXIgZnJhbWVJZCwgU2VjdXJpdHlPcmlnaW5E
YXRhJiYgb3JpZ2luLCBWZWN0b3I8dWludDhfdD4mJiBoYXNoLCBQdWJsaWNLZXlDcmVkZW50aWFs
UmVxdWVzdE9wdGlvbnMmJiBvcHRpb25zLCBSZXF1ZXN0Q29tcGxldGlvbkhhbmRsZXImJiBoYW5k
bGVyKQogewotICAgIGhhbmRsZVJlcXVlc3QoeyBoYXNoLCBvcHRpb25zLCBtYWtlV2Vha1B0ciht
X3dlYlBhZ2VQcm94eSksIFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxSZXN1bHQ6OlVuYXZhaWxhYmxl
LCBudWxscHRyLCBHbG9iYWxGcmFtZUlkZW50aWZpZXIgeyBtX3dlYlBhZ2VQcm94eS53ZWJQYWdl
SUQoKSwgZnJhbWVJZCB9IH0sIFdURk1vdmUoaGFuZGxlcikpOworICAgIGhhbmRsZVJlcXVlc3Qo
eyBXVEZNb3ZlKGhhc2gpLCBXVEZNb3ZlKG9wdGlvbnMpLCBtYWtlV2Vha1B0cihtX3dlYlBhZ2VQ
cm94eSksIFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxSZXN1bHQ6OlVuYXZhaWxhYmxlLCBudWxscHRy
LCBHbG9iYWxGcmFtZUlkZW50aWZpZXIgeyBtX3dlYlBhZ2VQcm94eS53ZWJQYWdlSUQoKSwgZnJh
bWVJZCB9LCBXVEZNb3ZlKG9yaWdpbikgfSwgV1RGTW92ZShoYW5kbGVyKSk7CiB9CiAKIHZvaWQg
V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHk6OmhhbmRsZVJlcXVlc3QoV2ViQXV0aGVu
dGljYXRpb25SZXF1ZXN0RGF0YSYmIGRhdGEsIFJlcXVlc3RDb21wbGV0aW9uSGFuZGxlciYmIGhh
bmRsZXIpCiB7Ci0gICAgYXV0byBjYWxsYmFjayA9IFtoYW5kbGVyID0gV1RGTW92ZShoYW5kbGVy
KV0gKFZhcmlhbnQ8V2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlhbERhdGEsIFdlYkNvcmU6OkV4
Y2VwdGlvbkRhdGE+JiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICBhdXRvIGNhbGxiYWNrID0gW2hh
bmRsZXIgPSBXVEZNb3ZlKGhhbmRsZXIpXSAoVmFyaWFudDxQdWJsaWNLZXlDcmVkZW50aWFsRGF0
YSwgRXhjZXB0aW9uRGF0YT4mJiByZXN1bHQpIG11dGFibGUgewogICAgICAgICBBU1NFUlQoUnVu
TG9vcDo6aXNNYWluKCkpOwotICAgICAgICBXVEY6OnN3aXRjaE9uKHJlc3VsdCwgWyZdKGNvbnN0
IFdlYkNvcmU6OlB1YmxpY0tleUNyZWRlbnRpYWxEYXRhJiBkYXRhKSB7CisgICAgICAgIFdURjo6
c3dpdGNoT24ocmVzdWx0LCBbJl0oY29uc3QgUHVibGljS2V5Q3JlZGVudGlhbERhdGEmIGRhdGEp
IHsKICAgICAgICAgICAgIGhhbmRsZXIoZGF0YSwgeyB9KTsKLSAgICAgICAgfSwgWyZdKGNvbnN0
ICBXZWJDb3JlOjpFeGNlcHRpb25EYXRhJiBleGNlcHRpb24pIHsKKyAgICAgICAgfSwgWyZdKGNv
bnN0ICBFeGNlcHRpb25EYXRhJiBleGNlcHRpb24pIHsKICAgICAgICAgICAgIGhhbmRsZXIoeyB9
LCBleGNlcHRpb24pOwogICAgICAgICB9KTsKICAgICB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5h
dG9yUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dl
YkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5LmgKaW5kZXggYTFiMjU3ZTEyMDJlNGVhYzA5
NzFmOGM1OTg3ZjBkN2E2MDliNDYyZS4uZWFkODY0YzIxM2FjMmE3Y2VmZjc0ZmRjN2Q2MWE5N2U3
ZjU4Mzc4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGlj
YXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0
b3JQcm94eS5oCkBAIC0zNyw2ICszNyw3IEBAIHN0cnVjdCBFeGNlcHRpb25EYXRhOwogc3RydWN0
IFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnM7CiBzdHJ1Y3QgUHVibGljS2V5Q3Jl
ZGVudGlhbERhdGE7CiBzdHJ1Y3QgUHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zOwor
c3RydWN0IFNlY3VyaXR5T3JpZ2luRGF0YTsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC02
MCw4ICs2MSw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNv
bm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBvdmVycmlkZTsKIAogICAgIC8vIFJlY2VpdmVycy4K
LSAgICB2b2lkIG1ha2VDcmVkZW50aWFsKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgY29uc3Qg
VmVjdG9yPHVpbnQ4X3Q+JiBoYXNoLCBjb25zdCBXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFs
Q3JlYXRpb25PcHRpb25zJiwgUmVxdWVzdENvbXBsZXRpb25IYW5kbGVyJiYpOwotICAgIHZvaWQg
Z2V0QXNzZXJ0aW9uKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgY29uc3QgVmVjdG9yPHVpbnQ4
X3Q+JiBoYXNoLCBjb25zdCBXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlv
bnMmLCBSZXF1ZXN0Q29tcGxldGlvbkhhbmRsZXImJik7CisgICAgdm9pZCBtYWtlQ3JlZGVudGlh
bChXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYm
LCBWZWN0b3I8dWludDhfdD4mJiBoYXNoLCBXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsQ3Jl
YXRpb25PcHRpb25zJiYsIFJlcXVlc3RDb21wbGV0aW9uSGFuZGxlciYmKTsKKyAgICB2b2lkIGdl
dEFzc2VydGlvbihXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luRGF0YSYmLCBWZWN0b3I8dWludDhfdD4mJiBoYXNoLCBXZWJDb3JlOjpQdWJsaWNLZXlDcmVk
ZW50aWFsUmVxdWVzdE9wdGlvbnMmJiwgUmVxdWVzdENvbXBsZXRpb25IYW5kbGVyJiYpOwogICAg
IHZvaWQgaXNVc2VyVmVyaWZ5aW5nUGxhdGZvcm1BdXRoZW50aWNhdG9yQXZhaWxhYmxlKFF1ZXJ5
Q29tcGxldGlvbkhhbmRsZXImJik7CiAKICAgICB2b2lkIGhhbmRsZVJlcXVlc3QoV2ViQXV0aGVu
dGljYXRpb25SZXF1ZXN0RGF0YSYmLCBSZXF1ZXN0Q29tcGxldGlvbkhhbmRsZXImJik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRo
ZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5
Lm1lc3NhZ2VzLmluCmluZGV4IGNhYWZmYTdjMWIzYmJiNGQ2MDNkNDVkY2M1YTQ1MzUzODMwMDAx
OWUuLjAxZjZjZTk5Y2FlYjRkZTk0Y2NmNmFjZTg5MTVjYmRhMDI3OTVjNzggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0
b3JDb29yZGluYXRvclByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5Lm1l
c3NhZ2VzLmluCkBAIC0yNiw4ICsyNiw4IEBACiAKIG1lc3NhZ2VzIC0+IFdlYkF1dGhlbnRpY2F0
b3JDb29yZGluYXRvclByb3h5IHsKIAotICAgIE1ha2VDcmVkZW50aWFsKFdlYkNvcmU6OkZyYW1l
SWRlbnRpZmllciBmcmFtZUlELCBWZWN0b3I8dWludDhfdD4gaGFzaCwgc3RydWN0IFdlYkNvcmU6
OlB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMgb3B0aW9ucykgLT4gKHN0cnVjdCBX
ZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsRGF0YSBkYXRhLCBzdHJ1Y3QgV2ViQ29yZTo6RXhj
ZXB0aW9uRGF0YSBleGNlcHRpb24pIEFzeW5jCi0gICAgR2V0QXNzZXJ0aW9uKFdlYkNvcmU6OkZy
YW1lSWRlbnRpZmllciBmcmFtZUlELCBWZWN0b3I8dWludDhfdD4gaGFzaCwgc3RydWN0IFdlYkNv
cmU6OlB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucyBvcHRpb25zKSAtPiAoc3RydWN0
IFdlYkNvcmU6OlB1YmxpY0tleUNyZWRlbnRpYWxEYXRhIGRhdGEsIHN0cnVjdCBXZWJDb3JlOjpF
eGNlcHRpb25EYXRhIGV4Y2VwdGlvbikgQXN5bmMKKyAgICBNYWtlQ3JlZGVudGlhbChXZWJDb3Jl
OjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
RGF0YSBvcmlnaW4sIFZlY3Rvcjx1aW50OF90PiBoYXNoLCBzdHJ1Y3QgV2ViQ29yZTo6UHVibGlj
S2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucyBvcHRpb25zKSAtPiAoc3RydWN0IFdlYkNvcmU6
OlB1YmxpY0tleUNyZWRlbnRpYWxEYXRhIGRhdGEsIHN0cnVjdCBXZWJDb3JlOjpFeGNlcHRpb25E
YXRhIGV4Y2VwdGlvbikgQXN5bmMKKyAgICBHZXRBc3NlcnRpb24oV2ViQ29yZTo6RnJhbWVJZGVu
dGlmaWVyIGZyYW1lSUQsIHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgb3JpZ2lu
LCBWZWN0b3I8dWludDhfdD4gaGFzaCwgc3RydWN0IFdlYkNvcmU6OlB1YmxpY0tleUNyZWRlbnRp
YWxSZXF1ZXN0T3B0aW9ucyBvcHRpb25zKSAtPiAoc3RydWN0IFdlYkNvcmU6OlB1YmxpY0tleUNy
ZWRlbnRpYWxEYXRhIGRhdGEsIHN0cnVjdCBXZWJDb3JlOjpFeGNlcHRpb25EYXRhIGV4Y2VwdGlv
bikgQXN5bmMKICAgICBJc1VzZXJWZXJpZnlpbmdQbGF0Zm9ybUF1dGhlbnRpY2F0b3JBdmFpbGFi
bGUoKSAtPiAoYm9vbCByZXN1bHQpIEFzeW5jCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0
b3IuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1
dGhlbnRpY2F0b3JDb29yZGluYXRvci5jcHAKaW5kZXggOGE5ODczYjAyMDQ5M2M2YTA2OTFmM2E1
NmMxYmEwMTUzZWNhN2QyNS4uZTYxMzgzYzRlMGE0OGY4MmMxMzFiODJkNmQwY2I1ODVjYTlmZDgw
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9u
L1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvci5jcHAK
QEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1B1YmxpY0tleUNyZWRlbnRpYWxD
cmVhdGlvbk9wdGlvbnMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1B1YmxpY0tleUNyZWRlbnRpYWxE
YXRhLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlv
bnMuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+CiAKIG5hbWVzcGFjZSBX
ZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CkBAIC00MywyMCArNDQsMjAgQEAgV2Vi
QXV0aGVudGljYXRvckNvb3JkaW5hdG9yOjpXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IoV2Vi
UGFnZSYgd2ViUGFnZSkKIHsKIH0KIAotdm9pZCBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3I6
Om1ha2VDcmVkZW50aWFsKGNvbnN0IEZyYW1lJiBmcmFtZSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+
JiBoYXNoLCBjb25zdCBQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zJiBvcHRpb25z
LCBSZXF1ZXN0Q29tcGxldGlvbkhhbmRsZXImJiBoYW5kbGVyKQordm9pZCBXZWJBdXRoZW50aWNh
dG9yQ29vcmRpbmF0b3I6Om1ha2VDcmVkZW50aWFsKGNvbnN0IEZyYW1lJiBmcmFtZSwgY29uc3Qg
U2VjdXJpdHlPcmlnaW4mIG9yaWdpbiwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBoYXNoLCBjb25z
dCBQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zJiBvcHRpb25zLCBSZXF1ZXN0Q29t
cGxldGlvbkhhbmRsZXImJiBoYW5kbGVyKQogewogICAgIGF1dG8qIHdlYkZyYW1lID0gV2ViRnJh
bWU6OmZyb21Db3JlRnJhbWUoZnJhbWUpOwogICAgIGlmICghd2ViRnJhbWUpCiAgICAgICAgIHJl
dHVybjsKLSAgICBtX3dlYlBhZ2Uuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJBdXRo
ZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eTo6TWFrZUNyZWRlbnRpYWwod2ViRnJhbWUtPmZyYW1l
SUQoKSwgaGFzaCwgb3B0aW9ucyksIFdURk1vdmUoaGFuZGxlcikpOworICAgIG1fd2ViUGFnZS5z
ZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclBy
b3h5OjpNYWtlQ3JlZGVudGlhbCh3ZWJGcmFtZS0+ZnJhbWVJRCgpLCBvcmlnaW4uZGF0YSgpLCBo
YXNoLCBvcHRpb25zKSwgV1RGTW92ZShoYW5kbGVyKSk7CiB9CiAKLXZvaWQgV2ViQXV0aGVudGlj
YXRvckNvb3JkaW5hdG9yOjpnZXRBc3NlcnRpb24oY29uc3QgRnJhbWUmIGZyYW1lLCBjb25zdCBW
ZWN0b3I8dWludDhfdD4mIGhhc2gsIGNvbnN0IFB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0
aW9ucyYgb3B0aW9ucywgUmVxdWVzdENvbXBsZXRpb25IYW5kbGVyJiYgaGFuZGxlcikKK3ZvaWQg
V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yOjpnZXRBc3NlcnRpb24oY29uc3QgRnJhbWUmIGZy
YW1lLCBjb25zdCBTZWN1cml0eU9yaWdpbiYgb3JpZ2luLCBjb25zdCBWZWN0b3I8dWludDhfdD4m
IGhhc2gsIGNvbnN0IFB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucyYgb3B0aW9ucywg
UmVxdWVzdENvbXBsZXRpb25IYW5kbGVyJiYgaGFuZGxlcikKIHsKICAgICBhdXRvKiB3ZWJGcmFt
ZSA9IFdlYkZyYW1lOjpmcm9tQ29yZUZyYW1lKGZyYW1lKTsKICAgICBpZiAoIXdlYkZyYW1lKQog
ICAgICAgICByZXR1cm47Ci0gICAgbV93ZWJQYWdlLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdl
czo6V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHk6OkdldEFzc2VydGlvbih3ZWJGcmFt
ZS0+ZnJhbWVJRCgpLCBoYXNoLCBvcHRpb25zKSwgV1RGTW92ZShoYW5kbGVyKSk7CisgICAgbV93
ZWJQYWdlLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViQXV0aGVudGljYXRvckNvb3Jk
aW5hdG9yUHJveHk6OkdldEFzc2VydGlvbih3ZWJGcmFtZS0+ZnJhbWVJRCgpLCBvcmlnaW4uZGF0
YSgpLCBoYXNoLCBvcHRpb25zKSwgV1RGTW92ZShoYW5kbGVyKSk7CiB9CiAKIHZvaWQgV2ViQXV0
aGVudGljYXRvckNvb3JkaW5hdG9yOjppc1VzZXJWZXJpZnlpbmdQbGF0Zm9ybUF1dGhlbnRpY2F0
b3JBdmFpbGFibGUoUXVlcnlDb21wbGV0aW9uSGFuZGxlciYmIGhhbmRsZXIpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGlj
YXRvckNvb3JkaW5hdG9yLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQXV0aGVudGlj
YXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmgKaW5kZXggNzg3ZTlhOTdiNjQxNDU5
YWI3OGRmOTlkNDg3YjZhYzFjN2MxMjgyYS4uNDU4NDg0ZmY5ZTI5ZWM3ZmFmYzc3MjY3NjZjMjRm
MzFiNGJlNzMwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkF1dGhl
bnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvci5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0
b3IuaApAQCAtMzksOCArMzksOCBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgLy8gV2ViQ29y
ZTo6QXV0aGVudGljYXRvckNvb3JkaW5hdG9yQ2xpZW50Ci0gICAgdm9pZCBtYWtlQ3JlZGVudGlh
bChjb25zdCBXZWJDb3JlOjpGcmFtZSYsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYsIGNvbnN0IFdl
YkNvcmU6OlB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMmLCBXZWJDb3JlOjpSZXF1
ZXN0Q29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7Ci0gICAgdm9pZCBnZXRBc3NlcnRpb24oY29u
c3QgV2ViQ29yZTo6RnJhbWUmLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGhhc2gsIGNvbnN0IFdl
YkNvcmU6OlB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucyYsIFdlYkNvcmU6OlJlcXVl
c3RDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKKyAgICB2b2lkIG1ha2VDcmVkZW50aWFsKGNv
bnN0IFdlYkNvcmU6OkZyYW1lJiwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mLCBjb25z
dCBWZWN0b3I8dWludDhfdD4mLCBjb25zdCBXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsQ3Jl
YXRpb25PcHRpb25zJiwgV2ViQ29yZTo6UmVxdWVzdENvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFs
OworICAgIHZvaWQgZ2V0QXNzZXJ0aW9uKGNvbnN0IFdlYkNvcmU6OkZyYW1lJiwgY29uc3QgV2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW4mLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGhhc2gsIGNvbnN0
IFdlYkNvcmU6OlB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucyYsIFdlYkNvcmU6OlJl
cXVlc3RDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKICAgICB2b2lkIGlzVXNlclZlcmlmeWlu
Z1BsYXRmb3JtQXV0aGVudGljYXRvckF2YWlsYWJsZShXZWJDb3JlOjpRdWVyeUNvbXBsZXRpb25I
YW5kbGVyJiYpIGZpbmFsOwogCiAgICAgV2ViUGFnZSYgbV93ZWJQYWdlOwpkaWZmIC0tZ2l0IGEv
VG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDQyMzkzZmZjNGZmOGIzMmNh
ZWU2MDE1OGVlOTE0NTBhMjNhZjQ3ZTguLjhlZWI3ODIxZGZjNjNlNjUwZjFkYTMyNzUzZjZlMWM1
NWM1YWU1MmUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxOSBAQAorMjAxOS0xMC0yMiAgSmlld2VuIFRhbiAgPGppZXdlbl90YW5A
YXBwbGUuY29tPgorCisgICAgICAgIFtXZWJBdXRobl0gU3VwcGx5IEZyYW1lSW5mbyBpbiAtW1dL
VUlEZWxlZ2F0ZVByaXZhdGUgX3dlYlZpZXc6cnVuV2ViQXV0aGVudGljYXRpb25QYW5lbDppbml0
aWF0ZWRCeUZyYW1lOmNvbXBsZXRpb25IYW5kbGVyOl0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMjU2MworICAgICAgICA8cmRhcjovL3Byb2JsZW0v
NTU5NzM5Njg+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQWRkcyBuZXcgdGVzdCBjb250ZW50cyBpbnRvIGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBh
bmVsLm1tOgorICAgICAgICAoLVtUZXN0V2ViQXV0aGVudGljYXRpb25QYW5lbFVJRGVsZWdhdGUg
aW5pdF0pOgorICAgICAgICAoLVtUZXN0V2ViQXV0aGVudGljYXRpb25QYW5lbFVJRGVsZWdhdGUg
X3dlYlZpZXc6cnVuV2ViQXV0aGVudGljYXRpb25QYW5lbDppbml0aWF0ZWRCeUZyYW1lOmNvbXBs
ZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtUZXN0V2ViQXV0aGVudGljYXRpb25QYW5lbFVJ
RGVsZWdhdGUgZnJhbWVdKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorCiAyMDE5
LTEwLTE4ICBBYWthc2ggSmFpbiAgPGFha2FzaF9qYWluQGFwcGxlLmNvbT4KIAogICAgICAgICBF
V1Mgc2hvdWxkIGhhdmUgYSB3YXkgdG8gcmV0cnkgYSBwYXRjaApkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVs
Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9fV0tXZWJBdXRoZW50
aWNhdGlvblBhbmVsLm1tCmluZGV4IDZmNDE4YWUwMTQ5NGZmMDgzMTcyZTJmYTdlNzllNDM5ZGQ5
ZWY3YmUuLjNhMjEzNzRlM2RmNzA5YzVkMjE4MGEwY2ZkODMzYzIwOWRjZmM3ZTAgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvX1dLV2ViQXV0aGVudGlj
YXRpb25QYW5lbC5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW0KQEAgLTg5LDE4ICs4OSwyMyBAQCBAZW5kCiBA
aW1wbGVtZW50YXRpb24gVGVzdFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxVSURlbGVnYXRlIHsKICAg
ICBSZXRhaW5QdHI8TlNPYmplY3Q8X1dLV2ViQXV0aGVudGljYXRpb25QYW5lbERlbGVnYXRlPj4g
X2RlbGVnYXRlOwogICAgIEJsb2NrUHRyPHZvaWQoX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbFJl
c3VsdCk+IF9jYWxsYmFjazsKKyAgICBSZXRhaW5QdHI8V0tGcmFtZUluZm8+IF9mcmFtZUluZm87
CiB9CiAKIC0gKGluc3RhbmNldHlwZSlpbml0CiB7Ci0gICAgaWYgKHNlbGYgPSBbc3VwZXIgaW5p
dF0pCisgICAgaWYgKHNlbGYgPSBbc3VwZXIgaW5pdF0pIHsKICAgICAgICAgc2VsZi5pc1JhY3kg
PSBmYWxzZTsKKyAgICAgICAgc2VsZi5pc0Zha2UgPSBmYWxzZTsKKyAgICAgICAgc2VsZi5pc051
bGwgPSBmYWxzZTsKKyAgICB9CiAgICAgcmV0dXJuIHNlbGY7CiB9CiAKIC0gKHZvaWQpX3dlYlZp
ZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgcnVuV2ViQXV0aGVudGljYXRpb25QYW5lbDooX1dLV2Vi
QXV0aGVudGljYXRpb25QYW5lbCAqKXBhbmVsIGluaXRpYXRlZEJ5RnJhbWU6KFdLRnJhbWVJbmZv
ICopZnJhbWUgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKF9XS1dlYkF1dGhlbnRpY2F0aW9u
UGFuZWxSZXN1bHQpKWNvbXBsZXRpb25IYW5kbGVyCiB7CiAgICAgd2ViQXV0aGVudGljYXRpb25Q
YW5lbFJhbiA9IHRydWU7CisgICAgX2ZyYW1lSW5mbyA9IGZyYW1lOwogCiAgICAgaWYgKCFfaXNO
dWxsKSB7CiAgICAgICAgIGlmICghX2lzRmFrZSkKQEAgLTEyNCw2ICsxMjksMTEgQEAgLSAodm9p
ZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBydW5XZWJBdXRoZW50aWNhdGlvblBhbmVs
OihfV0tXZWJBdXRoZW50aWMKICAgICBjb21wbGV0aW9uSGFuZGxlcihfV0tXZWJBdXRoZW50aWNh
dGlvblBhbmVsUmVzdWx0UHJlc2VudGVkKTsKIH0KIAorLSAoV0tGcmFtZUluZm8gKilmcmFtZQor
eworICAgIHJldHVybiBfZnJhbWVJbmZvLmdldCgpOworfQorCiBAZW5kCiAKIG5hbWVzcGFjZSBU
ZXN0V2ViS2l0QVBJIHsKQEAgLTIzMSw2ICsyNDEsMTMgQEAgVEVTVChXZWJBdXRoZW50aWNhdGlv
blBhbmVsLCBQYW5lbEhpZFN1Y2Nlc3MpCiAKICAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpbTlNV
UkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOnRlc3RVUkwuZ2V0KCldXTsKICAgICBVdGlsOjpydW4o
JndlYkF1dGhlbnRpY2F0aW9uUGFuZWxSYW4pOworICAgIGF1dG8gZnJhbWUgPSBbZGVsZWdhdGUg
ZnJhbWVdOworICAgIEVYUEVDVF9UUlVFKGZyYW1lLm1haW5GcmFtZSk7CisgICAgRVhQRUNUX1RS
VUUoW2ZyYW1lLnJlcXVlc3QuVVJMIGlzRXF1YWw6dGVzdFVSTC5nZXQoKV0pOworICAgIEVYUEVD
VF9XS19TVFJFUShmcmFtZS5zZWN1cml0eU9yaWdpbi5wcm90b2NvbCwgImZpbGUiKTsKKyAgICBF
WFBFQ1RfV0tfU1RSRVEoZnJhbWUuc2VjdXJpdHlPcmlnaW4uaG9zdCwgIiIpOworICAgIEVYUEVD
VF9FUShmcmFtZS5zZWN1cml0eU9yaWdpbi5wb3J0LCAwKTsKKyAgICBFWFBFQ1RfRVEoZnJhbWUu
d2ViVmlldywgd2ViVmlldy5nZXQoKSk7CiAgICAgVXRpbDo6cnVuKCZ3ZWJBdXRoZW50aWNhdGlv
blBhbmVsU3VjY2VkZWQpOwogfQogCkBAIC00MDksMTAgKzQyNiwyMSBAQCBURVNUKFdlYkF1dGhl
bnRpY2F0aW9uUGFuZWwsIFN1YkZyYW1lQ2hhbmdlTG9jYXRpb25IaWRDYW5jZWwpCiAgICAgYXV0
byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tUZXN0V2ViQXV0aGVudGljYXRpb25QYW5lbFVJRGVsZWdh
dGUgYWxsb2NdIGluaXRdKTsKICAgICBbd2ViVmlldyBzZXRVSURlbGVnYXRlOmRlbGVnYXRlLmdl
dCgpXTsKIAotICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdp
dGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6KGlkKW1ha2VTdHJpbmcoImh0dHA6Ly9sb2NhbGhv
c3Q6Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHNlcnZlci5wb3J0KCkpKV1dXTsKKyAgICBhdXRv
IHBvcnQgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc2VydmVyLnBvcnQoKSk7CisgICAgYXV0byB1
cmwgPSBtYWtlU3RyaW5nKCJodHRwOi8vbG9jYWxob3N0OiIsIHBvcnQpOworICAgIFt3ZWJWaWV3
IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhT
dHJpbmc6KGlkKXVybF1dXTsKICAgICBVdGlsOjpydW4oJndlYkF1dGhlbnRpY2F0aW9uUGFuZWxS
YW4pOwogICAgIFt3ZWJWaWV3IGV2YWx1YXRlSmF2YVNjcmlwdDpAInRoZUZyYW1lLnNyYyA9ICdz
aW1wbGUuaHRtbCciIGNvbXBsZXRpb25IYW5kbGVyOm5pbF07CiAgICAgVXRpbDo6cnVuKCZ3ZWJB
dXRoZW50aWNhdGlvblBhbmVsRmFpbGVkKTsKKworICAgIC8vIEJpdCBvZiBleHRyYSBjaGVja3MK
KyAgICBhdXRvIGZyYW1lID0gW2RlbGVnYXRlIGZyYW1lXTsKKyAgICBFWFBFQ1RfRkFMU0UoZnJh
bWUubWFpbkZyYW1lKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoZnJhbWUucmVxdWVzdC5VUkwuYWJz
b2x1dGVTdHJpbmcsIG1ha2VTdHJpbmcodXJsLCAiL2lGcmFtZS5odG1sIikpOworICAgIEVYUEVD
VF9XS19TVFJFUShmcmFtZS5zZWN1cml0eU9yaWdpbi5wcm90b2NvbCwgImh0dHAiKTsKKyAgICBF
WFBFQ1RfV0tfU1RSRVEoZnJhbWUuc2VjdXJpdHlPcmlnaW4uaG9zdCwgImxvY2FsaG9zdCIpOwor
ICAgIEVYUEVDVF9FUShmcmFtZS5zZWN1cml0eU9yaWdpbi5wb3J0LCBwb3J0KTsKKyAgICBFWFBF
Q1RfRVEoZnJhbWUud2ViVmlldywgd2ViVmlldy5nZXQoKSk7CiB9CiAKIFRFU1QoV2ViQXV0aGVu
dGljYXRpb25QYW5lbCwgU3ViRnJhbWVEZXN0cnVjdGlvbkhpZENhbmNlbCkKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA0NWYz
YTQ0NWE5NzQ1NGQwYjY3ZmRjOGQxMTgzMzVlZTNkNjYyZDk0Li4zMDViZDEwZWExY2IzZGNmMmUw
MjEwZGM5MjQ3ZDc2NmFmYmVmYjk3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
KysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTktMTAtMjIg
IEppZXdlbiBUYW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViQXV0aG5d
IFN1cHBseSBGcmFtZUluZm8gaW4gLVtXS1VJRGVsZWdhdGVQcml2YXRlIF93ZWJWaWV3OnJ1bldl
YkF1dGhlbnRpY2F0aW9uUGFuZWw6aW5pdGlhdGVkQnlGcmFtZTpjb21wbGV0aW9uSGFuZGxlcjpd
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDI1NjMK
KyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU1OTczOTY4PgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtl
eS1jcmVkZW50aWFsLWdldC1zdWNjZXNzLWhpZC5odHRwcy5odG1sOgorICAgICAgICBJbXBvcnZl
cyB0aGUgZmxha2luZXNzLgorCiAyMDE5LTEwLTIxICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFz
ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1MgV0syXSBTdXBwb3J0IGhpZGluZyBpZnJhbWUg
c2Nyb2xsYmFycyB2aWEgOjotd2Via2l0LXNjcm9sbGJhciBzdHlsZQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1zdWNj
ZXNzLWhpZC5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGlj
LWtleS1jcmVkZW50aWFsLWdldC1zdWNjZXNzLWhpZC5odHRwcy5odG1sCmluZGV4IDA4N2M5MzRh
OGUyNjU2ODg0OTBmYTI4Mzk2ODZjZGY1MGNjOTkxMGEuLmQyODQzZDU4ZDJhOTUzMGI0ZjkyYTRm
MTg2MjU3NmJkYzBjM2ExNzUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1
dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtc3VjY2Vzcy1oaWQuaHR0cHMuaHRtbAorKysg
Yi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0
LXN1Y2Nlc3MtaGlkLmh0dHBzLmh0bWwKQEAgLTkwLDcgKzkwLDEzIEBACiAgICAgICAgICAgICB9
CiAgICAgICAgIH07CiAKKworICAgICAgICAvLyBTdGFsbCB0aGUgZmlyc3QgcmVxdWVzdCB0byB3
YWl0IGZvciBjYW5jZWxsYXRpb24uCisgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAg
ICAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24o
eyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogInN1Y2Nl
c3MiLCBwYXlsb2FkQmFzZTY0OiBbdGVzdEFzc2VydGlvbk1lc3NhZ2VCYXNlNjRdLCBleHBlY3RD
YW5jZWw6IHRydWUgfSB9KTsKICAgICAgICAgcHJvbWlzZVJlamVjdHModCwgIk5vdEFsbG93ZWRF
cnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5nZXQob3B0aW9ucyksICJUaGlzIHJlcXVlc3Qg
aGFzIGJlZW4gY2FuY2VsbGVkIGJ5IGEgbmV3IHJlcXVlc3QuIik7CisgICAgICAgIGlmICh3aW5k
b3cuaW50ZXJuYWxzKQorICAgICAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNh
dGlvbkNvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3RhZ2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJt
c2ciLCBlcnJvcjogInN1Y2Nlc3MiLCBwYXlsb2FkQmFzZTY0OiBbdGVzdEFzc2VydGlvbk1lc3Nh
Z2VCYXNlNjRdIH0gfSk7CiAgICAgICAgIHJldHVybiBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuZ2V0
KG9wdGlvbnMpLnRoZW4oY3JlZGVudGlhbCA9PiB7CiAgICAgICAgICAgICByZXR1cm4gY2hlY2tD
dGFwR2V0QXNzZXJ0aW9uUmVzdWx0KGNyZWRlbnRpYWwpOwogICAgICAgICB9KTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>381659</attachid>
            <date>2019-10-22 23:08:20 -0700</date>
            <delta_ts>2019-10-23 08:44:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202563-20191022230820.patch</filename>
            <type>text/plain</type>
            <size>30890</size>
            <attacher name="Jiewen Tan">jiewen_tan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUxMzcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWE1MmMxZGU3MmMzN2Q5
YTE4NTc5ZTRmYTJkYzdlN2IxNjhiYmZkNi4uZjE4YjliYWY3Yjc0MDgwNWUzZGNmZjE1ZmZjMTQ1
NjJiNjRiN2ZmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDE5LTEwLTIyICBKaWV3
ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkF1dGhuXSBTdXBw
bHkgRnJhbWVJbmZvIGluIC1bV0tVSURlbGVnYXRlUHJpdmF0ZSBfd2ViVmlldzpydW5XZWJBdXRo
ZW50aWNhdGlvblBhbmVsOmluaXRpYXRlZEJ5RnJhbWU6Y29tcGxldGlvbkhhbmRsZXI6XQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAyNTYzCisgICAg
ICAgIDxyZGFyOi8vcHJvYmxlbS81NTk3Mzk2OD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBDb3ZlcmVkIGJ5IG5ldyB0ZXN0IGNvbnRlbnRzIHdpdGhp
biBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIE1vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGlj
YXRvckNvb3JkaW5hdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JDb29y
ZGluYXRvcjo6Y3JlYXRlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JD
b29yZGluYXRvcjo6ZGlzY292ZXJGcm9tRXh0ZXJuYWxTb3VyY2UgY29uc3QpOgorICAgICAgICAq
IE1vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckNvb3JkaW5hdG9yQ2xpZW50Lmg6CisKIDIw
MTktMTAtMjEgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAg
ICAgW2lPUyBXSzJdIFN1cHBvcnQgaGlkaW5nIGlmcmFtZSBzY3JvbGxiYXJzIHZpYSA6Oi13ZWJr
aXQtc2Nyb2xsYmFyIHN0eWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGU0MWRlMzhjNzA1NmMzYzNhNzc3M2I2NzJl
YWJhNGM2NmYwNGFkMDcuLjRhMmU1ZTM3YWEyOTI3NzYzNzcyNjU2YTRiOTg4Y2M2ZWQ2NWVjYTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMzUgQEAKKzIwMTktMTAtMjIgIEppZXdlbiBUYW4gIDxqaWV3
ZW5fdGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViQXV0aG5dIFN1cHBseSBGcmFtZUluZm8g
aW4gLVtXS1VJRGVsZWdhdGVQcml2YXRlIF93ZWJWaWV3OnJ1bldlYkF1dGhlbnRpY2F0aW9uUGFu
ZWw6aW5pdGlhdGVkQnlGcmFtZTpjb21wbGV0aW9uSGFuZGxlcjpdCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDI1NjMKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzU1OTczOTY4PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFRoaXMgcGF0Y2ggbWFrZXMgV0tGcmFtZUluZm8gYXZhaWxhYmxlIHRvIGNsaWVu
dHMgdmlhIHRoZSBhYm92ZSBTUEkuIFRvIGRvIHNvLAorICAgICAgICBTZWN1aXJ0eU9yaWdpbiBv
ZiB0aGUgY2FsbGVyIGRvY3VtZW50IGlzIHBhc3NlZCBmcm9tIFdlYkNvbnRlbnQgUHJvY2Vzcy4K
KworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJVUlDbGllbnQuaDoKKyAgICAgICAgKEFQSTo6
VUlDbGllbnQ6OnJ1bldlYkF1dGhlbnRpY2F0aW9uUGFuZWwpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQy9XS1BhZ2UuY3BwOgorICAgICAgICAoV0tQYWdlU2V0UGFnZVVJQ2xpZW50KToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9Db2NvYS9VSURlbGVnYXRlLm1tOgorICAgICAgICAoV2ViS2l0OjpVSURlbGVnYXRlOjpVSUNs
aWVudDo6cnVuV2ViQXV0aGVudGljYXRpb25QYW5lbCk6CisgICAgICAgICogVUlQcm9jZXNzL1dl
YkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6QXV0aGVudGljYXRvck1hbmFnZXI6OnJ1blBhbmVsKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRpb25SZXF1ZXN0RGF0YS5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0
b3JQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRv
clByb3h5OjptYWtlQ3JlZGVudGlhbCk6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dGhlbnRpY2F0
b3JDb29yZGluYXRvclByb3h5OjpnZXRBc3NlcnRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJB
dXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eTo6aGFuZGxlUmVxdWVzdCk6CisgICAgICAgICog
VUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclBy
b3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRp
Y2F0b3JDb29yZGluYXRvclByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yOjptYWtlQ3JlZGVudGlhbCk6
CisgICAgICAgIChXZWJLaXQ6OldlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvcjo6Z2V0QXNzZXJ0
aW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRp
Y2F0b3JDb29yZGluYXRvci5oOgorCiAyMDE5LTEwLTIxICBDaHJpcyBEdW1leiAgPGNkdW1lekBh
cHBsZS5jb20+CiAKICAgICAgICAgQWRkIG1vcmUgcmVsZWFzZSBsb2dnaW5nIGZvciAiVW5leHBl
Y3RlZGx5IHJlc3VtZWQiIGFzc2VydGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuY3BwCmluZGV4IGM2
NGM5YTMyMmQ3OWQ5MmZlMWIwNmY2NjRhOGExMzg3ZGJiNGVhMDMuLjY2ZTViYTExNTIzNzhkYmM0
NmE2NWQ4YTVjMzc4ZGJiMGFiYTZhYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JDb29yZGluYXRvci5jcHAKQEAgLTIw
NCw3ICsyMDQsNyBAQCB2b2lkIEF1dGhlbnRpY2F0b3JDb29yZGluYXRvcjo6Y3JlYXRlKGNvbnN0
IERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgUHVibGljS2V5QwogICAgICAgICBwcm9taXNlLnJl
amVjdChleGNlcHRpb24udG9FeGNlcHRpb24oKSk7CiAgICAgfTsKICAgICAvLyBBc3luYyBvcGVy
YXRpb25zIGFyZSBkaXNwYXRjaGVkIGFuZCBoYW5kbGVkIGluIHRoZSBtZXNzZW5nZXIuCi0gICAg
bV9jbGllbnQtPm1ha2VDcmVkZW50aWFsKCpmcmFtZSwgY2xpZW50RGF0YUpzb25IYXNoLCBvcHRp
b25zLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CisgICAgbV9jbGllbnQtPm1ha2VDcmVkZW50aWFsKCpm
cmFtZSwgY2FsbGVyT3JpZ2luLCBjbGllbnREYXRhSnNvbkhhc2gsIG9wdGlvbnMsIFdURk1vdmUo
Y2FsbGJhY2spKTsKIH0KIAogdm9pZCBBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3I6OmRpc2NvdmVy
RnJvbUV4dGVybmFsU291cmNlKGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgUHVibGlj
S2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zJiBvcHRpb25zLCBib29sIHNhbWVPcmlnaW5XaXRo
QW5jZXN0b3JzLCBSZWZQdHI8QWJvcnRTaWduYWw+JiYgYWJvcnRTaWduYWwsIENyZWRlbnRpYWxQ
cm9taXNlJiYgcHJvbWlzZSkgY29uc3QKQEAgLTI3NSw3ICsyNzUsNyBAQCB2b2lkIEF1dGhlbnRp
Y2F0b3JDb29yZGluYXRvcjo6ZGlzY292ZXJGcm9tRXh0ZXJuYWxTb3VyY2UoY29uc3QgRG9jdW1l
bnQmIGRvY3VtZQogICAgICAgICBwcm9taXNlLnJlamVjdChleGNlcHRpb24udG9FeGNlcHRpb24o
KSk7CiAgICAgfTsKICAgICAvLyBBc3luYyBvcGVyYXRpb25zIGFyZSBkaXNwYXRjaGVkIGFuZCBo
YW5kbGVkIGluIHRoZSBtZXNzZW5nZXIuCi0gICAgbV9jbGllbnQtPmdldEFzc2VydGlvbigqZnJh
bWUsIGNsaWVudERhdGFKc29uSGFzaCwgb3B0aW9ucywgV1RGTW92ZShjYWxsYmFjaykpOworICAg
IG1fY2xpZW50LT5nZXRBc3NlcnRpb24oKmZyYW1lLCBjYWxsZXJPcmlnaW4sIGNsaWVudERhdGFK
c29uSGFzaCwgb3B0aW9ucywgV1RGTW92ZShjYWxsYmFjaykpOwogfQogCiB2b2lkIEF1dGhlbnRp
Y2F0b3JDb29yZGluYXRvcjo6aXNVc2VyVmVyaWZ5aW5nUGxhdGZvcm1BdXRoZW50aWNhdG9yQXZh
aWxhYmxlKERPTVByb21pc2VEZWZlcnJlZDxJRExCb29sZWFuPiYmIHByb21pc2UpIGNvbnN0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JD
b29yZGluYXRvckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRo
ZW50aWNhdG9yQ29vcmRpbmF0b3JDbGllbnQuaAppbmRleCBiNmNkYjUwYjYwZmQxMjNkODNmNGI2
Y2M2Mzc5MmI2MDJjMTU4OGFhLi5kNmJlMzNiZWVkN2IwNTc3NmU0ZjQ5YTk4ZDk5OWU2NjcyYWQ5
ZDZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRp
Y2F0b3JDb29yZGluYXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXV0aG4vQXV0aGVudGljYXRvckNvb3JkaW5hdG9yQ2xpZW50LmgKQEAgLTM2LDYgKzM2LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBEZWZlcnJlZFByb21pc2U7CiBjbGFzcyBGcmFt
ZTsKK2NsYXNzIFNlY3VyaXR5T3JpZ2luOwogCiBzdHJ1Y3QgUHVibGljS2V5Q3JlZGVudGlhbENy
ZWF0aW9uT3B0aW9uczsKIHN0cnVjdCBQdWJsaWNLZXlDcmVkZW50aWFsRGF0YTsKQEAgLTUxLDgg
KzUyLDggQEAgcHVibGljOgogICAgIEF1dGhlbnRpY2F0b3JDb29yZGluYXRvckNsaWVudCgpID0g
ZGVmYXVsdDsKICAgICB2aXJ0dWFsIH5BdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JDbGllbnQoKSA9
IGRlZmF1bHQ7CiAKLSAgICB2aXJ0dWFsIHZvaWQgbWFrZUNyZWRlbnRpYWwoY29uc3QgRnJhbWUm
LCBjb25zdCBWZWN0b3I8dWludDhfdD4mLCBjb25zdCBQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRp
b25PcHRpb25zJiwgUmVxdWVzdENvbXBsZXRpb25IYW5kbGVyJiYpIHsgfTsKLSAgICB2aXJ0dWFs
IHZvaWQgZ2V0QXNzZXJ0aW9uKGNvbnN0IEZyYW1lJiwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+Jiwg
Y29uc3QgUHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zJiwgUmVxdWVzdENvbXBsZXRp
b25IYW5kbGVyJiYpIHsgfTsKKyAgICB2aXJ0dWFsIHZvaWQgbWFrZUNyZWRlbnRpYWwoY29uc3Qg
RnJhbWUmLCBjb25zdCBTZWN1cml0eU9yaWdpbiYsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYsIGNv
bnN0IFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMmLCBSZXF1ZXN0Q29tcGxldGlv
bkhhbmRsZXImJikgeyB9OworICAgIHZpcnR1YWwgdm9pZCBnZXRBc3NlcnRpb24oY29uc3QgRnJh
bWUmLCBjb25zdCBTZWN1cml0eU9yaWdpbiYsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYsIGNvbnN0
IFB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucyYsIFJlcXVlc3RDb21wbGV0aW9uSGFu
ZGxlciYmKSB7IH07CiAgICAgdmlydHVhbCB2b2lkIGlzVXNlclZlcmlmeWluZ1BsYXRmb3JtQXV0
aGVudGljYXRvckF2YWlsYWJsZShRdWVyeUNvbXBsZXRpb25IYW5kbGVyJiYpIHsgfTsKIH07CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElVSUNsaWVudC5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVVJQ2xpZW50LmgKaW5kZXggZDk3ZDM5MWRl
OGQ4YjM1MGVlZWUyZWZjNDRmNjdjMGU2OTMzYWEwZS4uZmRlZGZlNDYwMmFkN2Y3ZjUzYWMzMWY4
YWNmMWE0NWZmNzA3Njg5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0FQSVVJQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVVJQ2xp
ZW50LmgKQEAgLTE5Nyw3ICsxOTcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZFNo
b3dTYWZlQnJvd3NpbmdXYXJuaW5nKCkgeyB9CiAKICNpZiBFTkFCTEUoV0VCX0FVVEhOKQotICAg
IHZpcnR1YWwgdm9pZCBydW5XZWJBdXRoZW50aWNhdGlvblBhbmVsKFdlYktpdDo6V2ViUGFnZVBy
b3h5JiwgV2ViQXV0aGVudGljYXRpb25QYW5lbCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2Vi
S2l0OjpXZWJBdXRoZW50aWNhdGlvblBhbmVsUmVzdWx0KT4mJiBjb21wbGV0aW9uSGFuZGxlcikg
eyBjb21wbGV0aW9uSGFuZGxlcihXZWJLaXQ6OldlYkF1dGhlbnRpY2F0aW9uUGFuZWxSZXN1bHQ6
OlVuYXZhaWxhYmxlKTsgfQorICAgIHZpcnR1YWwgdm9pZCBydW5XZWJBdXRoZW50aWNhdGlvblBh
bmVsKFdlYktpdDo6V2ViUGFnZVByb3h5JiwgV2ViQXV0aGVudGljYXRpb25QYW5lbCYsIFdlYktp
dDo6V2ViRnJhbWVQcm94eSYsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViS2l0OjpXZWJBdXRoZW50aWNhdGlvblBhbmVsUmVzdWx0
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikgeyBjb21wbGV0aW9uSGFuZGxlcihXZWJLaXQ6OldlYkF1
dGhlbnRpY2F0aW9uUGFuZWxSZXN1bHQ6OlVuYXZhaWxhYmxlKTsgfQogI2VuZGlmCiB9OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAppbmRleCBiYjA0OGJiMWE2MzUw
ZjdmZTkwMTY3Nzk4NjhlZTNhMTZmNDFjMTI1Li40NDYzNzI1MWRmZjVhMTkxNzNiYmFjNDdhNDMx
NWEzZmYyZjhmNmI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9X
S1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAK
QEAgLTIwNzYsNyArMjA3Niw3IEBAIHZvaWQgV0tQYWdlU2V0UGFnZVVJQ2xpZW50KFdLUGFnZVJl
ZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VVSUNsaWVudEJhc2UqIHdrQ2xpZW50CiAKICNpZiBFTkFC
TEUoV0VCX0FVVEhOKQogICAgICAgICAvLyBUaGUgY3VycmVudCBtZXRob2QgaXMgc3BlY2lhbGl6
ZWQgZm9yIFdlYktpdFRlc3RSdW5uZXIuCi0gICAgICAgIHZvaWQgcnVuV2ViQXV0aGVudGljYXRp
b25QYW5lbChXZWJQYWdlUHJveHkmLCBBUEk6OldlYkF1dGhlbnRpY2F0aW9uUGFuZWwmLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFdlYktpdDo6V2ViQXV0aGVudGljYXRpb25QYW5lbFJlc3VsdCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpIGZpbmFsCisgICAgICAgIHZvaWQgcnVuV2ViQXV0aGVudGlj
YXRpb25QYW5lbChXZWJQYWdlUHJveHkmLCBBUEk6OldlYkF1dGhlbnRpY2F0aW9uUGFuZWwmLCBX
ZWJGcmFtZVByb3h5JiwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChXZWJLaXQ6OldlYkF1dGhlbnRpY2F0aW9uUGFuZWxSZXN1bHQpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKSBmaW5hbAogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoIW1f
Y2xpZW50LnJ1bldlYkF1dGhlbnRpY2F0aW9uUGFuZWwpIHsKICAgICAgICAgICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihXZWJLaXQ6OldlYkF1dGhlbnRpY2F0aW9uUGFuZWxSZXN1bHQ6OlVuYXZh
aWxhYmxlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJRGVs
ZWdhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUuaAppbmRl
eCA4MWY3OGFhMGZmODFkNjU2ZDg0MWUyN2NlZmE3MzZmYTMyNGU3YzE0Li5mYWM3MGI2YmMzMGM4
NDZlMjBlMWRhYTIxMmNhMDZiMzA2OGEyMjNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvVUlEZWxlZ2F0ZS5oCkBAIC0xNTUsNyArMTU1LDcgQEAgcHJpdmF0ZToKICAgICAgICAg
dm9pZCBpbWFnZU9yTWVkaWFEb2N1bWVudFNpemVDaGFuZ2VkKGNvbnN0IFdlYkNvcmU6OkludFNp
emUmKSBmaW5hbDsKICAgICAgICAgdm9pZCBkaWRTaG93U2FmZUJyb3dzaW5nV2FybmluZygpIGZp
bmFsOwogI2lmIEVOQUJMRShXRUJfQVVUSE4pCi0gICAgICAgIHZvaWQgcnVuV2ViQXV0aGVudGlj
YXRpb25QYW5lbChXZWJQYWdlUHJveHkmLCBBUEk6OldlYkF1dGhlbnRpY2F0aW9uUGFuZWwmLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxSZXN1bHQpPiYmKSBm
aW5hbDsKKyAgICAgICAgdm9pZCBydW5XZWJBdXRoZW50aWNhdGlvblBhbmVsKFdlYlBhZ2VQcm94
eSYsIEFQSTo6V2ViQXV0aGVudGljYXRpb25QYW5lbCYsIFdlYkZyYW1lUHJveHkmLCBjb25zdCBX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkF1
dGhlbnRpY2F0aW9uUGFuZWxSZXN1bHQpPiYmKSBmaW5hbDsKICNlbmRpZgogCiAgICAgICAgIFVJ
RGVsZWdhdGUmIG1fdWlEZWxlZ2F0ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL1VJRGVsZWdhdGUubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9V
SURlbGVnYXRlLm1tCmluZGV4IDUwZGFhZTM2MjFkYTU3MTBjOWYyNWUzYmQwZmZhYzJiNDM5NDdk
MTUuLmE3NTAzNDYyMDE2ZmUxNjE3MWIxNjA0Njc0ZTE2YzNlYTkyZjk4OWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW0KKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbQpAQCAtMTI4MSw3ICsxMjgxLDcg
QEAgc3RhdGljIFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxSZXN1bHQgd2ViQXV0aGVudGljYXRpb25Q
YW5lbFJlc3VsdChfV0tXZWJBdXRoZW50aWMKICAgICByZXR1cm4gV2ViQXV0aGVudGljYXRpb25Q
YW5lbFJlc3VsdDo6VW5hdmFpbGFibGU7CiB9CiAKLXZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6
OnJ1bldlYkF1dGhlbnRpY2F0aW9uUGFuZWwoV2ViUGFnZVByb3h5JiwgQVBJOjpXZWJBdXRoZW50
aWNhdGlvblBhbmVsJiBwYW5lbCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJBdXRoZW50aWNh
dGlvblBhbmVsUmVzdWx0KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgVUlEZWxlZ2F0ZTo6
VUlDbGllbnQ6OnJ1bldlYkF1dGhlbnRpY2F0aW9uUGFuZWwoV2ViUGFnZVByb3h5JiwgQVBJOjpX
ZWJBdXRoZW50aWNhdGlvblBhbmVsJiBwYW5lbCwgV2ViRnJhbWVQcm94eSYgd2ViRnJhbWVQcm94
eSwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiBvcmlnaW4sIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoV2ViQXV0aGVudGljYXRpb25QYW5lbFJlc3VsdCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCiB7CiAgICAgaWYgKCFtX3VpRGVsZWdhdGUubV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmll
d1J1bldlYkF1dGhlbnRpY2F0aW9uUGFuZWxJbml0aWF0ZWRCeUZyYW1lQ29tcGxldGlvbkhhbmRs
ZXIpIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV2ViQXV0aGVudGljYXRpb25QYW5lbFJl
c3VsdDo6VW5hdmFpbGFibGUpOwpAQCAtMTI5NSw3ICsxMjk1LDcgQEAgdm9pZCBVSURlbGVnYXRl
OjpVSUNsaWVudDo6cnVuV2ViQXV0aGVudGljYXRpb25QYW5lbChXZWJQYWdlUHJveHkmLCBBUEk6
OldlYkF1dGgKICAgICB9CiAKICAgICBhdXRvIGNoZWNrZXIgPSBDb21wbGV0aW9uSGFuZGxlckNh
bGxDaGVja2VyOjpjcmVhdGUoZGVsZWdhdGUuZ2V0KCksIEBzZWxlY3Rvcihfd2ViVmlldzpydW5X
ZWJBdXRoZW50aWNhdGlvblBhbmVsOmluaXRpYXRlZEJ5RnJhbWU6Y29tcGxldGlvbkhhbmRsZXI6
KSk7Ci0gICAgWyhpZCA8V0tVSURlbGVnYXRlUHJpdmF0ZT4pZGVsZWdhdGUgX3dlYlZpZXc6bV91
aURlbGVnYXRlLm1fd2ViVmlldyBydW5XZWJBdXRoZW50aWNhdGlvblBhbmVsOndyYXBwZXIocGFu
ZWwpIGluaXRpYXRlZEJ5RnJhbWU6bmlsIGNvbXBsZXRpb25IYW5kbGVyOm1ha2VCbG9ja1B0cihb
Y29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgY2hlY2tlciA9
IFdURk1vdmUoY2hlY2tlcildIChfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsUmVzdWx0IHJlc3Vs
dCkgbXV0YWJsZSB7CisgICAgWyhpZCA8V0tVSURlbGVnYXRlUHJpdmF0ZT4pZGVsZWdhdGUgX3dl
YlZpZXc6bV91aURlbGVnYXRlLm1fd2ViVmlldyBydW5XZWJBdXRoZW50aWNhdGlvblBhbmVsOndy
YXBwZXIocGFuZWwpIGluaXRpYXRlZEJ5RnJhbWU6d3JhcHBlcihBUEk6OkZyYW1lSW5mbzo6Y3Jl
YXRlKHdlYkZyYW1lUHJveHksIG9yaWdpbi5zZWN1cml0eU9yaWdpbigpKSkgY29tcGxldGlvbkhh
bmRsZXI6bWFrZUJsb2NrUHRyKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpLCBjaGVja2VyID0gV1RGTW92ZShjaGVja2VyKV0gKF9XS1dlYkF1dGhlbnRpY2F0
aW9uUGFuZWxSZXN1bHQgcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgaWYgKGNoZWNrZXItPmNv
bXBsZXRpb25IYW5kbGVySGFzQmVlbkNhbGxlZCgpKQogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICBjaGVja2VyLT5kaWRDYWxsQ29tcGxldGlvbkhhbmRsZXIoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0b3JNYW5h
Z2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhl
bnRpY2F0b3JNYW5hZ2VyLmNwcAppbmRleCA0YzgxOWVhYWExMTU0OTYxY2ExN2VkZjIyMDAzY2Rk
NzUyNWI1ZmVkLi5hYzMyZDAzNTVhZjVjN2E1ZjQ5MzlmYzdjYjE5MzRiNDVmZDc4ZGVmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50
aWNhdG9yTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVu
dGljYXRpb24vQXV0aGVudGljYXRvck1hbmFnZXIuY3BwCkBAIC0yOTEsMTAgKzI5MSwxNCBAQCB2
b2lkIEF1dGhlbnRpY2F0b3JNYW5hZ2VyOjpydW5QYW5lbCgpCiAgICAgYXV0byogcGFnZSA9IG1f
cGVuZGluZ1JlcXVlc3REYXRhLnBhZ2UuZ2V0KCk7CiAgICAgaWYgKCFwYWdlKQogICAgICAgICBy
ZXR1cm47CisgICAgQVNTRVJUKG1fcGVuZGluZ1JlcXVlc3REYXRhLmZyYW1lSUQgJiYgcGFnZS0+
d2ViUGFnZUlEKCkgPT0gbV9wZW5kaW5nUmVxdWVzdERhdGEuZnJhbWVJRC0+cGFnZUlEKTsKKyAg
ICBhdXRvKiBmcmFtZSA9IHBhZ2UtPnByb2Nlc3MoKS53ZWJGcmFtZShtX3BlbmRpbmdSZXF1ZXN0
RGF0YS5mcmFtZUlELT5mcmFtZUlEKTsKKyAgICBpZiAoIWZyYW1lKQorICAgICAgICByZXR1cm47
CiAKICAgICBtX3BlbmRpbmdSZXF1ZXN0RGF0YS5wYW5lbCA9IEFQSTo6V2ViQXV0aGVudGljYXRp
b25QYW5lbDo6Y3JlYXRlKCp0aGlzLCBnZXRScElkKG1fcGVuZGluZ1JlcXVlc3REYXRhLm9wdGlv
bnMpKTsKICAgICBhdXRvJiBwYW5lbCA9ICptX3BlbmRpbmdSZXF1ZXN0RGF0YS5wYW5lbDsKLSAg
ICBwYWdlLT51aUNsaWVudCgpLnJ1bldlYkF1dGhlbnRpY2F0aW9uUGFuZWwoKnBhZ2UsIHBhbmVs
LCBbd2Vha1BhbmVsID0gbWFrZVdlYWtQdHIocGFuZWwpLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRy
KCp0aGlzKSwgdGhpc10gKFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxSZXN1bHQgcmVzdWx0KSB7Cisg
ICAgcGFnZS0+dWlDbGllbnQoKS5ydW5XZWJBdXRoZW50aWNhdGlvblBhbmVsKCpwYWdlLCBwYW5l
bCwgKmZyYW1lLCBtX3BlbmRpbmdSZXF1ZXN0RGF0YS5vcmlnaW4sIFt3ZWFrUGFuZWwgPSBtYWtl
V2Vha1B0cihwYW5lbCksIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpLCB0aGlzXSAoV2Vi
QXV0aGVudGljYXRpb25QYW5lbFJlc3VsdCByZXN1bHQpIHsKICAgICAgICAgLy8gVGhlIHBhbmVs
IGFkZHJlc3MgaXMgdXNlZCB0byBkZXRlcm1pbmUgaWYgdGhlIGN1cnJlbnQgcGVuZGluZyByZXF1
ZXN0IGlzIHN0aWxsIHRoZSBzYW1lLgogICAgICAgICBpZiAoIXdlYWtUaGlzIHx8ICF3ZWFrUGFu
ZWwKICAgICAgICAgICAgIHx8IChyZXN1bHQgPT0gV2ViQXV0aGVudGljYXRpb25QYW5lbFJlc3Vs
dDo6RGlkTm90UHJlc2VudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0aW9uUmVxdWVzdERhdGEuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0aW9uUmVxdWVz
dERhdGEuaAppbmRleCA5OWFlMGZiNzI1NmU2ZjI3Mzk3YTM2YzhkMTIyMWEyODNjZjZiZmQ2Li4z
NjE3ZmU3NTgwNzRlZTQ5ODRlNTA2ZjM0ZTE3ODM3YTQ3ZTk1NGM1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdGlvblJl
cXVlc3REYXRhLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRp
b24vV2ViQXV0aGVudGljYXRpb25SZXF1ZXN0RGF0YS5oCkBAIC0zMiw2ICszMiw3IEBACiAjaW5j
bHVkZSA8V2ViQ29yZS9HbG9iYWxGcmFtZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1B1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1B1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucy5oPgorI2luY2x1ZGUgPFdlYkNvcmUv
U2VjdXJpdHlPcmlnaW5EYXRhLmg+CiAjaW5jbHVkZSA8d3RmL1ZhcmlhbnQuaD4KICNpbmNsdWRl
IDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KQEAgLTQ3LDYgKzQ4LDcg
QEAgc3RydWN0IFdlYkF1dGhlbnRpY2F0aW9uUmVxdWVzdERhdGEgewogICAgIFdlYkF1dGhlbnRp
Y2F0aW9uUGFuZWxSZXN1bHQgcGFuZWxSZXN1bHQgeyBXZWJBdXRoZW50aWNhdGlvblBhbmVsUmVz
dWx0OjpVbmF2YWlsYWJsZSB9OwogICAgIFJlZlB0cjxBUEk6OldlYkF1dGhlbnRpY2F0aW9uUGFu
ZWw+IHBhbmVsOwogICAgIFdURjo6T3B0aW9uYWw8V2ViQ29yZTo6R2xvYmFsRnJhbWVJZGVudGlm
aWVyPiBmcmFtZUlEOworICAgIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBvcmlnaW47CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhl
bnRpY2F0b3JDb29yZGluYXRvclByb3h5LmNwcAppbmRleCBhNmQzYjkxOTAyNjU1NjUzNzU4NDgx
OWVlZmVjZWIxMDZlNGJjYmZkLi45Y2YxNzA5NDgyZDE1NTRmNTAzZDAzM2NiMWNlYmJlNWQzZWNi
YjE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlv
bi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9y
UHJveHkuY3BwCkBAIC0zNywxMCArMzcsMTIgQEAKICNpbmNsdWRlICJXZWJzaXRlRGF0YVN0b3Jl
LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9FeGNlcHRpb25EYXRhLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9QdWJsaWNLZXlDcmVkZW50aWFsRGF0YS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlP
cmlnaW5EYXRhLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYv
UnVuTG9vcC5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwogCiBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eTo6V2ViQXV0aGVudGljYXRvckNv
b3JkaW5hdG9yUHJveHkoV2ViUGFnZVByb3h5JiB3ZWJQYWdlUHJveHkpCiAgICAgOiBtX3dlYlBh
Z2VQcm94eSh3ZWJQYWdlUHJveHkpCkBAIC01MywyMyArNTUsMjMgQEAgV2ViQXV0aGVudGljYXRv
ckNvb3JkaW5hdG9yUHJveHk6On5XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eSgpCiAg
ICAgbV93ZWJQYWdlUHJveHkucHJvY2VzcygpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdl
czo6V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUo
KSwgbV93ZWJQYWdlUHJveHkud2ViUGFnZUlEKCkpOwogfQogCi12b2lkIFdlYkF1dGhlbnRpY2F0
b3JDb29yZGluYXRvclByb3h5OjptYWtlQ3JlZGVudGlhbChGcmFtZUlkZW50aWZpZXIgZnJhbWVJ
ZCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBoYXNoLCBjb25zdCBXZWJDb3JlOjpQdWJsaWNLZXlD
cmVkZW50aWFsQ3JlYXRpb25PcHRpb25zJiBvcHRpb25zLCBSZXF1ZXN0Q29tcGxldGlvbkhhbmRs
ZXImJiBoYW5kbGVyKQordm9pZCBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eTo6bWFr
ZUNyZWRlbnRpYWwoRnJhbWVJZGVudGlmaWVyIGZyYW1lSWQsIFNlY3VyaXR5T3JpZ2luRGF0YSYm
IG9yaWdpbiwgVmVjdG9yPHVpbnQ4X3Q+JiYgaGFzaCwgUHVibGljS2V5Q3JlZGVudGlhbENyZWF0
aW9uT3B0aW9ucyYmIG9wdGlvbnMsIFJlcXVlc3RDb21wbGV0aW9uSGFuZGxlciYmIGhhbmRsZXIp
CiB7Ci0gICAgaGFuZGxlUmVxdWVzdCh7IGhhc2gsIG9wdGlvbnMsIG1ha2VXZWFrUHRyKG1fd2Vi
UGFnZVByb3h5KSwgV2ViQXV0aGVudGljYXRpb25QYW5lbFJlc3VsdDo6VW5hdmFpbGFibGUsIG51
bGxwdHIsIEdsb2JhbEZyYW1lSWRlbnRpZmllciB7IG1fd2ViUGFnZVByb3h5LndlYlBhZ2VJRCgp
LCBmcmFtZUlkIH0gfSwgV1RGTW92ZShoYW5kbGVyKSk7CisgICAgaGFuZGxlUmVxdWVzdCh7IFdU
Rk1vdmUoaGFzaCksIFdURk1vdmUob3B0aW9ucyksIG1ha2VXZWFrUHRyKG1fd2ViUGFnZVByb3h5
KSwgV2ViQXV0aGVudGljYXRpb25QYW5lbFJlc3VsdDo6VW5hdmFpbGFibGUsIG51bGxwdHIsIEds
b2JhbEZyYW1lSWRlbnRpZmllciB7IG1fd2ViUGFnZVByb3h5LndlYlBhZ2VJRCgpLCBmcmFtZUlk
IH0sIFdURk1vdmUob3JpZ2luKSB9LCBXVEZNb3ZlKGhhbmRsZXIpKTsKIH0KIAotdm9pZCBXZWJB
dXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eTo6Z2V0QXNzZXJ0aW9uKEZyYW1lSWRlbnRpZmll
ciBmcmFtZUlkLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGhhc2gsIGNvbnN0IFdlYkNvcmU6OlB1
YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucyYgb3B0aW9ucywgUmVxdWVzdENvbXBsZXRp
b25IYW5kbGVyJiYgaGFuZGxlcikKK3ZvaWQgV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJv
eHk6OmdldEFzc2VydGlvbihGcmFtZUlkZW50aWZpZXIgZnJhbWVJZCwgU2VjdXJpdHlPcmlnaW5E
YXRhJiYgb3JpZ2luLCBWZWN0b3I8dWludDhfdD4mJiBoYXNoLCBQdWJsaWNLZXlDcmVkZW50aWFs
UmVxdWVzdE9wdGlvbnMmJiBvcHRpb25zLCBSZXF1ZXN0Q29tcGxldGlvbkhhbmRsZXImJiBoYW5k
bGVyKQogewotICAgIGhhbmRsZVJlcXVlc3QoeyBoYXNoLCBvcHRpb25zLCBtYWtlV2Vha1B0ciht
X3dlYlBhZ2VQcm94eSksIFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxSZXN1bHQ6OlVuYXZhaWxhYmxl
LCBudWxscHRyLCBHbG9iYWxGcmFtZUlkZW50aWZpZXIgeyBtX3dlYlBhZ2VQcm94eS53ZWJQYWdl
SUQoKSwgZnJhbWVJZCB9IH0sIFdURk1vdmUoaGFuZGxlcikpOworICAgIGhhbmRsZVJlcXVlc3Qo
eyBXVEZNb3ZlKGhhc2gpLCBXVEZNb3ZlKG9wdGlvbnMpLCBtYWtlV2Vha1B0cihtX3dlYlBhZ2VQ
cm94eSksIFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxSZXN1bHQ6OlVuYXZhaWxhYmxlLCBudWxscHRy
LCBHbG9iYWxGcmFtZUlkZW50aWZpZXIgeyBtX3dlYlBhZ2VQcm94eS53ZWJQYWdlSUQoKSwgZnJh
bWVJZCB9LCBXVEZNb3ZlKG9yaWdpbikgfSwgV1RGTW92ZShoYW5kbGVyKSk7CiB9CiAKIHZvaWQg
V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHk6OmhhbmRsZVJlcXVlc3QoV2ViQXV0aGVu
dGljYXRpb25SZXF1ZXN0RGF0YSYmIGRhdGEsIFJlcXVlc3RDb21wbGV0aW9uSGFuZGxlciYmIGhh
bmRsZXIpCiB7Ci0gICAgYXV0byBjYWxsYmFjayA9IFtoYW5kbGVyID0gV1RGTW92ZShoYW5kbGVy
KV0gKFZhcmlhbnQ8V2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlhbERhdGEsIFdlYkNvcmU6OkV4
Y2VwdGlvbkRhdGE+JiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICBhdXRvIGNhbGxiYWNrID0gW2hh
bmRsZXIgPSBXVEZNb3ZlKGhhbmRsZXIpXSAoVmFyaWFudDxQdWJsaWNLZXlDcmVkZW50aWFsRGF0
YSwgRXhjZXB0aW9uRGF0YT4mJiByZXN1bHQpIG11dGFibGUgewogICAgICAgICBBU1NFUlQoUnVu
TG9vcDo6aXNNYWluKCkpOwotICAgICAgICBXVEY6OnN3aXRjaE9uKHJlc3VsdCwgWyZdKGNvbnN0
IFdlYkNvcmU6OlB1YmxpY0tleUNyZWRlbnRpYWxEYXRhJiBkYXRhKSB7CisgICAgICAgIFdURjo6
c3dpdGNoT24ocmVzdWx0LCBbJl0oY29uc3QgUHVibGljS2V5Q3JlZGVudGlhbERhdGEmIGRhdGEp
IHsKICAgICAgICAgICAgIGhhbmRsZXIoZGF0YSwgeyB9KTsKLSAgICAgICAgfSwgWyZdKGNvbnN0
ICBXZWJDb3JlOjpFeGNlcHRpb25EYXRhJiBleGNlcHRpb24pIHsKKyAgICAgICAgfSwgWyZdKGNv
bnN0ICBFeGNlcHRpb25EYXRhJiBleGNlcHRpb24pIHsKICAgICAgICAgICAgIGhhbmRsZXIoeyB9
LCBleGNlcHRpb24pOwogICAgICAgICB9KTsKICAgICB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5h
dG9yUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dl
YkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5LmgKaW5kZXggYTFiMjU3ZTEyMDJlNGVhYzA5
NzFmOGM1OTg3ZjBkN2E2MDliNDYyZS4uZWFkODY0YzIxM2FjMmE3Y2VmZjc0ZmRjN2Q2MWE5N2U3
ZjU4Mzc4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGlj
YXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0
b3JQcm94eS5oCkBAIC0zNyw2ICszNyw3IEBAIHN0cnVjdCBFeGNlcHRpb25EYXRhOwogc3RydWN0
IFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnM7CiBzdHJ1Y3QgUHVibGljS2V5Q3Jl
ZGVudGlhbERhdGE7CiBzdHJ1Y3QgUHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zOwor
c3RydWN0IFNlY3VyaXR5T3JpZ2luRGF0YTsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC02
MCw4ICs2MSw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNv
bm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBvdmVycmlkZTsKIAogICAgIC8vIFJlY2VpdmVycy4K
LSAgICB2b2lkIG1ha2VDcmVkZW50aWFsKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgY29uc3Qg
VmVjdG9yPHVpbnQ4X3Q+JiBoYXNoLCBjb25zdCBXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFs
Q3JlYXRpb25PcHRpb25zJiwgUmVxdWVzdENvbXBsZXRpb25IYW5kbGVyJiYpOwotICAgIHZvaWQg
Z2V0QXNzZXJ0aW9uKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgY29uc3QgVmVjdG9yPHVpbnQ4
X3Q+JiBoYXNoLCBjb25zdCBXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlv
bnMmLCBSZXF1ZXN0Q29tcGxldGlvbkhhbmRsZXImJik7CisgICAgdm9pZCBtYWtlQ3JlZGVudGlh
bChXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYm
LCBWZWN0b3I8dWludDhfdD4mJiBoYXNoLCBXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsQ3Jl
YXRpb25PcHRpb25zJiYsIFJlcXVlc3RDb21wbGV0aW9uSGFuZGxlciYmKTsKKyAgICB2b2lkIGdl
dEFzc2VydGlvbihXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luRGF0YSYmLCBWZWN0b3I8dWludDhfdD4mJiBoYXNoLCBXZWJDb3JlOjpQdWJsaWNLZXlDcmVk
ZW50aWFsUmVxdWVzdE9wdGlvbnMmJiwgUmVxdWVzdENvbXBsZXRpb25IYW5kbGVyJiYpOwogICAg
IHZvaWQgaXNVc2VyVmVyaWZ5aW5nUGxhdGZvcm1BdXRoZW50aWNhdG9yQXZhaWxhYmxlKFF1ZXJ5
Q29tcGxldGlvbkhhbmRsZXImJik7CiAKICAgICB2b2lkIGhhbmRsZVJlcXVlc3QoV2ViQXV0aGVu
dGljYXRpb25SZXF1ZXN0RGF0YSYmLCBSZXF1ZXN0Q29tcGxldGlvbkhhbmRsZXImJik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRo
ZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5
Lm1lc3NhZ2VzLmluCmluZGV4IGNhYWZmYTdjMWIzYmJiNGQ2MDNkNDVkY2M1YTQ1MzUzODMwMDAx
OWUuLjAxZjZjZTk5Y2FlYjRkZTk0Y2NmNmFjZTg5MTVjYmRhMDI3OTVjNzggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0
b3JDb29yZGluYXRvclByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5Lm1l
c3NhZ2VzLmluCkBAIC0yNiw4ICsyNiw4IEBACiAKIG1lc3NhZ2VzIC0+IFdlYkF1dGhlbnRpY2F0
b3JDb29yZGluYXRvclByb3h5IHsKIAotICAgIE1ha2VDcmVkZW50aWFsKFdlYkNvcmU6OkZyYW1l
SWRlbnRpZmllciBmcmFtZUlELCBWZWN0b3I8dWludDhfdD4gaGFzaCwgc3RydWN0IFdlYkNvcmU6
OlB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMgb3B0aW9ucykgLT4gKHN0cnVjdCBX
ZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsRGF0YSBkYXRhLCBzdHJ1Y3QgV2ViQ29yZTo6RXhj
ZXB0aW9uRGF0YSBleGNlcHRpb24pIEFzeW5jCi0gICAgR2V0QXNzZXJ0aW9uKFdlYkNvcmU6OkZy
YW1lSWRlbnRpZmllciBmcmFtZUlELCBWZWN0b3I8dWludDhfdD4gaGFzaCwgc3RydWN0IFdlYkNv
cmU6OlB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucyBvcHRpb25zKSAtPiAoc3RydWN0
IFdlYkNvcmU6OlB1YmxpY0tleUNyZWRlbnRpYWxEYXRhIGRhdGEsIHN0cnVjdCBXZWJDb3JlOjpF
eGNlcHRpb25EYXRhIGV4Y2VwdGlvbikgQXN5bmMKKyAgICBNYWtlQ3JlZGVudGlhbChXZWJDb3Jl
OjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
RGF0YSBvcmlnaW4sIFZlY3Rvcjx1aW50OF90PiBoYXNoLCBzdHJ1Y3QgV2ViQ29yZTo6UHVibGlj
S2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucyBvcHRpb25zKSAtPiAoc3RydWN0IFdlYkNvcmU6
OlB1YmxpY0tleUNyZWRlbnRpYWxEYXRhIGRhdGEsIHN0cnVjdCBXZWJDb3JlOjpFeGNlcHRpb25E
YXRhIGV4Y2VwdGlvbikgQXN5bmMKKyAgICBHZXRBc3NlcnRpb24oV2ViQ29yZTo6RnJhbWVJZGVu
dGlmaWVyIGZyYW1lSUQsIHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgb3JpZ2lu
LCBWZWN0b3I8dWludDhfdD4gaGFzaCwgc3RydWN0IFdlYkNvcmU6OlB1YmxpY0tleUNyZWRlbnRp
YWxSZXF1ZXN0T3B0aW9ucyBvcHRpb25zKSAtPiAoc3RydWN0IFdlYkNvcmU6OlB1YmxpY0tleUNy
ZWRlbnRpYWxEYXRhIGRhdGEsIHN0cnVjdCBXZWJDb3JlOjpFeGNlcHRpb25EYXRhIGV4Y2VwdGlv
bikgQXN5bmMKICAgICBJc1VzZXJWZXJpZnlpbmdQbGF0Zm9ybUF1dGhlbnRpY2F0b3JBdmFpbGFi
bGUoKSAtPiAoYm9vbCByZXN1bHQpIEFzeW5jCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0
b3IuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1
dGhlbnRpY2F0b3JDb29yZGluYXRvci5jcHAKaW5kZXggOGE5ODczYjAyMDQ5M2M2YTA2OTFmM2E1
NmMxYmEwMTUzZWNhN2QyNS4uZTYxMzgzYzRlMGE0OGY4MmMxMzFiODJkNmQwY2I1ODVjYTlmZDgw
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9u
L1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvci5jcHAK
QEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1B1YmxpY0tleUNyZWRlbnRpYWxD
cmVhdGlvbk9wdGlvbnMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1B1YmxpY0tleUNyZWRlbnRpYWxE
YXRhLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlv
bnMuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+CiAKIG5hbWVzcGFjZSBX
ZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CkBAIC00MywyMCArNDQsMjAgQEAgV2Vi
QXV0aGVudGljYXRvckNvb3JkaW5hdG9yOjpXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IoV2Vi
UGFnZSYgd2ViUGFnZSkKIHsKIH0KIAotdm9pZCBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3I6
Om1ha2VDcmVkZW50aWFsKGNvbnN0IEZyYW1lJiBmcmFtZSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+
JiBoYXNoLCBjb25zdCBQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zJiBvcHRpb25z
LCBSZXF1ZXN0Q29tcGxldGlvbkhhbmRsZXImJiBoYW5kbGVyKQordm9pZCBXZWJBdXRoZW50aWNh
dG9yQ29vcmRpbmF0b3I6Om1ha2VDcmVkZW50aWFsKGNvbnN0IEZyYW1lJiBmcmFtZSwgY29uc3Qg
U2VjdXJpdHlPcmlnaW4mIG9yaWdpbiwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBoYXNoLCBjb25z
dCBQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zJiBvcHRpb25zLCBSZXF1ZXN0Q29t
cGxldGlvbkhhbmRsZXImJiBoYW5kbGVyKQogewogICAgIGF1dG8qIHdlYkZyYW1lID0gV2ViRnJh
bWU6OmZyb21Db3JlRnJhbWUoZnJhbWUpOwogICAgIGlmICghd2ViRnJhbWUpCiAgICAgICAgIHJl
dHVybjsKLSAgICBtX3dlYlBhZ2Uuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJBdXRo
ZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eTo6TWFrZUNyZWRlbnRpYWwod2ViRnJhbWUtPmZyYW1l
SUQoKSwgaGFzaCwgb3B0aW9ucyksIFdURk1vdmUoaGFuZGxlcikpOworICAgIG1fd2ViUGFnZS5z
ZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclBy
b3h5OjpNYWtlQ3JlZGVudGlhbCh3ZWJGcmFtZS0+ZnJhbWVJRCgpLCBvcmlnaW4uZGF0YSgpLCBo
YXNoLCBvcHRpb25zKSwgV1RGTW92ZShoYW5kbGVyKSk7CiB9CiAKLXZvaWQgV2ViQXV0aGVudGlj
YXRvckNvb3JkaW5hdG9yOjpnZXRBc3NlcnRpb24oY29uc3QgRnJhbWUmIGZyYW1lLCBjb25zdCBW
ZWN0b3I8dWludDhfdD4mIGhhc2gsIGNvbnN0IFB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0
aW9ucyYgb3B0aW9ucywgUmVxdWVzdENvbXBsZXRpb25IYW5kbGVyJiYgaGFuZGxlcikKK3ZvaWQg
V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yOjpnZXRBc3NlcnRpb24oY29uc3QgRnJhbWUmIGZy
YW1lLCBjb25zdCBTZWN1cml0eU9yaWdpbiYgb3JpZ2luLCBjb25zdCBWZWN0b3I8dWludDhfdD4m
IGhhc2gsIGNvbnN0IFB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucyYgb3B0aW9ucywg
UmVxdWVzdENvbXBsZXRpb25IYW5kbGVyJiYgaGFuZGxlcikKIHsKICAgICBhdXRvKiB3ZWJGcmFt
ZSA9IFdlYkZyYW1lOjpmcm9tQ29yZUZyYW1lKGZyYW1lKTsKICAgICBpZiAoIXdlYkZyYW1lKQog
ICAgICAgICByZXR1cm47Ci0gICAgbV93ZWJQYWdlLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdl
czo6V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHk6OkdldEFzc2VydGlvbih3ZWJGcmFt
ZS0+ZnJhbWVJRCgpLCBoYXNoLCBvcHRpb25zKSwgV1RGTW92ZShoYW5kbGVyKSk7CisgICAgbV93
ZWJQYWdlLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViQXV0aGVudGljYXRvckNvb3Jk
aW5hdG9yUHJveHk6OkdldEFzc2VydGlvbih3ZWJGcmFtZS0+ZnJhbWVJRCgpLCBvcmlnaW4uZGF0
YSgpLCBoYXNoLCBvcHRpb25zKSwgV1RGTW92ZShoYW5kbGVyKSk7CiB9CiAKIHZvaWQgV2ViQXV0
aGVudGljYXRvckNvb3JkaW5hdG9yOjppc1VzZXJWZXJpZnlpbmdQbGF0Zm9ybUF1dGhlbnRpY2F0
b3JBdmFpbGFibGUoUXVlcnlDb21wbGV0aW9uSGFuZGxlciYmIGhhbmRsZXIpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGlj
YXRvckNvb3JkaW5hdG9yLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQXV0aGVudGlj
YXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmgKaW5kZXggNzg3ZTlhOTdiNjQxNDU5
YWI3OGRmOTlkNDg3YjZhYzFjN2MxMjgyYS4uNDU4NDg0ZmY5ZTI5ZWM3ZmFmYzc3MjY3NjZjMjRm
MzFiNGJlNzMwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkF1dGhl
bnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvci5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0
b3IuaApAQCAtMzksOCArMzksOCBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgLy8gV2ViQ29y
ZTo6QXV0aGVudGljYXRvckNvb3JkaW5hdG9yQ2xpZW50Ci0gICAgdm9pZCBtYWtlQ3JlZGVudGlh
bChjb25zdCBXZWJDb3JlOjpGcmFtZSYsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYsIGNvbnN0IFdl
YkNvcmU6OlB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMmLCBXZWJDb3JlOjpSZXF1
ZXN0Q29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7Ci0gICAgdm9pZCBnZXRBc3NlcnRpb24oY29u
c3QgV2ViQ29yZTo6RnJhbWUmLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGhhc2gsIGNvbnN0IFdl
YkNvcmU6OlB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucyYsIFdlYkNvcmU6OlJlcXVl
c3RDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKKyAgICB2b2lkIG1ha2VDcmVkZW50aWFsKGNv
bnN0IFdlYkNvcmU6OkZyYW1lJiwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mLCBjb25z
dCBWZWN0b3I8dWludDhfdD4mLCBjb25zdCBXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsQ3Jl
YXRpb25PcHRpb25zJiwgV2ViQ29yZTo6UmVxdWVzdENvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFs
OworICAgIHZvaWQgZ2V0QXNzZXJ0aW9uKGNvbnN0IFdlYkNvcmU6OkZyYW1lJiwgY29uc3QgV2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW4mLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGhhc2gsIGNvbnN0
IFdlYkNvcmU6OlB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucyYsIFdlYkNvcmU6OlJl
cXVlc3RDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKICAgICB2b2lkIGlzVXNlclZlcmlmeWlu
Z1BsYXRmb3JtQXV0aGVudGljYXRvckF2YWlsYWJsZShXZWJDb3JlOjpRdWVyeUNvbXBsZXRpb25I
YW5kbGVyJiYpIGZpbmFsOwogCiAgICAgV2ViUGFnZSYgbV93ZWJQYWdlOwpkaWZmIC0tZ2l0IGEv
VG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDQyMzkzZmZjNGZmOGIzMmNh
ZWU2MDE1OGVlOTE0NTBhMjNhZjQ3ZTguLjhlZWI3ODIxZGZjNjNlNjUwZjFkYTMyNzUzZjZlMWM1
NWM1YWU1MmUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxOSBAQAorMjAxOS0xMC0yMiAgSmlld2VuIFRhbiAgPGppZXdlbl90YW5A
YXBwbGUuY29tPgorCisgICAgICAgIFtXZWJBdXRobl0gU3VwcGx5IEZyYW1lSW5mbyBpbiAtW1dL
VUlEZWxlZ2F0ZVByaXZhdGUgX3dlYlZpZXc6cnVuV2ViQXV0aGVudGljYXRpb25QYW5lbDppbml0
aWF0ZWRCeUZyYW1lOmNvbXBsZXRpb25IYW5kbGVyOl0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMjU2MworICAgICAgICA8cmRhcjovL3Byb2JsZW0v
NTU5NzM5Njg+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQWRkcyBuZXcgdGVzdCBjb250ZW50cyBpbnRvIGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBh
bmVsLm1tOgorICAgICAgICAoLVtUZXN0V2ViQXV0aGVudGljYXRpb25QYW5lbFVJRGVsZWdhdGUg
aW5pdF0pOgorICAgICAgICAoLVtUZXN0V2ViQXV0aGVudGljYXRpb25QYW5lbFVJRGVsZWdhdGUg
X3dlYlZpZXc6cnVuV2ViQXV0aGVudGljYXRpb25QYW5lbDppbml0aWF0ZWRCeUZyYW1lOmNvbXBs
ZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtUZXN0V2ViQXV0aGVudGljYXRpb25QYW5lbFVJ
RGVsZWdhdGUgZnJhbWVdKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorCiAyMDE5
LTEwLTE4ICBBYWthc2ggSmFpbiAgPGFha2FzaF9qYWluQGFwcGxlLmNvbT4KIAogICAgICAgICBF
V1Mgc2hvdWxkIGhhdmUgYSB3YXkgdG8gcmV0cnkgYSBwYXRjaApkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVs
Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9fV0tXZWJBdXRoZW50
aWNhdGlvblBhbmVsLm1tCmluZGV4IDZmNDE4YWUwMTQ5NGZmMDgzMTcyZTJmYTdlNzllNDM5ZGQ5
ZWY3YmUuLjc0ZmM0M2UwN2RhYmJjYzFlZTg1YWFiMGE0MTlmNThlNWZmZGYzMzYgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvX1dLV2ViQXV0aGVudGlj
YXRpb25QYW5lbC5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW0KQEAgLTg5LDE4ICs4OSwyMyBAQCBAZW5kCiBA
aW1wbGVtZW50YXRpb24gVGVzdFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxVSURlbGVnYXRlIHsKICAg
ICBSZXRhaW5QdHI8TlNPYmplY3Q8X1dLV2ViQXV0aGVudGljYXRpb25QYW5lbERlbGVnYXRlPj4g
X2RlbGVnYXRlOwogICAgIEJsb2NrUHRyPHZvaWQoX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbFJl
c3VsdCk+IF9jYWxsYmFjazsKKyAgICBSZXRhaW5QdHI8V0tGcmFtZUluZm8+IF9mcmFtZUluZm87
CiB9CiAKIC0gKGluc3RhbmNldHlwZSlpbml0CiB7Ci0gICAgaWYgKHNlbGYgPSBbc3VwZXIgaW5p
dF0pCisgICAgaWYgKHNlbGYgPSBbc3VwZXIgaW5pdF0pIHsKICAgICAgICAgc2VsZi5pc1JhY3kg
PSBmYWxzZTsKKyAgICAgICAgc2VsZi5pc0Zha2UgPSBmYWxzZTsKKyAgICAgICAgc2VsZi5pc051
bGwgPSBmYWxzZTsKKyAgICB9CiAgICAgcmV0dXJuIHNlbGY7CiB9CiAKIC0gKHZvaWQpX3dlYlZp
ZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgcnVuV2ViQXV0aGVudGljYXRpb25QYW5lbDooX1dLV2Vi
QXV0aGVudGljYXRpb25QYW5lbCAqKXBhbmVsIGluaXRpYXRlZEJ5RnJhbWU6KFdLRnJhbWVJbmZv
ICopZnJhbWUgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKF9XS1dlYkF1dGhlbnRpY2F0aW9u
UGFuZWxSZXN1bHQpKWNvbXBsZXRpb25IYW5kbGVyCiB7CiAgICAgd2ViQXV0aGVudGljYXRpb25Q
YW5lbFJhbiA9IHRydWU7CisgICAgX2ZyYW1lSW5mbyA9IGZyYW1lOwogCiAgICAgaWYgKCFfaXNO
dWxsKSB7CiAgICAgICAgIGlmICghX2lzRmFrZSkKQEAgLTEyNCw2ICsxMjksMTEgQEAgLSAodm9p
ZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBydW5XZWJBdXRoZW50aWNhdGlvblBhbmVs
OihfV0tXZWJBdXRoZW50aWMKICAgICBjb21wbGV0aW9uSGFuZGxlcihfV0tXZWJBdXRoZW50aWNh
dGlvblBhbmVsUmVzdWx0UHJlc2VudGVkKTsKIH0KIAorLSAoV0tGcmFtZUluZm8gKilmcmFtZQor
eworICAgIHJldHVybiBfZnJhbWVJbmZvLmdldCgpOworfQorCiBAZW5kCiAKIG5hbWVzcGFjZSBU
ZXN0V2ViS2l0QVBJIHsKQEAgLTE3Miw2ICsxODIsMTYgQEAgc3RhdGljIHZvaWQgcmVzZXQoKQog
ICAgIGdQYW5lbCA9IG51bGxwdHI7CiB9CiAKK3N0YXRpYyB2b2lkIGNoZWNrRnJhbWVJbmZvKFdL
RnJhbWVJbmZvICpmcmFtZSwgYm9vbCBpc01haW5GcmFtZSwgTlNTdHJpbmcgKnVybCwgTlNTdHJp
bmcgKnByb3RvY29sLCBOU1N0cmluZyAqaG9zdCwgaW50IHBvcnQsIFdLV2ViVmlldyAqd2ViVmll
dykKK3sKKyAgICBFWFBFQ1RfRVEoZnJhbWUubWFpbkZyYW1lLCBpc01haW5GcmFtZSk7CisgICAg
RVhQRUNUX1RSVUUoW2ZyYW1lLnJlcXVlc3QuVVJMLmFic29sdXRlU3RyaW5nIGlzRXF1YWw6dXJs
XSk7CisgICAgRVhQRUNUX1dLX1NUUkVRKGZyYW1lLnNlY3VyaXR5T3JpZ2luLnByb3RvY29sLCBw
cm90b2NvbCk7CisgICAgRVhQRUNUX1dLX1NUUkVRKGZyYW1lLnNlY3VyaXR5T3JpZ2luLmhvc3Qs
IGhvc3QpOworICAgIEVYUEVDVF9FUShmcmFtZS5zZWN1cml0eU9yaWdpbi5wb3J0LCBwb3J0KTsK
KyAgICBFWFBFQ1RfRVEoZnJhbWUud2ViVmlldywgd2ViVmlldyk7Cit9CisKIH0gLy8gbmFtZXNh
cGNlOwogCiBURVNUKFdlYkF1dGhlbnRpY2F0aW9uUGFuZWwsIE5vUGFuZWxUaW1lb3V0KQpAQCAt
MjMyLDYgKzI1Miw5IEBAIFRFU1QoV2ViQXV0aGVudGljYXRpb25QYW5lbCwgUGFuZWxIaWRTdWNj
ZXNzKQogICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhV
Ukw6dGVzdFVSTC5nZXQoKV1dOwogICAgIFV0aWw6OnJ1bigmd2ViQXV0aGVudGljYXRpb25QYW5l
bFJhbik7CiAgICAgVXRpbDo6cnVuKCZ3ZWJBdXRoZW50aWNhdGlvblBhbmVsU3VjY2VkZWQpOwor
CisgICAgLy8gQSBiaXQgb2YgZXh0cmEgY2hlY2tzLgorICAgIGNoZWNrRnJhbWVJbmZvKFtkZWxl
Z2F0ZSBmcmFtZV0sIHRydWUsIFt0ZXN0VVJMIGFic29sdXRlU3RyaW5nXSwgQCJmaWxlIiwgQCIi
LCAwLCB3ZWJWaWV3LmdldCgpKTsKIH0KIAogI2lmIEhBVkUoTkVBUl9GSUVMRCkKQEAgLTQwOSwx
MCArNDMyLDE1IEBAIFRFU1QoV2ViQXV0aGVudGljYXRpb25QYW5lbCwgU3ViRnJhbWVDaGFuZ2VM
b2NhdGlvbkhpZENhbmNlbCkKICAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbW1Rlc3RXZWJB
dXRoZW50aWNhdGlvblBhbmVsVUlEZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOwogICAgIFt3ZWJWaWV3
IHNldFVJRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOwogCi0gICAgW3dlYlZpZXcgbG9hZFJlcXVl
c3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzooaWQp
bWFrZVN0cmluZygiaHR0cDovL2xvY2FsaG9zdDoiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc2Vy
dmVyLnBvcnQoKSkpXV1dOworICAgIGF1dG8gcG9ydCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihz
ZXJ2ZXIucG9ydCgpKTsKKyAgICBhdXRvIHVybCA9IG1ha2VTdHJpbmcoImh0dHA6Ly9sb2NhbGhv
c3Q6IiwgcG9ydCk7CisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1
ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzooaWQpdXJsXV1dOwogICAgIFV0aWw6OnJ1
bigmd2ViQXV0aGVudGljYXRpb25QYW5lbFJhbik7CiAgICAgW3dlYlZpZXcgZXZhbHVhdGVKYXZh
U2NyaXB0OkAidGhlRnJhbWUuc3JjID0gJ3NpbXBsZS5odG1sJyIgY29tcGxldGlvbkhhbmRsZXI6
bmlsXTsKICAgICBVdGlsOjpydW4oJndlYkF1dGhlbnRpY2F0aW9uUGFuZWxGYWlsZWQpOworCisg
ICAgLy8gQSBiaXQgb2YgZXh0cmEgY2hlY2tzLgorICAgIGNoZWNrRnJhbWVJbmZvKFtkZWxlZ2F0
ZSBmcmFtZV0sIGZhbHNlLCAoaWQpbWFrZVN0cmluZyh1cmwsICIvaUZyYW1lLmh0bWwiKSwgQCJo
dHRwIiwgQCJsb2NhbGhvc3QiLCBwb3J0LCB3ZWJWaWV3LmdldCgpKTsKIH0KIAogVEVTVChXZWJB
dXRoZW50aWNhdGlvblBhbmVsLCBTdWJGcmFtZURlc3RydWN0aW9uSGlkQ2FuY2VsKQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4
IDQ1ZjNhNDQ1YTk3NDU0ZDBiNjdmZGM4ZDExODMzNWVlM2Q2NjJkOTQuLjMwNWJkMTBlYTFjYjNk
Y2YyZTAyMTBkYzkyNDdkNzY2YWZiZWZiOTcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxOS0x
MC0yMiAgSmlld2VuIFRhbiAgPGppZXdlbl90YW5AYXBwbGUuY29tPgorCisgICAgICAgIFtXZWJB
dXRobl0gU3VwcGx5IEZyYW1lSW5mbyBpbiAtW1dLVUlEZWxlZ2F0ZVByaXZhdGUgX3dlYlZpZXc6
cnVuV2ViQXV0aGVudGljYXRpb25QYW5lbDppbml0aWF0ZWRCeUZyYW1lOmNvbXBsZXRpb25IYW5k
bGVyOl0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIw
MjU2MworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTU5NzM5Njg+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBodHRwL3dwdC93ZWJhdXRobi9wdWJs
aWMta2V5LWNyZWRlbnRpYWwtZ2V0LXN1Y2Nlc3MtaGlkLmh0dHBzLmh0bWw6CisgICAgICAgIElt
cG9ydmVzIHRoZSBmbGFraW5lc3MuCisKIDIwMTktMTAtMjEgIFNpbW9uIEZyYXNlciAgPHNpbW9u
LmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgW2lPUyBXSzJdIFN1cHBvcnQgaGlkaW5nIGlm
cmFtZSBzY3JvbGxiYXJzIHZpYSA6Oi13ZWJraXQtc2Nyb2xsYmFyIHN0eWxlCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0
LXN1Y2Nlc3MtaGlkLmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9w
dWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LXN1Y2Nlc3MtaGlkLmh0dHBzLmh0bWwKaW5kZXggMDg3
YzkzNGE4ZTI2NTY4ODQ5MGZhMjgzOTY4NmNkZjUwY2M5OTEwYS4uZDI4NDNkNThkMmE5NTMwYjRm
OTJhNGYxODYyNTc2YmRjMGMzYTE3NSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC93cHQv
d2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1zdWNjZXNzLWhpZC5odHRwcy5odG1s
CisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlh
bC1nZXQtc3VjY2Vzcy1oaWQuaHR0cHMuaHRtbApAQCAtOTAsNyArOTAsMTMgQEAKICAgICAgICAg
ICAgIH0KICAgICAgICAgfTsKIAorCisgICAgICAgIC8vIFN0YWxsIHRoZSBmaXJzdCByZXF1ZXN0
IHRvIHdhaXQgZm9yIGNhbmNlbGxhdGlvbi4KKyAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMp
CisgICAgICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJh
dGlvbih7IGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFnZTogIm1zZyIsIGVycm9yOiAi
c3VjY2VzcyIsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0QXNzZXJ0aW9uTWVzc2FnZUJhc2U2NF0sIGV4
cGVjdENhbmNlbDogdHJ1ZSB9IH0pOwogICAgICAgICBwcm9taXNlUmVqZWN0cyh0LCAiTm90QWxs
b3dlZEVycm9yIiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmdldChvcHRpb25zKSwgIlRoaXMgcmVx
dWVzdCBoYXMgYmVlbiBjYW5jZWxsZWQgYnkgYSBuZXcgcmVxdWVzdC4iKTsKKyAgICAgICAgaWYg
KHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhl
bnRpY2F0aW9uQ29uZmlndXJhdGlvbih7IGhpZDogeyBzdGFnZTogInJlcXVlc3QiLCBzdWJTdGFn
ZTogIm1zZyIsIGVycm9yOiAic3VjY2VzcyIsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0QXNzZXJ0aW9u
TWVzc2FnZUJhc2U2NF0gfSB9KTsKICAgICAgICAgcmV0dXJuIG5hdmlnYXRvci5jcmVkZW50aWFs
cy5nZXQob3B0aW9ucykudGhlbihjcmVkZW50aWFsID0+IHsKICAgICAgICAgICAgIHJldHVybiBj
aGVja0N0YXBHZXRBc3NlcnRpb25SZXN1bHQoY3JlZGVudGlhbCk7CiAgICAgICAgIH0pOwo=
</data>
<flag name="review"
          id="397397"
          type_id="1"
          status="+"
          setter="bfulgham"
    />
          </attachment>
      

    </bug>

</bugzilla>