<?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>188997</bug_id>
          
          <creation_ts>2018-08-27 11:51:08 -0700</creation_ts>
          <short_desc>Remove most of LoaderClient</short_desc>
          <delta_ts>2018-09-06 03:48:01 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=189233</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>fujii</cc>
    
    <cc>mitz</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1454012</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-08-27 11:51:08 -0700</bug_when>
    <thetext>Remove most of LoaderClient</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1454013</commentid>
    <comment_count>1</comment_count>
      <attachid>348179</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-08-27 11:54:08 -0700</bug_when>
    <thetext>Created attachment 348179
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1454019</commentid>
    <comment_count>2</comment_count>
      <attachid>348182</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-08-27 12:06:46 -0700</bug_when>
    <thetext>Created attachment 348182
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1454071</commentid>
    <comment_count>3</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-08-27 14:00:58 -0700</bug_when>
    <thetext>http://trac.webkit.org/r235398</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1454072</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-08-27 14:01:24 -0700</bug_when>
    <thetext>&lt;rdar://problem/43768177&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1454130</commentid>
    <comment_count>5</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-08-27 15:23:15 -0700</bug_when>
    <thetext>http://trac.webkit.org/r235405</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1454195</commentid>
    <comment_count>6</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-08-27 16:29:54 -0700</bug_when>
    <thetext>http://trac.webkit.org/r235407</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1456065</commentid>
    <comment_count>7</comment_count>
    <who name="">mitz</who>
    <bug_when>2018-09-02 10:13:10 -0700</bug_when>
    <thetext>(In reply to Alex Christensen from comment #3)
&gt; http://trac.webkit.org/r235398

This caused bug 189233.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1457022</commentid>
    <comment_count>8</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2018-09-06 03:48:01 -0700</bug_when>
    <thetext>Filed another issue:

Bug 189336 – [WinCairo][MiniBrowser][WebKit] REGRESSION(r235398): ASSERTION FAILED: !m_client.didReceiveTitleForFrame</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>348179</attachid>
            <date>2018-08-27 11:54:08 -0700</date>
            <delta_ts>2018-08-27 12:06:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-188997-20180827115407.patch</filename>
            <type>text/plain</type>
            <size>41224</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMzUzODkpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg0IEBACisyMDE4LTA4LTI3ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVtb3ZlIG1vc3Qg
b2YgTG9hZGVyQ2xpZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xODg5OTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBXZSBzdGlsbCBoYXZlIGEgZmV3IGNsaWVudHMgdXNpbmcgYmFzaWMgZnVuY3Rpb25h
bGl0eSB0aGF0IGFyZSB0cmFuc2l0aW9uaW5nIHRvIFdLUGFnZU5hdmlnYXRpb25DbGllbnQsCisg
ICAgICAgIGJ1dCBtb3N0IG9mIGl0IGNhbiBiZSByZW1vdmVkLgorCisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9BUElMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKEFQSTo6TG9hZGVyQ2xpZW50Ojp+
TG9hZGVyQ2xpZW50KToKKyAgICAgICAgKEFQSTo6TG9hZGVyQ2xpZW50OjpkaWRGYWlsUHJvdmlz
aW9uYWxMb2FkV2l0aEVycm9yRm9yRnJhbWUpOgorICAgICAgICAoQVBJOjpMb2FkZXJDbGllbnQ6
OmRpZEZhaWxMb2FkV2l0aEVycm9yRm9yRnJhbWUpOgorICAgICAgICAoQVBJOjpMb2FkZXJDbGll
bnQ6OmRpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZvckZyYW1lKToKKyAgICAgICAgKEFQ
STo6TG9hZGVyQ2xpZW50OjpkaWRSZWFjaExheW91dE1pbGVzdG9uZSk6CisgICAgICAgIChBUEk6
OkxvYWRlckNsaWVudDo6c2hvdWxkS2VlcEN1cnJlbnRCYWNrRm9yd2FyZExpc3RJdGVtSW5MaXN0
KToKKyAgICAgICAgKEFQSTo6TG9hZGVyQ2xpZW50OjpkaWRDb21taXRMb2FkRm9yRnJhbWUpOiBE
ZWxldGVkLgorICAgICAgICAoQVBJOjpMb2FkZXJDbGllbnQ6OmRpZEZpbmlzaERvY3VtZW50TG9h
ZEZvckZyYW1lKTogRGVsZXRlZC4KKyAgICAgICAgKEFQSTo6TG9hZGVyQ2xpZW50OjpkaWRTYW1l
RG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJhbWUpOiBEZWxldGVkLgorICAgICAgICAoQVBJOjpMb2Fk
ZXJDbGllbnQ6OmRpZFJlY2VpdmVUaXRsZUZvckZyYW1lKTogRGVsZXRlZC4KKyAgICAgICAgKEFQ
STo6TG9hZGVyQ2xpZW50OjpkaWRGaXJzdExheW91dEZvckZyYW1lKTogRGVsZXRlZC4KKyAgICAg
ICAgKEFQSTo6TG9hZGVyQ2xpZW50OjpkaWREaXNwbGF5SW5zZWN1cmVDb250ZW50Rm9yRnJhbWUp
OiBEZWxldGVkLgorICAgICAgICAoQVBJOjpMb2FkZXJDbGllbnQ6OmRpZFJ1bkluc2VjdXJlQ29u
dGVudEZvckZyYW1lKTogRGVsZXRlZC4KKyAgICAgICAgKEFQSTo6TG9hZGVyQ2xpZW50OjpkaWRE
ZXRlY3RYU1NGb3JGcmFtZSk6IERlbGV0ZWQuCisgICAgICAgIChBUEk6OkxvYWRlckNsaWVudDo6
ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlSW5GcmFtZSk6IERlbGV0ZWQuCisgICAg
ICAgIChBUEk6OkxvYWRlckNsaWVudDo6ZGlkU3RhcnRQcm9ncmVzcyk6IERlbGV0ZWQuCisgICAg
ICAgIChBUEk6OkxvYWRlckNsaWVudDo6ZGlkQ2hhbmdlUHJvZ3Jlc3MpOiBEZWxldGVkLgorICAg
ICAgICAoQVBJOjpMb2FkZXJDbGllbnQ6OmRpZEZpbmlzaFByb2dyZXNzKTogRGVsZXRlZC4KKyAg
ICAgICAgKEFQSTo6TG9hZGVyQ2xpZW50Ojpwcm9jZXNzRGlkQmVjb21lVW5yZXNwb25zaXZlKTog
RGVsZXRlZC4KKyAgICAgICAgKEFQSTo6TG9hZGVyQ2xpZW50Ojpwcm9jZXNzRGlkQmVjb21lUmVz
cG9uc2l2ZSk6IERlbGV0ZWQuCisgICAgICAgIChBUEk6OkxvYWRlckNsaWVudDo6cHJvY2Vzc0Rp
ZENyYXNoKTogRGVsZXRlZC4KKyAgICAgICAgKEFQSTo6TG9hZGVyQ2xpZW50OjpkaWRDaGFuZ2VC
YWNrRm9yd2FyZExpc3QpOiBEZWxldGVkLgorICAgICAgICAoQVBJOjpMb2FkZXJDbGllbnQ6Ondp
bGxHb1RvQmFja0ZvcndhcmRMaXN0SXRlbSk6IERlbGV0ZWQuCisgICAgICAgIChBUEk6OkxvYWRl
ckNsaWVudDo6ZGlkTmF2aWdhdGVXaXRoTmF2aWdhdGlvbkRhdGEpOiBEZWxldGVkLgorICAgICAg
ICAoQVBJOjpMb2FkZXJDbGllbnQ6OmRpZFBlcmZvcm1DbGllbnRSZWRpcmVjdCk6IERlbGV0ZWQu
CisgICAgICAgIChBUEk6OkxvYWRlckNsaWVudDo6ZGlkUGVyZm9ybVNlcnZlclJlZGlyZWN0KTog
RGVsZXRlZC4KKyAgICAgICAgKEFQSTo6TG9hZGVyQ2xpZW50OjpkaWRVcGRhdGVIaXN0b3J5VGl0
bGUpOiBEZWxldGVkLgorICAgICAgICAoQVBJOjpMb2FkZXJDbGllbnQ6Om5hdmlnYXRpb25HZXN0
dXJlRGlkQmVnaW4pOiBEZWxldGVkLgorICAgICAgICAoQVBJOjpMb2FkZXJDbGllbnQ6Om5hdmln
YXRpb25HZXN0dXJlV2lsbEVuZCk6IERlbGV0ZWQuCisgICAgICAgIChBUEk6OkxvYWRlckNsaWVu
dDo6bmF2aWdhdGlvbkdlc3R1cmVEaWRFbmQpOiBEZWxldGVkLgorICAgICAgICAoQVBJOjpMb2Fk
ZXJDbGllbnQ6OnBsdWdpbkxvYWRQb2xpY3kpOiBEZWxldGVkLgorICAgICAgICAoQVBJOjpMb2Fk
ZXJDbGllbnQ6OmRpZEZhaWxUb0luaXRpYWxpemVQbHVnaW4pOiBEZWxldGVkLgorICAgICAgICAo
QVBJOjpMb2FkZXJDbGllbnQ6OmRpZEJsb2NrSW5zZWN1cmVQbHVnaW5WZXJzaW9uKTogRGVsZXRl
ZC4KKyAgICAgICAgKEFQSTo6TG9hZGVyQ2xpZW50Ojp3ZWJHTExvYWRQb2xpY3kgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAoQVBJOjpMb2FkZXJDbGllbnQ6OnJlc29sdmVXZWJHTExvYWRQb2xp
Y3kgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoQVBJOjpMb2FkZXJDbGllbnQ6OmRpZFN0YXJ0
TG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUpOiBEZWxldGVkLgorICAgICAgICAo
QVBJOjpMb2FkZXJDbGllbnQ6OmRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFp
bkZyYW1lKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcDoK
KyAgICAgICAgKFdLUGFnZVNldFBhZ2VMb2FkZXJDbGllbnQpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZENo
YW5nZUJhY2tGb3J3YXJkTGlzdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6d2ls
bEdvVG9CYWNrRm9yd2FyZExpc3RJdGVtKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
OjpkaWRTdGFydFByb2dyZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRD
aGFuZ2VQcm9ncmVzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkRmluaXNo
UHJvZ3Jlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZENvbW1pdExvYWRG
b3JGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkRmluaXNoRG9jdW1l
bnRMb2FkRm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZFNhbWVE
b2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6ZGlkUmVjZWl2ZVRpdGxlRm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OmRpZEZpcnN0TGF5b3V0Rm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OmRpZERpc3BsYXlJbnNlY3VyZUNvbnRlbnRGb3JGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6ZGlkUnVuSW5zZWN1cmVDb250ZW50Rm9yRnJhbWUpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZERldGVjdFhTU0ZvckZyYW1lKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZVByb3h5OjpkaWROYXZpZ2F0ZVdpdGhOYXZpZ2F0aW9uRGF0YSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkUGVyZm9ybUNsaWVudFJlZGlyZWN0KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRQZXJmb3JtU2VydmVyUmVkaXJlY3QpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZFVwZGF0ZUhpc3RvcnlUaXRsZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6d2ViR0xQb2xpY3lGb3JVUkwpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlc29sdmVXZWJHTFBvbGljeUZvclVSTCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cHJvY2Vzc0RpZEJlY29tZVVucmVzcG9uc2l2ZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cHJvY2Vzc0RpZEJlY29tZVJlc3BvbnNp
dmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpc3BhdGNoUHJvY2Vzc0RpZFRl
cm1pbmF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkUmVjZWl2ZUF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
Om5hdmlnYXRpb25HZXN0dXJlRGlkQmVnaW4pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6Om5hdmlnYXRpb25HZXN0dXJlV2lsbEVuZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6bmF2aWdhdGlvbkdlc3R1cmVEaWRFbmQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3Mv
V2ViUGFnZVByb3h5SU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZFN0
YXJ0TG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OmRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZy
YW1lKToKKwogMjAxOC0wOC0yNyAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJr
aXQub3JnPgogCiAgICAgICAgIEZpeCBpbnRlcm5hbCBidWlsZHMgYWZ0ZXIgcjIzNTM2OApJbmRl
eDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCShyZXZpc2lvbiAyMzUz
NzEpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xMjcwLDggKzEyNzAsOCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ2hhbmdl
QmFja0ZvcndhcmRMCiB7CiAgICAgUGFnZUNsaWVudFByb3RlY3RvciBwcm90ZWN0b3IobV9wYWdl
Q2xpZW50KTsKIAotICAgIGlmICghbV9uYXZpZ2F0aW9uQ2xpZW50IHx8ICFtX25hdmlnYXRpb25D
bGllbnQtPmRpZENoYW5nZUJhY2tGb3J3YXJkTGlzdCgqdGhpcywgYWRkZWQsIHJlbW92ZWQpKQot
ICAgICAgICBtX2xvYWRlckNsaWVudC0+ZGlkQ2hhbmdlQmFja0ZvcndhcmRMaXN0KCp0aGlzLCBh
ZGRlZCwgV1RGTW92ZShyZW1vdmVkKSk7CisgICAgaWYgKG1fbmF2aWdhdGlvbkNsaWVudCkKKyAg
ICAgICAgbV9uYXZpZ2F0aW9uQ2xpZW50LT5kaWRDaGFuZ2VCYWNrRm9yd2FyZExpc3QoKnRoaXMs
IGFkZGVkLCByZW1vdmVkKTsKIAogICAgIGF1dG8gdHJhbnNhY3Rpb24gPSBtX3BhZ2VMb2FkU3Rh
dGUudHJhbnNhY3Rpb24oKTsKIApAQCAtMTI4NCw5ICsxMjg0LDggQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OndpbGxHb1RvQmFja0ZvcndhcmRMaQogICAgIFBhZ2VDbGllbnRQcm90ZWN0b3IgcHJvdGVj
dG9yKG1fcGFnZUNsaWVudCk7CiAKICAgICBpZiAoYXV0byogaXRlbSA9IG1fYmFja0ZvcndhcmRM
aXN0LT5pdGVtRm9ySUQoaXRlbUlEKSkgewotICAgICAgICBpZiAobV9uYXZpZ2F0aW9uQ2xpZW50
ICYmIG1fbmF2aWdhdGlvbkNsaWVudC0+d2lsbEdvVG9CYWNrRm9yd2FyZExpc3RJdGVtKCp0aGlz
LCAqaXRlbSwgaW5QYWdlQ2FjaGUsIG1fcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0
cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICBtX2xvYWRlckNsaWVudC0+d2lsbEdvVG9CYWNrRm9yd2FyZExpc3RJdGVtKCp0aGlzLCAqaXRl
bSwgbV9wcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgp
KS5nZXQoKSk7CisgICAgICAgIGlmIChtX25hdmlnYXRpb25DbGllbnQpCisgICAgICAgICAgICBt
X25hdmlnYXRpb25DbGllbnQtPndpbGxHb1RvQmFja0ZvcndhcmRMaXN0SXRlbSgqdGhpcywgKml0
ZW0sIGluUGFnZUNhY2hlLCBtX3Byb2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNl
ckRhdGEub2JqZWN0KCkpLmdldCgpKTsKICAgICB9CiB9CiAKQEAgLTMzNzUsNyArMzM3NCw2IEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpkaWRTdGFydFByb2dyZXNzKCkKICAgICBtX3BhZ2VMb2FkU3Rh
dGUuZGlkU3RhcnRQcm9ncmVzcyh0cmFuc2FjdGlvbik7CiAKICAgICBtX3BhZ2VMb2FkU3RhdGUu
Y29tbWl0Q2hhbmdlcygpOwotICAgIG1fbG9hZGVyQ2xpZW50LT5kaWRTdGFydFByb2dyZXNzKCp0
aGlzKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZENoYW5nZVByb2dyZXNzKGRvdWJsZSB2
YWx1ZSkKQEAgLTMzODYsNyArMzM4NCw2IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRDaGFuZ2VQ
cm9ncmVzcyhkb3UKICAgICBtX3BhZ2VMb2FkU3RhdGUuZGlkQ2hhbmdlUHJvZ3Jlc3ModHJhbnNh
Y3Rpb24sIHZhbHVlKTsKIAogICAgIG1fcGFnZUxvYWRTdGF0ZS5jb21taXRDaGFuZ2VzKCk7Ci0g
ICAgbV9sb2FkZXJDbGllbnQtPmRpZENoYW5nZVByb2dyZXNzKCp0aGlzKTsKIH0KIAogdm9pZCBX
ZWJQYWdlUHJveHk6OmRpZEZpbmlzaFByb2dyZXNzKCkKQEAgLTMzOTcsNyArMzM5NCw2IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpkaWRGaW5pc2hQcm9ncmVzcygpCiAgICAgbV9wYWdlTG9hZFN0YXRl
LmRpZEZpbmlzaFByb2dyZXNzKHRyYW5zYWN0aW9uKTsKIAogICAgIG1fcGFnZUxvYWRTdGF0ZS5j
b21taXRDaGFuZ2VzKCk7Ci0gICAgbV9sb2FkZXJDbGllbnQtPmRpZEZpbmlzaFByb2dyZXNzKCp0
aGlzKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnNldE5ldHdvcmtSZXF1ZXN0c0luUHJvZ3Jl
c3MoYm9vbCBuZXR3b3JrUmVxdWVzdHNJblByb2dyZXNzKQpAQCAtMzY3NywxMSArMzY3Myw4IEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpkaWRDb21taXRMb2FkRm9yRnJhbWUKICNlbmRpZgogCiAgICAg
bV9wYWdlTG9hZFN0YXRlLmNvbW1pdENoYW5nZXMoKTsKLSAgICBpZiAobV9uYXZpZ2F0aW9uQ2xp
ZW50KSB7Ci0gICAgICAgIGlmIChmcmFtZS0+aXNNYWluRnJhbWUoKSkKLSAgICAgICAgICAgIG1f
bmF2aWdhdGlvbkNsaWVudC0+ZGlkQ29tbWl0TmF2aWdhdGlvbigqdGhpcywgbmF2aWdhdGlvbi5n
ZXQoKSwgbV9wcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVj
dCgpKS5nZXQoKSk7Ci0gICAgfSBlbHNlCi0gICAgICAgIG1fbG9hZGVyQ2xpZW50LT5kaWRDb21t
aXRMb2FkRm9yRnJhbWUoKnRoaXMsICpmcmFtZSwgbmF2aWdhdGlvbi5nZXQoKSwgbV9wcm9jZXNz
LT50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7Cisg
ICAgaWYgKG1fbmF2aWdhdGlvbkNsaWVudCAmJiBmcmFtZS0+aXNNYWluRnJhbWUoKSkKKyAgICAg
ICAgbV9uYXZpZ2F0aW9uQ2xpZW50LT5kaWRDb21taXROYXZpZ2F0aW9uKCp0aGlzLCBuYXZpZ2F0
aW9uLmdldCgpLCBtX3Byb2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEu
b2JqZWN0KCkpLmdldCgpKTsKIAogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCiAgICAg
aWYgKGZyYW1lLT5pc01haW5GcmFtZSgpKQpAQCAtMzcwNiwxMSArMzY5OSw4IEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjpkaWRGaW5pc2hEb2N1bWVudExvYWQKICAgICBpZiAoZnJhbWUtPmlzTWFpbkZy
YW1lKCkgJiYgbmF2aWdhdGlvbklEKQogICAgICAgICBuYXZpZ2F0aW9uID0gJm5hdmlnYXRpb25T
dGF0ZSgpLm5hdmlnYXRpb24obmF2aWdhdGlvbklEKTsKIAotICAgIGlmIChtX25hdmlnYXRpb25D
bGllbnQpIHsKLSAgICAgICAgaWYgKGZyYW1lLT5pc01haW5GcmFtZSgpKQotICAgICAgICAgICAg
bV9uYXZpZ2F0aW9uQ2xpZW50LT5kaWRGaW5pc2hEb2N1bWVudExvYWQoKnRoaXMsIG5hdmlnYXRp
b24uZ2V0KCksIG1fcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5v
YmplY3QoKSkuZ2V0KCkpOwotICAgIH0gZWxzZQotICAgICAgICBtX2xvYWRlckNsaWVudC0+ZGlk
RmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWUoKnRoaXMsICpmcmFtZSwgbmF2aWdhdGlvbi5nZXQo
KSwgbV9wcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgp
KS5nZXQoKSk7CisgICAgaWYgKG1fbmF2aWdhdGlvbkNsaWVudCAmJiBmcmFtZS0+aXNNYWluRnJh
bWUoKSkKKyAgICAgICAgbV9uYXZpZ2F0aW9uQ2xpZW50LT5kaWRGaW5pc2hEb2N1bWVudExvYWQo
KnRoaXMsIG5hdmlnYXRpb24uZ2V0KCksIG1fcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2Jq
ZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6
ZGlkRmluaXNoTG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRp
b25JRCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQpAQCAtMzgzMCwxMSArMzgyMCw4IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpkaWRTYW1lRG9jdW1lbnROYXZpZ2EKICAgICBtX3BhZ2VMb2FkU3Rh
dGUuY29tbWl0Q2hhbmdlcygpOwogCiAgICAgU2FtZURvY3VtZW50TmF2aWdhdGlvblR5cGUgbmF2
aWdhdGlvblR5cGUgPSBzdGF0aWNfY2FzdDxTYW1lRG9jdW1lbnROYXZpZ2F0aW9uVHlwZT4ob3Bh
cXVlU2FtZURvY3VtZW50TmF2aWdhdGlvblR5cGUpOwotICAgIGlmIChtX25hdmlnYXRpb25DbGll
bnQpIHsKLSAgICAgICAgaWYgKGlzTWFpbkZyYW1lKQotICAgICAgICAgICAgbV9uYXZpZ2F0aW9u
Q2xpZW50LT5kaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uKCp0aGlzLCBuYXZpZ2F0aW9uLmdldCgp
LCBuYXZpZ2F0aW9uVHlwZSwgbV9wcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVz
ZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7Ci0gICAgfSBlbHNlCi0gICAgICAgIG1fbG9hZGVyQ2xp
ZW50LT5kaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJhbWUoKnRoaXMsICpmcmFtZSwgbmF2
aWdhdGlvbi5nZXQoKSwgbmF2aWdhdGlvblR5cGUsIG1fcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxl
c1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpOworICAgIGlmIChtX25hdmlnYXRp
b25DbGllbnQgJiYgaXNNYWluRnJhbWUpCisgICAgICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+ZGlk
U2FtZURvY3VtZW50TmF2aWdhdGlvbigqdGhpcywgbmF2aWdhdGlvbi5nZXQoKSwgbmF2aWdhdGlv
blR5cGUsIG1fcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmpl
Y3QoKSkuZ2V0KCkpOwogCiAgICAgaWYgKGlzTWFpbkZyYW1lKQogICAgICAgICBtX3BhZ2VDbGll
bnQuZGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbkZvck1haW5GcmFtZShuYXZpZ2F0aW9uVHlwZSk7
CkBAIC0zODcxLDE3ICszODU4LDEwIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRSZWNlaXZlVGl0
bGVGb3JGcmEKICAgICBmcmFtZS0+ZGlkQ2hhbmdlVGl0bGUodGl0bGUpOwogICAgIAogICAgIG1f
cGFnZUxvYWRTdGF0ZS5jb21taXRDaGFuZ2VzKCk7Ci0gICAgbV9sb2FkZXJDbGllbnQtPmRpZFJl
Y2VpdmVUaXRsZUZvckZyYW1lKCp0aGlzLCB0aXRsZSwgKmZyYW1lLCBtX3Byb2Nlc3MtPnRyYW5z
Zm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKIH0KIAotdm9p
ZCBXZWJQYWdlUHJveHk6OmRpZEZpcnN0TGF5b3V0Rm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwg
Y29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQordm9pZCBXZWJQYWdlUHJveHk6OmRpZEZpcnN0TGF5
b3V0Rm9yRnJhbWUodWludDY0X3QsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKIHsKLSAgICBQ
YWdlQ2xpZW50UHJvdGVjdG9yIHByb3RlY3RvcihtX3BhZ2VDbGllbnQpOwotCi0gICAgV2ViRnJh
bWVQcm94eSogZnJhbWUgPSBtX3Byb2Nlc3MtPndlYkZyYW1lKGZyYW1lSUQpOwotICAgIE1FU1NB
R0VfQ0hFQ0soZnJhbWUpOwotCi0gICAgbV9sb2FkZXJDbGllbnQtPmRpZEZpcnN0TGF5b3V0Rm9y
RnJhbWUoKnRoaXMsICpmcmFtZSwgbV9wcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3Rz
KHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRG
aXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCBjb25z
dCBVc2VyRGF0YSYgdXNlckRhdGEpCkBAIC0zOTI1LDggKzM5MDUsNiBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6ZGlkRGlzcGxheUluc2VjdXJlQ29uCiAKICAgICBpZiAobV9uYXZpZ2F0aW9uQ2xpZW50
KQogICAgICAgICBtX25hdmlnYXRpb25DbGllbnQtPmRpZERpc3BsYXlJbnNlY3VyZUNvbnRlbnQo
KnRoaXMsIG1fcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmpl
Y3QoKSkuZ2V0KCkpOwotICAgIGVsc2UKLSAgICAgICAgbV9sb2FkZXJDbGllbnQtPmRpZERpc3Bs
YXlJbnNlY3VyZUNvbnRlbnRGb3JGcmFtZSgqdGhpcywgKmZyYW1lLCBtX3Byb2Nlc3MtPnRyYW5z
Zm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKIH0KIAogdm9p
ZCBXZWJQYWdlUHJveHk6OmRpZFJ1bkluc2VjdXJlQ29udGVudEZvckZyYW1lKHVpbnQ2NF90IGZy
YW1lSUQsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKQEAgLTM5NDIsMTggKzM5MjAsMTAgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OmRpZFJ1bkluc2VjdXJlQ29udGVudAogCiAgICAgaWYgKG1fbmF2
aWdhdGlvbkNsaWVudCkKICAgICAgICAgbV9uYXZpZ2F0aW9uQ2xpZW50LT5kaWRSdW5JbnNlY3Vy
ZUNvbnRlbnQoKnRoaXMsIG1fcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2Vy
RGF0YS5vYmplY3QoKSkuZ2V0KCkpOwotICAgIGVsc2UKLSAgICAgICAgbV9sb2FkZXJDbGllbnQt
PmRpZFJ1bkluc2VjdXJlQ29udGVudEZvckZyYW1lKCp0aGlzLCAqZnJhbWUsIG1fcHJvY2Vzcy0+
dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpOwogfQog
Ci12b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRGV0ZWN0WFNTRm9yRnJhbWUodWludDY0X3QgZnJhbWVJ
RCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQordm9pZCBXZWJQYWdlUHJveHk6OmRpZERldGVj
dFhTU0ZvckZyYW1lKHVpbnQ2NF90LCBjb25zdCBVc2VyRGF0YSYpCiB7Ci0gICAgUGFnZUNsaWVu
dFByb3RlY3RvciBwcm90ZWN0b3IobV9wYWdlQ2xpZW50KTsKLQotICAgIFdlYkZyYW1lUHJveHkq
IGZyYW1lID0gbV9wcm9jZXNzLT53ZWJGcmFtZShmcmFtZUlEKTsKLSAgICBNRVNTQUdFX0NIRUNL
KGZyYW1lKTsKLQotICAgIG1fbG9hZGVyQ2xpZW50LT5kaWREZXRlY3RYU1NGb3JGcmFtZSgqdGhp
cywgKmZyYW1lLCBtX3Byb2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEu
b2JqZWN0KCkpLmdldCgpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6Om1haW5GcmFtZVBsdWdp
bkhhbmRsZXNQYWdlU2NhbGVHZXN0dXJlRGlkQ2hhbmdlKGJvb2wgbWFpbkZyYW1lUGx1Z2luSGFu
ZGxlc1BhZ2VTY2FsZUdlc3R1cmUpCkBAIC00MjAzLDExICs0MTczLDggQEAgdm9pZCBXZWJQYWdl
UHJveHk6OmRpZE5hdmlnYXRlV2l0aE5hdmlnYQogICAgIE1FU1NBR0VfQ0hFQ0soZnJhbWUpOwog
ICAgIE1FU1NBR0VfQ0hFQ0soZnJhbWUtPnBhZ2UoKSA9PSB0aGlzKTsKIAotICAgIGlmIChtX2hp
c3RvcnlDbGllbnQpIHsKLSAgICAgICAgaWYgKGZyYW1lLT5pc01haW5GcmFtZSgpKQotICAgICAg
ICAgICAgbV9oaXN0b3J5Q2xpZW50LT5kaWROYXZpZ2F0ZVdpdGhOYXZpZ2F0aW9uRGF0YSgqdGhp
cywgc3RvcmUpOwotICAgIH0gZWxzZQotICAgICAgICBtX2xvYWRlckNsaWVudC0+ZGlkTmF2aWdh
dGVXaXRoTmF2aWdhdGlvbkRhdGEoKnRoaXMsIHN0b3JlLCAqZnJhbWUpOworICAgIGlmIChtX2hp
c3RvcnlDbGllbnQgJiYgZnJhbWUtPmlzTWFpbkZyYW1lKCkpCisgICAgICAgIG1faGlzdG9yeUNs
aWVudC0+ZGlkTmF2aWdhdGVXaXRoTmF2aWdhdGlvbkRhdGEoKnRoaXMsIHN0b3JlKTsKICAgICBw
cm9jZXNzKCkucHJvY2Vzc1Bvb2woKS5oaXN0b3J5Q2xpZW50KCkuZGlkTmF2aWdhdGVXaXRoTmF2
aWdhdGlvbkRhdGEocHJvY2VzcygpLnByb2Nlc3NQb29sKCksICp0aGlzLCBzdG9yZSwgKmZyYW1l
KTsKIH0KIApAQCAtNDIyNSwxMSArNDE5Miw4IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRQZXJm
b3JtQ2xpZW50UmVkaXIKICAgICBNRVNTQUdFX0NIRUNLX1VSTChzb3VyY2VVUkxTdHJpbmcpOwog
ICAgIE1FU1NBR0VfQ0hFQ0tfVVJMKGRlc3RpbmF0aW9uVVJMU3RyaW5nKTsKIAotICAgIGlmICht
X2hpc3RvcnlDbGllbnQpIHsKLSAgICAgICAgaWYgKGZyYW1lLT5pc01haW5GcmFtZSgpKQotICAg
ICAgICAgICAgbV9oaXN0b3J5Q2xpZW50LT5kaWRQZXJmb3JtQ2xpZW50UmVkaXJlY3QoKnRoaXMs
IHNvdXJjZVVSTFN0cmluZywgZGVzdGluYXRpb25VUkxTdHJpbmcpOwotICAgIH0gZWxzZQotICAg
ICAgICBtX2xvYWRlckNsaWVudC0+ZGlkUGVyZm9ybUNsaWVudFJlZGlyZWN0KCp0aGlzLCBzb3Vy
Y2VVUkxTdHJpbmcsIGRlc3RpbmF0aW9uVVJMU3RyaW5nLCAqZnJhbWUpOworICAgIGlmIChtX2hp
c3RvcnlDbGllbnQgJiYgZnJhbWUtPmlzTWFpbkZyYW1lKCkpCisgICAgICAgIG1faGlzdG9yeUNs
aWVudC0+ZGlkUGVyZm9ybUNsaWVudFJlZGlyZWN0KCp0aGlzLCBzb3VyY2VVUkxTdHJpbmcsIGRl
c3RpbmF0aW9uVVJMU3RyaW5nKTsKICAgICBwcm9jZXNzKCkucHJvY2Vzc1Bvb2woKS5oaXN0b3J5
Q2xpZW50KCkuZGlkUGVyZm9ybUNsaWVudFJlZGlyZWN0KHByb2Nlc3MoKS5wcm9jZXNzUG9vbCgp
LCAqdGhpcywgc291cmNlVVJMU3RyaW5nLCBkZXN0aW5hdGlvblVSTFN0cmluZywgKmZyYW1lKTsK
IH0KIApAQCAtNDI0NywxMSArNDIxMSw4IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRQZXJmb3Jt
U2VydmVyUmVkaXIKICAgICBNRVNTQUdFX0NIRUNLX1VSTChzb3VyY2VVUkxTdHJpbmcpOwogICAg
IE1FU1NBR0VfQ0hFQ0tfVVJMKGRlc3RpbmF0aW9uVVJMU3RyaW5nKTsKIAotICAgIGlmIChtX2hp
c3RvcnlDbGllbnQpIHsKLSAgICAgICAgaWYgKGZyYW1lLT5pc01haW5GcmFtZSgpKQotICAgICAg
ICAgICAgbV9oaXN0b3J5Q2xpZW50LT5kaWRQZXJmb3JtU2VydmVyUmVkaXJlY3QoKnRoaXMsIHNv
dXJjZVVSTFN0cmluZywgZGVzdGluYXRpb25VUkxTdHJpbmcpOwotICAgIH0gZWxzZQotICAgICAg
ICBtX2xvYWRlckNsaWVudC0+ZGlkUGVyZm9ybVNlcnZlclJlZGlyZWN0KCp0aGlzLCBzb3VyY2VV
UkxTdHJpbmcsIGRlc3RpbmF0aW9uVVJMU3RyaW5nLCAqZnJhbWUpOworICAgIGlmIChtX2hpc3Rv
cnlDbGllbnQgJiYgZnJhbWUtPmlzTWFpbkZyYW1lKCkpCisgICAgICAgIG1faGlzdG9yeUNsaWVu
dC0+ZGlkUGVyZm9ybVNlcnZlclJlZGlyZWN0KCp0aGlzLCBzb3VyY2VVUkxTdHJpbmcsIGRlc3Rp
bmF0aW9uVVJMU3RyaW5nKTsKICAgICBwcm9jZXNzKCkucHJvY2Vzc1Bvb2woKS5oaXN0b3J5Q2xp
ZW50KCkuZGlkUGVyZm9ybVNlcnZlclJlZGlyZWN0KHByb2Nlc3MoKS5wcm9jZXNzUG9vbCgpLCAq
dGhpcywgc291cmNlVVJMU3RyaW5nLCBkZXN0aW5hdGlvblVSTFN0cmluZywgKmZyYW1lKTsKIH0K
IApAQCAtNDI2NSwxMSArNDIyNiw4IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRVcGRhdGVIaXN0
b3J5VGl0bGUKIAogICAgIE1FU1NBR0VfQ0hFQ0tfVVJMKHVybCk7CiAKLSAgICBpZiAobV9oaXN0
b3J5Q2xpZW50KSB7Ci0gICAgICAgIGlmIChmcmFtZS0+aXNNYWluRnJhbWUoKSkKLSAgICAgICAg
ICAgIG1faGlzdG9yeUNsaWVudC0+ZGlkVXBkYXRlSGlzdG9yeVRpdGxlKCp0aGlzLCB0aXRsZSwg
dXJsKTsKLSAgICB9IGVsc2UKLSAgICAgICAgbV9sb2FkZXJDbGllbnQtPmRpZFVwZGF0ZUhpc3Rv
cnlUaXRsZSgqdGhpcywgdGl0bGUsIHVybCwgKmZyYW1lKTsKKyAgICBpZiAobV9oaXN0b3J5Q2xp
ZW50ICYmIGZyYW1lLT5pc01haW5GcmFtZSgpKQorICAgICAgICBtX2hpc3RvcnlDbGllbnQtPmRp
ZFVwZGF0ZUhpc3RvcnlUaXRsZSgqdGhpcywgdGl0bGUsIHVybCk7CiAgICAgcHJvY2VzcygpLnBy
b2Nlc3NQb29sKCkuaGlzdG9yeUNsaWVudCgpLmRpZFVwZGF0ZUhpc3RvcnlUaXRsZShwcm9jZXNz
KCkucHJvY2Vzc1Bvb2woKSwgKnRoaXMsIHRpdGxlLCB1cmwsICpmcmFtZSk7CiB9CiAKQEAgLTQ0
NjcsNyArNDQyNSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp3ZWJHTFBvbGljeUZvclVSTChVUkwK
ICAgICAgICAgICAgIHJlcGx5KHN0YXRpY19jYXN0PHVpbnQzMl90Pihwb2xpY3kpKTsKICAgICAg
ICAgfSk7CiAgICAgfSBlbHNlCi0gICAgICAgIHJlcGx5KHN0YXRpY19jYXN0PHVpbnQzMl90Piht
X2xvYWRlckNsaWVudC0+d2ViR0xMb2FkUG9saWN5KCp0aGlzLCB1cmwpKSk7CisgICAgICAgIHJl
cGx5KHN0YXRpY19jYXN0PHVpbnQzMl90PihXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3k6OldlYkdM
QWxsb3dDcmVhdGlvbikpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6cmVzb2x2ZVdlYkdMUG9s
aWN5Rm9yVVJMKFVSTCYmIHVybCwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UmVzb2x2ZVdlYkdM
UG9saWN5Rm9yVVJMOjpEZWxheWVkUmVwbHkmJiByZXBseSkKQEAgLTQ0NzcsNyArNDQzNSw3IEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpyZXNvbHZlV2ViR0xQb2xpY3lGb3IKICAgICAgICAgICAgIHJl
cGx5KHN0YXRpY19jYXN0PHVpbnQzMl90Pihwb2xpY3kpKTsKICAgICAgICAgfSk7CiAgICAgfSBl
bHNlCi0gICAgICAgIHJlcGx5KHN0YXRpY19jYXN0PHVpbnQzMl90PihtX2xvYWRlckNsaWVudC0+
cmVzb2x2ZVdlYkdMTG9hZFBvbGljeSgqdGhpcywgdXJsKSkpOworICAgICAgICByZXBseShzdGF0
aWNfY2FzdDx1aW50MzJfdD4oV2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5OjpXZWJHTEFsbG93Q3Jl
YXRpb24pKTsKIH0KICNlbmRpZiAvLyBFTkFCTEUoV0VCR0wpCiAKQEAgLTU4NzMsOCArNTgzMSw2
IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpwcm9jZXNzRGlkQmVjb21lVW5yZXMKIAogICAgIGlmICht
X25hdmlnYXRpb25DbGllbnQpCiAgICAgICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+cHJvY2Vzc0Rp
ZEJlY29tZVVucmVzcG9uc2l2ZSgqdGhpcyk7Ci0gICAgZWxzZQotICAgICAgICBtX2xvYWRlckNs
aWVudC0+cHJvY2Vzc0RpZEJlY29tZVVucmVzcG9uc2l2ZSgqdGhpcyk7CiB9CiAKIHZvaWQgV2Vi
UGFnZVByb3h5Ojpwcm9jZXNzRGlkQmVjb21lUmVzcG9uc2l2ZSgpCkBAIC01ODg2LDggKzU4NDIs
NiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cHJvY2Vzc0RpZEJlY29tZVJlc3BvCiAKICAgICBpZiAo
bV9uYXZpZ2F0aW9uQ2xpZW50KQogICAgICAgICBtX25hdmlnYXRpb25DbGllbnQtPnByb2Nlc3NE
aWRCZWNvbWVSZXNwb25zaXZlKCp0aGlzKTsKLSAgICBlbHNlCi0gICAgICAgIG1fbG9hZGVyQ2xp
ZW50LT5wcm9jZXNzRGlkQmVjb21lUmVzcG9uc2l2ZSgqdGhpcyk7CiB9CiAKIHZvaWQgV2ViUGFn
ZVByb3h5Ojp3aWxsQ2hhbmdlUHJvY2Vzc0lzUmVzcG9uc2l2ZSgpCkBAIC01OTY1LDggKzU5MTks
NiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlzcGF0Y2hQcm9jZXNzRGlkVGVyCiAgICAgYm9vbCBo
YW5kbGVkQnlDbGllbnQgPSBmYWxzZTsKICAgICBpZiAobV9uYXZpZ2F0aW9uQ2xpZW50KQogICAg
ICAgICBoYW5kbGVkQnlDbGllbnQgPSBtX25hdmlnYXRpb25DbGllbnQtPnByb2Nlc3NEaWRUZXJt
aW5hdGUoKnRoaXMsIHJlYXNvbik7Ci0gICAgZWxzZSBpZiAocmVhc29uICE9IFByb2Nlc3NUZXJt
aW5hdGlvblJlYXNvbjo6UmVxdWVzdGVkQnlDbGllbnQpCi0gICAgICAgIGhhbmRsZWRCeUNsaWVu
dCA9IG1fbG9hZGVyQ2xpZW50LT5wcm9jZXNzRGlkQ3Jhc2goKnRoaXMpOwogCiAgICAgaWYgKCFo
YW5kbGVkQnlDbGllbnQgJiYgc2hvdWxkUmVsb2FkQWZ0ZXJQcm9jZXNzVGVybWluYXRpb24ocmVh
c29uKSkKICAgICAgICAgdHJ5UmVsb2FkQWZ0ZXJQcm9jZXNzVGVybWluYXRpb24oKTsKQEAgLTYz
MzcsMTEgKzYyODksOCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2FtZXBhZEFjdGl2aXR5KGNvbnN0
CiAKICNlbmRpZgogCi12b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlUHJveHkodWludDY0X3QgZnJhbWVJRCwgUmVmPEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlUHJveHk+JiYgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UpCit2b2lkIFdlYlBhZ2VQcm94eTo6
ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkodWludDY0X3QsIFJlZjxBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5PiYmIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKQogewot
ICAgIFdlYkZyYW1lUHJveHkqIGZyYW1lID0gbV9wcm9jZXNzLT53ZWJGcmFtZShmcmFtZUlEKTsK
LSAgICBNRVNTQUdFX0NIRUNLKGZyYW1lKTsKLQogI2lmIEhBVkUoU0VDX0tFWV9QUk9YWSkKICAg
ICBBU1NFUlQoYXV0aGVudGljYXRpb25DaGFsbGVuZ2UtPnByb3RlY3Rpb25TcGFjZSgpKTsKICAg
ICBpZiAoYXV0aGVudGljYXRpb25DaGFsbGVuZ2UtPnByb3RlY3Rpb25TcGFjZSgpLT5hdXRoZW50
aWNhdGlvblNjaGVtZSgpID09IFByb3RlY3Rpb25TcGFjZUF1dGhlbnRpY2F0aW9uU2NoZW1lQ2xp
ZW50Q2VydGlmaWNhdGVSZXF1ZXN0ZWQpIHsKQEAgLTYzNTQsNyArNjMwMyw3IEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjpkaWRSZWNlaXZlQXV0aGVudGljYXQKICAgICBpZiAobV9uYXZpZ2F0aW9uQ2xp
ZW50KQogICAgICAgICBtX25hdmlnYXRpb25DbGllbnQtPmRpZFJlY2VpdmVBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZSgqdGhpcywgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UuZ2V0KCkpOwogICAgIGVs
c2UKLSAgICAgICAgbV9sb2FkZXJDbGllbnQtPmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZUluRnJhbWUoKnRoaXMsICpmcmFtZSwgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UuZ2V0KCkp
OworICAgICAgICBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZS0+cGVyZm9ybURlZmF1bHRIYW5kbGlu
ZygpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZXhjZWVkZWREYXRhYmFzZVF1b3RhKHVpbnQ2
NF90IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllciwgY29uc3QgU3RyaW5n
JiBkYXRhYmFzZU5hbWUsIGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIHVpbnQ2NF90IGN1cnJl
bnRRdW90YSwgdWludDY0X3QgY3VycmVudE9yaWdpblVzYWdlLCB1aW50NjRfdCBjdXJyZW50RGF0
YWJhc2VVc2FnZSwgdWludDY0X3QgZXhwZWN0ZWRVc2FnZSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6RXhjZWVkZWREYXRhYmFzZVF1b3RhOjpEZWxheWVkUmVwbHkmJiByZXBseSkKQEAgLTcxMjEs
OCArNzA3MCw2IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpuYXZpZ2F0aW9uR2VzdHVyZURpZEIKIAog
ICAgIGlmIChtX25hdmlnYXRpb25DbGllbnQpCiAgICAgICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+
ZGlkQmVnaW5OYXZpZ2F0aW9uR2VzdHVyZSgqdGhpcyk7Ci0gICAgZWxzZQotICAgICAgICBtX2xv
YWRlckNsaWVudC0+bmF2aWdhdGlvbkdlc3R1cmVEaWRCZWdpbigqdGhpcyk7CiB9CiAKIHZvaWQg
V2ViUGFnZVByb3h5OjpuYXZpZ2F0aW9uR2VzdHVyZVdpbGxFbmQoYm9vbCB3aWxsTmF2aWdhdGUs
IFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mIGl0ZW0pCkBAIC03MTMzLDggKzcwODAsNiBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6bmF2aWdhdGlvbkdlc3R1cmVXaWxsCiAKICAgICBpZiAobV9uYXZpZ2F0
aW9uQ2xpZW50KQogICAgICAgICBtX25hdmlnYXRpb25DbGllbnQtPndpbGxFbmROYXZpZ2F0aW9u
R2VzdHVyZSgqdGhpcywgd2lsbE5hdmlnYXRlLCBpdGVtKTsKLSAgICBlbHNlCi0gICAgICAgIG1f
bG9hZGVyQ2xpZW50LT5uYXZpZ2F0aW9uR2VzdHVyZVdpbGxFbmQoKnRoaXMsIHdpbGxOYXZpZ2F0
ZSwgaXRlbSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpuYXZpZ2F0aW9uR2VzdHVyZURpZEVu
ZChib29sIHdpbGxOYXZpZ2F0ZSwgV2ViQmFja0ZvcndhcmRMaXN0SXRlbSYgaXRlbSkKQEAgLTcx
NDUsOCArNzA5MCw2IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpuYXZpZ2F0aW9uR2VzdHVyZURpZEUK
IAogICAgIGlmIChtX25hdmlnYXRpb25DbGllbnQpCiAgICAgICAgIG1fbmF2aWdhdGlvbkNsaWVu
dC0+ZGlkRW5kTmF2aWdhdGlvbkdlc3R1cmUoKnRoaXMsIHdpbGxOYXZpZ2F0ZSwgaXRlbSk7Ci0g
ICAgZWxzZQotICAgICAgICBtX2xvYWRlckNsaWVudC0+bmF2aWdhdGlvbkdlc3R1cmVEaWRFbmQo
KnRoaXMsIHdpbGxOYXZpZ2F0ZSwgaXRlbSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpuYXZp
Z2F0aW9uR2VzdHVyZURpZEVuZCgpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
QVBJTG9hZGVyQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0FQSUxvYWRlckNsaWVudC5oCShyZXZpc2lvbiAyMzUzNzEpCisrKyBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQVBJTG9hZGVyQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDgg
KzIzLDcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZu
ZGVmIEFQSUxvYWRlckNsaWVudF9oCi0jZGVmaW5lIEFQSUxvYWRlckNsaWVudF9oCisjcHJhZ21h
IG9uY2UKIAogI2luY2x1ZGUgIkFQSURhdGEuaCIKICNpbmNsdWRlICJQbHVnaW5Nb2R1bGVJbmZv
LmgiCkBAIC01Niw2NyArNTUsMTQgQEAgY2xhc3MgT2JqZWN0OwogY2xhc3MgTG9hZGVyQ2xpZW50
IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5Mb2FkZXJDbGllbnQoKSB7IH0KLQogICAgIHZpcnR1
YWwgdm9pZCBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKFdlYktpdDo6V2ViUGFnZVBy
b3h5JiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5JiwgQVBJOjpOYXZpZ2F0aW9uKiwgQVBJOjpPYmpl
Y3QqKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJv
dmlzaW9uYWxMb2FkRm9yRnJhbWUoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBXZWJLaXQ6OldlYkZy
YW1lUHJveHkmLCBBUEk6Ok5hdmlnYXRpb24qLCBBUEk6Ok9iamVjdCopIHsgfQogICAgIHZpcnR1
YWwgdm9pZCBkaWRGYWlsUHJvdmlzaW9uYWxMb2FkV2l0aEVycm9yRm9yRnJhbWUoV2ViS2l0OjpX
ZWJQYWdlUHJveHkmLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkmLCBBUEk6Ok5hdmlnYXRpb24qLCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgQVBJOjpPYmplY3QqKSB7IH0KLSAgICB2aXJ0
dWFsIHZvaWQgZGlkQ29tbWl0TG9hZEZvckZyYW1lKFdlYktpdDo6V2ViUGFnZVByb3h5JiwgV2Vi
S2l0OjpXZWJGcmFtZVByb3h5JiwgQVBJOjpOYXZpZ2F0aW9uKiwgQVBJOjpPYmplY3QqKSB7IH0K
LSAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWUoV2ViS2l0OjpX
ZWJQYWdlUHJveHkmLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkmLCBBUEk6Ok5hdmlnYXRpb24qLCBB
UEk6Ok9iamVjdCopIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkRm9yRnJhbWUo
V2ViS2l0OjpXZWJQYWdlUHJveHkmLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkmLCBBUEk6Ok5hdmln
YXRpb24qLCBBUEk6Ok9iamVjdCopIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsTG9hZFdp
dGhFcnJvckZvckZyYW1lKFdlYktpdDo6V2ViUGFnZVByb3h5JiwgV2ViS2l0OjpXZWJGcmFtZVBy
b3h5JiwgQVBJOjpOYXZpZ2F0aW9uKiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIEFQ
STo6T2JqZWN0KikgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGRpZFNhbWVEb2N1bWVudE5hdmlnYXRp
b25Gb3JGcmFtZShXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIFdlYktpdDo6V2ViRnJhbWVQcm94eSYs
IEFQSTo6TmF2aWdhdGlvbiosIFdlYktpdDo6U2FtZURvY3VtZW50TmF2aWdhdGlvblR5cGUsIEFQ
STo6T2JqZWN0KikgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVUaXRsZUZvckZyYW1l
KFdlYktpdDo6V2ViUGFnZVByb3h5JiwgY29uc3QgV1RGOjpTdHJpbmcmLCBXZWJLaXQ6OldlYkZy
YW1lUHJveHkmLCBBUEk6Ok9iamVjdCopIHsgfQotICAgIHZpcnR1YWwgdm9pZCBkaWRGaXJzdExh
eW91dEZvckZyYW1lKFdlYktpdDo6V2ViUGFnZVByb3h5JiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5
JiwgQVBJOjpPYmplY3QqKSB7IH0KLQotICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgY29uc2lkZXIg
cmVtb3ZpbmcgZGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0Rm9yRnJhbWUgc2luY2UgaXQg
aXMgcmVwbGFjZWQgYnkgZGlkTGF5b3V0LgogICAgIHZpcnR1YWwgdm9pZCBkaWRGaXJzdFZpc3Vh
bGx5Tm9uRW1wdHlMYXlvdXRGb3JGcmFtZShXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIFdlYktpdDo6
V2ViRnJhbWVQcm94eSYsIEFQSTo6T2JqZWN0KikgeyB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgZGlk
RGlzcGxheUluc2VjdXJlQ29udGVudEZvckZyYW1lKFdlYktpdDo6V2ViUGFnZVByb3h5JiwgV2Vi
S2l0OjpXZWJGcmFtZVByb3h5JiwgQVBJOjpPYmplY3QqKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQg
ZGlkUnVuSW5zZWN1cmVDb250ZW50Rm9yRnJhbWUoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBXZWJL
aXQ6OldlYkZyYW1lUHJveHkmLCBBUEk6Ok9iamVjdCopIHsgfQotICAgIHZpcnR1YWwgdm9pZCBk
aWREZXRlY3RYU1NGb3JGcmFtZShXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIFdlYktpdDo6V2ViRnJh
bWVQcm94eSYsIEFQSTo6T2JqZWN0KikgeyB9Ci0KICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVhY2hM
YXlvdXRNaWxlc3RvbmUoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBXZWJDb3JlOjpMYXlvdXRNaWxl
c3RvbmVzKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlSW5GcmFtZShXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIFdlYktpdDo6V2ViRnJhbWVQcm94
eSYsIFdlYktpdDo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eSYpIHsgfQotCi0gICAgdmly
dHVhbCB2b2lkIGRpZFN0YXJ0UHJvZ3Jlc3MoV2ViS2l0OjpXZWJQYWdlUHJveHkmKSB7IH0KLSAg
ICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlUHJvZ3Jlc3MoV2ViS2l0OjpXZWJQYWdlUHJveHkmKSB7
IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoUHJvZ3Jlc3MoV2ViS2l0OjpXZWJQYWdlUHJv
eHkmKSB7IH0KLQotICAgIC8vIEZJWE1FOiBUaGVzZSBmdW5jdGlvbnMgc2hvdWxkIG5vdCBiZSBw
YXJ0IG9mIHRoaXMgY2xpZW50LgotICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNzRGlkQmVjb21lVW5y
ZXNwb25zaXZlKFdlYktpdDo6V2ViUGFnZVByb3h5JikgeyB9Ci0gICAgdmlydHVhbCB2b2lkIHBy
b2Nlc3NEaWRCZWNvbWVSZXNwb25zaXZlKFdlYktpdDo6V2ViUGFnZVByb3h5JikgeyB9Ci0gICAg
dmlydHVhbCBib29sIHByb2Nlc3NEaWRDcmFzaChXZWJLaXQ6OldlYlBhZ2VQcm94eSYpIHsgcmV0
dXJuIGZhbHNlOyB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlQmFja0ZvcndhcmRMaXN0
KFdlYktpdDo6V2ViUGFnZVByb3h5JiwgV2ViS2l0OjpXZWJCYWNrRm9yd2FyZExpc3RJdGVtKiwg
VmVjdG9yPFJlZjxXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdEl0ZW0+PiYmKSB7IH0KICAgICB2
aXJ0dWFsIGJvb2wgc2hvdWxkS2VlcEN1cnJlbnRCYWNrRm9yd2FyZExpc3RJdGVtSW5MaXN0KFdl
YktpdDo6V2ViUGFnZVByb3h5JiwgV2ViS2l0OjpXZWJCYWNrRm9yd2FyZExpc3RJdGVtJikgeyBy
ZXR1cm4gdHJ1ZTsgfQotICAgIHZpcnR1YWwgdm9pZCB3aWxsR29Ub0JhY2tGb3J3YXJkTGlzdEl0
ZW0oV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdEl0ZW0m
LCBBUEk6Ok9iamVjdCopIHsgfQotCi0gICAgdmlydHVhbCB2b2lkIGRpZE5hdmlnYXRlV2l0aE5h
dmlnYXRpb25EYXRhKFdlYktpdDo6V2ViUGFnZVByb3h5JiwgY29uc3QgV2ViS2l0OjpXZWJOYXZp
Z2F0aW9uRGF0YVN0b3JlJiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5JikgeyB9Ci0gICAgdmlydHVh
bCB2b2lkIGRpZFBlcmZvcm1DbGllbnRSZWRpcmVjdChXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIGNv
bnN0IFdURjo6U3RyaW5nJiwgY29uc3QgV1RGOjpTdHJpbmcmLCBXZWJLaXQ6OldlYkZyYW1lUHJv
eHkmKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlkUGVyZm9ybVNlcnZlclJlZGlyZWN0KFdlYktp
dDo6V2ViUGFnZVByb3h5JiwgY29uc3QgV1RGOjpTdHJpbmcmLCBjb25zdCBXVEY6OlN0cmluZyYs
IFdlYktpdDo6V2ViRnJhbWVQcm94eSYpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBkaWRVcGRhdGVI
aXN0b3J5VGl0bGUoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBjb25zdCBXVEY6OlN0cmluZyYsIGNv
bnN0IFdURjo6U3RyaW5nJiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5JikgeyB9Ci0KLSAgICB2aXJ0
dWFsIHZvaWQgbmF2aWdhdGlvbkdlc3R1cmVEaWRCZWdpbihXZWJLaXQ6OldlYlBhZ2VQcm94eSYp
IHsgfQotICAgIHZpcnR1YWwgdm9pZCBuYXZpZ2F0aW9uR2VzdHVyZVdpbGxFbmQoV2ViS2l0OjpX
ZWJQYWdlUHJveHkmLCBib29sIHdpbGxOYXZpZ2F0ZSwgV2ViS2l0OjpXZWJCYWNrRm9yd2FyZExp
c3RJdGVtJikgeyB9Ci0gICAgdmlydHVhbCB2b2lkIG5hdmlnYXRpb25HZXN0dXJlRGlkRW5kKFdl
YktpdDo6V2ViUGFnZVByb3h5JiwgYm9vbCB3aWxsTmF2aWdhdGUsIFdlYktpdDo6V2ViQmFja0Zv
cndhcmRMaXN0SXRlbSYpIHsgfQotCi0jaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCi0g
ICAgdmlydHVhbCB2b2lkIHBsdWdpbkxvYWRQb2xpY3koV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBX
ZWJLaXQ6OlBsdWdpbk1vZHVsZUxvYWRQb2xpY3kgY3VycmVudFBsdWdpbkxvYWRQb2xpY3ksIEFQ
STo6RGljdGlvbmFyeSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViS2l0OjpQbHVnaW5Nb2R1
bGVMb2FkUG9saWN5LCBjb25zdCBXVEY6OlN0cmluZyYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7
IGNvbXBsZXRpb25IYW5kbGVyKGN1cnJlbnRQbHVnaW5Mb2FkUG9saWN5LCB7IH0pOyB9Ci0gICAg
dmlydHVhbCB2b2lkIGRpZEZhaWxUb0luaXRpYWxpemVQbHVnaW4oV2ViS2l0OjpXZWJQYWdlUHJv
eHkmLCBBUEk6OkRpY3Rpb25hcnkmKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlkQmxvY2tJbnNl
Y3VyZVBsdWdpblZlcnNpb24oV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBBUEk6OkRpY3Rpb25hcnkm
KSB7IH0KLSNlbmRpZiAvLyBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKLQotI2lmIEVOQUJM
RShXRUJHTCkKLSAgICB2aXJ0dWFsIFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeSB3ZWJHTExvYWRQ
b2xpY3koV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBjb25zdCBXVEY6OlN0cmluZyYpIGNvbnN0IHsg
cmV0dXJuIFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeTo6V2ViR0xBbGxvd0NyZWF0aW9uOyB9Ci0g
ICAgdmlydHVhbCBXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kgcmVzb2x2ZVdlYkdMTG9hZFBvbGlj
eShXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIGNvbnN0IFdURjo6U3RyaW5nJikgY29uc3QgeyByZXR1
cm4gV2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5OjpXZWJHTEFsbG93Q3JlYXRpb247IH0KLSNlbmRp
ZiAvLyBFTkFCTEUoV0VCR0wpCi0KLSNpZiBVU0UoUVVJQ0tfTE9PSykKLSAgICB2aXJ0dWFsIHZv
aWQgZGlkU3RhcnRMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25zdCBXVEY6
OlN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IFdURjo6U3RyaW5nJiB1dGkpIHsgfQotICAgIHZpcnR1
YWwgdm9pZCBkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25z
dCBXZWJLaXQ6OlF1aWNrTG9va0RvY3VtZW50RGF0YSYpIHsgfQotI2VuZGlmCiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBBUEkKLQotI2VuZGlmIC8vIEFQSUxvYWRlckNsaWVudF9oCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAJKHJldmlzaW9uIDIzNTM3MSkKKysr
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEwNDIsNiArMTA0Miw0MiBAQCB2b2lkIFdLUGFnZVNldFBhZ2VMb2FkZXJDbGllbnQoV0tQ
YWdlUmVmCiAgICAgICAgIGV4cGxpY2l0IExvYWRlckNsaWVudChjb25zdCBXS1BhZ2VMb2FkZXJD
bGllbnRCYXNlKiBjbGllbnQpCiAgICAgICAgIHsKICAgICAgICAgICAgIGluaXRpYWxpemUoY2xp
ZW50KTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gV0tQYWdlU2V0UGFnZUxvYWRlckNs
aWVudCBpcyBkZXByZWNhdGVkLiBVc2UgV0tQYWdlU2V0UGFnZU5hdmlnYXRpb25DbGllbnQgaW5z
dGVhZC4KKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFtX2NsaWVudC5kaWRDb21taXRMb2Fk
Rm9yRnJhbWUpOworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIW1fY2xpZW50LmRpZEZpbmlz
aERvY3VtZW50TG9hZEZvckZyYW1lKTsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFtX2Ns
aWVudC5kaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJhbWUpOworICAgICAgICAgICAgUkVM
RUFTRV9BU1NFUlQoIW1fY2xpZW50LmRpZFJlY2VpdmVUaXRsZUZvckZyYW1lKTsKKyAgICAgICAg
ICAgIFJFTEVBU0VfQVNTRVJUKCFtX2NsaWVudC5kaWRGaXJzdExheW91dEZvckZyYW1lKTsKKyAg
ICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFtX2NsaWVudC5kaWRSZW1vdmVGcmFtZUZyb21IaWVy
YXJjaHkpOworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIW1fY2xpZW50LmRpZERpc3BsYXlJ
bnNlY3VyZUNvbnRlbnRGb3JGcmFtZSk7CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCghbV9j
bGllbnQuZGlkUnVuSW5zZWN1cmVDb250ZW50Rm9yRnJhbWUpOworICAgICAgICAgICAgUkVMRUFT
RV9BU1NFUlQoIW1fY2xpZW50LmNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2VJ
bkZyYW1lKTsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFtX2NsaWVudC5kaWRSZWNlaXZl
QXV0aGVudGljYXRpb25DaGFsbGVuZ2VJbkZyYW1lKTsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNT
RVJUKCFtX2NsaWVudC5kaWRTdGFydFByb2dyZXNzKTsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNT
RVJUKCFtX2NsaWVudC5kaWRDaGFuZ2VQcm9ncmVzcyk7CisgICAgICAgICAgICBSRUxFQVNFX0FT
U0VSVCghbV9jbGllbnQuZGlkRmluaXNoUHJvZ3Jlc3MpOworICAgICAgICAgICAgUkVMRUFTRV9B
U1NFUlQoIW1fY2xpZW50LnByb2Nlc3NEaWRCZWNvbWVVbnJlc3BvbnNpdmUpOworICAgICAgICAg
ICAgUkVMRUFTRV9BU1NFUlQoIW1fY2xpZW50LnByb2Nlc3NEaWRCZWNvbWVSZXNwb25zaXZlKTsK
KyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFtX2NsaWVudC5wcm9jZXNzRGlkQ3Jhc2gpOwor
ICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIW1fY2xpZW50LmRpZENoYW5nZUJhY2tGb3J3YXJk
TGlzdCk7CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCghbV9jbGllbnQuc2hvdWxkR29Ub0Jh
Y2tGb3J3YXJkTGlzdEl0ZW0pOworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIW1fY2xpZW50
LmRpZEZhaWxUb0luaXRpYWxpemVQbHVnaW5fZGVwcmVjYXRlZEZvclVzZVdpdGhWMCk7CisgICAg
ICAgICAgICBSRUxFQVNFX0FTU0VSVCghbV9jbGllbnQuZGlkRGV0ZWN0WFNTRm9yRnJhbWUpOwor
ICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIW1fY2xpZW50LmRpZE5ld0ZpcnN0VmlzdWFsbHlO
b25FbXB0eUxheW91dF91bmF2YWlsYWJsZSk7CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCgh
bV9jbGllbnQud2lsbEdvVG9CYWNrRm9yd2FyZExpc3RJdGVtKTsKKyAgICAgICAgICAgIFJFTEVB
U0VfQVNTRVJUKCFtX2NsaWVudC5pbnRlcmFjdGlvbk9jY3VycmVkV2hpbGVQcm9jZXNzVW5yZXNw
b25zaXZlKTsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFtX2NsaWVudC5wbHVnaW5EaWRG
YWlsX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjEpOworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQo
IW1fY2xpZW50LmRpZFJlY2VpdmVJbnRlbnRGb3JGcmFtZV91bmF2YWlsYWJsZSk7CisgICAgICAg
ICAgICBSRUxFQVNFX0FTU0VSVCghbV9jbGllbnQucmVnaXN0ZXJJbnRlbnRTZXJ2aWNlRm9yRnJh
bWVfdW5hdmFpbGFibGUpOworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIW1fY2xpZW50LnBs
dWdpbkxvYWRQb2xpY3lfZGVwcmVjYXRlZEZvclVzZVdpdGhWMik7CisgICAgICAgICAgICBSRUxF
QVNFX0FTU0VSVCghbV9jbGllbnQucGx1Z2luRGlkRmFpbCk7CisgICAgICAgICAgICBSRUxFQVNF
X0FTU0VSVCghbV9jbGllbnQucGx1Z2luTG9hZFBvbGljeSk7CisgICAgICAgICAgICBSRUxFQVNF
X0FTU0VSVCghbV9jbGllbnQud2ViR0xMb2FkUG9saWN5KTsKKyAgICAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKCFtX2NsaWVudC5yZXNvbHZlV2ViR0xMb2FkUG9saWN5KTsKKyAgICAgICAgICAgIFJF
TEVBU0VfQVNTRVJUKCFtX2NsaWVudC5uYXZpZ2F0aW9uR2VzdHVyZURpZEJlZ2luKTsKKyAgICAg
ICAgICAgIFJFTEVBU0VfQVNTRVJUKCFtX2NsaWVudC5uYXZpZ2F0aW9uR2VzdHVyZVdpbGxFbmQp
OworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIW1fY2xpZW50Lm5hdmlnYXRpb25HZXN0dXJl
RGlkRW5kKTsKICAgICAgICAgfQogCiAgICAgcHJpdmF0ZToKQEAgLTEwNjksMjIgKzExMDUsNiBA
QCB2b2lkIFdLUGFnZVNldFBhZ2VMb2FkZXJDbGllbnQoV0tQYWdlUmVmCiAgICAgICAgICAgICBt
X2NsaWVudC5kaWRGYWlsUHJvdmlzaW9uYWxMb2FkV2l0aEVycm9yRm9yRnJhbWUodG9BUEkoJnBh
Z2UpLCB0b0FQSSgmZnJhbWUpLCB0b0FQSShlcnJvciksIHRvQVBJKHVzZXJEYXRhKSwgbV9jbGll
bnQuYmFzZS5jbGllbnRJbmZvKTsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQgZGlkQ29tbWl0
TG9hZEZvckZyYW1lKFdlYlBhZ2VQcm94eSYgcGFnZSwgV2ViRnJhbWVQcm94eSYgZnJhbWUsIEFQ
STo6TmF2aWdhdGlvbiosIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSkgb3ZlcnJpZGUKLSAgICAgICAg
ewotICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRDb21taXRMb2FkRm9yRnJhbWUpCi0gICAg
ICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgICAgICBtX2NsaWVudC5kaWRDb21taXRMb2Fk
Rm9yRnJhbWUodG9BUEkoJnBhZ2UpLCB0b0FQSSgmZnJhbWUpLCB0b0FQSSh1c2VyRGF0YSksIG1f
Y2xpZW50LmJhc2UuY2xpZW50SW5mbyk7Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIGRpZEZp
bmlzaERvY3VtZW50TG9hZEZvckZyYW1lKFdlYlBhZ2VQcm94eSYgcGFnZSwgV2ViRnJhbWVQcm94
eSYgZnJhbWUsIEFQSTo6TmF2aWdhdGlvbiosIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSkgb3ZlcnJp
ZGUKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRGaW5pc2hEb2N1bWVu
dExvYWRGb3JGcmFtZSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgICAgIG1f
Y2xpZW50LmRpZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1lKHRvQVBJKCZwYWdlKSwgdG9BUEko
JmZyYW1lKSwgdG9BUEkodXNlckRhdGEpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotICAg
ICAgICB9Ci0KICAgICAgICAgdm9pZCBkaWRGaW5pc2hMb2FkRm9yRnJhbWUoV2ViUGFnZVByb3h5
JiBwYWdlLCBXZWJGcmFtZVByb3h5JiBmcmFtZSwgQVBJOjpOYXZpZ2F0aW9uKiwgQVBJOjpPYmpl
Y3QqIHVzZXJEYXRhKSBvdmVycmlkZQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoIW1fY2xp
ZW50LmRpZEZpbmlzaExvYWRGb3JGcmFtZSkKQEAgLTExMDEsMzAgKzExMjEsNiBAQCB2b2lkIFdL
UGFnZVNldFBhZ2VMb2FkZXJDbGllbnQoV0tQYWdlUmVmCiAgICAgICAgICAgICBtX2NsaWVudC5k
aWRGYWlsTG9hZFdpdGhFcnJvckZvckZyYW1lKHRvQVBJKCZwYWdlKSwgdG9BUEkoJmZyYW1lKSwg
dG9BUEkoZXJyb3IpLCB0b0FQSSh1c2VyRGF0YSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7
CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkIGRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JG
cmFtZShXZWJQYWdlUHJveHkmIHBhZ2UsIFdlYkZyYW1lUHJveHkmIGZyYW1lLCBBUEk6Ok5hdmln
YXRpb24qLCBTYW1lRG9jdW1lbnROYXZpZ2F0aW9uVHlwZSB0eXBlLCBBUEk6Ok9iamVjdCogdXNl
ckRhdGEpIG92ZXJyaWRlCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICghbV9jbGllbnQuZGlk
U2FtZURvY3VtZW50TmF2aWdhdGlvbkZvckZyYW1lKQotICAgICAgICAgICAgICAgIHJldHVybjsK
LQotICAgICAgICAgICAgbV9jbGllbnQuZGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbkZvckZyYW1l
KHRvQVBJKCZwYWdlKSwgdG9BUEkoJmZyYW1lKSwgdG9BUEkodHlwZSksIHRvQVBJKHVzZXJEYXRh
KSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKLSAgICAgICAgfQotCi0gICAgICAgIHZvaWQg
ZGlkUmVjZWl2ZVRpdGxlRm9yRnJhbWUoV2ViUGFnZVByb3h5JiBwYWdlLCBjb25zdCBTdHJpbmcm
IHRpdGxlLCBXZWJGcmFtZVByb3h5JiBmcmFtZSwgQVBJOjpPYmplY3QqIHVzZXJEYXRhKSBvdmVy
cmlkZQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRpZFJlY2VpdmVUaXRs
ZUZvckZyYW1lKQotICAgICAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAgICAgbV9jbGll
bnQuZGlkUmVjZWl2ZVRpdGxlRm9yRnJhbWUodG9BUEkoJnBhZ2UpLCB0b0FQSSh0aXRsZS5pbXBs
KCkpLCB0b0FQSSgmZnJhbWUpLCB0b0FQSSh1c2VyRGF0YSksIG1fY2xpZW50LmJhc2UuY2xpZW50
SW5mbyk7Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIGRpZEZpcnN0TGF5b3V0Rm9yRnJhbWUo
V2ViUGFnZVByb3h5JiBwYWdlLCBXZWJGcmFtZVByb3h5JiBmcmFtZSwgQVBJOjpPYmplY3QqIHVz
ZXJEYXRhKSBvdmVycmlkZQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRp
ZEZpcnN0TGF5b3V0Rm9yRnJhbWUpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAg
ICAgICBtX2NsaWVudC5kaWRGaXJzdExheW91dEZvckZyYW1lKHRvQVBJKCZwYWdlKSwgdG9BUEko
JmZyYW1lKSwgdG9BUEkodXNlckRhdGEpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotICAg
ICAgICB9Ci0KICAgICAgICAgdm9pZCBkaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGb3JG
cmFtZShXZWJQYWdlUHJveHkmIHBhZ2UsIFdlYkZyYW1lUHJveHkmIGZyYW1lLCBBUEk6Ok9iamVj
dCogdXNlckRhdGEpIG92ZXJyaWRlCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmICghbV9jbGll
bnQuZGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0Rm9yRnJhbWUpCkBAIC0xMTQxLDEwNyAr
MTEzNyw2IEBAIHZvaWQgV0tQYWdlU2V0UGFnZUxvYWRlckNsaWVudChXS1BhZ2VSZWYKICAgICAg
ICAgICAgIG1fY2xpZW50LmRpZExheW91dCh0b0FQSSgmcGFnZSksIHRvV0tMYXlvdXRNaWxlc3Rv
bmVzKG1pbGVzdG9uZXMpLCBudWxscHRyLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwogICAg
ICAgICB9CiAKLSAgICAgICAgdm9pZCBkaWREaXNwbGF5SW5zZWN1cmVDb250ZW50Rm9yRnJhbWUo
V2ViUGFnZVByb3h5JiBwYWdlLCBXZWJGcmFtZVByb3h5JiBmcmFtZSwgQVBJOjpPYmplY3QqIHVz
ZXJEYXRhKSBvdmVycmlkZQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRp
ZERpc3BsYXlJbnNlY3VyZUNvbnRlbnRGb3JGcmFtZSkKLSAgICAgICAgICAgICAgICByZXR1cm47
Ci0KLSAgICAgICAgICAgIG1fY2xpZW50LmRpZERpc3BsYXlJbnNlY3VyZUNvbnRlbnRGb3JGcmFt
ZSh0b0FQSSgmcGFnZSksIHRvQVBJKCZmcmFtZSksIHRvQVBJKHVzZXJEYXRhKSwgbV9jbGllbnQu
YmFzZS5jbGllbnRJbmZvKTsKLSAgICAgICAgfQotCi0gICAgICAgIHZvaWQgZGlkUnVuSW5zZWN1
cmVDb250ZW50Rm9yRnJhbWUoV2ViUGFnZVByb3h5JiBwYWdlLCBXZWJGcmFtZVByb3h5JiBmcmFt
ZSwgQVBJOjpPYmplY3QqIHVzZXJEYXRhKSBvdmVycmlkZQotICAgICAgICB7Ci0gICAgICAgICAg
ICBpZiAoIW1fY2xpZW50LmRpZFJ1bkluc2VjdXJlQ29udGVudEZvckZyYW1lKQotICAgICAgICAg
ICAgICAgIHJldHVybjsKLQotICAgICAgICAgICAgbV9jbGllbnQuZGlkUnVuSW5zZWN1cmVDb250
ZW50Rm9yRnJhbWUodG9BUEkoJnBhZ2UpLCB0b0FQSSgmZnJhbWUpLCB0b0FQSSh1c2VyRGF0YSks
IG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIGRp
ZERldGVjdFhTU0ZvckZyYW1lKFdlYlBhZ2VQcm94eSYgcGFnZSwgV2ViRnJhbWVQcm94eSYgZnJh
bWUsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSkgb3ZlcnJpZGUKLSAgICAgICAgewotICAgICAgICAg
ICAgaWYgKCFtX2NsaWVudC5kaWREZXRlY3RYU1NGb3JGcmFtZSkKLSAgICAgICAgICAgICAgICBy
ZXR1cm47Ci0KLSAgICAgICAgICAgIG1fY2xpZW50LmRpZERldGVjdFhTU0ZvckZyYW1lKHRvQVBJ
KCZwYWdlKSwgdG9BUEkoJmZyYW1lKSwgdG9BUEkodXNlckRhdGEpLCBtX2NsaWVudC5iYXNlLmNs
aWVudEluZm8pOwotICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2VJbkZyYW1lKFdlYlBhZ2VQcm94eSYgcGFnZSwgV2ViRnJhbWVQcm94eSYg
ZnJhbWUsIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkmIGF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlKSBvdmVycmlkZQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAobV9jbGllbnQuY2FuQXV0
aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZUluRnJhbWUgJiYgIW1fY2xpZW50LmNhbkF1
dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2VJbkZyYW1lKHRvQVBJKCZwYWdlKSwgdG9B
UEkoJmZyYW1lKSwgdG9BUEkoYXV0aGVudGljYXRpb25DaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNl
KCkpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pKQotICAgICAgICAgICAgICAgIHJldHVybiBh
dXRoZW50aWNhdGlvbkNoYWxsZW5nZS5yZWplY3RQcm90ZWN0aW9uU3BhY2VBbmRDb250aW51ZSgp
OwotICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFs
bGVuZ2VJbkZyYW1lKQotICAgICAgICAgICAgICAgIHJldHVybiBhdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZS5wZXJmb3JtRGVmYXVsdEhhbmRsaW5nKCk7Ci0KLSAgICAgICAgICAgIG1fY2xpZW50LmRp
ZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUluRnJhbWUodG9BUEkoJnBhZ2UpLCB0b0FQ
SSgmZnJhbWUpLCB0b0FQSSgmYXV0aGVudGljYXRpb25DaGFsbGVuZ2UpLCBtX2NsaWVudC5iYXNl
LmNsaWVudEluZm8pOwotICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCBkaWRTdGFydFByb2dyZXNz
KFdlYlBhZ2VQcm94eSYgcGFnZSkgb3ZlcnJpZGUKLSAgICAgICAgewotICAgICAgICAgICAgaWYg
KCFtX2NsaWVudC5kaWRTdGFydFByb2dyZXNzKQotICAgICAgICAgICAgICAgIHJldHVybjsKLQot
ICAgICAgICAgICAgbV9jbGllbnQuZGlkU3RhcnRQcm9ncmVzcyh0b0FQSSgmcGFnZSksIG1fY2xp
ZW50LmJhc2UuY2xpZW50SW5mbyk7Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIGRpZENoYW5n
ZVByb2dyZXNzKFdlYlBhZ2VQcm94eSYgcGFnZSkgb3ZlcnJpZGUKLSAgICAgICAgewotICAgICAg
ICAgICAgaWYgKCFtX2NsaWVudC5kaWRDaGFuZ2VQcm9ncmVzcykKLSAgICAgICAgICAgICAgICBy
ZXR1cm47Ci0KLSAgICAgICAgICAgIG1fY2xpZW50LmRpZENoYW5nZVByb2dyZXNzKHRvQVBJKCZw
YWdlKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKLSAgICAgICAgfQotCi0gICAgICAgIHZv
aWQgZGlkRmluaXNoUHJvZ3Jlc3MoV2ViUGFnZVByb3h5JiBwYWdlKSBvdmVycmlkZQotICAgICAg
ICB7Ci0gICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRpZEZpbmlzaFByb2dyZXNzKQotICAgICAg
ICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAgICAgbV9jbGllbnQuZGlkRmluaXNoUHJvZ3Jl
c3ModG9BUEkoJnBhZ2UpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotICAgICAgICB9Ci0K
LSAgICAgICAgdm9pZCBwcm9jZXNzRGlkQmVjb21lVW5yZXNwb25zaXZlKFdlYlBhZ2VQcm94eSYg
cGFnZSkgb3ZlcnJpZGUKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5wcm9j
ZXNzRGlkQmVjb21lVW5yZXNwb25zaXZlKQotICAgICAgICAgICAgICAgIHJldHVybjsKLQotICAg
ICAgICAgICAgbV9jbGllbnQucHJvY2Vzc0RpZEJlY29tZVVucmVzcG9uc2l2ZSh0b0FQSSgmcGFn
ZSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lk
IHByb2Nlc3NEaWRCZWNvbWVSZXNwb25zaXZlKFdlYlBhZ2VQcm94eSYgcGFnZSkgb3ZlcnJpZGUK
LSAgICAgICAgewotICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5wcm9jZXNzRGlkQmVjb21lUmVz
cG9uc2l2ZSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgICAgIG1fY2xpZW50
LnByb2Nlc3NEaWRCZWNvbWVSZXNwb25zaXZlKHRvQVBJKCZwYWdlKSwgbV9jbGllbnQuYmFzZS5j
bGllbnRJbmZvKTsKLSAgICAgICAgfQotCi0gICAgICAgIGJvb2wgcHJvY2Vzc0RpZENyYXNoKFdl
YlBhZ2VQcm94eSYgcGFnZSkgb3ZlcnJpZGUKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKCFt
X2NsaWVudC5wcm9jZXNzRGlkQ3Jhc2gpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwot
Ci0gICAgICAgICAgICBtX2NsaWVudC5wcm9jZXNzRGlkQ3Jhc2godG9BUEkoJnBhZ2UpLCBtX2Ns
aWVudC5iYXNlLmNsaWVudEluZm8pOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAg
IH0KLQotICAgICAgICB2b2lkIGRpZENoYW5nZUJhY2tGb3J3YXJkTGlzdChXZWJQYWdlUHJveHkm
IHBhZ2UsIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qIGFkZGVkSXRlbSwgVmVjdG9yPFJlZjxXZWJC
YWNrRm9yd2FyZExpc3RJdGVtPj4mJiByZW1vdmVkSXRlbXMpIG92ZXJyaWRlCi0gICAgICAgIHsK
LSAgICAgICAgICAgIGlmICghbV9jbGllbnQuZGlkQ2hhbmdlQmFja0ZvcndhcmRMaXN0KQotICAg
ICAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAgICAgUmVmUHRyPEFQSTo6QXJyYXk+IHJl
bW92ZWRJdGVtc0FycmF5OwotICAgICAgICAgICAgaWYgKCFyZW1vdmVkSXRlbXMuaXNFbXB0eSgp
KSB7Ci0gICAgICAgICAgICAgICAgVmVjdG9yPFJlZlB0cjxBUEk6Ok9iamVjdD4+IHJlbW92ZWRJ
dGVtc1ZlY3RvcjsKLSAgICAgICAgICAgICAgICByZW1vdmVkSXRlbXNWZWN0b3IucmVzZXJ2ZUlu
aXRpYWxDYXBhY2l0eShyZW1vdmVkSXRlbXMuc2l6ZSgpKTsKLSAgICAgICAgICAgICAgICBmb3Ig
KGF1dG8mIHJlbW92ZWRJdGVtIDogcmVtb3ZlZEl0ZW1zKQotICAgICAgICAgICAgICAgICAgICBy
ZW1vdmVkSXRlbXNWZWN0b3IuYXBwZW5kKFdURk1vdmUocmVtb3ZlZEl0ZW0pKTsKLQotICAgICAg
ICAgICAgICAgIHJlbW92ZWRJdGVtc0FycmF5ID0gQVBJOjpBcnJheTo6Y3JlYXRlKFdURk1vdmUo
cmVtb3ZlZEl0ZW1zVmVjdG9yKSk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIG1fY2xp
ZW50LmRpZENoYW5nZUJhY2tGb3J3YXJkTGlzdCh0b0FQSSgmcGFnZSksIHRvQVBJKGFkZGVkSXRl
bSksIHRvQVBJKHJlbW92ZWRJdGVtc0FycmF5LmdldCgpKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJ
bmZvKTsKLSAgICAgICAgfQotCiAgICAgICAgIGJvb2wgc2hvdWxkS2VlcEN1cnJlbnRCYWNrRm9y
d2FyZExpc3RJdGVtSW5MaXN0KFdlYktpdDo6V2ViUGFnZVByb3h5JiBwYWdlLCBXZWJLaXQ6Oldl
YkJhY2tGb3J3YXJkTGlzdEl0ZW0mIGl0ZW0pIG92ZXJyaWRlCiAgICAgICAgIHsKICAgICAgICAg
ICAgIGlmICghbV9jbGllbnQuc2hvdWxkS2VlcEN1cnJlbnRCYWNrRm9yd2FyZExpc3RJdGVtSW5M
aXN0KQpAQCAtMTI0OSw5NSArMTE0NCw2IEBAIHZvaWQgV0tQYWdlU2V0UGFnZUxvYWRlckNsaWVu
dChXS1BhZ2VSZWYKIAogICAgICAgICAgICAgcmV0dXJuIG1fY2xpZW50LnNob3VsZEtlZXBDdXJy
ZW50QmFja0ZvcndhcmRMaXN0SXRlbUluTGlzdCh0b0FQSSgmcGFnZSksIHRvQVBJKCZpdGVtKSwg
bV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKICAgICAgICAgfQotCi0gICAgICAgIHZvaWQgd2ls
bEdvVG9CYWNrRm9yd2FyZExpc3RJdGVtKFdlYlBhZ2VQcm94eSYgcGFnZSwgV2ViQmFja0Zvcndh
cmRMaXN0SXRlbSYgaXRlbSwgQVBJOjpPYmplY3QqIHVzZXJEYXRhKSBvdmVycmlkZQotICAgICAg
ICB7Ci0gICAgICAgICAgICBpZiAobV9jbGllbnQud2lsbEdvVG9CYWNrRm9yd2FyZExpc3RJdGVt
KQotICAgICAgICAgICAgICAgIG1fY2xpZW50LndpbGxHb1RvQmFja0ZvcndhcmRMaXN0SXRlbSh0
b0FQSSgmcGFnZSksIHRvQVBJKCZpdGVtKSwgdG9BUEkodXNlckRhdGEpLCBtX2NsaWVudC5iYXNl
LmNsaWVudEluZm8pOwotICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCBuYXZpZ2F0aW9uR2VzdHVy
ZURpZEJlZ2luKFdlYlBhZ2VQcm94eSYgcGFnZSkgb3ZlcnJpZGUKLSAgICAgICAgewotICAgICAg
ICAgICAgaWYgKG1fY2xpZW50Lm5hdmlnYXRpb25HZXN0dXJlRGlkQmVnaW4pCi0gICAgICAgICAg
ICAgICAgbV9jbGllbnQubmF2aWdhdGlvbkdlc3R1cmVEaWRCZWdpbih0b0FQSSgmcGFnZSksIG1f
Y2xpZW50LmJhc2UuY2xpZW50SW5mbyk7Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIG5hdmln
YXRpb25HZXN0dXJlV2lsbEVuZChXZWJQYWdlUHJveHkmIHBhZ2UsIGJvb2wgd2lsbE5hdmlnYXRl
LCBXZWJCYWNrRm9yd2FyZExpc3RJdGVtJiBpdGVtKSBvdmVycmlkZQotICAgICAgICB7Ci0gICAg
ICAgICAgICBpZiAobV9jbGllbnQubmF2aWdhdGlvbkdlc3R1cmVXaWxsRW5kKQotICAgICAgICAg
ICAgICAgIG1fY2xpZW50Lm5hdmlnYXRpb25HZXN0dXJlV2lsbEVuZCh0b0FQSSgmcGFnZSksIHdp
bGxOYXZpZ2F0ZSwgdG9BUEkoJml0ZW0pLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotICAg
ICAgICB9Ci0KLSAgICAgICAgdm9pZCBuYXZpZ2F0aW9uR2VzdHVyZURpZEVuZChXZWJQYWdlUHJv
eHkmIHBhZ2UsIGJvb2wgd2lsbE5hdmlnYXRlLCBXZWJCYWNrRm9yd2FyZExpc3RJdGVtJiBpdGVt
KSBvdmVycmlkZQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAobV9jbGllbnQubmF2aWdhdGlv
bkdlc3R1cmVEaWRFbmQpCi0gICAgICAgICAgICAgICAgbV9jbGllbnQubmF2aWdhdGlvbkdlc3R1
cmVEaWRFbmQodG9BUEkoJnBhZ2UpLCB3aWxsTmF2aWdhdGUsIHRvQVBJKCZpdGVtKSwgbV9jbGll
bnQuYmFzZS5jbGllbnRJbmZvKTsKLSAgICAgICAgfQotCi0jaWYgRU5BQkxFKE5FVFNDQVBFX1BM
VUdJTl9BUEkpCi0gICAgICAgIHZvaWQgZGlkRmFpbFRvSW5pdGlhbGl6ZVBsdWdpbihXZWJQYWdl
UHJveHkmIHBhZ2UsIEFQSTo6RGljdGlvbmFyeSYgcGx1Z2luSW5mb3JtYXRpb24pIGZpbmFsCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIGlmIChtX2NsaWVudC5kaWRGYWlsVG9Jbml0aWFsaXplUGx1
Z2luX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjApCi0gICAgICAgICAgICAgICAgbV9jbGllbnQuZGlk
RmFpbFRvSW5pdGlhbGl6ZVBsdWdpbl9kZXByZWNhdGVkRm9yVXNlV2l0aFYwKHRvQVBJKCZwYWdl
KSwgdG9BUEkocGx1Z2luSW5mb3JtYXRpb24uZ2V0PEFQSTo6U3RyaW5nPihwbHVnaW5JbmZvcm1h
dGlvbk1JTUVUeXBlS2V5KCkpKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKLQotICAgICAg
ICAgICAgaWYgKG1fY2xpZW50LnBsdWdpbkRpZEZhaWxfZGVwcmVjYXRlZEZvclVzZVdpdGhWMSkK
LSAgICAgICAgICAgICAgICBtX2NsaWVudC5wbHVnaW5EaWRGYWlsX2RlcHJlY2F0ZWRGb3JVc2VX
aXRoVjEodG9BUEkoJnBhZ2UpLCBrV0tFcnJvckNvZGVDYW5ub3RMb2FkUGx1Z0luLCB0b0FQSShw
bHVnaW5JbmZvcm1hdGlvbi5nZXQ8QVBJOjpTdHJpbmc+KHBsdWdpbkluZm9ybWF0aW9uTUlNRVR5
cGVLZXkoKSkpLCAwLCAwLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotCi0gICAgICAgICAg
ICBpZiAobV9jbGllbnQucGx1Z2luRGlkRmFpbCkKLSAgICAgICAgICAgICAgICBtX2NsaWVudC5w
bHVnaW5EaWRGYWlsKHRvQVBJKCZwYWdlKSwga1dLRXJyb3JDb2RlQ2Fubm90TG9hZFBsdWdJbiwg
dG9BUEkoJnBsdWdpbkluZm9ybWF0aW9uKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKLSAg
ICAgICAgfQotCi0gICAgICAgIHZvaWQgZGlkQmxvY2tJbnNlY3VyZVBsdWdpblZlcnNpb24oV2Vi
UGFnZVByb3h5JiBwYWdlLCBBUEk6OkRpY3Rpb25hcnkmIHBsdWdpbkluZm9ybWF0aW9uKSBvdmVy
cmlkZQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAobV9jbGllbnQucGx1Z2luRGlkRmFpbF9k
ZXByZWNhdGVkRm9yVXNlV2l0aFYxKQotICAgICAgICAgICAgICAgIG1fY2xpZW50LnBsdWdpbkRp
ZEZhaWxfZGVwcmVjYXRlZEZvclVzZVdpdGhWMSh0b0FQSSgmcGFnZSksIGtXS0Vycm9yQ29kZUlu
c2VjdXJlUGx1Z0luVmVyc2lvbiwgdG9BUEkocGx1Z2luSW5mb3JtYXRpb24uZ2V0PEFQSTo6U3Ry
aW5nPihwbHVnaW5JbmZvcm1hdGlvbk1JTUVUeXBlS2V5KCkpKSwgdG9BUEkocGx1Z2luSW5mb3Jt
YXRpb24uZ2V0PEFQSTo6U3RyaW5nPihwbHVnaW5JbmZvcm1hdGlvbkJ1bmRsZUlkZW50aWZpZXJL
ZXkoKSkpLCB0b0FQSShwbHVnaW5JbmZvcm1hdGlvbi5nZXQ8QVBJOjpTdHJpbmc+KHBsdWdpbklu
Zm9ybWF0aW9uQnVuZGxlVmVyc2lvbktleSgpKSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7
Ci0KLSAgICAgICAgICAgIGlmIChtX2NsaWVudC5wbHVnaW5EaWRGYWlsKQotICAgICAgICAgICAg
ICAgIG1fY2xpZW50LnBsdWdpbkRpZEZhaWwodG9BUEkoJnBhZ2UpLCBrV0tFcnJvckNvZGVJbnNl
Y3VyZVBsdWdJblZlcnNpb24sIHRvQVBJKCZwbHVnaW5JbmZvcm1hdGlvbiksIG1fY2xpZW50LmJh
c2UuY2xpZW50SW5mbyk7Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIHBsdWdpbkxvYWRQb2xp
Y3koV2ViUGFnZVByb3h5JiBwYWdlLCBQbHVnaW5Nb2R1bGVMb2FkUG9saWN5IGN1cnJlbnRQbHVn
aW5Mb2FkUG9saWN5LCBBUEk6OkRpY3Rpb25hcnkmIHBsdWdpbkluZm9ybWF0aW9uLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFdlYktpdDo6UGx1Z2luTW9kdWxlTG9hZFBvbGljeSwgY29uc3QgU3Ry
aW5nJik+JiYgY29tcGxldGlvbkhhbmRsZXIpIG92ZXJyaWRlCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIFdLU3RyaW5nUmVmIHVuYXZhaWxhYmlsaXR5RGVzY3JpcHRpb25PdXQgPSAwOwotICAgICAg
ICAgICAgUGx1Z2luTW9kdWxlTG9hZFBvbGljeSBsb2FkUG9saWN5ID0gY3VycmVudFBsdWdpbkxv
YWRQb2xpY3k7Ci0KLSAgICAgICAgICAgIGlmIChtX2NsaWVudC5wbHVnaW5Mb2FkUG9saWN5X2Rl
cHJlY2F0ZWRGb3JVc2VXaXRoVjIpCi0gICAgICAgICAgICAgICAgbG9hZFBvbGljeSA9IHRvUGx1
Z2luTW9kdWxlTG9hZFBvbGljeShtX2NsaWVudC5wbHVnaW5Mb2FkUG9saWN5X2RlcHJlY2F0ZWRG
b3JVc2VXaXRoVjIodG9BUEkoJnBhZ2UpLCB0b1dLUGx1Z2luTG9hZFBvbGljeShjdXJyZW50UGx1
Z2luTG9hZFBvbGljeSksIHRvQVBJKCZwbHVnaW5JbmZvcm1hdGlvbiksIG1fY2xpZW50LmJhc2Uu
Y2xpZW50SW5mbykpOwotICAgICAgICAgICAgZWxzZSBpZiAobV9jbGllbnQucGx1Z2luTG9hZFBv
bGljeSkKLSAgICAgICAgICAgICAgICBsb2FkUG9saWN5ID0gdG9QbHVnaW5Nb2R1bGVMb2FkUG9s
aWN5KG1fY2xpZW50LnBsdWdpbkxvYWRQb2xpY3kodG9BUEkoJnBhZ2UpLCB0b1dLUGx1Z2luTG9h
ZFBvbGljeShjdXJyZW50UGx1Z2luTG9hZFBvbGljeSksIHRvQVBJKCZwbHVnaW5JbmZvcm1hdGlv
biksICZ1bmF2YWlsYWJpbGl0eURlc2NyaXB0aW9uT3V0LCBtX2NsaWVudC5iYXNlLmNsaWVudElu
Zm8pKTsKLQotICAgICAgICAgICAgU3RyaW5nIHVuYXZhaWxhYmlsaXR5RGVzY3JpcHRpb247Ci0g
ICAgICAgICAgICBpZiAodW5hdmFpbGFiaWxpdHlEZXNjcmlwdGlvbk91dCkgewotICAgICAgICAg
ICAgICAgIFJlZlB0cjxBUEk6OlN0cmluZz4gd2ViVW5hdmFpbGFiaWxpdHlEZXNjcmlwdGlvbiA9
IGFkb3B0UmVmKHRvSW1wbCh1bmF2YWlsYWJpbGl0eURlc2NyaXB0aW9uT3V0KSk7Ci0gICAgICAg
ICAgICAgICAgdW5hdmFpbGFiaWxpdHlEZXNjcmlwdGlvbiA9IHdlYlVuYXZhaWxhYmlsaXR5RGVz
Y3JpcHRpb24tPnN0cmluZygpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgCi0gICAgICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihsb2FkUG9saWN5LCB1bmF2YWlsYWJpbGl0eURlc2NyaXB0
aW9uKTsKLSAgICAgICAgfQotI2VuZGlmIC8vIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQot
Ci0jaWYgRU5BQkxFKFdFQkdMKQotICAgICAgICBXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kgd2Vi
R0xMb2FkUG9saWN5KFdlYlBhZ2VQcm94eSYgcGFnZSwgY29uc3QgU3RyaW5nJiB1cmwpIGNvbnN0
IG92ZXJyaWRlCi0gICAgICAgIHsKLSAgICAgICAgICAgIFdlYkNvcmU6OldlYkdMTG9hZFBvbGlj
eSBsb2FkUG9saWN5ID0gV2ViR0xBbGxvd0NyZWF0aW9uOwotCi0gICAgICAgICAgICBpZiAobV9j
bGllbnQud2ViR0xMb2FkUG9saWN5KQotICAgICAgICAgICAgICAgIGxvYWRQb2xpY3kgPSB0b1dl
YkdMTG9hZFBvbGljeShtX2NsaWVudC53ZWJHTExvYWRQb2xpY3kodG9BUEkoJnBhZ2UpLCB0b0FQ
SSh1cmwuaW1wbCgpKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKSk7Ci0KLSAgICAgICAgICAg
IHJldHVybiBsb2FkUG9saWN5OwotICAgICAgICB9Ci0KLSAgICAgICAgV2ViQ29yZTo6V2ViR0xM
b2FkUG9saWN5IHJlc29sdmVXZWJHTExvYWRQb2xpY3koV2ViUGFnZVByb3h5JiBwYWdlLCBjb25z
dCBTdHJpbmcmIHVybCkgY29uc3Qgb3ZlcnJpZGUKLSAgICAgICAgewotICAgICAgICAgICAgV2Vi
Q29yZTo6V2ViR0xMb2FkUG9saWN5IGxvYWRQb2xpY3kgPSBXZWJHTEFsbG93Q3JlYXRpb247Ci0K
LSAgICAgICAgICAgIGlmIChtX2NsaWVudC5yZXNvbHZlV2ViR0xMb2FkUG9saWN5KQotICAgICAg
ICAgICAgICAgIGxvYWRQb2xpY3kgPSB0b1dlYkdMTG9hZFBvbGljeShtX2NsaWVudC5yZXNvbHZl
V2ViR0xMb2FkUG9saWN5KHRvQVBJKCZwYWdlKSwgdG9BUEkodXJsLmltcGwoKSksIG1fY2xpZW50
LmJhc2UuY2xpZW50SW5mbykpOwotCi0gICAgICAgICAgICByZXR1cm4gbG9hZFBvbGljeTsKLSAg
ICAgICAgfQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdMKQogICAgIH07CiAKICAgICBXZWJQYWdl
UHJveHkqIHdlYlBhZ2VQcm94eSA9IHRvSW1wbChwYWdlUmVmKTsKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQkocmV2aXNpb24gMjM1Mzcx
KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQkod29y
a2luZyBjb3B5KQpAQCAtMTEyNSwxNiArMTEyNSwxMiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlk
U3RhcnRMb2FkRm9yUXVpY2tMCiAgICAgc3RhdGljX2Fzc2VydChub3RGb3VuZCArIDEgPT0gMCwg
IlRoZSBmb2xsb3dpbmcgbGluZSBhc3N1bWVzIFdURjo6bm90Rm91bmQgZXF1YWxzIC0xIik7CiAg
ICAgaWYgKG1fbmF2aWdhdGlvbkNsaWVudCkKICAgICAgICAgbV9uYXZpZ2F0aW9uQ2xpZW50LT5k
aWRTdGFydExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGZpbGVOYW1lLnN1YnN0
cmluZyhmaWxlTmFtZS5yZXZlcnNlRmluZCgnLycpICsgMSksIHV0aSk7Ci0gICAgZWxzZQotICAg
ICAgICBtX2xvYWRlckNsaWVudC0+ZGlkU3RhcnRMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1h
aW5GcmFtZShmaWxlTmFtZS5zdWJzdHJpbmcoZmlsZU5hbWUucmV2ZXJzZUZpbmQoJy8nKSArIDEp
LCB1dGkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmluaXNoTG9hZEZvclF1aWNrTG9v
a0RvY3VtZW50SW5NYWluRnJhbWUoY29uc3QgUXVpY2tMb29rRG9jdW1lbnREYXRhJiBkYXRhKQog
ewogICAgIGlmIChtX25hdmlnYXRpb25DbGllbnQpCiAgICAgICAgIG1fbmF2aWdhdGlvbkNsaWVu
dC0+ZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUoZGF0YSk7Ci0g
ICAgZWxzZQotICAgICAgICBtX2xvYWRlckNsaWVudC0+ZGlkRmluaXNoTG9hZEZvclF1aWNrTG9v
a0RvY3VtZW50SW5NYWluRnJhbWUoZGF0YSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRS
ZXF1ZXN0UGFzc3dvcmRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGNvbnN0IFN0cmlu
ZyYgZmlsZU5hbWUpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>348182</attachid>
            <date>2018-08-27 12:06:46 -0700</date>
            <delta_ts>2018-08-27 12:30:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-188997-20180827120645.patch</filename>
            <type>text/plain</type>
            <size>43378</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMzUzODkpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg0IEBACisyMDE4LTA4LTI3ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVtb3ZlIG1vc3Qg
b2YgTG9hZGVyQ2xpZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xODg5OTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBXZSBzdGlsbCBoYXZlIGEgZmV3IGNsaWVudHMgdXNpbmcgYmFzaWMgZnVuY3Rpb25h
bGl0eSB0aGF0IGFyZSB0cmFuc2l0aW9uaW5nIHRvIFdLUGFnZU5hdmlnYXRpb25DbGllbnQsCisg
ICAgICAgIGJ1dCBtb3N0IG9mIGl0IGNhbiBiZSByZW1vdmVkLgorCisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9BUElMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKEFQSTo6TG9hZGVyQ2xpZW50Ojp+
TG9hZGVyQ2xpZW50KToKKyAgICAgICAgKEFQSTo6TG9hZGVyQ2xpZW50OjpkaWRGYWlsUHJvdmlz
aW9uYWxMb2FkV2l0aEVycm9yRm9yRnJhbWUpOgorICAgICAgICAoQVBJOjpMb2FkZXJDbGllbnQ6
OmRpZEZhaWxMb2FkV2l0aEVycm9yRm9yRnJhbWUpOgorICAgICAgICAoQVBJOjpMb2FkZXJDbGll
bnQ6OmRpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZvckZyYW1lKToKKyAgICAgICAgKEFQ
STo6TG9hZGVyQ2xpZW50OjpkaWRSZWFjaExheW91dE1pbGVzdG9uZSk6CisgICAgICAgIChBUEk6
OkxvYWRlckNsaWVudDo6c2hvdWxkS2VlcEN1cnJlbnRCYWNrRm9yd2FyZExpc3RJdGVtSW5MaXN0
KToKKyAgICAgICAgKEFQSTo6TG9hZGVyQ2xpZW50OjpkaWRDb21taXRMb2FkRm9yRnJhbWUpOiBE
ZWxldGVkLgorICAgICAgICAoQVBJOjpMb2FkZXJDbGllbnQ6OmRpZEZpbmlzaERvY3VtZW50TG9h
ZEZvckZyYW1lKTogRGVsZXRlZC4KKyAgICAgICAgKEFQSTo6TG9hZGVyQ2xpZW50OjpkaWRTYW1l
RG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJhbWUpOiBEZWxldGVkLgorICAgICAgICAoQVBJOjpMb2Fk
ZXJDbGllbnQ6OmRpZFJlY2VpdmVUaXRsZUZvckZyYW1lKTogRGVsZXRlZC4KKyAgICAgICAgKEFQ
STo6TG9hZGVyQ2xpZW50OjpkaWRGaXJzdExheW91dEZvckZyYW1lKTogRGVsZXRlZC4KKyAgICAg
ICAgKEFQSTo6TG9hZGVyQ2xpZW50OjpkaWREaXNwbGF5SW5zZWN1cmVDb250ZW50Rm9yRnJhbWUp
OiBEZWxldGVkLgorICAgICAgICAoQVBJOjpMb2FkZXJDbGllbnQ6OmRpZFJ1bkluc2VjdXJlQ29u
dGVudEZvckZyYW1lKTogRGVsZXRlZC4KKyAgICAgICAgKEFQSTo6TG9hZGVyQ2xpZW50OjpkaWRE
ZXRlY3RYU1NGb3JGcmFtZSk6IERlbGV0ZWQuCisgICAgICAgIChBUEk6OkxvYWRlckNsaWVudDo6
ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlSW5GcmFtZSk6IERlbGV0ZWQuCisgICAg
ICAgIChBUEk6OkxvYWRlckNsaWVudDo6ZGlkU3RhcnRQcm9ncmVzcyk6IERlbGV0ZWQuCisgICAg
ICAgIChBUEk6OkxvYWRlckNsaWVudDo6ZGlkQ2hhbmdlUHJvZ3Jlc3MpOiBEZWxldGVkLgorICAg
ICAgICAoQVBJOjpMb2FkZXJDbGllbnQ6OmRpZEZpbmlzaFByb2dyZXNzKTogRGVsZXRlZC4KKyAg
ICAgICAgKEFQSTo6TG9hZGVyQ2xpZW50Ojpwcm9jZXNzRGlkQmVjb21lVW5yZXNwb25zaXZlKTog
RGVsZXRlZC4KKyAgICAgICAgKEFQSTo6TG9hZGVyQ2xpZW50Ojpwcm9jZXNzRGlkQmVjb21lUmVz
cG9uc2l2ZSk6IERlbGV0ZWQuCisgICAgICAgIChBUEk6OkxvYWRlckNsaWVudDo6cHJvY2Vzc0Rp
ZENyYXNoKTogRGVsZXRlZC4KKyAgICAgICAgKEFQSTo6TG9hZGVyQ2xpZW50OjpkaWRDaGFuZ2VC
YWNrRm9yd2FyZExpc3QpOiBEZWxldGVkLgorICAgICAgICAoQVBJOjpMb2FkZXJDbGllbnQ6Ondp
bGxHb1RvQmFja0ZvcndhcmRMaXN0SXRlbSk6IERlbGV0ZWQuCisgICAgICAgIChBUEk6OkxvYWRl
ckNsaWVudDo6ZGlkTmF2aWdhdGVXaXRoTmF2aWdhdGlvbkRhdGEpOiBEZWxldGVkLgorICAgICAg
ICAoQVBJOjpMb2FkZXJDbGllbnQ6OmRpZFBlcmZvcm1DbGllbnRSZWRpcmVjdCk6IERlbGV0ZWQu
CisgICAgICAgIChBUEk6OkxvYWRlckNsaWVudDo6ZGlkUGVyZm9ybVNlcnZlclJlZGlyZWN0KTog
RGVsZXRlZC4KKyAgICAgICAgKEFQSTo6TG9hZGVyQ2xpZW50OjpkaWRVcGRhdGVIaXN0b3J5VGl0
bGUpOiBEZWxldGVkLgorICAgICAgICAoQVBJOjpMb2FkZXJDbGllbnQ6Om5hdmlnYXRpb25HZXN0
dXJlRGlkQmVnaW4pOiBEZWxldGVkLgorICAgICAgICAoQVBJOjpMb2FkZXJDbGllbnQ6Om5hdmln
YXRpb25HZXN0dXJlV2lsbEVuZCk6IERlbGV0ZWQuCisgICAgICAgIChBUEk6OkxvYWRlckNsaWVu
dDo6bmF2aWdhdGlvbkdlc3R1cmVEaWRFbmQpOiBEZWxldGVkLgorICAgICAgICAoQVBJOjpMb2Fk
ZXJDbGllbnQ6OnBsdWdpbkxvYWRQb2xpY3kpOiBEZWxldGVkLgorICAgICAgICAoQVBJOjpMb2Fk
ZXJDbGllbnQ6OmRpZEZhaWxUb0luaXRpYWxpemVQbHVnaW4pOiBEZWxldGVkLgorICAgICAgICAo
QVBJOjpMb2FkZXJDbGllbnQ6OmRpZEJsb2NrSW5zZWN1cmVQbHVnaW5WZXJzaW9uKTogRGVsZXRl
ZC4KKyAgICAgICAgKEFQSTo6TG9hZGVyQ2xpZW50Ojp3ZWJHTExvYWRQb2xpY3kgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAoQVBJOjpMb2FkZXJDbGllbnQ6OnJlc29sdmVXZWJHTExvYWRQb2xp
Y3kgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoQVBJOjpMb2FkZXJDbGllbnQ6OmRpZFN0YXJ0
TG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUpOiBEZWxldGVkLgorICAgICAgICAo
QVBJOjpMb2FkZXJDbGllbnQ6OmRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFp
bkZyYW1lKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcDoK
KyAgICAgICAgKFdLUGFnZVNldFBhZ2VMb2FkZXJDbGllbnQpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZENo
YW5nZUJhY2tGb3J3YXJkTGlzdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6d2ls
bEdvVG9CYWNrRm9yd2FyZExpc3RJdGVtKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
OjpkaWRTdGFydFByb2dyZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRD
aGFuZ2VQcm9ncmVzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkRmluaXNo
UHJvZ3Jlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZENvbW1pdExvYWRG
b3JGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkRmluaXNoRG9jdW1l
bnRMb2FkRm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZFNhbWVE
b2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6ZGlkUmVjZWl2ZVRpdGxlRm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OmRpZEZpcnN0TGF5b3V0Rm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OmRpZERpc3BsYXlJbnNlY3VyZUNvbnRlbnRGb3JGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6ZGlkUnVuSW5zZWN1cmVDb250ZW50Rm9yRnJhbWUpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZERldGVjdFhTU0ZvckZyYW1lKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZVByb3h5OjpkaWROYXZpZ2F0ZVdpdGhOYXZpZ2F0aW9uRGF0YSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkUGVyZm9ybUNsaWVudFJlZGlyZWN0KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRQZXJmb3JtU2VydmVyUmVkaXJlY3QpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZFVwZGF0ZUhpc3RvcnlUaXRsZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6d2ViR0xQb2xpY3lGb3JVUkwpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlc29sdmVXZWJHTFBvbGljeUZvclVSTCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cHJvY2Vzc0RpZEJlY29tZVVucmVzcG9uc2l2ZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cHJvY2Vzc0RpZEJlY29tZVJlc3BvbnNp
dmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpc3BhdGNoUHJvY2Vzc0RpZFRl
cm1pbmF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkUmVjZWl2ZUF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
Om5hdmlnYXRpb25HZXN0dXJlRGlkQmVnaW4pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6Om5hdmlnYXRpb25HZXN0dXJlV2lsbEVuZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6bmF2aWdhdGlvbkdlc3R1cmVEaWRFbmQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3Mv
V2ViUGFnZVByb3h5SU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZFN0
YXJ0TG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OmRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZy
YW1lKToKKwogMjAxOC0wOC0yNyAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJr
aXQub3JnPgogCiAgICAgICAgIEZpeCBpbnRlcm5hbCBidWlsZHMgYWZ0ZXIgcjIzNTM2OApJbmRl
eDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCShyZXZpc2lvbiAyMzUz
NzEpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xMjcwLDggKzEyNzAsOCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ2hhbmdl
QmFja0ZvcndhcmRMCiB7CiAgICAgUGFnZUNsaWVudFByb3RlY3RvciBwcm90ZWN0b3IobV9wYWdl
Q2xpZW50KTsKIAotICAgIGlmICghbV9uYXZpZ2F0aW9uQ2xpZW50IHx8ICFtX25hdmlnYXRpb25D
bGllbnQtPmRpZENoYW5nZUJhY2tGb3J3YXJkTGlzdCgqdGhpcywgYWRkZWQsIHJlbW92ZWQpKQot
ICAgICAgICBtX2xvYWRlckNsaWVudC0+ZGlkQ2hhbmdlQmFja0ZvcndhcmRMaXN0KCp0aGlzLCBh
ZGRlZCwgV1RGTW92ZShyZW1vdmVkKSk7CisgICAgaWYgKG1fbmF2aWdhdGlvbkNsaWVudCkKKyAg
ICAgICAgbV9uYXZpZ2F0aW9uQ2xpZW50LT5kaWRDaGFuZ2VCYWNrRm9yd2FyZExpc3QoKnRoaXMs
IGFkZGVkLCByZW1vdmVkKTsKIAogICAgIGF1dG8gdHJhbnNhY3Rpb24gPSBtX3BhZ2VMb2FkU3Rh
dGUudHJhbnNhY3Rpb24oKTsKIApAQCAtMTI4NCw5ICsxMjg0LDggQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OndpbGxHb1RvQmFja0ZvcndhcmRMaQogICAgIFBhZ2VDbGllbnRQcm90ZWN0b3IgcHJvdGVj
dG9yKG1fcGFnZUNsaWVudCk7CiAKICAgICBpZiAoYXV0byogaXRlbSA9IG1fYmFja0ZvcndhcmRM
aXN0LT5pdGVtRm9ySUQoaXRlbUlEKSkgewotICAgICAgICBpZiAobV9uYXZpZ2F0aW9uQ2xpZW50
ICYmIG1fbmF2aWdhdGlvbkNsaWVudC0+d2lsbEdvVG9CYWNrRm9yd2FyZExpc3RJdGVtKCp0aGlz
LCAqaXRlbSwgaW5QYWdlQ2FjaGUsIG1fcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0
cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICBtX2xvYWRlckNsaWVudC0+d2lsbEdvVG9CYWNrRm9yd2FyZExpc3RJdGVtKCp0aGlzLCAqaXRl
bSwgbV9wcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgp
KS5nZXQoKSk7CisgICAgICAgIGlmIChtX25hdmlnYXRpb25DbGllbnQpCisgICAgICAgICAgICBt
X25hdmlnYXRpb25DbGllbnQtPndpbGxHb1RvQmFja0ZvcndhcmRMaXN0SXRlbSgqdGhpcywgKml0
ZW0sIGluUGFnZUNhY2hlLCBtX3Byb2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNl
ckRhdGEub2JqZWN0KCkpLmdldCgpKTsKICAgICB9CiB9CiAKQEAgLTIxOTYsMTEgKzIxOTUsOCBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6ZmluZFBsdWdpbihjb25zdCBTdHJpCiAjaWYgUExBVEZPUk0o
Q09DT0EpCiAgICAgaWYgKG1fbmF2aWdhdGlvbkNsaWVudCkKICAgICAgICAgbV9uYXZpZ2F0aW9u
Q2xpZW50LT5kZWNpZGVQb2xpY3lGb3JQbHVnaW5Mb2FkKCp0aGlzLCBzdGF0aWNfY2FzdDxQbHVn
aW5Nb2R1bGVMb2FkUG9saWN5PihwbHVnaW5Mb2FkUG9saWN5KSwgcGx1Z2luSW5mb3JtYXRpb24u
Z2V0KCksIFdURk1vdmUoZmluZFBsdWdpbkNvbXBsZXRpb24pKTsKLSAgICBlbHNlCi0gICAgICAg
IG1fbG9hZGVyQ2xpZW50LT5wbHVnaW5Mb2FkUG9saWN5KCp0aGlzLCBzdGF0aWNfY2FzdDxQbHVn
aW5Nb2R1bGVMb2FkUG9saWN5PihwbHVnaW5Mb2FkUG9saWN5KSwgcGx1Z2luSW5mb3JtYXRpb24u
Z2V0KCksIFdURk1vdmUoZmluZFBsdWdpbkNvbXBsZXRpb24pKTsKLSNlbHNlCi0gICAgZmluZFBs
dWdpbkNvbXBsZXRpb24ocGx1Z2luTG9hZFBvbGljeSwgeyB9KTsKICNlbmRpZgorICAgIGZpbmRQ
bHVnaW5Db21wbGV0aW9uKHBsdWdpbkxvYWRQb2xpY3ksIHsgfSk7CiB9CiAKICNlbmRpZiAvLyBF
TkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKQEAgLTMzNzUsNyArMzM3MSw2IEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjpkaWRTdGFydFByb2dyZXNzKCkKICAgICBtX3BhZ2VMb2FkU3RhdGUuZGlkU3Rh
cnRQcm9ncmVzcyh0cmFuc2FjdGlvbik7CiAKICAgICBtX3BhZ2VMb2FkU3RhdGUuY29tbWl0Q2hh
bmdlcygpOwotICAgIG1fbG9hZGVyQ2xpZW50LT5kaWRTdGFydFByb2dyZXNzKCp0aGlzKTsKIH0K
IAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZENoYW5nZVByb2dyZXNzKGRvdWJsZSB2YWx1ZSkKQEAg
LTMzODYsNyArMzM4MSw2IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRDaGFuZ2VQcm9ncmVzcyhk
b3UKICAgICBtX3BhZ2VMb2FkU3RhdGUuZGlkQ2hhbmdlUHJvZ3Jlc3ModHJhbnNhY3Rpb24sIHZh
bHVlKTsKIAogICAgIG1fcGFnZUxvYWRTdGF0ZS5jb21taXRDaGFuZ2VzKCk7Ci0gICAgbV9sb2Fk
ZXJDbGllbnQtPmRpZENoYW5nZVByb2dyZXNzKCp0aGlzKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJv
eHk6OmRpZEZpbmlzaFByb2dyZXNzKCkKQEAgLTMzOTcsNyArMzM5MSw2IEBAIHZvaWQgV2ViUGFn
ZVByb3h5OjpkaWRGaW5pc2hQcm9ncmVzcygpCiAgICAgbV9wYWdlTG9hZFN0YXRlLmRpZEZpbmlz
aFByb2dyZXNzKHRyYW5zYWN0aW9uKTsKIAogICAgIG1fcGFnZUxvYWRTdGF0ZS5jb21taXRDaGFu
Z2VzKCk7Ci0gICAgbV9sb2FkZXJDbGllbnQtPmRpZEZpbmlzaFByb2dyZXNzKCp0aGlzKTsKIH0K
IAogdm9pZCBXZWJQYWdlUHJveHk6OnNldE5ldHdvcmtSZXF1ZXN0c0luUHJvZ3Jlc3MoYm9vbCBu
ZXR3b3JrUmVxdWVzdHNJblByb2dyZXNzKQpAQCAtMzY3NywxMSArMzY3MCw4IEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjpkaWRDb21taXRMb2FkRm9yRnJhbWUKICNlbmRpZgogCiAgICAgbV9wYWdlTG9h
ZFN0YXRlLmNvbW1pdENoYW5nZXMoKTsKLSAgICBpZiAobV9uYXZpZ2F0aW9uQ2xpZW50KSB7Ci0g
ICAgICAgIGlmIChmcmFtZS0+aXNNYWluRnJhbWUoKSkKLSAgICAgICAgICAgIG1fbmF2aWdhdGlv
bkNsaWVudC0+ZGlkQ29tbWl0TmF2aWdhdGlvbigqdGhpcywgbmF2aWdhdGlvbi5nZXQoKSwgbV9w
cm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQo
KSk7Ci0gICAgfSBlbHNlCi0gICAgICAgIG1fbG9hZGVyQ2xpZW50LT5kaWRDb21taXRMb2FkRm9y
RnJhbWUoKnRoaXMsICpmcmFtZSwgbmF2aWdhdGlvbi5nZXQoKSwgbV9wcm9jZXNzLT50cmFuc2Zv
cm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7CisgICAgaWYgKG1f
bmF2aWdhdGlvbkNsaWVudCAmJiBmcmFtZS0+aXNNYWluRnJhbWUoKSkKKyAgICAgICAgbV9uYXZp
Z2F0aW9uQ2xpZW50LT5kaWRDb21taXROYXZpZ2F0aW9uKCp0aGlzLCBuYXZpZ2F0aW9uLmdldCgp
LCBtX3Byb2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0KCkp
LmdldCgpKTsKIAogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCiAgICAgaWYgKGZyYW1l
LT5pc01haW5GcmFtZSgpKQpAQCAtMzcwNiwxMSArMzY5Niw4IEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpkaWRGaW5pc2hEb2N1bWVudExvYWQKICAgICBpZiAoZnJhbWUtPmlzTWFpbkZyYW1lKCkgJiYg
bmF2aWdhdGlvbklEKQogICAgICAgICBuYXZpZ2F0aW9uID0gJm5hdmlnYXRpb25TdGF0ZSgpLm5h
dmlnYXRpb24obmF2aWdhdGlvbklEKTsKIAotICAgIGlmIChtX25hdmlnYXRpb25DbGllbnQpIHsK
LSAgICAgICAgaWYgKGZyYW1lLT5pc01haW5GcmFtZSgpKQotICAgICAgICAgICAgbV9uYXZpZ2F0
aW9uQ2xpZW50LT5kaWRGaW5pc2hEb2N1bWVudExvYWQoKnRoaXMsIG5hdmlnYXRpb24uZ2V0KCks
IG1fcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSku
Z2V0KCkpOwotICAgIH0gZWxzZQotICAgICAgICBtX2xvYWRlckNsaWVudC0+ZGlkRmluaXNoRG9j
dW1lbnRMb2FkRm9yRnJhbWUoKnRoaXMsICpmcmFtZSwgbmF2aWdhdGlvbi5nZXQoKSwgbV9wcm9j
ZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7
CisgICAgaWYgKG1fbmF2aWdhdGlvbkNsaWVudCAmJiBmcmFtZS0+aXNNYWluRnJhbWUoKSkKKyAg
ICAgICAgbV9uYXZpZ2F0aW9uQ2xpZW50LT5kaWRGaW5pc2hEb2N1bWVudExvYWQoKnRoaXMsIG5h
dmlnYXRpb24uZ2V0KCksIG1fcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2Vy
RGF0YS5vYmplY3QoKSkuZ2V0KCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmluaXNo
TG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29u
c3QgVXNlckRhdGEmIHVzZXJEYXRhKQpAQCAtMzgzMCwxMSArMzgxNyw4IEBAIHZvaWQgV2ViUGFn
ZVByb3h5OjpkaWRTYW1lRG9jdW1lbnROYXZpZ2EKICAgICBtX3BhZ2VMb2FkU3RhdGUuY29tbWl0
Q2hhbmdlcygpOwogCiAgICAgU2FtZURvY3VtZW50TmF2aWdhdGlvblR5cGUgbmF2aWdhdGlvblR5
cGUgPSBzdGF0aWNfY2FzdDxTYW1lRG9jdW1lbnROYXZpZ2F0aW9uVHlwZT4ob3BhcXVlU2FtZURv
Y3VtZW50TmF2aWdhdGlvblR5cGUpOwotICAgIGlmIChtX25hdmlnYXRpb25DbGllbnQpIHsKLSAg
ICAgICAgaWYgKGlzTWFpbkZyYW1lKQotICAgICAgICAgICAgbV9uYXZpZ2F0aW9uQ2xpZW50LT5k
aWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uKCp0aGlzLCBuYXZpZ2F0aW9uLmdldCgpLCBuYXZpZ2F0
aW9uVHlwZSwgbV9wcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9i
amVjdCgpKS5nZXQoKSk7Ci0gICAgfSBlbHNlCi0gICAgICAgIG1fbG9hZGVyQ2xpZW50LT5kaWRT
YW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJhbWUoKnRoaXMsICpmcmFtZSwgbmF2aWdhdGlvbi5n
ZXQoKSwgbmF2aWdhdGlvblR5cGUsIG1fcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0
cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpOworICAgIGlmIChtX25hdmlnYXRpb25DbGllbnQg
JiYgaXNNYWluRnJhbWUpCisgICAgICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+ZGlkU2FtZURvY3Vt
ZW50TmF2aWdhdGlvbigqdGhpcywgbmF2aWdhdGlvbi5nZXQoKSwgbmF2aWdhdGlvblR5cGUsIG1f
cHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0
KCkpOwogCiAgICAgaWYgKGlzTWFpbkZyYW1lKQogICAgICAgICBtX3BhZ2VDbGllbnQuZGlkU2Ft
ZURvY3VtZW50TmF2aWdhdGlvbkZvck1haW5GcmFtZShuYXZpZ2F0aW9uVHlwZSk7CkBAIC0zODcx
LDE3ICszODU1LDEwIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRSZWNlaXZlVGl0bGVGb3JGcmEK
ICAgICBmcmFtZS0+ZGlkQ2hhbmdlVGl0bGUodGl0bGUpOwogICAgIAogICAgIG1fcGFnZUxvYWRT
dGF0ZS5jb21taXRDaGFuZ2VzKCk7Ci0gICAgbV9sb2FkZXJDbGllbnQtPmRpZFJlY2VpdmVUaXRs
ZUZvckZyYW1lKCp0aGlzLCB0aXRsZSwgKmZyYW1lLCBtX3Byb2Nlc3MtPnRyYW5zZm9ybUhhbmRs
ZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKIH0KIAotdm9pZCBXZWJQYWdl
UHJveHk6OmRpZEZpcnN0TGF5b3V0Rm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgY29uc3QgVXNl
ckRhdGEmIHVzZXJEYXRhKQordm9pZCBXZWJQYWdlUHJveHk6OmRpZEZpcnN0TGF5b3V0Rm9yRnJh
bWUodWludDY0X3QsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKIHsKLSAgICBQYWdlQ2xpZW50
UHJvdGVjdG9yIHByb3RlY3RvcihtX3BhZ2VDbGllbnQpOwotCi0gICAgV2ViRnJhbWVQcm94eSog
ZnJhbWUgPSBtX3Byb2Nlc3MtPndlYkZyYW1lKGZyYW1lSUQpOwotICAgIE1FU1NBR0VfQ0hFQ0so
ZnJhbWUpOwotCi0gICAgbV9sb2FkZXJDbGllbnQtPmRpZEZpcnN0TGF5b3V0Rm9yRnJhbWUoKnRo
aXMsICpmcmFtZSwgbV9wcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRh
Lm9iamVjdCgpKS5nZXQoKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRGaXJzdFZpc3Vh
bGx5Tm9uRW1wdHlMYXlvdXRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBVc2VyRGF0
YSYgdXNlckRhdGEpCkBAIC0zOTI1LDggKzM5MDIsNiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlk
RGlzcGxheUluc2VjdXJlQ29uCiAKICAgICBpZiAobV9uYXZpZ2F0aW9uQ2xpZW50KQogICAgICAg
ICBtX25hdmlnYXRpb25DbGllbnQtPmRpZERpc3BsYXlJbnNlY3VyZUNvbnRlbnQoKnRoaXMsIG1f
cHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0
KCkpOwotICAgIGVsc2UKLSAgICAgICAgbV9sb2FkZXJDbGllbnQtPmRpZERpc3BsYXlJbnNlY3Vy
ZUNvbnRlbnRGb3JGcmFtZSgqdGhpcywgKmZyYW1lLCBtX3Byb2Nlc3MtPnRyYW5zZm9ybUhhbmRs
ZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKIH0KIAogdm9pZCBXZWJQYWdl
UHJveHk6OmRpZFJ1bkluc2VjdXJlQ29udGVudEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIGNv
bnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKQEAgLTM5NDIsMTggKzM5MTcsMTAgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OmRpZFJ1bkluc2VjdXJlQ29udGVudAogCiAgICAgaWYgKG1fbmF2aWdhdGlvbkNs
aWVudCkKICAgICAgICAgbV9uYXZpZ2F0aW9uQ2xpZW50LT5kaWRSdW5JbnNlY3VyZUNvbnRlbnQo
KnRoaXMsIG1fcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmpl
Y3QoKSkuZ2V0KCkpOwotICAgIGVsc2UKLSAgICAgICAgbV9sb2FkZXJDbGllbnQtPmRpZFJ1bklu
c2VjdXJlQ29udGVudEZvckZyYW1lKCp0aGlzLCAqZnJhbWUsIG1fcHJvY2Vzcy0+dHJhbnNmb3Jt
SGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpOwogfQogCi12b2lkIFdl
YlBhZ2VQcm94eTo6ZGlkRGV0ZWN0WFNTRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgY29uc3Qg
VXNlckRhdGEmIHVzZXJEYXRhKQordm9pZCBXZWJQYWdlUHJveHk6OmRpZERldGVjdFhTU0ZvckZy
YW1lKHVpbnQ2NF90LCBjb25zdCBVc2VyRGF0YSYpCiB7Ci0gICAgUGFnZUNsaWVudFByb3RlY3Rv
ciBwcm90ZWN0b3IobV9wYWdlQ2xpZW50KTsKLQotICAgIFdlYkZyYW1lUHJveHkqIGZyYW1lID0g
bV9wcm9jZXNzLT53ZWJGcmFtZShmcmFtZUlEKTsKLSAgICBNRVNTQUdFX0NIRUNLKGZyYW1lKTsK
LQotICAgIG1fbG9hZGVyQ2xpZW50LT5kaWREZXRlY3RYU1NGb3JGcmFtZSgqdGhpcywgKmZyYW1l
LCBtX3Byb2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0KCkp
LmdldCgpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6Om1haW5GcmFtZVBsdWdpbkhhbmRsZXNQ
YWdlU2NhbGVHZXN0dXJlRGlkQ2hhbmdlKGJvb2wgbWFpbkZyYW1lUGx1Z2luSGFuZGxlc1BhZ2VT
Y2FsZUdlc3R1cmUpCkBAIC00MjAzLDExICs0MTcwLDggQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRp
ZE5hdmlnYXRlV2l0aE5hdmlnYQogICAgIE1FU1NBR0VfQ0hFQ0soZnJhbWUpOwogICAgIE1FU1NB
R0VfQ0hFQ0soZnJhbWUtPnBhZ2UoKSA9PSB0aGlzKTsKIAotICAgIGlmIChtX2hpc3RvcnlDbGll
bnQpIHsKLSAgICAgICAgaWYgKGZyYW1lLT5pc01haW5GcmFtZSgpKQotICAgICAgICAgICAgbV9o
aXN0b3J5Q2xpZW50LT5kaWROYXZpZ2F0ZVdpdGhOYXZpZ2F0aW9uRGF0YSgqdGhpcywgc3RvcmUp
OwotICAgIH0gZWxzZQotICAgICAgICBtX2xvYWRlckNsaWVudC0+ZGlkTmF2aWdhdGVXaXRoTmF2
aWdhdGlvbkRhdGEoKnRoaXMsIHN0b3JlLCAqZnJhbWUpOworICAgIGlmIChtX2hpc3RvcnlDbGll
bnQgJiYgZnJhbWUtPmlzTWFpbkZyYW1lKCkpCisgICAgICAgIG1faGlzdG9yeUNsaWVudC0+ZGlk
TmF2aWdhdGVXaXRoTmF2aWdhdGlvbkRhdGEoKnRoaXMsIHN0b3JlKTsKICAgICBwcm9jZXNzKCku
cHJvY2Vzc1Bvb2woKS5oaXN0b3J5Q2xpZW50KCkuZGlkTmF2aWdhdGVXaXRoTmF2aWdhdGlvbkRh
dGEocHJvY2VzcygpLnByb2Nlc3NQb29sKCksICp0aGlzLCBzdG9yZSwgKmZyYW1lKTsKIH0KIApA
QCAtNDIyNSwxMSArNDE4OSw4IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRQZXJmb3JtQ2xpZW50
UmVkaXIKICAgICBNRVNTQUdFX0NIRUNLX1VSTChzb3VyY2VVUkxTdHJpbmcpOwogICAgIE1FU1NB
R0VfQ0hFQ0tfVVJMKGRlc3RpbmF0aW9uVVJMU3RyaW5nKTsKIAotICAgIGlmIChtX2hpc3RvcnlD
bGllbnQpIHsKLSAgICAgICAgaWYgKGZyYW1lLT5pc01haW5GcmFtZSgpKQotICAgICAgICAgICAg
bV9oaXN0b3J5Q2xpZW50LT5kaWRQZXJmb3JtQ2xpZW50UmVkaXJlY3QoKnRoaXMsIHNvdXJjZVVS
TFN0cmluZywgZGVzdGluYXRpb25VUkxTdHJpbmcpOwotICAgIH0gZWxzZQotICAgICAgICBtX2xv
YWRlckNsaWVudC0+ZGlkUGVyZm9ybUNsaWVudFJlZGlyZWN0KCp0aGlzLCBzb3VyY2VVUkxTdHJp
bmcsIGRlc3RpbmF0aW9uVVJMU3RyaW5nLCAqZnJhbWUpOworICAgIGlmIChtX2hpc3RvcnlDbGll
bnQgJiYgZnJhbWUtPmlzTWFpbkZyYW1lKCkpCisgICAgICAgIG1faGlzdG9yeUNsaWVudC0+ZGlk
UGVyZm9ybUNsaWVudFJlZGlyZWN0KCp0aGlzLCBzb3VyY2VVUkxTdHJpbmcsIGRlc3RpbmF0aW9u
VVJMU3RyaW5nKTsKICAgICBwcm9jZXNzKCkucHJvY2Vzc1Bvb2woKS5oaXN0b3J5Q2xpZW50KCku
ZGlkUGVyZm9ybUNsaWVudFJlZGlyZWN0KHByb2Nlc3MoKS5wcm9jZXNzUG9vbCgpLCAqdGhpcywg
c291cmNlVVJMU3RyaW5nLCBkZXN0aW5hdGlvblVSTFN0cmluZywgKmZyYW1lKTsKIH0KIApAQCAt
NDI0NywxMSArNDIwOCw4IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRQZXJmb3JtU2VydmVyUmVk
aXIKICAgICBNRVNTQUdFX0NIRUNLX1VSTChzb3VyY2VVUkxTdHJpbmcpOwogICAgIE1FU1NBR0Vf
Q0hFQ0tfVVJMKGRlc3RpbmF0aW9uVVJMU3RyaW5nKTsKIAotICAgIGlmIChtX2hpc3RvcnlDbGll
bnQpIHsKLSAgICAgICAgaWYgKGZyYW1lLT5pc01haW5GcmFtZSgpKQotICAgICAgICAgICAgbV9o
aXN0b3J5Q2xpZW50LT5kaWRQZXJmb3JtU2VydmVyUmVkaXJlY3QoKnRoaXMsIHNvdXJjZVVSTFN0
cmluZywgZGVzdGluYXRpb25VUkxTdHJpbmcpOwotICAgIH0gZWxzZQotICAgICAgICBtX2xvYWRl
ckNsaWVudC0+ZGlkUGVyZm9ybVNlcnZlclJlZGlyZWN0KCp0aGlzLCBzb3VyY2VVUkxTdHJpbmcs
IGRlc3RpbmF0aW9uVVJMU3RyaW5nLCAqZnJhbWUpOworICAgIGlmIChtX2hpc3RvcnlDbGllbnQg
JiYgZnJhbWUtPmlzTWFpbkZyYW1lKCkpCisgICAgICAgIG1faGlzdG9yeUNsaWVudC0+ZGlkUGVy
Zm9ybVNlcnZlclJlZGlyZWN0KCp0aGlzLCBzb3VyY2VVUkxTdHJpbmcsIGRlc3RpbmF0aW9uVVJM
U3RyaW5nKTsKICAgICBwcm9jZXNzKCkucHJvY2Vzc1Bvb2woKS5oaXN0b3J5Q2xpZW50KCkuZGlk
UGVyZm9ybVNlcnZlclJlZGlyZWN0KHByb2Nlc3MoKS5wcm9jZXNzUG9vbCgpLCAqdGhpcywgc291
cmNlVVJMU3RyaW5nLCBkZXN0aW5hdGlvblVSTFN0cmluZywgKmZyYW1lKTsKIH0KIApAQCAtNDI2
NSwxMSArNDIyMyw4IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRVcGRhdGVIaXN0b3J5VGl0bGUK
IAogICAgIE1FU1NBR0VfQ0hFQ0tfVVJMKHVybCk7CiAKLSAgICBpZiAobV9oaXN0b3J5Q2xpZW50
KSB7Ci0gICAgICAgIGlmIChmcmFtZS0+aXNNYWluRnJhbWUoKSkKLSAgICAgICAgICAgIG1faGlz
dG9yeUNsaWVudC0+ZGlkVXBkYXRlSGlzdG9yeVRpdGxlKCp0aGlzLCB0aXRsZSwgdXJsKTsKLSAg
ICB9IGVsc2UKLSAgICAgICAgbV9sb2FkZXJDbGllbnQtPmRpZFVwZGF0ZUhpc3RvcnlUaXRsZSgq
dGhpcywgdGl0bGUsIHVybCwgKmZyYW1lKTsKKyAgICBpZiAobV9oaXN0b3J5Q2xpZW50ICYmIGZy
YW1lLT5pc01haW5GcmFtZSgpKQorICAgICAgICBtX2hpc3RvcnlDbGllbnQtPmRpZFVwZGF0ZUhp
c3RvcnlUaXRsZSgqdGhpcywgdGl0bGUsIHVybCk7CiAgICAgcHJvY2VzcygpLnByb2Nlc3NQb29s
KCkuaGlzdG9yeUNsaWVudCgpLmRpZFVwZGF0ZUhpc3RvcnlUaXRsZShwcm9jZXNzKCkucHJvY2Vz
c1Bvb2woKSwgKnRoaXMsIHRpdGxlLCB1cmwsICpmcmFtZSk7CiB9CiAKQEAgLTQ0NjcsNyArNDQy
Miw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp3ZWJHTFBvbGljeUZvclVSTChVUkwKICAgICAgICAg
ICAgIHJlcGx5KHN0YXRpY19jYXN0PHVpbnQzMl90Pihwb2xpY3kpKTsKICAgICAgICAgfSk7CiAg
ICAgfSBlbHNlCi0gICAgICAgIHJlcGx5KHN0YXRpY19jYXN0PHVpbnQzMl90PihtX2xvYWRlckNs
aWVudC0+d2ViR0xMb2FkUG9saWN5KCp0aGlzLCB1cmwpKSk7CisgICAgICAgIHJlcGx5KHN0YXRp
Y19jYXN0PHVpbnQzMl90PihXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3k6OldlYkdMQWxsb3dDcmVh
dGlvbikpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6cmVzb2x2ZVdlYkdMUG9saWN5Rm9yVVJM
KFVSTCYmIHVybCwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UmVzb2x2ZVdlYkdMUG9saWN5Rm9y
VVJMOjpEZWxheWVkUmVwbHkmJiByZXBseSkKQEAgLTQ0NzcsNyArNDQzMiw3IEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjpyZXNvbHZlV2ViR0xQb2xpY3lGb3IKICAgICAgICAgICAgIHJlcGx5KHN0YXRp
Y19jYXN0PHVpbnQzMl90Pihwb2xpY3kpKTsKICAgICAgICAgfSk7CiAgICAgfSBlbHNlCi0gICAg
ICAgIHJlcGx5KHN0YXRpY19jYXN0PHVpbnQzMl90PihtX2xvYWRlckNsaWVudC0+cmVzb2x2ZVdl
YkdMTG9hZFBvbGljeSgqdGhpcywgdXJsKSkpOworICAgICAgICByZXBseShzdGF0aWNfY2FzdDx1
aW50MzJfdD4oV2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5OjpXZWJHTEFsbG93Q3JlYXRpb24pKTsK
IH0KICNlbmRpZiAvLyBFTkFCTEUoV0VCR0wpCiAKQEAgLTU4NzMsOCArNTgyOCw2IEBAIHZvaWQg
V2ViUGFnZVByb3h5Ojpwcm9jZXNzRGlkQmVjb21lVW5yZXMKIAogICAgIGlmIChtX25hdmlnYXRp
b25DbGllbnQpCiAgICAgICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+cHJvY2Vzc0RpZEJlY29tZVVu
cmVzcG9uc2l2ZSgqdGhpcyk7Ci0gICAgZWxzZQotICAgICAgICBtX2xvYWRlckNsaWVudC0+cHJv
Y2Vzc0RpZEJlY29tZVVucmVzcG9uc2l2ZSgqdGhpcyk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5
Ojpwcm9jZXNzRGlkQmVjb21lUmVzcG9uc2l2ZSgpCkBAIC01ODg2LDggKzU4MzksNiBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6cHJvY2Vzc0RpZEJlY29tZVJlc3BvCiAKICAgICBpZiAobV9uYXZpZ2F0
aW9uQ2xpZW50KQogICAgICAgICBtX25hdmlnYXRpb25DbGllbnQtPnByb2Nlc3NEaWRCZWNvbWVS
ZXNwb25zaXZlKCp0aGlzKTsKLSAgICBlbHNlCi0gICAgICAgIG1fbG9hZGVyQ2xpZW50LT5wcm9j
ZXNzRGlkQmVjb21lUmVzcG9uc2l2ZSgqdGhpcyk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojp3
aWxsQ2hhbmdlUHJvY2Vzc0lzUmVzcG9uc2l2ZSgpCkBAIC01OTY1LDggKzU5MTYsNiBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6ZGlzcGF0Y2hQcm9jZXNzRGlkVGVyCiAgICAgYm9vbCBoYW5kbGVkQnlD
bGllbnQgPSBmYWxzZTsKICAgICBpZiAobV9uYXZpZ2F0aW9uQ2xpZW50KQogICAgICAgICBoYW5k
bGVkQnlDbGllbnQgPSBtX25hdmlnYXRpb25DbGllbnQtPnByb2Nlc3NEaWRUZXJtaW5hdGUoKnRo
aXMsIHJlYXNvbik7Ci0gICAgZWxzZSBpZiAocmVhc29uICE9IFByb2Nlc3NUZXJtaW5hdGlvblJl
YXNvbjo6UmVxdWVzdGVkQnlDbGllbnQpCi0gICAgICAgIGhhbmRsZWRCeUNsaWVudCA9IG1fbG9h
ZGVyQ2xpZW50LT5wcm9jZXNzRGlkQ3Jhc2goKnRoaXMpOwogCiAgICAgaWYgKCFoYW5kbGVkQnlD
bGllbnQgJiYgc2hvdWxkUmVsb2FkQWZ0ZXJQcm9jZXNzVGVybWluYXRpb24ocmVhc29uKSkKICAg
ICAgICAgdHJ5UmVsb2FkQWZ0ZXJQcm9jZXNzVGVybWluYXRpb24oKTsKQEAgLTYzMzcsMTEgKzYy
ODYsOCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2FtZXBhZEFjdGl2aXR5KGNvbnN0CiAKICNlbmRp
ZgogCi12b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
UHJveHkodWludDY0X3QgZnJhbWVJRCwgUmVmPEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHk+
JiYgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UpCit2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUmVjZWl2
ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkodWludDY0X3QsIFJlZjxBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZVByb3h5PiYmIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKQogewotICAgIFdlYkZy
YW1lUHJveHkqIGZyYW1lID0gbV9wcm9jZXNzLT53ZWJGcmFtZShmcmFtZUlEKTsKLSAgICBNRVNT
QUdFX0NIRUNLKGZyYW1lKTsKLQogI2lmIEhBVkUoU0VDX0tFWV9QUk9YWSkKICAgICBBU1NFUlQo
YXV0aGVudGljYXRpb25DaGFsbGVuZ2UtPnByb3RlY3Rpb25TcGFjZSgpKTsKICAgICBpZiAoYXV0
aGVudGljYXRpb25DaGFsbGVuZ2UtPnByb3RlY3Rpb25TcGFjZSgpLT5hdXRoZW50aWNhdGlvblNj
aGVtZSgpID09IFByb3RlY3Rpb25TcGFjZUF1dGhlbnRpY2F0aW9uU2NoZW1lQ2xpZW50Q2VydGlm
aWNhdGVSZXF1ZXN0ZWQpIHsKQEAgLTYzNTQsNyArNjMwMCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpkaWRSZWNlaXZlQXV0aGVudGljYXQKICAgICBpZiAobV9uYXZpZ2F0aW9uQ2xpZW50KQogICAg
ICAgICBtX25hdmlnYXRpb25DbGllbnQtPmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZSgqdGhpcywgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UuZ2V0KCkpOwogICAgIGVsc2UKLSAgICAg
ICAgbV9sb2FkZXJDbGllbnQtPmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUluRnJh
bWUoKnRoaXMsICpmcmFtZSwgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UuZ2V0KCkpOworICAgICAg
ICBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZS0+cGVyZm9ybURlZmF1bHRIYW5kbGluZygpOwogfQog
CiB2b2lkIFdlYlBhZ2VQcm94eTo6ZXhjZWVkZWREYXRhYmFzZVF1b3RhKHVpbnQ2NF90IGZyYW1l
SUQsIGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBkYXRhYmFz
ZU5hbWUsIGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIHVpbnQ2NF90IGN1cnJlbnRRdW90YSwg
dWludDY0X3QgY3VycmVudE9yaWdpblVzYWdlLCB1aW50NjRfdCBjdXJyZW50RGF0YWJhc2VVc2Fn
ZSwgdWludDY0X3QgZXhwZWN0ZWRVc2FnZSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RXhjZWVk
ZWREYXRhYmFzZVF1b3RhOjpEZWxheWVkUmVwbHkmJiByZXBseSkKQEAgLTY1OTEsOSArNjUzNyw3
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpwYWdlRXh0ZW5kZWRCYWNrZ3JvdW4KICNpZiBFTkFCTEUo
TkVUU0NBUEVfUExVR0lOX0FQSSkKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRGYWlsVG9Jbml0aWFs
aXplUGx1Z2luKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgZnJhbWVVUkxT
dHJpbmcsIGNvbnN0IFN0cmluZyYgcGFnZVVSTFN0cmluZykKIHsKLSAgICBpZiAobV9uYXZpZ2F0
aW9uQ2xpZW50LT5kaWRGYWlsVG9Jbml0aWFsaXplUGx1Z0luKCp0aGlzLCBjcmVhdGVQbHVnaW5J
bmZvcm1hdGlvbkRpY3Rpb25hcnkobWltZVR5cGUsIGZyYW1lVVJMU3RyaW5nLCBwYWdlVVJMU3Ry
aW5nKS5nZXQoKSkpCi0gICAgICAgIHJldHVybjsKLSAgICBtX2xvYWRlckNsaWVudC0+ZGlkRmFp
bFRvSW5pdGlhbGl6ZVBsdWdpbigqdGhpcywgY3JlYXRlUGx1Z2luSW5mb3JtYXRpb25EaWN0aW9u
YXJ5KG1pbWVUeXBlLCBmcmFtZVVSTFN0cmluZywgcGFnZVVSTFN0cmluZykuZ2V0KCkpOworICAg
IG1fbmF2aWdhdGlvbkNsaWVudC0+ZGlkRmFpbFRvSW5pdGlhbGl6ZVBsdWdJbigqdGhpcywgY3Jl
YXRlUGx1Z2luSW5mb3JtYXRpb25EaWN0aW9uYXJ5KG1pbWVUeXBlLCBmcmFtZVVSTFN0cmluZywg
cGFnZVVSTFN0cmluZykuZ2V0KCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQmxvY2tJ
bnNlY3VyZVBsdWdpblZlcnNpb24oY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5n
JiBwbHVnaW5VUkxTdHJpbmcsIGNvbnN0IFN0cmluZyYgZnJhbWVVUkxTdHJpbmcsIGNvbnN0IFN0
cmluZyYgcGFnZVVSTFN0cmluZywgYm9vbCByZXBsYWNlbWVudE9ic2N1cmVkKQpAQCAtNjYwMiw5
ICs2NTQ2LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZEJsb2NrSW5zZWN1cmVQbHVnaQogICAg
IFBsdWdpbk1vZHVsZUluZm8gcGx1Z2luID0gbV9wcm9jZXNzLT5wcm9jZXNzUG9vbCgpLnBsdWdp
bkluZm9TdG9yZSgpLmZpbmRQbHVnaW4obmV3TWltZVR5cGUsIFVSTChVUkwoKSwgcGx1Z2luVVJM
U3RyaW5nKSk7CiAgICAgYXV0byBwbHVnaW5JbmZvcm1hdGlvbiA9IGNyZWF0ZVBsdWdpbkluZm9y
bWF0aW9uRGljdGlvbmFyeShwbHVnaW4sIGZyYW1lVVJMU3RyaW5nLCBtaW1lVHlwZSwgcGFnZVVS
TFN0cmluZywgU3RyaW5nKCksIFN0cmluZygpLCByZXBsYWNlbWVudE9ic2N1cmVkKTsKIAotICAg
IGlmIChtX25hdmlnYXRpb25DbGllbnQtPmRpZEJsb2NrSW5zZWN1cmVQbHVnaW5WZXJzaW9uKCp0
aGlzLCBwbHVnaW5JbmZvcm1hdGlvbi5nZXQoKSkpCi0gICAgICAgIHJldHVybjsKLSAgICBtX2xv
YWRlckNsaWVudC0+ZGlkQmxvY2tJbnNlY3VyZVBsdWdpblZlcnNpb24oKnRoaXMsIHBsdWdpbklu
Zm9ybWF0aW9uLmdldCgpKTsKKyAgICBtX25hdmlnYXRpb25DbGllbnQtPmRpZEJsb2NrSW5zZWN1
cmVQbHVnaW5WZXJzaW9uKCp0aGlzLCBwbHVnaW5JbmZvcm1hdGlvbi5nZXQoKSk7CiB9CiAjZW5k
aWYgLy8gRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiAKQEAgLTcxMjEsOCArNzA2Myw2IEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpuYXZpZ2F0aW9uR2VzdHVyZURpZEIKIAogICAgIGlmIChtX25h
dmlnYXRpb25DbGllbnQpCiAgICAgICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+ZGlkQmVnaW5OYXZp
Z2F0aW9uR2VzdHVyZSgqdGhpcyk7Ci0gICAgZWxzZQotICAgICAgICBtX2xvYWRlckNsaWVudC0+
bmF2aWdhdGlvbkdlc3R1cmVEaWRCZWdpbigqdGhpcyk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5
OjpuYXZpZ2F0aW9uR2VzdHVyZVdpbGxFbmQoYm9vbCB3aWxsTmF2aWdhdGUsIFdlYkJhY2tGb3J3
YXJkTGlzdEl0ZW0mIGl0ZW0pCkBAIC03MTMzLDggKzcwNzMsNiBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6bmF2aWdhdGlvbkdlc3R1cmVXaWxsCiAKICAgICBpZiAobV9uYXZpZ2F0aW9uQ2xpZW50KQog
ICAgICAgICBtX25hdmlnYXRpb25DbGllbnQtPndpbGxFbmROYXZpZ2F0aW9uR2VzdHVyZSgqdGhp
cywgd2lsbE5hdmlnYXRlLCBpdGVtKTsKLSAgICBlbHNlCi0gICAgICAgIG1fbG9hZGVyQ2xpZW50
LT5uYXZpZ2F0aW9uR2VzdHVyZVdpbGxFbmQoKnRoaXMsIHdpbGxOYXZpZ2F0ZSwgaXRlbSk7CiB9
CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpuYXZpZ2F0aW9uR2VzdHVyZURpZEVuZChib29sIHdpbGxO
YXZpZ2F0ZSwgV2ViQmFja0ZvcndhcmRMaXN0SXRlbSYgaXRlbSkKQEAgLTcxNDUsOCArNzA4Myw2
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpuYXZpZ2F0aW9uR2VzdHVyZURpZEUKIAogICAgIGlmICht
X25hdmlnYXRpb25DbGllbnQpCiAgICAgICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+ZGlkRW5kTmF2
aWdhdGlvbkdlc3R1cmUoKnRoaXMsIHdpbGxOYXZpZ2F0ZSwgaXRlbSk7Ci0gICAgZWxzZQotICAg
ICAgICBtX2xvYWRlckNsaWVudC0+bmF2aWdhdGlvbkdlc3R1cmVEaWRFbmQoKnRoaXMsIHdpbGxO
YXZpZ2F0ZSwgaXRlbSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpuYXZpZ2F0aW9uR2VzdHVy
ZURpZEVuZCgpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTG9hZGVyQ2xp
ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUxvYWRl
ckNsaWVudC5oCShyZXZpc2lvbiAyMzUzNzEpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQVBJTG9hZGVyQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDggKzIzLDcgQEAKICAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIEFQSUxvYWRl
ckNsaWVudF9oCi0jZGVmaW5lIEFQSUxvYWRlckNsaWVudF9oCisjcHJhZ21hIG9uY2UKIAogI2lu
Y2x1ZGUgIkFQSURhdGEuaCIKICNpbmNsdWRlICJQbHVnaW5Nb2R1bGVJbmZvLmgiCkBAIC01Niw2
NyArNTUsMTQgQEAgY2xhc3MgT2JqZWN0OwogY2xhc3MgTG9hZGVyQ2xpZW50IHsKIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIH5Mb2FkZXJDbGllbnQoKSB7IH0KLQogICAgIHZpcnR1YWwgdm9pZCBkaWRT
dGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKFdlYktpdDo6V2ViUGFnZVByb3h5JiwgV2ViS2l0
OjpXZWJGcmFtZVByb3h5JiwgQVBJOjpOYXZpZ2F0aW9uKiwgQVBJOjpPYmplY3QqKSB7IH0KICAg
ICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2Fk
Rm9yRnJhbWUoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkmLCBB
UEk6Ok5hdmlnYXRpb24qLCBBUEk6Ok9iamVjdCopIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRG
YWlsUHJvdmlzaW9uYWxMb2FkV2l0aEVycm9yRm9yRnJhbWUoV2ViS2l0OjpXZWJQYWdlUHJveHkm
LCBXZWJLaXQ6OldlYkZyYW1lUHJveHkmLCBBUEk6Ok5hdmlnYXRpb24qLCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yJiwgQVBJOjpPYmplY3QqKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlk
Q29tbWl0TG9hZEZvckZyYW1lKFdlYktpdDo6V2ViUGFnZVByb3h5JiwgV2ViS2l0OjpXZWJGcmFt
ZVByb3h5JiwgQVBJOjpOYXZpZ2F0aW9uKiwgQVBJOjpPYmplY3QqKSB7IH0KLSAgICB2aXJ0dWFs
IHZvaWQgZGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWUoV2ViS2l0OjpXZWJQYWdlUHJveHkm
LCBXZWJLaXQ6OldlYkZyYW1lUHJveHkmLCBBUEk6Ok5hdmlnYXRpb24qLCBBUEk6Ok9iamVjdCop
IHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkRm9yRnJhbWUoV2ViS2l0OjpXZWJQ
YWdlUHJveHkmLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkmLCBBUEk6Ok5hdmlnYXRpb24qLCBBUEk6
Ok9iamVjdCopIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsTG9hZFdpdGhFcnJvckZvckZy
YW1lKFdlYktpdDo6V2ViUGFnZVByb3h5JiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5JiwgQVBJOjpO
YXZpZ2F0aW9uKiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIEFQSTo6T2JqZWN0Kikg
eyB9Ci0gICAgdmlydHVhbCB2b2lkIGRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZShX
ZWJLaXQ6OldlYlBhZ2VQcm94eSYsIFdlYktpdDo6V2ViRnJhbWVQcm94eSYsIEFQSTo6TmF2aWdh
dGlvbiosIFdlYktpdDo6U2FtZURvY3VtZW50TmF2aWdhdGlvblR5cGUsIEFQSTo6T2JqZWN0Kikg
eyB9Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVUaXRsZUZvckZyYW1lKFdlYktpdDo6V2Vi
UGFnZVByb3h5JiwgY29uc3QgV1RGOjpTdHJpbmcmLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkmLCBB
UEk6Ok9iamVjdCopIHsgfQotICAgIHZpcnR1YWwgdm9pZCBkaWRGaXJzdExheW91dEZvckZyYW1l
KFdlYktpdDo6V2ViUGFnZVByb3h5JiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5JiwgQVBJOjpPYmpl
Y3QqKSB7IH0KLQotICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgY29uc2lkZXIgcmVtb3ZpbmcgZGlk
Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0Rm9yRnJhbWUgc2luY2UgaXQgaXMgcmVwbGFjZWQg
YnkgZGlkTGF5b3V0LgogICAgIHZpcnR1YWwgdm9pZCBkaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlM
YXlvdXRGb3JGcmFtZShXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIFdlYktpdDo6V2ViRnJhbWVQcm94
eSYsIEFQSTo6T2JqZWN0KikgeyB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgZGlkRGlzcGxheUluc2Vj
dXJlQ29udGVudEZvckZyYW1lKFdlYktpdDo6V2ViUGFnZVByb3h5JiwgV2ViS2l0OjpXZWJGcmFt
ZVByb3h5JiwgQVBJOjpPYmplY3QqKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlkUnVuSW5zZWN1
cmVDb250ZW50Rm9yRnJhbWUoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBXZWJLaXQ6OldlYkZyYW1l
UHJveHkmLCBBUEk6Ok9iamVjdCopIHsgfQotICAgIHZpcnR1YWwgdm9pZCBkaWREZXRlY3RYU1NG
b3JGcmFtZShXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIFdlYktpdDo6V2ViRnJhbWVQcm94eSYsIEFQ
STo6T2JqZWN0KikgeyB9Ci0KICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVhY2hMYXlvdXRNaWxlc3Rv
bmUoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBXZWJDb3JlOjpMYXlvdXRNaWxlc3RvbmVzKSB7IH0K
LSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlSW5GcmFt
ZShXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIFdlYktpdDo6V2ViRnJhbWVQcm94eSYsIFdlYktpdDo6
QXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eSYpIHsgfQotCi0gICAgdmlydHVhbCB2b2lkIGRp
ZFN0YXJ0UHJvZ3Jlc3MoV2ViS2l0OjpXZWJQYWdlUHJveHkmKSB7IH0KLSAgICB2aXJ0dWFsIHZv
aWQgZGlkQ2hhbmdlUHJvZ3Jlc3MoV2ViS2l0OjpXZWJQYWdlUHJveHkmKSB7IH0KLSAgICB2aXJ0
dWFsIHZvaWQgZGlkRmluaXNoUHJvZ3Jlc3MoV2ViS2l0OjpXZWJQYWdlUHJveHkmKSB7IH0KLQot
ICAgIC8vIEZJWE1FOiBUaGVzZSBmdW5jdGlvbnMgc2hvdWxkIG5vdCBiZSBwYXJ0IG9mIHRoaXMg
Y2xpZW50LgotICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNzRGlkQmVjb21lVW5yZXNwb25zaXZlKFdl
YktpdDo6V2ViUGFnZVByb3h5JikgeyB9Ci0gICAgdmlydHVhbCB2b2lkIHByb2Nlc3NEaWRCZWNv
bWVSZXNwb25zaXZlKFdlYktpdDo6V2ViUGFnZVByb3h5JikgeyB9Ci0gICAgdmlydHVhbCBib29s
IHByb2Nlc3NEaWRDcmFzaChXZWJLaXQ6OldlYlBhZ2VQcm94eSYpIHsgcmV0dXJuIGZhbHNlOyB9
Ci0KLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlQmFja0ZvcndhcmRMaXN0KFdlYktpdDo6V2Vi
UGFnZVByb3h5JiwgV2ViS2l0OjpXZWJCYWNrRm9yd2FyZExpc3RJdGVtKiwgVmVjdG9yPFJlZjxX
ZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdEl0ZW0+PiYmKSB7IH0KICAgICB2aXJ0dWFsIGJvb2wg
c2hvdWxkS2VlcEN1cnJlbnRCYWNrRm9yd2FyZExpc3RJdGVtSW5MaXN0KFdlYktpdDo6V2ViUGFn
ZVByb3h5JiwgV2ViS2l0OjpXZWJCYWNrRm9yd2FyZExpc3RJdGVtJikgeyByZXR1cm4gdHJ1ZTsg
fQotICAgIHZpcnR1YWwgdm9pZCB3aWxsR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW0oV2ViS2l0OjpX
ZWJQYWdlUHJveHkmLCBXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mLCBBUEk6Ok9iamVj
dCopIHsgfQotCi0gICAgdmlydHVhbCB2b2lkIGRpZE5hdmlnYXRlV2l0aE5hdmlnYXRpb25EYXRh
KFdlYktpdDo6V2ViUGFnZVByb3h5JiwgY29uc3QgV2ViS2l0OjpXZWJOYXZpZ2F0aW9uRGF0YVN0
b3JlJiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5JikgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGRpZFBl
cmZvcm1DbGllbnRSZWRpcmVjdChXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIGNvbnN0IFdURjo6U3Ry
aW5nJiwgY29uc3QgV1RGOjpTdHJpbmcmLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkmKSB7IH0KLSAg
ICB2aXJ0dWFsIHZvaWQgZGlkUGVyZm9ybVNlcnZlclJlZGlyZWN0KFdlYktpdDo6V2ViUGFnZVBy
b3h5JiwgY29uc3QgV1RGOjpTdHJpbmcmLCBjb25zdCBXVEY6OlN0cmluZyYsIFdlYktpdDo6V2Vi
RnJhbWVQcm94eSYpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBkaWRVcGRhdGVIaXN0b3J5VGl0bGUo
V2ViS2l0OjpXZWJQYWdlUHJveHkmLCBjb25zdCBXVEY6OlN0cmluZyYsIGNvbnN0IFdURjo6U3Ry
aW5nJiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5JikgeyB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgbmF2
aWdhdGlvbkdlc3R1cmVEaWRCZWdpbihXZWJLaXQ6OldlYlBhZ2VQcm94eSYpIHsgfQotICAgIHZp
cnR1YWwgdm9pZCBuYXZpZ2F0aW9uR2VzdHVyZVdpbGxFbmQoV2ViS2l0OjpXZWJQYWdlUHJveHkm
LCBib29sIHdpbGxOYXZpZ2F0ZSwgV2ViS2l0OjpXZWJCYWNrRm9yd2FyZExpc3RJdGVtJikgeyB9
Ci0gICAgdmlydHVhbCB2b2lkIG5hdmlnYXRpb25HZXN0dXJlRGlkRW5kKFdlYktpdDo6V2ViUGFn
ZVByb3h5JiwgYm9vbCB3aWxsTmF2aWdhdGUsIFdlYktpdDo6V2ViQmFja0ZvcndhcmRMaXN0SXRl
bSYpIHsgfQotCi0jaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCi0gICAgdmlydHVhbCB2
b2lkIHBsdWdpbkxvYWRQb2xpY3koV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBXZWJLaXQ6OlBsdWdp
bk1vZHVsZUxvYWRQb2xpY3kgY3VycmVudFBsdWdpbkxvYWRQb2xpY3ksIEFQSTo6RGljdGlvbmFy
eSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViS2l0OjpQbHVnaW5Nb2R1bGVMb2FkUG9saWN5
LCBjb25zdCBXVEY6OlN0cmluZyYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7IGNvbXBsZXRpb25I
YW5kbGVyKGN1cnJlbnRQbHVnaW5Mb2FkUG9saWN5LCB7IH0pOyB9Ci0gICAgdmlydHVhbCB2b2lk
IGRpZEZhaWxUb0luaXRpYWxpemVQbHVnaW4oV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBBUEk6OkRp
Y3Rpb25hcnkmKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlkQmxvY2tJbnNlY3VyZVBsdWdpblZl
cnNpb24oV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBBUEk6OkRpY3Rpb25hcnkmKSB7IH0KLSNlbmRp
ZiAvLyBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKLQotI2lmIEVOQUJMRShXRUJHTCkKLSAg
ICB2aXJ0dWFsIFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeSB3ZWJHTExvYWRQb2xpY3koV2ViS2l0
OjpXZWJQYWdlUHJveHkmLCBjb25zdCBXVEY6OlN0cmluZyYpIGNvbnN0IHsgcmV0dXJuIFdlYkNv
cmU6OldlYkdMTG9hZFBvbGljeTo6V2ViR0xBbGxvd0NyZWF0aW9uOyB9Ci0gICAgdmlydHVhbCBX
ZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kgcmVzb2x2ZVdlYkdMTG9hZFBvbGljeShXZWJLaXQ6Oldl
YlBhZ2VQcm94eSYsIGNvbnN0IFdURjo6U3RyaW5nJikgY29uc3QgeyByZXR1cm4gV2ViQ29yZTo6
V2ViR0xMb2FkUG9saWN5OjpXZWJHTEFsbG93Q3JlYXRpb247IH0KLSNlbmRpZiAvLyBFTkFCTEUo
V0VCR0wpCi0KLSNpZiBVU0UoUVVJQ0tfTE9PSykKLSAgICB2aXJ0dWFsIHZvaWQgZGlkU3RhcnRM
b2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25zdCBXVEY6OlN0cmluZyYgZmls
ZU5hbWUsIGNvbnN0IFdURjo6U3RyaW5nJiB1dGkpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBkaWRG
aW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25zdCBXZWJLaXQ6OlF1
aWNrTG9va0RvY3VtZW50RGF0YSYpIHsgfQotI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBB
UEkKLQotI2VuZGlmIC8vIEFQSUxvYWRlckNsaWVudF9oCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAJKHJldmlzaW9uIDIzNTM3MSkKKysrIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNDIsNiAr
MTA0Miw0MiBAQCB2b2lkIFdLUGFnZVNldFBhZ2VMb2FkZXJDbGllbnQoV0tQYWdlUmVmCiAgICAg
ICAgIGV4cGxpY2l0IExvYWRlckNsaWVudChjb25zdCBXS1BhZ2VMb2FkZXJDbGllbnRCYXNlKiBj
bGllbnQpCiAgICAgICAgIHsKICAgICAgICAgICAgIGluaXRpYWxpemUoY2xpZW50KTsKKyAgICAg
ICAgICAgIAorICAgICAgICAgICAgLy8gV0tQYWdlU2V0UGFnZUxvYWRlckNsaWVudCBpcyBkZXBy
ZWNhdGVkLiBVc2UgV0tQYWdlU2V0UGFnZU5hdmlnYXRpb25DbGllbnQgaW5zdGVhZC4KKyAgICAg
ICAgICAgIFJFTEVBU0VfQVNTRVJUKCFtX2NsaWVudC5kaWRDb21taXRMb2FkRm9yRnJhbWUpOwor
ICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIW1fY2xpZW50LmRpZEZpbmlzaERvY3VtZW50TG9h
ZEZvckZyYW1lKTsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFtX2NsaWVudC5kaWRTYW1l
RG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJhbWUpOworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQo
IW1fY2xpZW50LmRpZFJlY2VpdmVUaXRsZUZvckZyYW1lKTsKKyAgICAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKCFtX2NsaWVudC5kaWRGaXJzdExheW91dEZvckZyYW1lKTsKKyAgICAgICAgICAgIFJF
TEVBU0VfQVNTRVJUKCFtX2NsaWVudC5kaWRSZW1vdmVGcmFtZUZyb21IaWVyYXJjaHkpOworICAg
ICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIW1fY2xpZW50LmRpZERpc3BsYXlJbnNlY3VyZUNvbnRl
bnRGb3JGcmFtZSk7CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCghbV9jbGllbnQuZGlkUnVu
SW5zZWN1cmVDb250ZW50Rm9yRnJhbWUpOworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIW1f
Y2xpZW50LmNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2VJbkZyYW1lKTsKKyAg
ICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFtX2NsaWVudC5kaWRSZWNlaXZlQXV0aGVudGljYXRp
b25DaGFsbGVuZ2VJbkZyYW1lKTsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFtX2NsaWVu
dC5kaWRTdGFydFByb2dyZXNzKTsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFtX2NsaWVu
dC5kaWRDaGFuZ2VQcm9ncmVzcyk7CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCghbV9jbGll
bnQuZGlkRmluaXNoUHJvZ3Jlc3MpOworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIW1fY2xp
ZW50LnByb2Nlc3NEaWRCZWNvbWVVbnJlc3BvbnNpdmUpOworICAgICAgICAgICAgUkVMRUFTRV9B
U1NFUlQoIW1fY2xpZW50LnByb2Nlc3NEaWRCZWNvbWVSZXNwb25zaXZlKTsKKyAgICAgICAgICAg
IFJFTEVBU0VfQVNTRVJUKCFtX2NsaWVudC5wcm9jZXNzRGlkQ3Jhc2gpOworICAgICAgICAgICAg
UkVMRUFTRV9BU1NFUlQoIW1fY2xpZW50LmRpZENoYW5nZUJhY2tGb3J3YXJkTGlzdCk7CisgICAg
ICAgICAgICBSRUxFQVNFX0FTU0VSVCghbV9jbGllbnQuc2hvdWxkR29Ub0JhY2tGb3J3YXJkTGlz
dEl0ZW0pOworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIW1fY2xpZW50LmRpZEZhaWxUb0lu
aXRpYWxpemVQbHVnaW5fZGVwcmVjYXRlZEZvclVzZVdpdGhWMCk7CisgICAgICAgICAgICBSRUxF
QVNFX0FTU0VSVCghbV9jbGllbnQuZGlkRGV0ZWN0WFNTRm9yRnJhbWUpOworICAgICAgICAgICAg
UkVMRUFTRV9BU1NFUlQoIW1fY2xpZW50LmRpZE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91
dF91bmF2YWlsYWJsZSk7CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCghbV9jbGllbnQud2ls
bEdvVG9CYWNrRm9yd2FyZExpc3RJdGVtKTsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFt
X2NsaWVudC5pbnRlcmFjdGlvbk9jY3VycmVkV2hpbGVQcm9jZXNzVW5yZXNwb25zaXZlKTsKKyAg
ICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFtX2NsaWVudC5wbHVnaW5EaWRGYWlsX2RlcHJlY2F0
ZWRGb3JVc2VXaXRoVjEpOworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIW1fY2xpZW50LmRp
ZFJlY2VpdmVJbnRlbnRGb3JGcmFtZV91bmF2YWlsYWJsZSk7CisgICAgICAgICAgICBSRUxFQVNF
X0FTU0VSVCghbV9jbGllbnQucmVnaXN0ZXJJbnRlbnRTZXJ2aWNlRm9yRnJhbWVfdW5hdmFpbGFi
bGUpOworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIW1fY2xpZW50LnBsdWdpbkxvYWRQb2xp
Y3lfZGVwcmVjYXRlZEZvclVzZVdpdGhWMik7CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCgh
bV9jbGllbnQucGx1Z2luRGlkRmFpbCk7CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCghbV9j
bGllbnQucGx1Z2luTG9hZFBvbGljeSk7CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCghbV9j
bGllbnQud2ViR0xMb2FkUG9saWN5KTsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFtX2Ns
aWVudC5yZXNvbHZlV2ViR0xMb2FkUG9saWN5KTsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJU
KCFtX2NsaWVudC5uYXZpZ2F0aW9uR2VzdHVyZURpZEJlZ2luKTsKKyAgICAgICAgICAgIFJFTEVB
U0VfQVNTRVJUKCFtX2NsaWVudC5uYXZpZ2F0aW9uR2VzdHVyZVdpbGxFbmQpOworICAgICAgICAg
ICAgUkVMRUFTRV9BU1NFUlQoIW1fY2xpZW50Lm5hdmlnYXRpb25HZXN0dXJlRGlkRW5kKTsKICAg
ICAgICAgfQogCiAgICAgcHJpdmF0ZToKQEAgLTEwNjksMjIgKzExMDUsNiBAQCB2b2lkIFdLUGFn
ZVNldFBhZ2VMb2FkZXJDbGllbnQoV0tQYWdlUmVmCiAgICAgICAgICAgICBtX2NsaWVudC5kaWRG
YWlsUHJvdmlzaW9uYWxMb2FkV2l0aEVycm9yRm9yRnJhbWUodG9BUEkoJnBhZ2UpLCB0b0FQSSgm
ZnJhbWUpLCB0b0FQSShlcnJvciksIHRvQVBJKHVzZXJEYXRhKSwgbV9jbGllbnQuYmFzZS5jbGll
bnRJbmZvKTsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQgZGlkQ29tbWl0TG9hZEZvckZyYW1l
KFdlYlBhZ2VQcm94eSYgcGFnZSwgV2ViRnJhbWVQcm94eSYgZnJhbWUsIEFQSTo6TmF2aWdhdGlv
biosIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSkgb3ZlcnJpZGUKLSAgICAgICAgewotICAgICAgICAg
ICAgaWYgKCFtX2NsaWVudC5kaWRDb21taXRMb2FkRm9yRnJhbWUpCi0gICAgICAgICAgICAgICAg
cmV0dXJuOwotCi0gICAgICAgICAgICBtX2NsaWVudC5kaWRDb21taXRMb2FkRm9yRnJhbWUodG9B
UEkoJnBhZ2UpLCB0b0FQSSgmZnJhbWUpLCB0b0FQSSh1c2VyRGF0YSksIG1fY2xpZW50LmJhc2Uu
Y2xpZW50SW5mbyk7Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIGRpZEZpbmlzaERvY3VtZW50
TG9hZEZvckZyYW1lKFdlYlBhZ2VQcm94eSYgcGFnZSwgV2ViRnJhbWVQcm94eSYgZnJhbWUsIEFQ
STo6TmF2aWdhdGlvbiosIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSkgb3ZlcnJpZGUKLSAgICAgICAg
ewotICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFt
ZSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgICAgIG1fY2xpZW50LmRpZEZp
bmlzaERvY3VtZW50TG9hZEZvckZyYW1lKHRvQVBJKCZwYWdlKSwgdG9BUEkoJmZyYW1lKSwgdG9B
UEkodXNlckRhdGEpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotICAgICAgICB9Ci0KICAg
ICAgICAgdm9pZCBkaWRGaW5pc2hMb2FkRm9yRnJhbWUoV2ViUGFnZVByb3h5JiBwYWdlLCBXZWJG
cmFtZVByb3h5JiBmcmFtZSwgQVBJOjpOYXZpZ2F0aW9uKiwgQVBJOjpPYmplY3QqIHVzZXJEYXRh
KSBvdmVycmlkZQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRpZEZpbmlz
aExvYWRGb3JGcmFtZSkKQEAgLTExMDEsMzAgKzExMjEsNiBAQCB2b2lkIFdLUGFnZVNldFBhZ2VM
b2FkZXJDbGllbnQoV0tQYWdlUmVmCiAgICAgICAgICAgICBtX2NsaWVudC5kaWRGYWlsTG9hZFdp
dGhFcnJvckZvckZyYW1lKHRvQVBJKCZwYWdlKSwgdG9BUEkoJmZyYW1lKSwgdG9BUEkoZXJyb3Ip
LCB0b0FQSSh1c2VyRGF0YSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CiAgICAgICAgIH0K
IAotICAgICAgICB2b2lkIGRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZShXZWJQYWdl
UHJveHkmIHBhZ2UsIFdlYkZyYW1lUHJveHkmIGZyYW1lLCBBUEk6Ok5hdmlnYXRpb24qLCBTYW1l
RG9jdW1lbnROYXZpZ2F0aW9uVHlwZSB0eXBlLCBBUEk6Ok9iamVjdCogdXNlckRhdGEpIG92ZXJy
aWRlCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICghbV9jbGllbnQuZGlkU2FtZURvY3VtZW50
TmF2aWdhdGlvbkZvckZyYW1lKQotICAgICAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAg
ICAgbV9jbGllbnQuZGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbkZvckZyYW1lKHRvQVBJKCZwYWdl
KSwgdG9BUEkoJmZyYW1lKSwgdG9BUEkodHlwZSksIHRvQVBJKHVzZXJEYXRhKSwgbV9jbGllbnQu
YmFzZS5jbGllbnRJbmZvKTsKLSAgICAgICAgfQotCi0gICAgICAgIHZvaWQgZGlkUmVjZWl2ZVRp
dGxlRm9yRnJhbWUoV2ViUGFnZVByb3h5JiBwYWdlLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBXZWJG
cmFtZVByb3h5JiBmcmFtZSwgQVBJOjpPYmplY3QqIHVzZXJEYXRhKSBvdmVycmlkZQotICAgICAg
ICB7Ci0gICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRpZFJlY2VpdmVUaXRsZUZvckZyYW1lKQot
ICAgICAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAgICAgbV9jbGllbnQuZGlkUmVjZWl2
ZVRpdGxlRm9yRnJhbWUodG9BUEkoJnBhZ2UpLCB0b0FQSSh0aXRsZS5pbXBsKCkpLCB0b0FQSSgm
ZnJhbWUpLCB0b0FQSSh1c2VyRGF0YSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7Ci0gICAg
ICAgIH0KLQotICAgICAgICB2b2lkIGRpZEZpcnN0TGF5b3V0Rm9yRnJhbWUoV2ViUGFnZVByb3h5
JiBwYWdlLCBXZWJGcmFtZVByb3h5JiBmcmFtZSwgQVBJOjpPYmplY3QqIHVzZXJEYXRhKSBvdmVy
cmlkZQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRpZEZpcnN0TGF5b3V0
Rm9yRnJhbWUpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgICAgICBtX2NsaWVu
dC5kaWRGaXJzdExheW91dEZvckZyYW1lKHRvQVBJKCZwYWdlKSwgdG9BUEkoJmZyYW1lKSwgdG9B
UEkodXNlckRhdGEpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotICAgICAgICB9Ci0KICAg
ICAgICAgdm9pZCBkaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGb3JGcmFtZShXZWJQYWdl
UHJveHkmIHBhZ2UsIFdlYkZyYW1lUHJveHkmIGZyYW1lLCBBUEk6Ok9iamVjdCogdXNlckRhdGEp
IG92ZXJyaWRlCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmICghbV9jbGllbnQuZGlkRmlyc3RW
aXN1YWxseU5vbkVtcHR5TGF5b3V0Rm9yRnJhbWUpCkBAIC0xMTQxLDEwNyArMTEzNyw2IEBAIHZv
aWQgV0tQYWdlU2V0UGFnZUxvYWRlckNsaWVudChXS1BhZ2VSZWYKICAgICAgICAgICAgIG1fY2xp
ZW50LmRpZExheW91dCh0b0FQSSgmcGFnZSksIHRvV0tMYXlvdXRNaWxlc3RvbmVzKG1pbGVzdG9u
ZXMpLCBudWxscHRyLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwogICAgICAgICB9CiAKLSAg
ICAgICAgdm9pZCBkaWREaXNwbGF5SW5zZWN1cmVDb250ZW50Rm9yRnJhbWUoV2ViUGFnZVByb3h5
JiBwYWdlLCBXZWJGcmFtZVByb3h5JiBmcmFtZSwgQVBJOjpPYmplY3QqIHVzZXJEYXRhKSBvdmVy
cmlkZQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRpZERpc3BsYXlJbnNl
Y3VyZUNvbnRlbnRGb3JGcmFtZSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAg
ICAgIG1fY2xpZW50LmRpZERpc3BsYXlJbnNlY3VyZUNvbnRlbnRGb3JGcmFtZSh0b0FQSSgmcGFn
ZSksIHRvQVBJKCZmcmFtZSksIHRvQVBJKHVzZXJEYXRhKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJ
bmZvKTsKLSAgICAgICAgfQotCi0gICAgICAgIHZvaWQgZGlkUnVuSW5zZWN1cmVDb250ZW50Rm9y
RnJhbWUoV2ViUGFnZVByb3h5JiBwYWdlLCBXZWJGcmFtZVByb3h5JiBmcmFtZSwgQVBJOjpPYmpl
Y3QqIHVzZXJEYXRhKSBvdmVycmlkZQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1fY2xp
ZW50LmRpZFJ1bkluc2VjdXJlQ29udGVudEZvckZyYW1lKQotICAgICAgICAgICAgICAgIHJldHVy
bjsKLQotICAgICAgICAgICAgbV9jbGllbnQuZGlkUnVuSW5zZWN1cmVDb250ZW50Rm9yRnJhbWUo
dG9BUEkoJnBhZ2UpLCB0b0FQSSgmZnJhbWUpLCB0b0FQSSh1c2VyRGF0YSksIG1fY2xpZW50LmJh
c2UuY2xpZW50SW5mbyk7Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIGRpZERldGVjdFhTU0Zv
ckZyYW1lKFdlYlBhZ2VQcm94eSYgcGFnZSwgV2ViRnJhbWVQcm94eSYgZnJhbWUsIEFQSTo6T2Jq
ZWN0KiB1c2VyRGF0YSkgb3ZlcnJpZGUKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKCFtX2Ns
aWVudC5kaWREZXRlY3RYU1NGb3JGcmFtZSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0KLSAg
ICAgICAgICAgIG1fY2xpZW50LmRpZERldGVjdFhTU0ZvckZyYW1lKHRvQVBJKCZwYWdlKSwgdG9B
UEkoJmZyYW1lKSwgdG9BUEkodXNlckRhdGEpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwot
ICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVu
Z2VJbkZyYW1lKFdlYlBhZ2VQcm94eSYgcGFnZSwgV2ViRnJhbWVQcm94eSYgZnJhbWUsIEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkmIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKSBvdmVycmlk
ZQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAobV9jbGllbnQuY2FuQXV0aGVudGljYXRlQWdh
aW5zdFByb3RlY3Rpb25TcGFjZUluRnJhbWUgJiYgIW1fY2xpZW50LmNhbkF1dGhlbnRpY2F0ZUFn
YWluc3RQcm90ZWN0aW9uU3BhY2VJbkZyYW1lKHRvQVBJKCZwYWdlKSwgdG9BUEkoJmZyYW1lKSwg
dG9BUEkoYXV0aGVudGljYXRpb25DaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlKCkpLCBtX2NsaWVu
dC5iYXNlLmNsaWVudEluZm8pKQotICAgICAgICAgICAgICAgIHJldHVybiBhdXRoZW50aWNhdGlv
bkNoYWxsZW5nZS5yZWplY3RQcm90ZWN0aW9uU3BhY2VBbmRDb250aW51ZSgpOwotICAgICAgICAg
ICAgaWYgKCFtX2NsaWVudC5kaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2VJbkZyYW1l
KQotICAgICAgICAgICAgICAgIHJldHVybiBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5wZXJmb3Jt
RGVmYXVsdEhhbmRsaW5nKCk7Ci0KLSAgICAgICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZUluRnJhbWUodG9BUEkoJnBhZ2UpLCB0b0FQSSgmZnJhbWUpLCB0
b0FQSSgmYXV0aGVudGljYXRpb25DaGFsbGVuZ2UpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8p
OwotICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCBkaWRTdGFydFByb2dyZXNzKFdlYlBhZ2VQcm94
eSYgcGFnZSkgb3ZlcnJpZGUKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5k
aWRTdGFydFByb2dyZXNzKQotICAgICAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAgICAg
bV9jbGllbnQuZGlkU3RhcnRQcm9ncmVzcyh0b0FQSSgmcGFnZSksIG1fY2xpZW50LmJhc2UuY2xp
ZW50SW5mbyk7Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIGRpZENoYW5nZVByb2dyZXNzKFdl
YlBhZ2VQcm94eSYgcGFnZSkgb3ZlcnJpZGUKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKCFt
X2NsaWVudC5kaWRDaGFuZ2VQcm9ncmVzcykKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0KLSAg
ICAgICAgICAgIG1fY2xpZW50LmRpZENoYW5nZVByb2dyZXNzKHRvQVBJKCZwYWdlKSwgbV9jbGll
bnQuYmFzZS5jbGllbnRJbmZvKTsKLSAgICAgICAgfQotCi0gICAgICAgIHZvaWQgZGlkRmluaXNo
UHJvZ3Jlc3MoV2ViUGFnZVByb3h5JiBwYWdlKSBvdmVycmlkZQotICAgICAgICB7Ci0gICAgICAg
ICAgICBpZiAoIW1fY2xpZW50LmRpZEZpbmlzaFByb2dyZXNzKQotICAgICAgICAgICAgICAgIHJl
dHVybjsKLQotICAgICAgICAgICAgbV9jbGllbnQuZGlkRmluaXNoUHJvZ3Jlc3ModG9BUEkoJnBh
Z2UpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotICAgICAgICB9Ci0KLSAgICAgICAgdm9p
ZCBwcm9jZXNzRGlkQmVjb21lVW5yZXNwb25zaXZlKFdlYlBhZ2VQcm94eSYgcGFnZSkgb3ZlcnJp
ZGUKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5wcm9jZXNzRGlkQmVjb21l
VW5yZXNwb25zaXZlKQotICAgICAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAgICAgbV9j
bGllbnQucHJvY2Vzc0RpZEJlY29tZVVucmVzcG9uc2l2ZSh0b0FQSSgmcGFnZSksIG1fY2xpZW50
LmJhc2UuY2xpZW50SW5mbyk7Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIHByb2Nlc3NEaWRC
ZWNvbWVSZXNwb25zaXZlKFdlYlBhZ2VQcm94eSYgcGFnZSkgb3ZlcnJpZGUKLSAgICAgICAgewot
ICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5wcm9jZXNzRGlkQmVjb21lUmVzcG9uc2l2ZSkKLSAg
ICAgICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgICAgIG1fY2xpZW50LnByb2Nlc3NEaWRC
ZWNvbWVSZXNwb25zaXZlKHRvQVBJKCZwYWdlKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsK
LSAgICAgICAgfQotCi0gICAgICAgIGJvb2wgcHJvY2Vzc0RpZENyYXNoKFdlYlBhZ2VQcm94eSYg
cGFnZSkgb3ZlcnJpZGUKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5wcm9j
ZXNzRGlkQ3Jhc2gpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgICAg
ICBtX2NsaWVudC5wcm9jZXNzRGlkQ3Jhc2godG9BUEkoJnBhZ2UpLCBtX2NsaWVudC5iYXNlLmNs
aWVudEluZm8pOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLQotICAgICAg
ICB2b2lkIGRpZENoYW5nZUJhY2tGb3J3YXJkTGlzdChXZWJQYWdlUHJveHkmIHBhZ2UsIFdlYkJh
Y2tGb3J3YXJkTGlzdEl0ZW0qIGFkZGVkSXRlbSwgVmVjdG9yPFJlZjxXZWJCYWNrRm9yd2FyZExp
c3RJdGVtPj4mJiByZW1vdmVkSXRlbXMpIG92ZXJyaWRlCi0gICAgICAgIHsKLSAgICAgICAgICAg
IGlmICghbV9jbGllbnQuZGlkQ2hhbmdlQmFja0ZvcndhcmRMaXN0KQotICAgICAgICAgICAgICAg
IHJldHVybjsKLQotICAgICAgICAgICAgUmVmUHRyPEFQSTo6QXJyYXk+IHJlbW92ZWRJdGVtc0Fy
cmF5OwotICAgICAgICAgICAgaWYgKCFyZW1vdmVkSXRlbXMuaXNFbXB0eSgpKSB7Ci0gICAgICAg
ICAgICAgICAgVmVjdG9yPFJlZlB0cjxBUEk6Ok9iamVjdD4+IHJlbW92ZWRJdGVtc1ZlY3RvcjsK
LSAgICAgICAgICAgICAgICByZW1vdmVkSXRlbXNWZWN0b3IucmVzZXJ2ZUluaXRpYWxDYXBhY2l0
eShyZW1vdmVkSXRlbXMuc2l6ZSgpKTsKLSAgICAgICAgICAgICAgICBmb3IgKGF1dG8mIHJlbW92
ZWRJdGVtIDogcmVtb3ZlZEl0ZW1zKQotICAgICAgICAgICAgICAgICAgICByZW1vdmVkSXRlbXNW
ZWN0b3IuYXBwZW5kKFdURk1vdmUocmVtb3ZlZEl0ZW0pKTsKLQotICAgICAgICAgICAgICAgIHJl
bW92ZWRJdGVtc0FycmF5ID0gQVBJOjpBcnJheTo6Y3JlYXRlKFdURk1vdmUocmVtb3ZlZEl0ZW1z
VmVjdG9yKSk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIG1fY2xpZW50LmRpZENoYW5n
ZUJhY2tGb3J3YXJkTGlzdCh0b0FQSSgmcGFnZSksIHRvQVBJKGFkZGVkSXRlbSksIHRvQVBJKHJl
bW92ZWRJdGVtc0FycmF5LmdldCgpKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKLSAgICAg
ICAgfQotCiAgICAgICAgIGJvb2wgc2hvdWxkS2VlcEN1cnJlbnRCYWNrRm9yd2FyZExpc3RJdGVt
SW5MaXN0KFdlYktpdDo6V2ViUGFnZVByb3h5JiBwYWdlLCBXZWJLaXQ6OldlYkJhY2tGb3J3YXJk
TGlzdEl0ZW0mIGl0ZW0pIG92ZXJyaWRlCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmICghbV9j
bGllbnQuc2hvdWxkS2VlcEN1cnJlbnRCYWNrRm9yd2FyZExpc3RJdGVtSW5MaXN0KQpAQCAtMTI0
OSw5NSArMTE0NCw2IEBAIHZvaWQgV0tQYWdlU2V0UGFnZUxvYWRlckNsaWVudChXS1BhZ2VSZWYK
IAogICAgICAgICAgICAgcmV0dXJuIG1fY2xpZW50LnNob3VsZEtlZXBDdXJyZW50QmFja0Zvcndh
cmRMaXN0SXRlbUluTGlzdCh0b0FQSSgmcGFnZSksIHRvQVBJKCZpdGVtKSwgbV9jbGllbnQuYmFz
ZS5jbGllbnRJbmZvKTsKICAgICAgICAgfQotCi0gICAgICAgIHZvaWQgd2lsbEdvVG9CYWNrRm9y
d2FyZExpc3RJdGVtKFdlYlBhZ2VQcm94eSYgcGFnZSwgV2ViQmFja0ZvcndhcmRMaXN0SXRlbSYg
aXRlbSwgQVBJOjpPYmplY3QqIHVzZXJEYXRhKSBvdmVycmlkZQotICAgICAgICB7Ci0gICAgICAg
ICAgICBpZiAobV9jbGllbnQud2lsbEdvVG9CYWNrRm9yd2FyZExpc3RJdGVtKQotICAgICAgICAg
ICAgICAgIG1fY2xpZW50LndpbGxHb1RvQmFja0ZvcndhcmRMaXN0SXRlbSh0b0FQSSgmcGFnZSks
IHRvQVBJKCZpdGVtKSwgdG9BUEkodXNlckRhdGEpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8p
OwotICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCBuYXZpZ2F0aW9uR2VzdHVyZURpZEJlZ2luKFdl
YlBhZ2VQcm94eSYgcGFnZSkgb3ZlcnJpZGUKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKG1f
Y2xpZW50Lm5hdmlnYXRpb25HZXN0dXJlRGlkQmVnaW4pCi0gICAgICAgICAgICAgICAgbV9jbGll
bnQubmF2aWdhdGlvbkdlc3R1cmVEaWRCZWdpbih0b0FQSSgmcGFnZSksIG1fY2xpZW50LmJhc2Uu
Y2xpZW50SW5mbyk7Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIG5hdmlnYXRpb25HZXN0dXJl
V2lsbEVuZChXZWJQYWdlUHJveHkmIHBhZ2UsIGJvb2wgd2lsbE5hdmlnYXRlLCBXZWJCYWNrRm9y
d2FyZExpc3RJdGVtJiBpdGVtKSBvdmVycmlkZQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAo
bV9jbGllbnQubmF2aWdhdGlvbkdlc3R1cmVXaWxsRW5kKQotICAgICAgICAgICAgICAgIG1fY2xp
ZW50Lm5hdmlnYXRpb25HZXN0dXJlV2lsbEVuZCh0b0FQSSgmcGFnZSksIHdpbGxOYXZpZ2F0ZSwg
dG9BUEkoJml0ZW0pLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotICAgICAgICB9Ci0KLSAg
ICAgICAgdm9pZCBuYXZpZ2F0aW9uR2VzdHVyZURpZEVuZChXZWJQYWdlUHJveHkmIHBhZ2UsIGJv
b2wgd2lsbE5hdmlnYXRlLCBXZWJCYWNrRm9yd2FyZExpc3RJdGVtJiBpdGVtKSBvdmVycmlkZQot
ICAgICAgICB7Ci0gICAgICAgICAgICBpZiAobV9jbGllbnQubmF2aWdhdGlvbkdlc3R1cmVEaWRF
bmQpCi0gICAgICAgICAgICAgICAgbV9jbGllbnQubmF2aWdhdGlvbkdlc3R1cmVEaWRFbmQodG9B
UEkoJnBhZ2UpLCB3aWxsTmF2aWdhdGUsIHRvQVBJKCZpdGVtKSwgbV9jbGllbnQuYmFzZS5jbGll
bnRJbmZvKTsKLSAgICAgICAgfQotCi0jaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCi0g
ICAgICAgIHZvaWQgZGlkRmFpbFRvSW5pdGlhbGl6ZVBsdWdpbihXZWJQYWdlUHJveHkmIHBhZ2Us
IEFQSTo6RGljdGlvbmFyeSYgcGx1Z2luSW5mb3JtYXRpb24pIGZpbmFsCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIGlmIChtX2NsaWVudC5kaWRGYWlsVG9Jbml0aWFsaXplUGx1Z2luX2RlcHJlY2F0
ZWRGb3JVc2VXaXRoVjApCi0gICAgICAgICAgICAgICAgbV9jbGllbnQuZGlkRmFpbFRvSW5pdGlh
bGl6ZVBsdWdpbl9kZXByZWNhdGVkRm9yVXNlV2l0aFYwKHRvQVBJKCZwYWdlKSwgdG9BUEkocGx1
Z2luSW5mb3JtYXRpb24uZ2V0PEFQSTo6U3RyaW5nPihwbHVnaW5JbmZvcm1hdGlvbk1JTUVUeXBl
S2V5KCkpKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKLQotICAgICAgICAgICAgaWYgKG1f
Y2xpZW50LnBsdWdpbkRpZEZhaWxfZGVwcmVjYXRlZEZvclVzZVdpdGhWMSkKLSAgICAgICAgICAg
ICAgICBtX2NsaWVudC5wbHVnaW5EaWRGYWlsX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjEodG9BUEko
JnBhZ2UpLCBrV0tFcnJvckNvZGVDYW5ub3RMb2FkUGx1Z0luLCB0b0FQSShwbHVnaW5JbmZvcm1h
dGlvbi5nZXQ8QVBJOjpTdHJpbmc+KHBsdWdpbkluZm9ybWF0aW9uTUlNRVR5cGVLZXkoKSkpLCAw
LCAwLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotCi0gICAgICAgICAgICBpZiAobV9jbGll
bnQucGx1Z2luRGlkRmFpbCkKLSAgICAgICAgICAgICAgICBtX2NsaWVudC5wbHVnaW5EaWRGYWls
KHRvQVBJKCZwYWdlKSwga1dLRXJyb3JDb2RlQ2Fubm90TG9hZFBsdWdJbiwgdG9BUEkoJnBsdWdp
bkluZm9ybWF0aW9uKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKLSAgICAgICAgfQotCi0g
ICAgICAgIHZvaWQgZGlkQmxvY2tJbnNlY3VyZVBsdWdpblZlcnNpb24oV2ViUGFnZVByb3h5JiBw
YWdlLCBBUEk6OkRpY3Rpb25hcnkmIHBsdWdpbkluZm9ybWF0aW9uKSBvdmVycmlkZQotICAgICAg
ICB7Ci0gICAgICAgICAgICBpZiAobV9jbGllbnQucGx1Z2luRGlkRmFpbF9kZXByZWNhdGVkRm9y
VXNlV2l0aFYxKQotICAgICAgICAgICAgICAgIG1fY2xpZW50LnBsdWdpbkRpZEZhaWxfZGVwcmVj
YXRlZEZvclVzZVdpdGhWMSh0b0FQSSgmcGFnZSksIGtXS0Vycm9yQ29kZUluc2VjdXJlUGx1Z0lu
VmVyc2lvbiwgdG9BUEkocGx1Z2luSW5mb3JtYXRpb24uZ2V0PEFQSTo6U3RyaW5nPihwbHVnaW5J
bmZvcm1hdGlvbk1JTUVUeXBlS2V5KCkpKSwgdG9BUEkocGx1Z2luSW5mb3JtYXRpb24uZ2V0PEFQ
STo6U3RyaW5nPihwbHVnaW5JbmZvcm1hdGlvbkJ1bmRsZUlkZW50aWZpZXJLZXkoKSkpLCB0b0FQ
SShwbHVnaW5JbmZvcm1hdGlvbi5nZXQ8QVBJOjpTdHJpbmc+KHBsdWdpbkluZm9ybWF0aW9uQnVu
ZGxlVmVyc2lvbktleSgpKSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7Ci0KLSAgICAgICAg
ICAgIGlmIChtX2NsaWVudC5wbHVnaW5EaWRGYWlsKQotICAgICAgICAgICAgICAgIG1fY2xpZW50
LnBsdWdpbkRpZEZhaWwodG9BUEkoJnBhZ2UpLCBrV0tFcnJvckNvZGVJbnNlY3VyZVBsdWdJblZl
cnNpb24sIHRvQVBJKCZwbHVnaW5JbmZvcm1hdGlvbiksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5m
byk7Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIHBsdWdpbkxvYWRQb2xpY3koV2ViUGFnZVBy
b3h5JiBwYWdlLCBQbHVnaW5Nb2R1bGVMb2FkUG9saWN5IGN1cnJlbnRQbHVnaW5Mb2FkUG9saWN5
LCBBUEk6OkRpY3Rpb25hcnkmIHBsdWdpbkluZm9ybWF0aW9uLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFdlYktpdDo6UGx1Z2luTW9kdWxlTG9hZFBvbGljeSwgY29uc3QgU3RyaW5nJik+JiYgY29t
cGxldGlvbkhhbmRsZXIpIG92ZXJyaWRlCi0gICAgICAgIHsKLSAgICAgICAgICAgIFdLU3RyaW5n
UmVmIHVuYXZhaWxhYmlsaXR5RGVzY3JpcHRpb25PdXQgPSAwOwotICAgICAgICAgICAgUGx1Z2lu
TW9kdWxlTG9hZFBvbGljeSBsb2FkUG9saWN5ID0gY3VycmVudFBsdWdpbkxvYWRQb2xpY3k7Ci0K
LSAgICAgICAgICAgIGlmIChtX2NsaWVudC5wbHVnaW5Mb2FkUG9saWN5X2RlcHJlY2F0ZWRGb3JV
c2VXaXRoVjIpCi0gICAgICAgICAgICAgICAgbG9hZFBvbGljeSA9IHRvUGx1Z2luTW9kdWxlTG9h
ZFBvbGljeShtX2NsaWVudC5wbHVnaW5Mb2FkUG9saWN5X2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjIo
dG9BUEkoJnBhZ2UpLCB0b1dLUGx1Z2luTG9hZFBvbGljeShjdXJyZW50UGx1Z2luTG9hZFBvbGlj
eSksIHRvQVBJKCZwbHVnaW5JbmZvcm1hdGlvbiksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbykp
OwotICAgICAgICAgICAgZWxzZSBpZiAobV9jbGllbnQucGx1Z2luTG9hZFBvbGljeSkKLSAgICAg
ICAgICAgICAgICBsb2FkUG9saWN5ID0gdG9QbHVnaW5Nb2R1bGVMb2FkUG9saWN5KG1fY2xpZW50
LnBsdWdpbkxvYWRQb2xpY3kodG9BUEkoJnBhZ2UpLCB0b1dLUGx1Z2luTG9hZFBvbGljeShjdXJy
ZW50UGx1Z2luTG9hZFBvbGljeSksIHRvQVBJKCZwbHVnaW5JbmZvcm1hdGlvbiksICZ1bmF2YWls
YWJpbGl0eURlc2NyaXB0aW9uT3V0LCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pKTsKLQotICAg
ICAgICAgICAgU3RyaW5nIHVuYXZhaWxhYmlsaXR5RGVzY3JpcHRpb247Ci0gICAgICAgICAgICBp
ZiAodW5hdmFpbGFiaWxpdHlEZXNjcmlwdGlvbk91dCkgewotICAgICAgICAgICAgICAgIFJlZlB0
cjxBUEk6OlN0cmluZz4gd2ViVW5hdmFpbGFiaWxpdHlEZXNjcmlwdGlvbiA9IGFkb3B0UmVmKHRv
SW1wbCh1bmF2YWlsYWJpbGl0eURlc2NyaXB0aW9uT3V0KSk7Ci0gICAgICAgICAgICAgICAgdW5h
dmFpbGFiaWxpdHlEZXNjcmlwdGlvbiA9IHdlYlVuYXZhaWxhYmlsaXR5RGVzY3JpcHRpb24tPnN0
cmluZygpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgCi0gICAgICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihsb2FkUG9saWN5LCB1bmF2YWlsYWJpbGl0eURlc2NyaXB0aW9uKTsKLSAgICAg
ICAgfQotI2VuZGlmIC8vIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQotCi0jaWYgRU5BQkxF
KFdFQkdMKQotICAgICAgICBXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kgd2ViR0xMb2FkUG9saWN5
KFdlYlBhZ2VQcm94eSYgcGFnZSwgY29uc3QgU3RyaW5nJiB1cmwpIGNvbnN0IG92ZXJyaWRlCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeSBsb2FkUG9saWN5
ID0gV2ViR0xBbGxvd0NyZWF0aW9uOwotCi0gICAgICAgICAgICBpZiAobV9jbGllbnQud2ViR0xM
b2FkUG9saWN5KQotICAgICAgICAgICAgICAgIGxvYWRQb2xpY3kgPSB0b1dlYkdMTG9hZFBvbGlj
eShtX2NsaWVudC53ZWJHTExvYWRQb2xpY3kodG9BUEkoJnBhZ2UpLCB0b0FQSSh1cmwuaW1wbCgp
KSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKSk7Ci0KLSAgICAgICAgICAgIHJldHVybiBsb2Fk
UG9saWN5OwotICAgICAgICB9Ci0KLSAgICAgICAgV2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5IHJl
c29sdmVXZWJHTExvYWRQb2xpY3koV2ViUGFnZVByb3h5JiBwYWdlLCBjb25zdCBTdHJpbmcmIHVy
bCkgY29uc3Qgb3ZlcnJpZGUKLSAgICAgICAgewotICAgICAgICAgICAgV2ViQ29yZTo6V2ViR0xM
b2FkUG9saWN5IGxvYWRQb2xpY3kgPSBXZWJHTEFsbG93Q3JlYXRpb247Ci0KLSAgICAgICAgICAg
IGlmIChtX2NsaWVudC5yZXNvbHZlV2ViR0xMb2FkUG9saWN5KQotICAgICAgICAgICAgICAgIGxv
YWRQb2xpY3kgPSB0b1dlYkdMTG9hZFBvbGljeShtX2NsaWVudC5yZXNvbHZlV2ViR0xMb2FkUG9s
aWN5KHRvQVBJKCZwYWdlKSwgdG9BUEkodXJsLmltcGwoKSksIG1fY2xpZW50LmJhc2UuY2xpZW50
SW5mbykpOwotCi0gICAgICAgICAgICByZXR1cm4gbG9hZFBvbGljeTsKLSAgICAgICAgfQotCi0j
ZW5kaWYgLy8gRU5BQkxFKFdFQkdMKQogICAgIH07CiAKICAgICBXZWJQYWdlUHJveHkqIHdlYlBh
Z2VQcm94eSA9IHRvSW1wbChwYWdlUmVmKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9XZWJQYWdlUHJveHlJT1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQkocmV2aXNpb24gMjM1MzcxKQorKysgU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQkod29ya2luZyBjb3B5KQpA
QCAtMTEyNSwxNiArMTEyNSwxMiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkU3RhcnRMb2FkRm9y
UXVpY2tMCiAgICAgc3RhdGljX2Fzc2VydChub3RGb3VuZCArIDEgPT0gMCwgIlRoZSBmb2xsb3dp
bmcgbGluZSBhc3N1bWVzIFdURjo6bm90Rm91bmQgZXF1YWxzIC0xIik7CiAgICAgaWYgKG1fbmF2
aWdhdGlvbkNsaWVudCkKICAgICAgICAgbV9uYXZpZ2F0aW9uQ2xpZW50LT5kaWRTdGFydExvYWRG
b3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGZpbGVOYW1lLnN1YnN0cmluZyhmaWxlTmFt
ZS5yZXZlcnNlRmluZCgnLycpICsgMSksIHV0aSk7Ci0gICAgZWxzZQotICAgICAgICBtX2xvYWRl
ckNsaWVudC0+ZGlkU3RhcnRMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShmaWxl
TmFtZS5zdWJzdHJpbmcoZmlsZU5hbWUucmV2ZXJzZUZpbmQoJy8nKSArIDEpLCB1dGkpOwogfQog
CiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5N
YWluRnJhbWUoY29uc3QgUXVpY2tMb29rRG9jdW1lbnREYXRhJiBkYXRhKQogewogICAgIGlmICht
X25hdmlnYXRpb25DbGllbnQpCiAgICAgICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+ZGlkRmluaXNo
TG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUoZGF0YSk7Ci0gICAgZWxzZQotICAg
ICAgICBtX2xvYWRlckNsaWVudC0+ZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5N
YWluRnJhbWUoZGF0YSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRSZXF1ZXN0UGFzc3dv
cmRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUp
Cg==
</data>
<flag name="review"
          id="365853"
          type_id="1"
          status="+"
          setter="thorton"
    />
          </attachment>
      

    </bug>

</bugzilla>