<?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>139857</bug_id>
          
          <creation_ts>2014-12-21 13:41:25 -0800</creation_ts>
          <short_desc>Allow the WebContext&apos;s history client to coexist with WKWebView&apos;s history delegate</short_desc>
          <delta_ts>2014-12-22 11:04:47 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1057321</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2014-12-21 13:41:25 -0800</bug_when>
    <thetext>Allow the WebContext&apos;s history client to coexist with WKWebView&apos;s history delegate</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1057323</commentid>
    <comment_count>1</comment_count>
      <attachid>243615</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2014-12-21 13:46:39 -0800</bug_when>
    <thetext>Created attachment 243615
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1057383</commentid>
    <comment_count>2</comment_count>
      <attachid>243615</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2014-12-22 09:02:09 -0800</bug_when>
    <thetext>Comment on attachment 243615
Patch

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

&gt; Source/WebKit2/UIProcess/WebPageProxy.cpp:3081
&gt; +    // Notify the loader client.

I don&apos;t think this comment is useful.

&gt; Source/WebKit2/UIProcess/WebPageProxy.cpp:3084
&gt; +    // Also, notify the legacy history client on the WebContext.

Same here (and all the other comments that say the same thing!)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1057404</commentid>
    <comment_count>3</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2014-12-22 11:04:47 -0800</bug_when>
    <thetext>Committed r177636: &lt;http://trac.webkit.org/changeset/177636&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>243615</attachid>
            <date>2014-12-21 13:46:39 -0800</date>
            <delta_ts>2014-12-22 09:02:09 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-139857-20141221134640.patch</filename>
            <type>text/plain</type>
            <size>62847</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE3NzYyNSkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDc4IEBACisyMDE0LTEyLTIxICBTYW0gV2Vp
bmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWxsb3cgdGhlIFdlYkNvbnRleHQncyBo
aXN0b3J5IGNsaWVudCB0byBjb2V4aXN0IHdpdGggV0tXZWJWaWV3J3MgaGlzdG9yeSBkZWxlZ2F0
ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM5ODU3
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgLSBSZW5h
bWVzIEFQSTo6SGlzdG9yeUNsaWVudCB0byBBUEk6OkxlZ2FjeUNvbnRleHRIaXN0b3J5Q2xpZW50
IHRvIG1ha2UgaXQgY2xlYXIgd2hhdCBpdCBpcyBmb3IuCisgICAgICAgIC0gUmUtcm91dGVzIHRo
ZSBoaXN0b3J5IGNsaWVudCBmdW5jdGlvbnMgZnJvbSB0aGUgV2ViUHJvY2Vzc1Byb3h5IHRvIHRo
ZSBXZWJQYWdlUHJveHkuCisgICAgICAgIC0gQWRkIGhpc3RvcnkgY2xpZW50IGZ1bmN0aW9ucyB0
byBBUEk6OkxvYWRlckNsaWVudCBhbmQgaW1wbGVtZW50IHRoZW0gZm9yIE5hdmlnYXRpb25TdGF0
ZSdzIAorICAgICAgICAgIExvYWRlckNsaWVudCBzdWJjbGFzcy4gUmVtb3ZlcyB0aGUgbmVlZCBm
b3IgV0tQcm9jZXNzUG9vbCB0byBoYXZlIHRvIHNldHVwIGEgaGlzdG9yeSBjbGllbnQgYW5kCisg
ICAgICAgICAgZm9yd2FyZCB0byB0aGUgTmF2aWdhdGlvblN0YXRlLgorCisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9BUElIaXN0b3J5Q2xpZW50Lmg6IFJlbW92ZWQuCisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9BUElMZWdhY3lDb250ZXh0SGlzdG9yeUNsaWVudC5oOiBDb3BpZWQgZnJvbSBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSUhpc3RvcnlDbGllbnQuaC4KKyAgICAgICAgKEFQ
STo6TGVnYWN5Q29udGV4dEhpc3RvcnlDbGllbnQ6On5MZWdhY3lDb250ZXh0SGlzdG9yeUNsaWVu
dCk6CisgICAgICAgIChBUEk6OkxlZ2FjeUNvbnRleHRIaXN0b3J5Q2xpZW50OjpkaWROYXZpZ2F0
ZVdpdGhOYXZpZ2F0aW9uRGF0YSk6CisgICAgICAgIChBUEk6OkxlZ2FjeUNvbnRleHRIaXN0b3J5
Q2xpZW50OjpkaWRQZXJmb3JtQ2xpZW50UmVkaXJlY3QpOgorICAgICAgICAoQVBJOjpMZWdhY3lD
b250ZXh0SGlzdG9yeUNsaWVudDo6ZGlkUGVyZm9ybVNlcnZlclJlZGlyZWN0KToKKyAgICAgICAg
KEFQSTo6TGVnYWN5Q29udGV4dEhpc3RvcnlDbGllbnQ6OmRpZFVwZGF0ZUhpc3RvcnlUaXRsZSk6
CisgICAgICAgIChBUEk6OkxlZ2FjeUNvbnRleHRIaXN0b3J5Q2xpZW50Ojpwb3B1bGF0ZVZpc2l0
ZWRMaW5rcyk6CisgICAgICAgIChBUEk6Okhpc3RvcnlDbGllbnQ6On5IaXN0b3J5Q2xpZW50KTog
RGVsZXRlZC4KKyAgICAgICAgKEFQSTo6SGlzdG9yeUNsaWVudDo6ZGlkTmF2aWdhdGVXaXRoTmF2
aWdhdGlvbkRhdGEpOiBEZWxldGVkLgorICAgICAgICAoQVBJOjpIaXN0b3J5Q2xpZW50OjpkaWRQ
ZXJmb3JtQ2xpZW50UmVkaXJlY3QpOiBEZWxldGVkLgorICAgICAgICAoQVBJOjpIaXN0b3J5Q2xp
ZW50OjpkaWRQZXJmb3JtU2VydmVyUmVkaXJlY3QpOiBEZWxldGVkLgorICAgICAgICAoQVBJOjpI
aXN0b3J5Q2xpZW50OjpkaWRVcGRhdGVIaXN0b3J5VGl0bGUpOiBEZWxldGVkLgorICAgICAgICAo
QVBJOjpIaXN0b3J5Q2xpZW50Ojpwb3B1bGF0ZVZpc2l0ZWRMaW5rcyk6IERlbGV0ZWQuCisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9BUElMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKEFQSTo6TG9h
ZGVyQ2xpZW50OjpkaWROYXZpZ2F0ZVdpdGhOYXZpZ2F0aW9uRGF0YSk6CisgICAgICAgIChBUEk6
OkxvYWRlckNsaWVudDo6ZGlkUGVyZm9ybUNsaWVudFJlZGlyZWN0KToKKyAgICAgICAgKEFQSTo6
TG9hZGVyQ2xpZW50OjpkaWRQZXJmb3JtU2VydmVyUmVkaXJlY3QpOgorICAgICAgICAoQVBJOjpM
b2FkZXJDbGllbnQ6OmRpZFVwZGF0ZUhpc3RvcnlUaXRsZSk6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9DL1dLQ29udGV4dC5jcHA6CisgICAgICAgIChXS0NvbnRleHRTZXRIaXN0b3J5Q2xpZW50
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW06CisgICAg
ICAgICgtW1dLUHJvY2Vzc1Bvb2wgX2luaXRXaXRoQ29uZmlndXJhdGlvbjpdKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW06CisgICAgICAgICogVUlQcm9jZXNzL0NvY29h
L0hpc3RvcnlDbGllbnQuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvSGlz
dG9yeUNsaWVudC5tbTogUmVtb3ZlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvTmF2aWdh
dGlvblN0YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5t
bToKKyAgICAgICAgKFdlYktpdDo6TmF2aWdhdGlvblN0YXRlOjpMb2FkZXJDbGllbnQ6OmRpZE5h
dmlnYXRlV2l0aE5hdmlnYXRpb25EYXRhKToKKyAgICAgICAgKFdlYktpdDo6TmF2aWdhdGlvblN0
YXRlOjpMb2FkZXJDbGllbnQ6OmRpZFBlcmZvcm1DbGllbnRSZWRpcmVjdCk6CisgICAgICAgIChX
ZWJLaXQ6Ok5hdmlnYXRpb25TdGF0ZTo6TG9hZGVyQ2xpZW50OjpkaWRQZXJmb3JtU2VydmVyUmVk
aXJlY3QpOgorICAgICAgICAoV2ViS2l0OjpOYXZpZ2F0aW9uU3RhdGU6OkxvYWRlckNsaWVudDo6
ZGlkVXBkYXRlSGlzdG9yeVRpdGxlKToKKyAgICAgICAgKFdlYktpdDo6TmF2aWdhdGlvblN0YXRl
OjpkaWROYXZpZ2F0ZVdpdGhOYXZpZ2F0aW9uRGF0YSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJL
aXQ6Ok5hdmlnYXRpb25TdGF0ZTo6ZGlkUGVyZm9ybUNsaWVudFJlZGlyZWN0KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYktpdDo6TmF2aWdhdGlvblN0YXRlOjpkaWRQZXJmb3JtU2VydmVyUmVkaXJl
Y3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOYXZpZ2F0aW9uU3RhdGU6OmRpZFVwZGF0
ZUhpc3RvcnlUaXRsZSk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dlYkNvbnRleHQu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0OjpXZWJDb250ZXh0KToKKyAgICAgICAg
KFdlYktpdDo6V2ViQ29udGV4dDo6c2V0SGlzdG9yeUNsaWVudCk6CisgICAgICAgIChXZWJLaXQ6
OldlYkNvbnRleHQ6OnBvcHVsYXRlVmlzaXRlZExpbmtzKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViQ29udGV4dC5oOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0OjpoaXN0b3J5Q2xpZW50
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5OjpkaWROYXZpZ2F0ZVdpdGhOYXZpZ2F0aW9uRGF0YSk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkUGVyZm9ybUNsaWVudFJlZGlyZWN0KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRQZXJmb3JtU2VydmVyUmVkaXJlY3QpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZFVwZGF0ZUhpc3RvcnlUaXRsZSk6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94
eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6ZGlkTmF2aWdhdGVXaXRo
TmF2aWdhdGlvbkRhdGEpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJv
eHk6OmRpZFBlcmZvcm1DbGllbnRSZWRpcmVjdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6
OldlYlByb2Nlc3NQcm94eTo6ZGlkUGVyZm9ybVNlcnZlclJlZGlyZWN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpkaWRVcGRhdGVIaXN0b3J5VGl0bGUpOiBE
ZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYktp
dDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
RnJhbWVMb2FkZXJDbGllbnQ6OnVwZGF0ZUdsb2JhbEhpc3RvcnkpOgorICAgICAgICAoV2ViS2l0
OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6dXBkYXRlR2xvYmFsSGlzdG9yeVJlZGlyZWN0TGlua3Mp
OgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6c2V0VGl0bGUpOgorCiAy
MDE0LTEyLTIxICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgogCiAgICAg
ICAgIFtpT1NdIGF2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIgY3Jhc2gKSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5jcHAJKHJldmlzaW9uIDE3NzYyMykKKysr
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjgsNyArMjgsNyBAQAogCiAjaW5jbHVkZSAiQVBJQXJyYXkuaCIKICNpbmNsdWRlICJBUElE
b3dubG9hZENsaWVudC5oIgotI2luY2x1ZGUgIkFQSUhpc3RvcnlDbGllbnQuaCIKKyNpbmNsdWRl
ICJBUElMZWdhY3lDb250ZXh0SGlzdG9yeUNsaWVudC5oIgogI2luY2x1ZGUgIkN1c3RvbVByb3Rv
Y29sTWFuYWdlck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiRG93bmxvYWRQcm94eS5oIgogI2luY2x1
ZGUgIkRvd25sb2FkUHJveHlNZXNzYWdlcy5oIgpAQCAtMTY3LDcgKzE2Nyw3IEBAIFdlYkNvbnRl
eHQ6OldlYkNvbnRleHQoV2ViQ29udGV4dENvbmZpZ3UKICAgICAsIG1fZGVmYXVsdFBhZ2VHcm91
cChXZWJQYWdlR3JvdXA6OmNyZWF0ZU5vbk51bGwoKSkKICAgICAsIG1faW5qZWN0ZWRCdW5kbGVQ
YXRoKGNvbmZpZ3VyYXRpb24uaW5qZWN0ZWRCdW5kbGVQYXRoKQogICAgICwgbV9kb3dubG9hZENs
aWVudChzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6RG93bmxvYWRDbGllbnQ+KCkpCi0gICAgLCBtX2hp
c3RvcnlDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxBUEk6Okhpc3RvcnlDbGllbnQ+KCkpCisgICAg
LCBtX2hpc3RvcnlDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkxlZ2FjeUNvbnRleHRIaXN0
b3J5Q2xpZW50PigpKQogICAgICwgbV92aXNpdGVkTGlua1Byb3ZpZGVyKFZpc2l0ZWRMaW5rUHJv
dmlkZXI6OmNyZWF0ZSgpKQogICAgICwgbV92aXNpdGVkTGlua3NQb3B1bGF0ZWQoZmFsc2UpCiAg
ICAgLCBtX3BsdWdJbkF1dG9TdGFydFByb3ZpZGVyKHRoaXMpCkBAIC0zMDYsMTAgKzMwNiwxMCBA
QCB2b2lkIFdlYkNvbnRleHQ6OmluaXRpYWxpemVDb25uZWN0aW9uQ2xpCiAgICAgbV9jb25uZWN0
aW9uQ2xpZW50LmluaXRpYWxpemUoY2xpZW50KTsKIH0KIAotdm9pZCBXZWJDb250ZXh0OjpzZXRI
aXN0b3J5Q2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6Okhpc3RvcnlDbGllbnQ+IGhpc3RvcnlD
bGllbnQpCit2b2lkIFdlYkNvbnRleHQ6OnNldEhpc3RvcnlDbGllbnQoc3RkOjp1bmlxdWVfcHRy
PEFQSTo6TGVnYWN5Q29udGV4dEhpc3RvcnlDbGllbnQ+IGhpc3RvcnlDbGllbnQpCiB7CiAgICAg
aWYgKCFoaXN0b3J5Q2xpZW50KQotICAgICAgICBtX2hpc3RvcnlDbGllbnQgPSBzdGQ6Om1ha2Vf
dW5pcXVlPEFQSTo6SGlzdG9yeUNsaWVudD4oKTsKKyAgICAgICAgbV9oaXN0b3J5Q2xpZW50ID0g
c3RkOjptYWtlX3VuaXF1ZTxBUEk6OkxlZ2FjeUNvbnRleHRIaXN0b3J5Q2xpZW50PigpOwogICAg
IGVsc2UKICAgICAgICAgbV9oaXN0b3J5Q2xpZW50ID0gV1RGOjptb3ZlKGhpc3RvcnlDbGllbnQp
OwogfQpAQCAtOTY1LDcgKzk2NSw3IEBAIHZvaWQgV2ViQ29udGV4dDo6ZGlkUmVjZWl2ZVN5bmNo
cm9ub3VzTWUKIAogdm9pZCBXZWJDb250ZXh0Ojpwb3B1bGF0ZVZpc2l0ZWRMaW5rcygpCiB7Ci0g
ICAgbV9oaXN0b3J5Q2xpZW50LT5wb3B1bGF0ZVZpc2l0ZWRMaW5rcyh0aGlzKTsKKyAgICBtX2hp
c3RvcnlDbGllbnQtPnBvcHVsYXRlVmlzaXRlZExpbmtzKCp0aGlzKTsKIH0KIAogV2ViQ29udGV4
dDo6U3RhdGlzdGljcyYgV2ViQ29udGV4dDo6c3RhdGlzdGljcygpCkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJDb250ZXh0LmgJKHJldmlzaW9uIDE3NzYyMykKKysrIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmgJKHdvcmtpbmcgY29weSkKQEAgLTcwLDcgKzcwLDcg
QEAgT0JKQ19DTEFTUyBOU1N0cmluZzsKIAogbmFtZXNwYWNlIEFQSSB7CiBjbGFzcyBEb3dubG9h
ZENsaWVudDsKLWNsYXNzIEhpc3RvcnlDbGllbnQ7CitjbGFzcyBMZWdhY3lDb250ZXh0SGlzdG9y
eUNsaWVudDsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0xNDIsNyArMTQyLDcgQEAgcHVi
bGljOgogICAgIHZvaWQgaW5pdGlhbGl6ZUNsaWVudChjb25zdCBXS0NvbnRleHRDbGllbnRCYXNl
Kik7CiAgICAgdm9pZCBpbml0aWFsaXplSW5qZWN0ZWRCdW5kbGVDbGllbnQoY29uc3QgV0tDb250
ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnRCYXNlKik7CiAgICAgdm9pZCBpbml0aWFsaXplQ29ubmVj
dGlvbkNsaWVudChjb25zdCBXS0NvbnRleHRDb25uZWN0aW9uQ2xpZW50QmFzZSopOwotICAgIHZv
aWQgc2V0SGlzdG9yeUNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpIaXN0b3J5Q2xpZW50Pik7
CisgICAgdm9pZCBzZXRIaXN0b3J5Q2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkxlZ2FjeUNv
bnRleHRIaXN0b3J5Q2xpZW50Pik7CiAgICAgdm9pZCBzZXREb3dubG9hZENsaWVudChzdGQ6OnVu
aXF1ZV9wdHI8QVBJOjpEb3dubG9hZENsaWVudD4pOwogCiAgICAgdm9pZCBzZXRQcm9jZXNzTW9k
ZWwoUHJvY2Vzc01vZGVsKTsgLy8gQ2FuIG9ubHkgYmUgY2FsbGVkIHdoZW4gdGhlcmUgYXJlIG5v
IHByb2Nlc3NlcyBydW5uaW5nLgpAQCAtMjM4LDcgKzIzOCw3IEBAIHB1YmxpYzoKICAgICBEb3du
bG9hZFByb3h5KiBjcmVhdGVEb3dubG9hZFByb3h5KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYpOwogICAgIEFQSTo6RG93bmxvYWRDbGllbnQmIGRvd25sb2FkQ2xpZW50KCkgeyByZXR1
cm4gKm1fZG93bmxvYWRDbGllbnQ7IH0KIAotICAgIEFQSTo6SGlzdG9yeUNsaWVudCYgaGlzdG9y
eUNsaWVudCgpIHsgcmV0dXJuICptX2hpc3RvcnlDbGllbnQ7IH0KKyAgICBBUEk6OkxlZ2FjeUNv
bnRleHRIaXN0b3J5Q2xpZW50JiBoaXN0b3J5Q2xpZW50KCkgeyByZXR1cm4gKm1faGlzdG9yeUNs
aWVudDsgfQogICAgIFdlYkNvbnRleHRDbGllbnQmIGNsaWVudCgpIHsgcmV0dXJuIG1fY2xpZW50
OyB9CiAKICAgICBXZWJJY29uRGF0YWJhc2UqIGljb25EYXRhYmFzZSgpIGNvbnN0IHsgcmV0dXJu
IG1faWNvbkRhdGFiYXNlLmdldCgpOyB9CkBAIC00NzksNyArNDc5LDcgQEAgcHJpdmF0ZToKICAg
ICBXZWJDb250ZXh0Q2xpZW50IG1fY2xpZW50OwogICAgIFdlYkNvbnRleHRDb25uZWN0aW9uQ2xp
ZW50IG1fY29ubmVjdGlvbkNsaWVudDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpEb3dubG9h
ZENsaWVudD4gbV9kb3dubG9hZENsaWVudDsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpIaXN0
b3J5Q2xpZW50PiBtX2hpc3RvcnlDbGllbnQ7CisgICAgc3RkOjp1bmlxdWVfcHRyPEFQSTo6TGVn
YWN5Q29udGV4dEhpc3RvcnlDbGllbnQ+IG1faGlzdG9yeUNsaWVudDsKIAogI2lmIEVOQUJMRShO
RVRTQ0FQRV9QTFVHSU5fQVBJKQogICAgIFBsdWdpbkluZm9TdG9yZSBtX3BsdWdpbkluZm9TdG9y
ZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCShyZXZp
c2lvbiAxNzc2MjMpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkFQSUFycmF5Lmgi
CiAjaW5jbHVkZSAiQVBJRmluZENsaWVudC5oIgogI2luY2x1ZGUgIkFQSUZvcm1DbGllbnQuaCIK
KyNpbmNsdWRlICJBUElMZWdhY3lDb250ZXh0SGlzdG9yeUNsaWVudC5oIgogI2luY2x1ZGUgIkFQ
SUxvYWRlckNsaWVudC5oIgogI2luY2x1ZGUgIkFQSVBvbGljeUNsaWVudC5oIgogI2luY2x1ZGUg
IkFQSVVJQ2xpZW50LmgiCkBAIC0zMDcxLDYgKzMwNzIsNzIgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OndpbGxTdWJtaXRGb3JtKHVpbnQ2NAogICAgICAgICBsaXN0ZW5lci0+Y29udGludWVTdWJtaXNz
aW9uKCk7CiB9CiAKK3ZvaWQgV2ViUGFnZVByb3h5OjpkaWROYXZpZ2F0ZVdpdGhOYXZpZ2F0aW9u
RGF0YShjb25zdCBXZWJOYXZpZ2F0aW9uRGF0YVN0b3JlJiBzdG9yZSwgdWludDY0X3QgZnJhbWVJ
RCkgCit7CisgICAgV2ViRnJhbWVQcm94eSogZnJhbWUgPSBtX3Byb2Nlc3MtPndlYkZyYW1lKGZy
YW1lSUQpOworICAgIE1FU1NBR0VfQ0hFQ0soZnJhbWUpOworICAgIE1FU1NBR0VfQ0hFQ0soZnJh
bWUtPnBhZ2UoKSA9PSB0aGlzKTsKKworICAgIC8vIE5vdGlmeSB0aGUgbG9hZGVyIGNsaWVudC4K
KyAgICBtX2xvYWRlckNsaWVudC0+ZGlkTmF2aWdhdGVXaXRoTmF2aWdhdGlvbkRhdGEoKnRoaXMs
IHN0b3JlLCAqZnJhbWUpOworCisgICAgLy8gQWxzbywgbm90aWZ5IHRoZSBsZWdhY3kgaGlzdG9y
eSBjbGllbnQgb24gdGhlIFdlYkNvbnRleHQuCisgICAgcHJvY2VzcygpLmNvbnRleHQoKS5oaXN0
b3J5Q2xpZW50KCkuZGlkTmF2aWdhdGVXaXRoTmF2aWdhdGlvbkRhdGEocHJvY2VzcygpLmNvbnRl
eHQoKSwgKnRoaXMsIHN0b3JlLCAqZnJhbWUpOworfQorCit2b2lkIFdlYlBhZ2VQcm94eTo6ZGlk
UGVyZm9ybUNsaWVudFJlZGlyZWN0KGNvbnN0IFN0cmluZyYgc291cmNlVVJMU3RyaW5nLCBjb25z
dCBTdHJpbmcmIGRlc3RpbmF0aW9uVVJMU3RyaW5nLCB1aW50NjRfdCBmcmFtZUlEKQoreworICAg
IGlmIChzb3VyY2VVUkxTdHJpbmcuaXNFbXB0eSgpIHx8IGRlc3RpbmF0aW9uVVJMU3RyaW5nLmlz
RW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIFdlYkZyYW1lUHJveHkqIGZyYW1l
ID0gbV9wcm9jZXNzLT53ZWJGcmFtZShmcmFtZUlEKTsKKyAgICBNRVNTQUdFX0NIRUNLKGZyYW1l
KTsKKyAgICBNRVNTQUdFX0NIRUNLKGZyYW1lLT5wYWdlKCkgPT0gdGhpcyk7CisKKyAgICBNRVNT
QUdFX0NIRUNLX1VSTChzb3VyY2VVUkxTdHJpbmcpOworICAgIE1FU1NBR0VfQ0hFQ0tfVVJMKGRl
c3RpbmF0aW9uVVJMU3RyaW5nKTsKKworICAgIC8vIE5vdGlmeSB0aGUgbG9hZGVyIGNsaWVudC4K
KyAgICBtX2xvYWRlckNsaWVudC0+ZGlkUGVyZm9ybUNsaWVudFJlZGlyZWN0KCp0aGlzLCBzb3Vy
Y2VVUkxTdHJpbmcsIGRlc3RpbmF0aW9uVVJMU3RyaW5nLCAqZnJhbWUpOworCisgICAgLy8gQWxz
bywgbm90aWZ5IHRoZSBsZWdhY3kgaGlzdG9yeSBjbGllbnQgb24gdGhlIFdlYkNvbnRleHQuCisg
ICAgcHJvY2VzcygpLmNvbnRleHQoKS5oaXN0b3J5Q2xpZW50KCkuZGlkUGVyZm9ybUNsaWVudFJl
ZGlyZWN0KHByb2Nlc3MoKS5jb250ZXh0KCksICp0aGlzLCBzb3VyY2VVUkxTdHJpbmcsIGRlc3Rp
bmF0aW9uVVJMU3RyaW5nLCAqZnJhbWUpOworfQorCit2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUGVy
Zm9ybVNlcnZlclJlZGlyZWN0KGNvbnN0IFN0cmluZyYgc291cmNlVVJMU3RyaW5nLCBjb25zdCBT
dHJpbmcmIGRlc3RpbmF0aW9uVVJMU3RyaW5nLCB1aW50NjRfdCBmcmFtZUlEKQoreworICAgIGlm
IChzb3VyY2VVUkxTdHJpbmcuaXNFbXB0eSgpIHx8IGRlc3RpbmF0aW9uVVJMU3RyaW5nLmlzRW1w
dHkoKSkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIFdlYkZyYW1lUHJveHkqIGZyYW1lID0g
bV9wcm9jZXNzLT53ZWJGcmFtZShmcmFtZUlEKTsKKyAgICBNRVNTQUdFX0NIRUNLKGZyYW1lKTsK
KyAgICBNRVNTQUdFX0NIRUNLKGZyYW1lLT5wYWdlKCkgPT0gdGhpcyk7CisKKyAgICBNRVNTQUdF
X0NIRUNLX1VSTChzb3VyY2VVUkxTdHJpbmcpOworICAgIE1FU1NBR0VfQ0hFQ0tfVVJMKGRlc3Rp
bmF0aW9uVVJMU3RyaW5nKTsKKworICAgIC8vIE5vdGlmeSB0aGUgbG9hZGVyIGNsaWVudC4KKyAg
ICBtX2xvYWRlckNsaWVudC0+ZGlkUGVyZm9ybVNlcnZlclJlZGlyZWN0KCp0aGlzLCBzb3VyY2VV
UkxTdHJpbmcsIGRlc3RpbmF0aW9uVVJMU3RyaW5nLCAqZnJhbWUpOworCisgICAgLy8gQWxzbywg
bm90aWZ5IHRoZSBsZWdhY3kgaGlzdG9yeSBjbGllbnQgb24gdGhlIFdlYkNvbnRleHQuCisgICAg
cHJvY2VzcygpLmNvbnRleHQoKS5oaXN0b3J5Q2xpZW50KCkuZGlkUGVyZm9ybVNlcnZlclJlZGly
ZWN0KHByb2Nlc3MoKS5jb250ZXh0KCksICp0aGlzLCBzb3VyY2VVUkxTdHJpbmcsIGRlc3RpbmF0
aW9uVVJMU3RyaW5nLCAqZnJhbWUpOworfQorCit2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkVXBkYXRl
SGlzdG9yeVRpdGxlKGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IFN0cmluZyYgdXJsLCB1aW50
NjRfdCBmcmFtZUlEKQoreworICAgIFdlYkZyYW1lUHJveHkqIGZyYW1lID0gbV9wcm9jZXNzLT53
ZWJGcmFtZShmcmFtZUlEKTsKKyAgICBNRVNTQUdFX0NIRUNLKGZyYW1lKTsKKyAgICBNRVNTQUdF
X0NIRUNLKGZyYW1lLT5wYWdlKCkgPT0gdGhpcyk7CisKKyAgICBNRVNTQUdFX0NIRUNLX1VSTCh1
cmwpOworCisgICAgLy8gTm90aWZ5IHRoZSBsb2FkZXIgY2xpZW50LgorICAgIG1fbG9hZGVyQ2xp
ZW50LT5kaWRVcGRhdGVIaXN0b3J5VGl0bGUoKnRoaXMsIHRpdGxlLCB1cmwsICpmcmFtZSk7CisK
KyAgICAvLyBBbHNvLCBub3RpZnkgdGhlIGxlZ2FjeSBoaXN0b3J5IGNsaWVudCBvbiB0aGUgV2Vi
Q29udGV4dC4KKyAgICBwcm9jZXNzKCkuY29udGV4dCgpLmhpc3RvcnlDbGllbnQoKS5kaWRVcGRh
dGVIaXN0b3J5VGl0bGUocHJvY2VzcygpLmNvbnRleHQoKSwgKnRoaXMsIHRpdGxlLCB1cmwsICpm
cmFtZSk7Cit9CisKIC8vIFVJQ2xpZW50CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpjcmVhdGVOZXdQ
YWdlKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29u
c3QgV2luZG93RmVhdHVyZXMmIHdpbmRvd0ZlYXR1cmVzLCBjb25zdCBOYXZpZ2F0aW9uQWN0aW9u
RGF0YSYgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIHVpbnQ2NF90JiBuZXdQYWdlSUQsIFdlYlBhZ2VD
cmVhdGlvblBhcmFtZXRlcnMmIG5ld1BhZ2VQYXJhbWV0ZXJzKQpJbmRleDogU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkocmV2aXNpb24gMTc3NjIzKQorKysgU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDI4LDYg
KzEwMjgsMTIgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgd2lsbFN1Ym1pdEZvcm0odWludDY0X3Qg
ZnJhbWVJRCwgdWludDY0X3Qgc291cmNlRnJhbWVJRCwgY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjxT
dHJpbmcsIFN0cmluZz4+JiB0ZXh0RmllbGRWYWx1ZXMsIHVpbnQ2NF90IGxpc3RlbmVySUQsIElQ
Qzo6TWVzc2FnZURlY29kZXImKTsKIAorICAgIC8vIEhpc3RvcnkgY2xpZW50CisgICAgdm9pZCBk
aWROYXZpZ2F0ZVdpdGhOYXZpZ2F0aW9uRGF0YShjb25zdCBXZWJOYXZpZ2F0aW9uRGF0YVN0b3Jl
JiwgdWludDY0X3QgZnJhbWVJRCk7CisgICAgdm9pZCBkaWRQZXJmb3JtQ2xpZW50UmVkaXJlY3Qo
Y29uc3QgU3RyaW5nJiBzb3VyY2VVUkxTdHJpbmcsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25V
UkxTdHJpbmcsIHVpbnQ2NF90IGZyYW1lSUQpOworICAgIHZvaWQgZGlkUGVyZm9ybVNlcnZlclJl
ZGlyZWN0KGNvbnN0IFN0cmluZyYgc291cmNlVVJMU3RyaW5nLCBjb25zdCBTdHJpbmcmIGRlc3Rp
bmF0aW9uVVJMU3RyaW5nLCB1aW50NjRfdCBmcmFtZUlEKTsKKyAgICB2b2lkIGRpZFVwZGF0ZUhp
c3RvcnlUaXRsZShjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBTdHJpbmcmIHVybCwgdWludDY0
X3QgZnJhbWVJRCk7CisKICAgICAvLyBVSSBjbGllbnQKICAgICB2b2lkIGNyZWF0ZU5ld1BhZ2Uo
dWludDY0X3QgZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3Qg
V2ViQ29yZTo6V2luZG93RmVhdHVyZXMmLCBjb25zdCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYsIHVp
bnQ2NF90JiBuZXdQYWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmKTsKICAgICB2b2lk
IHNob3dQYWdlKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
Lm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkubWVzc2FnZXMuaW4JKHJldmlzaW9uIDE3NzYyMykKKysrIFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTE1
MSw2ICsxNTEsMTIgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKIAogICAgIEZyYW1lRGlk
QmVjb21lRnJhbWVTZXQodWludDY0X3QgZnJhbWVJRCwgYm9vbCB2YWx1ZSkKIAorICAgICMgSGlz
dG9yeSBjbGllbnQgbWVzc2FnZXMuCisgICAgRGlkTmF2aWdhdGVXaXRoTmF2aWdhdGlvbkRhdGEo
c3RydWN0IFdlYktpdDo6V2ViTmF2aWdhdGlvbkRhdGFTdG9yZSBzdG9yZSwgdWludDY0X3QgZnJh
bWVJRCkKKyAgICBEaWRQZXJmb3JtQ2xpZW50UmVkaXJlY3QoU3RyaW5nIHNvdXJjZVVSTFN0cmlu
ZywgU3RyaW5nIGRlc3RpbmF0aW9uVVJMU3RyaW5nLCB1aW50NjRfdCBmcmFtZUlEKQorICAgIERp
ZFBlcmZvcm1TZXJ2ZXJSZWRpcmVjdChTdHJpbmcgc291cmNlVVJMU3RyaW5nLCBTdHJpbmcgZGVz
dGluYXRpb25VUkxTdHJpbmcsIHVpbnQ2NF90IGZyYW1lSUQpCisgICAgRGlkVXBkYXRlSGlzdG9y
eVRpdGxlKFN0cmluZyB0aXRsZSwgU3RyaW5nIHVybCwgdWludDY0X3QgZnJhbWVJRCkKKwogICAg
ICMgQ3VzdG9tIHJlcHJlc2VudGF0aW9ucwogICAgIERpZEZpbmlzaExvYWRpbmdEYXRhRm9yQ3Vz
dG9tQ29udGVudFByb3ZpZGVyKFN0cmluZyBzdWdnZXN0ZWRGaWxlbmFtZSwgSVBDOjpEYXRhUmVm
ZXJlbmNlIGRhdGEpCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUHJveHkuY3BwCShyZXZpc2lvbiAxNzc2MjMpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsNyArMjcsNiBAQAog
I2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eS5oIgogCiAjaW5jbHVkZSAiQVBJRnJhbWVIYW5kbGUu
aCIKLSNpbmNsdWRlICJBUElIaXN0b3J5Q2xpZW50LmgiCiAjaW5jbHVkZSAiQ3VzdG9tUHJvdG9j
b2xNYW5hZ2VyUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNp
bmNsdWRlICJEb3dubG9hZFByb3h5TWFwLmgiCkBAIC02MDAsNjkgKzU5OSw2IEBAIERvd25sb2Fk
UHJveHkqIFdlYlByb2Nlc3NQcm94eTo6Y3JlYXRlRG8KICAgICByZXR1cm4gbV9kb3dubG9hZFBy
b3h5TWFwLT5jcmVhdGVEb3dubG9hZFByb3h5KG1fY29udGV4dCwgcmVxdWVzdCk7CiB9CiAKLXZv
aWQgV2ViUHJvY2Vzc1Byb3h5OjpkaWROYXZpZ2F0ZVdpdGhOYXZpZ2F0aW9uRGF0YSh1aW50NjRf
dCBwYWdlSUQsIGNvbnN0IFdlYk5hdmlnYXRpb25EYXRhU3RvcmUmIHN0b3JlLCB1aW50NjRfdCBm
cmFtZUlEKSAKLXsKLSAgICBXZWJQYWdlUHJveHkqIHBhZ2UgPSB3ZWJQYWdlKHBhZ2VJRCk7Ci0g
ICAgaWYgKCFwYWdlKQotICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgV2ViRnJhbWVQcm94eSog
ZnJhbWUgPSB3ZWJGcmFtZShmcmFtZUlEKTsKLSAgICBNRVNTQUdFX0NIRUNLKGZyYW1lKTsKLSAg
ICBNRVNTQUdFX0NIRUNLKGZyYW1lLT5wYWdlKCkgPT0gcGFnZSk7Ci0gICAgCi0gICAgbV9jb250
ZXh0LT5oaXN0b3J5Q2xpZW50KCkuZGlkTmF2aWdhdGVXaXRoTmF2aWdhdGlvbkRhdGEobV9jb250
ZXh0LnB0cigpLCBwYWdlLCBzdG9yZSwgZnJhbWUpOwotfQotCi12b2lkIFdlYlByb2Nlc3NQcm94
eTo6ZGlkUGVyZm9ybUNsaWVudFJlZGlyZWN0KHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgU3RyaW5n
JiBzb3VyY2VVUkxTdHJpbmcsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25VUkxTdHJpbmcsIHVp
bnQ2NF90IGZyYW1lSUQpCi17Ci0gICAgV2ViUGFnZVByb3h5KiBwYWdlID0gd2ViUGFnZShwYWdl
SUQpOwotICAgIGlmICghcGFnZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKHNvdXJjZVVS
TFN0cmluZy5pc0VtcHR5KCkgfHwgZGVzdGluYXRpb25VUkxTdHJpbmcuaXNFbXB0eSgpKQotICAg
ICAgICByZXR1cm47Ci0gICAgCi0gICAgV2ViRnJhbWVQcm94eSogZnJhbWUgPSB3ZWJGcmFtZShm
cmFtZUlEKTsKLSAgICBNRVNTQUdFX0NIRUNLKGZyYW1lKTsKLSAgICBNRVNTQUdFX0NIRUNLKGZy
YW1lLT5wYWdlKCkgPT0gcGFnZSk7Ci0gICAgTUVTU0FHRV9DSEVDS19VUkwoc291cmNlVVJMU3Ry
aW5nKTsKLSAgICBNRVNTQUdFX0NIRUNLX1VSTChkZXN0aW5hdGlvblVSTFN0cmluZyk7Ci0KLSAg
ICBtX2NvbnRleHQtPmhpc3RvcnlDbGllbnQoKS5kaWRQZXJmb3JtQ2xpZW50UmVkaXJlY3QobV9j
b250ZXh0LnB0cigpLCBwYWdlLCBzb3VyY2VVUkxTdHJpbmcsIGRlc3RpbmF0aW9uVVJMU3RyaW5n
LCBmcmFtZSk7Ci19Ci0KLXZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpkaWRQZXJmb3JtU2VydmVyUmVk
aXJlY3QodWludDY0X3QgcGFnZUlELCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTFN0cmluZywgY29u
c3QgU3RyaW5nJiBkZXN0aW5hdGlvblVSTFN0cmluZywgdWludDY0X3QgZnJhbWVJRCkKLXsKLSAg
ICBXZWJQYWdlUHJveHkqIHBhZ2UgPSB3ZWJQYWdlKHBhZ2VJRCk7Ci0gICAgaWYgKCFwYWdlKQot
ICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgaWYgKHNvdXJjZVVSTFN0cmluZy5pc0VtcHR5KCkg
fHwgZGVzdGluYXRpb25VUkxTdHJpbmcuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm47Ci0gICAg
Ci0gICAgV2ViRnJhbWVQcm94eSogZnJhbWUgPSB3ZWJGcmFtZShmcmFtZUlEKTsKLSAgICBNRVNT
QUdFX0NIRUNLKGZyYW1lKTsKLSAgICBNRVNTQUdFX0NIRUNLKGZyYW1lLT5wYWdlKCkgPT0gcGFn
ZSk7Ci0gICAgTUVTU0FHRV9DSEVDS19VUkwoc291cmNlVVJMU3RyaW5nKTsKLSAgICBNRVNTQUdF
X0NIRUNLX1VSTChkZXN0aW5hdGlvblVSTFN0cmluZyk7Ci0KLSAgICBtX2NvbnRleHQtPmhpc3Rv
cnlDbGllbnQoKS5kaWRQZXJmb3JtU2VydmVyUmVkaXJlY3QobV9jb250ZXh0LnB0cigpLCBwYWdl
LCBzb3VyY2VVUkxTdHJpbmcsIGRlc3RpbmF0aW9uVVJMU3RyaW5nLCBmcmFtZSk7Ci19Ci0KLXZv
aWQgV2ViUHJvY2Vzc1Byb3h5OjpkaWRVcGRhdGVIaXN0b3J5VGl0bGUodWludDY0X3QgcGFnZUlE
LCBjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBTdHJpbmcmIHVybCwgdWludDY0X3QgZnJhbWVJ
RCkKLXsKLSAgICBXZWJQYWdlUHJveHkqIHBhZ2UgPSB3ZWJQYWdlKHBhZ2VJRCk7Ci0gICAgaWYg
KCFwYWdlKQotICAgICAgICByZXR1cm47Ci0KLSAgICBXZWJGcmFtZVByb3h5KiBmcmFtZSA9IHdl
YkZyYW1lKGZyYW1lSUQpOwotICAgIE1FU1NBR0VfQ0hFQ0soZnJhbWUpOwotICAgIE1FU1NBR0Vf
Q0hFQ0soZnJhbWUtPnBhZ2UoKSA9PSBwYWdlKTsKLSAgICBNRVNTQUdFX0NIRUNLX1VSTCh1cmwp
OwotCi0gICAgbV9jb250ZXh0LT5oaXN0b3J5Q2xpZW50KCkuZGlkVXBkYXRlSGlzdG9yeVRpdGxl
KG1fY29udGV4dC5wdHIoKSwgcGFnZSwgdGl0bGUsIHVybCwgZnJhbWUpOwotfQotCiB2b2lkIFdl
YlByb2Nlc3NQcm94eTo6ZGlkU2F2ZVRvUGFnZUNhY2hlKCkKIHsKICAgICBtX2NvbnRleHQtPnBy
b2Nlc3NEaWRDYWNoZVBhZ2UodGhpcyk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Byb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQcm94eS5oCShyZXZpc2lvbiAxNzc2MjMpCisrKyBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTE4NywxMiArMTg3
LDYgQEAgcHJpdmF0ZToKICAgICAvLyBQcm9jZXNzTGF1bmNoZXI6OkNsaWVudAogICAgIHZpcnR1
YWwgdm9pZCBkaWRGaW5pc2hMYXVuY2hpbmcoUHJvY2Vzc0xhdW5jaGVyKiwgSVBDOjpDb25uZWN0
aW9uOjpJZGVudGlmaWVyKSBvdmVycmlkZTsKIAotICAgIC8vIEhpc3RvcnkgY2xpZW50Ci0gICAg
dm9pZCBkaWROYXZpZ2F0ZVdpdGhOYXZpZ2F0aW9uRGF0YSh1aW50NjRfdCBwYWdlSUQsIGNvbnN0
IFdlYk5hdmlnYXRpb25EYXRhU3RvcmUmLCB1aW50NjRfdCBmcmFtZUlEKTsKLSAgICB2b2lkIGRp
ZFBlcmZvcm1DbGllbnRSZWRpcmVjdCh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFN0cmluZyYgc291
cmNlVVJMU3RyaW5nLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uVVJMU3RyaW5nLCB1aW50NjRf
dCBmcmFtZUlEKTsKLSAgICB2b2lkIGRpZFBlcmZvcm1TZXJ2ZXJSZWRpcmVjdCh1aW50NjRfdCBw
YWdlSUQsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMU3RyaW5nLCBjb25zdCBTdHJpbmcmIGRlc3Rp
bmF0aW9uVVJMU3RyaW5nLCB1aW50NjRfdCBmcmFtZUlEKTsKLSAgICB2b2lkIGRpZFVwZGF0ZUhp
c3RvcnlUaXRsZSh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IFN0
cmluZyYgdXJsLCB1aW50NjRfdCBmcmFtZUlEKTsKLQogICAgIC8vIEltcGxlbWVudGVkIGluIGdl
bmVyYXRlZCBXZWJQcm9jZXNzUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCiAgICAgdm9pZCBkaWRS
ZWNlaXZlV2ViUHJvY2Vzc1Byb3h5TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24qLCBJUEM6Ok1lc3Nh
Z2VEZWNvZGVyJik7CiAgICAgdm9pZCBkaWRSZWNlaXZlU3luY1dlYlByb2Nlc3NQcm94eU1lc3Nh
Z2UoSVBDOjpDb25uZWN0aW9uKiwgSVBDOjpNZXNzYWdlRGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0
cjxJUEM6Ok1lc3NhZ2VFbmNvZGVyPiYpOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCShyZXZpc2lvbiAxNzc2MjMp
CisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmlu
CSh3b3JraW5nIGNvcHkpCkBAIC0yMSwxMyArMjEsNiBAQAogIyBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCiBtZXNz
YWdlcyAtPiBXZWJQcm9jZXNzUHJveHkgTGVnYWN5UmVjZWl2ZXIgewotCi0gICAgIyBIaXN0b3J5
IGNsaWVudCBtZXNzYWdlcy4KLSAgICBEaWROYXZpZ2F0ZVdpdGhOYXZpZ2F0aW9uRGF0YSh1aW50
NjRfdCBwYWdlSUQsIHN0cnVjdCBXZWJLaXQ6OldlYk5hdmlnYXRpb25EYXRhU3RvcmUgc3RvcmUs
IHVpbnQ2NF90IGZyYW1lSUQpCi0gICAgRGlkUGVyZm9ybUNsaWVudFJlZGlyZWN0KHVpbnQ2NF90
IHBhZ2VJRCwgU3RyaW5nIHNvdXJjZVVSTFN0cmluZywgU3RyaW5nIGRlc3RpbmF0aW9uVVJMU3Ry
aW5nLCB1aW50NjRfdCBmcmFtZUlEKQotICAgIERpZFBlcmZvcm1TZXJ2ZXJSZWRpcmVjdCh1aW50
NjRfdCBwYWdlSUQsIFN0cmluZyBzb3VyY2VVUkxTdHJpbmcsIFN0cmluZyBkZXN0aW5hdGlvblVS
TFN0cmluZywgdWludDY0X3QgZnJhbWVJRCkKLSAgICBEaWRVcGRhdGVIaXN0b3J5VGl0bGUodWlu
dDY0X3QgcGFnZUlELCBTdHJpbmcgdGl0bGUsIFN0cmluZyB1cmwsIHVpbnQ2NF90IGZyYW1lSUQp
Ci0KICAgICBBZGRCYWNrRm9yd2FyZEl0ZW0odWludDY0X3QgaXRlbUlELCB1aW50NjRfdCBwYWdl
SUQsIHN0cnVjdCBXZWJLaXQ6OlBhZ2VTdGF0ZSBwYWdlU3RhdGUpCiAgICAgRGlkRGVzdHJveUZy
YW1lKHVpbnQ2NF90IGZyYW1lSUQpIAogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0FQSUhpc3RvcnlDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0FQSUhpc3RvcnlDbGllbnQuaAkocmV2aXNpb24gMTc3NjIzKQorKysgU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElIaXN0b3J5Q2xpZW50LmgJKHdvcmtpbmcgY29weSkK
QEAgLTEsNTcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgQVBJSGlzdG9yeUNsaWVudF9o
Ci0jZGVmaW5lIEFQSUhpc3RvcnlDbGllbnRfaAotCi0jaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4K
LQotbmFtZXNwYWNlIFdlYktpdCB7Ci1jbGFzcyBXZWJDb250ZXh0OwotY2xhc3MgV2ViRnJhbWVQ
cm94eTsKLWNsYXNzIFdlYlBhZ2VQcm94eTsKLXN0cnVjdCBXZWJOYXZpZ2F0aW9uRGF0YVN0b3Jl
OwotfQotCi1uYW1lc3BhY2UgQVBJIHsKLQotY2xhc3MgSGlzdG9yeUNsaWVudCB7Ci1wdWJsaWM6
Ci0gICAgdmlydHVhbCB+SGlzdG9yeUNsaWVudCgpIHsgfQotCi0gICAgdmlydHVhbCB2b2lkIGRp
ZE5hdmlnYXRlV2l0aE5hdmlnYXRpb25EYXRhKFdlYktpdDo6V2ViQ29udGV4dCosIFdlYktpdDo6
V2ViUGFnZVByb3h5KiwgY29uc3QgV2ViS2l0OjpXZWJOYXZpZ2F0aW9uRGF0YVN0b3JlJiwgV2Vi
S2l0OjpXZWJGcmFtZVByb3h5KikgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGRpZFBlcmZvcm1DbGll
bnRSZWRpcmVjdChXZWJLaXQ6OldlYkNvbnRleHQqLCBXZWJLaXQ6OldlYlBhZ2VQcm94eSosIGNv
bnN0IFdURjo6U3RyaW5nJiwgY29uc3QgV1RGOjpTdHJpbmcmLCBXZWJLaXQ6OldlYkZyYW1lUHJv
eHkqKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlkUGVyZm9ybVNlcnZlclJlZGlyZWN0KFdlYktp
dDo6V2ViQ29udGV4dCosIFdlYktpdDo6V2ViUGFnZVByb3h5KiwgY29uc3QgV1RGOjpTdHJpbmcm
LCBjb25zdCBXVEY6OlN0cmluZyYsIFdlYktpdDo6V2ViRnJhbWVQcm94eSopIHsgfQotICAgIHZp
cnR1YWwgdm9pZCBkaWRVcGRhdGVIaXN0b3J5VGl0bGUoV2ViS2l0OjpXZWJDb250ZXh0KiwgV2Vi
S2l0OjpXZWJQYWdlUHJveHkqLCBjb25zdCBXVEY6OlN0cmluZyYsIGNvbnN0IFdURjo6U3RyaW5n
JiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5KikgeyB9Ci0gICAgdmlydHVhbCB2b2lkIHBvcHVsYXRl
VmlzaXRlZExpbmtzKFdlYktpdDo6V2ViQ29udGV4dCopIHsgfQotCi0gICAgLy8gRklYTUU6IFRo
aXMgaXMgb25seSB1c2VkIGJ5IHRoZSBsZWdhY3kgU1BJLiBXZSBzaG91bGQgYWRkIGFuIEFQSTo6
Q29udGV4dCBvYmplY3QgdGhhdAotICAgIC8vIGNhbiBob2xkIHRoZXNlIHRoaW5ncyBzbyB3ZSB3
b24ndCBoYXZlIHRvIGdldCBpdCB0aHJvdWdoIEFQSTo6SGlzdG9yeUNsaWVudC4KLSAgICB2aXJ0
dWFsIGJvb2wgYWRkc1Zpc2l0ZWRMaW5rcygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci19Owot
Ci19IC8vIG5hbWVzcGFjZSBBUEkKLQotI2VuZGlmIC8vIEFQSUhpc3RvcnlDbGllbnRfaApJbmRl
eDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElMZWdhY3lDb250ZXh0SGlzdG9yeUNs
aWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJTGVn
YWN5Q29udGV4dEhpc3RvcnlDbGllbnQuaAkocmV2aXNpb24gMTc3NjE3KQkoZnJvbSBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSUhpc3RvcnlDbGllbnQuaDoxNzc2MTcpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSUxlZ2FjeUNvbnRleHRIaXN0b3J5Q2xpZW50LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgQVBJ
SGlzdG9yeUNsaWVudF9oCisjZGVmaW5lIEFQSUhpc3RvcnlDbGllbnRfaAorCisjaW5jbHVkZSA8
d3RmL0ZvcndhcmQuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CitjbGFzcyBXZWJDb250ZXh0Owor
Y2xhc3MgV2ViRnJhbWVQcm94eTsKK2NsYXNzIFdlYlBhZ2VQcm94eTsKK3N0cnVjdCBXZWJOYXZp
Z2F0aW9uRGF0YVN0b3JlOworfQorCituYW1lc3BhY2UgQVBJIHsKKworY2xhc3MgSGlzdG9yeUNs
aWVudCB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+SGlzdG9yeUNsaWVudCgpIHsgfQorCisgICAg
dmlydHVhbCB2b2lkIGRpZE5hdmlnYXRlV2l0aE5hdmlnYXRpb25EYXRhKFdlYktpdDo6V2ViQ29u
dGV4dCosIFdlYktpdDo6V2ViUGFnZVByb3h5KiwgY29uc3QgV2ViS2l0OjpXZWJOYXZpZ2F0aW9u
RGF0YVN0b3JlJiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5KikgeyB9CisgICAgdmlydHVhbCB2b2lk
IGRpZFBlcmZvcm1DbGllbnRSZWRpcmVjdChXZWJLaXQ6OldlYkNvbnRleHQqLCBXZWJLaXQ6Oldl
YlBhZ2VQcm94eSosIGNvbnN0IFdURjo6U3RyaW5nJiwgY29uc3QgV1RGOjpTdHJpbmcmLCBXZWJL
aXQ6OldlYkZyYW1lUHJveHkqKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkUGVyZm9ybVNlcnZl
clJlZGlyZWN0KFdlYktpdDo6V2ViQ29udGV4dCosIFdlYktpdDo6V2ViUGFnZVByb3h5KiwgY29u
c3QgV1RGOjpTdHJpbmcmLCBjb25zdCBXVEY6OlN0cmluZyYsIFdlYktpdDo6V2ViRnJhbWVQcm94
eSopIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRVcGRhdGVIaXN0b3J5VGl0bGUoV2ViS2l0OjpX
ZWJDb250ZXh0KiwgV2ViS2l0OjpXZWJQYWdlUHJveHkqLCBjb25zdCBXVEY6OlN0cmluZyYsIGNv
bnN0IFdURjo6U3RyaW5nJiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5KikgeyB9CisgICAgdmlydHVh
bCB2b2lkIHBvcHVsYXRlVmlzaXRlZExpbmtzKFdlYktpdDo6V2ViQ29udGV4dCopIHsgfQorCisg
ICAgLy8gRklYTUU6IFRoaXMgaXMgb25seSB1c2VkIGJ5IHRoZSBsZWdhY3kgU1BJLiBXZSBzaG91
bGQgYWRkIGFuIEFQSTo6Q29udGV4dCBvYmplY3QgdGhhdAorICAgIC8vIGNhbiBob2xkIHRoZXNl
IHRoaW5ncyBzbyB3ZSB3b24ndCBoYXZlIHRvIGdldCBpdCB0aHJvdWdoIEFQSTo6SGlzdG9yeUNs
aWVudC4KKyAgICB2aXJ0dWFsIGJvb2wgYWRkc1Zpc2l0ZWRMaW5rcygpIGNvbnN0IHsgcmV0dXJu
IGZhbHNlOyB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBBUEkKKworI2VuZGlmIC8vIEFQSUhpc3Rv
cnlDbGllbnRfaApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElMZWdhY3lD
b250ZXh0SGlzdG9yeUNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQVBJTGVnYWN5Q29udGV4dEhpc3RvcnlDbGllbnQuaAkod29ya2luZyBjb3B5KQor
KysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElMZWdhY3lDb250ZXh0SGlzdG9yeUNs
aWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw4ICsyMyw4IEBACiAgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBBUElIaXN0b3J5Q2xpZW50X2gKLSNk
ZWZpbmUgQVBJSGlzdG9yeUNsaWVudF9oCisjaWZuZGVmIEFQSUxlZ2FjeUNvbnRleHRIaXN0b3J5
Q2xpZW50X2gKKyNkZWZpbmUgQVBJTGVnYWN5Q29udGV4dEhpc3RvcnlDbGllbnRfaAogCiAjaW5j
bHVkZSA8d3RmL0ZvcndhcmQuaD4KIApAQCAtMzcsMjEgKzM3LDE4IEBAIHN0cnVjdCBXZWJOYXZp
Z2F0aW9uRGF0YVN0b3JlOwogCiBuYW1lc3BhY2UgQVBJIHsKIAotY2xhc3MgSGlzdG9yeUNsaWVu
dCB7CitjbGFzcyBMZWdhY3lDb250ZXh0SGlzdG9yeUNsaWVudCB7CiBwdWJsaWM6Ci0gICAgdmly
dHVhbCB+SGlzdG9yeUNsaWVudCgpIHsgfQorICAgIHZpcnR1YWwgfkxlZ2FjeUNvbnRleHRIaXN0
b3J5Q2xpZW50KCkgeyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkTmF2aWdhdGVXaXRoTmF2aWdh
dGlvbkRhdGEoV2ViS2l0OjpXZWJDb250ZXh0KiwgV2ViS2l0OjpXZWJQYWdlUHJveHkqLCBjb25z
dCBXZWJLaXQ6OldlYk5hdmlnYXRpb25EYXRhU3RvcmUmLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkq
KSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlkUGVyZm9ybUNsaWVudFJlZGlyZWN0KFdlYktpdDo6
V2ViQ29udGV4dCosIFdlYktpdDo6V2ViUGFnZVByb3h5KiwgY29uc3QgV1RGOjpTdHJpbmcmLCBj
b25zdCBXVEY6OlN0cmluZyYsIFdlYktpdDo6V2ViRnJhbWVQcm94eSopIHsgfQotICAgIHZpcnR1
YWwgdm9pZCBkaWRQZXJmb3JtU2VydmVyUmVkaXJlY3QoV2ViS2l0OjpXZWJDb250ZXh0KiwgV2Vi
S2l0OjpXZWJQYWdlUHJveHkqLCBjb25zdCBXVEY6OlN0cmluZyYsIGNvbnN0IFdURjo6U3RyaW5n
JiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5KikgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGRpZFVwZGF0
ZUhpc3RvcnlUaXRsZShXZWJLaXQ6OldlYkNvbnRleHQqLCBXZWJLaXQ6OldlYlBhZ2VQcm94eSos
IGNvbnN0IFdURjo6U3RyaW5nJiwgY29uc3QgV1RGOjpTdHJpbmcmLCBXZWJLaXQ6OldlYkZyYW1l
UHJveHkqKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgcG9wdWxhdGVWaXNpdGVkTGlua3MoV2ViS2l0
OjpXZWJDb250ZXh0KikgeyB9Ci0KLSAgICAvLyBGSVhNRTogVGhpcyBpcyBvbmx5IHVzZWQgYnkg
dGhlIGxlZ2FjeSBTUEkuIFdlIHNob3VsZCBhZGQgYW4gQVBJOjpDb250ZXh0IG9iamVjdCB0aGF0
Ci0gICAgLy8gY2FuIGhvbGQgdGhlc2UgdGhpbmdzIHNvIHdlIHdvbid0IGhhdmUgdG8gZ2V0IGl0
IHRocm91Z2ggQVBJOjpIaXN0b3J5Q2xpZW50LgorICAgIHZpcnR1YWwgdm9pZCBkaWROYXZpZ2F0
ZVdpdGhOYXZpZ2F0aW9uRGF0YShXZWJLaXQ6OldlYkNvbnRleHQmLCBXZWJLaXQ6OldlYlBhZ2VQ
cm94eSYsIGNvbnN0IFdlYktpdDo6V2ViTmF2aWdhdGlvbkRhdGFTdG9yZSYsIFdlYktpdDo6V2Vi
RnJhbWVQcm94eSYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRQZXJmb3JtQ2xpZW50UmVkaXJl
Y3QoV2ViS2l0OjpXZWJDb250ZXh0JiwgV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBjb25zdCBXVEY6
OlN0cmluZyYsIGNvbnN0IFdURjo6U3RyaW5nJiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5JikgeyB9
CisgICAgdmlydHVhbCB2b2lkIGRpZFBlcmZvcm1TZXJ2ZXJSZWRpcmVjdChXZWJLaXQ6OldlYkNv
bnRleHQmLCBXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIGNvbnN0IFdURjo6U3RyaW5nJiwgY29uc3Qg
V1RGOjpTdHJpbmcmLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkmKSB7IH0KKyAgICB2aXJ0dWFsIHZv
aWQgZGlkVXBkYXRlSGlzdG9yeVRpdGxlKFdlYktpdDo6V2ViQ29udGV4dCYsIFdlYktpdDo6V2Vi
UGFnZVByb3h5JiwgY29uc3QgV1RGOjpTdHJpbmcmLCBjb25zdCBXVEY6OlN0cmluZyYsIFdlYktp
dDo6V2ViRnJhbWVQcm94eSYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBwb3B1bGF0ZVZpc2l0ZWRM
aW5rcyhXZWJLaXQ6OldlYkNvbnRleHQmKSB7IH0KICAgICB2aXJ0dWFsIGJvb2wgYWRkc1Zpc2l0
ZWRMaW5rcygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBB
UEkKIAotI2VuZGlmIC8vIEFQSUhpc3RvcnlDbGllbnRfaAorI2VuZGlmIC8vIEFQSUxlZ2FjeUNv
bnRleHRIaXN0b3J5Q2xpZW50X2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
QVBJTG9hZGVyQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9BUElMb2FkZXJDbGllbnQuaAkocmV2aXNpb24gMTc3NjIzKQorKysgU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9BUElMb2FkZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDUs
NiArNDUsNyBAQCBjbGFzcyBXZWJCYWNrRm9yd2FyZExpc3RJdGVtOwogY2xhc3MgV2ViRnJhbWVQ
cm94eTsKIGNsYXNzIFdlYlBhZ2VQcm94eTsKIGNsYXNzIFdlYlByb3RlY3Rpb25TcGFjZTsKK3N0
cnVjdCBXZWJOYXZpZ2F0aW9uRGF0YVN0b3JlOwogfQogCiBuYW1lc3BhY2UgQVBJIHsKQEAgLTk2
LDYgKzk3LDExIEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxEYXRhPiB3ZWJD
cnlwdG9NYXN0ZXJLZXkoV2ViS2l0OjpXZWJQYWdlUHJveHkmKSB7IHJldHVybiBudWxscHRyOyB9
CiAKKyAgICB2aXJ0dWFsIHZvaWQgZGlkTmF2aWdhdGVXaXRoTmF2aWdhdGlvbkRhdGEoV2ViS2l0
OjpXZWJQYWdlUHJveHkmLCBjb25zdCBXZWJLaXQ6OldlYk5hdmlnYXRpb25EYXRhU3RvcmUmLCBX
ZWJLaXQ6OldlYkZyYW1lUHJveHkmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkUGVyZm9ybUNs
aWVudFJlZGlyZWN0KFdlYktpdDo6V2ViUGFnZVByb3h5JiwgY29uc3QgV1RGOjpTdHJpbmcmLCBj
b25zdCBXVEY6OlN0cmluZyYsIFdlYktpdDo6V2ViRnJhbWVQcm94eSYpIHsgfQorICAgIHZpcnR1
YWwgdm9pZCBkaWRQZXJmb3JtU2VydmVyUmVkaXJlY3QoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBj
b25zdCBXVEY6OlN0cmluZyYsIGNvbnN0IFdURjo6U3RyaW5nJiwgV2ViS2l0OjpXZWJGcmFtZVBy
b3h5JikgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpZFVwZGF0ZUhpc3RvcnlUaXRsZShXZWJLaXQ6
OldlYlBhZ2VQcm94eSYsIGNvbnN0IFdURjo6U3RyaW5nJiwgY29uc3QgV1RGOjpTdHJpbmcmLCBX
ZWJLaXQ6OldlYkZyYW1lUHJveHkmKSB7IH0KKwogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5f
QVBJKQogICAgIHZpcnR1YWwgV2ViS2l0OjpQbHVnaW5Nb2R1bGVMb2FkUG9saWN5IHBsdWdpbkxv
YWRQb2xpY3koV2ViS2l0OjpXZWJQYWdlUHJveHkqLCBXZWJLaXQ6OlBsdWdpbk1vZHVsZUxvYWRQ
b2xpY3kgY3VycmVudFBsdWdpbkxvYWRQb2xpY3ksIFdlYktpdDo6SW1tdXRhYmxlRGljdGlvbmFy
eSosIFdURjo6U3RyaW5nJiAvKiB1bmF2YWlsYWJpbGl0eURlc2NyaXB0aW9uICovKSB7IHJldHVy
biBjdXJyZW50UGx1Z2luTG9hZFBvbGljeTsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsVG9J
bml0aWFsaXplUGx1Z2luKFdlYktpdDo6V2ViUGFnZVByb3h5KiwgV2ViS2l0OjpJbW11dGFibGVE
aWN0aW9uYXJ5KikgeyB9CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tD
b250ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mv
V0tDb250ZXh0LmNwcAkocmV2aXNpb24gMTc3NjIzKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDcgKzI5LDcgQEAK
ICNpbmNsdWRlICJBUElDbGllbnQuaCIKICNpbmNsdWRlICJBUElDb250ZXh0Q29uZmlndXJhdGlv
bi5oIgogI2luY2x1ZGUgIkFQSURvd25sb2FkQ2xpZW50LmgiCi0jaW5jbHVkZSAiQVBJSGlzdG9y
eUNsaWVudC5oIgorI2luY2x1ZGUgIkFQSUxlZ2FjeUNvbnRleHRIaXN0b3J5Q2xpZW50LmgiCiAj
aW5jbHVkZSAiQVBJTmF2aWdhdGlvbkRhdGEuaCIKICNpbmNsdWRlICJBUElVUkxSZXF1ZXN0Lmgi
CiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eS5oIgpAQCAtMTA4LDcgKzEw
OCw3IEBAIHZvaWQgV0tDb250ZXh0U2V0SW5qZWN0ZWRCdW5kbGVDbGllbnQoV0sKIAogdm9pZCBX
S0NvbnRleHRTZXRIaXN0b3J5Q2xpZW50KFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLCBjb25zdCBX
S0NvbnRleHRIaXN0b3J5Q2xpZW50QmFzZSogd2tDbGllbnQpCiB7Ci0gICAgY2xhc3MgSGlzdG9y
eUNsaWVudCBmaW5hbCA6IHB1YmxpYyBBUEk6OkNsaWVudDxXS0NvbnRleHRIaXN0b3J5Q2xpZW50
QmFzZT4sIHB1YmxpYyBBUEk6Okhpc3RvcnlDbGllbnQgeworICAgIGNsYXNzIEhpc3RvcnlDbGll
bnQgZmluYWwgOiBwdWJsaWMgQVBJOjpDbGllbnQ8V0tDb250ZXh0SGlzdG9yeUNsaWVudEJhc2U+
LCBwdWJsaWMgQVBJOjpMZWdhY3lDb250ZXh0SGlzdG9yeUNsaWVudCB7CiAgICAgcHVibGljOgog
ICAgICAgICBleHBsaWNpdCBIaXN0b3J5Q2xpZW50KGNvbnN0IFdLQ29udGV4dEhpc3RvcnlDbGll
bnRCYXNlKiBjbGllbnQpCiAgICAgICAgIHsKQEAgLTExNiw0NSArMTE2LDQ1IEBAIHZvaWQgV0tD
b250ZXh0U2V0SGlzdG9yeUNsaWVudChXS0NvbnRleHQKICAgICAgICAgfQogCiAgICAgcHJpdmF0
ZToKLSAgICAgICAgdmlydHVhbCB2b2lkIGRpZE5hdmlnYXRlV2l0aE5hdmlnYXRpb25EYXRhKFdl
YkNvbnRleHQqIGNvbnRleHQsIFdlYlBhZ2VQcm94eSogcGFnZSwgY29uc3QgV2ViTmF2aWdhdGlv
bkRhdGFTdG9yZSYgbmF2aWdhdGlvbkRhdGFTdG9yZSwgV2ViRnJhbWVQcm94eSogZnJhbWUpIG92
ZXJyaWRlCisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWROYXZpZ2F0ZVdpdGhOYXZpZ2F0aW9uRGF0
YShXZWJDb250ZXh0JiBjb250ZXh0LCBXZWJQYWdlUHJveHkmIHBhZ2UsIGNvbnN0IFdlYk5hdmln
YXRpb25EYXRhU3RvcmUmIG5hdmlnYXRpb25EYXRhU3RvcmUsIFdlYkZyYW1lUHJveHkmIGZyYW1l
KSBvdmVycmlkZQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRpZE5hdmln
YXRlV2l0aE5hdmlnYXRpb25EYXRhKQogICAgICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAg
ICAgICAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbkRhdGE+IG5hdmlnYXRpb25EYXRhID0gQVBJOjpO
YXZpZ2F0aW9uRGF0YTo6Y3JlYXRlKG5hdmlnYXRpb25EYXRhU3RvcmUpOwotICAgICAgICAgICAg
bV9jbGllbnQuZGlkTmF2aWdhdGVXaXRoTmF2aWdhdGlvbkRhdGEodG9BUEkoY29udGV4dCksIHRv
QVBJKHBhZ2UpLCB0b0FQSShuYXZpZ2F0aW9uRGF0YS5nZXQoKSksIHRvQVBJKGZyYW1lKSwgbV9j
bGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICAgICAgICAgIG1fY2xpZW50LmRpZE5hdmlnYXRl
V2l0aE5hdmlnYXRpb25EYXRhKHRvQVBJKCZjb250ZXh0KSwgdG9BUEkoJnBhZ2UpLCB0b0FQSShu
YXZpZ2F0aW9uRGF0YS5nZXQoKSksIHRvQVBJKCZmcmFtZSksIG1fY2xpZW50LmJhc2UuY2xpZW50
SW5mbyk7CiAgICAgICAgIH0KIAotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUGVyZm9ybUNsaWVu
dFJlZGlyZWN0KFdlYkNvbnRleHQqIGNvbnRleHQsIFdlYlBhZ2VQcm94eSogcGFnZSwgY29uc3Qg
U3RyaW5nJiBzb3VyY2VVUkwsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25VUkwsIFdlYkZyYW1l
UHJveHkqIGZyYW1lKSBvdmVycmlkZQorICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUGVyZm9ybUNs
aWVudFJlZGlyZWN0KFdlYkNvbnRleHQmIGNvbnRleHQsIFdlYlBhZ2VQcm94eSYgcGFnZSwgY29u
c3QgU3RyaW5nJiBzb3VyY2VVUkwsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25VUkwsIFdlYkZy
YW1lUHJveHkmIGZyYW1lKSBvdmVycmlkZQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoIW1f
Y2xpZW50LmRpZFBlcmZvcm1DbGllbnRSZWRpcmVjdCkKICAgICAgICAgICAgICAgICByZXR1cm47
CiAKLSAgICAgICAgICAgIG1fY2xpZW50LmRpZFBlcmZvcm1DbGllbnRSZWRpcmVjdCh0b0FQSShj
b250ZXh0KSwgdG9BUEkocGFnZSksIHRvVVJMUmVmKHNvdXJjZVVSTC5pbXBsKCkpLCB0b1VSTFJl
ZihkZXN0aW5hdGlvblVSTC5pbXBsKCkpLCB0b0FQSShmcmFtZSksIG1fY2xpZW50LmJhc2UuY2xp
ZW50SW5mbyk7CisgICAgICAgICAgICBtX2NsaWVudC5kaWRQZXJmb3JtQ2xpZW50UmVkaXJlY3Qo
dG9BUEkoJmNvbnRleHQpLCB0b0FQSSgmcGFnZSksIHRvVVJMUmVmKHNvdXJjZVVSTC5pbXBsKCkp
LCB0b1VSTFJlZihkZXN0aW5hdGlvblVSTC5pbXBsKCkpLCB0b0FQSSgmZnJhbWUpLCBtX2NsaWVu
dC5iYXNlLmNsaWVudEluZm8pOwogICAgICAgICB9CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIGRp
ZFBlcmZvcm1TZXJ2ZXJSZWRpcmVjdChXZWJDb250ZXh0KiBjb250ZXh0LCBXZWJQYWdlUHJveHkq
IHBhZ2UsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9u
VVJMLCBXZWJGcmFtZVByb3h5KiBmcmFtZSkgb3ZlcnJpZGUKKyAgICAgICAgdmlydHVhbCB2b2lk
IGRpZFBlcmZvcm1TZXJ2ZXJSZWRpcmVjdChXZWJDb250ZXh0JiBjb250ZXh0LCBXZWJQYWdlUHJv
eHkmIHBhZ2UsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0
aW9uVVJMLCBXZWJGcmFtZVByb3h5JiBmcmFtZSkgb3ZlcnJpZGUKICAgICAgICAgewogICAgICAg
ICAgICAgaWYgKCFtX2NsaWVudC5kaWRQZXJmb3JtU2VydmVyUmVkaXJlY3QpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuOwogCi0gICAgICAgICAgICBtX2NsaWVudC5kaWRQZXJmb3JtU2VydmVyUmVk
aXJlY3QodG9BUEkoY29udGV4dCksIHRvQVBJKHBhZ2UpLCB0b1VSTFJlZihzb3VyY2VVUkwuaW1w
bCgpKSwgdG9VUkxSZWYoZGVzdGluYXRpb25VUkwuaW1wbCgpKSwgdG9BUEkoZnJhbWUpLCBtX2Ns
aWVudC5iYXNlLmNsaWVudEluZm8pOworICAgICAgICAgICAgbV9jbGllbnQuZGlkUGVyZm9ybVNl
cnZlclJlZGlyZWN0KHRvQVBJKCZjb250ZXh0KSwgdG9BUEkoJnBhZ2UpLCB0b1VSTFJlZihzb3Vy
Y2VVUkwuaW1wbCgpKSwgdG9VUkxSZWYoZGVzdGluYXRpb25VUkwuaW1wbCgpKSwgdG9BUEkoJmZy
YW1lKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKICAgICAgICAgfQogCi0gICAgICAgIHZp
cnR1YWwgdm9pZCBkaWRVcGRhdGVIaXN0b3J5VGl0bGUoV2ViQ29udGV4dCogY29udGV4dCwgV2Vi
UGFnZVByb3h5KiBwYWdlLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBTdHJpbmcmIHVybCwg
V2ViRnJhbWVQcm94eSogZnJhbWUpIG92ZXJyaWRlCisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRV
cGRhdGVIaXN0b3J5VGl0bGUoV2ViQ29udGV4dCYgY29udGV4dCwgV2ViUGFnZVByb3h5JiBwYWdl
LCBjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBTdHJpbmcmIHVybCwgV2ViRnJhbWVQcm94eSYg
ZnJhbWUpIG92ZXJyaWRlCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmICghbV9jbGllbnQuZGlk
VXBkYXRlSGlzdG9yeVRpdGxlKQogICAgICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICAg
ICAgbV9jbGllbnQuZGlkVXBkYXRlSGlzdG9yeVRpdGxlKHRvQVBJKGNvbnRleHQpLCB0b0FQSShw
YWdlKSwgdG9BUEkodGl0bGUuaW1wbCgpKSwgdG9VUkxSZWYodXJsLmltcGwoKSksIHRvQVBJKGZy
YW1lKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICAgICAgICAgIG1fY2xpZW50LmRp
ZFVwZGF0ZUhpc3RvcnlUaXRsZSh0b0FQSSgmY29udGV4dCksIHRvQVBJKCZwYWdlKSwgdG9BUEko
dGl0bGUuaW1wbCgpKSwgdG9VUkxSZWYodXJsLmltcGwoKSksIHRvQVBJKCZmcmFtZSksIG1fY2xp
ZW50LmJhc2UuY2xpZW50SW5mbyk7CiAgICAgICAgIH0KIAotICAgICAgICB2aXJ0dWFsIHZvaWQg
cG9wdWxhdGVWaXNpdGVkTGlua3MoV2ViQ29udGV4dCogY29udGV4dCkgb3ZlcnJpZGUKKyAgICAg
ICAgdmlydHVhbCB2b2lkIHBvcHVsYXRlVmlzaXRlZExpbmtzKFdlYkNvbnRleHQmIGNvbnRleHQp
IG92ZXJyaWRlCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmICghbV9jbGllbnQucG9wdWxhdGVW
aXNpdGVkTGlua3MpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgICAgICBtX2Ns
aWVudC5wb3B1bGF0ZVZpc2l0ZWRMaW5rcyh0b0FQSShjb250ZXh0KSwgbV9jbGllbnQuYmFzZS5j
bGllbnRJbmZvKTsKKyAgICAgICAgICAgIG1fY2xpZW50LnBvcHVsYXRlVmlzaXRlZExpbmtzKHRv
QVBJKCZjb250ZXh0KSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKICAgICAgICAgfQogCiAg
ICAgICAgIHZpcnR1YWwgYm9vbCBhZGRzVmlzaXRlZExpbmtzKCkgY29uc3Qgb3ZlcnJpZGUKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vz
c1Bvb2wubW0JKHJldmlzaW9uIDE3NzYyMykKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbQkod29ya2luZyBjb3B5KQpAQCAtMzAsNyArMzAsNiBA
QAogCiAjaW1wb3J0ICJDYWNoZU1vZGVsLmgiCiAjaW1wb3J0ICJEb3dubG9hZENsaWVudC5oIgot
I2ltcG9ydCAiSGlzdG9yeUNsaWVudC5oIgogI2ltcG9ydCAiUHJvY2Vzc01vZGVsLmgiCiAjaW1w
b3J0ICJTYW5kYm94VXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJXS09iamVjdC5oIgpAQCAtMTcwLDcg
KzE2OSw2IEBAIC0gKGluc3RhbmNldHlwZSlfaW5pdFdpdGhDb25maWd1cmF0aW9uOigKICAgICB3
ZWJDb250ZXh0Q29uZmlndXJhdGlvbi5tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5ID0gd2Vic2l0
ZURhdGFEaXJlY3RvcnlVUkwoQCJNZWRpYUtleXMiKS5hYnNvbHV0ZVVSTC5wYXRoLmZpbGVTeXN0
ZW1SZXByZXNlbnRhdGlvbjsKIAogICAgIEFQSTo6T2JqZWN0Ojpjb25zdHJ1Y3RJbldyYXBwZXI8
V2ViS2l0OjpXZWJDb250ZXh0PihzZWxmLCBXVEY6Om1vdmUod2ViQ29udGV4dENvbmZpZ3VyYXRp
b24pKTsKLSAgICBfY29udGV4dC0+c2V0SGlzdG9yeUNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFdl
YktpdDo6SGlzdG9yeUNsaWVudD4oKSk7CiAgICAgX2NvbnRleHQtPnNldFVzZXNOZXR3b3JrUHJv
Y2Vzcyh0cnVlKTsKICAgICBfY29udGV4dC0+c2V0UHJvY2Vzc01vZGVsKFdlYktpdDo6UHJvY2Vz
c01vZGVsTXVsdGlwbGVTZWNvbmRhcnlQcm9jZXNzZXMpOwogICAgIF9jb250ZXh0LT5zZXRNYXhp
bXVtTnVtYmVyT2ZQcm9jZXNzZXMoW19jb25maWd1cmF0aW9uIG1heGltdW1Qcm9jZXNzQ291bnRd
KTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0JKHJl
dmlzaW9uIDE3NzYyMykKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmll
dy5tbQkod29ya2luZyBjb3B5KQpAQCAtMzMsNyArMzMsNyBAQAogI2ltcG9ydCA8QXBwS2l0L05T
QXR0cmlidXRlZFN0cmluZy5oPgogI2VuZGlmCiAKLSNpbXBvcnQgIkFQSUhpc3RvcnlDbGllbnQu
aCIKKyNpbXBvcnQgIkFQSUxlZ2FjeUNvbnRleHRIaXN0b3J5Q2xpZW50LmgiCiAjaW1wb3J0ICJB
Y3Rpb25NZW51SGl0VGVzdFJlc3VsdC5oIgogI2ltcG9ydCAiQXR0cmlidXRlZFN0cmluZy5oIgog
I2ltcG9ydCAiQ29sb3JTcGFjZURhdGEuaCIKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9Db2NvYS9IaXN0b3J5Q2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0NvY29hL0hpc3RvcnlDbGllbnQuaAkocmV2aXNpb24gMTc3NjIzKQorKysgU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL0hpc3RvcnlDbGllbnQuaAkod29ya2luZyBjb3B5KQpA
QCAtMSw1NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBIaXN0b3J5Q2xpZW50X2gKLSNk
ZWZpbmUgSGlzdG9yeUNsaWVudF9oCi0KLSNpbXBvcnQgIldLRm91bmRhdGlvbi5oIgotCi0jaWYg
V0tfQVBJX0VOQUJMRUQKLQotI2ltcG9ydCAiQVBJSGlzdG9yeUNsaWVudC5oIgotCi1uYW1lc3Bh
Y2UgV2ViS2l0IHsKLQotY2xhc3MgSGlzdG9yeUNsaWVudCA6IHB1YmxpYyBBUEk6Okhpc3RvcnlD
bGllbnQgewotcHVibGljOgotICAgIEhpc3RvcnlDbGllbnQoKTsKLSAgICB+SGlzdG9yeUNsaWVu
dCgpOwotCi1wcml2YXRlOgotICAgIC8vIEFQSTo6SGlzdG9yeUNsaWVudAotICAgIHZpcnR1YWwg
dm9pZCBkaWROYXZpZ2F0ZVdpdGhOYXZpZ2F0aW9uRGF0YShXZWJDb250ZXh0KiwgV2ViUGFnZVBy
b3h5KiwgY29uc3QgV2ViTmF2aWdhdGlvbkRhdGFTdG9yZSYsIFdlYkZyYW1lUHJveHkqKSBvdmVy
cmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUGVyZm9ybUNsaWVudFJlZGlyZWN0KFdlYkNvbnRl
eHQqLCBXZWJQYWdlUHJveHkqLCBjb25zdCBXVEY6OlN0cmluZyYgc291cmNlVVJMLCBjb25zdCBX
VEY6OlN0cmluZyYgZGVzdGluYXRpb25VUkwsIFdlYkZyYW1lUHJveHkqKSBvdmVycmlkZTsKLSAg
ICB2aXJ0dWFsIHZvaWQgZGlkUGVyZm9ybVNlcnZlclJlZGlyZWN0KFdlYkNvbnRleHQqLCBXZWJQ
YWdlUHJveHkqLCBjb25zdCBXVEY6OlN0cmluZyYgc291cmNlVVJMLCBjb25zdCBXVEY6OlN0cmlu
ZyYgZGVzdGluYXRpb25VUkwsIFdlYkZyYW1lUHJveHkqKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFs
IHZvaWQgZGlkVXBkYXRlSGlzdG9yeVRpdGxlKFdlYkNvbnRleHQqLCBXZWJQYWdlUHJveHkqLCBj
b25zdCBXVEY6OlN0cmluZyYgdGl0bGUsIGNvbnN0IFdURjo6U3RyaW5nJiB1cmwsIFdlYkZyYW1l
UHJveHkqKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgcG9wdWxhdGVWaXNpdGVkTGlua3Mo
V2ViQ29udGV4dCopIG92ZXJyaWRlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNl
bmRpZiAvLyBXS19BUElfRU5BQkxFRAotCi0jZW5kaWYgLy8gSGlzdG9yeUNsaWVudF9oCkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvSGlzdG9yeUNsaWVudC5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvSGlzdG9yeUNsaWVudC5tbQko
cmV2aXNpb24gMTc3NjIzKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL0hpc3Rv
cnlDbGllbnQubW0JKHdvcmtpbmcgY29weSkKQEAgLTEsOTEgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiSGlzdG9yeUNsaWVudC5oIgotCi0jaWYgV0tf
QVBJX0VOQUJMRUQKLQotI2ltcG9ydCAiTmF2aWdhdGlvblN0YXRlLmgiCi0jaW1wb3J0ICJXS0hp
c3RvcnlEZWxlZ2F0ZVByaXZhdGUuaCIKLSNpbXBvcnQgIldlYkZyYW1lUHJveHkuaCIKLQotbmFt
ZXNwYWNlIFdlYktpdCB7Ci0KLUhpc3RvcnlDbGllbnQ6Okhpc3RvcnlDbGllbnQoKQotewotfQot
Ci1IaXN0b3J5Q2xpZW50Ojp+SGlzdG9yeUNsaWVudCgpCi17Ci19Ci0KLXZvaWQgSGlzdG9yeUNs
aWVudDo6ZGlkTmF2aWdhdGVXaXRoTmF2aWdhdGlvbkRhdGEoV2ViQ29udGV4dCosIFdlYlBhZ2VQ
cm94eSogd2ViUGFnZVByb3h5LCBjb25zdCBXZWJOYXZpZ2F0aW9uRGF0YVN0b3JlJiBuYXZpZ2F0
aW9uRGF0YVN0b3JlLCBXZWJGcmFtZVByb3h5KiB3ZWJGcmFtZVByb3h5KQotewotICAgIGlmICgh
d2ViRnJhbWVQcm94eS0+aXNNYWluRnJhbWUoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgYXV0
byYgbmF2aWdhdGlvblN0YXRlID0gTmF2aWdhdGlvblN0YXRlOjpmcm9tV2ViUGFnZSgqd2ViUGFn
ZVByb3h5KTsKLQotICAgIG5hdmlnYXRpb25TdGF0ZS5kaWROYXZpZ2F0ZVdpdGhOYXZpZ2F0aW9u
RGF0YShuYXZpZ2F0aW9uRGF0YVN0b3JlKTsKLX0KLQotdm9pZCBIaXN0b3J5Q2xpZW50OjpkaWRQ
ZXJmb3JtQ2xpZW50UmVkaXJlY3QoV2ViQ29udGV4dCosIFdlYlBhZ2VQcm94eSogd2ViUGFnZVBy
b3h5LCBjb25zdCBXVEY6OlN0cmluZyYgc291cmNlVVJMLCBjb25zdCBXVEY6OlN0cmluZyYgZGVz
dGluYXRpb25VUkwsIFdlYkZyYW1lUHJveHkqIHdlYkZyYW1lUHJveHkpCi17Ci0gICAgaWYgKCF3
ZWJGcmFtZVByb3h5LT5pc01haW5GcmFtZSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBhdXRv
JiBuYXZpZ2F0aW9uU3RhdGUgPSBOYXZpZ2F0aW9uU3RhdGU6OmZyb21XZWJQYWdlKCp3ZWJQYWdl
UHJveHkpOwotCi0gICAgbmF2aWdhdGlvblN0YXRlLmRpZFBlcmZvcm1DbGllbnRSZWRpcmVjdChz
b3VyY2VVUkwsIGRlc3RpbmF0aW9uVVJMKTsKLX0KLQotdm9pZCBIaXN0b3J5Q2xpZW50OjpkaWRQ
ZXJmb3JtU2VydmVyUmVkaXJlY3QoV2ViQ29udGV4dCosIFdlYlBhZ2VQcm94eSogd2ViUGFnZVBy
b3h5LCBjb25zdCBXVEY6OlN0cmluZyYgc291cmNlVVJMLCBjb25zdCBXVEY6OlN0cmluZyYgZGVz
dGluYXRpb25VUkwsIFdlYkZyYW1lUHJveHkqIHdlYkZyYW1lUHJveHkpCi17Ci0gICAgaWYgKCF3
ZWJGcmFtZVByb3h5LT5pc01haW5GcmFtZSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBhdXRv
JiBuYXZpZ2F0aW9uU3RhdGUgPSBOYXZpZ2F0aW9uU3RhdGU6OmZyb21XZWJQYWdlKCp3ZWJQYWdl
UHJveHkpOwotCi0gICAgbmF2aWdhdGlvblN0YXRlLmRpZFBlcmZvcm1TZXJ2ZXJSZWRpcmVjdChz
b3VyY2VVUkwsIGRlc3RpbmF0aW9uVVJMKTsKLX0KLQotdm9pZCBIaXN0b3J5Q2xpZW50OjpkaWRV
cGRhdGVIaXN0b3J5VGl0bGUoV2ViQ29udGV4dCosIFdlYlBhZ2VQcm94eSogd2ViUGFnZVByb3h5
LCBjb25zdCBXVEY6OlN0cmluZyYgdGl0bGUsIGNvbnN0IFdURjo6U3RyaW5nJiB1cmwsIFdlYkZy
YW1lUHJveHkqIHdlYkZyYW1lUHJveHkpCi17Ci0gICAgaWYgKCF3ZWJGcmFtZVByb3h5LT5pc01h
aW5GcmFtZSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBhdXRvJiBuYXZpZ2F0aW9uU3RhdGUg
PSBOYXZpZ2F0aW9uU3RhdGU6OmZyb21XZWJQYWdlKCp3ZWJQYWdlUHJveHkpOwotCi0gICAgbmF2
aWdhdGlvblN0YXRlLmRpZFVwZGF0ZUhpc3RvcnlUaXRsZSh0aXRsZSwgdXJsKTsKLX0KLQotdm9p
ZCBIaXN0b3J5Q2xpZW50Ojpwb3B1bGF0ZVZpc2l0ZWRMaW5rcyhXZWJDb250ZXh0KikKLXsKLX0K
LQotfSAvLyBuYW1lc3BhY2Ugd2ViS2l0Ci0KLSNlbmRpZiAvLyBXS19BUElfRU5BQkxFRApJbmRl
eDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUu
aAkocmV2aXNpb24gMTc3NjIzKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL05h
dmlnYXRpb25TdGF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02OCwxMiArNjgsNiBAQCBwdWJsaWM6
CiAgICAgUmV0YWluUHRyPFdLTmF2aWdhdGlvbj4gY3JlYXRlUmVsb2FkTmF2aWdhdGlvbih1aW50
NjRfdCBuYXZpZ2F0aW9uSUQpOwogICAgIFJldGFpblB0cjxXS05hdmlnYXRpb24+IGNyZWF0ZUxv
YWREYXRhTmF2aWdhdGlvbih1aW50NjRfdCBuYXZpZ2F0aW9uSUQpOwogCi0gICAgLy8gQ2FsbGVk
IGJ5IHRoZSBoaXN0b3J5IGNsaWVudC4KLSAgICB2b2lkIGRpZE5hdmlnYXRlV2l0aE5hdmlnYXRp
b25EYXRhKGNvbnN0IFdlYktpdDo6V2ViTmF2aWdhdGlvbkRhdGFTdG9yZSYpOwotICAgIHZvaWQg
ZGlkUGVyZm9ybUNsaWVudFJlZGlyZWN0KGNvbnN0IFdURjo6U3RyaW5nJiBzb3VyY2VVUkwsIGNv
bnN0IFdURjo6U3RyaW5nJiBkZXN0aW5hdGlvblVSTCk7Ci0gICAgdm9pZCBkaWRQZXJmb3JtU2Vy
dmVyUmVkaXJlY3QoY29uc3QgV1RGOjpTdHJpbmcmIHNvdXJjZVVSTCwgY29uc3QgV1RGOjpTdHJp
bmcmIGRlc3RpbmF0aW9uVVJMKTsKLSAgICB2b2lkIGRpZFVwZGF0ZUhpc3RvcnlUaXRsZShjb25z
dCBXVEY6OlN0cmluZyYgdGl0bGUsIGNvbnN0IFdURjo6U3RyaW5nJiB1cmwpOwotCiAgICAgLy8g
Q2FsbGVkIGJ5IHRoZSBwYWdlIGNsaWVudC4KICAgICB2b2lkIG5hdmlnYXRpb25HZXN0dXJlRGlk
QmVnaW4oKTsKICAgICB2b2lkIG5hdmlnYXRpb25HZXN0dXJlV2lsbEVuZChib29sIHdpbGxOYXZp
Z2F0ZSwgV2ViQmFja0ZvcndhcmRMaXN0SXRlbSYpOwpAQCAtMTE1LDExICsxMDksMTcgQEAgcHJp
dmF0ZToKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZUluRnJhbWUoV2ViS2l0OjpXZWJQYWdlUHJveHkqLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkq
LCBXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkqKSBvdmVycmlkZTsKICAgICAg
ICAgdmlydHVhbCB2b2lkIHByb2Nlc3NEaWRDcmFzaChXZWJLaXQ6OldlYlBhZ2VQcm94eSopIG92
ZXJyaWRlOwogICAgICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8QVBJOjpEYXRhPiB3ZWJDcnlwdG9N
YXN0ZXJLZXkoV2ViS2l0OjpXZWJQYWdlUHJveHkmKSBvdmVycmlkZTsKKwogI2lmIFVTRShRVUlD
S19MT09LKQogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkU3RhcnRMb2FkRm9yUXVpY2tMb29rRG9j
dW1lbnRJbk1haW5GcmFtZShjb25zdCBXVEY6OlN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IFdURjo6
U3RyaW5nJiB1dGkpIG92ZXJyaWRlOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9h
ZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUoY29uc3QgV2ViS2l0OjpRdWlja0xvb2tE
b2N1bWVudERhdGEmKSBvdmVycmlkZTsKICNlbmRpZgogCisgICAgICAgIHZpcnR1YWwgdm9pZCBk
aWROYXZpZ2F0ZVdpdGhOYXZpZ2F0aW9uRGF0YShXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIGNvbnN0
IFdlYktpdDo6V2ViTmF2aWdhdGlvbkRhdGFTdG9yZSYsIFdlYktpdDo6V2ViRnJhbWVQcm94eSYp
IG92ZXJyaWRlOworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUGVyZm9ybUNsaWVudFJlZGlyZWN0
KFdlYktpdDo6V2ViUGFnZVByb3h5JiwgY29uc3QgV1RGOjpTdHJpbmcmLCBjb25zdCBXVEY6OlN0
cmluZyYsIFdlYktpdDo6V2ViRnJhbWVQcm94eSYpIG92ZXJyaWRlOworICAgICAgICB2aXJ0dWFs
IHZvaWQgZGlkUGVyZm9ybVNlcnZlclJlZGlyZWN0KFdlYktpdDo6V2ViUGFnZVByb3h5JiwgY29u
c3QgV1RGOjpTdHJpbmcmLCBjb25zdCBXVEY6OlN0cmluZyYsIFdlYktpdDo6V2ViRnJhbWVQcm94
eSYpIG92ZXJyaWRlOworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkVXBkYXRlSGlzdG9yeVRpdGxl
KFdlYktpdDo6V2ViUGFnZVByb3h5JiwgY29uc3QgV1RGOjpTdHJpbmcmLCBjb25zdCBXVEY6OlN0
cmluZyYsIFdlYktpdDo6V2ViRnJhbWVQcm94eSYpIG92ZXJyaWRlOworCiAgICAgICAgIE5hdmln
YXRpb25TdGF0ZSYgbV9uYXZpZ2F0aW9uU3RhdGU7CiAgICAgfTsKIApJbmRleDogU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCShyZXZpc2lv
biAxNzc2MjMpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0
YXRlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yMDgsNTQgKzIwOCw2IEBAIFJldGFpblB0cjxXS05h
dmlnYXRpb24+IE5hdmlnYXRpb25TdGF0ZToKICAgICByZXR1cm4gbmF2aWdhdGlvbjsKIH0KIAot
dm9pZCBOYXZpZ2F0aW9uU3RhdGU6OmRpZE5hdmlnYXRlV2l0aE5hdmlnYXRpb25EYXRhKGNvbnN0
IFdlYktpdDo6V2ViTmF2aWdhdGlvbkRhdGFTdG9yZSYgbmF2aWdhdGlvbkRhdGFTdG9yZSkKLXsK
LSAgICBpZiAoIW1faGlzdG9yeURlbGVnYXRlTWV0aG9kcy53ZWJWaWV3RGlkTmF2aWdhdGVXaXRo
TmF2aWdhdGlvbkRhdGEpCi0gICAgICAgIHJldHVybjsKLQotICAgIGF1dG8gaGlzdG9yeURlbGVn
YXRlID0gbV9oaXN0b3J5RGVsZWdhdGUuZ2V0KCk7Ci0gICAgaWYgKCFoaXN0b3J5RGVsZWdhdGUp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIFtoaXN0b3J5RGVsZWdhdGUgX3dlYlZpZXc6bV93ZWJW
aWV3IGRpZE5hdmlnYXRlV2l0aE5hdmlnYXRpb25EYXRhOndyYXBwZXIoKkFQSTo6TmF2aWdhdGlv
bkRhdGE6OmNyZWF0ZShuYXZpZ2F0aW9uRGF0YVN0b3JlKSldOwotfQotCi12b2lkIE5hdmlnYXRp
b25TdGF0ZTo6ZGlkUGVyZm9ybUNsaWVudFJlZGlyZWN0KGNvbnN0IFdURjo6U3RyaW5nJiBzb3Vy
Y2VVUkwsIGNvbnN0IFdURjo6U3RyaW5nJiBkZXN0aW5hdGlvblVSTCkKLXsKLSAgICBpZiAoIW1f
aGlzdG9yeURlbGVnYXRlTWV0aG9kcy53ZWJWaWV3RGlkUGVyZm9ybUNsaWVudFJlZGlyZWN0RnJv
bVVSTFRvVVJMKQotICAgICAgICByZXR1cm47Ci0KLSAgICBhdXRvIGhpc3RvcnlEZWxlZ2F0ZSA9
IG1faGlzdG9yeURlbGVnYXRlLmdldCgpOwotICAgIGlmICghaGlzdG9yeURlbGVnYXRlKQotICAg
ICAgICByZXR1cm47Ci0KLSAgICBbaGlzdG9yeURlbGVnYXRlIF93ZWJWaWV3Om1fd2ViVmlldyBk
aWRQZXJmb3JtQ2xpZW50UmVkaXJlY3RGcm9tVVJMOltOU1VSTCBfd2ViX1VSTFdpdGhXVEZTdHJp
bmc6c291cmNlVVJMXSB0b1VSTDpbTlNVUkwgX3dlYl9VUkxXaXRoV1RGU3RyaW5nOmRlc3RpbmF0
aW9uVVJMXV07Ci19Ci0KLXZvaWQgTmF2aWdhdGlvblN0YXRlOjpkaWRQZXJmb3JtU2VydmVyUmVk
aXJlY3QoY29uc3QgV1RGOjpTdHJpbmcmIHNvdXJjZVVSTCwgY29uc3QgV1RGOjpTdHJpbmcmIGRl
c3RpbmF0aW9uVVJMKQotewotICAgIGlmICghbV9oaXN0b3J5RGVsZWdhdGVNZXRob2RzLndlYlZp
ZXdEaWRQZXJmb3JtU2VydmVyUmVkaXJlY3RGcm9tVVJMVG9VUkwpCi0gICAgICAgIHJldHVybjsK
LQotICAgIGF1dG8gaGlzdG9yeURlbGVnYXRlID0gbV9oaXN0b3J5RGVsZWdhdGUuZ2V0KCk7Ci0g
ICAgaWYgKCFoaXN0b3J5RGVsZWdhdGUpCi0gICAgICAgIHJldHVybjsKLQotICAgIFtoaXN0b3J5
RGVsZWdhdGUgX3dlYlZpZXc6bV93ZWJWaWV3IGRpZFBlcmZvcm1TZXJ2ZXJSZWRpcmVjdEZyb21V
Ukw6W05TVVJMIF93ZWJfVVJMV2l0aFdURlN0cmluZzpzb3VyY2VVUkxdIHRvVVJMOltOU1VSTCBf
d2ViX1VSTFdpdGhXVEZTdHJpbmc6ZGVzdGluYXRpb25VUkxdXTsKLX0KLQotdm9pZCBOYXZpZ2F0
aW9uU3RhdGU6OmRpZFVwZGF0ZUhpc3RvcnlUaXRsZShjb25zdCBXVEY6OlN0cmluZyYgdGl0bGUs
IGNvbnN0IFdURjo6U3RyaW5nJiB1cmwpCi17Ci0gICAgaWYgKCFtX2hpc3RvcnlEZWxlZ2F0ZU1l
dGhvZHMud2ViVmlld0RpZFVwZGF0ZUhpc3RvcnlUaXRsZUZvclVSTCkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgYXV0byBoaXN0b3J5RGVsZWdhdGUgPSBtX2hpc3RvcnlEZWxlZ2F0ZS5nZXQoKTsK
LSAgICBpZiAoIWhpc3RvcnlEZWxlZ2F0ZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgW2hpc3Rv
cnlEZWxlZ2F0ZSBfd2ViVmlldzptX3dlYlZpZXcgZGlkVXBkYXRlSGlzdG9yeVRpdGxlOnRpdGxl
IGZvclVSTDpbTlNVUkwgX3dlYl9VUkxXaXRoV1RGU3RyaW5nOnVybF1dOwotfQotCiB2b2lkIE5h
dmlnYXRpb25TdGF0ZTo6bmF2aWdhdGlvbkdlc3R1cmVEaWRCZWdpbigpCiB7CiAgICAgaWYgKCFt
X25hdmlnYXRpb25EZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0RpZEJlZ2luTmF2aWdhdGlvbkdlc3R1
cmUpCkBAIC04MDYsNiArNzU4LDY4IEBAIHZvaWQgTmF2aWdhdGlvblN0YXRlOjpMb2FkZXJDbGll
bnQ6OmRpZEYKIH0KICNlbmRpZgogCisvLyBIaXN0b3J5RGVsZWdhdGVQcml2YXRlIHN1cHBvcnQK
Kwordm9pZCBOYXZpZ2F0aW9uU3RhdGU6OkxvYWRlckNsaWVudDo6ZGlkTmF2aWdhdGVXaXRoTmF2
aWdhdGlvbkRhdGEoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBjb25zdCBXZWJLaXQ6OldlYk5hdmln
YXRpb25EYXRhU3RvcmUmIG5hdmlnYXRpb25EYXRhU3RvcmUsIFdlYktpdDo6V2ViRnJhbWVQcm94
eSYgd2ViRnJhbWVQcm94eSkKK3sKKyAgICBpZiAoIXdlYkZyYW1lUHJveHkuaXNNYWluRnJhbWUo
KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKCFtX25hdmlnYXRpb25TdGF0ZS5tX2hpc3Rv
cnlEZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0RpZE5hdmlnYXRlV2l0aE5hdmlnYXRpb25EYXRhKQor
ICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIGhpc3RvcnlEZWxlZ2F0ZSA9IG1fbmF2aWdhdGlv
blN0YXRlLm1faGlzdG9yeURlbGVnYXRlLmdldCgpOworICAgIGlmICghaGlzdG9yeURlbGVnYXRl
KQorICAgICAgICByZXR1cm47CisKKyAgICBbaGlzdG9yeURlbGVnYXRlIF93ZWJWaWV3Om1fbmF2
aWdhdGlvblN0YXRlLm1fd2ViVmlldyBkaWROYXZpZ2F0ZVdpdGhOYXZpZ2F0aW9uRGF0YTp3cmFw
cGVyKCpBUEk6Ok5hdmlnYXRpb25EYXRhOjpjcmVhdGUobmF2aWdhdGlvbkRhdGFTdG9yZSkpXTsK
K30KKwordm9pZCBOYXZpZ2F0aW9uU3RhdGU6OkxvYWRlckNsaWVudDo6ZGlkUGVyZm9ybUNsaWVu
dFJlZGlyZWN0KFdlYktpdDo6V2ViUGFnZVByb3h5JiwgY29uc3QgV1RGOjpTdHJpbmcmIHNvdXJj
ZVVSTCwgY29uc3QgV1RGOjpTdHJpbmcmIGRlc3RpbmF0aW9uVVJMLCBXZWJLaXQ6OldlYkZyYW1l
UHJveHkmIHdlYkZyYW1lUHJveHkpCit7CisgICAgaWYgKCF3ZWJGcmFtZVByb3h5LmlzTWFpbkZy
YW1lKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICghbV9uYXZpZ2F0aW9uU3RhdGUubV9o
aXN0b3J5RGVsZWdhdGVNZXRob2RzLndlYlZpZXdEaWRQZXJmb3JtQ2xpZW50UmVkaXJlY3RGcm9t
VVJMVG9VUkwpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gaGlzdG9yeURlbGVnYXRlID0g
bV9uYXZpZ2F0aW9uU3RhdGUubV9oaXN0b3J5RGVsZWdhdGUuZ2V0KCk7CisgICAgaWYgKCFoaXN0
b3J5RGVsZWdhdGUpCisgICAgICAgIHJldHVybjsKKworICAgIFtoaXN0b3J5RGVsZWdhdGUgX3dl
YlZpZXc6bV9uYXZpZ2F0aW9uU3RhdGUubV93ZWJWaWV3IGRpZFBlcmZvcm1DbGllbnRSZWRpcmVj
dEZyb21VUkw6W05TVVJMIF93ZWJfVVJMV2l0aFdURlN0cmluZzpzb3VyY2VVUkxdIHRvVVJMOltO
U1VSTCBfd2ViX1VSTFdpdGhXVEZTdHJpbmc6ZGVzdGluYXRpb25VUkxdXTsKK30KKwordm9pZCBO
YXZpZ2F0aW9uU3RhdGU6OkxvYWRlckNsaWVudDo6ZGlkUGVyZm9ybVNlcnZlclJlZGlyZWN0KFdl
YktpdDo6V2ViUGFnZVByb3h5JiwgY29uc3QgV1RGOjpTdHJpbmcmIHNvdXJjZVVSTCwgY29uc3Qg
V1RGOjpTdHJpbmcmIGRlc3RpbmF0aW9uVVJMLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkmIHdlYkZy
YW1lUHJveHkpCit7CisgICAgaWYgKCF3ZWJGcmFtZVByb3h5LmlzTWFpbkZyYW1lKCkpCisgICAg
ICAgIHJldHVybjsKKworICAgIGlmICghbV9uYXZpZ2F0aW9uU3RhdGUubV9oaXN0b3J5RGVsZWdh
dGVNZXRob2RzLndlYlZpZXdEaWRQZXJmb3JtU2VydmVyUmVkaXJlY3RGcm9tVVJMVG9VUkwpCisg
ICAgICAgIHJldHVybjsKKworICAgIGF1dG8gaGlzdG9yeURlbGVnYXRlID0gbV9uYXZpZ2F0aW9u
U3RhdGUubV9oaXN0b3J5RGVsZWdhdGUuZ2V0KCk7CisgICAgaWYgKCFoaXN0b3J5RGVsZWdhdGUp
CisgICAgICAgIHJldHVybjsKKworICAgIFtoaXN0b3J5RGVsZWdhdGUgX3dlYlZpZXc6bV9uYXZp
Z2F0aW9uU3RhdGUubV93ZWJWaWV3IGRpZFBlcmZvcm1TZXJ2ZXJSZWRpcmVjdEZyb21VUkw6W05T
VVJMIF93ZWJfVVJMV2l0aFdURlN0cmluZzpzb3VyY2VVUkxdIHRvVVJMOltOU1VSTCBfd2ViX1VS
TFdpdGhXVEZTdHJpbmc6ZGVzdGluYXRpb25VUkxdXTsKK30KKwordm9pZCBOYXZpZ2F0aW9uU3Rh
dGU6OkxvYWRlckNsaWVudDo6ZGlkVXBkYXRlSGlzdG9yeVRpdGxlKFdlYktpdDo6V2ViUGFnZVBy
b3h5JiwgY29uc3QgV1RGOjpTdHJpbmcmIHRpdGxlLCBjb25zdCBXVEY6OlN0cmluZyYgdXJsLCBX
ZWJLaXQ6OldlYkZyYW1lUHJveHkmIHdlYkZyYW1lUHJveHkpCit7CisgICAgaWYgKCF3ZWJGcmFt
ZVByb3h5LmlzTWFpbkZyYW1lKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICghbV9uYXZp
Z2F0aW9uU3RhdGUubV9oaXN0b3J5RGVsZWdhdGVNZXRob2RzLndlYlZpZXdEaWRVcGRhdGVIaXN0
b3J5VGl0bGVGb3JVUkwpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gaGlzdG9yeURlbGVn
YXRlID0gbV9uYXZpZ2F0aW9uU3RhdGUubV9oaXN0b3J5RGVsZWdhdGUuZ2V0KCk7CisgICAgaWYg
KCFoaXN0b3J5RGVsZWdhdGUpCisgICAgICAgIHJldHVybjsKKworICAgIFtoaXN0b3J5RGVsZWdh
dGUgX3dlYlZpZXc6bV9uYXZpZ2F0aW9uU3RhdGUubV93ZWJWaWV3IGRpZFVwZGF0ZUhpc3RvcnlU
aXRsZTp0aXRsZSBmb3JVUkw6W05TVVJMIF93ZWJfVVJMV2l0aFdURlN0cmluZzp1cmxdXTsKK30K
Kwogdm9pZCBOYXZpZ2F0aW9uU3RhdGU6OndpbGxDaGFuZ2VJc0xvYWRpbmcoKQogewogICAgIFtt
X3dlYlZpZXcgd2lsbENoYW5nZVZhbHVlRm9yS2V5OkAibG9hZGluZyJdOwpJbmRleDogU291cmNl
L1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNp
b24gMTc3NjIzKQorKysgU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0yMzEsOCArMjMxLDYgQEAKIAkJMUEzRUVEMEYxNjFB
NTM1NDAwQUVCNEY1IC8qIE1lc3NhZ2VSZWNlaXZlck1hcC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUEzRUVEMEQxNjFBNTM1MzAwQUVCNEY1IC8qIE1l
c3NhZ2VSZWNlaXZlck1hcC5oICovOyB9OwogCQkxQTNFRUQxMjE2MUE1M0Q2MDBBRUI0RjUgLyog
TWVzc2FnZVJlY2VpdmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAxQTNFRUQxMTE2MUE1M0Q2MDBBRUI0RjUgLyogTWVzc2FnZVJlY2VpdmVyLmggKi87
IH07CiAJCTFBNDIyRjhCMThCMjlCNTQwMEQ4Q0Q5NiAvKiBXS0hpc3RvcnlEZWxlZ2F0ZVByaXZh
dGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBNDIy
RjhBMThCMjlCNTQwMEQ4Q0Q5NiAvKiBXS0hpc3RvcnlEZWxlZ2F0ZVByaXZhdGUuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQkxQTQyMkY4RTE4QjI5
QzY0MDBEOENEOTYgLyogSGlzdG9yeUNsaWVudC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBNDIyRjhDMThCMjlDNjQwMEQ4Q0Q5NiAvKiBIaXN0b3J5
Q2xpZW50Lm1tICovOyB9OwotCQkxQTQyMkY4RjE4QjI5QzY0MDBEOENEOTYgLyogSGlzdG9yeUNs
aWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUE0
MjJGOEQxOEIyOUM2NDAwRDhDRDk2IC8qIEhpc3RvcnlDbGllbnQuaCAqLzsgfTsKIAkJMUE0MzNG
MEQxMTNDNTNERDAwRkFDREU5IC8qIFdlYkVycm9ycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUE0MzNGMEMxMTNDNTNERDAwRkFDREU5IC8qIFdlYkVy
cm9ycy5oICovOyB9OwogCQkxQTQzRTgyOTE4OEYzQ0RDMDA5RTREMzAgLyogX1dLUHJvY2Vzc1Bv
b2xDb25maWd1cmF0aW9uLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMUE0M0U4MjcxODhGM0NEQzAwOUU0RDMwIC8qIF9XS1Byb2Nlc3NQb29sQ29uZmln
dXJhdGlvbi5tbSAqLzsgfTsKIAkJMUE0M0U4MkExODhGM0NEQzAwOUU0RDMwIC8qIF9XS1Byb2Nl
c3NQb29sQ29uZmlndXJhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMUE0M0U4MjgxODhGM0NEQzAwOUU0RDMwIC8qIF9XS1Byb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CkBAIC0yNzcsNyArMjc1LDYgQEAKIAkJMUE2NDI0NUUxMkRFMjlBMTAwQ0FBRTJDIC8qIFVw
ZGF0ZUluZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDFBNjQyNDVDMTJERTI5QTEwMENBQUUyQyAvKiBVcGRhdGVJbmZvLmggKi87IH07CiAJCTFBNjQy
NDVGMTJERTI5QTEwMENBQUUyQyAvKiBVcGRhdGVJbmZvLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBNjQyNDVEMTJERTI5QTEwMENBQUUyQyAvKiBV
cGRhdGVJbmZvLmNwcCAqLzsgfTsKIAkJMUE2NTA5Q0UxOEI0MTQ2MjAwNjE0MzMyIC8qIFdLUHJv
Y2Vzc1Bvb2xQcml2YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAxQTY1MDlDRDE4QjQxNDYyMDA2MTQzMzIgLyogV0tQcm9jZXNzUG9vbFByaXZhdGUu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQkxQTY2
MzdENzE4QjI4MzFGMDBDMEJDRjMgLyogQVBJSGlzdG9yeUNsaWVudC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUE2NjM3RDYxOEIyODMxRjAwQzBCQ0Yz
IC8qIEFQSUhpc3RvcnlDbGllbnQuaCAqLzsgfTsKIAkJMUE2NkJGOEYxOEEwNTJFRDAwMjA3MUI0
IC8qIFdLV2ViVmlld0ludGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAxQTY2QkY4RTE4QTA1MkVEMDAyMDcxQjQgLyogV0tXZWJWaWV3SW50ZXJu
YWwuaCAqLzsgfTsKIAkJMUE2RjlGOTAxMUUxM0VGQzAwREIxMzcxIC8qIENvbW1hbmRMaW5lLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTZGOUY4RTEx
RTEzRUZDMDBEQjEzNzEgLyogQ29tbWFuZExpbmUuaCAqLzsgfTsKIAkJMUE2RjlGQjcxMUUxNDA4
NTAwREIxMzcxIC8qIENvbW1hbmRMaW5lUE9TSVguY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUE2RjlGQjYxMUUxNDA4NTAwREIxMzcxIC8qIENvbW1h
bmRMaW5lUE9TSVguY3BwICovOyB9OwpAQCAtMTA4MSw2ICsxMDc4LDcgQEAKIAkJN0NENUVCQkYx
NzQ2QjA0QzAwMEMxQzQ1IC8qIFdLVHlwZVJlZldyYXBwZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDRDVFQkJEMTc0NkIwNEMwMDBDMUM0NSAvKiBX
S1R5cGVSZWZXcmFwcGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJN0NENjIyNzcxNzM5RDg2MzAwNUJEN0ZGIC8qIFBsdWdpblNhbmRib3hQcm9m
aWxlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0NE
NjIyNzUxNzM5RDg2MzAwNUJEN0ZGIC8qIFBsdWdpblNhbmRib3hQcm9maWxlLm1tICovOyB9Owog
CQk3Q0Q2MjI3ODE3MzlEODYzMDA1QkQ3RkYgLyogUGx1Z2luU2FuZGJveFByb2ZpbGUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDRDYyMjc2MTczOUQ4
NjMwMDVCRDdGRiAvKiBQbHVnaW5TYW5kYm94UHJvZmlsZS5oICovOyB9OworCQk3Q0U0RDIwNzFB
NDY3NzYxMDBDN0YxNTIgLyogQVBJTGVnYWN5Q29udGV4dEhpc3RvcnlDbGllbnQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDRTREMjA2MUE0Njc3NTcw
MEM3RjE1MiAvKiBBUElMZWdhY3lDb250ZXh0SGlzdG9yeUNsaWVudC5oICovOyB9OwogCQk3Q0Y0
N0ZGNjE3Mjc1QjcxMDA4QUNCOTEgLyogV0tCdW5kbGVQYWdlQmFubmVyLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDRjQ3RkY0MTcyNzVCNzEwMDhB
Q0I5MSAvKiBXS0J1bmRsZVBhZ2VCYW5uZXIuY3BwICovOyB9OwogCQk3Q0Y0N0ZGNzE3Mjc1Qjcx
MDA4QUNCOTEgLyogV0tCdW5kbGVQYWdlQmFubmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Q0Y0N0ZGNTE3Mjc1QjcxMDA4QUNCOTEgLyogV0tCdW5k
bGVQYWdlQmFubmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJN0NGNDdGRkIxNzI3NUM1NzAwOEFDQjkxIC8qIFBhZ2VCYW5uZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDRjQ3RkY5MTcyNzVDNTcw
MDhBQ0I5MSAvKiBQYWdlQmFubmVyLmggKi87IH07CkBAIC0yMjI2LDggKzIyMjQsNiBAQAogCQkx
QTNFRUQwRDE2MUE1MzUzMDBBRUI0RjUgLyogTWVzc2FnZVJlY2VpdmVyTWFwLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lc3NhZ2VSZWNlaXZlck1hcC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkxQTNFRUQxMTE2MUE1M0Q2MDBBRUI0RjUgLyogTWVzc2FnZVJl
Y2VpdmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lc3NhZ2VSZWNlaXZl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQTQyMkY4QTE4QjI5QjU0MDBEOENE
OTYgLyogV0tIaXN0b3J5RGVsZWdhdGVQcml2YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdLSGlzdG9yeURlbGVnYXRlUHJpdmF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQkxQTQyMkY4QzE4QjI5QzY0MDBEOENEOTYgLyogSGlzdG9yeUNsaWVudC5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEhpc3RvcnlDbGllbnQubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFBNDIyRjhEMThCMjlDNjQwMEQ4Q0Q5NiAv
KiBIaXN0b3J5Q2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhpc3Rv
cnlDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUE0MzNGMEMxMTNDNTNE
RDAwRkFDREU5IC8qIFdlYkVycm9ycy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXZWJFcnJvcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUE0M0U4MjcxODhG
M0NEQzAwOUU0RDMwIC8qIF9XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IF9XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlv
bi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUE0M0U4MjgxODhGM0NEQzAwOUU0
RDMwIC8qIF9XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTIyODAsNyArMjI3Niw2IEBACiAJCTFBNjQyNDVDMTJERTI5QTEw
MENBQUUyQyAvKiBVcGRhdGVJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFVwZGF0ZUluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUE2NDI0NUQxMkRF
MjlBMTAwQ0FBRTJDIC8qIFVwZGF0ZUluZm8uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gVXBkYXRlSW5mby5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTFBNjUwOUNEMThCNDE0NjIwMDYxNDMzMiAvKiBXS1Byb2Nlc3NQb29sUHJpdmF0ZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS1Byb2Nlc3NQb29sUHJpdmF0ZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQTY2MzdENjE4QjI4MzFGMDBDMEJDRjMgLyogQVBJ
SGlzdG9yeUNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBUElIaXN0
b3J5Q2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBNjZCRjhFMThBMDUy
RUQwMDIwNzFCNCAvKiBXS1dlYlZpZXdJbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXS1dlYlZpZXdJbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkxQTZGOUY4RTExRTEzRUZDMDBEQjEzNzEgLyogQ29tbWFuZExpbmUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29tbWFuZExpbmUuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMUE2RjlGQjYxMUUxNDA4NTAwREIxMzcxIC8qIENvbW1hbmRMaW5lUE9TSVgu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ29tbWFuZExpbmVQT1NJ
WC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zMTc2LDYgKzMxNzEsNyBAQAog
CQk3Q0Q1RUJCRDE3NDZCMDRDMDAwQzFDNDUgLyogV0tUeXBlUmVmV3JhcHBlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS1R5cGVSZWZXcmFwcGVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTdDRDYyMjc1MTczOUQ4NjMwMDVCRDdGRiAvKiBQbHVnaW5TYW5k
Ym94UHJvZmlsZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFBs
dWdpblNhbmRib3hQcm9maWxlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3Q0Q2
MjI3NjE3MzlEODYzMDA1QkQ3RkYgLyogUGx1Z2luU2FuZGJveFByb2ZpbGUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGx1Z2luU2FuZGJveFByb2ZpbGUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0NFNEQyMDYxQTQ2Nzc1NzAwQzdGMTUyIC8qIEFQSUxlZ2Fj
eUNvbnRleHRIaXN0b3J5Q2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFQSUxlZ2FjeUNvbnRleHRI
aXN0b3J5Q2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDRjQ3RkY0MTcy
NzVCNzEwMDhBQ0I5MSAvKiBXS0J1bmRsZVBhZ2VCYW5uZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gV0tCdW5kbGVQYWdlQmFubmVyLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJN0NGNDdGRjUxNzI3NUI3MTAwOEFDQjkxIC8qIFdLQnVuZGxlUGFn
ZUJhbm5lci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0J1bmRsZVBhZ2VC
YW5uZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0NGNDdGRjkxNzI3NUM1NzAw
OEFDQjkxIC8qIFBhZ2VCYW5uZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UGFnZUJhbm5lci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDcxMiw4ICs0NzA4
LDYgQEAKIAkJCQlBMURGNjMxMDE4RTBCN0M4MDAzQTNFMkEgLyogRG93bmxvYWRDbGllbnQubW0g
Ki8sCiAJCQkJMDBCOTY2MTgxOEUyNUFFMTAwQ0UxRjg4IC8qIEZpbmRDbGllbnQuaCAqLywKIAkJ
CQkwMEI5NjYxNzE4RTI1QUUxMDBDRTFGODggLyogRmluZENsaWVudC5tbSAqLywKLQkJCQkxQTQy
MkY4RDE4QjI5QzY0MDBEOENEOTYgLyogSGlzdG9yeUNsaWVudC5oICovLAotCQkJCTFBNDIyRjhD
MThCMjlDNjQwMEQ4Q0Q5NiAvKiBIaXN0b3J5Q2xpZW50Lm1tICovLAogCQkJCTBGMEMzNjU5MThD
MDU1NTgwMEY2MDdENyAvKiBMYXllclJlcHJlc2VudGF0aW9uLmggKi8sCiAJCQkJMUFCQzNERjQx
ODk5RTQzNzAwNEYwNjI2IC8qIE5hdmlnYXRpb25TdGF0ZS5oICovLAogCQkJCTFBQkMzREYzMTg5
OUU0MzcwMDRGMDYyNiAvKiBOYXZpZ2F0aW9uU3RhdGUubW0gKi8sCkBAIC02MDQ0LDcgKzYwMzgs
NyBAQAogCQkJCTFGN0QzNkMwMThEQTUxM0YwMEQ5RDY1OSAvKiBBUElEb3dubG9hZENsaWVudC5o
ICovLAogCQkJCTAwQjk2NjE1MThFMjRDQkEwMENFMUY4OCAvKiBBUElGaW5kQ2xpZW50LmggKi8s
CiAJCQkJMzdFMjVENkQxOEZERTVENjAwNUQzQTAwIC8qIEFQSUZvcm1DbGllbnQuaCAqLywKLQkJ
CQkxQTY2MzdENjE4QjI4MzFGMDBDMEJDRjMgLyogQVBJSGlzdG9yeUNsaWVudC5oICovLAorCQkJ
CTdDRTREMjA2MUE0Njc3NTcwMEM3RjE1MiAvKiBBUElMZWdhY3lDb250ZXh0SGlzdG9yeUNsaWVu
dC5oICovLAogCQkJCTFBMjQ2NEYyMTg5MUU0NTEwMDIzNEM1QiAvKiBBUElMb2FkZXJDbGllbnQu
aCAqLywKIAkJCQkxQUZERDMxNDE4OTFCNTQwMDAxNTM5NzAgLyogQVBJUG9saWN5Q2xpZW50Lmgg
Ki8sCiAJCQkJMUFGREU2NUYxOTU0RTlCMTAwQzQ4RkZBIC8qIEFQSVNlc3Npb25TdGF0ZS5jcHAg
Ki8sCkBAIC03MjczLDcgKzcyNjcsNiBAQAogCQkJCTFBQkMzREYxMTg5OUM2QjYwMDRGMDYyNiAv
KiBXS05hdmlnYXRpb25JbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYwQzM2NUExOEMw
NTU1ODAwRjYwN0Q3IC8qIExheWVyUmVwcmVzZW50YXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJ
CTFGNjA0QkE4MTg4OUZBNzQwMEVFMDM5NSAvKiBXS1JlbmRlcmluZ1Byb2dyZXNzRXZlbnRzLmgg
aW4gSGVhZGVycyAqLywKLQkJCQkxQTQyMkY4RjE4QjI5QzY0MDBEOENEOTYgLyogSGlzdG9yeUNs
aWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNCQUFDRUIxNDUyMjVFMzAwNTNGODJGIC8qIFdL
UHJvY2Vzc0dyb3VwLmggaW4gSGVhZGVycyAqLywKIAkJCQkyREFGMDZENjE4QkQxQTQ3MDA4MUNF
QjEgLyogU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
Mzc3RUFENDgxN0UyQzc3QjAwMkQxOTNEIC8qIFdLVXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcy5o
IGluIEhlYWRlcnMgKi8sCkBAIC03MzU2LDcgKzczNDksNiBAQAogCQkJCTkzNUVFQkEyMTI3NzYx
RDAwMDMzMjJCOCAvKiBJbmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJOTM1RUVCQTQxMjc3NjFENjAwMzMyMkI4IC8qIEluamVjdGVkQnVuZGxlQmFja0Zv
cndhcmRMaXN0SXRlbS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTE2NEEyRjIxOTFBRjE0RTAwMTA3
MzdEIC8qIEJsb2JEYXRhRmlsZVJlZmVyZW5jZVdpdGhTYW5kYm94RXh0ZW5zaW9uLmggaW4gSGVh
ZGVycyAqLywKLQkJCQkxQTY2MzdENzE4QjI4MzFGMDBDMEJDRjMgLyogQVBJSGlzdG9yeUNsaWVu
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNFRTdEQzUxMjhCNjQ1RDAwOTgyN0RBIC8qIEluamVj
dGVkQnVuZGxlQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzQ5ODYxODEyNEQxMEUyMDBE
ODM0RTEgLyogSW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0LmggaW4gSGVhZGVycyAqLywKIAkJ
CQkyRERGNzMxNTE4RTk1MDYwMDA0RjVBNjYgLyogUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmVDb2xs
ZWN0aW9uLmggaW4gSGVhZGVycyAqLywKQEAgLTc2MzEsNiArNzYyMyw3IEBACiAJCQkJMzMwOTM0
NTAxMzE1Qjk0RDAwOTdBN0JDIC8qIFdlYkNvb2tpZU1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCTMzMDkzNDQ4MTMxNUI5MjIwMDk3QTdCQyAvKiBXZWJDb29raWVNYW5hZ2VyTWVzc2FnZXMu
aCBpbiBIZWFkZXJzICovLAogCQkJCTMzMDkzNDU2MTMxNUI5NzUwMDk3QTdCQyAvKiBXZWJDb29r
aWVNYW5hZ2VyUHJveHkuaCBpbiBIZWFkZXJzICovLAorCQkJCTdDRTREMjA3MUE0Njc3NjEwMEM3
RjE1MiAvKiBBUElMZWdhY3lDb250ZXh0SGlzdG9yeUNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNTE1RTc3MkMxODQwMDhCOTAwMDcyMDNGIC8qIERhdGFiYXNlUHJvY2Vzc0NyZWF0aW9uUGFy
YW1ldGVycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzNBQTEwNjcxMzFGMDYwMDAwRDRBNTc1IC8q
IFdlYkNvb2tpZU1hbmFnZXJQcm94eUNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzMwOTM0
NEExMzE1QjkyMjAwOTdBN0JDIC8qIFdlYkNvb2tpZU1hbmFnZXJQcm94eU1lc3NhZ2VzLmggaW4g
SGVhZGVycyAqLywKQEAgLTkzNTYsNyArOTM0OSw2IEBACiAJCQkJQ0Q3M0JBNTMxMzFCNjQ1QjAw
RUVERUQyIC8qIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTc1
NTQyMkJEMTgwNjJCQjIwMDQ2RjZBOCAvKiBXS09yaWdpbkRhdGFNYW5hZ2VyLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUNENzNCQTRFMTMxQUNEQjcwMEVFREVEMiAvKiBXZWJGdWxsU2NyZWVuTWFu
YWdlck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKLQkJCQkxQTQyMkY4RTE4QjI5
QzY0MDBEOENEOTYgLyogSGlzdG9yeUNsaWVudC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTFGQjAw
QUM4MTg1Rjc2NDYwMDE5MTQyRSAvKiBXS1dlYlByb2Nlc3NQbHVnSW5QYWdlR3JvdXAubW0gaW4g
U291cmNlcyAqLywKIAkJCQlDRDZGNzVGNDEzMUI2NkQwMDBENkIyMUUgLyogV2ViRnVsbFNjcmVl
bk1hbmFnZXJQcm94eS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUQ2MEY1RDE4RTIwRjRDMDAy
MEMwMzQgLyogV0tXaW5kb3dGZWF0dXJlcy5tbSBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAJKHJldmlzaW9uIDE3NzYyMykKKysrIFNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC01MSw3ICs1MSw2IEBACiAjaW5jbHVkZSAiV2ViUGFnZS5oIgog
I2luY2x1ZGUgIldlYlBhZ2VQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5o
IgotI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvQVBJQ2FzdC5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTT2JqZWN0Lmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9DZXJ0aWZpY2F0ZUluZm8uaD4KQEAgLTk1NCw3ICs5NTMsNyBA
QCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojp1cGRhdGVHbG9iYWxICiAgICAgZGF0YS5vcmln
aW5hbFJlcXVlc3QgPSBsb2FkZXItPm9yaWdpbmFsUmVxdWVzdENvcHkoKTsKICAgICBkYXRhLnJl
c3BvbnNlID0gbG9hZGVyLT5yZXNwb25zZSgpOwogCi0gICAgV2ViUHJvY2Vzczo6c2hhcmVkKCku
cGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5
OjpEaWROYXZpZ2F0ZVdpdGhOYXZpZ2F0aW9uRGF0YSh3ZWJQYWdlLT5wYWdlSUQoKSwgZGF0YSwg
bV9mcmFtZS0+ZnJhbWVJRCgpKSwgMCk7CisgICAgd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZVByb3h5OjpEaWROYXZpZ2F0ZVdpdGhOYXZpZ2F0aW9uRGF0YShkYXRhLCBtX2ZyYW1lLT5m
cmFtZUlEKCkpKTsKIH0KIAogdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6dXBkYXRlR2xvYmFs
SGlzdG9yeVJlZGlyZWN0TGlua3MoKQpAQCAtOTY4LDE0ICs5NjcsMTQgQEAgdm9pZCBXZWJGcmFt
ZUxvYWRlckNsaWVudDo6dXBkYXRlR2xvYmFsSAogCiAgICAgLy8gQ2xpZW50IHJlZGlyZWN0CiAg
ICAgaWYgKCFsb2FkZXItPmNsaWVudFJlZGlyZWN0U291cmNlRm9ySGlzdG9yeSgpLmlzTnVsbCgp
KSB7Ci0gICAgICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9u
KCktPnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6RGlkUGVyZm9ybUNsaWVudFJlZGly
ZWN0KHdlYlBhZ2UtPnBhZ2VJRCgpLAotICAgICAgICAgICAgbG9hZGVyLT5jbGllbnRSZWRpcmVj
dFNvdXJjZUZvckhpc3RvcnkoKSwgbG9hZGVyLT5jbGllbnRSZWRpcmVjdERlc3RpbmF0aW9uRm9y
SGlzdG9yeSgpLCBtX2ZyYW1lLT5mcmFtZUlEKCkpLCAwKTsKKyAgICAgICAgd2ViUGFnZS0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRQZXJmb3JtQ2xpZW50UmVkaXJlY3QoCisgICAg
ICAgICAgICBsb2FkZXItPmNsaWVudFJlZGlyZWN0U291cmNlRm9ySGlzdG9yeSgpLCBsb2FkZXIt
PmNsaWVudFJlZGlyZWN0RGVzdGluYXRpb25Gb3JIaXN0b3J5KCksIG1fZnJhbWUtPmZyYW1lSUQo
KSkpOwogICAgIH0KIAogICAgIC8vIFNlcnZlciByZWRpcmVjdAogICAgIGlmICghbG9hZGVyLT5z
ZXJ2ZXJSZWRpcmVjdFNvdXJjZUZvckhpc3RvcnkoKS5pc051bGwoKSkgewotICAgICAgICBXZWJQ
cm9jZXNzOjpzaGFyZWQoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQcm9jZXNzUHJveHk6OkRpZFBlcmZvcm1TZXJ2ZXJSZWRpcmVjdCh3ZWJQYWdlLT5wYWdl
SUQoKSwKLSAgICAgICAgICAgIGxvYWRlci0+c2VydmVyUmVkaXJlY3RTb3VyY2VGb3JIaXN0b3J5
KCksIGxvYWRlci0+c2VydmVyUmVkaXJlY3REZXN0aW5hdGlvbkZvckhpc3RvcnkoKSwgbV9mcmFt
ZS0+ZnJhbWVJRCgpKSwgMCk7CisgICAgICAgIHdlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6RGlkUGVyZm9ybVNlcnZlclJlZGlyZWN0KAorICAgICAgICAgICAgbG9hZGVyLT5z
ZXJ2ZXJSZWRpcmVjdFNvdXJjZUZvckhpc3RvcnkoKSwgbG9hZGVyLT5zZXJ2ZXJSZWRpcmVjdERl
c3RpbmF0aW9uRm9ySGlzdG9yeSgpLCBtX2ZyYW1lLT5mcmFtZUlEKCkpKTsKICAgICB9CiB9CiAK
QEAgLTEyMDYsOCArMTIwNSw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnNldFRpdGxl
KGNvbnMKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gRklYTUU6IHVzZSBkaXJlY3Rpb24gb2Yg
dGl0bGUuCi0gICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24o
KS0+c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpEaWRVcGRhdGVIaXN0b3J5VGl0bGUo
d2ViUGFnZS0+cGFnZUlEKCksCi0gICAgICAgIHRpdGxlLnN0cmluZygpLCB1cmwuc3RyaW5nKCks
IG1fZnJhbWUtPmZyYW1lSUQoKSksIDApOworICAgIHdlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2VQcm94eTo6RGlkVXBkYXRlSGlzdG9yeVRpdGxlKHRpdGxlLnN0cmluZygpLCB1cmwuc3Ry
aW5nKCksIG1fZnJhbWUtPmZyYW1lSUQoKSkpOwogfQogCiBTdHJpbmcgV2ViRnJhbWVMb2FkZXJD
bGllbnQ6OnVzZXJBZ2VudChjb25zdCBVUkwmIHVybCkK
</data>
<flag name="review"
          id="268514"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>