<?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>78841</bug_id>
          
          <creation_ts>2012-02-16 14:06:57 -0800</creation_ts>
          <short_desc>WebDatabase.closeDatabaseImmediately can crash.</short_desc>
          <delta_ts>2012-02-17 12:58:56 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Michael Nordman">michaeln</reporter>
          <assigned_to name="Michael Nordman">michaeln</assigned_to>
          <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>558511</commentid>
    <comment_count>0</comment_count>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2012-02-16 14:06:57 -0800</bug_when>
    <thetext>WebDatabase.closeDatabaseImmediately can crash and currently leaves affected database instanced in an odd state where transaction() calls never complete. Fixing this is part of http://code.google.com/p/chromium/issues/detail?id=98939</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>558514</commentid>
    <comment_count>1</comment_count>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2012-02-16 14:11:57 -0800</bug_when>
    <thetext>Here&apos;s the chromium side CL waiting on this patch.
https://chromiumcodereview.appspot.com/9371008/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>558525</commentid>
    <comment_count>2</comment_count>
      <attachid>127443</attachid>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2012-02-16 14:27:01 -0800</bug_when>
    <thetext>Created attachment 127443
nuke</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>558563</commentid>
    <comment_count>3</comment_count>
      <attachid>127443</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2012-02-16 15:00:24 -0800</bug_when>
    <thetext>Comment on attachment 127443
nuke

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

&gt; Source/WebCore/storage/Database.cpp:289
&gt; +            scriptExecutionContext()-&gt;postTask(createCallbackTask(&amp;callTransactionErrorCallback, errorCallback, error));

error.release()

&gt; Source/WebCore/storage/chromium/DatabaseTrackerChromium.cpp:239
&gt; +    // First we have to confirm the &apos;database&apos; is still in our colleciton.

colleciton sp</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>558581</commentid>
    <comment_count>4</comment_count>
      <attachid>127454</attachid>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2012-02-16 15:13:58 -0800</bug_when>
    <thetext>Created attachment 127454
nuke

made both changes and added additional comment in the change log about a ref cycle that no longer gets created</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>558684</commentid>
    <comment_count>5</comment_count>
      <attachid>127454</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-16 16:52:48 -0800</bug_when>
    <thetext>Comment on attachment 127454
nuke

Rejecting attachment 127454 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 2

Last 500 characters of output:

patching file Source/WebCore/storage/chromium/DatabaseTrackerChromium.cpp
patching file Source/Webkit/chromium/ChangeLog
Hunk #1 succeeded at 1 with fuzz 3.
patching file Source/Webkit/chromium/src/WebDatabase.cpp
Hunk #1 FAILED at 122.
1 out of 1 hunk FAILED -- saving rejects to file Source/Webkit/chromium/src/WebDatabase.cpp.rej

Failed to run &quot;[u&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/svn-apply&apos;, u&apos;--force&apos;, u&apos;--reviewer&apos;, u&apos;David Levin&apos;]&quot; exit_code: 1 cwd: /mnt/git/webkit-commit-queue/

Full output: http://queues.webkit.org/results/11542164</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>558813</commentid>
    <comment_count>6</comment_count>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2012-02-16 19:19:54 -0800</bug_when>
    <thetext>Committed r108015: &lt;http://trac.webkit.org/changeset/108015&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>127443</attachid>
            <date>2012-02-16 14:27:01 -0800</date>
            <delta_ts>2012-02-17 12:58:34 -0800</delta_ts>
            <desc>nuke</desc>
            <filename>nuke.txt</filename>
            <type>text/plain</type>
            <size>18227</size>
            <attacher name="Michael Nordman">michaeln</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwNzk2NikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYwIEBACisyMDEyLTAyLTE1ICBNaWNoYWVs
IE5vcmRtYW4gIDxtaWNoYWVsbkBnb29nbGUuY29tPgorCisgICAgICAgIFtjaHJvbWl1bV0gRml4
IGJ1Z3MgaW4gdGhlIGltcGxlbWVudGF0aW9uIG9mIFdlYkRhdGFiYXNlOjpjbG9zZURhdGFiYXNl
SW1tZWRpYXRlbHkuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD03ODg0MQorCisgICAgICAgIFdlYkRhdGFiYXNlIG5vdyBkZWxlZ2F0ZXMgdGhpcyBmdW5j
dGlvbiBlbnRpcmVseSB0byBEYXRhYmFzZVRyYWNrZXIsCisgICAgICAgIGEgbmV3IGNsb3NlRGF0
YWJhc2VzSW1tZWRpYXRlbHkoKSBoYXMgYmVlbiBhZGRlZCBmb3IgdGhhdCBwdXJwb3NlLiBUaGF0
CisgICAgICAgIG1ldGhvZCBwb3N0cyB0YXNrcyB0byB0aGUgYXBwcm9waWF0ZSBjb250ZXh0IHRo
cmVhZCBmb3IgZWFjaCBkYXRhYmFzZQorICAgICAgICBpbnN0YW5jZSB0aGF0IHNob3VsZCBiZSBj
bG9zZWQgaW1tZWRpYXRlbHkuCisKKyAgICAgICAgVGhlIERhdGFiYXNlVHJhY2tlciBnZXRBbGxP
cGVuRGF0YWJhc2VzKCkgbWV0aG9kIGhhcyBiZWVuIHJlbW92ZWQgZnJvbQorICAgICAgICB0aGUg
Y2hyb21pdW0gaW1wbCBiZWNhdXNlIGl0J3MgdW5zYWZlLCByZWZzIGNhbm5vdCBiZSBzYWZlbHkg
dGFrZW4gb24KKyAgICAgICAgQWJzdHJhY3REYXRhYmFzZSBpbnN0YW5jZXMgaW4gdGhlIHRyYWNr
ZXIncyBjb2xsZWN0aW9uIG9mIG9wZW4gZGF0YWJhc2VzLgorCisgICAgICAgIEFkZCBhIG1lc3Nh
Z2UgdG8gdGhlIGNvbnNvbGUgbG9nIHdoZW4gYSBkYXRhYmFzZSBpcyBmb3JjaWJseSBjbG9zZWQu
CisKKyAgICAgICAgVHJhbnNhY3Rpb25zIGluaXRpYXRlZCBvbiBhIGRhdGFiYXNlIGluc3RhbmNl
IHRoYXQgaGFzIGJlZW4gZm9yY2libHkKKyAgICAgICAgY2xvc2VkIGNvbXBsZXRlIHdpdGggYSB0
cmFuc2FjdGlvbiBlcnJvciBjYWxsYmFjay4KKyAgICAgICAgCisgICAgICAgIFRoaXMgaXMgcGFy
dCBvZiByZXNvbHZpbmcgaHR0cDovL2NyYnVnLmNvbS85ODkzOQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyBsYXlvdXQgdGVzdHMsIHRoZXJl
IGlzIG5vIGNvbW1vbiBjb2RlIHdheSB0byBjbG9zZUltbWVkaWF0ZWx5LgorICAgICAgICBXZSBo
YXZlIGNvdmVyYWdlIGZvciB0aGlzIGluIHB5IGF1dG9tYXRpb24gdGVzdHMuCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuY3BwOgorICAgICAgICBUaGUgY2xvc2VJbW1l
ZGlhdGVseSBjb2RlIHBhdGggY2FuIHJlc3VsdCBpbiB0aGUgdW5kZXJseWluZyBzcWxpdGUzIGhh
bmRsZSBiZWluZworICAgICAgICBjbG9zZWQgZWFybGllciB0aGFuIHVzdWFsIGFuZCB0cmlwIHNv
bWUgYXNzZXJ0aW9ucy4gVXBkYXRlZCB0aGUgYXNzZXJ0aW9ucyB0byBubworICAgICAgICBsb25n
ZXIgdHJpZ2dlciBpbiB0aGlzIGVhcmx5IGNsb3NlIGNhc2UuCisgICAgICAgIChXZWJDb3JlOjpT
UUxpdGVEYXRhYmFzZTo6Y2xvc2UpOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2U6
OnNldE1heGltdW1TaXplKToKKyAgICAgICAgKiBwbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2Uu
aDoKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlOjpzcWxpdGUzSGFuZGxlKToKKwor
ICAgICAgICAqIHN0b3JhZ2UvRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJh
c2U6OmNsb3NlSW1tZWRpYXRlbHkpOiBNb2RpZmllZCB0byBvbmx5IGJlIGNhbGxlZCBvbiB0aGUg
Y29udGV4dCB0aHJlYWQgYW5kIHRvIGxvZyBhIGNvbnNvbGUgbWVzc2FnZS4KKyAgICAgICAgKFdl
YkNvcmU6OkRhdGFiYXNlOjpjaGFuZ2VWZXJzaW9uKTogVXNlIHRoZSBwcml2YXRlIHJ1blRyYW5z
YWN0aW9uIGhlbHBlciBtZXRob2QuCisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZTo6dHJhbnNh
Y3Rpb24pOiBQYXNzIGEgbmV3IHBhcmFtIHJlcXVpcmVkIGJ5IHRoZSBydW5UcmFuc2FjdGlvbiBo
ZWxwZXIuCisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZTo6cmVhZFRyYW5zYWN0aW9uKTogRGl0
dG8uCisgICAgICAgIChXZWJDb3JlOjpjYWxsVHJhbnNhY3Rpb25FcnJvckNhbGxiYWNrKTogVXNl
ZCB0byBkZWZlciBpbnZvY2F0aW9uIG9mIHRoZSBlcnJvciBjYWxsYmFjay4KKyAgICAgICAgKFdl
YkNvcmU6OkRhdGFiYXNlOjpydW5UcmFuc2FjdGlvbik6IE1vZGlmaWVkIHRvIGRldGVjdCB3aGVu
IHRoZSBkYXRhYmFzZSBoYXMgYmVlbiBjbG9zZWQsIGFuZAorICAgICAgICB0byBpbnZva2UgdGhl
IGVycm9yIGNhbGxiYWNrIGluIHRoYXQgY2FzZS4KKyAgICAgICAgKiBzdG9yYWdlL0RhdGFiYXNl
Lmg6CisgICAgICAgICogc3RvcmFnZS9EYXRhYmFzZVN5bmMuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RGF0YWJhc2VTeW5jOjpjbG9zZUltbWVkaWF0ZWx5KTogTW9kaWZpZWQgdG8gb25seSBiZSBj
YWxsZWQgb24gdGhlIGNvbnRleHQgdGhyZWFkIGFuZCB0byBsb2cgYSBjb25zb2xlIG1lc3NhZ2Uu
CisgICAgICAgICogc3RvcmFnZS9EYXRhYmFzZVRyYWNrZXIuaDoKKworICAgICAgICAqIHN0b3Jh
Z2UvY2hyb21pdW0vRGF0YWJhc2VUcmFja2VyQ2hyb21pdW0uY3BwOgorICAgICAgICBQb3N0cyB0
YXNrcyB0byB0aGUgYXBwcm9waWF0ZSBjb250ZXh0IHRocmVhZCBmb3IgZXhlY3V0aW9uIHdpdGhv
dXQgYnVtcGluZyBBYnN0cmFjdERhdGFiYXNlIHJlZmNvdW50cy4KKyAgICAgICAgKERhdGFiYXNl
VHJhY2tlcjo6Q2xvc2VPbmVEYXRhYmFzZUltbWVkaWF0ZWx5VGFzayk6CisgICAgICAgIChXZWJD
b3JlOjpEYXRhYmFzZVRyYWNrZXI6OkNsb3NlT25lRGF0YWJhc2VJbW1lZGlhdGVseVRhc2s6OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6OkNsb3NlT25lRGF0YWJh
c2VJbW1lZGlhdGVseVRhc2s6OnBlcmZvcm1UYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFi
YXNlVHJhY2tlcjo6Q2xvc2VPbmVEYXRhYmFzZUltbWVkaWF0ZWx5VGFzazo6Q2xvc2VPbmVEYXRh
YmFzZUltbWVkaWF0ZWx5VGFzayk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6
OmNsb3NlRGF0YWJhc2VzSW1tZWRpYXRlbHkpOiAKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNl
VHJhY2tlcjo6Y2xvc2VPbmVEYXRhYmFzZUltbWVkaWF0ZWx5KToKKwogMjAxMi0wMi0xNSAgTWFy
ayBSb3dlICA8bXJvd2VAYXBwbGUuY29tPgogCiAgICAgICAgIE5QTl9HZXRWYWx1ZUZvclVSTCAv
IE5QTlVSTFZQcm94eSByZXR1cm5zIERJUkVDVCB3aGVuIHByb3h5IGNvbmZpZ3VyZWQgdmlhIFBB
QwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2Uu
Y3BwCShyZXZpc2lvbiAxMDc5NjYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FM
aXRlRGF0YWJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDIsNyArMTAyLDcgQEAgYm9vbCBT
UUxpdGVEYXRhYmFzZTo6b3Blbihjb25zdCBTdHJpbmcmCiB2b2lkIFNRTGl0ZURhdGFiYXNlOjpj
bG9zZSgpCiB7CiAgICAgaWYgKG1fZGIpIHsKLSAgICAgICAgLy8gRklYTUU6IFRoaXMgaXMgYmVp
bmcgY2FsbGVkIG9uIHRoZW1haW4gdGhyZWFkIGR1cmluZyBKUyBHQy4gPHJkYXI6Ly9wcm9ibGVt
LzU3Mzk4MTg+CisgICAgICAgIC8vIEZJWE1FOiBUaGlzIGlzIGJlaW5nIGNhbGxlZCBvbiB0aGUg
bWFpbiB0aHJlYWQgZHVyaW5nIEpTIEdDLiA8cmRhcjovL3Byb2JsZW0vNTczOTgxOD4KICAgICAg
ICAgLy8gQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX29wZW5pbmdUaHJlYWQpOwogICAgICAg
ICBzcWxpdGUzKiBkYiA9IG1fZGI7CiAgICAgICAgIHsKQEAgLTE2Nyw3ICsxNjcsNyBAQCB2b2lk
IFNRTGl0ZURhdGFiYXNlOjpzZXRNYXhpbXVtU2l6ZShpbnQ2CiAgICAgCiAgICAgaW50IGN1cnJl
bnRQYWdlU2l6ZSA9IHBhZ2VTaXplKCk7CiAKLSAgICBBU1NFUlQoY3VycmVudFBhZ2VTaXplKTsK
KyAgICBBU1NFUlQoY3VycmVudFBhZ2VTaXplIHx8ICFtX2RiKTsKICAgICBpbnQ2NF90IG5ld01h
eFBhZ2VDb3VudCA9IGN1cnJlbnRQYWdlU2l6ZSA/IHNpemUgLyBjdXJyZW50UGFnZVNpemUgOiAw
OwogICAgIAogICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX2F1dGhvcml6ZXJMb2NrKTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5oCShyZXZpc2lv
biAxMDc5NjYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2Uu
aAkod29ya2luZyBjb3B5KQpAQCAtMTA0LDcgKzEwNCw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBj
aGFyKiBsYXN0RXJyb3JNc2coKTsKICAgICAKICAgICBzcWxpdGUzKiBzcWxpdGUzSGFuZGxlKCkg
Y29uc3QgewotICAgICAgICBBU1NFUlQobV9zaGFyYWJsZSB8fCBjdXJyZW50VGhyZWFkKCkgPT0g
bV9vcGVuaW5nVGhyZWFkKTsKKyAgICAgICAgQVNTRVJUKG1fc2hhcmFibGUgfHwgY3VycmVudFRo
cmVhZCgpID09IG1fb3BlbmluZ1RocmVhZCB8fCAhbV9kYik7CiAgICAgICAgIHJldHVybiBtX2Ri
OwogICAgIH0KICAgICAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2UuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2UuY3BwCShyZXZp
c2lvbiAxMDc5NjYpCisrKyBTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0RhdGFiYXNlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzIsNiArMzIsNyBAQAogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCiAK
ICNpbmNsdWRlICJDaGFuZ2VWZXJzaW9uV3JhcHBlci5oIgorI2luY2x1ZGUgIkNyb3NzVGhyZWFk
VGFzay5oIgogI2luY2x1ZGUgIkRhdGFiYXNlQ2FsbGJhY2suaCIKICNpbmNsdWRlICJEYXRhYmFz
ZVRhc2suaCIKICNpbmNsdWRlICJEYXRhYmFzZVRocmVhZC5oIgpAQCAtNDEsNiArNDIsNyBAQAog
I2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1
ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJTUUxFcnJvci5oIgogI2luY2x1ZGUgIlNRTFRyYW5zYWN0
aW9uQ2FsbGJhY2suaCIKICNpbmNsdWRlICJTUUxUcmFuc2FjdGlvbkNsaWVudC5oIgogI2luY2x1
ZGUgIlNRTFRyYW5zYWN0aW9uQ29vcmRpbmF0b3IuaCIKQEAgLTIzMCw5ICsyMzIsMTIgQEAgdm9p
ZCBEYXRhYmFzZTo6Y2xvc2UoKQogCiB2b2lkIERhdGFiYXNlOjpjbG9zZUltbWVkaWF0ZWx5KCkK
IHsKKyAgICBBU1NFUlQobV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5pc0NvbnRleHRUaHJlYWQo
KSk7CiAgICAgRGF0YWJhc2VUaHJlYWQqIGRhdGFiYXNlVGhyZWFkID0gc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpLT5kYXRhYmFzZVRocmVhZCgpOwotICAgIGlmIChkYXRhYmFzZVRocmVhZCAmJiAh
ZGF0YWJhc2VUaHJlYWQtPnRlcm1pbmF0aW9uUmVxdWVzdGVkKCkgJiYgb3BlbmVkKCkpCisgICAg
aWYgKGRhdGFiYXNlVGhyZWFkICYmICFkYXRhYmFzZVRocmVhZC0+dGVybWluYXRpb25SZXF1ZXN0
ZWQoKSAmJiBvcGVuZWQoKSkgeworICAgICAgICBsb2dFcnJvck1lc3NhZ2UoImZvcmNpYmx5IGNs
b3NpbmcgZGF0YWJhc2UiKTsKICAgICAgICAgZGF0YWJhc2VUaHJlYWQtPnNjaGVkdWxlSW1tZWRp
YXRlVGFzayhEYXRhYmFzZUNsb3NlVGFzazo6Y3JlYXRlKHRoaXMsIDApKTsKKyAgICB9CiB9CiAK
IHVuc2lnbmVkIGxvbmcgbG9uZyBEYXRhYmFzZTo6bWF4aW11bVNpemUoKSBjb25zdApAQCAtMjU2
LDMwICsyNjEsMzYgQEAgdm9pZCBEYXRhYmFzZTo6Y2hhbmdlVmVyc2lvbihjb25zdCBTdHJpbgog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXNzUmVmUHRyPFNRTFRyYW5zYWN0aW9uQ2Fs
bGJhY2s+IGNhbGxiYWNrLCBQYXNzUmVmUHRyPFNRTFRyYW5zYWN0aW9uRXJyb3JDYWxsYmFjaz4g
ZXJyb3JDYWxsYmFjaywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFzc1JlZlB0cjxW
b2lkQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaykKIHsKLSAgICBSZWZQdHI8U1FMVHJhbnNhY3Rp
b24+IHRyYW5zYWN0aW9uID0KLSAgICAgICAgU1FMVHJhbnNhY3Rpb246OmNyZWF0ZSh0aGlzLCBj
YWxsYmFjaywgZXJyb3JDYWxsYmFjaywgc3VjY2Vzc0NhbGxiYWNrLCBDaGFuZ2VWZXJzaW9uV3Jh
cHBlcjo6Y3JlYXRlKG9sZFZlcnNpb24sIG5ld1ZlcnNpb24pKTsKLSAgICBNdXRleExvY2tlciBs
b2NrZXIobV90cmFuc2FjdGlvbkluUHJvZ3Jlc3NNdXRleCk7Ci0gICAgbV90cmFuc2FjdGlvblF1
ZXVlLmFwcGVuZCh0cmFuc2FjdGlvbi5yZWxlYXNlKCkpOwotICAgIGlmICghbV90cmFuc2FjdGlv
bkluUHJvZ3Jlc3MpCi0gICAgICAgIHNjaGVkdWxlVHJhbnNhY3Rpb24oKTsKKyAgICBydW5UcmFu
c2FjdGlvbihjYWxsYmFjaywgZXJyb3JDYWxsYmFjaywgc3VjY2Vzc0NhbGxiYWNrLCBDaGFuZ2VW
ZXJzaW9uV3JhcHBlcjo6Y3JlYXRlKG9sZFZlcnNpb24sIG5ld1ZlcnNpb24pLCBmYWxzZSk7CiB9
CiAKIHZvaWQgRGF0YWJhc2U6OnRyYW5zYWN0aW9uKFBhc3NSZWZQdHI8U1FMVHJhbnNhY3Rpb25D
YWxsYmFjaz4gY2FsbGJhY2ssIFBhc3NSZWZQdHI8U1FMVHJhbnNhY3Rpb25FcnJvckNhbGxiYWNr
PiBlcnJvckNhbGxiYWNrLCBQYXNzUmVmUHRyPFZvaWRDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNr
KQogewotICAgIHJ1blRyYW5zYWN0aW9uKGNhbGxiYWNrLCBlcnJvckNhbGxiYWNrLCBzdWNjZXNz
Q2FsbGJhY2ssIGZhbHNlKTsKKyAgICBydW5UcmFuc2FjdGlvbihjYWxsYmFjaywgZXJyb3JDYWxs
YmFjaywgc3VjY2Vzc0NhbGxiYWNrLCAwLCBmYWxzZSk7CiB9CiAKIHZvaWQgRGF0YWJhc2U6OnJl
YWRUcmFuc2FjdGlvbihQYXNzUmVmUHRyPFNRTFRyYW5zYWN0aW9uQ2FsbGJhY2s+IGNhbGxiYWNr
LCBQYXNzUmVmUHRyPFNRTFRyYW5zYWN0aW9uRXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaywg
UGFzc1JlZlB0cjxWb2lkQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaykKIHsKLSAgICBydW5UcmFu
c2FjdGlvbihjYWxsYmFjaywgZXJyb3JDYWxsYmFjaywgc3VjY2Vzc0NhbGxiYWNrLCB0cnVlKTsK
KyAgICBydW5UcmFuc2FjdGlvbihjYWxsYmFjaywgZXJyb3JDYWxsYmFjaywgc3VjY2Vzc0NhbGxi
YWNrLCAwLCB0cnVlKTsKK30KKworc3RhdGljIHZvaWQgY2FsbFRyYW5zYWN0aW9uRXJyb3JDYWxs
YmFjayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxTUUxUcmFuc2FjdGlvbkVy
cm9yQ2FsbGJhY2s+IGNhbGxiYWNrLCBQYXNzUmVmUHRyPFNRTEVycm9yPiBlcnJvcikKK3sKKyAg
ICBjYWxsYmFjay0+aGFuZGxlRXZlbnQoZXJyb3IuZ2V0KCkpOwogfQogCiB2b2lkIERhdGFiYXNl
OjpydW5UcmFuc2FjdGlvbihQYXNzUmVmUHRyPFNRTFRyYW5zYWN0aW9uQ2FsbGJhY2s+IGNhbGxi
YWNrLCBQYXNzUmVmUHRyPFNRTFRyYW5zYWN0aW9uRXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFj
aywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhc3NSZWZQdHI8Vm9pZENhbGxiYWNr
PiBzdWNjZXNzQ2FsbGJhY2ssIGJvb2wgcmVhZE9ubHkpCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBQYXNzUmVmUHRyPFZvaWRDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVm
UHRyPFNRTFRyYW5zYWN0aW9uV3JhcHBlcj4gd3JhcHBlciwgYm9vbCByZWFkT25seSkKIHsKLSAg
ICBSZWZQdHI8U1FMVHJhbnNhY3Rpb24+IHRyYW5zYWN0aW9uID0KLSAgICAgICAgU1FMVHJhbnNh
Y3Rpb246OmNyZWF0ZSh0aGlzLCBjYWxsYmFjaywgZXJyb3JDYWxsYmFjaywgc3VjY2Vzc0NhbGxi
YWNrLCAwLCByZWFkT25seSk7CiAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fdHJhbnNhY3Rpb25J
blByb2dyZXNzTXV0ZXgpOworICAgIGlmICghbV9pc1RyYW5zYWN0aW9uUXVldWVFbmFibGVkKSB7
CisgICAgICAgIGlmIChlcnJvckNhbGxiYWNrKSB7CisgICAgICAgICAgICBSZWZQdHI8U1FMRXJy
b3I+IGVycm9yID0gU1FMRXJyb3I6OmNyZWF0ZShTUUxFcnJvcjo6VU5LTk9XTl9FUlIsICJkYXRh
YmFzZSBoYXMgYmVlbiBjbG9zZWQiKTsKKyAgICAgICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKS0+cG9zdFRhc2soY3JlYXRlQ2FsbGJhY2tUYXNrKCZjYWxsVHJhbnNhY3Rpb25FcnJvckNh
bGxiYWNrLCBlcnJvckNhbGxiYWNrLCBlcnJvcikpOworICAgICAgICB9CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisgICAgUmVmUHRyPFNRTFRyYW5zYWN0aW9uPiB0cmFuc2FjdGlvbiA9IFNRTFRy
YW5zYWN0aW9uOjpjcmVhdGUodGhpcywgY2FsbGJhY2ssIGVycm9yQ2FsbGJhY2ssIHN1Y2Nlc3ND
YWxsYmFjaywgd3JhcHBlciwgcmVhZE9ubHkpOwogICAgIG1fdHJhbnNhY3Rpb25RdWV1ZS5hcHBl
bmQodHJhbnNhY3Rpb24ucmVsZWFzZSgpKTsKICAgICBpZiAoIW1fdHJhbnNhY3Rpb25JblByb2dy
ZXNzKQogICAgICAgICBzY2hlZHVsZVRyYW5zYWN0aW9uKCk7CkBAIC0yOTcsOSArMzA4LDggQEAg
dm9pZCBEYXRhYmFzZTo6c2NoZWR1bGVUcmFuc2FjdGlvbigpCiAgICAgQVNTRVJUKCFtX3RyYW5z
YWN0aW9uSW5Qcm9ncmVzc011dGV4LnRyeUxvY2soKSk7IC8vIExvY2tlZCBieSBjYWxsZXIuCiAg
ICAgUmVmUHRyPFNRTFRyYW5zYWN0aW9uPiB0cmFuc2FjdGlvbjsKIAotICAgIGlmIChtX2lzVHJh
bnNhY3Rpb25RdWV1ZUVuYWJsZWQgJiYgIW1fdHJhbnNhY3Rpb25RdWV1ZS5pc0VtcHR5KCkpIHsK
KyAgICBpZiAobV9pc1RyYW5zYWN0aW9uUXVldWVFbmFibGVkICYmICFtX3RyYW5zYWN0aW9uUXVl
dWUuaXNFbXB0eSgpKQogICAgICAgICB0cmFuc2FjdGlvbiA9IG1fdHJhbnNhY3Rpb25RdWV1ZS50
YWtlRmlyc3QoKTsKLSAgICB9CiAKICAgICBpZiAodHJhbnNhY3Rpb24gJiYgbV9zY3JpcHRFeGVj
dXRpb25Db250ZXh0LT5kYXRhYmFzZVRocmVhZCgpKSB7CiAgICAgICAgIE93blB0cjxEYXRhYmFz
ZVRyYW5zYWN0aW9uVGFzaz4gdGFzayA9IERhdGFiYXNlVHJhbnNhY3Rpb25UYXNrOjpjcmVhdGUo
dHJhbnNhY3Rpb24pOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2UuaAkocmV2aXNpb24g
MTA3OTY2KQorKysgU291cmNlL1dlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC00Nyw2ICs0Nyw3IEBAIGNsYXNzIFNRTFRyYW5zYWN0aW9uQ2FsbGJhY2s7CiBjbGFz
cyBTUUxUcmFuc2FjdGlvbkNsaWVudDsKIGNsYXNzIFNRTFRyYW5zYWN0aW9uQ29vcmRpbmF0b3I7
CiBjbGFzcyBTUUxUcmFuc2FjdGlvbkVycm9yQ2FsbGJhY2s7CitjbGFzcyBTUUxUcmFuc2FjdGlv
bldyYXBwZXI7CiBjbGFzcyBWb2lkQ2FsbGJhY2s7CiAKIHR5cGVkZWYgaW50IEV4Y2VwdGlvbkNv
ZGU7CkBAIC05Myw3ICs5NCw3IEBAIHByaXZhdGU6CiAgICAgRGF0YWJhc2UoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBleHBlY3RlZFZl
cnNpb24sCiAgICAgICAgICAgICAgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgdW5zaWduZWQg
bG9uZyBlc3RpbWF0ZWRTaXplKTsKICAgICB2b2lkIHJ1blRyYW5zYWN0aW9uKFBhc3NSZWZQdHI8
U1FMVHJhbnNhY3Rpb25DYWxsYmFjaz4sIFBhc3NSZWZQdHI8U1FMVHJhbnNhY3Rpb25FcnJvckNh
bGxiYWNrPiwKLSAgICAgICAgICAgICAgICAgICAgICAgIFBhc3NSZWZQdHI8Vm9pZENhbGxiYWNr
PiBzdWNjZXNzQ2FsbGJhY2ssIGJvb2wgcmVhZE9ubHkpOworICAgICAgICAgICAgICAgICAgICAg
ICAgUGFzc1JlZlB0cjxWb2lkQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxT
UUxUcmFuc2FjdGlvbldyYXBwZXI+LCBib29sIHJlYWRPbmx5KTsKIAogICAgIGJvb2wgb3BlbkFu
ZFZlcmlmeVZlcnNpb24oYm9vbCBzZXRWZXJzaW9uSW5OZXdEYXRhYmFzZSwgRXhjZXB0aW9uQ29k
ZSYsIFN0cmluZyYgZXJyb3JNZXNzYWdlKTsKICAgICB2aXJ0dWFsIGJvb2wgcGVyZm9ybU9wZW5B
bmRWZXJpZnkoYm9vbCBzZXRWZXJzaW9uSW5OZXdEYXRhYmFzZSwgRXhjZXB0aW9uQ29kZSYsIFN0
cmluZyYgZXJyb3JNZXNzYWdlKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvRGF0YWJh
c2VTeW5jLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0RhdGFiYXNl
U3luYy5jcHAJKHJldmlzaW9uIDEwNzk2NikKKysrIFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvRGF0
YWJhc2VTeW5jLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjA1LDE2ICsyMDUsMTMgQEAgcHJpdmF0
ZToKIAogdm9pZCBEYXRhYmFzZVN5bmM6OmNsb3NlSW1tZWRpYXRlbHkoKQogewotICAgIGlmICgh
bV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5pc0NvbnRleHRUaHJlYWQoKSkgewotICAgICAgICBt
X3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnBvc3RUYXNrKENsb3NlU3luY0RhdGFiYXNlT25Db250
ZXh0VGhyZWFkVGFzazo6Y3JlYXRlKHRoaXMpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAg
ICBBU1NFUlQobV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5pc0NvbnRleHRUaHJlYWQoKSk7CiAK
ICAgICBpZiAoIW9wZW5lZCgpKQogICAgICAgICByZXR1cm47CiAKKyAgICBsb2dFcnJvck1lc3Nh
Z2UoImZvcmNpYmx5IGNsb3NpbmcgZGF0YWJhc2UiKTsKICAgICBEYXRhYmFzZVRyYWNrZXI6OnRy
YWNrZXIoKS5yZW1vdmVPcGVuRGF0YWJhc2UodGhpcyk7Ci0KICAgICBjbG9zZURhdGFiYXNlKCk7
CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2VUcmFja2VyLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZVRyYWNrZXIuaAkocmV2
aXNpb24gMTA3OTY2KQorKysgU291cmNlL1dlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZVRyYWNrZXIu
aAkod29ya2luZyBjb3B5KQpAQCAtMTczLDEyICsxNzMsMTUgQEAgcHJpdmF0ZToKICAgICBzdGF0
aWMgdm9pZCBub3RpZnlEYXRhYmFzZXNDaGFuZ2VkKHZvaWQqKTsKICNlbHNlCiBwdWJsaWM6Ci0g
ICAgdm9pZCBnZXRPcGVuRGF0YWJhc2VzKGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllciwg
Y29uc3QgU3RyaW5nJiBuYW1lLCBIYXNoU2V0PFJlZlB0cjxBYnN0cmFjdERhdGFiYXNlPiA+KiBk
YXRhYmFzZXMpOworICAgIHZvaWQgY2xvc2VEYXRhYmFzZXNJbW1lZGlhdGVseShjb25zdCBTdHJp
bmcmIG9yaWdpbklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbmFtZSk7CiAKIHByaXZhdGU6CiAg
ICAgdHlwZWRlZiBIYXNoU2V0PEFic3RyYWN0RGF0YWJhc2UqPiBEYXRhYmFzZVNldDsKICAgICB0
eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBEYXRhYmFzZVNldCo+IERhdGFiYXNlTmFtZU1hcDsKICAg
ICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBEYXRhYmFzZU5hbWVNYXAqPiBEYXRhYmFzZU9yaWdp
bk1hcDsKKyAgICBjbGFzcyBDbG9zZU9uZURhdGFiYXNlSW1tZWRpYXRlbHlUYXNrOworCisgICAg
dm9pZCBjbG9zZU9uZURhdGFiYXNlSW1tZWRpYXRlbHkoY29uc3QgU3RyaW5nJiBvcmlnaW5JZGVu
dGlmaWVyLCBjb25zdCBTdHJpbmcmIG5hbWUsIEFic3RyYWN0RGF0YWJhc2UqIGRhdGFiYXNlKTsK
IAogICAgIE11dGV4IG1fb3BlbkRhdGFiYXNlTWFwR3VhcmQ7CiAgICAgbXV0YWJsZSBPd25QdHI8
RGF0YWJhc2VPcmlnaW5NYXA+IG1fb3BlbkRhdGFiYXNlTWFwOwpJbmRleDogU291cmNlL1dlYkNv
cmUvc3RvcmFnZS9jaHJvbWl1bS9EYXRhYmFzZVRyYWNrZXJDaHJvbWl1bS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvc3RvcmFnZS9jaHJvbWl1bS9EYXRhYmFzZVRyYWNrZXJDaHJv
bWl1bS5jcHAJKHJldmlzaW9uIDEwNzk2NikKKysrIFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvY2hy
b21pdW0vRGF0YWJhc2VUcmFja2VyQ2hyb21pdW0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTcs
MjkgKzE1Nyw2IEBAIHZvaWQgRGF0YWJhc2VUcmFja2VyOjpyZW1vdmVPcGVuRGF0YWJhc2UKICAg
ICAgICAgRGF0YWJhc2VPYnNlcnZlcjo6ZGF0YWJhc2VDbG9zZWQoZGF0YWJhc2UpOwogfQogCi12
b2lkIERhdGFiYXNlVHJhY2tlcjo6Z2V0T3BlbkRhdGFiYXNlcyhTZWN1cml0eU9yaWdpbiogb3Jp
Z2luLCBjb25zdCBTdHJpbmcmIG5hbWUsIEhhc2hTZXQ8UmVmUHRyPEFic3RyYWN0RGF0YWJhc2U+
ID4qIGRhdGFiYXNlcykKLXsKLSAgICBnZXRPcGVuRGF0YWJhc2VzKG9yaWdpbi0+ZGF0YWJhc2VJ
ZGVudGlmaWVyKCksIG5hbWUsIGRhdGFiYXNlcyk7Ci19Ci0KLXZvaWQgRGF0YWJhc2VUcmFja2Vy
OjpnZXRPcGVuRGF0YWJhc2VzKGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllciwgY29uc3Qg
U3RyaW5nJiBuYW1lLCBIYXNoU2V0PFJlZlB0cjxBYnN0cmFjdERhdGFiYXNlPiA+KiBkYXRhYmFz
ZXMpCi17Ci0gICAgTXV0ZXhMb2NrZXIgb3BlbkRhdGFiYXNlTWFwTG9jayhtX29wZW5EYXRhYmFz
ZU1hcEd1YXJkKTsKLSAgICBpZiAoIW1fb3BlbkRhdGFiYXNlTWFwKQotICAgICAgICByZXR1cm47
Ci0KLSAgICBEYXRhYmFzZU5hbWVNYXAqIG5hbWVNYXAgPSBtX29wZW5EYXRhYmFzZU1hcC0+Z2V0
KG9yaWdpbklkZW50aWZpZXIpOwotICAgIGlmICghbmFtZU1hcCkKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgRGF0YWJhc2VTZXQqIGRhdGFiYXNlU2V0ID0gbmFtZU1hcC0+Z2V0KG5hbWUpOwotICAg
IGlmICghZGF0YWJhc2VTZXQpCi0gICAgICAgIHJldHVybjsKLQotICAgIGZvciAoRGF0YWJhc2VT
ZXQ6Oml0ZXJhdG9yIGl0ID0gZGF0YWJhc2VTZXQtPmJlZ2luKCk7IGl0ICE9IGRhdGFiYXNlU2V0
LT5lbmQoKTsgKytpdCkKLSAgICAgICAgZGF0YWJhc2VzLT5hZGQoKml0KTsKLX0KLQogdW5zaWdu
ZWQgbG9uZyBsb25nIERhdGFiYXNlVHJhY2tlcjo6Z2V0TWF4U2l6ZUZvckRhdGFiYXNlKGNvbnN0
IEFic3RyYWN0RGF0YWJhc2UqIGRhdGFiYXNlKQogewogICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBz
cGFjZUF2YWlsYWJsZSA9IDA7CkBAIC0yMTIsNiArMTg5LDc2IEBAIHZvaWQgRGF0YWJhc2VUcmFj
a2VyOjppbnRlcnJ1cHRBbGxEYXRhYmEKICAgICB9CiB9CiAKK2NsYXNzIERhdGFiYXNlVHJhY2tl
cjo6Q2xvc2VPbmVEYXRhYmFzZUltbWVkaWF0ZWx5VGFzayA6IHB1YmxpYyBTY3JpcHRFeGVjdXRp
b25Db250ZXh0OjpUYXNrIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc093blB0cjxDbG9zZU9u
ZURhdGFiYXNlSW1tZWRpYXRlbHlUYXNrPiBjcmVhdGUoY29uc3QgU3RyaW5nJiBvcmlnaW5JZGVu
dGlmaWVyLCBjb25zdCBTdHJpbmcmIG5hbWUsIEFic3RyYWN0RGF0YWJhc2UqIGRhdGFiYXNlKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBDbG9zZU9uZURhdGFiYXNlSW1tZWRp
YXRlbHlUYXNrKG9yaWdpbklkZW50aWZpZXIsIG5hbWUsIGRhdGFiYXNlKSk7CisgICAgfQorCisg
ICAgdmlydHVhbCB2b2lkIHBlcmZvcm1UYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRl
eHQpCisgICAgeworICAgICAgICBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5jbG9zZU9uZURh
dGFiYXNlSW1tZWRpYXRlbHkobV9vcmlnaW5JZGVudGlmaWVyLCBtX25hbWUsIG1fZGF0YWJhc2Up
OworICAgIH0KKworcHJpdmF0ZToKKyAgICBDbG9zZU9uZURhdGFiYXNlSW1tZWRpYXRlbHlUYXNr
KGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBuYW1lLCBBYnN0
cmFjdERhdGFiYXNlKiBkYXRhYmFzZSkKKyAgICAgICAgOiBtX29yaWdpbklkZW50aWZpZXIob3Jp
Z2luSWRlbnRpZmllci5pc29sYXRlZENvcHkoKSkKKyAgICAgICAgLCBtX25hbWUobmFtZS5pc29s
YXRlZENvcHkoKSkKKyAgICAgICAgLCBtX2RhdGFiYXNlKGRhdGFiYXNlKQorICAgIHsKKyAgICB9
CisKKyAgICBTdHJpbmcgbV9vcmlnaW5JZGVudGlmaWVyOworICAgIFN0cmluZyBtX25hbWU7Cisg
ICAgQWJzdHJhY3REYXRhYmFzZSogbV9kYXRhYmFzZTsgIC8vIEludGVudGlvbmFsbHkgYSByYXcg
cG9pbnRlci4KK307CisKK3ZvaWQgRGF0YWJhc2VUcmFja2VyOjpjbG9zZURhdGFiYXNlc0ltbWVk
aWF0ZWx5KGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBuYW1l
KSB7CisgICAgTXV0ZXhMb2NrZXIgb3BlbkRhdGFiYXNlTWFwTG9jayhtX29wZW5EYXRhYmFzZU1h
cEd1YXJkKTsKKyAgICBpZiAoIW1fb3BlbkRhdGFiYXNlTWFwKQorICAgICAgICByZXR1cm47CisK
KyAgICBEYXRhYmFzZU5hbWVNYXAqIG5hbWVNYXAgPSBtX29wZW5EYXRhYmFzZU1hcC0+Z2V0KG9y
aWdpbklkZW50aWZpZXIpOworICAgIGlmICghbmFtZU1hcCkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgRGF0YWJhc2VTZXQqIGRhdGFiYXNlU2V0ID0gbmFtZU1hcC0+Z2V0KG5hbWUpOworICAgIGlm
ICghZGF0YWJhc2VTZXQpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIFdlIGhhdmUgdG8gY2Fs
bCBjbG9zZUltbWVkaWF0ZWx5KCkgb24gdGhlIGNvbnRleHQgdGhyZWFkIGFuZCB3ZSBjYW5ub3Qg
c2FmZWx5IGFkZCBhIHJlZmVyZW5jZSB0bworICAgIC8vIHRoZSBkYXRhYmFzZSBpbiBvdXIgY29s
bGVjdGlvbiB3aGVuIG5vdCBvbiB0aGUgY29udGV4dCB0aHJlYWQgKHdoaWNoIGlzIGFsd2F5cyB0
aGUgY2FzZSBnaXZlbgorICAgIC8vIGN1cnJlbnQgdXNhZ2UpLgorICAgIGZvciAoRGF0YWJhc2VT
ZXQ6Oml0ZXJhdG9yIGl0ID0gZGF0YWJhc2VTZXQtPmJlZ2luKCk7IGl0ICE9IGRhdGFiYXNlU2V0
LT5lbmQoKTsgKytpdCkKKyAgICAgICAgKCppdCktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+
cG9zdFRhc2soQ2xvc2VPbmVEYXRhYmFzZUltbWVkaWF0ZWx5VGFzazo6Y3JlYXRlKG9yaWdpbklk
ZW50aWZpZXIsIG5hbWUsICppdCkpOworfQorCit2b2lkIERhdGFiYXNlVHJhY2tlcjo6Y2xvc2VP
bmVEYXRhYmFzZUltbWVkaWF0ZWx5KGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllciwgY29u
c3QgU3RyaW5nJiBuYW1lLCBBYnN0cmFjdERhdGFiYXNlKiBkYXRhYmFzZSkKK3sKKyAgICAvLyBG
aXJzdCB3ZSBoYXZlIHRvIGNvbmZpcm0gdGhlICdkYXRhYmFzZScgaXMgc3RpbGwgaW4gb3VyIGNv
bGxlY2l0b24uCisgICAgeworICAgICAgICBNdXRleExvY2tlciBvcGVuRGF0YWJhc2VNYXBMb2Nr
KG1fb3BlbkRhdGFiYXNlTWFwR3VhcmQpOworICAgICAgICBpZiAoIW1fb3BlbkRhdGFiYXNlTWFw
KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIERhdGFiYXNlTmFtZU1hcCogbmFtZU1h
cCA9IG1fb3BlbkRhdGFiYXNlTWFwLT5nZXQob3JpZ2luSWRlbnRpZmllcik7CisgICAgICAgIGlm
ICghbmFtZU1hcCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBEYXRhYmFzZVNldCog
ZGF0YWJhc2VTZXQgPSBuYW1lTWFwLT5nZXQobmFtZSk7CisgICAgICAgIGlmICghZGF0YWJhc2VT
ZXQpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgRGF0YWJhc2VTZXQ6Oml0ZXJhdG9y
IGZvdW5kID0gZGF0YWJhc2VTZXQtPmZpbmQoZGF0YWJhc2UpOworICAgICAgICBpZiAoZm91bmQg
PT0gZGF0YWJhc2VTZXQtPmVuZCgpKQorICAgICAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IC8vIEFuZCB3ZSBoYXZlIHRvIGNhbGwgY2xvc2VJbW1lZGlhdGVseSgpIHdpdGhvdXQgb3VyIGNv
bGxlY3Rpb24gbG9jayBiZWluZyBoZWxkLgorICAgIGRhdGFiYXNlLT5jbG9zZUltbWVkaWF0ZWx5
KCk7Cit9CisKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShTUUxfREFUQUJBU0UpCkluZGV4OiBTb3Vy
Y2UvV2Via2l0L2Nocm9taXVtL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Via2l0
L2Nocm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gMTA3OTY2KQorKysgU291cmNlL1dlYmtpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNiBAQAorMjAxMi0w
Mi0xNSAgTWljaGFlbCBOb3JkbWFuICA8bWljaGFlbG5AZ29vZ2xlLmNvbT4KKworICAgICAgICBG
aXggYnVncyBpbiB0aGUgaW1wbGVtZW50YXRpb24gb2YgV2ViRGF0YWJhc2U6OmNsb3NlRGF0YWJh
c2VJbW1lZGlhdGVseS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTc4ODQxCisKKyAgICAgICAgV2ViRGF0YWJhc2Ugbm93IGRlbGVnYXRlcyB0aGlzIGZ1
bmN0aW9uIGVudGlyZWx5IHRvIERhdGFiYXNlVHJhY2tlci4KKyAgICAgICAgVGhpcyBpcyBwYXJ0
IG9mIHJlc29sdmluZyBodHRwOi8vY3JidWcuY29tLzk4OTM5CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzcmMvV2ViRGF0YWJhc2UuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJEYXRhYmFzZTo6Y2xvc2VEYXRhYmFzZUltbWVkaWF0ZWx5KToKKwog
MjAxMi0wMi0xNiAgVmlldC1UcnVuZyBMdXUgIDx2aWV0dHJ1bmdsdXVAY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIFtjaHJvbWl1bV0gQWRkIG1ldGhvZCB0byBXZWJQbHVnaW5Db250YWluZXIgdG8g
Y2hlY2sgaWYgYSByZWN0YW5nbGUgaXMgdG9wbW9zdApJbmRleDogU291cmNlL1dlYmtpdC9jaHJv
bWl1bS9zcmMvV2ViRGF0YWJhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJraXQvY2hy
b21pdW0vc3JjL1dlYkRhdGFiYXNlLmNwcAkocmV2aXNpb24gMTA3OTY2KQorKysgU291cmNlL1dl
YmtpdC9jaHJvbWl1bS9zcmMvV2ViRGF0YWJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjIs
MTAgKzEyMiw3IEBAIHZvaWQgV2ViRGF0YWJhc2U6OnJlc2V0U3BhY2VBdmFpbGFibGUoY28KIHZv
aWQgV2ViRGF0YWJhc2U6OmNsb3NlRGF0YWJhc2VJbW1lZGlhdGVseShjb25zdCBXZWJTdHJpbmcm
IG9yaWdpbklkZW50aWZpZXIsIGNvbnN0IFdlYlN0cmluZyYgZGF0YWJhc2VOYW1lKQogewogI2lm
IEVOQUJMRShTUUxfREFUQUJBU0UpCi0gICAgSGFzaFNldDxSZWZQdHI8QWJzdHJhY3REYXRhYmFz
ZT4gPiBkYXRhYmFzZUhhbmRsZXM7Ci0gICAgRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuZ2V0
T3BlbkRhdGFiYXNlcyhvcmlnaW5JZGVudGlmaWVyLCBkYXRhYmFzZU5hbWUsICZkYXRhYmFzZUhh
bmRsZXMpOwotICAgIGZvciAoSGFzaFNldDxSZWZQdHI8QWJzdHJhY3REYXRhYmFzZT4gPjo6aXRl
cmF0b3IgaXQgPSBkYXRhYmFzZUhhbmRsZXMuYmVnaW4oKTsgaXQgIT0gZGF0YWJhc2VIYW5kbGVz
LmVuZCgpOyArK2l0KQotICAgICAgICBpdC0+Z2V0KCktPmNsb3NlSW1tZWRpYXRlbHkoKTsKKyAg
ICBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5jbG9zZURhdGFiYXNlc0ltbWVkaWF0ZWx5KG9y
aWdpbklkZW50aWZpZXIsIGRhdGFiYXNlTmFtZSk7CiAjZW5kaWYKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>127454</attachid>
            <date>2012-02-16 15:13:58 -0800</date>
            <delta_ts>2012-02-17 12:58:56 -0800</delta_ts>
            <desc>nuke</desc>
            <filename>nuke.txt</filename>
            <type>text/plain</type>
            <size>18458</size>
            <attacher name="Michael Nordman">michaeln</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwNzk2NikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYyIEBACisyMDEyLTAyLTE1ICBNaWNoYWVs
IE5vcmRtYW4gIDxtaWNoYWVsbkBnb29nbGUuY29tPgorCisgICAgICAgIFtjaHJvbWl1bV0gRml4
IGJ1Z3MgaW4gdGhlIGltcGxlbWVudGF0aW9uIG9mIFdlYkRhdGFiYXNlOjpjbG9zZURhdGFiYXNl
SW1tZWRpYXRlbHkuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD03ODg0MQorCisgICAgICAgIFdlYkRhdGFiYXNlIG5vdyBkZWxlZ2F0ZXMgdGhpcyBmdW5j
dGlvbiBlbnRpcmVseSB0byBEYXRhYmFzZVRyYWNrZXIsCisgICAgICAgIGEgbmV3IGNsb3NlRGF0
YWJhc2VzSW1tZWRpYXRlbHkoKSBoYXMgYmVlbiBhZGRlZCBmb3IgdGhhdCBwdXJwb3NlLiBUaGF0
CisgICAgICAgIG1ldGhvZCBwb3N0cyB0YXNrcyB0byB0aGUgYXBwcm9waWF0ZSBjb250ZXh0IHRo
cmVhZCBmb3IgZWFjaCBkYXRhYmFzZQorICAgICAgICBpbnN0YW5jZSB0aGF0IHNob3VsZCBiZSBj
bG9zZWQgaW1tZWRpYXRlbHkuCisKKyAgICAgICAgVGhlIERhdGFiYXNlVHJhY2tlciBnZXRBbGxP
cGVuRGF0YWJhc2VzKCkgbWV0aG9kIGhhcyBiZWVuIHJlbW92ZWQgZnJvbQorICAgICAgICB0aGUg
Y2hyb21pdW0gaW1wbCBiZWNhdXNlIGl0J3MgdW5zYWZlLCByZWZzIGNhbm5vdCBiZSBzYWZlbHkg
dGFrZW4gb24KKyAgICAgICAgQWJzdHJhY3REYXRhYmFzZSBpbnN0YW5jZXMgaW4gdGhlIHRyYWNr
ZXIncyBjb2xsZWN0aW9uIG9mIG9wZW4gZGF0YWJhc2VzLgorCisgICAgICAgIEFkZCBhIG1lc3Nh
Z2UgdG8gdGhlIGNvbnNvbGUgbG9nIHdoZW4gYSBkYXRhYmFzZSBpcyBmb3JjaWJseSBjbG9zZWQu
CisKKyAgICAgICAgVHJhbnNhY3Rpb25zIGluaXRpYXRlZCBvbiBhIGRhdGFiYXNlIGluc3RhbmNl
IHRoYXQgaGFzIGJlZW4gZm9yY2libHkKKyAgICAgICAgY2xvc2VkIGNvbXBsZXRlIHdpdGggYSB0
cmFuc2FjdGlvbiBlcnJvciBjYWxsYmFjay4KKyAgICAgICAgCisgICAgICAgIFRoaXMgaXMgcGFy
dCBvZiByZXNvbHZpbmcgaHR0cDovL2NyYnVnLmNvbS85ODkzOQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyBsYXlvdXQgdGVzdHMsIHRoZXJl
IGlzIG5vIGNvbW1vbiBjb2RlIHdheSB0byBjbG9zZUltbWVkaWF0ZWx5LgorICAgICAgICBXZSBo
YXZlIGNvdmVyYWdlIGZvciB0aGlzIGluIHB5IGF1dG9tYXRpb24gdGVzdHMuCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuY3BwOgorICAgICAgICBUaGUgY2xvc2VJbW1l
ZGlhdGVseSBjb2RlIHBhdGggY2FuIHJlc3VsdCBpbiB0aGUgdW5kZXJseWluZyBzcWxpdGUzIGhh
bmRsZSBiZWluZworICAgICAgICBjbG9zZWQgZWFybGllciB0aGFuIHVzdWFsIGFuZCB0cmlwIHNv
bWUgYXNzZXJ0aW9ucy4gVXBkYXRlZCB0aGUgYXNzZXJ0aW9ucyB0byBubworICAgICAgICBsb25n
ZXIgdHJpZ2dlciBpbiB0aGlzIGVhcmx5IGNsb3NlIGNhc2UuCisgICAgICAgIChXZWJDb3JlOjpT
UUxpdGVEYXRhYmFzZTo6Y2xvc2UpOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2U6
OnNldE1heGltdW1TaXplKToKKyAgICAgICAgKiBwbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2Uu
aDoKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlOjpzcWxpdGUzSGFuZGxlKToKKwor
ICAgICAgICAqIHN0b3JhZ2UvRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJh
c2U6OmNsb3NlSW1tZWRpYXRlbHkpOiBNb2RpZmllZCB0byBvbmx5IGJlIGNhbGxlZCBvbiB0aGUg
Y29udGV4dCB0aHJlYWQgYW5kIHRvIGxvZyBhIGNvbnNvbGUgbWVzc2FnZS4KKyAgICAgICAgKFdl
YkNvcmU6OkRhdGFiYXNlOjpjaGFuZ2VWZXJzaW9uKTogVXNlIHRoZSBwcml2YXRlIHJ1blRyYW5z
YWN0aW9uIGhlbHBlciBtZXRob2QuCisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZTo6dHJhbnNh
Y3Rpb24pOiBQYXNzIGEgbmV3IHBhcmFtIHJlcXVpcmVkIGJ5IHRoZSBydW5UcmFuc2FjdGlvbiBo
ZWxwZXIuCisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZTo6cmVhZFRyYW5zYWN0aW9uKTogRGl0
dG8uCisgICAgICAgIChXZWJDb3JlOjpjYWxsVHJhbnNhY3Rpb25FcnJvckNhbGxiYWNrKTogVXNl
ZCB0byBkZWZlciBpbnZvY2F0aW9uIG9mIHRoZSBlcnJvciBjYWxsYmFjay4KKyAgICAgICAgKFdl
YkNvcmU6OkRhdGFiYXNlOjpydW5UcmFuc2FjdGlvbik6IE1vZGlmaWVkIHRvIGRldGVjdCB3aGVu
IHRoZSBkYXRhYmFzZSBoYXMgYmVlbiBjbG9zZWQsIGFuZAorICAgICAgICB0byBpbnZva2UgdGhl
IGVycm9yIGNhbGxiYWNrIGluIHRoYXQgY2FzZS4gVGhpcyBhbHNvIGF2b2lkcyBjcmVhdGluZyBh
IHJlZmVyZW5jZSBjeWNsZSBiZXR3ZWVuCisgICAgICAgIGEgbmV3bHkgY3JlYXRlZCB0cmFuc2Fj
dGlvbiBhbmQgdGhlIGRhdGFiYXNlIHRoYXQgcHJldmlvdXNseSBleGlzdGVkIGR1ZSB0byBhIHRy
YW5zY3Rpb24gYmVpbmcKKyAgICAgICAgYWRkZWQgYW5kIG5ldmVyIHJlbW92ZWQgZnJvbSB0aGUg
USB3aGlsZSBpbiB0aGlzIHN0YXRlLgorICAgICAgICAqIHN0b3JhZ2UvRGF0YWJhc2UuaDoKKyAg
ICAgICAgKiBzdG9yYWdlL0RhdGFiYXNlU3luYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRh
YmFzZVN5bmM6OmNsb3NlSW1tZWRpYXRlbHkpOiBNb2RpZmllZCB0byBvbmx5IGJlIGNhbGxlZCBv
biB0aGUgY29udGV4dCB0aHJlYWQgYW5kIHRvIGxvZyBhIGNvbnNvbGUgbWVzc2FnZS4KKyAgICAg
ICAgKiBzdG9yYWdlL0RhdGFiYXNlVHJhY2tlci5oOgorCisgICAgICAgICogc3RvcmFnZS9jaHJv
bWl1bS9EYXRhYmFzZVRyYWNrZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIFBvc3RzIHRhc2tzIHRv
IHRoZSBhcHByb3BpYXRlIGNvbnRleHQgdGhyZWFkIGZvciBleGVjdXRpb24gd2l0aG91dCBidW1w
aW5nIEFic3RyYWN0RGF0YWJhc2UgcmVmY291bnRzLgorICAgICAgICAoRGF0YWJhc2VUcmFja2Vy
OjpDbG9zZU9uZURhdGFiYXNlSW1tZWRpYXRlbHlUYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OkRh
dGFiYXNlVHJhY2tlcjo6Q2xvc2VPbmVEYXRhYmFzZUltbWVkaWF0ZWx5VGFzazo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tlcjo6Q2xvc2VPbmVEYXRhYmFzZUltbWVk
aWF0ZWx5VGFzazo6cGVyZm9ybVRhc2spOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VUcmFj
a2VyOjpDbG9zZU9uZURhdGFiYXNlSW1tZWRpYXRlbHlUYXNrOjpDbG9zZU9uZURhdGFiYXNlSW1t
ZWRpYXRlbHlUYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tlcjo6Y2xvc2VE
YXRhYmFzZXNJbW1lZGlhdGVseSk6IAorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VUcmFja2Vy
OjpjbG9zZU9uZURhdGFiYXNlSW1tZWRpYXRlbHkpOgorCiAyMDEyLTAyLTE1ICBNYXJrIFJvd2Ug
IDxtcm93ZUBhcHBsZS5jb20+CiAKICAgICAgICAgTlBOX0dldFZhbHVlRm9yVVJMIC8gTlBOVVJM
VlByb3h5IHJldHVybnMgRElSRUNUIHdoZW4gcHJveHkgY29uZmlndXJlZCB2aWEgUEFDCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5jcHAJKHJl
dmlzaW9uIDEwNzk2NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRh
YmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMiw3ICsxMDIsNyBAQCBib29sIFNRTGl0ZURh
dGFiYXNlOjpvcGVuKGNvbnN0IFN0cmluZyYKIHZvaWQgU1FMaXRlRGF0YWJhc2U6OmNsb3NlKCkK
IHsKICAgICBpZiAobV9kYikgewotICAgICAgICAvLyBGSVhNRTogVGhpcyBpcyBiZWluZyBjYWxs
ZWQgb24gdGhlbWFpbiB0aHJlYWQgZHVyaW5nIEpTIEdDLiA8cmRhcjovL3Byb2JsZW0vNTczOTgx
OD4KKyAgICAgICAgLy8gRklYTUU6IFRoaXMgaXMgYmVpbmcgY2FsbGVkIG9uIHRoZSBtYWluIHRo
cmVhZCBkdXJpbmcgSlMgR0MuIDxyZGFyOi8vcHJvYmxlbS81NzM5ODE4PgogICAgICAgICAvLyBB
U1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fb3BlbmluZ1RocmVhZCk7CiAgICAgICAgIHNxbGl0
ZTMqIGRiID0gbV9kYjsKICAgICAgICAgewpAQCAtMTY3LDcgKzE2Nyw3IEBAIHZvaWQgU1FMaXRl
RGF0YWJhc2U6OnNldE1heGltdW1TaXplKGludDYKICAgICAKICAgICBpbnQgY3VycmVudFBhZ2VT
aXplID0gcGFnZVNpemUoKTsKIAotICAgIEFTU0VSVChjdXJyZW50UGFnZVNpemUpOworICAgIEFT
U0VSVChjdXJyZW50UGFnZVNpemUgfHwgIW1fZGIpOwogICAgIGludDY0X3QgbmV3TWF4UGFnZUNv
dW50ID0gY3VycmVudFBhZ2VTaXplID8gc2l6ZSAvIGN1cnJlbnRQYWdlU2l6ZSA6IDA7CiAgICAg
CiAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fYXV0aG9yaXplckxvY2spOwpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmgJKHJldmlzaW9uIDEwNzk2
NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMDQsNyArMTA0LDcgQEAgcHVibGljOgogICAgIGNvbnN0IGNoYXIqIGxh
c3RFcnJvck1zZygpOwogICAgIAogICAgIHNxbGl0ZTMqIHNxbGl0ZTNIYW5kbGUoKSBjb25zdCB7
Ci0gICAgICAgIEFTU0VSVChtX3NoYXJhYmxlIHx8IGN1cnJlbnRUaHJlYWQoKSA9PSBtX29wZW5p
bmdUaHJlYWQpOworICAgICAgICBBU1NFUlQobV9zaGFyYWJsZSB8fCBjdXJyZW50VGhyZWFkKCkg
PT0gbV9vcGVuaW5nVGhyZWFkIHx8ICFtX2RiKTsKICAgICAgICAgcmV0dXJuIG1fZGI7CiAgICAg
fQogICAgIApJbmRleDogU291cmNlL1dlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZS5jcHAJKHJldmlzaW9uIDEw
Nzk2NikKKysrIFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2UuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zMiw2ICszMiw3IEBACiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKIAogI2luY2x1
ZGUgIkNoYW5nZVZlcnNpb25XcmFwcGVyLmgiCisjaW5jbHVkZSAiQ3Jvc3NUaHJlYWRUYXNrLmgi
CiAjaW5jbHVkZSAiRGF0YWJhc2VDYWxsYmFjay5oIgogI2luY2x1ZGUgIkRhdGFiYXNlVGFzay5o
IgogI2luY2x1ZGUgIkRhdGFiYXNlVGhyZWFkLmgiCkBAIC00MSw2ICs0Miw3IEBACiAjaW5jbHVk
ZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiUGFn
ZS5oIgorI2luY2x1ZGUgIlNRTEVycm9yLmgiCiAjaW5jbHVkZSAiU1FMVHJhbnNhY3Rpb25DYWxs
YmFjay5oIgogI2luY2x1ZGUgIlNRTFRyYW5zYWN0aW9uQ2xpZW50LmgiCiAjaW5jbHVkZSAiU1FM
VHJhbnNhY3Rpb25Db29yZGluYXRvci5oIgpAQCAtMjMwLDkgKzIzMiwxMiBAQCB2b2lkIERhdGFi
YXNlOjpjbG9zZSgpCiAKIHZvaWQgRGF0YWJhc2U6OmNsb3NlSW1tZWRpYXRlbHkoKQogeworICAg
IEFTU0VSVChtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmlzQ29udGV4dFRocmVhZCgpKTsKICAg
ICBEYXRhYmFzZVRocmVhZCogZGF0YWJhc2VUaHJlYWQgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0
KCktPmRhdGFiYXNlVGhyZWFkKCk7Ci0gICAgaWYgKGRhdGFiYXNlVGhyZWFkICYmICFkYXRhYmFz
ZVRocmVhZC0+dGVybWluYXRpb25SZXF1ZXN0ZWQoKSAmJiBvcGVuZWQoKSkKKyAgICBpZiAoZGF0
YWJhc2VUaHJlYWQgJiYgIWRhdGFiYXNlVGhyZWFkLT50ZXJtaW5hdGlvblJlcXVlc3RlZCgpICYm
IG9wZW5lZCgpKSB7CisgICAgICAgIGxvZ0Vycm9yTWVzc2FnZSgiZm9yY2libHkgY2xvc2luZyBk
YXRhYmFzZSIpOwogICAgICAgICBkYXRhYmFzZVRocmVhZC0+c2NoZWR1bGVJbW1lZGlhdGVUYXNr
KERhdGFiYXNlQ2xvc2VUYXNrOjpjcmVhdGUodGhpcywgMCkpOworICAgIH0KIH0KIAogdW5zaWdu
ZWQgbG9uZyBsb25nIERhdGFiYXNlOjptYXhpbXVtU2l6ZSgpIGNvbnN0CkBAIC0yNTYsMzAgKzI2
MSwzNiBAQCB2b2lkIERhdGFiYXNlOjpjaGFuZ2VWZXJzaW9uKGNvbnN0IFN0cmluCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFBhc3NSZWZQdHI8U1FMVHJhbnNhY3Rpb25DYWxsYmFjaz4g
Y2FsbGJhY2ssIFBhc3NSZWZQdHI8U1FMVHJhbnNhY3Rpb25FcnJvckNhbGxiYWNrPiBlcnJvckNh
bGxiYWNrLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXNzUmVmUHRyPFZvaWRDYWxs
YmFjaz4gc3VjY2Vzc0NhbGxiYWNrKQogewotICAgIFJlZlB0cjxTUUxUcmFuc2FjdGlvbj4gdHJh
bnNhY3Rpb24gPQotICAgICAgICBTUUxUcmFuc2FjdGlvbjo6Y3JlYXRlKHRoaXMsIGNhbGxiYWNr
LCBlcnJvckNhbGxiYWNrLCBzdWNjZXNzQ2FsbGJhY2ssIENoYW5nZVZlcnNpb25XcmFwcGVyOjpj
cmVhdGUob2xkVmVyc2lvbiwgbmV3VmVyc2lvbikpOwotICAgIE11dGV4TG9ja2VyIGxvY2tlciht
X3RyYW5zYWN0aW9uSW5Qcm9ncmVzc011dGV4KTsKLSAgICBtX3RyYW5zYWN0aW9uUXVldWUuYXBw
ZW5kKHRyYW5zYWN0aW9uLnJlbGVhc2UoKSk7Ci0gICAgaWYgKCFtX3RyYW5zYWN0aW9uSW5Qcm9n
cmVzcykKLSAgICAgICAgc2NoZWR1bGVUcmFuc2FjdGlvbigpOworICAgIHJ1blRyYW5zYWN0aW9u
KGNhbGxiYWNrLCBlcnJvckNhbGxiYWNrLCBzdWNjZXNzQ2FsbGJhY2ssIENoYW5nZVZlcnNpb25X
cmFwcGVyOjpjcmVhdGUob2xkVmVyc2lvbiwgbmV3VmVyc2lvbiksIGZhbHNlKTsKIH0KIAogdm9p
ZCBEYXRhYmFzZTo6dHJhbnNhY3Rpb24oUGFzc1JlZlB0cjxTUUxUcmFuc2FjdGlvbkNhbGxiYWNr
PiBjYWxsYmFjaywgUGFzc1JlZlB0cjxTUUxUcmFuc2FjdGlvbkVycm9yQ2FsbGJhY2s+IGVycm9y
Q2FsbGJhY2ssIFBhc3NSZWZQdHI8Vm9pZENhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2spCiB7Ci0g
ICAgcnVuVHJhbnNhY3Rpb24oY2FsbGJhY2ssIGVycm9yQ2FsbGJhY2ssIHN1Y2Nlc3NDYWxsYmFj
aywgZmFsc2UpOworICAgIHJ1blRyYW5zYWN0aW9uKGNhbGxiYWNrLCBlcnJvckNhbGxiYWNrLCBz
dWNjZXNzQ2FsbGJhY2ssIDAsIGZhbHNlKTsKIH0KIAogdm9pZCBEYXRhYmFzZTo6cmVhZFRyYW5z
YWN0aW9uKFBhc3NSZWZQdHI8U1FMVHJhbnNhY3Rpb25DYWxsYmFjaz4gY2FsbGJhY2ssIFBhc3NS
ZWZQdHI8U1FMVHJhbnNhY3Rpb25FcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrLCBQYXNzUmVm
UHRyPFZvaWRDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrKQogewotICAgIHJ1blRyYW5zYWN0aW9u
KGNhbGxiYWNrLCBlcnJvckNhbGxiYWNrLCBzdWNjZXNzQ2FsbGJhY2ssIHRydWUpOworICAgIHJ1
blRyYW5zYWN0aW9uKGNhbGxiYWNrLCBlcnJvckNhbGxiYWNrLCBzdWNjZXNzQ2FsbGJhY2ssIDAs
IHRydWUpOworfQorCitzdGF0aWMgdm9pZCBjYWxsVHJhbnNhY3Rpb25FcnJvckNhbGxiYWNrKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPFNRTFRyYW5zYWN0aW9uRXJyb3JDYWxs
YmFjaz4gY2FsbGJhY2ssIFBhc3NSZWZQdHI8U1FMRXJyb3I+IGVycm9yKQoreworICAgIGNhbGxi
YWNrLT5oYW5kbGVFdmVudChlcnJvci5nZXQoKSk7CiB9CiAKIHZvaWQgRGF0YWJhc2U6OnJ1blRy
YW5zYWN0aW9uKFBhc3NSZWZQdHI8U1FMVHJhbnNhY3Rpb25DYWxsYmFjaz4gY2FsbGJhY2ssIFBh
c3NSZWZQdHI8U1FMVHJhbnNhY3Rpb25FcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFzc1JlZlB0cjxWb2lkQ2FsbGJhY2s+IHN1Y2Nl
c3NDYWxsYmFjaywgYm9vbCByZWFkT25seSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFBhc3NSZWZQdHI8Vm9pZENhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8U1FM
VHJhbnNhY3Rpb25XcmFwcGVyPiB3cmFwcGVyLCBib29sIHJlYWRPbmx5KQogewotICAgIFJlZlB0
cjxTUUxUcmFuc2FjdGlvbj4gdHJhbnNhY3Rpb24gPQotICAgICAgICBTUUxUcmFuc2FjdGlvbjo6
Y3JlYXRlKHRoaXMsIGNhbGxiYWNrLCBlcnJvckNhbGxiYWNrLCBzdWNjZXNzQ2FsbGJhY2ssIDAs
IHJlYWRPbmx5KTsKICAgICBNdXRleExvY2tlciBsb2NrZXIobV90cmFuc2FjdGlvbkluUHJvZ3Jl
c3NNdXRleCk7CisgICAgaWYgKCFtX2lzVHJhbnNhY3Rpb25RdWV1ZUVuYWJsZWQpIHsKKyAgICAg
ICAgaWYgKGVycm9yQ2FsbGJhY2spIHsKKyAgICAgICAgICAgIFJlZlB0cjxTUUxFcnJvcj4gZXJy
b3IgPSBTUUxFcnJvcjo6Y3JlYXRlKFNRTEVycm9yOjpVTktOT1dOX0VSUiwgImRhdGFiYXNlIGhh
cyBiZWVuIGNsb3NlZCIpOworICAgICAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5w
b3N0VGFzayhjcmVhdGVDYWxsYmFja1Rhc2soJmNhbGxUcmFuc2FjdGlvbkVycm9yQ2FsbGJhY2ss
IGVycm9yQ2FsbGJhY2ssIGVycm9yLnJlbGVhc2UoKSkpOworICAgICAgICB9CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisgICAgUmVmUHRyPFNRTFRyYW5zYWN0aW9uPiB0cmFuc2FjdGlvbiA9IFNR
TFRyYW5zYWN0aW9uOjpjcmVhdGUodGhpcywgY2FsbGJhY2ssIGVycm9yQ2FsbGJhY2ssIHN1Y2Nl
c3NDYWxsYmFjaywgd3JhcHBlciwgcmVhZE9ubHkpOwogICAgIG1fdHJhbnNhY3Rpb25RdWV1ZS5h
cHBlbmQodHJhbnNhY3Rpb24ucmVsZWFzZSgpKTsKICAgICBpZiAoIW1fdHJhbnNhY3Rpb25JblBy
b2dyZXNzKQogICAgICAgICBzY2hlZHVsZVRyYW5zYWN0aW9uKCk7CkBAIC0yOTcsOSArMzA4LDgg
QEAgdm9pZCBEYXRhYmFzZTo6c2NoZWR1bGVUcmFuc2FjdGlvbigpCiAgICAgQVNTRVJUKCFtX3Ry
YW5zYWN0aW9uSW5Qcm9ncmVzc011dGV4LnRyeUxvY2soKSk7IC8vIExvY2tlZCBieSBjYWxsZXIu
CiAgICAgUmVmUHRyPFNRTFRyYW5zYWN0aW9uPiB0cmFuc2FjdGlvbjsKIAotICAgIGlmIChtX2lz
VHJhbnNhY3Rpb25RdWV1ZUVuYWJsZWQgJiYgIW1fdHJhbnNhY3Rpb25RdWV1ZS5pc0VtcHR5KCkp
IHsKKyAgICBpZiAobV9pc1RyYW5zYWN0aW9uUXVldWVFbmFibGVkICYmICFtX3RyYW5zYWN0aW9u
UXVldWUuaXNFbXB0eSgpKQogICAgICAgICB0cmFuc2FjdGlvbiA9IG1fdHJhbnNhY3Rpb25RdWV1
ZS50YWtlRmlyc3QoKTsKLSAgICB9CiAKICAgICBpZiAodHJhbnNhY3Rpb24gJiYgbV9zY3JpcHRF
eGVjdXRpb25Db250ZXh0LT5kYXRhYmFzZVRocmVhZCgpKSB7CiAgICAgICAgIE93blB0cjxEYXRh
YmFzZVRyYW5zYWN0aW9uVGFzaz4gdGFzayA9IERhdGFiYXNlVHJhbnNhY3Rpb25UYXNrOjpjcmVh
dGUodHJhbnNhY3Rpb24pOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2UuaAkocmV2aXNp
b24gMTA3OTY2KQorKysgU291cmNlL1dlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC00Nyw2ICs0Nyw3IEBAIGNsYXNzIFNRTFRyYW5zYWN0aW9uQ2FsbGJhY2s7CiBj
bGFzcyBTUUxUcmFuc2FjdGlvbkNsaWVudDsKIGNsYXNzIFNRTFRyYW5zYWN0aW9uQ29vcmRpbmF0
b3I7CiBjbGFzcyBTUUxUcmFuc2FjdGlvbkVycm9yQ2FsbGJhY2s7CitjbGFzcyBTUUxUcmFuc2Fj
dGlvbldyYXBwZXI7CiBjbGFzcyBWb2lkQ2FsbGJhY2s7CiAKIHR5cGVkZWYgaW50IEV4Y2VwdGlv
bkNvZGU7CkBAIC05Myw3ICs5NCw3IEBAIHByaXZhdGU6CiAgICAgRGF0YWJhc2UoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBleHBlY3Rl
ZFZlcnNpb24sCiAgICAgICAgICAgICAgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgdW5zaWdu
ZWQgbG9uZyBlc3RpbWF0ZWRTaXplKTsKICAgICB2b2lkIHJ1blRyYW5zYWN0aW9uKFBhc3NSZWZQ
dHI8U1FMVHJhbnNhY3Rpb25DYWxsYmFjaz4sIFBhc3NSZWZQdHI8U1FMVHJhbnNhY3Rpb25FcnJv
ckNhbGxiYWNrPiwKLSAgICAgICAgICAgICAgICAgICAgICAgIFBhc3NSZWZQdHI8Vm9pZENhbGxi
YWNrPiBzdWNjZXNzQ2FsbGJhY2ssIGJvb2wgcmVhZE9ubHkpOworICAgICAgICAgICAgICAgICAg
ICAgICAgUGFzc1JlZlB0cjxWb2lkQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0
cjxTUUxUcmFuc2FjdGlvbldyYXBwZXI+LCBib29sIHJlYWRPbmx5KTsKIAogICAgIGJvb2wgb3Bl
bkFuZFZlcmlmeVZlcnNpb24oYm9vbCBzZXRWZXJzaW9uSW5OZXdEYXRhYmFzZSwgRXhjZXB0aW9u
Q29kZSYsIFN0cmluZyYgZXJyb3JNZXNzYWdlKTsKICAgICB2aXJ0dWFsIGJvb2wgcGVyZm9ybU9w
ZW5BbmRWZXJpZnkoYm9vbCBzZXRWZXJzaW9uSW5OZXdEYXRhYmFzZSwgRXhjZXB0aW9uQ29kZSYs
IFN0cmluZyYgZXJyb3JNZXNzYWdlKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvRGF0
YWJhc2VTeW5jLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0RhdGFi
YXNlU3luYy5jcHAJKHJldmlzaW9uIDEwNzk2NikKKysrIFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2Uv
RGF0YWJhc2VTeW5jLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjA1LDE2ICsyMDUsMTMgQEAgcHJp
dmF0ZToKIAogdm9pZCBEYXRhYmFzZVN5bmM6OmNsb3NlSW1tZWRpYXRlbHkoKQogewotICAgIGlm
ICghbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5pc0NvbnRleHRUaHJlYWQoKSkgewotICAgICAg
ICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnBvc3RUYXNrKENsb3NlU3luY0RhdGFiYXNlT25D
b250ZXh0VGhyZWFkVGFzazo6Y3JlYXRlKHRoaXMpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
KyAgICBBU1NFUlQobV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5pc0NvbnRleHRUaHJlYWQoKSk7
CiAKICAgICBpZiAoIW9wZW5lZCgpKQogICAgICAgICByZXR1cm47CiAKKyAgICBsb2dFcnJvck1l
c3NhZ2UoImZvcmNpYmx5IGNsb3NpbmcgZGF0YWJhc2UiKTsKICAgICBEYXRhYmFzZVRyYWNrZXI6
OnRyYWNrZXIoKS5yZW1vdmVPcGVuRGF0YWJhc2UodGhpcyk7Ci0KICAgICBjbG9zZURhdGFiYXNl
KCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2VUcmFja2VyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZVRyYWNrZXIuaAko
cmV2aXNpb24gMTA3OTY2KQorKysgU291cmNlL1dlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZVRyYWNr
ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTczLDEyICsxNzMsMTUgQEAgcHJpdmF0ZToKICAgICBz
dGF0aWMgdm9pZCBub3RpZnlEYXRhYmFzZXNDaGFuZ2VkKHZvaWQqKTsKICNlbHNlCiBwdWJsaWM6
Ci0gICAgdm9pZCBnZXRPcGVuRGF0YWJhc2VzKGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmll
ciwgY29uc3QgU3RyaW5nJiBuYW1lLCBIYXNoU2V0PFJlZlB0cjxBYnN0cmFjdERhdGFiYXNlPiA+
KiBkYXRhYmFzZXMpOworICAgIHZvaWQgY2xvc2VEYXRhYmFzZXNJbW1lZGlhdGVseShjb25zdCBT
dHJpbmcmIG9yaWdpbklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbmFtZSk7CiAKIHByaXZhdGU6
CiAgICAgdHlwZWRlZiBIYXNoU2V0PEFic3RyYWN0RGF0YWJhc2UqPiBEYXRhYmFzZVNldDsKICAg
ICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBEYXRhYmFzZVNldCo+IERhdGFiYXNlTmFtZU1hcDsK
ICAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBEYXRhYmFzZU5hbWVNYXAqPiBEYXRhYmFzZU9y
aWdpbk1hcDsKKyAgICBjbGFzcyBDbG9zZU9uZURhdGFiYXNlSW1tZWRpYXRlbHlUYXNrOworCisg
ICAgdm9pZCBjbG9zZU9uZURhdGFiYXNlSW1tZWRpYXRlbHkoY29uc3QgU3RyaW5nJiBvcmlnaW5J
ZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG5hbWUsIEFic3RyYWN0RGF0YWJhc2UqIGRhdGFiYXNl
KTsKIAogICAgIE11dGV4IG1fb3BlbkRhdGFiYXNlTWFwR3VhcmQ7CiAgICAgbXV0YWJsZSBPd25Q
dHI8RGF0YWJhc2VPcmlnaW5NYXA+IG1fb3BlbkRhdGFiYXNlTWFwOwpJbmRleDogU291cmNlL1dl
YkNvcmUvc3RvcmFnZS9jaHJvbWl1bS9EYXRhYmFzZVRyYWNrZXJDaHJvbWl1bS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3RvcmFnZS9jaHJvbWl1bS9EYXRhYmFzZVRyYWNrZXJD
aHJvbWl1bS5jcHAJKHJldmlzaW9uIDEwNzk2NikKKysrIFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2Uv
Y2hyb21pdW0vRGF0YWJhc2VUcmFja2VyQ2hyb21pdW0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
NTcsMjkgKzE1Nyw2IEBAIHZvaWQgRGF0YWJhc2VUcmFja2VyOjpyZW1vdmVPcGVuRGF0YWJhc2UK
ICAgICAgICAgRGF0YWJhc2VPYnNlcnZlcjo6ZGF0YWJhc2VDbG9zZWQoZGF0YWJhc2UpOwogfQog
Ci12b2lkIERhdGFiYXNlVHJhY2tlcjo6Z2V0T3BlbkRhdGFiYXNlcyhTZWN1cml0eU9yaWdpbiog
b3JpZ2luLCBjb25zdCBTdHJpbmcmIG5hbWUsIEhhc2hTZXQ8UmVmUHRyPEFic3RyYWN0RGF0YWJh
c2U+ID4qIGRhdGFiYXNlcykKLXsKLSAgICBnZXRPcGVuRGF0YWJhc2VzKG9yaWdpbi0+ZGF0YWJh
c2VJZGVudGlmaWVyKCksIG5hbWUsIGRhdGFiYXNlcyk7Ci19Ci0KLXZvaWQgRGF0YWJhc2VUcmFj
a2VyOjpnZXRPcGVuRGF0YWJhc2VzKGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllciwgY29u
c3QgU3RyaW5nJiBuYW1lLCBIYXNoU2V0PFJlZlB0cjxBYnN0cmFjdERhdGFiYXNlPiA+KiBkYXRh
YmFzZXMpCi17Ci0gICAgTXV0ZXhMb2NrZXIgb3BlbkRhdGFiYXNlTWFwTG9jayhtX29wZW5EYXRh
YmFzZU1hcEd1YXJkKTsKLSAgICBpZiAoIW1fb3BlbkRhdGFiYXNlTWFwKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBEYXRhYmFzZU5hbWVNYXAqIG5hbWVNYXAgPSBtX29wZW5EYXRhYmFzZU1hcC0+
Z2V0KG9yaWdpbklkZW50aWZpZXIpOwotICAgIGlmICghbmFtZU1hcCkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgRGF0YWJhc2VTZXQqIGRhdGFiYXNlU2V0ID0gbmFtZU1hcC0+Z2V0KG5hbWUpOwot
ICAgIGlmICghZGF0YWJhc2VTZXQpCi0gICAgICAgIHJldHVybjsKLQotICAgIGZvciAoRGF0YWJh
c2VTZXQ6Oml0ZXJhdG9yIGl0ID0gZGF0YWJhc2VTZXQtPmJlZ2luKCk7IGl0ICE9IGRhdGFiYXNl
U2V0LT5lbmQoKTsgKytpdCkKLSAgICAgICAgZGF0YWJhc2VzLT5hZGQoKml0KTsKLX0KLQogdW5z
aWduZWQgbG9uZyBsb25nIERhdGFiYXNlVHJhY2tlcjo6Z2V0TWF4U2l6ZUZvckRhdGFiYXNlKGNv
bnN0IEFic3RyYWN0RGF0YWJhc2UqIGRhdGFiYXNlKQogewogICAgIHVuc2lnbmVkIGxvbmcgbG9u
ZyBzcGFjZUF2YWlsYWJsZSA9IDA7CkBAIC0yMTIsNiArMTg5LDc2IEBAIHZvaWQgRGF0YWJhc2VU
cmFja2VyOjppbnRlcnJ1cHRBbGxEYXRhYmEKICAgICB9CiB9CiAKK2NsYXNzIERhdGFiYXNlVHJh
Y2tlcjo6Q2xvc2VPbmVEYXRhYmFzZUltbWVkaWF0ZWx5VGFzayA6IHB1YmxpYyBTY3JpcHRFeGVj
dXRpb25Db250ZXh0OjpUYXNrIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc093blB0cjxDbG9z
ZU9uZURhdGFiYXNlSW1tZWRpYXRlbHlUYXNrPiBjcmVhdGUoY29uc3QgU3RyaW5nJiBvcmlnaW5J
ZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG5hbWUsIEFic3RyYWN0RGF0YWJhc2UqIGRhdGFiYXNl
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBDbG9zZU9uZURhdGFiYXNlSW1t
ZWRpYXRlbHlUYXNrKG9yaWdpbklkZW50aWZpZXIsIG5hbWUsIGRhdGFiYXNlKSk7CisgICAgfQor
CisgICAgdmlydHVhbCB2b2lkIHBlcmZvcm1UYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNv
bnRleHQpCisgICAgeworICAgICAgICBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5jbG9zZU9u
ZURhdGFiYXNlSW1tZWRpYXRlbHkobV9vcmlnaW5JZGVudGlmaWVyLCBtX25hbWUsIG1fZGF0YWJh
c2UpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBDbG9zZU9uZURhdGFiYXNlSW1tZWRpYXRlbHlU
YXNrKGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBuYW1lLCBB
YnN0cmFjdERhdGFiYXNlKiBkYXRhYmFzZSkKKyAgICAgICAgOiBtX29yaWdpbklkZW50aWZpZXIo
b3JpZ2luSWRlbnRpZmllci5pc29sYXRlZENvcHkoKSkKKyAgICAgICAgLCBtX25hbWUobmFtZS5p
c29sYXRlZENvcHkoKSkKKyAgICAgICAgLCBtX2RhdGFiYXNlKGRhdGFiYXNlKQorICAgIHsKKyAg
ICB9CisKKyAgICBTdHJpbmcgbV9vcmlnaW5JZGVudGlmaWVyOworICAgIFN0cmluZyBtX25hbWU7
CisgICAgQWJzdHJhY3REYXRhYmFzZSogbV9kYXRhYmFzZTsgIC8vIEludGVudGlvbmFsbHkgYSBy
YXcgcG9pbnRlci4KK307CisKK3ZvaWQgRGF0YWJhc2VUcmFja2VyOjpjbG9zZURhdGFiYXNlc0lt
bWVkaWF0ZWx5KGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBu
YW1lKSB7CisgICAgTXV0ZXhMb2NrZXIgb3BlbkRhdGFiYXNlTWFwTG9jayhtX29wZW5EYXRhYmFz
ZU1hcEd1YXJkKTsKKyAgICBpZiAoIW1fb3BlbkRhdGFiYXNlTWFwKQorICAgICAgICByZXR1cm47
CisKKyAgICBEYXRhYmFzZU5hbWVNYXAqIG5hbWVNYXAgPSBtX29wZW5EYXRhYmFzZU1hcC0+Z2V0
KG9yaWdpbklkZW50aWZpZXIpOworICAgIGlmICghbmFtZU1hcCkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgRGF0YWJhc2VTZXQqIGRhdGFiYXNlU2V0ID0gbmFtZU1hcC0+Z2V0KG5hbWUpOworICAg
IGlmICghZGF0YWJhc2VTZXQpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIFdlIGhhdmUgdG8g
Y2FsbCBjbG9zZUltbWVkaWF0ZWx5KCkgb24gdGhlIGNvbnRleHQgdGhyZWFkIGFuZCB3ZSBjYW5u
b3Qgc2FmZWx5IGFkZCBhIHJlZmVyZW5jZSB0bworICAgIC8vIHRoZSBkYXRhYmFzZSBpbiBvdXIg
Y29sbGVjdGlvbiB3aGVuIG5vdCBvbiB0aGUgY29udGV4dCB0aHJlYWQgKHdoaWNoIGlzIGFsd2F5
cyB0aGUgY2FzZSBnaXZlbgorICAgIC8vIGN1cnJlbnQgdXNhZ2UpLgorICAgIGZvciAoRGF0YWJh
c2VTZXQ6Oml0ZXJhdG9yIGl0ID0gZGF0YWJhc2VTZXQtPmJlZ2luKCk7IGl0ICE9IGRhdGFiYXNl
U2V0LT5lbmQoKTsgKytpdCkKKyAgICAgICAgKCppdCktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KS0+cG9zdFRhc2soQ2xvc2VPbmVEYXRhYmFzZUltbWVkaWF0ZWx5VGFzazo6Y3JlYXRlKG9yaWdp
bklkZW50aWZpZXIsIG5hbWUsICppdCkpOworfQorCit2b2lkIERhdGFiYXNlVHJhY2tlcjo6Y2xv
c2VPbmVEYXRhYmFzZUltbWVkaWF0ZWx5KGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllciwg
Y29uc3QgU3RyaW5nJiBuYW1lLCBBYnN0cmFjdERhdGFiYXNlKiBkYXRhYmFzZSkKK3sKKyAgICAv
LyBGaXJzdCB3ZSBoYXZlIHRvIGNvbmZpcm0gdGhlICdkYXRhYmFzZScgaXMgc3RpbGwgaW4gb3Vy
IGNvbGxlY3Rpb24uCisgICAgeworICAgICAgICBNdXRleExvY2tlciBvcGVuRGF0YWJhc2VNYXBM
b2NrKG1fb3BlbkRhdGFiYXNlTWFwR3VhcmQpOworICAgICAgICBpZiAoIW1fb3BlbkRhdGFiYXNl
TWFwKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIERhdGFiYXNlTmFtZU1hcCogbmFt
ZU1hcCA9IG1fb3BlbkRhdGFiYXNlTWFwLT5nZXQob3JpZ2luSWRlbnRpZmllcik7CisgICAgICAg
IGlmICghbmFtZU1hcCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBEYXRhYmFzZVNl
dCogZGF0YWJhc2VTZXQgPSBuYW1lTWFwLT5nZXQobmFtZSk7CisgICAgICAgIGlmICghZGF0YWJh
c2VTZXQpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgRGF0YWJhc2VTZXQ6Oml0ZXJh
dG9yIGZvdW5kID0gZGF0YWJhc2VTZXQtPmZpbmQoZGF0YWJhc2UpOworICAgICAgICBpZiAoZm91
bmQgPT0gZGF0YWJhc2VTZXQtPmVuZCgpKQorICAgICAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIC8vIEFuZCB3ZSBoYXZlIHRvIGNhbGwgY2xvc2VJbW1lZGlhdGVseSgpIHdpdGhvdXQgb3Vy
IGNvbGxlY3Rpb24gbG9jayBiZWluZyBoZWxkLgorICAgIGRhdGFiYXNlLT5jbG9zZUltbWVkaWF0
ZWx5KCk7Cit9CisKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShTUUxfREFUQUJBU0UpCkluZGV4OiBT
b3VyY2UvV2Via2l0L2Nocm9taXVtL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
a2l0L2Nocm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gMTA3OTY2KQorKysgU291cmNlL1dlYmtp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNiBAQAorMjAx
Mi0wMi0xNSAgTWljaGFlbCBOb3JkbWFuICA8bWljaGFlbG5AZ29vZ2xlLmNvbT4KKworICAgICAg
ICBGaXggYnVncyBpbiB0aGUgaW1wbGVtZW50YXRpb24gb2YgV2ViRGF0YWJhc2U6OmNsb3NlRGF0
YWJhc2VJbW1lZGlhdGVseS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTc4ODQxCisKKyAgICAgICAgV2ViRGF0YWJhc2Ugbm93IGRlbGVnYXRlcyB0aGlz
IGZ1bmN0aW9uIGVudGlyZWx5IHRvIERhdGFiYXNlVHJhY2tlci4KKyAgICAgICAgVGhpcyBpcyBw
YXJ0IG9mIHJlc29sdmluZyBodHRwOi8vY3JidWcuY29tLzk4OTM5CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzcmMvV2ViRGF0YWJhc2UuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJEYXRhYmFzZTo6Y2xvc2VEYXRhYmFzZUltbWVkaWF0ZWx5KToK
KwogMjAxMi0wMi0xNiAgVmlldC1UcnVuZyBMdXUgIDx2aWV0dHJ1bmdsdXVAY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIFtjaHJvbWl1bV0gQWRkIG1ldGhvZCB0byBXZWJQbHVnaW5Db250YWluZXIg
dG8gY2hlY2sgaWYgYSByZWN0YW5nbGUgaXMgdG9wbW9zdApJbmRleDogU291cmNlL1dlYmtpdC9j
aHJvbWl1bS9zcmMvV2ViRGF0YWJhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJraXQv
Y2hyb21pdW0vc3JjL1dlYkRhdGFiYXNlLmNwcAkocmV2aXNpb24gMTA3OTY2KQorKysgU291cmNl
L1dlYmtpdC9jaHJvbWl1bS9zcmMvV2ViRGF0YWJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
MjIsMTAgKzEyMiw3IEBAIHZvaWQgV2ViRGF0YWJhc2U6OnJlc2V0U3BhY2VBdmFpbGFibGUoY28K
IHZvaWQgV2ViRGF0YWJhc2U6OmNsb3NlRGF0YWJhc2VJbW1lZGlhdGVseShjb25zdCBXZWJTdHJp
bmcmIG9yaWdpbklkZW50aWZpZXIsIGNvbnN0IFdlYlN0cmluZyYgZGF0YWJhc2VOYW1lKQogewog
I2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCi0gICAgSGFzaFNldDxSZWZQdHI8QWJzdHJhY3REYXRh
YmFzZT4gPiBkYXRhYmFzZUhhbmRsZXM7Ci0gICAgRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCku
Z2V0T3BlbkRhdGFiYXNlcyhvcmlnaW5JZGVudGlmaWVyLCBkYXRhYmFzZU5hbWUsICZkYXRhYmFz
ZUhhbmRsZXMpOwotICAgIGZvciAoSGFzaFNldDxSZWZQdHI8QWJzdHJhY3REYXRhYmFzZT4gPjo6
aXRlcmF0b3IgaXQgPSBkYXRhYmFzZUhhbmRsZXMuYmVnaW4oKTsgaXQgIT0gZGF0YWJhc2VIYW5k
bGVzLmVuZCgpOyArK2l0KQotICAgICAgICBpdC0+Z2V0KCktPmNsb3NlSW1tZWRpYXRlbHkoKTsK
KyAgICBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5jbG9zZURhdGFiYXNlc0ltbWVkaWF0ZWx5
KG9yaWdpbklkZW50aWZpZXIsIGRhdGFiYXNlTmFtZSk7CiAjZW5kaWYKIH0KIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>