<?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>10927</bug_id>
          
          <creation_ts>2006-09-18 18:37:32 -0700</creation_ts>
          <short_desc>ResourceLoaderClient::receivedRedirect is never called</short_desc>
          <delta_ts>2006-09-26 09:15:16 -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>Platform</component>
          <version>420+</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Windows XP</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>10744</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Darin Fisher (:fishd, Google)">fishd</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>55866</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2006-09-18 18:37:32 -0700</bug_when>
    <thetext>ResourceLoaderClient::receivedRedirect is never called</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>55867</commentid>
    <comment_count>1</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2006-09-18 18:39:30 -0700</bug_when>
    <thetext>Related to this bug is the fact that IWebFrameLoadDelegate&apos;s didReceiveServerRedirectForProvisionalLoadForFrame method is not called.  (Man, that&apos;s a long method name!)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>55868</commentid>
    <comment_count>2</comment_count>
      <attachid>10636</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2006-09-18 19:22:31 -0700</bug_when>
    <thetext>Created attachment 10636
patch

This patch makes it so that client()-&gt;receivedRedirect is called.

I also took a stab at cleaning up the large WndProc in ResourceLoaderWin.cpp.  I found a way to avoid the heap-allocated struct passed to PostMessage, and I also got rid of the unnecessary call to RegisterWindowMessage, replacing it with WM_USER + N.  I hope you will consider these changes as I believe they make ResourceLoaderWin.cpp much more manageable.

The code for INTERNET_STATUS_USER_INPUT_REQUIRED is needed in case WinInet is configured to prompt on security warnings, etc.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>55980</commentid>
    <comment_count>3</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2006-09-19 18:58:25 -0700</bug_when>
    <thetext>It turns out that this patch also fixes bug 10744.  That bug is caused by the fact that we do not respond to INTERNET_STATUS_USER_INPUT_REQUIRED.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>56185</commentid>
    <comment_count>4</comment_count>
      <attachid>10697</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2006-09-21 16:57:22 -0700</bug_when>
    <thetext>Created attachment 10697
revised patch per feedback from maciej

Revised patch.  Got rid of &quot;k&quot; prefixes on variables.  Switched from UINT to int where appropriate.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>56186</commentid>
    <comment_count>5</comment_count>
      <attachid>10697</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2006-09-21 17:44:02 -0700</bug_when>
    <thetext>Comment on attachment 10697
revised patch per feedback from maciej

This is pretty good, but it misses one important thing - note my follow up patch and how it sets the error code in the ResourceLoader (which is used elsewhere!)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>56188</commentid>
    <comment_count>6</comment_count>
      <attachid>10698</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2006-09-21 18:17:25 -0700</bug_when>
    <thetext>Created attachment 10698
New patch with some small (critical) fixes

I think I can get someone else to review this tonite (I&apos;ll email the team)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>56189</commentid>
    <comment_count>7</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2006-09-21 18:33:20 -0700</bug_when>
    <thetext>Please note the changes between my first and second patches.  The latest patch undoes the changes that Maciej recommended.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>56243</commentid>
    <comment_count>8</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2006-09-22 11:28:06 -0700</bug_when>
    <thetext>I completely didn&apos;t realize that there was a follow up that contained feedback from maciej.

I just checked in my version, but I will go back and merge the changes maciej originally requested into what I decided on
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>56264</commentid>
    <comment_count>9</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2006-09-22 16:29:32 -0700</bug_when>
    <thetext>Commited in r16526</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>56539</commentid>
    <comment_count>10</comment_count>
      <attachid>10698</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2006-09-26 09:15:16 -0700</bug_when>
    <thetext>Comment on attachment 10698
New patch with some small (critical) fixes

Clearing review flag</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>10636</attachid>
            <date>2006-09-18 19:22:31 -0700</date>
            <delta_ts>2006-09-21 16:57:22 -0700</delta_ts>
            <desc>patch</desc>
            <filename>loader-1.diff</filename>
            <type>text/plain</type>
            <size>17515</size>
            <attacher name="Darin Fisher (:fishd, Google)">fishd</attacher>
            
              <data encoding="base64">SW5kZXg6IFJlc291cmNlTG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gUmVzb3VyY2VMb2FkZXIuaAko
cmV2aXNpb24gMTY0MzkpCisrKyBSZXNvdXJjZUxvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC04
Niw2ICs4Niw5IEBACiAKICNpZiBVU0UoV0lOSU5FVCkKICAgICB2b2lkIGZpbGVMb2FkVGltZXIo
VGltZXI8UmVzb3VyY2VMb2FkZXI+KiB0aW1lcik7CisgICAgdm9pZCBvbkhhbmRsZUNyZWF0ZWQo
TFBBUkFNKTsKKyAgICB2b2lkIG9uUmVxdWVzdFJlZGlyZWN0ZWQoTFBBUkFNKTsKKyAgICB2b2lk
IG9uUmVxdWVzdENvbXBsZXRlKExQQVJBTSk7CiAgICAgZnJpZW5kIHZvaWQgX19zdGRjYWxsIHRy
YW5zZmVySm9iU3RhdHVzQ2FsbGJhY2soSElOVEVSTkVULCBEV09SRF9QVFIsIERXT1JELCBMUFZP
SUQsIERXT1JEKTsKICAgICBmcmllbmQgTFJFU1VMVCBfX3N0ZGNhbGwgUmVzb3VyY2VMb2FkZXJX
bmRQcm9jKEhXTkQsIHVuc2lnbmVkIG1lc3NhZ2UsIFdQQVJBTSwgTFBBUkFNKTsKICNlbmRpZgpJ
bmRleDogd2luL1Jlc291cmNlTG9hZGVyV2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB3aW4vUmVzb3Vy
Y2VMb2FkZXJXaW4uY3BwCShyZXZpc2lvbiAxNjQ0MCkKKysrIHdpbi9SZXNvdXJjZUxvYWRlcldp
bi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxLDkgKzQxLDI0IEBACiBzdGF0aWMgSGFzaE1hcDxp
bnQsIFJlc291cmNlTG9hZGVyKj4qIGpvYklkTWFwID0gMDsKIAogc3RhdGljIEhXTkQgdHJhbnNm
ZXJKb2JXaW5kb3dIYW5kbGUgPSAwOwotc3RhdGljIFVJTlQgbG9hZFN0YXR1c01lc3NhZ2UgPSAw
OwogY29uc3QgTFBDV1NUUiBrUmVzb3VyY2VMb2FkZXJXaW5kb3dDbGFzc05hbWUgPSBMIlJlc291
cmNlTG9hZGVyV2luZG93Q2xhc3MiOwogCisvLyBNZXNzYWdlIHR5cGVzIGZvciBpbnRlcm5hbCB1
c2UgKGtlZXAgaW4gc3luYyB3aXRoIGtNZXNzYWdlSGFuZGxlcnMpCitlbnVtIHsKKyAga0hhbmRs
ZUNyZWF0ZWRNZXNzYWdlID0gV01fVVNFUiwKKyAga1JlcXVlc3RSZWRpcmVjdGVkTWVzc2FnZSwK
KyAga1JlcXVlc3RDb21wbGV0ZU1lc3NhZ2UKK307CisKK3R5cGVkZWYgdm9pZCAoUmVzb3VyY2VM
b2FkZXI6OiAqUmVzb3VyY2VMb2FkZXJFdmVudEhhbmRsZXIpKExQQVJBTSk7CitzdGF0aWMgY29u
c3QgUmVzb3VyY2VMb2FkZXJFdmVudEhhbmRsZXIga01lc3NhZ2VIYW5kbGVyc1tdID0geworICAg
ICZSZXNvdXJjZUxvYWRlcjo6b25IYW5kbGVDcmVhdGVkLAorICAgICZSZXNvdXJjZUxvYWRlcjo6
b25SZXF1ZXN0UmVkaXJlY3RlZCwKKyAgICAmUmVzb3VyY2VMb2FkZXI6Om9uUmVxdWVzdENvbXBs
ZXRlCit9Oworc3RhdGljIGNvbnN0IGludCBrTnVtTWVzc2FnZUhhbmRsZXJzID0KKyAgICBzaXpl
b2Yoa01lc3NhZ2VIYW5kbGVycykgLyBzaXplb2Yoa01lc3NhZ2VIYW5kbGVyc1swXSk7CisKIHN0
YXRpYyBpbnQgYWRkVG9PdXRzdGFuZGluZ0pvYnMoUmVzb3VyY2VMb2FkZXIqIGpvYikKIHsKICAg
ICBpZiAoIWpvYklkTWFwKQpAQCAtNjcsMTUwICs4MiwyMyBAQAogICAgIHJldHVybiBqb2JJZE1h
cC0+Z2V0KGpvYklkKTsKIH0KIAotc3RydWN0IEpvYkxvYWRTdGF0dXMgewotICAgIERXT1JEIGlu
dGVybmV0U3RhdHVzOwotICAgIERXT1JEX1BUUiBkd1Jlc3VsdDsKLX07Ci0KLUxSRVNVTFQgQ0FM
TEJBQ0sgUmVzb3VyY2VMb2FkZXJXbmRQcm9jKEhXTkQgaFduZCwgVUlOVCBtZXNzYWdlLCBXUEFS
QU0gd1BhcmFtLCBMUEFSQU0gbFBhcmFtKQorc3RhdGljIExSRVNVTFQgQ0FMTEJBQ0sgUmVzb3Vy
Y2VMb2FkZXJXbmRQcm9jKEhXTkQgaFduZCwgVUlOVCBtZXNzYWdlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdQQVJBTSB3UGFyYW0sIExQQVJBTSBsUGFy
YW0pCiB7Ci0gICAgaWYgKG1lc3NhZ2UgPT0gbG9hZFN0YXR1c01lc3NhZ2UpIHsKLSAgICAgICAg
Sm9iTG9hZFN0YXR1cyogam9iTG9hZFN0YXR1cyA9IChKb2JMb2FkU3RhdHVzKilsUGFyYW07Ci0g
ICAgICAgIERXT1JEIGludGVybmV0U3RhdHVzID0gam9iTG9hZFN0YXR1cy0+aW50ZXJuZXRTdGF0
dXM7Ci0gICAgICAgIERXT1JEX1BUUiBkd1Jlc3VsdCA9IGpvYkxvYWRTdGF0dXMtPmR3UmVzdWx0
OwotICAgICAgICBkZWxldGUgam9iTG9hZFN0YXR1czsKLSAgICAgICAgam9iTG9hZFN0YXR1cyA9
IDA7Ci0KLSAgICAgICAgLy8gSWYgd2UgZ2V0IGEgbWVzc2FnZSBhYm91dCBhIGpvYiB3ZSBubyBs
b25nZXIga25vdyBhYm91dCAoYWxyZWFkeSBkZWxldGVkKSwgaWdub3JlIGl0LgotICAgICAgICB1
bnNpZ25lZCBqb2JJZCA9ICh1bnNpZ25lZCl3UGFyYW07Ci0gICAgICAgIFJlc291cmNlTG9hZGVy
KiBqb2IgPSBsb29rdXBSZXNvdXJjZUxvYWRlcihqb2JJZCk7Ci0gICAgICAgIGlmICgham9iKQor
ICAgIGlmIChtZXNzYWdlID49IGtIYW5kbGVDcmVhdGVkTWVzc2FnZSkgeworICAgICAgICBVSU5U
IGluZGV4ID0gbWVzc2FnZSAtIGtIYW5kbGVDcmVhdGVkTWVzc2FnZTsKKyAgICAgICAgaWYgKGlu
ZGV4IDwga051bU1lc3NhZ2VIYW5kbGVycykgeworICAgICAgICAgICAgdW5zaWduZWQgam9iSWQg
PSAodW5zaWduZWQpIHdQYXJhbTsKKyAgICAgICAgICAgIFJlc291cmNlTG9hZGVyKiBqb2IgPSBs
b29rdXBSZXNvdXJjZUxvYWRlcihqb2JJZCk7CisgICAgICAgICAgICBpZiAoam9iKSB7CisgICAg
ICAgICAgICAgICAgQVNTRVJUKGpvYi0+ZC0+bV9qb2JJZCA9PSBqb2JJZCk7CisgICAgICAgICAg
ICAgICAgQVNTRVJUKGpvYi0+ZC0+bV90aHJlYWRJZCA9PSBHZXRDdXJyZW50VGhyZWFkSWQoKSk7
CisgICAgICAgICAgICAgICAgKGpvYi0+KihrTWVzc2FnZUhhbmRsZXJzW2luZGV4XSkpKGxQYXJh
bSk7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4gMDsKLQotICAgICAgICBBU1NF
UlQoam9iLT5kLT5tX2pvYklkID09IGpvYklkKTsKLSAgICAgICAgQVNTRVJUKGpvYi0+ZC0+bV90
aHJlYWRJZCA9PSBHZXRDdXJyZW50VGhyZWFkSWQoKSk7Ci0KLSAgICAgICAgaWYgKGludGVybmV0
U3RhdHVzID09IElOVEVSTkVUX1NUQVRVU19IQU5ETEVfQ1JFQVRFRCkgewotICAgICAgICAgICAg
aWYgKCFqb2ItPmQtPm1fcmVzb3VyY2VIYW5kbGUpIHsKLSAgICAgICAgICAgICAgICBqb2ItPmQt
Pm1fcmVzb3VyY2VIYW5kbGUgPSBISU5URVJORVQoZHdSZXN1bHQpOwotICAgICAgICAgICAgICAg
IGlmIChqb2ItPmQtPnN0YXR1cyAhPSAwKSB7Ci0gICAgICAgICAgICAgICAgICAgIC8vIFdlIHdl
cmUgY2FuY2VsZWQgYmVmb3JlIFdpbmRvd3MgYWN0dWFsbHkgY3JlYXRlZCBhIGhhbmRsZSBmb3Ig
dXMsIGNsb3NlIGFuZCBkZWxldGUgbm93LgotICAgICAgICAgICAgICAgICAgICBJbnRlcm5ldENs
b3NlSGFuZGxlKGpvYi0+ZC0+bV9yZXNvdXJjZUhhbmRsZSk7Ci0gICAgICAgICAgICAgICAgICAg
IGRlbGV0ZSBqb2I7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgaWYgKGpv
Yi0+bWV0aG9kKCkgPT0gIlBPU1QiKSB7Ci0gICAgICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBU
b28gbGF0ZSB0byBzZXQgcmVmZXJyZXIgcHJvcGVybHkuCi0gICAgICAgICAgICAgICAgICAgIERl
cHJlY2F0ZWRTdHJpbmcgdXJsU3RyID0gam9iLT5kLT5VUkwucGF0aCgpOwotICAgICAgICAgICAg
ICAgICAgICBpbnQgZnJhZ21lbnRJbmRleCA9IHVybFN0ci5maW5kKCcjJyk7Ci0gICAgICAgICAg
ICAgICAgICAgIGlmIChmcmFnbWVudEluZGV4ICE9IC0xKQotICAgICAgICAgICAgICAgICAgICAg
ICAgdXJsU3RyID0gdXJsU3RyLmxlZnQoZnJhZ21lbnRJbmRleCk7Ci0gICAgICAgICAgICAgICAg
ICAgIHN0YXRpYyBMUENTVFIgYWNjZXB0WzJdPXsiKi8qIiwgTlVMTH07Ci0gICAgICAgICAgICAg
ICAgICAgIEhJTlRFUk5FVCB1cmxIYW5kbGUgPSBIdHRwT3BlblJlcXVlc3RBKGpvYi0+ZC0+bV9y
ZXNvdXJjZUhhbmRsZSwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJQT1NUIiwgdXJsU3RyLmxhdGluMSgpLCAwLCAwLCBhY2NlcHQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIElOVEVSTkVUX0ZMQUdfS0VFUF9DT05ORUNUSU9OIHwgCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElOVEVSTkVUX0ZMQUdfRk9S
TVNfU1VCTUlUIHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgSU5URVJORVRfRkxBR19SRUxPQUQgfCBJTlRFUk5FVF9GTEFHX05PX0NB
Q0hFX1dSSVRFLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAoRFdPUkRfUFRSKWpvYi0+ZC0+bV9qb2JJZCk7Ci0gICAgICAgICAgICAg
ICAgICAgIGlmICh1cmxIYW5kbGUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIEludGVybmV0Q2xvc2VIYW5kbGUoam9iLT5kLT5tX3Jlc291cmNlSGFu
ZGxlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBqb2I7Ci0gICAgICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKCFqb2It
PmQtPm1fc2Vjb25kYXJ5SGFuZGxlKSB7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0KGpvYi0+bWV0
aG9kKCkgPT0gIlBPU1QiKTsKLSAgICAgICAgICAgICAgICBqb2ItPmQtPm1fc2Vjb25kYXJ5SGFu
ZGxlID0gSElOVEVSTkVUKGR3UmVzdWx0KTsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAg
ICAgICAvLyBOZWVkIHRvIGFjdHVhbGx5IHNlbmQgdGhlIHJlcXVlc3Qgbm93LgotICAgICAgICAg
ICAgICAgIFN0cmluZyBoZWFkZXJzID0gIkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24veC13d3ct
Zm9ybS11cmxlbmNvZGVkXG4iOwotICAgICAgICAgICAgICAgIGhlYWRlcnMgKz0gIlJlZmVyZXI6
ICI7Ci0gICAgICAgICAgICAgICAgaGVhZGVycyArPSBqb2ItPmQtPm1fcG9zdFJlZmVycmVyOwot
ICAgICAgICAgICAgICAgIGhlYWRlcnMgKz0gIlxuIjsKLSAgICAgICAgICAgICAgICBTdHJpbmcg
Zm9ybURhdGEgPSBqb2ItPnBvc3REYXRhKCkuZmxhdHRlblRvU3RyaW5nKCk7Ci0gICAgICAgICAg
ICAgICAgSU5URVJORVRfQlVGRkVSU0EgYnVmZmVyczsKLSAgICAgICAgICAgICAgICBtZW1zZXQo
JmJ1ZmZlcnMsIDAsIHNpemVvZihidWZmZXJzKSk7Ci0gICAgICAgICAgICAgICAgYnVmZmVycy5k
d1N0cnVjdFNpemUgPSBzaXplb2YoSU5URVJORVRfQlVGRkVSU0EpOwotICAgICAgICAgICAgICAg
IGJ1ZmZlcnMubHBjc3pIZWFkZXIgPSBoZWFkZXJzLmxhdGluMSgpOwotICAgICAgICAgICAgICAg
IGJ1ZmZlcnMuZHdIZWFkZXJzTGVuZ3RoID0gaGVhZGVycy5sZW5ndGgoKTsKLSAgICAgICAgICAg
ICAgICBidWZmZXJzLmR3QnVmZmVyVG90YWwgPSBmb3JtRGF0YS5sZW5ndGgoKTsKLSAgICAgICAg
ICAgICAgICAKLSAgICAgICAgICAgICAgICBqb2ItPmQtPm1fYnl0ZXNSZW1haW5pbmdUb1dyaXRl
ID0gZm9ybURhdGEubGVuZ3RoKCk7Ci0gICAgICAgICAgICAgICAgam9iLT5kLT5tX2Zvcm1EYXRh
U3RyaW5nID0gKGNoYXIqKW1hbGxvYyhmb3JtRGF0YS5sZW5ndGgoKSk7Ci0gICAgICAgICAgICAg
ICAgam9iLT5kLT5tX2Zvcm1EYXRhTGVuZ3RoID0gZm9ybURhdGEubGVuZ3RoKCk7Ci0gICAgICAg
ICAgICAgICAgc3RybmNweShqb2ItPmQtPm1fZm9ybURhdGFTdHJpbmcsIGZvcm1EYXRhLmxhdGlu
MSgpLCBmb3JtRGF0YS5sZW5ndGgoKSk7Ci0gICAgICAgICAgICAgICAgam9iLT5kLT5tX3dyaXRp
bmcgPSB0cnVlOwotICAgICAgICAgICAgICAgIEh0dHBTZW5kUmVxdWVzdEV4QShqb2ItPmQtPm1f
c2Vjb25kYXJ5SGFuZGxlLCAmYnVmZmVycywgMCwgMCwgKERXT1JEX1BUUilqb2ItPmQtPm1fam9i
SWQpOwotICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgaWYgKGludGVybmV0U3RhdHVzID09
IElOVEVSTkVUX1NUQVRVU19SRVFVRVNUX0NPTVBMRVRFKSB7Ci0gICAgICAgICAgICBpZiAoam9i
LT5kLT5tX3dyaXRpbmcpIHsKLSAgICAgICAgICAgICAgICBEV09SRCBieXRlc1dyaXR0ZW47Ci0g
ICAgICAgICAgICAgICAgSW50ZXJuZXRXcml0ZUZpbGUoam9iLT5kLT5tX3NlY29uZGFyeUhhbmRs
ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqb2ItPmQtPm1fZm9ybURhdGFT
dHJpbmcgKyAoam9iLT5kLT5tX2Zvcm1EYXRhTGVuZ3RoIC0gam9iLT5kLT5tX2J5dGVzUmVtYWlu
aW5nVG9Xcml0ZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgam9iLT5kLT5t
X2J5dGVzUmVtYWluaW5nVG9Xcml0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAmYnl0ZXNXcml0dGVuKTsKLSAgICAgICAgICAgICAgICBqb2ItPmQtPm1fYnl0ZXNSZW1haW5p
bmdUb1dyaXRlIC09IGJ5dGVzV3JpdHRlbjsKLSAgICAgICAgICAgICAgICBpZiAoIWpvYi0+ZC0+
bV9ieXRlc1JlbWFpbmluZ1RvV3JpdGUpIHsKLSAgICAgICAgICAgICAgICAgICAgLy8gRW5kIHRo
ZSByZXF1ZXN0LgotICAgICAgICAgICAgICAgICAgICBqb2ItPmQtPm1fd3JpdGluZyA9IGZhbHNl
OwotICAgICAgICAgICAgICAgICAgICBIdHRwRW5kUmVxdWVzdChqb2ItPmQtPm1fc2Vjb25kYXJ5
SGFuZGxlLCAwLCAwLCAoRFdPUkRfUFRSKWpvYi0+ZC0+bV9qb2JJZCk7Ci0gICAgICAgICAgICAg
ICAgICAgIGZyZWUoam9iLT5kLT5tX2Zvcm1EYXRhU3RyaW5nKTsKLSAgICAgICAgICAgICAgICAg
ICAgam9iLT5kLT5tX2Zvcm1EYXRhU3RyaW5nID0gMDsKLSAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIEhJTlRF
Uk5FVCBoYW5kbGUgPSAoam9iLT5tZXRob2QoKSA9PSAiUE9TVCIpID8gam9iLT5kLT5tX3NlY29u
ZGFyeUhhbmRsZSA6IGpvYi0+ZC0+bV9yZXNvdXJjZUhhbmRsZTsKLSAgICAgICAgICAgIEJPT0wg
b2sgPSBGQUxTRTsKLQotICAgICAgICAgICAgc3RhdGljIGNvbnN0IGludCBidWZmZXJTaXplID0g
MzI3Njg7Ci0gICAgICAgICAgICBjaGFyIGJ1ZmZlcltidWZmZXJTaXplXTsKLSAgICAgICAgICAg
IElOVEVSTkVUX0JVRkZFUlNBIGJ1ZmZlcnM7Ci0gICAgICAgICAgICBidWZmZXJzLmR3U3RydWN0
U2l6ZSA9IHNpemVvZihJTlRFUk5FVF9CVUZGRVJTQSk7Ci0gICAgICAgICAgICBidWZmZXJzLmxw
dkJ1ZmZlciA9IGJ1ZmZlcjsKLSAgICAgICAgICAgIGJ1ZmZlcnMuZHdCdWZmZXJMZW5ndGggPSBi
dWZmZXJTaXplOwotCi0gICAgICAgICAgICBib29sIHJlY2VpdmVkQW55RGF0YSA9IGZhbHNlOwot
ICAgICAgICAgICAgd2hpbGUgKChvayA9IEludGVybmV0UmVhZEZpbGVFeEEoaGFuZGxlLCAmYnVm
ZmVycywgSVJGX05PX1dBSVQsIChEV09SRF9QVFIpam9iKSkgJiYgYnVmZmVycy5kd0J1ZmZlckxl
bmd0aCkgewotICAgICAgICAgICAgICAgIGlmICghcmVjZWl2ZWRBbnlEYXRhKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIHJlY2VpdmVkQW55RGF0YSA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAg
IGpvYi0+Y2xpZW50KCktPnJlY2VpdmVkUmVzcG9uc2Uoam9iLCAwKTsKLSAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAgICAgam9iLT5jbGllbnQoKS0+cmVjZWl2ZWREYXRhKGpvYiwgYnVm
ZmVyLCBidWZmZXJzLmR3QnVmZmVyTGVuZ3RoKTsKLSAgICAgICAgICAgICAgICBidWZmZXJzLmR3
QnVmZmVyTGVuZ3RoID0gYnVmZmVyU2l6ZTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAg
UGxhdGZvcm1EYXRhU3RydWN0IHBsYXRmb3JtRGF0YTsKLSAgICAgICAgICAgIHBsYXRmb3JtRGF0
YS5lcnJvclN0cmluZyA9IDA7Ci0gICAgICAgICAgICBwbGF0Zm9ybURhdGEuZXJyb3IgPSAwOwot
ICAgICAgICAgICAgcGxhdGZvcm1EYXRhLmxvYWRlZCA9IG9rOwotCi0gICAgICAgICAgICBpZiAo
IW9rKSB7Ci0gICAgICAgICAgICAgICAgaW50IGVycm9yID0gR2V0TGFzdEVycm9yKCk7Ci0gICAg
ICAgICAgICAgICAgaWYgKGVycm9yID09IEVSUk9SX0lPX1BFTkRJTkcpCi0gICAgICAgICAgICAg
ICAgICAgIHJldHVybiAwOwotICAgICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAg
ICAgICBEV09SRCBlcnJvclN0cmluZ0NoYXJzID0gMDsKLSAgICAgICAgICAgICAgICAgICAgaWYg
KCFJbnRlcm5ldEdldExhc3RSZXNwb25zZUluZm8oJnBsYXRmb3JtRGF0YS5lcnJvciwgMCwgJmVy
cm9yU3RyaW5nQ2hhcnMpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoR2V0TGFzdEVy
cm9yKCkgPT0gRVJST1JfSU5TVUZGSUNJRU5UX0JVRkZFUikgewotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHBsYXRmb3JtRGF0YS5lcnJvclN0cmluZyA9IG5ldyBUQ0hBUltlcnJvclN0cmlu
Z0NoYXJzXTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnRlcm5ldEdldExhc3RSZXNw
b25zZUluZm8oJnBsYXRmb3JtRGF0YS5lcnJvciwgcGxhdGZvcm1EYXRhLmVycm9yU3RyaW5nLCAm
ZXJyb3JTdHJpbmdDaGFycyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgX1JQVEYxKF9DUlRfV0FSTiwgIkxvYWQg
ZXJyb3I6ICVpXG4iLCBlcnJvcik7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQot
ICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAoam9iLT5kLT5tX3NlY29uZGFyeUhhbmRsZSkK
LSAgICAgICAgICAgICAgICBJbnRlcm5ldENsb3NlSGFuZGxlKGpvYi0+ZC0+bV9zZWNvbmRhcnlI
YW5kbGUpOwotICAgICAgICAgICAgSW50ZXJuZXRDbG9zZUhhbmRsZShqb2ItPmQtPm1fcmVzb3Vy
Y2VIYW5kbGUpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBqb2ItPmNsaWVudCgpLT5yZWNl
aXZlZEFsbERhdGEoam9iLCAmcGxhdGZvcm1EYXRhKTsKLSAgICAgICAgICAgIGpvYi0+Y2xpZW50
KCktPnJlY2VpdmVkQWxsRGF0YShqb2IpOwotICAgICAgICAgICAgZGVsZXRlIGpvYjsKICAgICAg
ICAgfQotICAgIH0gZWxzZQotICAgICAgICByZXR1cm4gRGVmV2luZG93UHJvYyhoV25kLCBtZXNz
YWdlLCB3UGFyYW0sIGxQYXJhbSk7Ci0gICAgcmV0dXJuIDA7CisgICAgfQorICAgIHJldHVybiBE
ZWZXaW5kb3dQcm9jKGhXbmQsIG1lc3NhZ2UsIHdQYXJhbSwgbFBhcmFtKTsKIH0KIAogc3RhdGlj
IHZvaWQgaW5pdGlhbGl6ZU9mZlNjcmVlblJlc291cmNlTG9hZGVyV2luZG93KCkKQEAgLTIyOCw3
ICsxMTYsNiBAQAogCiAgICAgdHJhbnNmZXJKb2JXaW5kb3dIYW5kbGUgPSBDcmVhdGVXaW5kb3co
a1Jlc291cmNlTG9hZGVyV2luZG93Q2xhc3NOYW1lLCAwLCAwLCBDV19VU0VERUZBVUxULCAwLCBD
V19VU0VERUZBVUxULCAwLAogICAgICAgICBIV05EX01FU1NBR0UsIDAsIFdpZGdldDo6aW5zdGFu
Y2VIYW5kbGUsIDApOwotICAgIGxvYWRTdGF0dXNNZXNzYWdlID0gUmVnaXN0ZXJXaW5kb3dNZXNz
YWdlKEwiY29tLmFwcGxlLldlYktpdC5SZXNvdXJjZUxvYWRlckxvYWRTdGF0dXMiKTsKIH0KIAog
UmVzb3VyY2VMb2FkZXJJbnRlcm5hbDo6flJlc291cmNlTG9hZGVySW50ZXJuYWwoKQpAQCAtMjQz
LDE2ICsxMzAsMTc2IEBACiAgICAgICAgIHJlbW92ZUZyb21PdXRzdGFuZGluZ0pvYnMoZC0+bV9q
b2JJZCk7CiB9CiAKLXN0YXRpYyB2b2lkIF9fc3RkY2FsbCB0cmFuc2ZlckpvYlN0YXR1c0NhbGxi
YWNrKEhJTlRFUk5FVCBpbnRlcm5ldEhhbmRsZSwgRFdPUkRfUFRSIHRpbWVySWQsIERXT1JEIGlu
dGVybmV0U3RhdHVzLCBMUFZPSUQgc3RhdHVzSW5mb3JtYXRpb24sIERXT1JEIHN0YXR1c0luZm9y
bWF0aW9uTGVuZ3RoKQordm9pZCBSZXNvdXJjZUxvYWRlcjo6b25IYW5kbGVDcmVhdGVkKExQQVJB
TSBsUGFyYW0pCiB7CisgICAgaWYgKCFkLT5tX3Jlc291cmNlSGFuZGxlKSB7CisgICAgICAgIGQt
Pm1fcmVzb3VyY2VIYW5kbGUgPSBISU5URVJORVQobFBhcmFtKTsKKyAgICAgICAgaWYgKGQtPnN0
YXR1cyAhPSAwKSB7CisgICAgICAgICAgICAvLyBXZSB3ZXJlIGNhbmNlbGVkIGJlZm9yZSBXaW5k
b3dzIGFjdHVhbGx5IGNyZWF0ZWQgYSBoYW5kbGUgZm9yIHVzLCBjbG9zZSBhbmQgZGVsZXRlIG5v
dy4KKyAgICAgICAgICAgIEludGVybmV0Q2xvc2VIYW5kbGUoZC0+bV9yZXNvdXJjZUhhbmRsZSk7
CisgICAgICAgICAgICBkZWxldGUgdGhpczsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQorCisgICAgICAgIGlmIChtZXRob2QoKSA9PSAiUE9TVCIpIHsKKyAgICAgICAgICAgIC8vIEZJ
WE1FOiBUb28gbGF0ZSB0byBzZXQgcmVmZXJyZXIgcHJvcGVybHkuCisgICAgICAgICAgICBEZXBy
ZWNhdGVkU3RyaW5nIHVybFN0ciA9IGQtPlVSTC5wYXRoKCk7CisgICAgICAgICAgICBpbnQgZnJh
Z21lbnRJbmRleCA9IHVybFN0ci5maW5kKCcjJyk7CisgICAgICAgICAgICBpZiAoZnJhZ21lbnRJ
bmRleCAhPSAtMSkKKyAgICAgICAgICAgICAgICB1cmxTdHIgPSB1cmxTdHIubGVmdChmcmFnbWVu
dEluZGV4KTsKKyAgICAgICAgICAgIHN0YXRpYyBMUENTVFIgYWNjZXB0WzJdPXsiKi8qIiwgTlVM
TH07CisgICAgICAgICAgICBISU5URVJORVQgdXJsSGFuZGxlID0gSHR0cE9wZW5SZXF1ZXN0QShk
LT5tX3Jlc291cmNlSGFuZGxlLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJQT1NUIiwgdXJsU3RyLmxhdGluMSgpLCAwLCAwLCBhY2NlcHQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJTlRFUk5F
VF9GTEFHX0tFRVBfQ09OTkVDVElPTiB8IAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgSU5URVJORVRfRkxBR19GT1JNU19TVUJNSVQgfAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSU5URVJORVRfRkxB
R19SRUxPQUQgfCBJTlRFUk5FVF9GTEFHX05PX0NBQ0hFX1dSSVRFLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKERXT1JEX1BUUilkLT5tX2pvYklk
KTsKKyAgICAgICAgICAgIGlmICh1cmxIYW5kbGUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpIHsK
KyAgICAgICAgICAgICAgICBJbnRlcm5ldENsb3NlSGFuZGxlKGQtPm1fcmVzb3VyY2VIYW5kbGUp
OworICAgICAgICAgICAgICAgIGRlbGV0ZSB0aGlzOworICAgICAgICAgICAgfQorICAgICAgICB9
CisgICAgfSBlbHNlIGlmICghZC0+bV9zZWNvbmRhcnlIYW5kbGUpIHsKKyAgICAgICAgYXNzZXJ0
KG1ldGhvZCgpID09ICJQT1NUIik7CisgICAgICAgIGQtPm1fc2Vjb25kYXJ5SGFuZGxlID0gSElO
VEVSTkVUKGxQYXJhbSk7CisgICAgICAgIAorICAgICAgICAvLyBOZWVkIHRvIGFjdHVhbGx5IHNl
bmQgdGhlIHJlcXVlc3Qgbm93LgorICAgICAgICBTdHJpbmcgaGVhZGVycyA9ICJDb250ZW50LVR5
cGU6IGFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZFxuIjsKKyAgICAgICAgaGVhZGVy
cyArPSAiUmVmZXJlcjogIjsKKyAgICAgICAgaGVhZGVycyArPSBkLT5tX3Bvc3RSZWZlcnJlcjsK
KyAgICAgICAgaGVhZGVycyArPSAiXG4iOworICAgICAgICBTdHJpbmcgZm9ybURhdGEgPSBwb3N0
RGF0YSgpLmZsYXR0ZW5Ub1N0cmluZygpOworICAgICAgICBJTlRFUk5FVF9CVUZGRVJTQSBidWZm
ZXJzOworICAgICAgICBtZW1zZXQoJmJ1ZmZlcnMsIDAsIHNpemVvZihidWZmZXJzKSk7CisgICAg
ICAgIGJ1ZmZlcnMuZHdTdHJ1Y3RTaXplID0gc2l6ZW9mKElOVEVSTkVUX0JVRkZFUlNBKTsKKyAg
ICAgICAgYnVmZmVycy5scGNzekhlYWRlciA9IGhlYWRlcnMubGF0aW4xKCk7CisgICAgICAgIGJ1
ZmZlcnMuZHdIZWFkZXJzTGVuZ3RoID0gaGVhZGVycy5sZW5ndGgoKTsKKyAgICAgICAgYnVmZmVy
cy5kd0J1ZmZlclRvdGFsID0gZm9ybURhdGEubGVuZ3RoKCk7CisgICAgICAgIAorICAgICAgICBk
LT5tX2J5dGVzUmVtYWluaW5nVG9Xcml0ZSA9IGZvcm1EYXRhLmxlbmd0aCgpOworICAgICAgICBk
LT5tX2Zvcm1EYXRhU3RyaW5nID0gKGNoYXIqKW1hbGxvYyhmb3JtRGF0YS5sZW5ndGgoKSk7Cisg
ICAgICAgIGQtPm1fZm9ybURhdGFMZW5ndGggPSBmb3JtRGF0YS5sZW5ndGgoKTsKKyAgICAgICAg
c3RybmNweShkLT5tX2Zvcm1EYXRhU3RyaW5nLCBmb3JtRGF0YS5sYXRpbjEoKSwgZm9ybURhdGEu
bGVuZ3RoKCkpOworICAgICAgICBkLT5tX3dyaXRpbmcgPSB0cnVlOworICAgICAgICBIdHRwU2Vu
ZFJlcXVlc3RFeEEoZC0+bV9zZWNvbmRhcnlIYW5kbGUsICZidWZmZXJzLCAwLCAwLCAoRFdPUkRf
UFRSKWQtPm1fam9iSWQpOworICAgIH0KK30KKwordm9pZCBSZXNvdXJjZUxvYWRlcjo6b25SZXF1
ZXN0UmVkaXJlY3RlZChMUEFSQU0gbFBhcmFtKQoreworICAgIC8vIElmIGFscmVhZHkgY2FuY2Vs
ZWQsIHRoZW4gaWdub3JlIHRoaXMgZXZlbnQuCisgICAgaWYgKGQtPnN0YXR1cyAhPSAwKQorICAg
ICAgICByZXR1cm47CisKKyAgICBLVVJMIHVybChTdHJpbmcoKFN0cmluZ0ltcGwqKSBsUGFyYW0p
LmRlcHJlY2F0ZWRTdHJpbmcoKSk7CisgICAgY2xpZW50KCktPnJlY2VpdmVkUmVkaXJlY3QodGhp
cywgdXJsKTsKK30KKwordm9pZCBSZXNvdXJjZUxvYWRlcjo6b25SZXF1ZXN0Q29tcGxldGUoTFBB
UkFNIGxQYXJhbSkKK3sKKyAgICBpZiAoZC0+bV93cml0aW5nKSB7CisgICAgICAgIERXT1JEIGJ5
dGVzV3JpdHRlbjsKKyAgICAgICAgSW50ZXJuZXRXcml0ZUZpbGUoZC0+bV9zZWNvbmRhcnlIYW5k
bGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGQtPm1fZm9ybURhdGFTdHJpbmcgKyAoZC0+
bV9mb3JtRGF0YUxlbmd0aCAtIGQtPm1fYnl0ZXNSZW1haW5pbmdUb1dyaXRlKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgZC0+bV9ieXRlc1JlbWFpbmluZ1RvV3JpdGUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICZieXRlc1dyaXR0ZW4pOworICAgICAgICBkLT5tX2J5dGVzUmVtYWlu
aW5nVG9Xcml0ZSAtPSBieXRlc1dyaXR0ZW47CisgICAgICAgIGlmICghZC0+bV9ieXRlc1JlbWFp
bmluZ1RvV3JpdGUpIHsKKyAgICAgICAgICAgIC8vIEVuZCB0aGUgcmVxdWVzdC4KKyAgICAgICAg
ICAgIGQtPm1fd3JpdGluZyA9IGZhbHNlOworICAgICAgICAgICAgSHR0cEVuZFJlcXVlc3QoZC0+
bV9zZWNvbmRhcnlIYW5kbGUsIDAsIDAsIChEV09SRF9QVFIpZC0+bV9qb2JJZCk7CisgICAgICAg
ICAgICBmcmVlKGQtPm1fZm9ybURhdGFTdHJpbmcpOworICAgICAgICAgICAgZC0+bV9mb3JtRGF0
YVN0cmluZyA9IDA7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEhJ
TlRFUk5FVCBoYW5kbGUgPSAobWV0aG9kKCkgPT0gIlBPU1QiKSA/IGQtPm1fc2Vjb25kYXJ5SGFu
ZGxlIDogZC0+bV9yZXNvdXJjZUhhbmRsZTsKKyAgICBCT09MIG9rID0gRkFMU0U7CisKKyAgICBz
dGF0aWMgY29uc3QgaW50IGJ1ZmZlclNpemUgPSAzMjc2ODsKKyAgICBjaGFyIGJ1ZmZlcltidWZm
ZXJTaXplXTsKKyAgICBJTlRFUk5FVF9CVUZGRVJTQSBidWZmZXJzOworICAgIGJ1ZmZlcnMuZHdT
dHJ1Y3RTaXplID0gc2l6ZW9mKElOVEVSTkVUX0JVRkZFUlNBKTsKKyAgICBidWZmZXJzLmxwdkJ1
ZmZlciA9IGJ1ZmZlcjsKKyAgICBidWZmZXJzLmR3QnVmZmVyTGVuZ3RoID0gYnVmZmVyU2l6ZTsK
KworICAgIGJvb2wgcmVjZWl2ZWRBbnlEYXRhID0gZmFsc2U7CisgICAgd2hpbGUgKChvayA9IElu
dGVybmV0UmVhZEZpbGVFeEEoaGFuZGxlLCAmYnVmZmVycywgSVJGX05PX1dBSVQsIChEV09SRF9Q
VFIpdGhpcykpICYmIGJ1ZmZlcnMuZHdCdWZmZXJMZW5ndGgpIHsKKyAgICAgICAgaWYgKCFyZWNl
aXZlZEFueURhdGEpIHsKKyAgICAgICAgICAgIHJlY2VpdmVkQW55RGF0YSA9IHRydWU7CisgICAg
ICAgICAgICBjbGllbnQoKS0+cmVjZWl2ZWRSZXNwb25zZSh0aGlzLCAwKTsKKyAgICAgICAgfQor
ICAgICAgICBjbGllbnQoKS0+cmVjZWl2ZWREYXRhKHRoaXMsIGJ1ZmZlciwgYnVmZmVycy5kd0J1
ZmZlckxlbmd0aCk7CisgICAgICAgIGJ1ZmZlcnMuZHdCdWZmZXJMZW5ndGggPSBidWZmZXJTaXpl
OworICAgIH0KKworICAgIFBsYXRmb3JtRGF0YVN0cnVjdCBwbGF0Zm9ybURhdGE7CisgICAgcGxh
dGZvcm1EYXRhLmVycm9yU3RyaW5nID0gMDsKKyAgICBwbGF0Zm9ybURhdGEuZXJyb3IgPSAwOwor
ICAgIHBsYXRmb3JtRGF0YS5sb2FkZWQgPSBvazsKKworICAgIGlmICghb2spIHsKKyAgICAgICAg
aW50IGVycm9yID0gR2V0TGFzdEVycm9yKCk7CisgICAgICAgIGlmIChlcnJvciA9PSBFUlJPUl9J
T19QRU5ESU5HKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBEV09SRCBlcnJvclN0cmlu
Z0NoYXJzID0gMDsKKyAgICAgICAgaWYgKCFJbnRlcm5ldEdldExhc3RSZXNwb25zZUluZm8oJnBs
YXRmb3JtRGF0YS5lcnJvciwgMCwgJmVycm9yU3RyaW5nQ2hhcnMpKSB7CisgICAgICAgICAgICBp
ZiAoR2V0TGFzdEVycm9yKCkgPT0gRVJST1JfSU5TVUZGSUNJRU5UX0JVRkZFUikgeworICAgICAg
ICAgICAgICAgIHBsYXRmb3JtRGF0YS5lcnJvclN0cmluZyA9IG5ldyBUQ0hBUltlcnJvclN0cmlu
Z0NoYXJzXTsKKyAgICAgICAgICAgICAgICBJbnRlcm5ldEdldExhc3RSZXNwb25zZUluZm8oJnBs
YXRmb3JtRGF0YS5lcnJvciwgcGxhdGZvcm1EYXRhLmVycm9yU3RyaW5nLCAmZXJyb3JTdHJpbmdD
aGFycyk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgX1JQVEYxKF9DUlRfV0FS
TiwgIkxvYWQgZXJyb3I6ICVpXG4iLCBlcnJvcik7CisgICAgfQorICAgIAorICAgIGlmIChkLT5t
X3NlY29uZGFyeUhhbmRsZSkKKyAgICAgICAgSW50ZXJuZXRDbG9zZUhhbmRsZShkLT5tX3NlY29u
ZGFyeUhhbmRsZSk7CisgICAgSW50ZXJuZXRDbG9zZUhhbmRsZShkLT5tX3Jlc291cmNlSGFuZGxl
KTsKKyAgICAKKyAgICBjbGllbnQoKS0+cmVjZWl2ZWRBbGxEYXRhKHRoaXMsICZwbGF0Zm9ybURh
dGEpOworICAgIGNsaWVudCgpLT5yZWNlaXZlZEFsbERhdGEodGhpcyk7CisgICAgZGVsZXRlIHRo
aXM7Cit9CisKK3N0YXRpYyB2b2lkIF9fc3RkY2FsbCB0cmFuc2ZlckpvYlN0YXR1c0NhbGxiYWNr
KEhJTlRFUk5FVCBpbnRlcm5ldEhhbmRsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIERXT1JEX1BUUiBqb2JJZCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIERXT1JEIGludGVybmV0U3RhdHVzLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTFBWT0lEIHN0YXR1c0lu
Zm9ybWF0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRFdPUkQgc3RhdHVzSW5mb3JtYXRpb25MZW5ndGgpCit7CisgICAgVUlOVCBtc2c7CisgICAg
TFBBUkFNIGxQYXJhbTsKKwogICAgIHN3aXRjaCAoaW50ZXJuZXRTdGF0dXMpIHsKICAgICBjYXNl
IElOVEVSTkVUX1NUQVRVU19IQU5ETEVfQ1JFQVRFRDoKKyAgICAgICAgLy8gdGVsbCB0aGUgbWFp
biB0aHJlYWQgYWJvdXQgdGhlIG5ld2x5IGNyZWF0ZWQgaGFuZGxlCisgICAgICAgIG1zZyA9IGtI
YW5kbGVDcmVhdGVkTWVzc2FnZTsKKyAgICAgICAgbFBhcmFtID0gKExQQVJBTSkgTFBJTlRFUk5F
VF9BU1lOQ19SRVNVTFQoc3RhdHVzSW5mb3JtYXRpb24pLT5kd1Jlc3VsdDsKKyAgICAgICAgYnJl
YWs7CiAgICAgY2FzZSBJTlRFUk5FVF9TVEFUVVNfUkVRVUVTVF9DT01QTEVURToKLSAgICAgICAg
Sm9iTG9hZFN0YXR1cyogam9iTG9hZFN0YXR1cyA9IG5ldyBKb2JMb2FkU3RhdHVzOwotICAgICAg
ICBqb2JMb2FkU3RhdHVzLT5pbnRlcm5ldFN0YXR1cyA9IGludGVybmV0U3RhdHVzOwotICAgICAg
ICBqb2JMb2FkU3RhdHVzLT5kd1Jlc3VsdCA9IExQSU5URVJORVRfQVNZTkNfUkVTVUxUKHN0YXR1
c0luZm9ybWF0aW9uKS0+ZHdSZXN1bHQ7Ci0gICAgICAgIFBvc3RNZXNzYWdlKHRyYW5zZmVySm9i
V2luZG93SGFuZGxlLCBsb2FkU3RhdHVzTWVzc2FnZSwgKFdQQVJBTSl0aW1lcklkLCAoTFBBUkFN
KWpvYkxvYWRTdGF0dXMpOworICAgICAgICAvLyB0ZWxsIHRoZSBtYWluIHRocmVhZCB0aGF0IHRo
ZSByZXF1ZXN0IGlzIGRvbmUKKyAgICAgICAgbXNnID0ga1JlcXVlc3RDb21wbGV0ZU1lc3NhZ2U7
CisgICAgICAgIGxQYXJhbSA9IDA7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSU5URVJORVRf
U1RBVFVTX1JFRElSRUNUOgorICAgICAgICAvLyB0ZWxsIHRoZSBtYWluIHRocmVhZCB0byBvYnNl
cnZlIHRoaXMgcmVkaXJlY3QgKEZJWE1FOiB3ZSBwcm9iYWJseQorICAgICAgICAvLyBuZWVkIHRv
IGJsb2NrIHRoZSByZWRpcmVjdCBhdCB0aGlzIHBvaW50IHNvIHRoZSBhcHBsaWNhdGlvbiBjYW4K
KyAgICAgICAgLy8gZGVjaWRlIHdoZXRoZXIgb3Igbm90IHRvIGZvbGxvdyB0aGUgcmVkaXJlY3Qp
CisgICAgICAgIG1zZyA9IGtSZXF1ZXN0UmVkaXJlY3RlZE1lc3NhZ2U7CisgICAgICAgIGxQYXJh
bSA9IChMUEFSQU0pIG5ldyBTdHJpbmdJbXBsKChjb25zdCBVQ2hhciopIHN0YXR1c0luZm9ybWF0
aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXNJbmZv
cm1hdGlvbkxlbmd0aCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSU5URVJORVRfU1RBVFVT
X1VTRVJfSU5QVVRfUkVRVUlSRUQ6CisgICAgICAgIC8vIEZJWE1FOiBwcm9tcHQgdGhlIHVzZXIg
aWYgbmVjZXNzYXJ5CisgICAgICAgIFJlc3VtZVN1c3BlbmRlZERvd25sb2FkKGludGVybmV0SGFu
ZGxlLCAwKTsKKyAgICBjYXNlIElOVEVSTkVUX1NUQVRVU19TVEFURV9DSEFOR0U6CisgICAgICAg
IC8vIG1heSBuZWVkIHRvIGNhbGwgUmVzdW1lU3VzcGVuZGVkRG93bmxvYWQgaGVyZSBhcyB3ZWxs
CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuOwogICAgIH0KKworICAgIFBvc3RNZXNzYWdl
KHRyYW5zZmVySm9iV2luZG93SGFuZGxlLCBtc2csIChXUEFSQU0pIGpvYklkLCBsUGFyYW0pOwog
fQogCiBib29sIFJlc291cmNlTG9hZGVyOjpzdGFydChEb2NMb2FkZXIqIGRvY0xvYWRlcikKQEAg
LTMyNSw2ICszNzIsOCBAQAogCiB2b2lkIFJlc291cmNlTG9hZGVyOjpmaWxlTG9hZFRpbWVyKFRp
bWVyPFJlc291cmNlTG9hZGVyPiogdGltZXIpCiB7CisgICAgZC0+Y2xpZW50LT5yZWNlaXZlZFJl
c3BvbnNlKHRoaXMsIDApOworCiAgICAgYm9vbCByZXN1bHQgPSBmYWxzZTsKICAgICBEV09SRCBi
eXRlc1JlYWQgPSAwOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>10697</attachid>
            <date>2006-09-21 16:57:22 -0700</date>
            <delta_ts>2006-09-21 17:44:02 -0700</delta_ts>
            <desc>revised patch per feedback from maciej</desc>
            <filename>fix-2.diff</filename>
            <type>text/plain</type>
            <size>18353</size>
            <attacher name="Darin Fisher (:fishd, Google)">fishd</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDE2NTEz
KQorKysgQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjAgQEAKKzIwMDYtMDkt
MjEgIE1vcmdhbkwgIDxtb3JnYW5sLndlYmtpdEB5YWhvby5jb20+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRml4ZXMgYnVnIGh0dHA6Ly9idWd6aWxs
YS5vcGVuZGFyd2luLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA5MjcKKyAgICAgICAgRml4ZXMgYnVn
IGh0dHA6Ly9idWd6aWxsYS5vcGVuZGFyd2luLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA3NDQKKwor
ICAgICAgICAqIHBsYXRmb3JtL1Jlc291cmNlTG9hZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0v
d2luL1Jlc291cmNlTG9hZGVyV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oik6CisgICAgICAg
IChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlclduZFByb2MpOgorICAgICAgICAoV2ViQ29yZTo6aW5p
dGlhbGl6ZU9mZlNjcmVlblJlc291cmNlTG9hZGVyV2luZG93KToKKyAgICAgICAgKFdlYkNvcmU6
OlJlc291cmNlTG9hZGVyOjpvbkhhbmRsZUNyZWF0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVz
b3VyY2VMb2FkZXI6Om9uUmVxdWVzdFJlZGlyZWN0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVz
b3VyY2VMb2FkZXI6Om9uUmVxdWVzdENvbXBsZXRlKToKKyAgICAgICAgKFdlYkNvcmU6OnRyYW5z
ZmVySm9iU3RhdHVzQ2FsbGJhY2spOgorCiAyMDA2LTA5LTIxICBTZWFuIEdpZXMgIDxzZWFuZ2ll
c0BhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBSb2Jlbi4KSW5kZXg6IHBs
YXRmb3JtL1Jlc291cmNlTG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcGxhdGZvcm0vUmVzb3VyY2VM
b2FkZXIuaAkocmV2aXNpb24gMTY1MTMpCisrKyBwbGF0Zm9ybS9SZXNvdXJjZUxvYWRlci5oCSh3
b3JraW5nIGNvcHkpCkBAIC04Niw2ICs4Niw5IEBAIHB1YmxpYzoKIAogI2lmIFVTRShXSU5JTkVU
KQogICAgIHZvaWQgZmlsZUxvYWRUaW1lcihUaW1lcjxSZXNvdXJjZUxvYWRlcj4qIHRpbWVyKTsK
KyAgICB2b2lkIG9uSGFuZGxlQ3JlYXRlZChMUEFSQU0pOworICAgIHZvaWQgb25SZXF1ZXN0UmVk
aXJlY3RlZChMUEFSQU0pOworICAgIHZvaWQgb25SZXF1ZXN0Q29tcGxldGUoTFBBUkFNKTsKICAg
ICBmcmllbmQgdm9pZCBfX3N0ZGNhbGwgdHJhbnNmZXJKb2JTdGF0dXNDYWxsYmFjayhISU5URVJO
RVQsIERXT1JEX1BUUiwgRFdPUkQsIExQVk9JRCwgRFdPUkQpOwogICAgIGZyaWVuZCBMUkVTVUxU
IF9fc3RkY2FsbCBSZXNvdXJjZUxvYWRlclduZFByb2MoSFdORCwgdW5zaWduZWQgbWVzc2FnZSwg
V1BBUkFNLCBMUEFSQU0pOwogI2VuZGlmCkluZGV4OiBwbGF0Zm9ybS93aW4vUmVzb3VyY2VMb2Fk
ZXJXaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIHBsYXRmb3JtL3dpbi9SZXNvdXJjZUxvYWRlcldpbi5j
cHAJKHJldmlzaW9uIDE2NTEzKQorKysgcGxhdGZvcm0vd2luL1Jlc291cmNlTG9hZGVyV2luLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDEsOSArNDEsMjIgQEAgc3RhdGljIHVuc2lnbmVkIHRyYW5z
ZmVySm9iSWQgPSAwOwogc3RhdGljIEhhc2hNYXA8aW50LCBSZXNvdXJjZUxvYWRlcio+KiBqb2JJ
ZE1hcCA9IDA7CiAKIHN0YXRpYyBIV05EIHRyYW5zZmVySm9iV2luZG93SGFuZGxlID0gMDsKLXN0
YXRpYyBVSU5UIGxvYWRTdGF0dXNNZXNzYWdlID0gMDsKIGNvbnN0IExQQ1dTVFIga1Jlc291cmNl
TG9hZGVyV2luZG93Q2xhc3NOYW1lID0gTCJSZXNvdXJjZUxvYWRlcldpbmRvd0NsYXNzIjsKIAor
Ly8gTWVzc2FnZSB0eXBlcyBmb3IgaW50ZXJuYWwgdXNlIChrZWVwIGluIHN5bmMgd2l0aCBtZXNz
YWdlSGFuZGxlcnMpCitlbnVtIHsKKyAgaGFuZGxlQ3JlYXRlZE1lc3NhZ2UgPSBXTV9VU0VSLAor
ICByZXF1ZXN0UmVkaXJlY3RlZE1lc3NhZ2UsCisgIHJlcXVlc3RDb21wbGV0ZU1lc3NhZ2UKK307
CisKK3R5cGVkZWYgdm9pZCAoUmVzb3VyY2VMb2FkZXI6OiAqUmVzb3VyY2VMb2FkZXJFdmVudEhh
bmRsZXIpKExQQVJBTSk7CitzdGF0aWMgY29uc3QgUmVzb3VyY2VMb2FkZXJFdmVudEhhbmRsZXIg
bWVzc2FnZUhhbmRsZXJzW10gPSB7CisgICAgJlJlc291cmNlTG9hZGVyOjpvbkhhbmRsZUNyZWF0
ZWQsCisgICAgJlJlc291cmNlTG9hZGVyOjpvblJlcXVlc3RSZWRpcmVjdGVkLAorICAgICZSZXNv
dXJjZUxvYWRlcjo6b25SZXF1ZXN0Q29tcGxldGUKK307CisKIHN0YXRpYyBpbnQgYWRkVG9PdXRz
dGFuZGluZ0pvYnMoUmVzb3VyY2VMb2FkZXIqIGpvYikKIHsKICAgICBpZiAoIWpvYklkTWFwKQpA
QCAtNjcsMTUwICs4MCwyMyBAQCBzdGF0aWMgUmVzb3VyY2VMb2FkZXIqIGxvb2t1cFJlc291cmNl
TG9hCiAgICAgcmV0dXJuIGpvYklkTWFwLT5nZXQoam9iSWQpOwogfQogCi1zdHJ1Y3QgSm9iTG9h
ZFN0YXR1cyB7Ci0gICAgRFdPUkQgaW50ZXJuZXRTdGF0dXM7Ci0gICAgRFdPUkRfUFRSIGR3UmVz
dWx0OwotfTsKLQotTFJFU1VMVCBDQUxMQkFDSyBSZXNvdXJjZUxvYWRlclduZFByb2MoSFdORCBo
V25kLCBVSU5UIG1lc3NhZ2UsIFdQQVJBTSB3UGFyYW0sIExQQVJBTSBsUGFyYW0pCitzdGF0aWMg
TFJFU1VMVCBDQUxMQkFDSyBSZXNvdXJjZUxvYWRlclduZFByb2MoSFdORCBoV25kLCBVSU5UIG1l
c3NhZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV1BB
UkFNIHdQYXJhbSwgTFBBUkFNIGxQYXJhbSkKIHsKLSAgICBpZiAobWVzc2FnZSA9PSBsb2FkU3Rh
dHVzTWVzc2FnZSkgewotICAgICAgICBKb2JMb2FkU3RhdHVzKiBqb2JMb2FkU3RhdHVzID0gKEpv
YkxvYWRTdGF0dXMqKWxQYXJhbTsKLSAgICAgICAgRFdPUkQgaW50ZXJuZXRTdGF0dXMgPSBqb2JM
b2FkU3RhdHVzLT5pbnRlcm5ldFN0YXR1czsKLSAgICAgICAgRFdPUkRfUFRSIGR3UmVzdWx0ID0g
am9iTG9hZFN0YXR1cy0+ZHdSZXN1bHQ7Ci0gICAgICAgIGRlbGV0ZSBqb2JMb2FkU3RhdHVzOwot
ICAgICAgICBqb2JMb2FkU3RhdHVzID0gMDsKLQotICAgICAgICAvLyBJZiB3ZSBnZXQgYSBtZXNz
YWdlIGFib3V0IGEgam9iIHdlIG5vIGxvbmdlciBrbm93IGFib3V0IChhbHJlYWR5IGRlbGV0ZWQp
LCBpZ25vcmUgaXQuCi0gICAgICAgIHVuc2lnbmVkIGpvYklkID0gKHVuc2lnbmVkKXdQYXJhbTsK
LSAgICAgICAgUmVzb3VyY2VMb2FkZXIqIGpvYiA9IGxvb2t1cFJlc291cmNlTG9hZGVyKGpvYklk
KTsKLSAgICAgICAgaWYgKCFqb2IpCi0gICAgICAgICAgICByZXR1cm4gMDsKLQotICAgICAgICBB
U1NFUlQoam9iLT5kLT5tX2pvYklkID09IGpvYklkKTsKLSAgICAgICAgQVNTRVJUKGpvYi0+ZC0+
bV90aHJlYWRJZCA9PSBHZXRDdXJyZW50VGhyZWFkSWQoKSk7Ci0KLSAgICAgICAgaWYgKGludGVy
bmV0U3RhdHVzID09IElOVEVSTkVUX1NUQVRVU19IQU5ETEVfQ1JFQVRFRCkgewotICAgICAgICAg
ICAgaWYgKCFqb2ItPmQtPm1fcmVzb3VyY2VIYW5kbGUpIHsKLSAgICAgICAgICAgICAgICBqb2It
PmQtPm1fcmVzb3VyY2VIYW5kbGUgPSBISU5URVJORVQoZHdSZXN1bHQpOwotICAgICAgICAgICAg
ICAgIGlmIChqb2ItPmQtPnN0YXR1cyAhPSAwKSB7Ci0gICAgICAgICAgICAgICAgICAgIC8vIFdl
IHdlcmUgY2FuY2VsZWQgYmVmb3JlIFdpbmRvd3MgYWN0dWFsbHkgY3JlYXRlZCBhIGhhbmRsZSBm
b3IgdXMsIGNsb3NlIGFuZCBkZWxldGUgbm93LgotICAgICAgICAgICAgICAgICAgICBJbnRlcm5l
dENsb3NlSGFuZGxlKGpvYi0+ZC0+bV9yZXNvdXJjZUhhbmRsZSk7Ci0gICAgICAgICAgICAgICAg
ICAgIGRlbGV0ZSBqb2I7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgaWYg
KGpvYi0+bWV0aG9kKCkgPT0gIlBPU1QiKSB7Ci0gICAgICAgICAgICAgICAgICAgIC8vIEZJWE1F
OiBUb28gbGF0ZSB0byBzZXQgcmVmZXJyZXIgcHJvcGVybHkuCi0gICAgICAgICAgICAgICAgICAg
IERlcHJlY2F0ZWRTdHJpbmcgdXJsU3RyID0gam9iLT5kLT5VUkwucGF0aCgpOwotICAgICAgICAg
ICAgICAgICAgICBpbnQgZnJhZ21lbnRJbmRleCA9IHVybFN0ci5maW5kKCcjJyk7Ci0gICAgICAg
ICAgICAgICAgICAgIGlmIChmcmFnbWVudEluZGV4ICE9IC0xKQotICAgICAgICAgICAgICAgICAg
ICAgICAgdXJsU3RyID0gdXJsU3RyLmxlZnQoZnJhZ21lbnRJbmRleCk7Ci0gICAgICAgICAgICAg
ICAgICAgIHN0YXRpYyBMUENTVFIgYWNjZXB0WzJdPXsiKi8qIiwgTlVMTH07Ci0gICAgICAgICAg
ICAgICAgICAgIEhJTlRFUk5FVCB1cmxIYW5kbGUgPSBIdHRwT3BlblJlcXVlc3RBKGpvYi0+ZC0+
bV9yZXNvdXJjZUhhbmRsZSwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJQT1NUIiwgdXJsU3RyLmxhdGluMSgpLCAwLCAwLCBhY2Nl
cHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIElOVEVSTkVUX0ZMQUdfS0VFUF9DT05ORUNUSU9OIHwgCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElOVEVSTkVUX0ZMQUdf
Rk9STVNfU1VCTUlUIHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgSU5URVJORVRfRkxBR19SRUxPQUQgfCBJTlRFUk5FVF9GTEFHX05P
X0NBQ0hFX1dSSVRFLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAoRFdPUkRfUFRSKWpvYi0+ZC0+bV9qb2JJZCk7Ci0gICAgICAgICAg
ICAgICAgICAgIGlmICh1cmxIYW5kbGUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpIHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIEludGVybmV0Q2xvc2VIYW5kbGUoam9iLT5kLT5tX3Jlc291cmNl
SGFuZGxlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBqb2I7Ci0gICAgICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKCFq
b2ItPmQtPm1fc2Vjb25kYXJ5SGFuZGxlKSB7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0KGpvYi0+
bWV0aG9kKCkgPT0gIlBPU1QiKTsKLSAgICAgICAgICAgICAgICBqb2ItPmQtPm1fc2Vjb25kYXJ5
SGFuZGxlID0gSElOVEVSTkVUKGR3UmVzdWx0KTsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAg
ICAgICAgICAvLyBOZWVkIHRvIGFjdHVhbGx5IHNlbmQgdGhlIHJlcXVlc3Qgbm93LgotICAgICAg
ICAgICAgICAgIFN0cmluZyBoZWFkZXJzID0gIkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24veC13
d3ctZm9ybS11cmxlbmNvZGVkXG4iOwotICAgICAgICAgICAgICAgIGhlYWRlcnMgKz0gIlJlZmVy
ZXI6ICI7Ci0gICAgICAgICAgICAgICAgaGVhZGVycyArPSBqb2ItPmQtPm1fcG9zdFJlZmVycmVy
OwotICAgICAgICAgICAgICAgIGhlYWRlcnMgKz0gIlxuIjsKLSAgICAgICAgICAgICAgICBTdHJp
bmcgZm9ybURhdGEgPSBqb2ItPnBvc3REYXRhKCkuZmxhdHRlblRvU3RyaW5nKCk7Ci0gICAgICAg
ICAgICAgICAgSU5URVJORVRfQlVGRkVSU0EgYnVmZmVyczsKLSAgICAgICAgICAgICAgICBtZW1z
ZXQoJmJ1ZmZlcnMsIDAsIHNpemVvZihidWZmZXJzKSk7Ci0gICAgICAgICAgICAgICAgYnVmZmVy
cy5kd1N0cnVjdFNpemUgPSBzaXplb2YoSU5URVJORVRfQlVGRkVSU0EpOwotICAgICAgICAgICAg
ICAgIGJ1ZmZlcnMubHBjc3pIZWFkZXIgPSBoZWFkZXJzLmxhdGluMSgpOwotICAgICAgICAgICAg
ICAgIGJ1ZmZlcnMuZHdIZWFkZXJzTGVuZ3RoID0gaGVhZGVycy5sZW5ndGgoKTsKLSAgICAgICAg
ICAgICAgICBidWZmZXJzLmR3QnVmZmVyVG90YWwgPSBmb3JtRGF0YS5sZW5ndGgoKTsKLSAgICAg
ICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBqb2ItPmQtPm1fYnl0ZXNSZW1haW5pbmdUb1dy
aXRlID0gZm9ybURhdGEubGVuZ3RoKCk7Ci0gICAgICAgICAgICAgICAgam9iLT5kLT5tX2Zvcm1E
YXRhU3RyaW5nID0gKGNoYXIqKW1hbGxvYyhmb3JtRGF0YS5sZW5ndGgoKSk7Ci0gICAgICAgICAg
ICAgICAgam9iLT5kLT5tX2Zvcm1EYXRhTGVuZ3RoID0gZm9ybURhdGEubGVuZ3RoKCk7Ci0gICAg
ICAgICAgICAgICAgc3RybmNweShqb2ItPmQtPm1fZm9ybURhdGFTdHJpbmcsIGZvcm1EYXRhLmxh
dGluMSgpLCBmb3JtRGF0YS5sZW5ndGgoKSk7Ci0gICAgICAgICAgICAgICAgam9iLT5kLT5tX3dy
aXRpbmcgPSB0cnVlOwotICAgICAgICAgICAgICAgIEh0dHBTZW5kUmVxdWVzdEV4QShqb2ItPmQt
Pm1fc2Vjb25kYXJ5SGFuZGxlLCAmYnVmZmVycywgMCwgMCwgKERXT1JEX1BUUilqb2ItPmQtPm1f
am9iSWQpOwotICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgaWYgKGludGVybmV0U3RhdHVz
ID09IElOVEVSTkVUX1NUQVRVU19SRVFVRVNUX0NPTVBMRVRFKSB7Ci0gICAgICAgICAgICBpZiAo
am9iLT5kLT5tX3dyaXRpbmcpIHsKLSAgICAgICAgICAgICAgICBEV09SRCBieXRlc1dyaXR0ZW47
Ci0gICAgICAgICAgICAgICAgSW50ZXJuZXRXcml0ZUZpbGUoam9iLT5kLT5tX3NlY29uZGFyeUhh
bmRsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqb2ItPmQtPm1fZm9ybURh
dGFTdHJpbmcgKyAoam9iLT5kLT5tX2Zvcm1EYXRhTGVuZ3RoIC0gam9iLT5kLT5tX2J5dGVzUmVt
YWluaW5nVG9Xcml0ZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgam9iLT5k
LT5tX2J5dGVzUmVtYWluaW5nVG9Xcml0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAmYnl0ZXNXcml0dGVuKTsKLSAgICAgICAgICAgICAgICBqb2ItPmQtPm1fYnl0ZXNSZW1h
aW5pbmdUb1dyaXRlIC09IGJ5dGVzV3JpdHRlbjsKLSAgICAgICAgICAgICAgICBpZiAoIWpvYi0+
ZC0+bV9ieXRlc1JlbWFpbmluZ1RvV3JpdGUpIHsKLSAgICAgICAgICAgICAgICAgICAgLy8gRW5k
IHRoZSByZXF1ZXN0LgotICAgICAgICAgICAgICAgICAgICBqb2ItPmQtPm1fd3JpdGluZyA9IGZh
bHNlOwotICAgICAgICAgICAgICAgICAgICBIdHRwRW5kUmVxdWVzdChqb2ItPmQtPm1fc2Vjb25k
YXJ5SGFuZGxlLCAwLCAwLCAoRFdPUkRfUFRSKWpvYi0+ZC0+bV9qb2JJZCk7Ci0gICAgICAgICAg
ICAgICAgICAgIGZyZWUoam9iLT5kLT5tX2Zvcm1EYXRhU3RyaW5nKTsKLSAgICAgICAgICAgICAg
ICAgICAgam9iLT5kLT5tX2Zvcm1EYXRhU3RyaW5nID0gMDsKLSAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIEhJ
TlRFUk5FVCBoYW5kbGUgPSAoam9iLT5tZXRob2QoKSA9PSAiUE9TVCIpID8gam9iLT5kLT5tX3Nl
Y29uZGFyeUhhbmRsZSA6IGpvYi0+ZC0+bV9yZXNvdXJjZUhhbmRsZTsKLSAgICAgICAgICAgIEJP
T0wgb2sgPSBGQUxTRTsKLQotICAgICAgICAgICAgc3RhdGljIGNvbnN0IGludCBidWZmZXJTaXpl
ID0gMzI3Njg7Ci0gICAgICAgICAgICBjaGFyIGJ1ZmZlcltidWZmZXJTaXplXTsKLSAgICAgICAg
ICAgIElOVEVSTkVUX0JVRkZFUlNBIGJ1ZmZlcnM7Ci0gICAgICAgICAgICBidWZmZXJzLmR3U3Ry
dWN0U2l6ZSA9IHNpemVvZihJTlRFUk5FVF9CVUZGRVJTQSk7Ci0gICAgICAgICAgICBidWZmZXJz
LmxwdkJ1ZmZlciA9IGJ1ZmZlcjsKLSAgICAgICAgICAgIGJ1ZmZlcnMuZHdCdWZmZXJMZW5ndGgg
PSBidWZmZXJTaXplOwotCi0gICAgICAgICAgICBib29sIHJlY2VpdmVkQW55RGF0YSA9IGZhbHNl
OwotICAgICAgICAgICAgd2hpbGUgKChvayA9IEludGVybmV0UmVhZEZpbGVFeEEoaGFuZGxlLCAm
YnVmZmVycywgSVJGX05PX1dBSVQsIChEV09SRF9QVFIpam9iKSkgJiYgYnVmZmVycy5kd0J1ZmZl
ckxlbmd0aCkgewotICAgICAgICAgICAgICAgIGlmICghcmVjZWl2ZWRBbnlEYXRhKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIHJlY2VpdmVkQW55RGF0YSA9IHRydWU7Ci0gICAgICAgICAgICAgICAg
ICAgIGpvYi0+Y2xpZW50KCktPnJlY2VpdmVkUmVzcG9uc2Uoam9iLCAwKTsKLSAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgam9iLT5jbGllbnQoKS0+cmVjZWl2ZWREYXRhKGpvYiwg
YnVmZmVyLCBidWZmZXJzLmR3QnVmZmVyTGVuZ3RoKTsKLSAgICAgICAgICAgICAgICBidWZmZXJz
LmR3QnVmZmVyTGVuZ3RoID0gYnVmZmVyU2l6ZTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAg
ICAgUGxhdGZvcm1EYXRhU3RydWN0IHBsYXRmb3JtRGF0YTsKLSAgICAgICAgICAgIHBsYXRmb3Jt
RGF0YS5lcnJvclN0cmluZyA9IDA7Ci0gICAgICAgICAgICBwbGF0Zm9ybURhdGEuZXJyb3IgPSAw
OwotICAgICAgICAgICAgcGxhdGZvcm1EYXRhLmxvYWRlZCA9IG9rOwotCi0gICAgICAgICAgICBp
ZiAoIW9rKSB7Ci0gICAgICAgICAgICAgICAgaW50IGVycm9yID0gR2V0TGFzdEVycm9yKCk7Ci0g
ICAgICAgICAgICAgICAgaWYgKGVycm9yID09IEVSUk9SX0lPX1BFTkRJTkcpCi0gICAgICAgICAg
ICAgICAgICAgIHJldHVybiAwOwotICAgICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAg
ICAgICAgICBEV09SRCBlcnJvclN0cmluZ0NoYXJzID0gMDsKLSAgICAgICAgICAgICAgICAgICAg
aWYgKCFJbnRlcm5ldEdldExhc3RSZXNwb25zZUluZm8oJnBsYXRmb3JtRGF0YS5lcnJvciwgMCwg
JmVycm9yU3RyaW5nQ2hhcnMpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoR2V0TGFz
dEVycm9yKCkgPT0gRVJST1JfSU5TVUZGSUNJRU5UX0JVRkZFUikgewotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHBsYXRmb3JtRGF0YS5lcnJvclN0cmluZyA9IG5ldyBUQ0hBUltlcnJvclN0
cmluZ0NoYXJzXTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnRlcm5ldEdldExhc3RS
ZXNwb25zZUluZm8oJnBsYXRmb3JtRGF0YS5lcnJvciwgcGxhdGZvcm1EYXRhLmVycm9yU3RyaW5n
LCAmZXJyb3JTdHJpbmdDaGFycyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgX1JQVEYxKF9DUlRfV0FSTiwgIkxv
YWQgZXJyb3I6ICVpXG4iLCBlcnJvcik7Ci0gICAgICAgICAgICAgICAgfQorICAgIGlmIChtZXNz
YWdlID49IGhhbmRsZUNyZWF0ZWRNZXNzYWdlKSB7CisgICAgICAgIGludCBpbmRleCA9IG1lc3Nh
Z2UgLSBoYW5kbGVDcmVhdGVkTWVzc2FnZTsKKyAgICAgICAgaWYgKGluZGV4IDwgX2NvdW50b2Yo
bWVzc2FnZUhhbmRsZXJzKSkgeworICAgICAgICAgICAgdW5zaWduZWQgam9iSWQgPSAodW5zaWdu
ZWQpIHdQYXJhbTsKKyAgICAgICAgICAgIFJlc291cmNlTG9hZGVyKiBqb2IgPSBsb29rdXBSZXNv
dXJjZUxvYWRlcihqb2JJZCk7CisgICAgICAgICAgICBpZiAoam9iKSB7CisgICAgICAgICAgICAg
ICAgQVNTRVJUKGpvYi0+ZC0+bV9qb2JJZCA9PSBqb2JJZCk7CisgICAgICAgICAgICAgICAgQVNT
RVJUKGpvYi0+ZC0+bV90aHJlYWRJZCA9PSBHZXRDdXJyZW50VGhyZWFkSWQoKSk7CisgICAgICAg
ICAgICAgICAgKGpvYi0+KihtZXNzYWdlSGFuZGxlcnNbaW5kZXhdKSkobFBhcmFtKTsKICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIAotICAgICAgICAgICAgaWYgKGpvYi0+ZC0+bV9zZWNvbmRh
cnlIYW5kbGUpCi0gICAgICAgICAgICAgICAgSW50ZXJuZXRDbG9zZUhhbmRsZShqb2ItPmQtPm1f
c2Vjb25kYXJ5SGFuZGxlKTsKLSAgICAgICAgICAgIEludGVybmV0Q2xvc2VIYW5kbGUoam9iLT5k
LT5tX3Jlc291cmNlSGFuZGxlKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgam9iLT5jbGll
bnQoKS0+cmVjZWl2ZWRBbGxEYXRhKGpvYiwgJnBsYXRmb3JtRGF0YSk7Ci0gICAgICAgICAgICBq
b2ItPmNsaWVudCgpLT5yZWNlaXZlZEFsbERhdGEoam9iKTsKLSAgICAgICAgICAgIGRlbGV0ZSBq
b2I7Ci0gICAgICAgIH0KLSAgICB9IGVsc2UKLSAgICAgICAgcmV0dXJuIERlZldpbmRvd1Byb2Mo
aFduZCwgbWVzc2FnZSwgd1BhcmFtLCBsUGFyYW0pOwotICAgIHJldHVybiAwOworICAgICAgICAg
ICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIERlZldpbmRvd1Byb2Mo
aFduZCwgbWVzc2FnZSwgd1BhcmFtLCBsUGFyYW0pOwogfQogCiBzdGF0aWMgdm9pZCBpbml0aWFs
aXplT2ZmU2NyZWVuUmVzb3VyY2VMb2FkZXJXaW5kb3coKQpAQCAtMjI4LDcgKzExNCw2IEBAIHN0
YXRpYyB2b2lkIGluaXRpYWxpemVPZmZTY3JlZW5SZXNvdXJjZUwKIAogICAgIHRyYW5zZmVySm9i
V2luZG93SGFuZGxlID0gQ3JlYXRlV2luZG93KGtSZXNvdXJjZUxvYWRlcldpbmRvd0NsYXNzTmFt
ZSwgMCwgMCwgQ1dfVVNFREVGQVVMVCwgMCwgQ1dfVVNFREVGQVVMVCwgMCwKICAgICAgICAgSFdO
RF9NRVNTQUdFLCAwLCBXaWRnZXQ6Omluc3RhbmNlSGFuZGxlLCAwKTsKLSAgICBsb2FkU3RhdHVz
TWVzc2FnZSA9IFJlZ2lzdGVyV2luZG93TWVzc2FnZShMImNvbS5hcHBsZS5XZWJLaXQuUmVzb3Vy
Y2VMb2FkZXJMb2FkU3RhdHVzIik7CiB9CiAKIFJlc291cmNlTG9hZGVySW50ZXJuYWw6On5SZXNv
dXJjZUxvYWRlckludGVybmFsKCkKQEAgLTI0MywxNiArMTI4LDE3NiBAQCBSZXNvdXJjZUxvYWRl
cjo6flJlc291cmNlTG9hZGVyKCkKICAgICAgICAgcmVtb3ZlRnJvbU91dHN0YW5kaW5nSm9icyhk
LT5tX2pvYklkKTsKIH0KIAotc3RhdGljIHZvaWQgX19zdGRjYWxsIHRyYW5zZmVySm9iU3RhdHVz
Q2FsbGJhY2soSElOVEVSTkVUIGludGVybmV0SGFuZGxlLCBEV09SRF9QVFIgdGltZXJJZCwgRFdP
UkQgaW50ZXJuZXRTdGF0dXMsIExQVk9JRCBzdGF0dXNJbmZvcm1hdGlvbiwgRFdPUkQgc3RhdHVz
SW5mb3JtYXRpb25MZW5ndGgpCit2b2lkIFJlc291cmNlTG9hZGVyOjpvbkhhbmRsZUNyZWF0ZWQo
TFBBUkFNIGxQYXJhbSkKIHsKKyAgICBpZiAoIWQtPm1fcmVzb3VyY2VIYW5kbGUpIHsKKyAgICAg
ICAgZC0+bV9yZXNvdXJjZUhhbmRsZSA9IEhJTlRFUk5FVChsUGFyYW0pOworICAgICAgICBpZiAo
ZC0+c3RhdHVzICE9IDApIHsKKyAgICAgICAgICAgIC8vIFdlIHdlcmUgY2FuY2VsZWQgYmVmb3Jl
IFdpbmRvd3MgYWN0dWFsbHkgY3JlYXRlZCBhIGhhbmRsZSBmb3IgdXMsIGNsb3NlIGFuZCBkZWxl
dGUgbm93LgorICAgICAgICAgICAgSW50ZXJuZXRDbG9zZUhhbmRsZShkLT5tX3Jlc291cmNlSGFu
ZGxlKTsKKyAgICAgICAgICAgIGRlbGV0ZSB0aGlzOworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CisKKyAgICAgICAgaWYgKG1ldGhvZCgpID09ICJQT1NUIikgeworICAgICAgICAgICAg
Ly8gRklYTUU6IFRvbyBsYXRlIHRvIHNldCByZWZlcnJlciBwcm9wZXJseS4KKyAgICAgICAgICAg
IERlcHJlY2F0ZWRTdHJpbmcgdXJsU3RyID0gZC0+VVJMLnBhdGgoKTsKKyAgICAgICAgICAgIGlu
dCBmcmFnbWVudEluZGV4ID0gdXJsU3RyLmZpbmQoJyMnKTsKKyAgICAgICAgICAgIGlmIChmcmFn
bWVudEluZGV4ICE9IC0xKQorICAgICAgICAgICAgICAgIHVybFN0ciA9IHVybFN0ci5sZWZ0KGZy
YWdtZW50SW5kZXgpOworICAgICAgICAgICAgc3RhdGljIExQQ1NUUiBhY2NlcHRbMl09eyIqLyoi
LCBOVUxMfTsKKyAgICAgICAgICAgIEhJTlRFUk5FVCB1cmxIYW5kbGUgPSBIdHRwT3BlblJlcXVl
c3RBKGQtPm1fcmVzb3VyY2VIYW5kbGUsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIlBPU1QiLCB1cmxTdHIubGF0aW4xKCksIDAsIDAsIGFjY2Vw
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElO
VEVSTkVUX0ZMQUdfS0VFUF9DT05ORUNUSU9OIHwgCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBJTlRFUk5FVF9GTEFHX0ZPUk1TX1NVQk1JVCB8Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJTlRFUk5F
VF9GTEFHX1JFTE9BRCB8IElOVEVSTkVUX0ZMQUdfTk9fQ0FDSEVfV1JJVEUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoRFdPUkRfUFRSKWQtPm1f
am9iSWQpOworICAgICAgICAgICAgaWYgKHVybEhhbmRsZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxV
RSkgeworICAgICAgICAgICAgICAgIEludGVybmV0Q2xvc2VIYW5kbGUoZC0+bV9yZXNvdXJjZUhh
bmRsZSk7CisgICAgICAgICAgICAgICAgZGVsZXRlIHRoaXM7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKyAgICB9IGVsc2UgaWYgKCFkLT5tX3NlY29uZGFyeUhhbmRsZSkgeworICAgICAgICBh
c3NlcnQobWV0aG9kKCkgPT0gIlBPU1QiKTsKKyAgICAgICAgZC0+bV9zZWNvbmRhcnlIYW5kbGUg
PSBISU5URVJORVQobFBhcmFtKTsKKyAgICAgICAgCisgICAgICAgIC8vIE5lZWQgdG8gYWN0dWFs
bHkgc2VuZCB0aGUgcmVxdWVzdCBub3cuCisgICAgICAgIFN0cmluZyBoZWFkZXJzID0gIkNvbnRl
bnQtVHlwZTogYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkXG4iOworICAgICAgICBo
ZWFkZXJzICs9ICJSZWZlcmVyOiAiOworICAgICAgICBoZWFkZXJzICs9IGQtPm1fcG9zdFJlZmVy
cmVyOworICAgICAgICBoZWFkZXJzICs9ICJcbiI7CisgICAgICAgIFN0cmluZyBmb3JtRGF0YSA9
IHBvc3REYXRhKCkuZmxhdHRlblRvU3RyaW5nKCk7CisgICAgICAgIElOVEVSTkVUX0JVRkZFUlNB
IGJ1ZmZlcnM7CisgICAgICAgIG1lbXNldCgmYnVmZmVycywgMCwgc2l6ZW9mKGJ1ZmZlcnMpKTsK
KyAgICAgICAgYnVmZmVycy5kd1N0cnVjdFNpemUgPSBzaXplb2YoSU5URVJORVRfQlVGRkVSU0Ep
OworICAgICAgICBidWZmZXJzLmxwY3N6SGVhZGVyID0gaGVhZGVycy5sYXRpbjEoKTsKKyAgICAg
ICAgYnVmZmVycy5kd0hlYWRlcnNMZW5ndGggPSBoZWFkZXJzLmxlbmd0aCgpOworICAgICAgICBi
dWZmZXJzLmR3QnVmZmVyVG90YWwgPSBmb3JtRGF0YS5sZW5ndGgoKTsKKyAgICAgICAgCisgICAg
ICAgIGQtPm1fYnl0ZXNSZW1haW5pbmdUb1dyaXRlID0gZm9ybURhdGEubGVuZ3RoKCk7CisgICAg
ICAgIGQtPm1fZm9ybURhdGFTdHJpbmcgPSAoY2hhciopbWFsbG9jKGZvcm1EYXRhLmxlbmd0aCgp
KTsKKyAgICAgICAgZC0+bV9mb3JtRGF0YUxlbmd0aCA9IGZvcm1EYXRhLmxlbmd0aCgpOworICAg
ICAgICBzdHJuY3B5KGQtPm1fZm9ybURhdGFTdHJpbmcsIGZvcm1EYXRhLmxhdGluMSgpLCBmb3Jt
RGF0YS5sZW5ndGgoKSk7CisgICAgICAgIGQtPm1fd3JpdGluZyA9IHRydWU7CisgICAgICAgIEh0
dHBTZW5kUmVxdWVzdEV4QShkLT5tX3NlY29uZGFyeUhhbmRsZSwgJmJ1ZmZlcnMsIDAsIDAsIChE
V09SRF9QVFIpZC0+bV9qb2JJZCk7CisgICAgfQorfQorCit2b2lkIFJlc291cmNlTG9hZGVyOjpv
blJlcXVlc3RSZWRpcmVjdGVkKExQQVJBTSBsUGFyYW0pCit7CisgICAgLy8gSWYgYWxyZWFkeSBj
YW5jZWxlZCwgdGhlbiBpZ25vcmUgdGhpcyBldmVudC4KKyAgICBpZiAoZC0+c3RhdHVzICE9IDAp
CisgICAgICAgIHJldHVybjsKKworICAgIEtVUkwgdXJsKFN0cmluZygoU3RyaW5nSW1wbCopIGxQ
YXJhbSkuZGVwcmVjYXRlZFN0cmluZygpKTsKKyAgICBjbGllbnQoKS0+cmVjZWl2ZWRSZWRpcmVj
dCh0aGlzLCB1cmwpOworfQorCit2b2lkIFJlc291cmNlTG9hZGVyOjpvblJlcXVlc3RDb21wbGV0
ZShMUEFSQU0gbFBhcmFtKQoreworICAgIGlmIChkLT5tX3dyaXRpbmcpIHsKKyAgICAgICAgRFdP
UkQgYnl0ZXNXcml0dGVuOworICAgICAgICBJbnRlcm5ldFdyaXRlRmlsZShkLT5tX3NlY29uZGFy
eUhhbmRsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZC0+bV9mb3JtRGF0YVN0cmluZyAr
IChkLT5tX2Zvcm1EYXRhTGVuZ3RoIC0gZC0+bV9ieXRlc1JlbWFpbmluZ1RvV3JpdGUpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICBkLT5tX2J5dGVzUmVtYWluaW5nVG9Xcml0ZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgJmJ5dGVzV3JpdHRlbik7CisgICAgICAgIGQtPm1fYnl0ZXNS
ZW1haW5pbmdUb1dyaXRlIC09IGJ5dGVzV3JpdHRlbjsKKyAgICAgICAgaWYgKCFkLT5tX2J5dGVz
UmVtYWluaW5nVG9Xcml0ZSkgeworICAgICAgICAgICAgLy8gRW5kIHRoZSByZXF1ZXN0LgorICAg
ICAgICAgICAgZC0+bV93cml0aW5nID0gZmFsc2U7CisgICAgICAgICAgICBIdHRwRW5kUmVxdWVz
dChkLT5tX3NlY29uZGFyeUhhbmRsZSwgMCwgMCwgKERXT1JEX1BUUilkLT5tX2pvYklkKTsKKyAg
ICAgICAgICAgIGZyZWUoZC0+bV9mb3JtRGF0YVN0cmluZyk7CisgICAgICAgICAgICBkLT5tX2Zv
cm1EYXRhU3RyaW5nID0gMDsKKyAgICAgICAgfQorICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgSElOVEVSTkVUIGhhbmRsZSA9IChtZXRob2QoKSA9PSAiUE9TVCIpID8gZC0+bV9zZWNvbmRh
cnlIYW5kbGUgOiBkLT5tX3Jlc291cmNlSGFuZGxlOworICAgIEJPT0wgb2sgPSBGQUxTRTsKKwor
ICAgIHN0YXRpYyBjb25zdCBpbnQgYnVmZmVyU2l6ZSA9IDMyNzY4OworICAgIGNoYXIgYnVmZmVy
W2J1ZmZlclNpemVdOworICAgIElOVEVSTkVUX0JVRkZFUlNBIGJ1ZmZlcnM7CisgICAgYnVmZmVy
cy5kd1N0cnVjdFNpemUgPSBzaXplb2YoSU5URVJORVRfQlVGRkVSU0EpOworICAgIGJ1ZmZlcnMu
bHB2QnVmZmVyID0gYnVmZmVyOworICAgIGJ1ZmZlcnMuZHdCdWZmZXJMZW5ndGggPSBidWZmZXJT
aXplOworCisgICAgYm9vbCByZWNlaXZlZEFueURhdGEgPSBmYWxzZTsKKyAgICB3aGlsZSAoKG9r
ID0gSW50ZXJuZXRSZWFkRmlsZUV4QShoYW5kbGUsICZidWZmZXJzLCBJUkZfTk9fV0FJVCwgKERX
T1JEX1BUUil0aGlzKSkgJiYgYnVmZmVycy5kd0J1ZmZlckxlbmd0aCkgeworICAgICAgICBpZiAo
IXJlY2VpdmVkQW55RGF0YSkgeworICAgICAgICAgICAgcmVjZWl2ZWRBbnlEYXRhID0gdHJ1ZTsK
KyAgICAgICAgICAgIGNsaWVudCgpLT5yZWNlaXZlZFJlc3BvbnNlKHRoaXMsIDApOworICAgICAg
ICB9CisgICAgICAgIGNsaWVudCgpLT5yZWNlaXZlZERhdGEodGhpcywgYnVmZmVyLCBidWZmZXJz
LmR3QnVmZmVyTGVuZ3RoKTsKKyAgICAgICAgYnVmZmVycy5kd0J1ZmZlckxlbmd0aCA9IGJ1ZmZl
clNpemU7CisgICAgfQorCisgICAgUGxhdGZvcm1EYXRhU3RydWN0IHBsYXRmb3JtRGF0YTsKKyAg
ICBwbGF0Zm9ybURhdGEuZXJyb3JTdHJpbmcgPSAwOworICAgIHBsYXRmb3JtRGF0YS5lcnJvciA9
IDA7CisgICAgcGxhdGZvcm1EYXRhLmxvYWRlZCA9IG9rOworCisgICAgaWYgKCFvaykgeworICAg
ICAgICBpbnQgZXJyb3IgPSBHZXRMYXN0RXJyb3IoKTsKKyAgICAgICAgaWYgKGVycm9yID09IEVS
Uk9SX0lPX1BFTkRJTkcpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIERXT1JEIGVycm9y
U3RyaW5nQ2hhcnMgPSAwOworICAgICAgICBpZiAoIUludGVybmV0R2V0TGFzdFJlc3BvbnNlSW5m
bygmcGxhdGZvcm1EYXRhLmVycm9yLCAwLCAmZXJyb3JTdHJpbmdDaGFycykpIHsKKyAgICAgICAg
ICAgIGlmIChHZXRMYXN0RXJyb3IoKSA9PSBFUlJPUl9JTlNVRkZJQ0lFTlRfQlVGRkVSKSB7Cisg
ICAgICAgICAgICAgICAgcGxhdGZvcm1EYXRhLmVycm9yU3RyaW5nID0gbmV3IFRDSEFSW2Vycm9y
U3RyaW5nQ2hhcnNdOworICAgICAgICAgICAgICAgIEludGVybmV0R2V0TGFzdFJlc3BvbnNlSW5m
bygmcGxhdGZvcm1EYXRhLmVycm9yLCBwbGF0Zm9ybURhdGEuZXJyb3JTdHJpbmcsICZlcnJvclN0
cmluZ0NoYXJzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBfUlBURjEoX0NS
VF9XQVJOLCAiTG9hZCBlcnJvcjogJWlcbiIsIGVycm9yKTsKKyAgICB9CisgICAgCisgICAgaWYg
KGQtPm1fc2Vjb25kYXJ5SGFuZGxlKQorICAgICAgICBJbnRlcm5ldENsb3NlSGFuZGxlKGQtPm1f
c2Vjb25kYXJ5SGFuZGxlKTsKKyAgICBJbnRlcm5ldENsb3NlSGFuZGxlKGQtPm1fcmVzb3VyY2VI
YW5kbGUpOworICAgIAorICAgIGNsaWVudCgpLT5yZWNlaXZlZEFsbERhdGEodGhpcywgJnBsYXRm
b3JtRGF0YSk7CisgICAgY2xpZW50KCktPnJlY2VpdmVkQWxsRGF0YSh0aGlzKTsKKyAgICBkZWxl
dGUgdGhpczsKK30KKworc3RhdGljIHZvaWQgX19zdGRjYWxsIHRyYW5zZmVySm9iU3RhdHVzQ2Fs
bGJhY2soSElOVEVSTkVUIGludGVybmV0SGFuZGxlLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRFdPUkRfUFRSIGpvYklkLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFdPUkQgaW50ZXJuZXRTdGF0dXMsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMUFZPSUQgc3Rh
dHVzSW5mb3JtYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBEV09SRCBzdGF0dXNJbmZvcm1hdGlvbkxlbmd0aCkKK3sKKyAgICBVSU5UIG1zZzsK
KyAgICBMUEFSQU0gbFBhcmFtOworCiAgICAgc3dpdGNoIChpbnRlcm5ldFN0YXR1cykgewogICAg
IGNhc2UgSU5URVJORVRfU1RBVFVTX0hBTkRMRV9DUkVBVEVEOgorICAgICAgICAvLyB0ZWxsIHRo
ZSBtYWluIHRocmVhZCBhYm91dCB0aGUgbmV3bHkgY3JlYXRlZCBoYW5kbGUKKyAgICAgICAgbXNn
ID0gaGFuZGxlQ3JlYXRlZE1lc3NhZ2U7CisgICAgICAgIGxQYXJhbSA9IChMUEFSQU0pIExQSU5U
RVJORVRfQVNZTkNfUkVTVUxUKHN0YXR1c0luZm9ybWF0aW9uKS0+ZHdSZXN1bHQ7CisgICAgICAg
IGJyZWFrOwogICAgIGNhc2UgSU5URVJORVRfU1RBVFVTX1JFUVVFU1RfQ09NUExFVEU6Ci0gICAg
ICAgIEpvYkxvYWRTdGF0dXMqIGpvYkxvYWRTdGF0dXMgPSBuZXcgSm9iTG9hZFN0YXR1czsKLSAg
ICAgICAgam9iTG9hZFN0YXR1cy0+aW50ZXJuZXRTdGF0dXMgPSBpbnRlcm5ldFN0YXR1czsKLSAg
ICAgICAgam9iTG9hZFN0YXR1cy0+ZHdSZXN1bHQgPSBMUElOVEVSTkVUX0FTWU5DX1JFU1VMVChz
dGF0dXNJbmZvcm1hdGlvbiktPmR3UmVzdWx0OwotICAgICAgICBQb3N0TWVzc2FnZSh0cmFuc2Zl
ckpvYldpbmRvd0hhbmRsZSwgbG9hZFN0YXR1c01lc3NhZ2UsIChXUEFSQU0pdGltZXJJZCwgKExQ
QVJBTSlqb2JMb2FkU3RhdHVzKTsKKyAgICAgICAgLy8gdGVsbCB0aGUgbWFpbiB0aHJlYWQgdGhh
dCB0aGUgcmVxdWVzdCBpcyBkb25lCisgICAgICAgIG1zZyA9IHJlcXVlc3RDb21wbGV0ZU1lc3Nh
Z2U7CisgICAgICAgIGxQYXJhbSA9IDA7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSU5URVJO
RVRfU1RBVFVTX1JFRElSRUNUOgorICAgICAgICAvLyB0ZWxsIHRoZSBtYWluIHRocmVhZCB0byBv
YnNlcnZlIHRoaXMgcmVkaXJlY3QgKEZJWE1FOiB3ZSBwcm9iYWJseQorICAgICAgICAvLyBuZWVk
IHRvIGJsb2NrIHRoZSByZWRpcmVjdCBhdCB0aGlzIHBvaW50IHNvIHRoZSBhcHBsaWNhdGlvbiBj
YW4KKyAgICAgICAgLy8gZGVjaWRlIHdoZXRoZXIgb3Igbm90IHRvIGZvbGxvdyB0aGUgcmVkaXJl
Y3QpCisgICAgICAgIG1zZyA9IHJlcXVlc3RSZWRpcmVjdGVkTWVzc2FnZTsKKyAgICAgICAgbFBh
cmFtID0gKExQQVJBTSkgbmV3IFN0cmluZ0ltcGwoKGNvbnN0IFVDaGFyKikgc3RhdHVzSW5mb3Jt
YXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1c0lu
Zm9ybWF0aW9uTGVuZ3RoKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJTlRFUk5FVF9TVEFU
VVNfVVNFUl9JTlBVVF9SRVFVSVJFRDoKKyAgICAgICAgLy8gRklYTUU6IHByb21wdCB0aGUgdXNl
ciBpZiBuZWNlc3NhcnkKKyAgICAgICAgUmVzdW1lU3VzcGVuZGVkRG93bmxvYWQoaW50ZXJuZXRI
YW5kbGUsIDApOworICAgIGNhc2UgSU5URVJORVRfU1RBVFVTX1NUQVRFX0NIQU5HRToKKyAgICAg
ICAgLy8gbWF5IG5lZWQgdG8gY2FsbCBSZXN1bWVTdXNwZW5kZWREb3dubG9hZCBoZXJlIGFzIHdl
bGwKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm47CiAgICAgfQorCisgICAgUG9zdE1lc3Nh
Z2UodHJhbnNmZXJKb2JXaW5kb3dIYW5kbGUsIG1zZywgKFdQQVJBTSkgam9iSWQsIGxQYXJhbSk7
CiB9CiAKIGJvb2wgUmVzb3VyY2VMb2FkZXI6OnN0YXJ0KERvY0xvYWRlciogZG9jTG9hZGVyKQo=
</data>
<flag name="review"
          id="3513"
          type_id="1"
          status="-"
          setter="beidson"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>10698</attachid>
            <date>2006-09-21 18:17:25 -0700</date>
            <delta_ts>2006-09-26 09:15:16 -0700</delta_ts>
            <desc>New patch with some small (critical) fixes</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>18635</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">SW5kZXg6IHBsYXRmb3JtL3dpbi9SZXNvdXJjZUxvYWRlcldpbi5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
cGxhdGZvcm0vd2luL1Jlc291cmNlTG9hZGVyV2luLmNwcAkocmV2aXNpb24gMTY1MTQpCisrKyBw
bGF0Zm9ybS93aW4vUmVzb3VyY2VMb2FkZXJXaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw4
ICszMCw5IEBACiAKICNpbmNsdWRlICJDU3RyaW5nLmgiCiAjaW5jbHVkZSAiRG9jTG9hZGVyLmgi
CisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJGcmFtZS5oIgotI2luY2x1ZGUgIkRv
Y3VtZW50LmgiCisjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgPHdpbmRvd3MuaD4KICNp
bmNsdWRlIDx3aW5pbmV0Lmg+CiAKQEAgLTQxLDkgKzQyLDI0IEBACiBzdGF0aWMgSGFzaE1hcDxp
bnQsIFJlc291cmNlTG9hZGVyKj4qIGpvYklkTWFwID0gMDsKIAogc3RhdGljIEhXTkQgdHJhbnNm
ZXJKb2JXaW5kb3dIYW5kbGUgPSAwOwotc3RhdGljIFVJTlQgbG9hZFN0YXR1c01lc3NhZ2UgPSAw
OwogY29uc3QgTFBDV1NUUiBrUmVzb3VyY2VMb2FkZXJXaW5kb3dDbGFzc05hbWUgPSBMIlJlc291
cmNlTG9hZGVyV2luZG93Q2xhc3MiOwogCisvLyBNZXNzYWdlIHR5cGVzIGZvciBpbnRlcm5hbCB1
c2UgKGtlZXAgaW4gc3luYyB3aXRoIGtNZXNzYWdlSGFuZGxlcnMpCitlbnVtIHsKKyAga0hhbmRs
ZUNyZWF0ZWRNZXNzYWdlID0gV01fVVNFUiwKKyAga1JlcXVlc3RSZWRpcmVjdGVkTWVzc2FnZSwK
KyAga1JlcXVlc3RDb21wbGV0ZU1lc3NhZ2UKK307CisKK3R5cGVkZWYgdm9pZCAoUmVzb3VyY2VM
b2FkZXI6OiAqUmVzb3VyY2VMb2FkZXJFdmVudEhhbmRsZXIpKExQQVJBTSk7CitzdGF0aWMgY29u
c3QgUmVzb3VyY2VMb2FkZXJFdmVudEhhbmRsZXIga01lc3NhZ2VIYW5kbGVyc1tdID0geworICAg
ICZSZXNvdXJjZUxvYWRlcjo6b25IYW5kbGVDcmVhdGVkLAorICAgICZSZXNvdXJjZUxvYWRlcjo6
b25SZXF1ZXN0UmVkaXJlY3RlZCwKKyAgICAmUmVzb3VyY2VMb2FkZXI6Om9uUmVxdWVzdENvbXBs
ZXRlCit9Oworc3RhdGljIGNvbnN0IGludCBrTnVtTWVzc2FnZUhhbmRsZXJzID0KKyAgICBzaXpl
b2Yoa01lc3NhZ2VIYW5kbGVycykgLyBzaXplb2Yoa01lc3NhZ2VIYW5kbGVyc1swXSk7CisKIHN0
YXRpYyBpbnQgYWRkVG9PdXRzdGFuZGluZ0pvYnMoUmVzb3VyY2VMb2FkZXIqIGpvYikKIHsKICAg
ICBpZiAoIWpvYklkTWFwKQpAQCAtNjcsMTUwICs4MywyMyBAQAogICAgIHJldHVybiBqb2JJZE1h
cC0+Z2V0KGpvYklkKTsKIH0KIAotc3RydWN0IEpvYkxvYWRTdGF0dXMgewotICAgIERXT1JEIGlu
dGVybmV0U3RhdHVzOwotICAgIERXT1JEX1BUUiBkd1Jlc3VsdDsKLX07Ci0KLUxSRVNVTFQgQ0FM
TEJBQ0sgUmVzb3VyY2VMb2FkZXJXbmRQcm9jKEhXTkQgaFduZCwgVUlOVCBtZXNzYWdlLCBXUEFS
QU0gd1BhcmFtLCBMUEFSQU0gbFBhcmFtKQorc3RhdGljIExSRVNVTFQgQ0FMTEJBQ0sgUmVzb3Vy
Y2VMb2FkZXJXbmRQcm9jKEhXTkQgaFduZCwgVUlOVCBtZXNzYWdlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdQQVJBTSB3UGFyYW0sIExQQVJBTSBsUGFy
YW0pCiB7Ci0gICAgaWYgKG1lc3NhZ2UgPT0gbG9hZFN0YXR1c01lc3NhZ2UpIHsKLSAgICAgICAg
Sm9iTG9hZFN0YXR1cyogam9iTG9hZFN0YXR1cyA9IChKb2JMb2FkU3RhdHVzKilsUGFyYW07Ci0g
ICAgICAgIERXT1JEIGludGVybmV0U3RhdHVzID0gam9iTG9hZFN0YXR1cy0+aW50ZXJuZXRTdGF0
dXM7Ci0gICAgICAgIERXT1JEX1BUUiBkd1Jlc3VsdCA9IGpvYkxvYWRTdGF0dXMtPmR3UmVzdWx0
OwotICAgICAgICBkZWxldGUgam9iTG9hZFN0YXR1czsKLSAgICAgICAgam9iTG9hZFN0YXR1cyA9
IDA7Ci0KLSAgICAgICAgLy8gSWYgd2UgZ2V0IGEgbWVzc2FnZSBhYm91dCBhIGpvYiB3ZSBubyBs
b25nZXIga25vdyBhYm91dCAoYWxyZWFkeSBkZWxldGVkKSwgaWdub3JlIGl0LgotICAgICAgICB1
bnNpZ25lZCBqb2JJZCA9ICh1bnNpZ25lZCl3UGFyYW07Ci0gICAgICAgIFJlc291cmNlTG9hZGVy
KiBqb2IgPSBsb29rdXBSZXNvdXJjZUxvYWRlcihqb2JJZCk7Ci0gICAgICAgIGlmICgham9iKQor
ICAgIGlmIChtZXNzYWdlID49IGtIYW5kbGVDcmVhdGVkTWVzc2FnZSkgeworICAgICAgICBVSU5U
IGluZGV4ID0gbWVzc2FnZSAtIGtIYW5kbGVDcmVhdGVkTWVzc2FnZTsKKyAgICAgICAgaWYgKGlu
ZGV4IDwga051bU1lc3NhZ2VIYW5kbGVycykgeworICAgICAgICAgICAgdW5zaWduZWQgam9iSWQg
PSAodW5zaWduZWQpIHdQYXJhbTsKKyAgICAgICAgICAgIFJlc291cmNlTG9hZGVyKiBqb2IgPSBs
b29rdXBSZXNvdXJjZUxvYWRlcihqb2JJZCk7CisgICAgICAgICAgICBpZiAoam9iKSB7CisgICAg
ICAgICAgICAgICAgQVNTRVJUKGpvYi0+ZC0+bV9qb2JJZCA9PSBqb2JJZCk7CisgICAgICAgICAg
ICAgICAgQVNTRVJUKGpvYi0+ZC0+bV90aHJlYWRJZCA9PSBHZXRDdXJyZW50VGhyZWFkSWQoKSk7
CisgICAgICAgICAgICAgICAgKGpvYi0+KihrTWVzc2FnZUhhbmRsZXJzW2luZGV4XSkpKGxQYXJh
bSk7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4gMDsKLQotICAgICAgICBBU1NF
UlQoam9iLT5kLT5tX2pvYklkID09IGpvYklkKTsKLSAgICAgICAgQVNTRVJUKGpvYi0+ZC0+bV90
aHJlYWRJZCA9PSBHZXRDdXJyZW50VGhyZWFkSWQoKSk7Ci0KLSAgICAgICAgaWYgKGludGVybmV0
U3RhdHVzID09IElOVEVSTkVUX1NUQVRVU19IQU5ETEVfQ1JFQVRFRCkgewotICAgICAgICAgICAg
aWYgKCFqb2ItPmQtPm1fcmVzb3VyY2VIYW5kbGUpIHsKLSAgICAgICAgICAgICAgICBqb2ItPmQt
Pm1fcmVzb3VyY2VIYW5kbGUgPSBISU5URVJORVQoZHdSZXN1bHQpOwotICAgICAgICAgICAgICAg
IGlmIChqb2ItPmQtPnN0YXR1cyAhPSAwKSB7Ci0gICAgICAgICAgICAgICAgICAgIC8vIFdlIHdl
cmUgY2FuY2VsZWQgYmVmb3JlIFdpbmRvd3MgYWN0dWFsbHkgY3JlYXRlZCBhIGhhbmRsZSBmb3Ig
dXMsIGNsb3NlIGFuZCBkZWxldGUgbm93LgotICAgICAgICAgICAgICAgICAgICBJbnRlcm5ldENs
b3NlSGFuZGxlKGpvYi0+ZC0+bV9yZXNvdXJjZUhhbmRsZSk7Ci0gICAgICAgICAgICAgICAgICAg
IGRlbGV0ZSBqb2I7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgaWYgKGpv
Yi0+bWV0aG9kKCkgPT0gIlBPU1QiKSB7Ci0gICAgICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBU
b28gbGF0ZSB0byBzZXQgcmVmZXJyZXIgcHJvcGVybHkuCi0gICAgICAgICAgICAgICAgICAgIERl
cHJlY2F0ZWRTdHJpbmcgdXJsU3RyID0gam9iLT5kLT5VUkwucGF0aCgpOwotICAgICAgICAgICAg
ICAgICAgICBpbnQgZnJhZ21lbnRJbmRleCA9IHVybFN0ci5maW5kKCcjJyk7Ci0gICAgICAgICAg
ICAgICAgICAgIGlmIChmcmFnbWVudEluZGV4ICE9IC0xKQotICAgICAgICAgICAgICAgICAgICAg
ICAgdXJsU3RyID0gdXJsU3RyLmxlZnQoZnJhZ21lbnRJbmRleCk7Ci0gICAgICAgICAgICAgICAg
ICAgIHN0YXRpYyBMUENTVFIgYWNjZXB0WzJdPXsiKi8qIiwgTlVMTH07Ci0gICAgICAgICAgICAg
ICAgICAgIEhJTlRFUk5FVCB1cmxIYW5kbGUgPSBIdHRwT3BlblJlcXVlc3RBKGpvYi0+ZC0+bV9y
ZXNvdXJjZUhhbmRsZSwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJQT1NUIiwgdXJsU3RyLmxhdGluMSgpLCAwLCAwLCBhY2NlcHQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIElOVEVSTkVUX0ZMQUdfS0VFUF9DT05ORUNUSU9OIHwgCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElOVEVSTkVUX0ZMQUdfRk9S
TVNfU1VCTUlUIHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgSU5URVJORVRfRkxBR19SRUxPQUQgfCBJTlRFUk5FVF9GTEFHX05PX0NB
Q0hFX1dSSVRFLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAoRFdPUkRfUFRSKWpvYi0+ZC0+bV9qb2JJZCk7Ci0gICAgICAgICAgICAg
ICAgICAgIGlmICh1cmxIYW5kbGUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIEludGVybmV0Q2xvc2VIYW5kbGUoam9iLT5kLT5tX3Jlc291cmNlSGFu
ZGxlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBqb2I7Ci0gICAgICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKCFqb2It
PmQtPm1fc2Vjb25kYXJ5SGFuZGxlKSB7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0KGpvYi0+bWV0
aG9kKCkgPT0gIlBPU1QiKTsKLSAgICAgICAgICAgICAgICBqb2ItPmQtPm1fc2Vjb25kYXJ5SGFu
ZGxlID0gSElOVEVSTkVUKGR3UmVzdWx0KTsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAg
ICAgICAvLyBOZWVkIHRvIGFjdHVhbGx5IHNlbmQgdGhlIHJlcXVlc3Qgbm93LgotICAgICAgICAg
ICAgICAgIFN0cmluZyBoZWFkZXJzID0gIkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24veC13d3ct
Zm9ybS11cmxlbmNvZGVkXG4iOwotICAgICAgICAgICAgICAgIGhlYWRlcnMgKz0gIlJlZmVyZXI6
ICI7Ci0gICAgICAgICAgICAgICAgaGVhZGVycyArPSBqb2ItPmQtPm1fcG9zdFJlZmVycmVyOwot
ICAgICAgICAgICAgICAgIGhlYWRlcnMgKz0gIlxuIjsKLSAgICAgICAgICAgICAgICBTdHJpbmcg
Zm9ybURhdGEgPSBqb2ItPnBvc3REYXRhKCkuZmxhdHRlblRvU3RyaW5nKCk7Ci0gICAgICAgICAg
ICAgICAgSU5URVJORVRfQlVGRkVSU0EgYnVmZmVyczsKLSAgICAgICAgICAgICAgICBtZW1zZXQo
JmJ1ZmZlcnMsIDAsIHNpemVvZihidWZmZXJzKSk7Ci0gICAgICAgICAgICAgICAgYnVmZmVycy5k
d1N0cnVjdFNpemUgPSBzaXplb2YoSU5URVJORVRfQlVGRkVSU0EpOwotICAgICAgICAgICAgICAg
IGJ1ZmZlcnMubHBjc3pIZWFkZXIgPSBoZWFkZXJzLmxhdGluMSgpOwotICAgICAgICAgICAgICAg
IGJ1ZmZlcnMuZHdIZWFkZXJzTGVuZ3RoID0gaGVhZGVycy5sZW5ndGgoKTsKLSAgICAgICAgICAg
ICAgICBidWZmZXJzLmR3QnVmZmVyVG90YWwgPSBmb3JtRGF0YS5sZW5ndGgoKTsKLSAgICAgICAg
ICAgICAgICAKLSAgICAgICAgICAgICAgICBqb2ItPmQtPm1fYnl0ZXNSZW1haW5pbmdUb1dyaXRl
ID0gZm9ybURhdGEubGVuZ3RoKCk7Ci0gICAgICAgICAgICAgICAgam9iLT5kLT5tX2Zvcm1EYXRh
U3RyaW5nID0gKGNoYXIqKW1hbGxvYyhmb3JtRGF0YS5sZW5ndGgoKSk7Ci0gICAgICAgICAgICAg
ICAgam9iLT5kLT5tX2Zvcm1EYXRhTGVuZ3RoID0gZm9ybURhdGEubGVuZ3RoKCk7Ci0gICAgICAg
ICAgICAgICAgc3RybmNweShqb2ItPmQtPm1fZm9ybURhdGFTdHJpbmcsIGZvcm1EYXRhLmxhdGlu
MSgpLCBmb3JtRGF0YS5sZW5ndGgoKSk7Ci0gICAgICAgICAgICAgICAgam9iLT5kLT5tX3dyaXRp
bmcgPSB0cnVlOwotICAgICAgICAgICAgICAgIEh0dHBTZW5kUmVxdWVzdEV4QShqb2ItPmQtPm1f
c2Vjb25kYXJ5SGFuZGxlLCAmYnVmZmVycywgMCwgMCwgKERXT1JEX1BUUilqb2ItPmQtPm1fam9i
SWQpOwotICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgaWYgKGludGVybmV0U3RhdHVzID09
IElOVEVSTkVUX1NUQVRVU19SRVFVRVNUX0NPTVBMRVRFKSB7Ci0gICAgICAgICAgICBpZiAoam9i
LT5kLT5tX3dyaXRpbmcpIHsKLSAgICAgICAgICAgICAgICBEV09SRCBieXRlc1dyaXR0ZW47Ci0g
ICAgICAgICAgICAgICAgSW50ZXJuZXRXcml0ZUZpbGUoam9iLT5kLT5tX3NlY29uZGFyeUhhbmRs
ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqb2ItPmQtPm1fZm9ybURhdGFT
dHJpbmcgKyAoam9iLT5kLT5tX2Zvcm1EYXRhTGVuZ3RoIC0gam9iLT5kLT5tX2J5dGVzUmVtYWlu
aW5nVG9Xcml0ZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgam9iLT5kLT5t
X2J5dGVzUmVtYWluaW5nVG9Xcml0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAmYnl0ZXNXcml0dGVuKTsKLSAgICAgICAgICAgICAgICBqb2ItPmQtPm1fYnl0ZXNSZW1haW5p
bmdUb1dyaXRlIC09IGJ5dGVzV3JpdHRlbjsKLSAgICAgICAgICAgICAgICBpZiAoIWpvYi0+ZC0+
bV9ieXRlc1JlbWFpbmluZ1RvV3JpdGUpIHsKLSAgICAgICAgICAgICAgICAgICAgLy8gRW5kIHRo
ZSByZXF1ZXN0LgotICAgICAgICAgICAgICAgICAgICBqb2ItPmQtPm1fd3JpdGluZyA9IGZhbHNl
OwotICAgICAgICAgICAgICAgICAgICBIdHRwRW5kUmVxdWVzdChqb2ItPmQtPm1fc2Vjb25kYXJ5
SGFuZGxlLCAwLCAwLCAoRFdPUkRfUFRSKWpvYi0+ZC0+bV9qb2JJZCk7Ci0gICAgICAgICAgICAg
ICAgICAgIGZyZWUoam9iLT5kLT5tX2Zvcm1EYXRhU3RyaW5nKTsKLSAgICAgICAgICAgICAgICAg
ICAgam9iLT5kLT5tX2Zvcm1EYXRhU3RyaW5nID0gMDsKLSAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIEhJTlRF
Uk5FVCBoYW5kbGUgPSAoam9iLT5tZXRob2QoKSA9PSAiUE9TVCIpID8gam9iLT5kLT5tX3NlY29u
ZGFyeUhhbmRsZSA6IGpvYi0+ZC0+bV9yZXNvdXJjZUhhbmRsZTsKLSAgICAgICAgICAgIEJPT0wg
b2sgPSBGQUxTRTsKLQotICAgICAgICAgICAgc3RhdGljIGNvbnN0IGludCBidWZmZXJTaXplID0g
MzI3Njg7Ci0gICAgICAgICAgICBjaGFyIGJ1ZmZlcltidWZmZXJTaXplXTsKLSAgICAgICAgICAg
IElOVEVSTkVUX0JVRkZFUlNBIGJ1ZmZlcnM7Ci0gICAgICAgICAgICBidWZmZXJzLmR3U3RydWN0
U2l6ZSA9IHNpemVvZihJTlRFUk5FVF9CVUZGRVJTQSk7Ci0gICAgICAgICAgICBidWZmZXJzLmxw
dkJ1ZmZlciA9IGJ1ZmZlcjsKLSAgICAgICAgICAgIGJ1ZmZlcnMuZHdCdWZmZXJMZW5ndGggPSBi
dWZmZXJTaXplOwotCi0gICAgICAgICAgICBib29sIHJlY2VpdmVkQW55RGF0YSA9IGZhbHNlOwot
ICAgICAgICAgICAgd2hpbGUgKChvayA9IEludGVybmV0UmVhZEZpbGVFeEEoaGFuZGxlLCAmYnVm
ZmVycywgSVJGX05PX1dBSVQsIChEV09SRF9QVFIpam9iKSkgJiYgYnVmZmVycy5kd0J1ZmZlckxl
bmd0aCkgewotICAgICAgICAgICAgICAgIGlmICghcmVjZWl2ZWRBbnlEYXRhKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIHJlY2VpdmVkQW55RGF0YSA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAg
IGpvYi0+Y2xpZW50KCktPnJlY2VpdmVkUmVzcG9uc2Uoam9iLCAwKTsKLSAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAgICAgam9iLT5jbGllbnQoKS0+cmVjZWl2ZWREYXRhKGpvYiwgYnVm
ZmVyLCBidWZmZXJzLmR3QnVmZmVyTGVuZ3RoKTsKLSAgICAgICAgICAgICAgICBidWZmZXJzLmR3
QnVmZmVyTGVuZ3RoID0gYnVmZmVyU2l6ZTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAg
UGxhdGZvcm1EYXRhU3RydWN0IHBsYXRmb3JtRGF0YTsKLSAgICAgICAgICAgIHBsYXRmb3JtRGF0
YS5lcnJvclN0cmluZyA9IDA7Ci0gICAgICAgICAgICBwbGF0Zm9ybURhdGEuZXJyb3IgPSAwOwot
ICAgICAgICAgICAgcGxhdGZvcm1EYXRhLmxvYWRlZCA9IG9rOwotCi0gICAgICAgICAgICBpZiAo
IW9rKSB7Ci0gICAgICAgICAgICAgICAgaW50IGVycm9yID0gR2V0TGFzdEVycm9yKCk7Ci0gICAg
ICAgICAgICAgICAgaWYgKGVycm9yID09IEVSUk9SX0lPX1BFTkRJTkcpCi0gICAgICAgICAgICAg
ICAgICAgIHJldHVybiAwOwotICAgICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAg
ICAgICBEV09SRCBlcnJvclN0cmluZ0NoYXJzID0gMDsKLSAgICAgICAgICAgICAgICAgICAgaWYg
KCFJbnRlcm5ldEdldExhc3RSZXNwb25zZUluZm8oJnBsYXRmb3JtRGF0YS5lcnJvciwgMCwgJmVy
cm9yU3RyaW5nQ2hhcnMpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoR2V0TGFzdEVy
cm9yKCkgPT0gRVJST1JfSU5TVUZGSUNJRU5UX0JVRkZFUikgewotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHBsYXRmb3JtRGF0YS5lcnJvclN0cmluZyA9IG5ldyBUQ0hBUltlcnJvclN0cmlu
Z0NoYXJzXTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnRlcm5ldEdldExhc3RSZXNw
b25zZUluZm8oJnBsYXRmb3JtRGF0YS5lcnJvciwgcGxhdGZvcm1EYXRhLmVycm9yU3RyaW5nLCAm
ZXJyb3JTdHJpbmdDaGFycyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgX1JQVEYxKF9DUlRfV0FSTiwgIkxvYWQg
ZXJyb3I6ICVpXG4iLCBlcnJvcik7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQot
ICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAoam9iLT5kLT5tX3NlY29uZGFyeUhhbmRsZSkK
LSAgICAgICAgICAgICAgICBJbnRlcm5ldENsb3NlSGFuZGxlKGpvYi0+ZC0+bV9zZWNvbmRhcnlI
YW5kbGUpOwotICAgICAgICAgICAgSW50ZXJuZXRDbG9zZUhhbmRsZShqb2ItPmQtPm1fcmVzb3Vy
Y2VIYW5kbGUpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBqb2ItPmNsaWVudCgpLT5yZWNl
aXZlZEFsbERhdGEoam9iLCAmcGxhdGZvcm1EYXRhKTsKLSAgICAgICAgICAgIGpvYi0+Y2xpZW50
KCktPnJlY2VpdmVkQWxsRGF0YShqb2IpOwotICAgICAgICAgICAgZGVsZXRlIGpvYjsKICAgICAg
ICAgfQotICAgIH0gZWxzZQotICAgICAgICByZXR1cm4gRGVmV2luZG93UHJvYyhoV25kLCBtZXNz
YWdlLCB3UGFyYW0sIGxQYXJhbSk7Ci0gICAgcmV0dXJuIDA7CisgICAgfQorICAgIHJldHVybiBE
ZWZXaW5kb3dQcm9jKGhXbmQsIG1lc3NhZ2UsIHdQYXJhbSwgbFBhcmFtKTsKIH0KIAogc3RhdGlj
IHZvaWQgaW5pdGlhbGl6ZU9mZlNjcmVlblJlc291cmNlTG9hZGVyV2luZG93KCkKQEAgLTIyOCw3
ICsxMTcsNiBAQAogCiAgICAgdHJhbnNmZXJKb2JXaW5kb3dIYW5kbGUgPSBDcmVhdGVXaW5kb3co
a1Jlc291cmNlTG9hZGVyV2luZG93Q2xhc3NOYW1lLCAwLCAwLCBDV19VU0VERUZBVUxULCAwLCBD
V19VU0VERUZBVUxULCAwLAogICAgICAgICBIV05EX01FU1NBR0UsIDAsIFdpZGdldDo6aW5zdGFu
Y2VIYW5kbGUsIDApOwotICAgIGxvYWRTdGF0dXNNZXNzYWdlID0gUmVnaXN0ZXJXaW5kb3dNZXNz
YWdlKEwiY29tLmFwcGxlLldlYktpdC5SZXNvdXJjZUxvYWRlckxvYWRTdGF0dXMiKTsKIH0KIAog
UmVzb3VyY2VMb2FkZXJJbnRlcm5hbDo6flJlc291cmNlTG9hZGVySW50ZXJuYWwoKQpAQCAtMjQz
LDE2ICsxMzEsMTgwIEBACiAgICAgICAgIHJlbW92ZUZyb21PdXRzdGFuZGluZ0pvYnMoZC0+bV9q
b2JJZCk7CiB9CiAKLXN0YXRpYyB2b2lkIF9fc3RkY2FsbCB0cmFuc2ZlckpvYlN0YXR1c0NhbGxi
YWNrKEhJTlRFUk5FVCBpbnRlcm5ldEhhbmRsZSwgRFdPUkRfUFRSIHRpbWVySWQsIERXT1JEIGlu
dGVybmV0U3RhdHVzLCBMUFZPSUQgc3RhdHVzSW5mb3JtYXRpb24sIERXT1JEIHN0YXR1c0luZm9y
bWF0aW9uTGVuZ3RoKQordm9pZCBSZXNvdXJjZUxvYWRlcjo6b25IYW5kbGVDcmVhdGVkKExQQVJB
TSBsUGFyYW0pCiB7CisgICAgaWYgKCFkLT5tX3Jlc291cmNlSGFuZGxlKSB7CisgICAgICAgIGQt
Pm1fcmVzb3VyY2VIYW5kbGUgPSBISU5URVJORVQobFBhcmFtKTsKKyAgICAgICAgaWYgKGQtPnN0
YXR1cyAhPSAwKSB7CisgICAgICAgICAgICAvLyBXZSB3ZXJlIGNhbmNlbGVkIGJlZm9yZSBXaW5k
b3dzIGFjdHVhbGx5IGNyZWF0ZWQgYSBoYW5kbGUgZm9yIHVzLCBjbG9zZSBhbmQgZGVsZXRlIG5v
dy4KKyAgICAgICAgICAgIEludGVybmV0Q2xvc2VIYW5kbGUoZC0+bV9yZXNvdXJjZUhhbmRsZSk7
CisgICAgICAgICAgICBkZWxldGUgdGhpczsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQorCisgICAgICAgIGlmIChtZXRob2QoKSA9PSAiUE9TVCIpIHsKKyAgICAgICAgICAgIC8vIEZJ
WE1FOiBUb28gbGF0ZSB0byBzZXQgcmVmZXJyZXIgcHJvcGVybHkuCisgICAgICAgICAgICBEZXBy
ZWNhdGVkU3RyaW5nIHVybFN0ciA9IGQtPlVSTC5wYXRoKCk7CisgICAgICAgICAgICBpbnQgZnJh
Z21lbnRJbmRleCA9IHVybFN0ci5maW5kKCcjJyk7CisgICAgICAgICAgICBpZiAoZnJhZ21lbnRJ
bmRleCAhPSAtMSkKKyAgICAgICAgICAgICAgICB1cmxTdHIgPSB1cmxTdHIubGVmdChmcmFnbWVu
dEluZGV4KTsKKyAgICAgICAgICAgIHN0YXRpYyBMUENTVFIgYWNjZXB0WzJdPXsiKi8qIiwgTlVM
TH07CisgICAgICAgICAgICBISU5URVJORVQgdXJsSGFuZGxlID0gSHR0cE9wZW5SZXF1ZXN0QShk
LT5tX3Jlc291cmNlSGFuZGxlLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJQT1NUIiwgdXJsU3RyLmxhdGluMSgpLCAwLCAwLCBhY2NlcHQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJTlRFUk5F
VF9GTEFHX0tFRVBfQ09OTkVDVElPTiB8IAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgSU5URVJORVRfRkxBR19GT1JNU19TVUJNSVQgfAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSU5URVJORVRfRkxB
R19SRUxPQUQgfCBJTlRFUk5FVF9GTEFHX05PX0NBQ0hFX1dSSVRFLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKERXT1JEX1BUUilkLT5tX2pvYklk
KTsKKyAgICAgICAgICAgIGlmICh1cmxIYW5kbGUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpIHsK
KyAgICAgICAgICAgICAgICBJbnRlcm5ldENsb3NlSGFuZGxlKGQtPm1fcmVzb3VyY2VIYW5kbGUp
OworICAgICAgICAgICAgICAgIGRlbGV0ZSB0aGlzOworICAgICAgICAgICAgfQorICAgICAgICB9
CisgICAgfSBlbHNlIGlmICghZC0+bV9zZWNvbmRhcnlIYW5kbGUpIHsKKyAgICAgICAgYXNzZXJ0
KG1ldGhvZCgpID09ICJQT1NUIik7CisgICAgICAgIGQtPm1fc2Vjb25kYXJ5SGFuZGxlID0gSElO
VEVSTkVUKGxQYXJhbSk7CisgICAgICAgIAorICAgICAgICAvLyBOZWVkIHRvIGFjdHVhbGx5IHNl
bmQgdGhlIHJlcXVlc3Qgbm93LgorICAgICAgICBTdHJpbmcgaGVhZGVycyA9ICJDb250ZW50LVR5
cGU6IGFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZFxuIjsKKyAgICAgICAgaGVhZGVy
cyArPSAiUmVmZXJlcjogIjsKKyAgICAgICAgaGVhZGVycyArPSBkLT5tX3Bvc3RSZWZlcnJlcjsK
KyAgICAgICAgaGVhZGVycyArPSAiXG4iOworICAgICAgICBTdHJpbmcgZm9ybURhdGEgPSBwb3N0
RGF0YSgpLmZsYXR0ZW5Ub1N0cmluZygpOworICAgICAgICBJTlRFUk5FVF9CVUZGRVJTQSBidWZm
ZXJzOworICAgICAgICBtZW1zZXQoJmJ1ZmZlcnMsIDAsIHNpemVvZihidWZmZXJzKSk7CisgICAg
ICAgIGJ1ZmZlcnMuZHdTdHJ1Y3RTaXplID0gc2l6ZW9mKElOVEVSTkVUX0JVRkZFUlNBKTsKKyAg
ICAgICAgYnVmZmVycy5scGNzekhlYWRlciA9IGhlYWRlcnMubGF0aW4xKCk7CisgICAgICAgIGJ1
ZmZlcnMuZHdIZWFkZXJzTGVuZ3RoID0gaGVhZGVycy5sZW5ndGgoKTsKKyAgICAgICAgYnVmZmVy
cy5kd0J1ZmZlclRvdGFsID0gZm9ybURhdGEubGVuZ3RoKCk7CisgICAgICAgIAorICAgICAgICBk
LT5tX2J5dGVzUmVtYWluaW5nVG9Xcml0ZSA9IGZvcm1EYXRhLmxlbmd0aCgpOworICAgICAgICBk
LT5tX2Zvcm1EYXRhU3RyaW5nID0gKGNoYXIqKW1hbGxvYyhmb3JtRGF0YS5sZW5ndGgoKSk7Cisg
ICAgICAgIGQtPm1fZm9ybURhdGFMZW5ndGggPSBmb3JtRGF0YS5sZW5ndGgoKTsKKyAgICAgICAg
c3RybmNweShkLT5tX2Zvcm1EYXRhU3RyaW5nLCBmb3JtRGF0YS5sYXRpbjEoKSwgZm9ybURhdGEu
bGVuZ3RoKCkpOworICAgICAgICBkLT5tX3dyaXRpbmcgPSB0cnVlOworICAgICAgICBIdHRwU2Vu
ZFJlcXVlc3RFeEEoZC0+bV9zZWNvbmRhcnlIYW5kbGUsICZidWZmZXJzLCAwLCAwLCAoRFdPUkRf
UFRSKWQtPm1fam9iSWQpOworICAgIH0KK30KKwordm9pZCBSZXNvdXJjZUxvYWRlcjo6b25SZXF1
ZXN0UmVkaXJlY3RlZChMUEFSQU0gbFBhcmFtKQoreworICAgIC8vIElmIGFscmVhZHkgY2FuY2Vs
ZWQsIHRoZW4gaWdub3JlIHRoaXMgZXZlbnQuCisgICAgaWYgKGQtPnN0YXR1cyAhPSAwKQorICAg
ICAgICByZXR1cm47CisKKyAgICBLVVJMIHVybChTdHJpbmcoKFN0cmluZ0ltcGwqKSBsUGFyYW0p
LmRlcHJlY2F0ZWRTdHJpbmcoKSk7CisgICAgY2xpZW50KCktPnJlY2VpdmVkUmVkaXJlY3QodGhp
cywgdXJsKTsKK30KKwordm9pZCBSZXNvdXJjZUxvYWRlcjo6b25SZXF1ZXN0Q29tcGxldGUoTFBB
UkFNIGxQYXJhbSkKK3sKKyAgICBpZiAoZC0+bV93cml0aW5nKSB7CisgICAgICAgIERXT1JEIGJ5
dGVzV3JpdHRlbjsKKyAgICAgICAgSW50ZXJuZXRXcml0ZUZpbGUoZC0+bV9zZWNvbmRhcnlIYW5k
bGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGQtPm1fZm9ybURhdGFTdHJpbmcgKyAoZC0+
bV9mb3JtRGF0YUxlbmd0aCAtIGQtPm1fYnl0ZXNSZW1haW5pbmdUb1dyaXRlKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgZC0+bV9ieXRlc1JlbWFpbmluZ1RvV3JpdGUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICZieXRlc1dyaXR0ZW4pOworICAgICAgICBkLT5tX2J5dGVzUmVtYWlu
aW5nVG9Xcml0ZSAtPSBieXRlc1dyaXR0ZW47CisgICAgICAgIGlmICghZC0+bV9ieXRlc1JlbWFp
bmluZ1RvV3JpdGUpIHsKKyAgICAgICAgICAgIC8vIEVuZCB0aGUgcmVxdWVzdC4KKyAgICAgICAg
ICAgIGQtPm1fd3JpdGluZyA9IGZhbHNlOworICAgICAgICAgICAgSHR0cEVuZFJlcXVlc3QoZC0+
bV9zZWNvbmRhcnlIYW5kbGUsIDAsIDAsIChEV09SRF9QVFIpZC0+bV9qb2JJZCk7CisgICAgICAg
ICAgICBmcmVlKGQtPm1fZm9ybURhdGFTdHJpbmcpOworICAgICAgICAgICAgZC0+bV9mb3JtRGF0
YVN0cmluZyA9IDA7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEhJ
TlRFUk5FVCBoYW5kbGUgPSAobWV0aG9kKCkgPT0gIlBPU1QiKSA/IGQtPm1fc2Vjb25kYXJ5SGFu
ZGxlIDogZC0+bV9yZXNvdXJjZUhhbmRsZTsKKyAgICBCT09MIG9rID0gRkFMU0U7CisKKyAgICBz
dGF0aWMgY29uc3QgaW50IGJ1ZmZlclNpemUgPSAzMjc2ODsKKyAgICBjaGFyIGJ1ZmZlcltidWZm
ZXJTaXplXTsKKyAgICBJTlRFUk5FVF9CVUZGRVJTQSBidWZmZXJzOworICAgIGJ1ZmZlcnMuZHdT
dHJ1Y3RTaXplID0gc2l6ZW9mKElOVEVSTkVUX0JVRkZFUlNBKTsKKyAgICBidWZmZXJzLmxwdkJ1
ZmZlciA9IGJ1ZmZlcjsKKyAgICBidWZmZXJzLmR3QnVmZmVyTGVuZ3RoID0gYnVmZmVyU2l6ZTsK
KworICAgIGJvb2wgcmVjZWl2ZWRBbnlEYXRhID0gZmFsc2U7CisgICAgd2hpbGUgKChvayA9IElu
dGVybmV0UmVhZEZpbGVFeEEoaGFuZGxlLCAmYnVmZmVycywgSVJGX05PX1dBSVQsIChEV09SRF9Q
VFIpdGhpcykpICYmIGJ1ZmZlcnMuZHdCdWZmZXJMZW5ndGgpIHsKKyAgICAgICAgaWYgKCFyZWNl
aXZlZEFueURhdGEpIHsKKyAgICAgICAgICAgIHJlY2VpdmVkQW55RGF0YSA9IHRydWU7CisgICAg
ICAgICAgICBjbGllbnQoKS0+cmVjZWl2ZWRSZXNwb25zZSh0aGlzLCAwKTsKKyAgICAgICAgfQor
ICAgICAgICBjbGllbnQoKS0+cmVjZWl2ZWREYXRhKHRoaXMsIGJ1ZmZlciwgYnVmZmVycy5kd0J1
ZmZlckxlbmd0aCk7CisgICAgICAgIGJ1ZmZlcnMuZHdCdWZmZXJMZW5ndGggPSBidWZmZXJTaXpl
OworICAgIH0KKworICAgIFBsYXRmb3JtRGF0YVN0cnVjdCBwbGF0Zm9ybURhdGE7CisgICAgcGxh
dGZvcm1EYXRhLmVycm9yU3RyaW5nID0gMDsKKyAgICBwbGF0Zm9ybURhdGEuZXJyb3IgPSAwOwor
ICAgIHBsYXRmb3JtRGF0YS5sb2FkZWQgPSBvazsKKworICAgIGlmICghb2spIHsKKyAgICAgICAg
aW50IGVycm9yID0gR2V0TGFzdEVycm9yKCk7CisgICAgICAgIGlmIChlcnJvciA9PSBFUlJPUl9J
T19QRU5ESU5HKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBEV09SRCBlcnJvclN0cmlu
Z0NoYXJzID0gMDsKKyAgICAgICAgaWYgKCFJbnRlcm5ldEdldExhc3RSZXNwb25zZUluZm8oJnBs
YXRmb3JtRGF0YS5lcnJvciwgMCwgJmVycm9yU3RyaW5nQ2hhcnMpKSB7CisgICAgICAgICAgICBp
ZiAoR2V0TGFzdEVycm9yKCkgPT0gRVJST1JfSU5TVUZGSUNJRU5UX0JVRkZFUikgeworICAgICAg
ICAgICAgICAgIHBsYXRmb3JtRGF0YS5lcnJvclN0cmluZyA9IG5ldyBUQ0hBUltlcnJvclN0cmlu
Z0NoYXJzXTsKKyAgICAgICAgICAgICAgICBJbnRlcm5ldEdldExhc3RSZXNwb25zZUluZm8oJnBs
YXRmb3JtRGF0YS5lcnJvciwgcGxhdGZvcm1EYXRhLmVycm9yU3RyaW5nLCAmZXJyb3JTdHJpbmdD
aGFycyk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgc2V0RXJyb3IoZXJyb3Ip
OworICAgICAgICBpZiAocGxhdGZvcm1EYXRhLmVycm9yU3RyaW5nKQorICAgICAgICAgICAgTE9H
KExvYWRpbmcsICJMb2FkIGVycm9yKCVpKTogJXNcbiIsIGVycm9yLCBwbGF0Zm9ybURhdGEuZXJy
b3JTdHJpbmcpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBMT0coTG9hZGluZywgIkxvYWQg
ZXJyb3IoJWkpXG4iLCBlcnJvcik7CisgICAgfQorICAgIAorICAgIGlmIChkLT5tX3NlY29uZGFy
eUhhbmRsZSkKKyAgICAgICAgSW50ZXJuZXRDbG9zZUhhbmRsZShkLT5tX3NlY29uZGFyeUhhbmRs
ZSk7CisgICAgSW50ZXJuZXRDbG9zZUhhbmRsZShkLT5tX3Jlc291cmNlSGFuZGxlKTsKKyAgICAK
KyAgICBjbGllbnQoKS0+cmVjZWl2ZWRBbGxEYXRhKHRoaXMsICZwbGF0Zm9ybURhdGEpOworICAg
IGNsaWVudCgpLT5yZWNlaXZlZEFsbERhdGEodGhpcyk7CisgICAgZGVsZXRlIHRoaXM7Cit9CisK
K3N0YXRpYyB2b2lkIF9fc3RkY2FsbCB0cmFuc2ZlckpvYlN0YXR1c0NhbGxiYWNrKEhJTlRFUk5F
VCBpbnRlcm5ldEhhbmRsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIERXT1JEX1BUUiBqb2JJZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIERXT1JEIGludGVybmV0U3RhdHVzLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTFBWT0lEIHN0YXR1c0luZm9ybWF0aW9u
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFdPUkQg
c3RhdHVzSW5mb3JtYXRpb25MZW5ndGgpCit7CisgICAgVUlOVCBtc2c7CisgICAgTFBBUkFNIGxQ
YXJhbTsKKwogICAgIHN3aXRjaCAoaW50ZXJuZXRTdGF0dXMpIHsKICAgICBjYXNlIElOVEVSTkVU
X1NUQVRVU19IQU5ETEVfQ1JFQVRFRDoKKyAgICAgICAgLy8gdGVsbCB0aGUgbWFpbiB0aHJlYWQg
YWJvdXQgdGhlIG5ld2x5IGNyZWF0ZWQgaGFuZGxlCisgICAgICAgIG1zZyA9IGtIYW5kbGVDcmVh
dGVkTWVzc2FnZTsKKyAgICAgICAgbFBhcmFtID0gKExQQVJBTSkgTFBJTlRFUk5FVF9BU1lOQ19S
RVNVTFQoc3RhdHVzSW5mb3JtYXRpb24pLT5kd1Jlc3VsdDsKKyAgICAgICAgYnJlYWs7CiAgICAg
Y2FzZSBJTlRFUk5FVF9TVEFUVVNfUkVRVUVTVF9DT01QTEVURToKLSAgICAgICAgSm9iTG9hZFN0
YXR1cyogam9iTG9hZFN0YXR1cyA9IG5ldyBKb2JMb2FkU3RhdHVzOwotICAgICAgICBqb2JMb2Fk
U3RhdHVzLT5pbnRlcm5ldFN0YXR1cyA9IGludGVybmV0U3RhdHVzOwotICAgICAgICBqb2JMb2Fk
U3RhdHVzLT5kd1Jlc3VsdCA9IExQSU5URVJORVRfQVNZTkNfUkVTVUxUKHN0YXR1c0luZm9ybWF0
aW9uKS0+ZHdSZXN1bHQ7Ci0gICAgICAgIFBvc3RNZXNzYWdlKHRyYW5zZmVySm9iV2luZG93SGFu
ZGxlLCBsb2FkU3RhdHVzTWVzc2FnZSwgKFdQQVJBTSl0aW1lcklkLCAoTFBBUkFNKWpvYkxvYWRT
dGF0dXMpOworICAgICAgICAvLyB0ZWxsIHRoZSBtYWluIHRocmVhZCB0aGF0IHRoZSByZXF1ZXN0
IGlzIGRvbmUKKyAgICAgICAgbXNnID0ga1JlcXVlc3RDb21wbGV0ZU1lc3NhZ2U7CisgICAgICAg
IGxQYXJhbSA9IDA7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSU5URVJORVRfU1RBVFVTX1JF
RElSRUNUOgorICAgICAgICAvLyB0ZWxsIHRoZSBtYWluIHRocmVhZCB0byBvYnNlcnZlIHRoaXMg
cmVkaXJlY3QgKEZJWE1FOiB3ZSBwcm9iYWJseQorICAgICAgICAvLyBuZWVkIHRvIGJsb2NrIHRo
ZSByZWRpcmVjdCBhdCB0aGlzIHBvaW50IHNvIHRoZSBhcHBsaWNhdGlvbiBjYW4KKyAgICAgICAg
Ly8gZGVjaWRlIHdoZXRoZXIgb3Igbm90IHRvIGZvbGxvdyB0aGUgcmVkaXJlY3QpCisgICAgICAg
IG1zZyA9IGtSZXF1ZXN0UmVkaXJlY3RlZE1lc3NhZ2U7CisgICAgICAgIGxQYXJhbSA9IChMUEFS
QU0pIG5ldyBTdHJpbmdJbXBsKChjb25zdCBVQ2hhciopIHN0YXR1c0luZm9ybWF0aW9uLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXNJbmZvcm1hdGlvbkxl
bmd0aCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSU5URVJORVRfU1RBVFVTX1VTRVJfSU5Q
VVRfUkVRVUlSRUQ6CisgICAgICAgIC8vIEZJWE1FOiBwcm9tcHQgdGhlIHVzZXIgaWYgbmVjZXNz
YXJ5CisgICAgICAgIFJlc3VtZVN1c3BlbmRlZERvd25sb2FkKGludGVybmV0SGFuZGxlLCAwKTsK
KyAgICBjYXNlIElOVEVSTkVUX1NUQVRVU19TVEFURV9DSEFOR0U6CisgICAgICAgIC8vIG1heSBu
ZWVkIHRvIGNhbGwgUmVzdW1lU3VzcGVuZGVkRG93bmxvYWQgaGVyZSBhcyB3ZWxsCisgICAgZGVm
YXVsdDoKKyAgICAgICAgcmV0dXJuOwogICAgIH0KKworICAgIFBvc3RNZXNzYWdlKHRyYW5zZmVy
Sm9iV2luZG93SGFuZGxlLCBtc2csIChXUEFSQU0pIGpvYklkLCBsUGFyYW0pOwogfQogCiBib29s
IFJlc291cmNlTG9hZGVyOjpzdGFydChEb2NMb2FkZXIqIGRvY0xvYWRlcikKSW5kZXg6IHBsYXRm
b3JtL1Jlc291cmNlTG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcGxhdGZvcm0vUmVzb3VyY2VMb2Fk
ZXIuaAkocmV2aXNpb24gMTY0OTUpCisrKyBwbGF0Zm9ybS9SZXNvdXJjZUxvYWRlci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC04Niw2ICs4Niw5IEBACiAKICNpZiBVU0UoV0lOSU5FVCkKICAgICB2b2lk
IGZpbGVMb2FkVGltZXIoVGltZXI8UmVzb3VyY2VMb2FkZXI+KiB0aW1lcik7CisgICAgdm9pZCBv
bkhhbmRsZUNyZWF0ZWQoTFBBUkFNKTsKKyAgICB2b2lkIG9uUmVxdWVzdFJlZGlyZWN0ZWQoTFBB
UkFNKTsKKyAgICB2b2lkIG9uUmVxdWVzdENvbXBsZXRlKExQQVJBTSk7CiAgICAgZnJpZW5kIHZv
aWQgX19zdGRjYWxsIHRyYW5zZmVySm9iU3RhdHVzQ2FsbGJhY2soSElOVEVSTkVULCBEV09SRF9Q
VFIsIERXT1JELCBMUFZPSUQsIERXT1JEKTsKICAgICBmcmllbmQgTFJFU1VMVCBfX3N0ZGNhbGwg
UmVzb3VyY2VMb2FkZXJXbmRQcm9jKEhXTkQsIHVuc2lnbmVkIG1lc3NhZ2UsIFdQQVJBTSwgTFBB
UkFNKTsKICNlbmRpZgpJbmRleDogQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIENoYW5nZUxvZwko
cmV2aXNpb24gMTY1MTUpCisrKyBDaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwy
MCBAQAorMjAwNi0wOS0yMSAgTW9yZ2FuTCA8YmVpZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRml4ZXMgYnVnIGh0dHA6Ly9i
dWd6aWxsYS5vcGVuZGFyd2luLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA5MjcKKyAgICAgICAgRml4
ZXMgYnVnIGh0dHA6Ly9idWd6aWxsYS5vcGVuZGFyd2luLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA3
NDQKKworICAgICAgICAqIHBsYXRmb3JtL1Jlc291cmNlTG9hZGVyLmg6CisgICAgICAgICogcGxh
dGZvcm0vd2luL1Jlc291cmNlTG9hZGVyV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oik6Cisg
ICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlclduZFByb2MpOgorICAgICAgICAoV2ViQ29y
ZTo6aW5pdGlhbGl6ZU9mZlNjcmVlblJlc291cmNlTG9hZGVyV2luZG93KToKKyAgICAgICAgKFdl
YkNvcmU6OlJlc291cmNlTG9hZGVyOjpvbkhhbmRsZUNyZWF0ZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVzb3VyY2VMb2FkZXI6Om9uUmVxdWVzdFJlZGlyZWN0ZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVzb3VyY2VMb2FkZXI6Om9uUmVxdWVzdENvbXBsZXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OnRyYW5zZmVySm9iU3RhdHVzQ2FsbGJhY2spOgorCiAyMDA2LTA5LTIxICBHZW9mZnJleSBHYXJl
biAgPGdnYXJlbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTWFjaWVqLgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>