<?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>107753</bug_id>
          
          <creation_ts>2013-01-23 15:55:12 -0800</creation_ts>
          <short_desc>The background HTML parser should be able to parse speculatively</short_desc>
          <delta_ts>2013-01-30 18:42:12 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>107762</dependson>
    
    <dependson>107763</dependson>
    
    <dependson>107764</dependson>
          <blocked>106127</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Barth">abarth</reporter>
          <assigned_to name="Adam Barth">abarth</assigned_to>
          <cc>gyuyoung.kim</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>rakuco</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>814761</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-01-23 15:55:12 -0800</bug_when>
    <thetext>The background HTML parser should be able to parse speculatively</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>814762</commentid>
    <comment_count>1</comment_count>
      <attachid>184334</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-01-23 15:56:05 -0800</bug_when>
    <thetext>Created attachment 184334
work in progress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>814830</commentid>
    <comment_count>2</comment_count>
      <attachid>184347</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-01-23 16:47:27 -0800</bug_when>
    <thetext>Created attachment 184347
passes a new test</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>820748</commentid>
    <comment_count>3</comment_count>
      <attachid>185608</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-01-30 16:06:15 -0800</bug_when>
    <thetext>Created attachment 185608
still need to build system spelunk</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>820756</commentid>
    <comment_count>4</comment_count>
      <attachid>185609</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-01-30 16:10:25 -0800</bug_when>
    <thetext>Created attachment 185609
everyone but xcode</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>820812</commentid>
    <comment_count>5</comment_count>
      <attachid>185624</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-01-30 16:49:13 -0800</bug_when>
    <thetext>Created attachment 185624
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>820843</commentid>
    <comment_count>6</comment_count>
      <attachid>185624</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-01-30 17:11:04 -0800</bug_when>
    <thetext>Comment on attachment 185624
Patch

This looks amazing. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>820884</commentid>
    <comment_count>7</comment_count>
      <attachid>185624</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-01-30 17:51:16 -0800</bug_when>
    <thetext>Comment on attachment 185624
Patch

Thanks :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>820885</commentid>
    <comment_count>8</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-01-30 17:53:16 -0800</bug_when>
    <thetext>One downside to this approach is that BackgroundHTMLInputStream ends up keeping the entire input stream (instead of discarding StringImpls as it advances).  My plan is to have the main thread send the BackgroundHTMLParser a message that it &quot;continued past&quot; a certain checkpoint, which will let the BackgroundHTMLInputStream discard whatever data would be needed to rewind to that checkpoint.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>820925</commentid>
    <comment_count>9</comment_count>
      <attachid>185624</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-30 18:19:09 -0800</bug_when>
    <thetext>Comment on attachment 185624
Patch

Rejecting attachment 185624 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;--bot-id=gce-cq-01&apos;, &apos;land-attachment&apos;, &apos;--force-clean&apos;, &apos;--non-interactive&apos;, &apos;--parent-command=commit-queue&apos;, 185624, &apos;--port=chromium-xvfb&apos;]&quot; exit_code: 2 cwd: /mnt/git/webkit-commit-queue

Last 500 characters of output:
rce/WebKit/chromium/webkit/media/crypto/ppapi/cdm --revision 173055 --non-interactive --force --accept theirs-conflict --ignore-externals&apos; in &apos;/mnt/git/webkit-commit-queue/Source/WebKit/chromium&apos;
56&gt;At revision 173055.

________ running &apos;/usr/bin/python tools/clang/scripts/update.py --mac-only&apos; in &apos;/mnt/git/webkit-commit-queue/Source/WebKit/chromium&apos;

________ running &apos;/usr/bin/python gyp_webkit&apos; in &apos;/mnt/git/webkit-commit-queue/Source/WebKit/chromium&apos;
Updating webkit projects from gyp files...

Full output: http://queues.webkit.org/results/16199989</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>820952</commentid>
    <comment_count>10</comment_count>
      <attachid>185624</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-30 18:42:06 -0800</bug_when>
    <thetext>Comment on attachment 185624
Patch

Clearing flags on attachment: 185624

Committed r141363: &lt;http://trac.webkit.org/changeset/141363&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>820953</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-30 18:42:12 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>184334</attachid>
            <date>2013-01-23 15:56:05 -0800</date>
            <delta_ts>2013-01-23 16:47:26 -0800</delta_ts>
            <desc>work in progress</desc>
            <filename>bug-107753-20130123155258.patch</filename>
            <type>text/plain</type>
            <size>14783</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQwNTkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDZlMTFhYmIwNzJhY2Vl
NDNiZTZkODdjNWU5MGU4Yzg1MDQ5ZGMxZC4uNWY1ZjBhOTlhYTlhZDk5ZjY5ZWUyNGU2OTM2OTYx
ZWE2N2JiOGUzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDEzLTAxLTIzICBBZGFt
IEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVGhlIGJhY2tncm91bmQgSFRN
TCBwYXJzZXIgc2hvdWxkIGJlIGFibGUgdG8gcGFyc2Ugc3BlY3VsYXRpdmVseQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA3NzUzCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIChPT1BT
ISkuCisKKyAgICAgICAgKiBodG1sL3BhcnNlci9CYWNrZ3JvdW5kSFRNTFBhcnNlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpCYWNrZ3JvdW5kSFRNTFBhcnNlcjo6QmFja2dyb3VuZEhUTUxQYXJz
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6QmFja2dyb3VuZEhUTUxQYXJzZXI6OmFwcGVuZCk6Cisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkJhY2tncm91bmRIVE1MUGFyc2Vy
OjpyZXN1bWVQYXJzaW5nQWZ0ZXJGYWlsZWRTcGVjdWxhdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpCYWNrZ3JvdW5kSFRNTFBhcnNlcjo6bWFya0VuZE9mRmlsZSk6CisgICAgICAgIChXZWJDb3Jl
OjpCYWNrZ3JvdW5kSFRNTFBhcnNlcjo6cHVtcFRva2VuaXplcik6CisgICAgICAgIChXZWJDb3Jl
OjpCYWNrZ3JvdW5kSFRNTFBhcnNlcjo6c2VuZFRva2Vuc1RvTWFpblRocmVhZCk6CisgICAgICAg
IChXZWJDb3JlOjpCYWNrZ3JvdW5kSFRNTFBhcnNlcjo6Y3JlYXRlUGFydGlhbCk6CisgICAgICAg
IChXZWJDb3JlOjpCYWNrZ3JvdW5kSFRNTFBhcnNlcjo6YXBwZW5kUGFydGlhbCk6CisgICAgICAg
IChXZWJDb3JlOjpCYWNrZ3JvdW5kSFRNTFBhcnNlcjo6ZmluaXNoUGFydGlhbCk6CisgICAgICAg
IChXZWJDb3JlOjpCYWNrZ3JvdW5kSFRNTFBhcnNlcjo6cmVzdW1lUGFyc2luZ0FmdGVyRmFpbGVk
U3BlY3VsYXRpb25QYXJ0aWFsKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9CYWNrZ3JvdW5kSFRN
TFBhcnNlci5oOgorICAgICAgICAoQmFja2dyb3VuZEhUTUxQYXJzZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6QmFja2dyb3VuZEhUTUxQYXJzZXI6OmNyZWF0ZSk6CisgICAgICAgICogaHRtbC9wYXJz
ZXIvSFRNTERvY3VtZW50UGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxEb2N1bWVu
dFBhcnNlcjo6ZGlkUmVjZWl2ZVRva2Vuc0Zyb21CYWNrZ3JvdW5kUGFyc2VyKToKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxEb2N1bWVudFBhcnNlcjo6ZGlkRmFpbFNwZWN1bGF0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTERvY3VtZW50UGFyc2VyOjpwcm9j
ZXNzVG9rZW5zRnJvbUJhY2tncm91bmRQYXJzZXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTERv
Y3VtZW50UGFyc2VyOjppbnNlcnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTERvY3VtZW50UGFy
c2VyOjpyZXN1bWVQYXJzaW5nQWZ0ZXJTY3JpcHRFeGVjdXRpb24pOgorICAgICAgICAqIGh0bWwv
cGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5oOgorICAgICAgICAoUGFyc2VkQ2h1bmspOgorICAg
ICAgICAoSFRNTERvY3VtZW50UGFyc2VyKToKKwogMjAxMy0wMS0yMyAgVG9ueSBDaGFuZyAgPHRv
bnlAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHNldCBzdm46ZW9sLXN0eWxl
IHRvIENSTEYgb24gV2luZG93cyAuc2xuIGZpbGVzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9wYXJzZXIvQmFja2dyb3VuZEhUTUxQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9wYXJzZXIvQmFja2dyb3VuZEhUTUxQYXJzZXIuY3BwCmluZGV4IGMwZWY0MDQ3Yjk4NmZm
MWE2YTNkNzk4NDI0OTBiZTg5MzJhNzY2Y2IuLjFjMmQwYjg1NjhiMjQxNjA3MGFjM2E2Njk3MzA0
ZDQxNmEwMWViOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0JhY2tn
cm91bmRIVE1MUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9CYWNr
Z3JvdW5kSFRNTFBhcnNlci5jcHAKQEAgLTgyLDcgKzgyLDcgQEAgUGFyc2VyTWFwOjpCYWNrZ3Jv
dW5kUGFyc2VyTWFwJiBQYXJzZXJNYXA6OmJhY2tncm91bmRQYXJzZXJzKCkKICAgICByZXR1cm4g
bV9iYWNrZ3JvdW5kUGFyc2VyczsKIH0KIAotQmFja2dyb3VuZEhUTUxQYXJzZXI6OkJhY2tncm91
bmRIVE1MUGFyc2VyKGNvbnN0IEhUTUxQYXJzZXJPcHRpb25zJiBvcHRpb25zLCBXZWFrUHRyPEhU
TUxEb2N1bWVudFBhcnNlcj4gcGFyc2VyKQorQmFja2dyb3VuZEhUTUxQYXJzZXI6OkJhY2tncm91
bmRIVE1MUGFyc2VyKGNvbnN0IEhUTUxQYXJzZXJPcHRpb25zJiBvcHRpb25zLCBjb25zdCBXZWFr
UHRyPEhUTUxEb2N1bWVudFBhcnNlcj4mIHBhcnNlcikKICAgICA6IG1faW5Gb3JlaWduQ29udGVu
dChmYWxzZSkKICAgICAsIG1fdG9rZW5pemVyKEhUTUxUb2tlbml6ZXI6OmNyZWF0ZShvcHRpb25z
KSkKICAgICAsIG1fb3B0aW9ucyhvcHRpb25zKQpAQCAtOTMsNyArOTMsMjEgQEAgQmFja2dyb3Vu
ZEhUTUxQYXJzZXI6OkJhY2tncm91bmRIVE1MUGFyc2VyKGNvbnN0IEhUTUxQYXJzZXJPcHRpb25z
JiBvcHRpb25zLCBXZWEKIAogdm9pZCBCYWNrZ3JvdW5kSFRNTFBhcnNlcjo6YXBwZW5kKGNvbnN0
IFN0cmluZyYgaW5wdXQpCiB7Ci0gICAgbV9pbnB1dC5hcHBlbmQoU2VnbWVudGVkU3RyaW5nKGlu
cHV0KSk7CisgICAgU2VnbWVudGVkU3RyaW5nIHN0cmluZyA9IGlucHV0OworICAgIG1faW5wdXQu
YXBwZW5kKHN0cmluZyk7CisKKyAgICAvLyBGSVhNRTogVGhpcyBzZWVtcyByZWFsbHkgaW5lZmZp
Y2llbnQuLi4KKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1faW5wdXRDaGVja3BvaW50cy5z
aXplKCk7ICsraSkKKyAgICAgICAgbV9pbnB1dENoZWNrcG9pbnRzW2ldLmFwcGVuZChzdHJpbmcp
OworCisgICAgcHVtcFRva2VuaXplcigpOworfQorCit2b2lkIEJhY2tncm91bmRIVE1MUGFyc2Vy
OjpyZXN1bWVQYXJzaW5nQWZ0ZXJGYWlsZWRTcGVjdWxhdGlvbihjb25zdCBXZWFrUHRyPEhUTUxE
b2N1bWVudFBhcnNlcj4mIHBhcnNlciwgc2l6ZV90IGlucHV0Q2hlY2twb2ludCkKK3sKKyAgICBt
X3BhcnNlciA9IHBhcnNlcjsKKyAgICBtX2lucHV0ID0gbV9pbnB1dENoZWNrcG9pbnRzW2lucHV0
Q2hlY2twb2ludF07CisgICAgLy8gRklYTUU6IFdlIHNob3VsZCBnZXQgdGhlIHRva2VuaXplciBz
dGF0ZSBmcm9tIHRoZSBtYWluIHRocmVhZC4KICAgICBwdW1wVG9rZW5pemVyKCk7CiB9CiAKQEAg
LTExMCw4ICsxMjQsMTQgQEAgdm9pZCBCYWNrZ3JvdW5kSFRNTFBhcnNlcjo6bWFya0VuZE9mRmls
ZSgpCiAgICAgY29uc3QgTENoYXIgZW5kT2ZGaWxlTWFya2VyID0gMDsKIAogICAgIEFTU0VSVCgh
bV9pbnB1dC5pc0Nsb3NlZCgpKTsKLSAgICBtX2lucHV0LmFwcGVuZChTZWdtZW50ZWRTdHJpbmco
U3RyaW5nKCZlbmRPZkZpbGVNYXJrZXIsIDEpKSk7CisgICAgU2VnbWVudGVkU3RyaW5nIGVvZiA9
IFNlZ21lbnRlZFN0cmluZyhTdHJpbmcoJmVuZE9mRmlsZU1hcmtlciwgMSkpOworICAgIG1faW5w
dXQuYXBwZW5kKGVvZik7CiAgICAgbV9pbnB1dC5jbG9zZSgpOworCisgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBtX2lucHV0Q2hlY2twb2ludHMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgbV9p
bnB1dENoZWNrcG9pbnRzW2ldLmFwcGVuZChlb2YpOworICAgICAgICBtX2lucHV0Q2hlY2twb2lu
dHNbaV0uY2xvc2UoKTsKKyAgICB9CiB9CiAKIGJvb2wgQmFja2dyb3VuZEhUTUxQYXJzZXI6OnNp
bXVsYXRlVHJlZUJ1aWxkZXIoY29uc3QgQ29tcGFjdEhUTUxUb2tlbiYgdG9rZW4pCkBAIC0xNTcs
NyArMTc3LDEwIEBAIHZvaWQgQmFja2dyb3VuZEhUTUxQYXJzZXI6OnB1bXBUb2tlbml6ZXIoKQog
ICAgICAgICBtX3BlbmRpbmdUb2tlbnMtPmFwcGVuZChDb21wYWN0SFRNTFRva2VuKG1fdG9rZW4s
IFRleHRQb3NpdGlvbihtX2lucHV0LmN1cnJlbnRMaW5lKCksIG1faW5wdXQuY3VycmVudENvbHVt
bigpKSkpOwogICAgICAgICBtX3Rva2VuLmNsZWFyKCk7CiAKLSAgICAgICAgaWYgKCFzaW11bGF0
ZVRyZWVCdWlsZGVyKG1fcGVuZGluZ1Rva2Vucy0+bGFzdCgpKSB8fCBtX3BlbmRpbmdUb2tlbnMt
PnNpemUoKSA+PSBwZW5kaW5nVG9rZW5MaW1pdCkKKyAgICAgICAgaWYgKCFzaW11bGF0ZVRyZWVC
dWlsZGVyKG1fcGVuZGluZ1Rva2Vucy0+bGFzdCgpKSkgeworICAgICAgICAgICAgbV9pbnB1dENo
ZWNrcG9pbnRzLmFwcGVuZChtX2lucHV0KTsKKyAgICAgICAgICAgIHNlbmRUb2tlbnNUb01haW5U
aHJlYWQoKTsKKyAgICAgICAgfSBlbHNlIGlmIChtX3BlbmRpbmdUb2tlbnMtPnNpemUoKSA+PSBw
ZW5kaW5nVG9rZW5MaW1pdCkKICAgICAgICAgICAgIHNlbmRUb2tlbnNUb01haW5UaHJlYWQoKTsK
ICAgICB9CiAKQEAgLTE3MywxMiArMTk2LDE1IEBAIHZvaWQgQmFja2dyb3VuZEhUTUxQYXJzZXI6
OnNlbmRUb2tlbnNUb01haW5UaHJlYWQoKQogICAgIGNoZWNrVGhhdFRva2Vuc0FyZVNhZmVUb1Nl
bmRUb0Fub3RoZXJUaHJlYWQobV9wZW5kaW5nVG9rZW5zLmdldCgpKTsKICNlbmRpZgogCi0gICAg
Y2FsbE9uTWFpblRocmVhZChiaW5kKCZIVE1MRG9jdW1lbnRQYXJzZXI6OmRpZFJlY2VpdmVUb2tl
bnNGcm9tQmFja2dyb3VuZFBhcnNlciwgbV9wYXJzZXIsIG1fcGVuZGluZ1Rva2Vucy5yZWxlYXNl
KCkpKTsKKyAgICBPd25QdHI8SFRNTERvY3VtZW50UGFyc2VyOjpQYXJzZWRDaHVuaz4gY2h1bmsg
PSBhZG9wdFB0cihuZXcgSFRNTERvY3VtZW50UGFyc2VyOjpQYXJzZWRDaHVuayk7CisgICAgY2h1
bmstPnRva2VucyA9IG1fcGVuZGluZ1Rva2Vucy5yZWxlYXNlKCk7CisgICAgY2h1bmstPmlucHV0
Q2hlY2twb2ludCA9IG1faW5wdXRDaGVja3BvaW50cy5zaXplKCkgLSAxOworICAgIGNhbGxPbk1h
aW5UaHJlYWQoYmluZCgmSFRNTERvY3VtZW50UGFyc2VyOjpkaWRSZWNlaXZlVG9rZW5zRnJvbUJh
Y2tncm91bmRQYXJzZXIsIG1fcGFyc2VyLCBjaHVuay5yZWxlYXNlKCkpKTsKIAogICAgIG1fcGVu
ZGluZ1Rva2VucyA9IGFkb3B0UHRyKG5ldyBDb21wYWN0SFRNTFRva2VuU3RyZWFtKTsKIH0KIAot
dm9pZCBCYWNrZ3JvdW5kSFRNTFBhcnNlcjo6Y3JlYXRlUGFydGlhbChQYXJzZXJJZGVudGlmaWVy
IGlkZW50aWZpZXIsIEhUTUxQYXJzZXJPcHRpb25zIG9wdGlvbnMsIFdlYWtQdHI8SFRNTERvY3Vt
ZW50UGFyc2VyPiBwYXJzZXIpCit2b2lkIEJhY2tncm91bmRIVE1MUGFyc2VyOjpjcmVhdGVQYXJ0
aWFsKFBhcnNlcklkZW50aWZpZXIgaWRlbnRpZmllciwgSFRNTFBhcnNlck9wdGlvbnMgb3B0aW9u
cywgY29uc3QgV2Vha1B0cjxIVE1MRG9jdW1lbnRQYXJzZXI+JiBwYXJzZXIpCiB7CiAgICAgQVNT
RVJUKCFwYXJzZXJNYXAoKS5iYWNrZ3JvdW5kUGFyc2VycygpLmdldChpZGVudGlmaWVyKSk7CiAg
ICAgcGFyc2VyTWFwKCkuYmFja2dyb3VuZFBhcnNlcnMoKS5zZXQoaWRlbnRpZmllciwgQmFja2dy
b3VuZEhUTUxQYXJzZXI6OmNyZWF0ZShvcHRpb25zLCBwYXJzZXIpKTsKQEAgLTE5MiwxNCArMjE4
LDIwIEBAIHZvaWQgQmFja2dyb3VuZEhUTUxQYXJzZXI6OnN0b3BQYXJ0aWFsKFBhcnNlcklkZW50
aWZpZXIgaWRlbnRpZmllcikKIHZvaWQgQmFja2dyb3VuZEhUTUxQYXJzZXI6OmFwcGVuZFBhcnRp
YWwoUGFyc2VySWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGlucHV0KQogewog
ICAgIEFTU0VSVCghaW5wdXQuaW1wbCgpIHx8IGlucHV0LmltcGwoKS0+aGFzT25lUmVmKCkgfHwg
aW5wdXQuaXNFbXB0eSgpKTsKLSAgICBpZiAoQmFja2dyb3VuZEhUTUxQYXJzZXIqIHBhcnNlciA9
IHBhcnNlck1hcCgpLmJhY2tncm91bmRQYXJzZXJzKCkuZ2V0KGlkZW50aWZpZXIpKQotICAgICAg
ICBwYXJzZXItPmFwcGVuZChpbnB1dCk7CisgICAgaWYgKEJhY2tncm91bmRIVE1MUGFyc2VyKiBi
YWNrZ3JvdW5kUGFyc2VyID0gcGFyc2VyTWFwKCkuYmFja2dyb3VuZFBhcnNlcnMoKS5nZXQoaWRl
bnRpZmllcikpCisgICAgICAgIGJhY2tncm91bmRQYXJzZXItPmFwcGVuZChpbnB1dCk7CiB9CiAK
IHZvaWQgQmFja2dyb3VuZEhUTUxQYXJzZXI6OmZpbmlzaFBhcnRpYWwoUGFyc2VySWRlbnRpZmll
ciBpZGVudGlmaWVyKQogewotICAgIGlmIChCYWNrZ3JvdW5kSFRNTFBhcnNlciogcGFyc2VyID0g
cGFyc2VyTWFwKCkuYmFja2dyb3VuZFBhcnNlcnMoKS5nZXQoaWRlbnRpZmllcikpCi0gICAgICAg
IHBhcnNlci0+ZmluaXNoKCk7CisgICAgaWYgKEJhY2tncm91bmRIVE1MUGFyc2VyKiBiYWNrZ3Jv
dW5kUGFyc2VyID0gcGFyc2VyTWFwKCkuYmFja2dyb3VuZFBhcnNlcnMoKS5nZXQoaWRlbnRpZmll
cikpCisgICAgICAgIGJhY2tncm91bmRQYXJzZXItPmZpbmlzaCgpOworfQorCit2b2lkIEJhY2tn
cm91bmRIVE1MUGFyc2VyOjpyZXN1bWVQYXJzaW5nQWZ0ZXJGYWlsZWRTcGVjdWxhdGlvblBhcnRp
YWwoUGFyc2VySWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBXZWFrUHRyPEhUTUxEb2N1bWVu
dFBhcnNlcj4mIHBhcnNlciwgc2l6ZV90IGlucHV0Q2hlY2twb2ludCkKK3sKKyAgICBpZiAoQmFj
a2dyb3VuZEhUTUxQYXJzZXIqIGJhY2tncm91bmRQYXJzZXIgPSBwYXJzZXJNYXAoKS5iYWNrZ3Jv
dW5kUGFyc2VycygpLmdldChpZGVudGlmaWVyKSkKKyAgICAgICAgYmFja2dyb3VuZFBhcnNlci0+
cmVzdW1lUGFyc2luZ0FmdGVyRmFpbGVkU3BlY3VsYXRpb24ocGFyc2VyLCBpbnB1dENoZWNrcG9p
bnQpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9CYWNr
Z3JvdW5kSFRNTFBhcnNlci5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQmFja2dyb3Vu
ZEhUTUxQYXJzZXIuaAppbmRleCBlNmU4Mjc2ZjZmODAyMmVhOGQ1MmY5M2Y0MGNiMWUxY2MwNTY5
MTgxLi5iMWFjYTVkOTllMWU4N2RhZTdmZTU3NjhhYWJlZjZmMGIwZmQ1NDU3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9CYWNrZ3JvdW5kSFRNTFBhcnNlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0JhY2tncm91bmRIVE1MUGFyc2VyLmgKQEAgLTQ1
LDE4ICs0NSwyMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBhcHBlbmQoY29uc3QgU3RyaW5nJik7CiAg
ICAgdm9pZCBmaW5pc2goKTsKIAotICAgIHN0YXRpYyBQYXNzT3duUHRyPEJhY2tncm91bmRIVE1M
UGFyc2VyPiBjcmVhdGUoY29uc3QgSFRNTFBhcnNlck9wdGlvbnMmIG9wdGlvbnMsIFdlYWtQdHI8
SFRNTERvY3VtZW50UGFyc2VyPiBwYXJzZXIpCisgICAgdm9pZCByZXN1bWVQYXJzaW5nQWZ0ZXJG
YWlsZWRTcGVjdWxhdGlvbihjb25zdCBXZWFrUHRyPEhUTUxEb2N1bWVudFBhcnNlcj4mLCBzaXpl
X3QgaW5wdXRDaGVja3BvaW50KTsKKworICAgIHN0YXRpYyBQYXNzT3duUHRyPEJhY2tncm91bmRI
VE1MUGFyc2VyPiBjcmVhdGUoY29uc3QgSFRNTFBhcnNlck9wdGlvbnMmIG9wdGlvbnMsIGNvbnN0
IFdlYWtQdHI8SFRNTERvY3VtZW50UGFyc2VyPiYgcGFyc2VyKQogICAgIHsKICAgICAgICAgcmV0
dXJuIGFkb3B0UHRyKG5ldyBCYWNrZ3JvdW5kSFRNTFBhcnNlcihvcHRpb25zLCBwYXJzZXIpKTsK
ICAgICB9CiAKLSAgICBzdGF0aWMgdm9pZCBjcmVhdGVQYXJ0aWFsKFBhcnNlcklkZW50aWZpZXIs
IEhUTUxQYXJzZXJPcHRpb25zLCBXZWFrUHRyPEhUTUxEb2N1bWVudFBhcnNlcj4pOworICAgIHN0
YXRpYyB2b2lkIGNyZWF0ZVBhcnRpYWwoUGFyc2VySWRlbnRpZmllciwgSFRNTFBhcnNlck9wdGlv
bnMsIGNvbnN0IFdlYWtQdHI8SFRNTERvY3VtZW50UGFyc2VyPiYpOwogICAgIHN0YXRpYyB2b2lk
IHN0b3BQYXJ0aWFsKFBhcnNlcklkZW50aWZpZXIpOwogICAgIHN0YXRpYyB2b2lkIGFwcGVuZFBh
cnRpYWwoUGFyc2VySWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBpbnB1dCk7CiAgICAgc3RhdGlj
IHZvaWQgZmluaXNoUGFydGlhbChQYXJzZXJJZGVudGlmaWVyKTsKKyAgICBzdGF0aWMgdm9pZCBy
ZXN1bWVQYXJzaW5nQWZ0ZXJGYWlsZWRTcGVjdWxhdGlvblBhcnRpYWwoUGFyc2VySWRlbnRpZmll
ciwgY29uc3QgV2Vha1B0cjxIVE1MRG9jdW1lbnRQYXJzZXI+Jiwgc2l6ZV90IGlucHV0Q2hlY2tw
b2ludCk7CiAKIHByaXZhdGU6Ci0gICAgQmFja2dyb3VuZEhUTUxQYXJzZXIoY29uc3QgSFRNTFBh
cnNlck9wdGlvbnMmLCBXZWFrUHRyPEhUTUxEb2N1bWVudFBhcnNlcj4pOworICAgIEJhY2tncm91
bmRIVE1MUGFyc2VyKGNvbnN0IEhUTUxQYXJzZXJPcHRpb25zJiwgY29uc3QgV2Vha1B0cjxIVE1M
RG9jdW1lbnRQYXJzZXI+Jik7CiAKICAgICB2b2lkIG1hcmtFbmRPZkZpbGUoKTsKICAgICB2b2lk
IHB1bXBUb2tlbml6ZXIoKTsKQEAgLTcxLDYgKzc0LDggQEAgcHJpdmF0ZToKICAgICBIVE1MUGFy
c2VyT3B0aW9ucyBtX29wdGlvbnM7CiAgICAgV2Vha1B0cjxIVE1MRG9jdW1lbnRQYXJzZXI+IG1f
cGFyc2VyOwogICAgIE93blB0cjxDb21wYWN0SFRNTFRva2VuU3RyZWFtPiBtX3BlbmRpbmdUb2tl
bnM7CisKKyAgICBWZWN0b3I8U2VnbWVudGVkU3RyaW5nPiBtX2lucHV0Q2hlY2twb2ludHM7CiB9
OwogCiBjbGFzcyBQYXJzZXJNYXAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9w
YXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2Vy
L0hUTUxEb2N1bWVudFBhcnNlci5jcHAKaW5kZXggNDYxNTlmMGM2NzFhOTE1MGUxOTZjOGE4YzVj
ZTM0Njg3MzBhN2ZlMy4uNWE0OTU5ZTRhOTQ3N2Q5ZTRiOTk4NjM1MTE4MmI1OWMzYjBjZDc2YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2Vy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIu
Y3BwCkBAIC0yNjgsMTcgKzI2OCwzMCBAQCBib29sIEhUTUxEb2N1bWVudFBhcnNlcjo6Y2FuVGFr
ZU5leHRUb2tlbihTeW5jaHJvbm91c01vZGUgbW9kZSwgUHVtcFNlc3Npb24mIHNlcwogCiAjaWYg
RU5BQkxFKFRIUkVBREVEX0hUTUxfUEFSU0VSKQogCi12b2lkIEhUTUxEb2N1bWVudFBhcnNlcjo6
ZGlkUmVjZWl2ZVRva2Vuc0Zyb21CYWNrZ3JvdW5kUGFyc2VyKFBhc3NPd25QdHI8Q29tcGFjdEhU
TUxUb2tlblN0cmVhbT4gdG9rZW5zKQordm9pZCBIVE1MRG9jdW1lbnRQYXJzZXI6OmRpZFJlY2Vp
dmVUb2tlbnNGcm9tQmFja2dyb3VuZFBhcnNlcihQYXNzT3duUHRyPFBhcnNlZENodW5rPiBjaHVu
aykKIHsKICAgICBpZiAoaXNXYWl0aW5nRm9yU2NyaXB0cygpKSB7Ci0gICAgICAgIG1fcGVuZGlu
Z1Rva2Vucy5hcHBlbmQodG9rZW5zKTsKKyAgICAgICAgbV9zcGVjdWxhdGlvbnMuYXBwZW5kKGNo
dW5rKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBBU1NFUlQobV9wZW5kaW5nVG9rZW5z
LmlzRW1wdHkoKSk7Ci0gICAgcHJvY2Vzc1Rva2Vuc0Zyb21CYWNrZ3JvdW5kUGFyc2VyKHRva2Vu
cyk7CisgICAgQVNTRVJUKG1fc3BlY3VsYXRpb25zLmlzRW1wdHkoKSk7CisgICAgcHJvY2Vzc1Rv
a2Vuc0Zyb21CYWNrZ3JvdW5kUGFyc2VyKGNodW5rKTsKIH0KIAotdm9pZCBIVE1MRG9jdW1lbnRQ
YXJzZXI6OnByb2Nlc3NUb2tlbnNGcm9tQmFja2dyb3VuZFBhcnNlcihQYXNzT3duUHRyPENvbXBh
Y3RIVE1MVG9rZW5TdHJlYW0+IHRva2VucykKK3ZvaWQgSFRNTERvY3VtZW50UGFyc2VyOjpkaWRG
YWlsU3BlY3VsYXRpb24oKQoreworICAgIG1fd2Vha0ZhY3RvcnkucmV2b2tlQWxsKCk7CisgICAg
bV9zcGVjdWxhdGlvbnMuY2xlYXIoKTsKKworICAgIFBhcnNlcklkZW50aWZpZXIgaWRlbnRpZmll
ciA9IFBhcnNlck1hcDo6aWRlbnRpZmllckZvclBhcnNlcih0aGlzKTsKKyAgICBIVE1MUGFyc2Vy
VGhyZWFkOjpzaGFyZWQoKS0+cG9zdFRhc2soYmluZCgKKyAgICAgICAgJkJhY2tncm91bmRIVE1M
UGFyc2VyOjpyZXN1bWVQYXJzaW5nQWZ0ZXJGYWlsZWRTcGVjdWxhdGlvblBhcnRpYWwsCisgICAg
ICAgIGlkZW50aWZpZXIsCisgICAgICAgIG1fd2Vha0ZhY3RvcnkuY3JlYXRlV2Vha1B0cigpLAor
ICAgICAgICBtX2N1cnJlbnRDaHVuay0+aW5wdXRDaGVja3BvaW50KSk7Cit9CisKK3ZvaWQgSFRN
TERvY3VtZW50UGFyc2VyOjpwcm9jZXNzVG9rZW5zRnJvbUJhY2tncm91bmRQYXJzZXIoUGFzc093
blB0cjxQYXJzZWRDaHVuaz4gY2h1bmspCiB7CiAgICAgQVNTRVJUKHNob3VsZFVzZVRocmVhZGlu
ZygpKTsKIApAQCAtMjg2LDYgKzI5OSwxMCBAQCB2b2lkIEhUTUxEb2N1bWVudFBhcnNlcjo6cHJv
Y2Vzc1Rva2Vuc0Zyb21CYWNrZ3JvdW5kUGFyc2VyKFBhc3NPd25QdHI8Q29tcGFjdEhUTQogICAg
IC8vIGJ1dCB3ZSBuZWVkIHRvIGVuc3VyZSBpdCBpc24ndCBkZWxldGVkIHlldC4KICAgICBSZWZQ
dHI8SFRNTERvY3VtZW50UGFyc2VyPiBwcm90ZWN0KHRoaXMpOwogCisgICAgQVNTRVJUKCFtX2N1
cnJlbnRDaHVuayk7CisgICAgbV9jdXJyZW50Q2h1bmsgPSBjaHVuazsKKyAgICBPd25QdHI8Q29t
cGFjdEhUTUxUb2tlblN0cmVhbT4gdG9rZW5zID0gbV9jdXJyZW50Q2h1bmstPnRva2Vucy5yZWxl
YXNlKCk7CisKICAgICAvLyBGSVhNRTogQWRkIHN1cHBvcnQgZm9yIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbi4KIAogICAgIGZvciAoVmVjdG9yPENvbXBhY3RIVE1MVG9rZW4+Ojpjb25zdF9pdGVy
YXRvciBpdCA9IHRva2Vucy0+YmVnaW4oKTsgaXQgIT0gdG9rZW5zLT5lbmQoKTsgKytpdCkgewpA
QCAtMjk2LDcgKzMxMyw3IEBAIHZvaWQgSFRNTERvY3VtZW50UGFyc2VyOjpwcm9jZXNzVG9rZW5z
RnJvbUJhY2tncm91bmRQYXJzZXIoUGFzc093blB0cjxDb21wYWN0SFRNCiAgICAgICAgIGNvbnN0
cnVjdFRyZWVGcm9tQ29tcGFjdEhUTUxUb2tlbigqaXQpOwogCiAgICAgICAgIGlmIChpc1N0b3Bw
ZWQoKSkKLSAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAg
IC8vIEZJWE1FOiBXZSdsbCBwcm9iYWJseSBuZWVkIHRvIGNoZWNrIGRvY3VtZW50KCktPmZyYW1l
KCktPm5hdmlnYXRpb25TY2hlZHVsZXIoKS0+bG9jYXRpb25DaGFuZ2VQZW5kaW5nKCkpCiAgICAg
ICAgIC8vIGFzIHdlIGRvIGluIGNhblRha2VOZXh0VG9rZW47CkBAIC0zMDQsMTUgKzMyMSwxNyBA
QCB2b2lkIEhUTUxEb2N1bWVudFBhcnNlcjo6cHJvY2Vzc1Rva2Vuc0Zyb21CYWNrZ3JvdW5kUGFy
c2VyKFBhc3NPd25QdHI8Q29tcGFjdEhUTQogICAgICAgICBpZiAoaXNXYWl0aW5nRm9yU2NyaXB0
cygpKSB7CiAgICAgICAgICAgICBBU1NFUlQoaXQgKyAxID09IHRva2Vucy0+ZW5kKCkpOyAvLyBU
aGUgPC9zY3JpcHQ+IGlzIGFzc3VtZWQgdG8gYmUgdGhlIGxhc3QgdG9rZW4gb2YgdGhpcyBidW5j
aC4KICAgICAgICAgICAgIHJ1blNjcmlwdHNGb3JQYXVzZWRUcmVlQnVpbGRlcigpOwotICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAogICAgICAgICBp
ZiAoaXQtPnR5cGUoKSA9PSBIVE1MVG9rZW5UeXBlczo6RW5kT2ZGaWxlKSB7CiAgICAgICAgICAg
ICBBU1NFUlQoaXQgKyAxID09IHRva2Vucy0+ZW5kKCkpOyAvLyBUaGUgRU9GIGlzIGFzc3VtZWQg
dG8gYmUgdGhlIGxhc3QgdG9rZW4gb2YgdGhpcyBidW5jaC4KICAgICAgICAgICAgIHByZXBhcmVU
b1N0b3BQYXJzaW5nKCk7Ci0gICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQogICAgIH0KKworICAgIG1fY3VycmVudENodW5rLmNsZWFyKCk7CiB9CiAKICNl
bmRpZiAvLyBFTkFCTEUoVEhSRUFERURfSFRNTF9QQVJTRVIpCkBAIC00MzksOCArNDU4LDI0IEBA
IHZvaWQgSFRNTERvY3VtZW50UGFyc2VyOjppbnNlcnQoY29uc3QgU2VnbWVudGVkU3RyaW5nJiBz
b3VyY2UpCiAgICAgU2VnbWVudGVkU3RyaW5nIGV4Y2x1ZGVkTGluZU51bWJlclNvdXJjZShzb3Vy
Y2UpOwogICAgIGV4Y2x1ZGVkTGluZU51bWJlclNvdXJjZS5zZXRFeGNsdWRlTGluZU51bWJlcnMo
KTsKICAgICBtX2lucHV0Lmluc2VydEF0Q3VycmVudEluc2VydGlvblBvaW50KGV4Y2x1ZGVkTGlu
ZU51bWJlclNvdXJjZSk7CisKKyNpZiBFTkFCTEUoVEhSRUFERURfSFRNTF9QQVJTRVIpCisgICAg
aWYgKG1faGF2ZUJhY2tncm91bmRQYXJzZXIgJiYgIWluUHVtcFNlc3Npb24oKSkgeworICAgICAg
ICBtX3Rva2VuaXplci0+cmVzZXQoKTsKKyAgICAgICAgbV90b2tlbi5jbGVhcigpOworICAgIH0K
KyNlbmRpZgorCiAgICAgcHVtcFRva2VuaXplcklmUG9zc2libGUoRm9yY2VTeW5jaHJvbm91cyk7
Ci0gICAgCisKKyNpZiBFTkFCTEUoVEhSRUFERURfSFRNTF9QQVJTRVIpCisgICAgaWYgKG1faGF2
ZUJhY2tncm91bmRQYXJzZXIgJiYgIWluUHVtcFNlc3Npb24oKSkgeworICAgICAgICAvLyBGSVhN
RTogT3VyIHNwZWN1bGF0aW9uIGRvZXNuJ3QgYWx3YXlzIGZhaWwuLi4KKyAgICAgICAgZGlkRmFp
bFNwZWN1bGF0aW9uKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYKKwogICAgIGlm
IChpc1dhaXRpbmdGb3JTY3JpcHRzKCkpIHsKICAgICAgICAgLy8gQ2hlY2sgdGhlIGRvY3VtZW50
LndyaXRlKCkgb3V0cHV0IHdpdGggYSBzZXBhcmF0ZSBwcmVsb2FkIHNjYW5uZXIgYXMKICAgICAg
ICAgLy8gdGhlIG1haW4gc2Nhbm5lciBjYW4ndCBkZWFsIHdpdGggaW5zZXJ0aW9ucy4KQEAgLTY1
Nyw4ICs2OTIsOCBAQCB2b2lkIEhUTUxEb2N1bWVudFBhcnNlcjo6cmVzdW1lUGFyc2luZ0FmdGVy
U2NyaXB0RXhlY3V0aW9uKCkKIAogI2lmIEVOQUJMRShUSFJFQURFRF9IVE1MX1BBUlNFUikKICAg
ICBpZiAoc2hvdWxkVXNlVGhyZWFkaW5nKCkpIHsKLSAgICAgICAgd2hpbGUgKCFtX3BlbmRpbmdU
b2tlbnMuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBwcm9jZXNzVG9rZW5zRnJvbUJhY2tncm91
bmRQYXJzZXIobV9wZW5kaW5nVG9rZW5zLnRha2VGaXJzdCgpKTsKKyAgICAgICAgd2hpbGUgKCFt
X3NwZWN1bGF0aW9ucy5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIHByb2Nlc3NUb2tlbnNGcm9t
QmFja2dyb3VuZFBhcnNlcihtX3NwZWN1bGF0aW9ucy50YWtlRmlyc3QoKSk7CiAgICAgICAgICAg
ICBpZiAoaXNXYWl0aW5nRm9yU2NyaXB0cygpKQogICAgICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3Vt
ZW50UGFyc2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJz
ZXIuaAppbmRleCBmMTljYjEyMjk0NWVmNTk2MWYxN2Y3MGI5NWRlZDMzNDg0YjViYzFmLi43Mjdi
MzgyNjU4YmJiYzViYTJiMjk0ZDYwYzc3NzJlNTYzMGUxZTkzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuaApAQCAtODIsNyArODIsMTIgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByZXN1bWVTY2hlZHVsZWRUYXNrcygpOwogCiAjaWYg
RU5BQkxFKFRIUkVBREVEX0hUTUxfUEFSU0VSKQotICAgIHZvaWQgZGlkUmVjZWl2ZVRva2Vuc0Zy
b21CYWNrZ3JvdW5kUGFyc2VyKFBhc3NPd25QdHI8Q29tcGFjdEhUTUxUb2tlblN0cmVhbT4pOwor
ICAgIHN0cnVjdCBQYXJzZWRDaHVuayB7CisgICAgICAgIE93blB0cjxDb21wYWN0SFRNTFRva2Vu
U3RyZWFtPiB0b2tlbnM7CisgICAgICAgIHNpemVfdCBpbnB1dENoZWNrcG9pbnQ7CisgICAgfTsK
KworICAgIHZvaWQgZGlkUmVjZWl2ZVRva2Vuc0Zyb21CYWNrZ3JvdW5kUGFyc2VyKFBhc3NPd25Q
dHI8UGFyc2VkQ2h1bms+KTsKICNlbmRpZgogCiBwcm90ZWN0ZWQ6CkBAIC0xMjQsNyArMTI5LDgg
QEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoVEhSRUFERURfSFRNTF9QQVJTRVIpCiAgICAgdm9pZCBz
dGFydEJhY2tncm91bmRQYXJzZXIoKTsKICAgICB2b2lkIHN0b3BCYWNrZ3JvdW5kUGFyc2VyKCk7
Ci0gICAgdm9pZCBwcm9jZXNzVG9rZW5zRnJvbUJhY2tncm91bmRQYXJzZXIoUGFzc093blB0cjxD
b21wYWN0SFRNTFRva2VuU3RyZWFtPik7CisgICAgdm9pZCBwcm9jZXNzVG9rZW5zRnJvbUJhY2tn
cm91bmRQYXJzZXIoUGFzc093blB0cjxQYXJzZWRDaHVuaz4pOworICAgIHZvaWQgZGlkRmFpbFNw
ZWN1bGF0aW9uKCk7CiAjZW5kaWYKIAogICAgIGVudW0gU3luY2hyb25vdXNNb2RlIHsKQEAgLTE3
MSw3ICsxNzcsOCBAQCBwcml2YXRlOgogICAgIFhTU0F1ZGl0b3IgbV94c3NBdWRpdG9yOwogCiAj
aWYgRU5BQkxFKFRIUkVBREVEX0hUTUxfUEFSU0VSKQotICAgIERlcXVlPE93blB0cjxDb21wYWN0
SFRNTFRva2VuU3RyZWFtPiA+IG1fcGVuZGluZ1Rva2VuczsKKyAgICBPd25QdHI8UGFyc2VkQ2h1
bms+IG1fY3VycmVudENodW5rOworICAgIERlcXVlPE93blB0cjxQYXJzZWRDaHVuaz4gPiBtX3Nw
ZWN1bGF0aW9uczsKICAgICBXZWFrUHRyRmFjdG9yeTxIVE1MRG9jdW1lbnRQYXJzZXI+IG1fd2Vh
a0ZhY3Rvcnk7CiAjZW5kaWYKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>184347</attachid>
            <date>2013-01-23 16:47:27 -0800</date>
            <delta_ts>2013-01-30 16:06:13 -0800</delta_ts>
            <desc>passes a new test</desc>
            <filename>bug-107753-20130123164420.patch</filename>
            <type>text/plain</type>
            <size>19503</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQwNTkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDZlMTFhYmIwNzJhY2Vl
NDNiZTZkODdjNWU5MGU4Yzg1MDQ5ZGMxZC4uNWY1ZjBhOTlhYTlhZDk5ZjY5ZWUyNGU2OTM2OTYx
ZWE2N2JiOGUzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDEzLTAxLTIzICBBZGFt
IEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVGhlIGJhY2tncm91bmQgSFRN
TCBwYXJzZXIgc2hvdWxkIGJlIGFibGUgdG8gcGFyc2Ugc3BlY3VsYXRpdmVseQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA3NzUzCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIChPT1BT
ISkuCisKKyAgICAgICAgKiBodG1sL3BhcnNlci9CYWNrZ3JvdW5kSFRNTFBhcnNlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpCYWNrZ3JvdW5kSFRNTFBhcnNlcjo6QmFja2dyb3VuZEhUTUxQYXJz
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6QmFja2dyb3VuZEhUTUxQYXJzZXI6OmFwcGVuZCk6Cisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkJhY2tncm91bmRIVE1MUGFyc2Vy
OjpyZXN1bWVQYXJzaW5nQWZ0ZXJGYWlsZWRTcGVjdWxhdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpCYWNrZ3JvdW5kSFRNTFBhcnNlcjo6bWFya0VuZE9mRmlsZSk6CisgICAgICAgIChXZWJDb3Jl
OjpCYWNrZ3JvdW5kSFRNTFBhcnNlcjo6cHVtcFRva2VuaXplcik6CisgICAgICAgIChXZWJDb3Jl
OjpCYWNrZ3JvdW5kSFRNTFBhcnNlcjo6c2VuZFRva2Vuc1RvTWFpblRocmVhZCk6CisgICAgICAg
IChXZWJDb3JlOjpCYWNrZ3JvdW5kSFRNTFBhcnNlcjo6Y3JlYXRlUGFydGlhbCk6CisgICAgICAg
IChXZWJDb3JlOjpCYWNrZ3JvdW5kSFRNTFBhcnNlcjo6YXBwZW5kUGFydGlhbCk6CisgICAgICAg
IChXZWJDb3JlOjpCYWNrZ3JvdW5kSFRNTFBhcnNlcjo6ZmluaXNoUGFydGlhbCk6CisgICAgICAg
IChXZWJDb3JlOjpCYWNrZ3JvdW5kSFRNTFBhcnNlcjo6cmVzdW1lUGFyc2luZ0FmdGVyRmFpbGVk
U3BlY3VsYXRpb25QYXJ0aWFsKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9CYWNrZ3JvdW5kSFRN
TFBhcnNlci5oOgorICAgICAgICAoQmFja2dyb3VuZEhUTUxQYXJzZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6QmFja2dyb3VuZEhUTUxQYXJzZXI6OmNyZWF0ZSk6CisgICAgICAgICogaHRtbC9wYXJz
ZXIvSFRNTERvY3VtZW50UGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxEb2N1bWVu
dFBhcnNlcjo6ZGlkUmVjZWl2ZVRva2Vuc0Zyb21CYWNrZ3JvdW5kUGFyc2VyKToKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxEb2N1bWVudFBhcnNlcjo6ZGlkRmFpbFNwZWN1bGF0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTERvY3VtZW50UGFyc2VyOjpwcm9j
ZXNzVG9rZW5zRnJvbUJhY2tncm91bmRQYXJzZXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTERv
Y3VtZW50UGFyc2VyOjppbnNlcnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTERvY3VtZW50UGFy
c2VyOjpyZXN1bWVQYXJzaW5nQWZ0ZXJTY3JpcHRFeGVjdXRpb24pOgorICAgICAgICAqIGh0bWwv
cGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5oOgorICAgICAgICAoUGFyc2VkQ2h1bmspOgorICAg
ICAgICAoSFRNTERvY3VtZW50UGFyc2VyKToKKwogMjAxMy0wMS0yMyAgVG9ueSBDaGFuZyAgPHRv
bnlAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHNldCBzdm46ZW9sLXN0eWxl
IHRvIENSTEYgb24gV2luZG93cyAuc2xuIGZpbGVzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9wYXJzZXIvQmFja2dyb3VuZEhUTUxQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9wYXJzZXIvQmFja2dyb3VuZEhUTUxQYXJzZXIuY3BwCmluZGV4IGMwZWY0MDQ3Yjk4NmZm
MWE2YTNkNzk4NDI0OTBiZTg5MzJhNzY2Y2IuLmFhZmE2YjRlNzU0Mzk1ZWQxZjk1NGJkMGRiYmQy
MWZhMWZiNjQ0MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0JhY2tn
cm91bmRIVE1MUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9CYWNr
Z3JvdW5kSFRNTFBhcnNlci5jcHAKQEAgLTgyLDggKzgyLDkgQEAgUGFyc2VyTWFwOjpCYWNrZ3Jv
dW5kUGFyc2VyTWFwJiBQYXJzZXJNYXA6OmJhY2tncm91bmRQYXJzZXJzKCkKICAgICByZXR1cm4g
bV9iYWNrZ3JvdW5kUGFyc2VyczsKIH0KIAotQmFja2dyb3VuZEhUTUxQYXJzZXI6OkJhY2tncm91
bmRIVE1MUGFyc2VyKGNvbnN0IEhUTUxQYXJzZXJPcHRpb25zJiBvcHRpb25zLCBXZWFrUHRyPEhU
TUxEb2N1bWVudFBhcnNlcj4gcGFyc2VyKQorQmFja2dyb3VuZEhUTUxQYXJzZXI6OkJhY2tncm91
bmRIVE1MUGFyc2VyKGNvbnN0IEhUTUxQYXJzZXJPcHRpb25zJiBvcHRpb25zLCBjb25zdCBXZWFr
UHRyPEhUTUxEb2N1bWVudFBhcnNlcj4mIHBhcnNlcikKICAgICA6IG1faW5Gb3JlaWduQ29udGVu
dChmYWxzZSkKKyAgICAsIG1fdG9rZW4oYWRvcHRQdHIobmV3IEhUTUxUb2tlbikpCiAgICAgLCBt
X3Rva2VuaXplcihIVE1MVG9rZW5pemVyOjpjcmVhdGUob3B0aW9ucykpCiAgICAgLCBtX29wdGlv
bnMob3B0aW9ucykKICAgICAsIG1fcGFyc2VyKHBhcnNlcikKQEAgLTkzLDcgKzk0LDIyIEBAIEJh
Y2tncm91bmRIVE1MUGFyc2VyOjpCYWNrZ3JvdW5kSFRNTFBhcnNlcihjb25zdCBIVE1MUGFyc2Vy
T3B0aW9ucyYgb3B0aW9ucywgV2VhCiAKIHZvaWQgQmFja2dyb3VuZEhUTUxQYXJzZXI6OmFwcGVu
ZChjb25zdCBTdHJpbmcmIGlucHV0KQogewotICAgIG1faW5wdXQuYXBwZW5kKFNlZ21lbnRlZFN0
cmluZyhpbnB1dCkpOworICAgIFNlZ21lbnRlZFN0cmluZyBzdHJpbmcgPSBpbnB1dDsKKyAgICBt
X2lucHV0LmFwcGVuZChzdHJpbmcpOworCisgICAgLy8gRklYTUU6IFRoaXMgc2VlbXMgcmVhbGx5
IGluZWZmaWNpZW50Li4uCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2lucHV0Q2hlY2tw
b2ludHMuc2l6ZSgpOyArK2kpCisgICAgICAgIG1faW5wdXRDaGVja3BvaW50c1tpXS5hcHBlbmQo
c3RyaW5nKTsKKworICAgIHB1bXBUb2tlbml6ZXIoKTsKK30KKwordm9pZCBCYWNrZ3JvdW5kSFRN
TFBhcnNlcjo6cmVzdW1lRnJvbShQYXNzT3duUHRyPENoZWNrcG9pbnQ+IGNoZWNrcG9pbnQpCit7
CisgICAgbV9wYXJzZXIgPSBjaGVja3BvaW50LT5wYXJzZXI7CisgICAgbV90b2tlbml6ZXIgPSBj
aGVja3BvaW50LT50b2tlbml6ZXIucmVsZWFzZSgpOworICAgIG1fdG9rZW4gPSBjaGVja3BvaW50
LT50b2tlbi5yZWxlYXNlKCk7CisgICAgbV9pbnB1dCA9IG1faW5wdXRDaGVja3BvaW50c1tjaGVj
a3BvaW50LT5pbnB1dF07CiAgICAgcHVtcFRva2VuaXplcigpOwogfQogCkBAIC0xMTAsOCArMTI2
LDE0IEBAIHZvaWQgQmFja2dyb3VuZEhUTUxQYXJzZXI6Om1hcmtFbmRPZkZpbGUoKQogICAgIGNv
bnN0IExDaGFyIGVuZE9mRmlsZU1hcmtlciA9IDA7CiAKICAgICBBU1NFUlQoIW1faW5wdXQuaXND
bG9zZWQoKSk7Ci0gICAgbV9pbnB1dC5hcHBlbmQoU2VnbWVudGVkU3RyaW5nKFN0cmluZygmZW5k
T2ZGaWxlTWFya2VyLCAxKSkpOworICAgIFNlZ21lbnRlZFN0cmluZyBlb2YgPSBTZWdtZW50ZWRT
dHJpbmcoU3RyaW5nKCZlbmRPZkZpbGVNYXJrZXIsIDEpKTsKKyAgICBtX2lucHV0LmFwcGVuZChl
b2YpOwogICAgIG1faW5wdXQuY2xvc2UoKTsKKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
bV9pbnB1dENoZWNrcG9pbnRzLnNpemUoKTsgKytpKSB7CisgICAgICAgIG1faW5wdXRDaGVja3Bv
aW50c1tpXS5hcHBlbmQoZW9mKTsKKyAgICAgICAgbV9pbnB1dENoZWNrcG9pbnRzW2ldLmNsb3Nl
KCk7CisgICAgfQogfQogCiBib29sIEJhY2tncm91bmRIVE1MUGFyc2VyOjpzaW11bGF0ZVRyZWVC
dWlsZGVyKGNvbnN0IENvbXBhY3RIVE1MVG9rZW4mIHRva2VuKQpAQCAtMTUzLDExICsxNzUsMTQg
QEAgYm9vbCBCYWNrZ3JvdW5kSFRNTFBhcnNlcjo6c2ltdWxhdGVUcmVlQnVpbGRlcihjb25zdCBD
b21wYWN0SFRNTFRva2VuJiB0b2tlbikKIAogdm9pZCBCYWNrZ3JvdW5kSFRNTFBhcnNlcjo6cHVt
cFRva2VuaXplcigpCiB7Ci0gICAgd2hpbGUgKG1fdG9rZW5pemVyLT5uZXh0VG9rZW4obV9pbnB1
dCwgbV90b2tlbikpIHsKLSAgICAgICAgbV9wZW5kaW5nVG9rZW5zLT5hcHBlbmQoQ29tcGFjdEhU
TUxUb2tlbihtX3Rva2VuLCBUZXh0UG9zaXRpb24obV9pbnB1dC5jdXJyZW50TGluZSgpLCBtX2lu
cHV0LmN1cnJlbnRDb2x1bW4oKSkpKTsKLSAgICAgICAgbV90b2tlbi5jbGVhcigpOworICAgIHdo
aWxlIChtX3Rva2VuaXplci0+bmV4dFRva2VuKG1faW5wdXQsICptX3Rva2VuLmdldCgpKSkgewor
ICAgICAgICBtX3BlbmRpbmdUb2tlbnMtPmFwcGVuZChDb21wYWN0SFRNTFRva2VuKCptX3Rva2Vu
LmdldCgpLCBUZXh0UG9zaXRpb24obV9pbnB1dC5jdXJyZW50TGluZSgpLCBtX2lucHV0LmN1cnJl
bnRDb2x1bW4oKSkpKTsKKyAgICAgICAgbV90b2tlbi0+Y2xlYXIoKTsKIAotICAgICAgICBpZiAo
IXNpbXVsYXRlVHJlZUJ1aWxkZXIobV9wZW5kaW5nVG9rZW5zLT5sYXN0KCkpIHx8IG1fcGVuZGlu
Z1Rva2Vucy0+c2l6ZSgpID49IHBlbmRpbmdUb2tlbkxpbWl0KQorICAgICAgICBpZiAoIXNpbXVs
YXRlVHJlZUJ1aWxkZXIobV9wZW5kaW5nVG9rZW5zLT5sYXN0KCkpKSB7CisgICAgICAgICAgICBt
X2lucHV0Q2hlY2twb2ludHMuYXBwZW5kKG1faW5wdXQpOworICAgICAgICAgICAgc2VuZFRva2Vu
c1RvTWFpblRocmVhZCgpOworICAgICAgICB9IGVsc2UgaWYgKG1fcGVuZGluZ1Rva2Vucy0+c2l6
ZSgpID49IHBlbmRpbmdUb2tlbkxpbWl0KQogICAgICAgICAgICAgc2VuZFRva2Vuc1RvTWFpblRo
cmVhZCgpOwogICAgIH0KIApAQCAtMTczLDEyICsxOTgsMTUgQEAgdm9pZCBCYWNrZ3JvdW5kSFRN
TFBhcnNlcjo6c2VuZFRva2Vuc1RvTWFpblRocmVhZCgpCiAgICAgY2hlY2tUaGF0VG9rZW5zQXJl
U2FmZVRvU2VuZFRvQW5vdGhlclRocmVhZChtX3BlbmRpbmdUb2tlbnMuZ2V0KCkpOwogI2VuZGlm
CiAKLSAgICBjYWxsT25NYWluVGhyZWFkKGJpbmQoJkhUTUxEb2N1bWVudFBhcnNlcjo6ZGlkUmVj
ZWl2ZVRva2Vuc0Zyb21CYWNrZ3JvdW5kUGFyc2VyLCBtX3BhcnNlciwgbV9wZW5kaW5nVG9rZW5z
LnJlbGVhc2UoKSkpOworICAgIE93blB0cjxIVE1MRG9jdW1lbnRQYXJzZXI6OlBhcnNlZENodW5r
PiBjaHVuayA9IGFkb3B0UHRyKG5ldyBIVE1MRG9jdW1lbnRQYXJzZXI6OlBhcnNlZENodW5rKTsK
KyAgICBjaHVuay0+dG9rZW5zID0gbV9wZW5kaW5nVG9rZW5zLnJlbGVhc2UoKTsKKyAgICBjaHVu
ay0+aW5wdXRDaGVja3BvaW50ID0gbV9pbnB1dENoZWNrcG9pbnRzLnNpemUoKSAtIDE7CisgICAg
Y2FsbE9uTWFpblRocmVhZChiaW5kKCZIVE1MRG9jdW1lbnRQYXJzZXI6OmRpZFJlY2VpdmVUb2tl
bnNGcm9tQmFja2dyb3VuZFBhcnNlciwgbV9wYXJzZXIsIGNodW5rLnJlbGVhc2UoKSkpOwogCiAg
ICAgbV9wZW5kaW5nVG9rZW5zID0gYWRvcHRQdHIobmV3IENvbXBhY3RIVE1MVG9rZW5TdHJlYW0p
OwogfQogCi12b2lkIEJhY2tncm91bmRIVE1MUGFyc2VyOjpjcmVhdGVQYXJ0aWFsKFBhcnNlcklk
ZW50aWZpZXIgaWRlbnRpZmllciwgSFRNTFBhcnNlck9wdGlvbnMgb3B0aW9ucywgV2Vha1B0cjxI
VE1MRG9jdW1lbnRQYXJzZXI+IHBhcnNlcikKK3ZvaWQgQmFja2dyb3VuZEhUTUxQYXJzZXI6OmNy
ZWF0ZVBhcnRpYWwoUGFyc2VySWRlbnRpZmllciBpZGVudGlmaWVyLCBIVE1MUGFyc2VyT3B0aW9u
cyBvcHRpb25zLCBjb25zdCBXZWFrUHRyPEhUTUxEb2N1bWVudFBhcnNlcj4mIHBhcnNlcikKIHsK
ICAgICBBU1NFUlQoIXBhcnNlck1hcCgpLmJhY2tncm91bmRQYXJzZXJzKCkuZ2V0KGlkZW50aWZp
ZXIpKTsKICAgICBwYXJzZXJNYXAoKS5iYWNrZ3JvdW5kUGFyc2VycygpLnNldChpZGVudGlmaWVy
LCBCYWNrZ3JvdW5kSFRNTFBhcnNlcjo6Y3JlYXRlKG9wdGlvbnMsIHBhcnNlcikpOwpAQCAtMTky
LDE0ICsyMjAsMjAgQEAgdm9pZCBCYWNrZ3JvdW5kSFRNTFBhcnNlcjo6c3RvcFBhcnRpYWwoUGFy
c2VySWRlbnRpZmllciBpZGVudGlmaWVyKQogdm9pZCBCYWNrZ3JvdW5kSFRNTFBhcnNlcjo6YXBw
ZW5kUGFydGlhbChQYXJzZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgaW5w
dXQpCiB7CiAgICAgQVNTRVJUKCFpbnB1dC5pbXBsKCkgfHwgaW5wdXQuaW1wbCgpLT5oYXNPbmVS
ZWYoKSB8fCBpbnB1dC5pc0VtcHR5KCkpOwotICAgIGlmIChCYWNrZ3JvdW5kSFRNTFBhcnNlciog
cGFyc2VyID0gcGFyc2VyTWFwKCkuYmFja2dyb3VuZFBhcnNlcnMoKS5nZXQoaWRlbnRpZmllcikp
Ci0gICAgICAgIHBhcnNlci0+YXBwZW5kKGlucHV0KTsKKyAgICBpZiAoQmFja2dyb3VuZEhUTUxQ
YXJzZXIqIGJhY2tncm91bmRQYXJzZXIgPSBwYXJzZXJNYXAoKS5iYWNrZ3JvdW5kUGFyc2Vycygp
LmdldChpZGVudGlmaWVyKSkKKyAgICAgICAgYmFja2dyb3VuZFBhcnNlci0+YXBwZW5kKGlucHV0
KTsKIH0KIAogdm9pZCBCYWNrZ3JvdW5kSFRNTFBhcnNlcjo6ZmluaXNoUGFydGlhbChQYXJzZXJJ
ZGVudGlmaWVyIGlkZW50aWZpZXIpCiB7Ci0gICAgaWYgKEJhY2tncm91bmRIVE1MUGFyc2VyKiBw
YXJzZXIgPSBwYXJzZXJNYXAoKS5iYWNrZ3JvdW5kUGFyc2VycygpLmdldChpZGVudGlmaWVyKSkK
LSAgICAgICAgcGFyc2VyLT5maW5pc2goKTsKKyAgICBpZiAoQmFja2dyb3VuZEhUTUxQYXJzZXIq
IGJhY2tncm91bmRQYXJzZXIgPSBwYXJzZXJNYXAoKS5iYWNrZ3JvdW5kUGFyc2VycygpLmdldChp
ZGVudGlmaWVyKSkKKyAgICAgICAgYmFja2dyb3VuZFBhcnNlci0+ZmluaXNoKCk7Cit9CisKK3Zv
aWQgQmFja2dyb3VuZEhUTUxQYXJzZXI6OnJlc3VtZUZyb21QYXJ0aWFsKFBhcnNlcklkZW50aWZp
ZXIgaWRlbnRpZmllciwgUGFzc093blB0cjxDaGVja3BvaW50PiBjaGVja3BvaW50KQoreworICAg
IGlmIChCYWNrZ3JvdW5kSFRNTFBhcnNlciogYmFja2dyb3VuZFBhcnNlciA9IHBhcnNlck1hcCgp
LmJhY2tncm91bmRQYXJzZXJzKCkuZ2V0KGlkZW50aWZpZXIpKQorICAgICAgICBiYWNrZ3JvdW5k
UGFyc2VyLT5yZXN1bWVGcm9tKGNoZWNrcG9pbnQpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3BhcnNlci9CYWNrZ3JvdW5kSFRNTFBhcnNlci5oIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9wYXJzZXIvQmFja2dyb3VuZEhUTUxQYXJzZXIuaAppbmRleCBlNmU4Mjc2ZjZm
ODAyMmVhOGQ1MmY5M2Y0MGNiMWUxY2MwNTY5MTgxLi45Yjc3YTg1MmEzOGVkMTYyZTUwYjM1MzZk
ZGNjNWZiNDU4ODFjZGEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9C
YWNrZ3JvdW5kSFRNTFBhcnNlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0Jh
Y2tncm91bmRIVE1MUGFyc2VyLmgKQEAgLTQ1LDE4ICs0NSwyOCBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBhcHBlbmQoY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCBmaW5pc2goKTsKIAotICAgIHN0YXRp
YyBQYXNzT3duUHRyPEJhY2tncm91bmRIVE1MUGFyc2VyPiBjcmVhdGUoY29uc3QgSFRNTFBhcnNl
ck9wdGlvbnMmIG9wdGlvbnMsIFdlYWtQdHI8SFRNTERvY3VtZW50UGFyc2VyPiBwYXJzZXIpCisg
ICAgc3RydWN0IENoZWNrcG9pbnQgeworICAgICAgICBXZWFrUHRyPEhUTUxEb2N1bWVudFBhcnNl
cj4gcGFyc2VyOworICAgICAgICBPd25QdHI8SFRNTFRva2VuaXplcj4gdG9rZW5pemVyOworICAg
ICAgICBPd25QdHI8SFRNTFRva2VuPiB0b2tlbjsKKyAgICAgICAgc2l6ZV90IGlucHV0OworICAg
IH07CisKKyAgICB2b2lkIHJlc3VtZUZyb20oUGFzc093blB0cjxDaGVja3BvaW50Pik7CisKKyAg
ICBzdGF0aWMgUGFzc093blB0cjxCYWNrZ3JvdW5kSFRNTFBhcnNlcj4gY3JlYXRlKGNvbnN0IEhU
TUxQYXJzZXJPcHRpb25zJiBvcHRpb25zLCBjb25zdCBXZWFrUHRyPEhUTUxEb2N1bWVudFBhcnNl
cj4mIHBhcnNlcikKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgQmFja2dyb3Vu
ZEhUTUxQYXJzZXIob3B0aW9ucywgcGFyc2VyKSk7CiAgICAgfQogCi0gICAgc3RhdGljIHZvaWQg
Y3JlYXRlUGFydGlhbChQYXJzZXJJZGVudGlmaWVyLCBIVE1MUGFyc2VyT3B0aW9ucywgV2Vha1B0
cjxIVE1MRG9jdW1lbnRQYXJzZXI+KTsKKyAgICBzdGF0aWMgdm9pZCBjcmVhdGVQYXJ0aWFsKFBh
cnNlcklkZW50aWZpZXIsIEhUTUxQYXJzZXJPcHRpb25zLCBjb25zdCBXZWFrUHRyPEhUTUxEb2N1
bWVudFBhcnNlcj4mKTsKICAgICBzdGF0aWMgdm9pZCBzdG9wUGFydGlhbChQYXJzZXJJZGVudGlm
aWVyKTsKICAgICBzdGF0aWMgdm9pZCBhcHBlbmRQYXJ0aWFsKFBhcnNlcklkZW50aWZpZXIsIGNv
bnN0IFN0cmluZyYgaW5wdXQpOwogICAgIHN0YXRpYyB2b2lkIGZpbmlzaFBhcnRpYWwoUGFyc2Vy
SWRlbnRpZmllcik7CisgICAgc3RhdGljIHZvaWQgcmVzdW1lRnJvbVBhcnRpYWwoUGFyc2VySWRl
bnRpZmllciwgUGFzc093blB0cjxDaGVja3BvaW50Pik7CiAKIHByaXZhdGU6Ci0gICAgQmFja2dy
b3VuZEhUTUxQYXJzZXIoY29uc3QgSFRNTFBhcnNlck9wdGlvbnMmLCBXZWFrUHRyPEhUTUxEb2N1
bWVudFBhcnNlcj4pOworICAgIEJhY2tncm91bmRIVE1MUGFyc2VyKGNvbnN0IEhUTUxQYXJzZXJP
cHRpb25zJiwgY29uc3QgV2Vha1B0cjxIVE1MRG9jdW1lbnRQYXJzZXI+Jik7CiAKICAgICB2b2lk
IG1hcmtFbmRPZkZpbGUoKTsKICAgICB2b2lkIHB1bXBUb2tlbml6ZXIoKTsKQEAgLTY0LDEzICs3
NCwxNSBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBzZW5kVG9rZW5zVG9NYWluVGhyZWFkKCk7CiAK
LSAgICBTZWdtZW50ZWRTdHJpbmcgbV9pbnB1dDsKLSAgICBIVE1MVG9rZW4gbV90b2tlbjsKICAg
ICBib29sIG1faW5Gb3JlaWduQ29udGVudDsgLy8gRklYTUU6IFdlIG5lZWQgYSBzdGFjayBvZiBm
b3JlaWduIGNvbnRlbnQgbWFya2Vycy4KKyAgICBTZWdtZW50ZWRTdHJpbmcgbV9pbnB1dDsKKyAg
ICBPd25QdHI8SFRNTFRva2VuPiBtX3Rva2VuOwogICAgIE93blB0cjxIVE1MVG9rZW5pemVyPiBt
X3Rva2VuaXplcjsKICAgICBIVE1MUGFyc2VyT3B0aW9ucyBtX29wdGlvbnM7CiAgICAgV2Vha1B0
cjxIVE1MRG9jdW1lbnRQYXJzZXI+IG1fcGFyc2VyOwogICAgIE93blB0cjxDb21wYWN0SFRNTFRv
a2VuU3RyZWFtPiBtX3BlbmRpbmdUb2tlbnM7CisKKyAgICBWZWN0b3I8U2VnbWVudGVkU3RyaW5n
PiBtX2lucHV0Q2hlY2twb2ludHM7CiB9OwogCiBjbGFzcyBQYXJzZXJNYXAgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHAKaW5kZXggNDYx
NTlmMGM2NzFhOTE1MGUxOTZjOGE4YzVjZTM0Njg3MzBhN2ZlMy4uNjQyOTdhMjY3YWM0NzMwNDRi
ZWVjYTNkZTEwM2IxYjhlZjI1ZWRhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9w
YXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3Bh
cnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwCkBAIC03Nyw2ICs3Nyw3IEBAIHN0YXRpYyBIVE1M
VG9rZW5pemVyU3RhdGU6OlN0YXRlIHRva2VuaXplclN0YXRlRm9yQ29udGV4dEVsZW1lbnQoRWxl
bWVudCogY29udGV4CiBIVE1MRG9jdW1lbnRQYXJzZXI6OkhUTUxEb2N1bWVudFBhcnNlcihIVE1M
RG9jdW1lbnQqIGRvY3VtZW50LCBib29sIHJlcG9ydEVycm9ycykKICAgICA6IFNjcmlwdGFibGVE
b2N1bWVudFBhcnNlcihkb2N1bWVudCkKICAgICAsIG1fb3B0aW9ucyhkb2N1bWVudCkKKyAgICAs
IG1fdG9rZW4oYWRvcHRQdHIobmV3IEhUTUxUb2tlbikpCiAgICAgLCBtX3Rva2VuaXplcihIVE1M
VG9rZW5pemVyOjpjcmVhdGUobV9vcHRpb25zKSkKICAgICAsIG1fc2NyaXB0UnVubmVyKEhUTUxT
Y3JpcHRSdW5uZXI6OmNyZWF0ZShkb2N1bWVudCwgdGhpcykpCiAgICAgLCBtX3RyZWVCdWlsZGVy
KEhUTUxUcmVlQnVpbGRlcjo6Y3JlYXRlKHRoaXMsIGRvY3VtZW50LCByZXBvcnRFcnJvcnMsIG1f
b3B0aW9ucykpCkBAIC05Niw2ICs5Nyw3IEBAIEhUTUxEb2N1bWVudFBhcnNlcjo6SFRNTERvY3Vt
ZW50UGFyc2VyKEhUTUxEb2N1bWVudCogZG9jdW1lbnQsIGJvb2wgcmVwb3J0RXJyb3JzCiBIVE1M
RG9jdW1lbnRQYXJzZXI6OkhUTUxEb2N1bWVudFBhcnNlcihEb2N1bWVudEZyYWdtZW50KiBmcmFn
bWVudCwgRWxlbWVudCogY29udGV4dEVsZW1lbnQsIEZyYWdtZW50U2NyaXB0aW5nUGVybWlzc2lv
biBzY3JpcHRpbmdQZXJtaXNzaW9uKQogICAgIDogU2NyaXB0YWJsZURvY3VtZW50UGFyc2VyKGZy
YWdtZW50LT5kb2N1bWVudCgpKQogICAgICwgbV9vcHRpb25zKGZyYWdtZW50LT5kb2N1bWVudCgp
KQorICAgICwgbV90b2tlbihhZG9wdFB0cihuZXcgSFRNTFRva2VuKSkKICAgICAsIG1fdG9rZW5p
emVyKEhUTUxUb2tlbml6ZXI6OmNyZWF0ZShtX29wdGlvbnMpKQogICAgICwgbV90cmVlQnVpbGRl
cihIVE1MVHJlZUJ1aWxkZXI6OmNyZWF0ZSh0aGlzLCBmcmFnbWVudCwgY29udGV4dEVsZW1lbnQs
IHNjcmlwdGluZ1Blcm1pc3Npb24sIG1fb3B0aW9ucykpCiAgICAgLCBtX3hzc0F1ZGl0b3IodGhp
cykKQEAgLTI2OCwxNyArMjcwLDM1IEBAIGJvb2wgSFRNTERvY3VtZW50UGFyc2VyOjpjYW5UYWtl
TmV4dFRva2VuKFN5bmNocm9ub3VzTW9kZSBtb2RlLCBQdW1wU2Vzc2lvbiYgc2VzCiAKICNpZiBF
TkFCTEUoVEhSRUFERURfSFRNTF9QQVJTRVIpCiAKLXZvaWQgSFRNTERvY3VtZW50UGFyc2VyOjpk
aWRSZWNlaXZlVG9rZW5zRnJvbUJhY2tncm91bmRQYXJzZXIoUGFzc093blB0cjxDb21wYWN0SFRN
TFRva2VuU3RyZWFtPiB0b2tlbnMpCit2b2lkIEhUTUxEb2N1bWVudFBhcnNlcjo6ZGlkUmVjZWl2
ZVRva2Vuc0Zyb21CYWNrZ3JvdW5kUGFyc2VyKFBhc3NPd25QdHI8UGFyc2VkQ2h1bms+IGNodW5r
KQogewogICAgIGlmIChpc1dhaXRpbmdGb3JTY3JpcHRzKCkpIHsKLSAgICAgICAgbV9wZW5kaW5n
VG9rZW5zLmFwcGVuZCh0b2tlbnMpOworICAgICAgICBtX3NwZWN1bGF0aW9ucy5hcHBlbmQoY2h1
bmspOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIEFTU0VSVChtX3BlbmRpbmdUb2tlbnMu
aXNFbXB0eSgpKTsKLSAgICBwcm9jZXNzVG9rZW5zRnJvbUJhY2tncm91bmRQYXJzZXIodG9rZW5z
KTsKKyAgICBBU1NFUlQobV9zcGVjdWxhdGlvbnMuaXNFbXB0eSgpKTsKKyAgICBwcm9jZXNzVG9r
ZW5zRnJvbUJhY2tncm91bmRQYXJzZXIoY2h1bmspOwogfQogCi12b2lkIEhUTUxEb2N1bWVudFBh
cnNlcjo6cHJvY2Vzc1Rva2Vuc0Zyb21CYWNrZ3JvdW5kUGFyc2VyKFBhc3NPd25QdHI8Q29tcGFj
dEhUTUxUb2tlblN0cmVhbT4gdG9rZW5zKQordm9pZCBIVE1MRG9jdW1lbnRQYXJzZXI6OmRpZEZh
aWxTcGVjdWxhdGlvbigpCit7CisgICAgbV93ZWFrRmFjdG9yeS5yZXZva2VBbGwoKTsKKyAgICBt
X3NwZWN1bGF0aW9ucy5jbGVhcigpOworCisgICAgT3duUHRyPEJhY2tncm91bmRIVE1MUGFyc2Vy
OjpDaGVja3BvaW50PiBjaGVja3BvaW50ID0gYWRvcHRQdHIobmV3IEJhY2tncm91bmRIVE1MUGFy
c2VyOjpDaGVja3BvaW50KTsKKyAgICBjaGVja3BvaW50LT5wYXJzZXIgPSBtX3dlYWtGYWN0b3J5
LmNyZWF0ZVdlYWtQdHIoKTsKKyAgICBjaGVja3BvaW50LT50b2tlbml6ZXIgPSBtX3Rva2VuaXpl
ci5yZWxlYXNlKCk7CisgICAgY2hlY2twb2ludC0+dG9rZW4gPSBtX3Rva2VuLnJlbGVhc2UoKTsK
KyAgICBjaGVja3BvaW50LT5pbnB1dCA9IG1fY3VycmVudENodW5rLT5pbnB1dENoZWNrcG9pbnQ7
CisKKyAgICBtX3Rva2VuaXplciA9IEhUTUxUb2tlbml6ZXI6OmNyZWF0ZShtX29wdGlvbnMpOwor
ICAgIG1fdG9rZW4gPSBhZG9wdFB0cihuZXcgSFRNTFRva2VuKTsKKworICAgIFBhcnNlcklkZW50
aWZpZXIgaWRlbnRpZmllciA9IFBhcnNlck1hcDo6aWRlbnRpZmllckZvclBhcnNlcih0aGlzKTsK
KyAgICBIVE1MUGFyc2VyVGhyZWFkOjpzaGFyZWQoKS0+cG9zdFRhc2soYmluZCgmQmFja2dyb3Vu
ZEhUTUxQYXJzZXI6OnJlc3VtZUZyb21QYXJ0aWFsLCBpZGVudGlmaWVyLCBjaGVja3BvaW50LnJl
bGVhc2UoKSkpOworfQorCit2b2lkIEhUTUxEb2N1bWVudFBhcnNlcjo6cHJvY2Vzc1Rva2Vuc0Zy
b21CYWNrZ3JvdW5kUGFyc2VyKFBhc3NPd25QdHI8UGFyc2VkQ2h1bms+IGNodW5rKQogewogICAg
IEFTU0VSVChzaG91bGRVc2VUaHJlYWRpbmcoKSk7CiAKQEAgLTI4Niw2ICszMDYsMTAgQEAgdm9p
ZCBIVE1MRG9jdW1lbnRQYXJzZXI6OnByb2Nlc3NUb2tlbnNGcm9tQmFja2dyb3VuZFBhcnNlcihQ
YXNzT3duUHRyPENvbXBhY3RIVE0KICAgICAvLyBidXQgd2UgbmVlZCB0byBlbnN1cmUgaXQgaXNu
J3QgZGVsZXRlZCB5ZXQuCiAgICAgUmVmUHRyPEhUTUxEb2N1bWVudFBhcnNlcj4gcHJvdGVjdCh0
aGlzKTsKIAorICAgIEFTU0VSVCghbV9jdXJyZW50Q2h1bmspOworICAgIG1fY3VycmVudENodW5r
ID0gY2h1bms7CisgICAgT3duUHRyPENvbXBhY3RIVE1MVG9rZW5TdHJlYW0+IHRva2VucyA9IG1f
Y3VycmVudENodW5rLT50b2tlbnMucmVsZWFzZSgpOworCiAgICAgLy8gRklYTUU6IEFkZCBzdXBw
b3J0IGZvciBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uCiAKICAgICBmb3IgKFZlY3RvcjxDb21w
YWN0SFRNTFRva2VuPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSB0b2tlbnMtPmJlZ2luKCk7IGl0ICE9
IHRva2Vucy0+ZW5kKCk7ICsraXQpIHsKQEAgLTI5Niw3ICszMjAsNyBAQCB2b2lkIEhUTUxEb2N1
bWVudFBhcnNlcjo6cHJvY2Vzc1Rva2Vuc0Zyb21CYWNrZ3JvdW5kUGFyc2VyKFBhc3NPd25QdHI8
Q29tcGFjdEhUTQogICAgICAgICBjb25zdHJ1Y3RUcmVlRnJvbUNvbXBhY3RIVE1MVG9rZW4oKml0
KTsKIAogICAgICAgICBpZiAoaXNTdG9wcGVkKCkpCi0gICAgICAgICAgICByZXR1cm47CisgICAg
ICAgICAgICBicmVhazsKIAogICAgICAgICAvLyBGSVhNRTogV2UnbGwgcHJvYmFibHkgbmVlZCB0
byBjaGVjayBkb2N1bWVudCgpLT5mcmFtZSgpLT5uYXZpZ2F0aW9uU2NoZWR1bGVyKCktPmxvY2F0
aW9uQ2hhbmdlUGVuZGluZygpKQogICAgICAgICAvLyBhcyB3ZSBkbyBpbiBjYW5UYWtlTmV4dFRv
a2VuOwpAQCAtMzA0LDE1ICszMjgsMTcgQEAgdm9pZCBIVE1MRG9jdW1lbnRQYXJzZXI6OnByb2Nl
c3NUb2tlbnNGcm9tQmFja2dyb3VuZFBhcnNlcihQYXNzT3duUHRyPENvbXBhY3RIVE0KICAgICAg
ICAgaWYgKGlzV2FpdGluZ0ZvclNjcmlwdHMoKSkgewogICAgICAgICAgICAgQVNTRVJUKGl0ICsg
MSA9PSB0b2tlbnMtPmVuZCgpKTsgLy8gVGhlIDwvc2NyaXB0PiBpcyBhc3N1bWVkIHRvIGJlIHRo
ZSBsYXN0IHRva2VuIG9mIHRoaXMgYnVuY2guCiAgICAgICAgICAgICBydW5TY3JpcHRzRm9yUGF1
c2VkVHJlZUJ1aWxkZXIoKTsKLSAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CiAKICAgICAgICAgaWYgKGl0LT50eXBlKCkgPT0gSFRNTFRva2VuVHlwZXM6
OkVuZE9mRmlsZSkgewogICAgICAgICAgICAgQVNTRVJUKGl0ICsgMSA9PSB0b2tlbnMtPmVuZCgp
KTsgLy8gVGhlIEVPRiBpcyBhc3N1bWVkIHRvIGJlIHRoZSBsYXN0IHRva2VuIG9mIHRoaXMgYnVu
Y2guCiAgICAgICAgICAgICBwcmVwYXJlVG9TdG9wUGFyc2luZygpOwotICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9CisKKyAgICBtX2N1cnJl
bnRDaHVuay5jbGVhcigpOwogfQogCiAjZW5kaWYgLy8gRU5BQkxFKFRIUkVBREVEX0hUTUxfUEFS
U0VSKQpAQCAtMzM3LDIxICszNjMsMjEgQEAgdm9pZCBIVE1MRG9jdW1lbnRQYXJzZXI6OnB1bXBU
b2tlbml6ZXIoU3luY2hyb25vdXNNb2RlIG1vZGUpCiAKICAgICB3aGlsZSAoY2FuVGFrZU5leHRU
b2tlbihtb2RlLCBzZXNzaW9uKSAmJiAhc2Vzc2lvbi5uZWVkc1lpZWxkKSB7CiAgICAgICAgIGlm
ICghaXNQYXJzaW5nRnJhZ21lbnQoKSkKLSAgICAgICAgICAgIG1fc291cmNlVHJhY2tlci5zdGFy
dChtX2lucHV0LCBtX3Rva2VuaXplci5nZXQoKSwgbV90b2tlbik7CisgICAgICAgICAgICBtX3Nv
dXJjZVRyYWNrZXIuc3RhcnQobV9pbnB1dCwgbV90b2tlbml6ZXIuZ2V0KCksICptX3Rva2VuLmdl
dCgpKTsKIAotICAgICAgICBpZiAoIW1fdG9rZW5pemVyLT5uZXh0VG9rZW4obV9pbnB1dC5jdXJy
ZW50KCksIG1fdG9rZW4pKQorICAgICAgICBpZiAoIW1fdG9rZW5pemVyLT5uZXh0VG9rZW4obV9p
bnB1dC5jdXJyZW50KCksICptX3Rva2VuLmdldCgpKSkKICAgICAgICAgICAgIGJyZWFrOwogCiAg
ICAgICAgIGlmICghaXNQYXJzaW5nRnJhZ21lbnQoKSkgewotICAgICAgICAgICAgbV9zb3VyY2VU
cmFja2VyLmVuZChtX2lucHV0LCBtX3Rva2VuaXplci5nZXQoKSwgbV90b2tlbik7CisgICAgICAg
ICAgICBtX3NvdXJjZVRyYWNrZXIuZW5kKG1faW5wdXQsIG1fdG9rZW5pemVyLmdldCgpLCAqbV90
b2tlbi5nZXQoKSk7CiAKICAgICAgICAgICAgIC8vIFdlIGRvIG5vdCBYU1MgZmlsdGVyIGlubmVy
SFRNTCwgd2hpY2ggbWVhbnMgd2UgKGludGVudGlvbmFsbHkpIGZhaWwKICAgICAgICAgICAgIC8v
IGh0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9kb20td3JpdGUtaW5uZXJIVE1MLmh0bWwK
LSAgICAgICAgICAgIG1feHNzQXVkaXRvci5maWx0ZXJUb2tlbihtX3Rva2VuKTsKKyAgICAgICAg
ICAgIG1feHNzQXVkaXRvci5maWx0ZXJUb2tlbigqbV90b2tlbi5nZXQoKSk7CiAgICAgICAgIH0K
IAotICAgICAgICBjb25zdHJ1Y3RUcmVlRnJvbUhUTUxUb2tlbihtX3Rva2VuKTsKLSAgICAgICAg
QVNTRVJUKG1fdG9rZW4uaXNVbmluaXRpYWxpemVkKCkpOworICAgICAgICBjb25zdHJ1Y3RUcmVl
RnJvbUhUTUxUb2tlbigqbV90b2tlbi5nZXQoKSk7CisgICAgICAgIEFTU0VSVChtX3Rva2VuLT5p
c1VuaW5pdGlhbGl6ZWQoKSk7CiAgICAgfQogCiAgICAgLy8gRW5zdXJlIHdlIGhhdmVuJ3QgYmVl
biB0b3RhbGx5IGRlcmVmJ2VkIGFmdGVyIHB1bXBpbmcuIEFueSBjYWxsZXIgb2YgdGhpcwpAQCAt
NDM5LDggKzQ2NSwyNCBAQCB2b2lkIEhUTUxEb2N1bWVudFBhcnNlcjo6aW5zZXJ0KGNvbnN0IFNl
Z21lbnRlZFN0cmluZyYgc291cmNlKQogICAgIFNlZ21lbnRlZFN0cmluZyBleGNsdWRlZExpbmVO
dW1iZXJTb3VyY2Uoc291cmNlKTsKICAgICBleGNsdWRlZExpbmVOdW1iZXJTb3VyY2Uuc2V0RXhj
bHVkZUxpbmVOdW1iZXJzKCk7CiAgICAgbV9pbnB1dC5pbnNlcnRBdEN1cnJlbnRJbnNlcnRpb25Q
b2ludChleGNsdWRlZExpbmVOdW1iZXJTb3VyY2UpOworCisjaWYgRU5BQkxFKFRIUkVBREVEX0hU
TUxfUEFSU0VSKQorICAgIGlmIChtX2hhdmVCYWNrZ3JvdW5kUGFyc2VyICYmICFpblB1bXBTZXNz
aW9uKCkpIHsKKyAgICAgICAgbV90b2tlbml6ZXItPnJlc2V0KCk7CisgICAgICAgIG1fdG9rZW4t
PmNsZWFyKCk7CisgICAgfQorI2VuZGlmCisKICAgICBwdW1wVG9rZW5pemVySWZQb3NzaWJsZShG
b3JjZVN5bmNocm9ub3VzKTsKLSAgICAKKworI2lmIEVOQUJMRShUSFJFQURFRF9IVE1MX1BBUlNF
UikKKyAgICBpZiAobV9oYXZlQmFja2dyb3VuZFBhcnNlciAmJiAhaW5QdW1wU2Vzc2lvbigpKSB7
CisgICAgICAgIC8vIEZJWE1FOiBPdXIgc3BlY3VsYXRpb24gZG9lc24ndCBhbHdheXMgZmFpbC4u
LgorICAgICAgICBkaWRGYWlsU3BlY3VsYXRpb24oKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KyNlbmRpZgorCiAgICAgaWYgKGlzV2FpdGluZ0ZvclNjcmlwdHMoKSkgewogICAgICAgICAvLyBD
aGVjayB0aGUgZG9jdW1lbnQud3JpdGUoKSBvdXRwdXQgd2l0aCBhIHNlcGFyYXRlIHByZWxvYWQg
c2Nhbm5lciBhcwogICAgICAgICAvLyB0aGUgbWFpbiBzY2FubmVyIGNhbid0IGRlYWwgd2l0aCBp
bnNlcnRpb25zLgpAQCAtNjU3LDggKzY5OSw4IEBAIHZvaWQgSFRNTERvY3VtZW50UGFyc2VyOjpy
ZXN1bWVQYXJzaW5nQWZ0ZXJTY3JpcHRFeGVjdXRpb24oKQogCiAjaWYgRU5BQkxFKFRIUkVBREVE
X0hUTUxfUEFSU0VSKQogICAgIGlmIChzaG91bGRVc2VUaHJlYWRpbmcoKSkgewotICAgICAgICB3
aGlsZSAoIW1fcGVuZGluZ1Rva2Vucy5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgIHByb2Nlc3NU
b2tlbnNGcm9tQmFja2dyb3VuZFBhcnNlcihtX3BlbmRpbmdUb2tlbnMudGFrZUZpcnN0KCkpOwor
ICAgICAgICB3aGlsZSAoIW1fc3BlY3VsYXRpb25zLmlzRW1wdHkoKSkgeworICAgICAgICAgICAg
cHJvY2Vzc1Rva2Vuc0Zyb21CYWNrZ3JvdW5kUGFyc2VyKG1fc3BlY3VsYXRpb25zLnRha2VGaXJz
dCgpKTsKICAgICAgICAgICAgIGlmIChpc1dhaXRpbmdGb3JTY3JpcHRzKCkpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2Vy
L0hUTUxEb2N1bWVudFBhcnNlci5oCmluZGV4IGYxOWNiMTIyOTQ1ZWY1OTYxZjE3ZjcwYjk1ZGVk
MzM0ODRiNWJjMWYuLmE5ZjUyMjQ0NmE1MmYzNzQ0MTZkZmQyYWNhNjRmMzc1ZTg1NzNiMmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5oCkBA
IC04Miw3ICs4MiwxMiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlc3VtZVNjaGVkdWxl
ZFRhc2tzKCk7CiAKICNpZiBFTkFCTEUoVEhSRUFERURfSFRNTF9QQVJTRVIpCi0gICAgdm9pZCBk
aWRSZWNlaXZlVG9rZW5zRnJvbUJhY2tncm91bmRQYXJzZXIoUGFzc093blB0cjxDb21wYWN0SFRN
TFRva2VuU3RyZWFtPik7CisgICAgc3RydWN0IFBhcnNlZENodW5rIHsKKyAgICAgICAgT3duUHRy
PENvbXBhY3RIVE1MVG9rZW5TdHJlYW0+IHRva2VuczsKKyAgICAgICAgc2l6ZV90IGlucHV0Q2hl
Y2twb2ludDsKKyAgICB9OworCisgICAgdm9pZCBkaWRSZWNlaXZlVG9rZW5zRnJvbUJhY2tncm91
bmRQYXJzZXIoUGFzc093blB0cjxQYXJzZWRDaHVuaz4pOwogI2VuZGlmCiAKIHByb3RlY3RlZDoK
QEAgLTEyNCw3ICsxMjksOCBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShUSFJFQURFRF9IVE1MX1BB
UlNFUikKICAgICB2b2lkIHN0YXJ0QmFja2dyb3VuZFBhcnNlcigpOwogICAgIHZvaWQgc3RvcEJh
Y2tncm91bmRQYXJzZXIoKTsKLSAgICB2b2lkIHByb2Nlc3NUb2tlbnNGcm9tQmFja2dyb3VuZFBh
cnNlcihQYXNzT3duUHRyPENvbXBhY3RIVE1MVG9rZW5TdHJlYW0+KTsKKyAgICB2b2lkIHByb2Nl
c3NUb2tlbnNGcm9tQmFja2dyb3VuZFBhcnNlcihQYXNzT3duUHRyPFBhcnNlZENodW5rPik7Cisg
ICAgdm9pZCBkaWRGYWlsU3BlY3VsYXRpb24oKTsKICNlbmRpZgogCiAgICAgZW51bSBTeW5jaHJv
bm91c01vZGUgewpAQCAtMTU3LDEwICsxNjMsOSBAQCBwcml2YXRlOgogICAgIEhUTUxQYXJzZXJP
cHRpb25zIG1fb3B0aW9uczsKICAgICBIVE1MSW5wdXRTdHJlYW0gbV9pbnB1dDsKIAotICAgIC8v
IFdlIGhvbGQgbV90b2tlbiBoZXJlIGJlY2F1c2UgaXQgbWlnaHQgYmUgcGFydGlhbGx5IGNvbXBs
ZXRlLgotICAgIEhUTUxUb2tlbiBtX3Rva2VuOwotCisgICAgT3duUHRyPEhUTUxUb2tlbj4gbV90
b2tlbjsKICAgICBPd25QdHI8SFRNTFRva2VuaXplcj4gbV90b2tlbml6ZXI7CisKICAgICBPd25Q
dHI8SFRNTFNjcmlwdFJ1bm5lcj4gbV9zY3JpcHRSdW5uZXI7CiAgICAgT3duUHRyPEhUTUxUcmVl
QnVpbGRlcj4gbV90cmVlQnVpbGRlcjsKICAgICBPd25QdHI8SFRNTFByZWxvYWRTY2FubmVyPiBt
X3ByZWxvYWRTY2FubmVyOwpAQCAtMTcxLDcgKzE3Niw4IEBAIHByaXZhdGU6CiAgICAgWFNTQXVk
aXRvciBtX3hzc0F1ZGl0b3I7CiAKICNpZiBFTkFCTEUoVEhSRUFERURfSFRNTF9QQVJTRVIpCi0g
ICAgRGVxdWU8T3duUHRyPENvbXBhY3RIVE1MVG9rZW5TdHJlYW0+ID4gbV9wZW5kaW5nVG9rZW5z
OworICAgIE93blB0cjxQYXJzZWRDaHVuaz4gbV9jdXJyZW50Q2h1bms7CisgICAgRGVxdWU8T3du
UHRyPFBhcnNlZENodW5rPiA+IG1fc3BlY3VsYXRpb25zOwogICAgIFdlYWtQdHJGYWN0b3J5PEhU
TUxEb2N1bWVudFBhcnNlcj4gbV93ZWFrRmFjdG9yeTsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L3BhcnNlci9kb2N1bWVudC13cml0ZS1wYXJ0aWFsLXNjcmlwdC1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L3BhcnNlci9kb2N1bWVudC13cml0ZS1wYXJ0aWFs
LXNjcmlwdC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQ4ODUwZDIxOTI1NzlhM2M3NWVkYmVi
OTMzNjA5M2E5Y2ZiZWU5ZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvcGFy
c2VyL2RvY3VtZW50LXdyaXRlLXBhcnRpYWwtc2NyaXB0LWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDIgQEAKK0FMRVJUOiBQQVNTOiBUaGlzIHRlc3QgcGFzc2VzIGlmIHRoaXMgc3RyaW5nIGlzIGFs
ZXJ0ZWQKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9wYXJzZXIvZG9jdW1lbnQtd3Jp
dGUtcGFydGlhbC1zY3JpcHQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvcGFyc2VyL2RvY3VtZW50
LXdyaXRlLXBhcnRpYWwtc2NyaXB0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWYyN2FiMWI5MmZhMzVhZmZl
ZjE4MmU2MzgxMzkyYmQzNTkyZWExMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zh
c3QvcGFyc2VyL2RvY3VtZW50LXdyaXRlLXBhcnRpYWwtc2NyaXB0Lmh0bWwKQEAgLTAsMCArMSw5
IEBACis8c2NyaXB0PgoraWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIuZHVt
cEFzVGV4dCgpOworCitkb2N1bWVudC53cml0ZSgiPHNjciIpOworPC9zY3JpcHQ+aXB0PgorLy8g
PGlmcmFtZSBvbmxvYWQ9ImFsZXJ0KCdGQUlMOiBJZiB0aGlzIHN0cmluZyBpcyB2aXNpYmxlLCB0
aGVuIHRoaXMgdGVzdCBmYWlscy4nKSIgc3JjPSJhYm91dDpibGFuayI+PC9pZnJhbWU+CithbGVy
dCgnUEFTUzogVGhpcyB0ZXN0IHBhc3NlcyBpZiB0aGlzIHN0cmluZyBpcyBhbGVydGVkJyk7Cis8
L3NjcmlwdD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>185608</attachid>
            <date>2013-01-30 16:06:15 -0800</date>
            <delta_ts>2013-01-30 16:49:09 -0800</delta_ts>
            <desc>still need to build system spelunk</desc>
            <filename>bug-107753-20130130160300.patch</filename>
            <type>text/plain</type>
            <size>20455</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQxMjgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTAxZTBiZDNmMDkyMGU0
OGRjYWExZGJlNzcyNzU3N2NkNmZhMjc3Ni4uYmVlODUxYzFlMDdkMzI2NjU1ODNjNDJiNjY1Yjhk
NDIzMzQwYzU0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDUyIEBACiAyMDEzLTAxLTMwICBBZGFt
IEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKKyAgICAgICAgVGhlIGJhY2tncm91bmQgSFRN
TCBwYXJzZXIgc2hvdWxkIGJlIGFibGUgdG8gcGFyc2Ugc3BlY3VsYXRpdmVseQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA3NzUzCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIHRo
ZSBhYmlsaXR5IGZvciB0aGUgZm9yZWdyb3VuZCBIVE1MIHBhcnNlciB0bworICAgICAgICBpbnZh
bGlkYXRlIHNwZWN1bGF0aXZlIHBhcnNpbmcgZG9uZSBieSB0aGUgYmFja2dyb3VuZCBIVE1MIHBh
cnNlci4KKyAgICAgICAgQ3VycmVudGx5LCB3ZSdyZSBhIGJpdCBvdmVybHkgYWdyZXNzaXZlIGFu
IGludmFsaWRhdGUgYWxsIHNwZWN1bGF0aW9ucworICAgICAgICBvbiBkb2N1bWVudC53cml0ZS4g
V2UgcGxhbiB0byByZWZpbmUgdGhhdCBpbiB0aGUgZnV0dXJlLgorCisgICAgICAgIFRlc3Q6IGZh
c3QvcGFyc2VyL2RvY3VtZW50LXdyaXRlLXBhcnRpYWwtc2NyaXB0Lmh0bWwKKworICAgICAgICAq
IFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBodG1sL3BhcnNlci9CYWNrZ3JvdW5kSFRNTElucHV0
U3RyZWFtLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6
OkJhY2tncm91bmRIVE1MSW5wdXRTdHJlYW06OkJhY2tncm91bmRIVE1MSW5wdXRTdHJlYW0pOgor
ICAgICAgICAoV2ViQ29yZTo6QmFja2dyb3VuZEhUTUxJbnB1dFN0cmVhbTo6YXBwZW5kKToKKyAg
ICAgICAgKFdlYkNvcmU6OkJhY2tncm91bmRIVE1MSW5wdXRTdHJlYW06OmNsb3NlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkJhY2tncm91bmRIVE1MSW5wdXRTdHJlYW06OmNyZWF0ZUNoZWNrcG9pbnQp
OgorICAgICAgICAoV2ViQ29yZTo6QmFja2dyb3VuZEhUTUxJbnB1dFN0cmVhbTo6cmV3aW5kVG8p
OgorICAgICAgICAqIGh0bWwvcGFyc2VyL0JhY2tncm91bmRIVE1MSW5wdXRTdHJlYW0uaDogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKEJhY2tncm91bmRIVE1MSW5wdXRTdHJl
YW0pOgorICAgICAgICAoV2ViQ29yZTo6QmFja2dyb3VuZEhUTUxJbnB1dFN0cmVhbTo6Y3VycmVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpCYWNrZ3JvdW5kSFRNTElucHV0U3RyZWFtOjpDaGVja3Bv
aW50OjpDaGVja3BvaW50KToKKyAgICAgICAgKENoZWNrcG9pbnQpOgorICAgICAgICAqIGh0bWwv
cGFyc2VyL0JhY2tncm91bmRIVE1MUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJhY2tn
cm91bmRIVE1MUGFyc2VyOjphcHBlbmQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChX
ZWJDb3JlOjpCYWNrZ3JvdW5kSFRNTFBhcnNlcjo6cmVzdW1lRnJvbSk6CisgICAgICAgIChXZWJD
b3JlOjpCYWNrZ3JvdW5kSFRNTFBhcnNlcjo6bWFya0VuZE9mRmlsZSk6CisgICAgICAgIChXZWJD
b3JlOjpCYWNrZ3JvdW5kSFRNTFBhcnNlcjo6cHVtcFRva2VuaXplcik6CisgICAgICAgIChXZWJD
b3JlOjpCYWNrZ3JvdW5kSFRNTFBhcnNlcjo6c2VuZFRva2Vuc1RvTWFpblRocmVhZCk6CisgICAg
ICAgIChXZWJDb3JlOjpCYWNrZ3JvdW5kSFRNTFBhcnNlcjo6cmVzdW1lRnJvbVBhcnRpYWwpOgor
ICAgICAgICAqIGh0bWwvcGFyc2VyL0JhY2tncm91bmRIVE1MUGFyc2VyLmg6CisgICAgICAgIChC
YWNrZ3JvdW5kSFRNTFBhcnNlcik6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50
UGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxEb2N1bWVudFBhcnNlcjo6ZGlkUmVj
ZWl2ZVBhcnNlZENodW5rRnJvbUJhY2tncm91bmRQYXJzZXIpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTERvY3VtZW50UGFyc2VyOjpkaWRGYWlsU3BlY3VsYXRpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTERvY3VtZW50UGFyc2VyOjpwcm9jZXNzUGFyc2VkQ2h1bmtGcm9tQmFja2dyb3VuZFBh
cnNlcik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRG9jdW1lbnRQYXJzZXI6OnJlc3VtZVBhcnNp
bmdBZnRlclNjcmlwdEV4ZWN1dGlvbik6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTERvY3Vt
ZW50UGFyc2VyLmg6CisgICAgICAgIChQYXJzZWRDaHVuayk6CisgICAgICAgIChIVE1MRG9jdW1l
bnRQYXJzZXIpOgorCisyMDEzLTAxLTMwICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+
CisKICAgICAgICAgSFRNTERvY3VtZW50UGFyc2VyOjppbnNlcnQgc2hvdWxkIGJlIGF3YXJlIG9m
IHRocmVhZGVkIHBhcnNpbmcKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEwNzc2NAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5
cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggNjA3MjY3Y2ZjYmU1YzZlNjA0
ZTI5MjA3MjM0NTE0NTNhODk2MzMxMC4uODlkMmNjNjA2OTk1ODk3YjkwM2MxMTQ3ZGJkYjU5ZTE3
M2RlNzAwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMzM0OCw2ICszMzQ4LDggQEAKICAgICAgICAg
ICAgICdodG1sL2NhbnZhcy9XZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTLmgnLAogICAgICAgICAg
ICAgJ2h0bWwvcGFyc2VyL0JhY2tncm91bmRIVE1MUGFyc2VyLmNwcCcsCiAgICAgICAgICAgICAn
aHRtbC9wYXJzZXIvQmFja2dyb3VuZEhUTUxQYXJzZXIuaCcsCisgICAgICAgICAgICAnaHRtbC9w
YXJzZXIvQmFja2dyb3VuZEhUTUxJbnB1dFN0cmVhbS5jcHAnLAorICAgICAgICAgICAgJ2h0bWwv
cGFyc2VyL0JhY2tncm91bmRIVE1MSW5wdXRTdHJlYW0uaCcsCiAgICAgICAgICAgICAnaHRtbC9w
YXJzZXIvQ1NTUHJlbG9hZFNjYW5uZXIuY3BwJywKICAgICAgICAgICAgICdodG1sL3BhcnNlci9D
U1NQcmVsb2FkU2Nhbm5lci5oJywKICAgICAgICAgICAgICdodG1sL3BhcnNlci9Db21wYWN0SFRN
TFRva2VuLmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9CYWNr
Z3JvdW5kSFRNTElucHV0U3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0Jh
Y2tncm91bmRIVE1MSW5wdXRTdHJlYW0uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI4MjIzZDNjOWE2YzI2NjY2
Njc1NmI2YmM4YzNlODQ3MGRlZmY4MzYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3BhcnNlci9CYWNrZ3JvdW5kSFRNTElucHV0U3RyZWFtLmNwcApAQCAtMCwwICsxLDcy
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSwgSW5jLiBBbGwgUmlnaHRzIFJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgR09P
R0xFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBHT09HTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShUSFJFQURFRF9IVE1MX1BBUlNFUikKKwor
I2luY2x1ZGUgIkJhY2tncm91bmRIVE1MSW5wdXRTdHJlYW0uaCIKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitCYWNrZ3JvdW5kSFRNTElucHV0U3RyZWFtOjpCYWNrZ3JvdW5kSFRNTElucHV0U3Ry
ZWFtKCkKK3sKK30KKwordm9pZCBCYWNrZ3JvdW5kSFRNTElucHV0U3RyZWFtOjphcHBlbmQoY29u
c3QgU3RyaW5nJiBpbnB1dCkKK3sKKyAgICBtX2N1cnJlbnQuYXBwZW5kKFNlZ21lbnRlZFN0cmlu
ZyhpbnB1dCkpOworICAgIG1fc2VnbWVudHMuYXBwZW5kKGlucHV0KTsKK30KKwordm9pZCBCYWNr
Z3JvdW5kSFRNTElucHV0U3RyZWFtOjpjbG9zZSgpCit7CisgICAgbV9jdXJyZW50LmNsb3NlKCk7
Cit9CisKK0hUTUxJbnB1dENoZWNrcG9pbnQgQmFja2dyb3VuZEhUTUxJbnB1dFN0cmVhbTo6Y3Jl
YXRlQ2hlY2twb2ludCgpCit7CisgICAgSFRNTElucHV0Q2hlY2twb2ludCBjaGVja3BvaW50ID0g
bV9jaGVja3BvaW50cy5zaXplKCk7CisgICAgbV9jaGVja3BvaW50cy5hcHBlbmQoQ2hlY2twb2lu
dChtX2N1cnJlbnQsIG1fc2VnbWVudHMuc2l6ZSgpKSk7CisgICAgcmV0dXJuIGNoZWNrcG9pbnQ7
Cit9CisKK3ZvaWQgQmFja2dyb3VuZEhUTUxJbnB1dFN0cmVhbTo6cmV3aW5kVG8oSFRNTElucHV0
Q2hlY2twb2ludCBjaGVja3BvaW50SW5kZXgpCit7CisgICAgY29uc3QgQ2hlY2twb2ludCYgY2hl
Y2twb2ludCA9IG1fY2hlY2twb2ludHNbY2hlY2twb2ludEluZGV4XTsKKworICAgIGJvb2wgaXND
bG9zZWQgPSBtX2N1cnJlbnQuaXNDbG9zZWQoKTsKKworICAgIG1fY3VycmVudCA9IGNoZWNrcG9p
bnQuaW5wdXQ7CisgICAgZm9yIChzaXplX3QgaSA9IGNoZWNrcG9pbnQubnVtYmVyT2ZTZWdtZW50
c0FscmVhZHlBcHBlbmRlZDsgaSA8IG1fc2VnbWVudHMuc2l6ZSgpOyArK2kpCisgICAgICAgIG1f
Y3VycmVudC5hcHBlbmQoU2VnbWVudGVkU3RyaW5nKG1fc2VnbWVudHNbaV0pKTsKKworICAgIGlm
IChpc0Nsb3NlZCAmJiAhbV9jdXJyZW50LmlzQ2xvc2VkKCkpCisgICAgICAgIG1fY3VycmVudC5j
bG9zZSgpOworfQorCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoVEhSRUFERURfSFRNTF9QQVJTRVIp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9CYWNrZ3JvdW5kSFRNTElu
cHV0U3RyZWFtLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9CYWNrZ3JvdW5kSFRNTElu
cHV0U3RyZWFtLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzQ1ZTZkMjI4NGRlN2QzNTEyYzZhMDU2Nzc3OTRiMjQ5
OTRiMzg2YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0Jh
Y2tncm91bmRIVE1MSW5wdXRTdHJlYW0uaApAQCAtMCwwICsxLDY5IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEzIEdvb2dsZSwgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgR09PR0xFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBHT09HTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIEJhY2tncm91bmRI
VE1MSW5wdXRTdHJlYW1faAorI2RlZmluZSBCYWNrZ3JvdW5kSFRNTElucHV0U3RyZWFtX2gKKwor
I2lmIEVOQUJMRShUSFJFQURFRF9IVE1MX1BBUlNFUikKKworI2luY2x1ZGUgIlNlZ21lbnRlZFN0
cmluZy5oIgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit0eXBlZGVmIHNpemVfdCBIVE1MSW5w
dXRDaGVja3BvaW50OworCitjbGFzcyBCYWNrZ3JvdW5kSFRNTElucHV0U3RyZWFtIHsKKyAgICBX
VEZfTUFLRV9OT05DT1BZQUJMRShCYWNrZ3JvdW5kSFRNTElucHV0U3RyZWFtKTsKK3B1YmxpYzoK
KyAgICBCYWNrZ3JvdW5kSFRNTElucHV0U3RyZWFtKCk7CisKKyAgICB2b2lkIGFwcGVuZChjb25z
dCBTdHJpbmcmKTsKKyAgICB2b2lkIGNsb3NlKCk7CisKKyAgICBTZWdtZW50ZWRTdHJpbmcmIGN1
cnJlbnQoKSB7IHJldHVybiBtX2N1cnJlbnQ7IH0KKworICAgIEhUTUxJbnB1dENoZWNrcG9pbnQg
Y3JlYXRlQ2hlY2twb2ludCgpOworICAgIHZvaWQgcmV3aW5kVG8oSFRNTElucHV0Q2hlY2twb2lu
dCk7CisKK3ByaXZhdGU6CisgICAgc3RydWN0IENoZWNrcG9pbnQgeworICAgICAgICBDaGVja3Bv
aW50KGNvbnN0IFNlZ21lbnRlZFN0cmluZyYgaSwgc2l6ZV90IG4pIDogaW5wdXQoaSksIG51bWJl
ck9mU2VnbWVudHNBbHJlYWR5QXBwZW5kZWQobikgeyB9CisKKyAgICAgICAgU2VnbWVudGVkU3Ry
aW5nIGlucHV0OworICAgICAgICBzaXplX3QgbnVtYmVyT2ZTZWdtZW50c0FscmVhZHlBcHBlbmRl
ZDsKKyAgICB9OworCisgICAgU2VnbWVudGVkU3RyaW5nIG1fY3VycmVudDsKKyAgICBWZWN0b3I8
U3RyaW5nPiBtX3NlZ21lbnRzOworICAgIFZlY3RvcjxDaGVja3BvaW50PiBtX2NoZWNrcG9pbnRz
OworfTsKKworfQorCisjZW5kaWYgLy8gRU5BQkxFKFRIUkVBREVEX0hUTUxfUEFSU0VSKQorCisj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0JhY2tncm91bmRI
VE1MUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0JhY2tncm91bmRIVE1M
UGFyc2VyLmNwcAppbmRleCAwZTk2N2M2ODYyZDg5NjI0YjE1MGMwZjY5MzM1OWIyNTczZjk5ZmRj
Li5jMDhjNDIwMWIxZTdiZjk2YWVhZmE3Njg2M2E0ZWIwMmFjNjI1Y2JmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9CYWNrZ3JvdW5kSFRNTFBhcnNlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQmFja2dyb3VuZEhUTUxQYXJzZXIuY3BwCkBAIC05
NCw3ICs5NCwxNiBAQCBCYWNrZ3JvdW5kSFRNTFBhcnNlcjo6QmFja2dyb3VuZEhUTUxQYXJzZXIo
Y29uc3QgSFRNTFBhcnNlck9wdGlvbnMmIG9wdGlvbnMsIGNvbgogCiB2b2lkIEJhY2tncm91bmRI
VE1MUGFyc2VyOjphcHBlbmQoY29uc3QgU3RyaW5nJiBpbnB1dCkKIHsKLSAgICBtX2lucHV0LmFw
cGVuZChTZWdtZW50ZWRTdHJpbmcoaW5wdXQpKTsKKyAgICBtX2lucHV0LmFwcGVuZChpbnB1dCk7
CisgICAgcHVtcFRva2VuaXplcigpOworfQorCit2b2lkIEJhY2tncm91bmRIVE1MUGFyc2VyOjpy
ZXN1bWVGcm9tKGNvbnN0IFdlYWtQdHI8SFRNTERvY3VtZW50UGFyc2VyPiYgcGFyc2VyLCBQYXNz
T3duUHRyPEhUTUxUb2tlbj4gdG9rZW4sIFBhc3NPd25QdHI8SFRNTFRva2VuaXplcj4gdG9rZW5p
emVyLCBIVE1MSW5wdXRDaGVja3BvaW50IGNoZWNrcG9pbnQpCit7CisgICAgbV9wYXJzZXIgPSBw
YXJzZXI7CisgICAgbV90b2tlbiA9IHRva2VuOworICAgIG1fdG9rZW5pemVyID0gdG9rZW5pemVy
OworICAgIG1faW5wdXQucmV3aW5kVG8oY2hlY2twb2ludCk7CiAgICAgcHVtcFRva2VuaXplcigp
OwogfQogCkBAIC0xMTAsOCArMTE5LDggQEAgdm9pZCBCYWNrZ3JvdW5kSFRNTFBhcnNlcjo6bWFy
a0VuZE9mRmlsZSgpCiAgICAgLy8gb25jZSBJbnB1dFN0cmVhbVByZXByb2Nlc3NvciBpcyBzcGxp
dCBvZmYgaW50byBpdHMgb3duIGhlYWRlci4KICAgICBjb25zdCBMQ2hhciBlbmRPZkZpbGVNYXJr
ZXIgPSAwOwogCi0gICAgQVNTRVJUKCFtX2lucHV0LmlzQ2xvc2VkKCkpOwotICAgIG1faW5wdXQu
YXBwZW5kKFNlZ21lbnRlZFN0cmluZyhTdHJpbmcoJmVuZE9mRmlsZU1hcmtlciwgMSkpKTsKKyAg
ICBBU1NFUlQoIW1faW5wdXQuY3VycmVudCgpLmlzQ2xvc2VkKCkpOworICAgIG1faW5wdXQuYXBw
ZW5kKFN0cmluZygmZW5kT2ZGaWxlTWFya2VyLCAxKSk7CiAgICAgbV9pbnB1dC5jbG9zZSgpOwog
fQogCkBAIC0xNTQsOCArMTYzLDggQEAgYm9vbCBCYWNrZ3JvdW5kSFRNTFBhcnNlcjo6c2ltdWxh
dGVUcmVlQnVpbGRlcihjb25zdCBDb21wYWN0SFRNTFRva2VuJiB0b2tlbikKIAogdm9pZCBCYWNr
Z3JvdW5kSFRNTFBhcnNlcjo6cHVtcFRva2VuaXplcigpCiB7Ci0gICAgd2hpbGUgKG1fdG9rZW5p
emVyLT5uZXh0VG9rZW4obV9pbnB1dCwgKm1fdG9rZW4uZ2V0KCkpKSB7Ci0gICAgICAgIG1fcGVu
ZGluZ1Rva2Vucy0+YXBwZW5kKENvbXBhY3RIVE1MVG9rZW4obV90b2tlbi5nZXQoKSwgVGV4dFBv
c2l0aW9uKG1faW5wdXQuY3VycmVudExpbmUoKSwgbV9pbnB1dC5jdXJyZW50Q29sdW1uKCkpKSk7
CisgICAgd2hpbGUgKG1fdG9rZW5pemVyLT5uZXh0VG9rZW4obV9pbnB1dC5jdXJyZW50KCksICpt
X3Rva2VuLmdldCgpKSkgeworICAgICAgICBtX3BlbmRpbmdUb2tlbnMtPmFwcGVuZChDb21wYWN0
SFRNTFRva2VuKG1fdG9rZW4uZ2V0KCksIFRleHRQb3NpdGlvbihtX2lucHV0LmN1cnJlbnQoKS5j
dXJyZW50TGluZSgpLCBtX2lucHV0LmN1cnJlbnQoKS5jdXJyZW50Q29sdW1uKCkpKSk7CiAgICAg
ICAgIG1fdG9rZW4tPmNsZWFyKCk7CiAKICAgICAgICAgaWYgKCFzaW11bGF0ZVRyZWVCdWlsZGVy
KG1fcGVuZGluZ1Rva2Vucy0+bGFzdCgpKSB8fCBtX3BlbmRpbmdUb2tlbnMtPnNpemUoKSA+PSBw
ZW5kaW5nVG9rZW5MaW1pdCkKQEAgLTE3NCw3ICsxODMsMTAgQEAgdm9pZCBCYWNrZ3JvdW5kSFRN
TFBhcnNlcjo6c2VuZFRva2Vuc1RvTWFpblRocmVhZCgpCiAgICAgY2hlY2tUaGF0VG9rZW5zQXJl
U2FmZVRvU2VuZFRvQW5vdGhlclRocmVhZChtX3BlbmRpbmdUb2tlbnMuZ2V0KCkpOwogI2VuZGlm
CiAKLSAgICBjYWxsT25NYWluVGhyZWFkKGJpbmQoJkhUTUxEb2N1bWVudFBhcnNlcjo6ZGlkUmVj
ZWl2ZVRva2Vuc0Zyb21CYWNrZ3JvdW5kUGFyc2VyLCBtX3BhcnNlciwgbV9wZW5kaW5nVG9rZW5z
LnJlbGVhc2UoKSkpOworICAgIE93blB0cjxIVE1MRG9jdW1lbnRQYXJzZXI6OlBhcnNlZENodW5r
PiBjaHVuayA9IGFkb3B0UHRyKG5ldyBIVE1MRG9jdW1lbnRQYXJzZXI6OlBhcnNlZENodW5rKTsK
KyAgICBjaHVuay0+dG9rZW5zID0gbV9wZW5kaW5nVG9rZW5zLnJlbGVhc2UoKTsKKyAgICBjaHVu
ay0+Y2hlY2twb2ludCA9IG1faW5wdXQuY3JlYXRlQ2hlY2twb2ludCgpOworICAgIGNhbGxPbk1h
aW5UaHJlYWQoYmluZCgmSFRNTERvY3VtZW50UGFyc2VyOjpkaWRSZWNlaXZlUGFyc2VkQ2h1bmtG
cm9tQmFja2dyb3VuZFBhcnNlciwgbV9wYXJzZXIsIGNodW5rLnJlbGVhc2UoKSkpOwogCiAgICAg
bV9wZW5kaW5nVG9rZW5zID0gYWRvcHRQdHIobmV3IENvbXBhY3RIVE1MVG9rZW5TdHJlYW0pOwog
fQpAQCAtMTk3LDYgKzIwOSwxMiBAQCB2b2lkIEJhY2tncm91bmRIVE1MUGFyc2VyOjphcHBlbmRQ
YXJ0aWFsKFBhcnNlcklkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgU3RyaQogICAgICAgICBw
YXJzZXItPmFwcGVuZChpbnB1dCk7CiB9CiAKK3ZvaWQgQmFja2dyb3VuZEhUTUxQYXJzZXI6OnJl
c3VtZUZyb21QYXJ0aWFsKFBhcnNlcklkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgV2Vha1B0
cjxIVE1MRG9jdW1lbnRQYXJzZXI+JiBwYXJzZXIsIFBhc3NPd25QdHI8SFRNTFRva2VuPiB0b2tl
biwgUGFzc093blB0cjxIVE1MVG9rZW5pemVyPiB0b2tlbml6ZXIsIEhUTUxJbnB1dENoZWNrcG9p
bnQgY2hlY2twb2ludCkKK3sKKyAgICBpZiAoQmFja2dyb3VuZEhUTUxQYXJzZXIqIGJhY2tncm91
bmRQYXJzZXIgPSBwYXJzZXJNYXAoKS5iYWNrZ3JvdW5kUGFyc2VycygpLmdldChpZGVudGlmaWVy
KSkKKyAgICAgICAgYmFja2dyb3VuZFBhcnNlci0+cmVzdW1lRnJvbShwYXJzZXIsIHRva2VuLCB0
b2tlbml6ZXIsIGNoZWNrcG9pbnQpOworfQorCiB2b2lkIEJhY2tncm91bmRIVE1MUGFyc2VyOjpm
aW5pc2hQYXJ0aWFsKFBhcnNlcklkZW50aWZpZXIgaWRlbnRpZmllcikKIHsKICAgICBpZiAoQmFj
a2dyb3VuZEhUTUxQYXJzZXIqIHBhcnNlciA9IHBhcnNlck1hcCgpLmJhY2tncm91bmRQYXJzZXJz
KCkuZ2V0KGlkZW50aWZpZXIpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJz
ZXIvQmFja2dyb3VuZEhUTUxQYXJzZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0Jh
Y2tncm91bmRIVE1MUGFyc2VyLmgKaW5kZXggZTE3YTliZGQ2MzIzYjcyNDA3MTlmMmFmNGE5ZGJk
OGMzNmJhNGE5YS4uNjdhMjA1YWIwZjQ4MzQ0ZGQ5MzJmNjVlMjhlOWNkOTI3NTE5ODlmYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQmFja2dyb3VuZEhUTUxQYXJzZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9CYWNrZ3JvdW5kSFRNTFBhcnNlci5o
CkBAIC0yOCw2ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoVEhSRUFERURfSFRNTF9QQVJTRVIpCiAK
KyNpbmNsdWRlICJCYWNrZ3JvdW5kSFRNTElucHV0U3RyZWFtLmgiCiAjaW5jbHVkZSAiQ29tcGFj
dEhUTUxUb2tlbi5oIgogI2luY2x1ZGUgIkhUTUxQYXJzZXJPcHRpb25zLmgiCiAjaW5jbHVkZSAi
SFRNTFRva2VuLmgiCkBAIC00Myw2ICs0NCw3IEBAIGNsYXNzIEJhY2tncm91bmRIVE1MUGFyc2Vy
IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB2b2lkIGFwcGVu
ZChjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIHJlc3VtZUZyb20oY29uc3QgV2Vha1B0cjxIVE1M
RG9jdW1lbnRQYXJzZXI+JiwgUGFzc093blB0cjxIVE1MVG9rZW4+LCBQYXNzT3duUHRyPEhUTUxU
b2tlbml6ZXI+LCBIVE1MSW5wdXRDaGVja3BvaW50KTsKICAgICB2b2lkIGZpbmlzaCgpOwogCiAg
ICAgc3RhdGljIFBhc3NPd25QdHI8QmFja2dyb3VuZEhUTUxQYXJzZXI+IGNyZWF0ZShjb25zdCBI
VE1MUGFyc2VyT3B0aW9ucyYgb3B0aW9ucywgY29uc3QgV2Vha1B0cjxIVE1MRG9jdW1lbnRQYXJz
ZXI+JiBwYXJzZXIpCkBAIC01Myw2ICs1NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBj
cmVhdGVQYXJ0aWFsKFBhcnNlcklkZW50aWZpZXIsIGNvbnN0IEhUTUxQYXJzZXJPcHRpb25zJiwg
Y29uc3QgV2Vha1B0cjxIVE1MRG9jdW1lbnRQYXJzZXI+Jik7CiAgICAgc3RhdGljIHZvaWQgc3Rv
cFBhcnRpYWwoUGFyc2VySWRlbnRpZmllcik7CiAgICAgc3RhdGljIHZvaWQgYXBwZW5kUGFydGlh
bChQYXJzZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGlucHV0KTsKKyAgICBzdGF0aWMgdm9p
ZCByZXN1bWVGcm9tUGFydGlhbChQYXJzZXJJZGVudGlmaWVyLCBjb25zdCBXZWFrUHRyPEhUTUxE
b2N1bWVudFBhcnNlcj4mLCBQYXNzT3duUHRyPEhUTUxUb2tlbj4sIFBhc3NPd25QdHI8SFRNTFRv
a2VuaXplcj4sIEhUTUxJbnB1dENoZWNrcG9pbnQpOwogICAgIHN0YXRpYyB2b2lkIGZpbmlzaFBh
cnRpYWwoUGFyc2VySWRlbnRpZmllcik7CiAKIHByaXZhdGU6CkBAIC02NSw3ICs2OCw3IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBzZW5kVG9rZW5zVG9NYWluVGhyZWFkKCk7CiAKICAgICBib29sIG1f
aW5Gb3JlaWduQ29udGVudDsgLy8gRklYTUU6IFdlIG5lZWQgYSBzdGFjayBvZiBmb3JlaWduIGNv
bnRlbnQgbWFya2Vycy4KLSAgICBTZWdtZW50ZWRTdHJpbmcgbV9pbnB1dDsKKyAgICBCYWNrZ3Jv
dW5kSFRNTElucHV0U3RyZWFtIG1faW5wdXQ7CiAgICAgT3duUHRyPEhUTUxUb2tlbj4gbV90b2tl
bjsKICAgICBPd25QdHI8SFRNTFRva2VuaXplcj4gbV90b2tlbml6ZXI7CiAgICAgSFRNTFBhcnNl
ck9wdGlvbnMgbV9vcHRpb25zOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJz
ZXIvSFRNTERvY3VtZW50UGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hU
TUxEb2N1bWVudFBhcnNlci5jcHAKaW5kZXggYzAwMDc2NjA4Yzk5NzQ2ZTNmNThjMjFhMTEzMjZj
ZTc0ZDIwMzFmOS4uMGM1ZmIxYTA4Njg3ZjA0OTlmNzY4YzQ1OTQ0YzEwMzZkOWZlZDU5MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuY3Bw
CkBAIC0yNzYsMjIgKzI3NiwyNyBAQCBib29sIEhUTUxEb2N1bWVudFBhcnNlcjo6Y2FuVGFrZU5l
eHRUb2tlbihTeW5jaHJvbm91c01vZGUgbW9kZSwgUHVtcFNlc3Npb24mIHNlcwogCiAjaWYgRU5B
QkxFKFRIUkVBREVEX0hUTUxfUEFSU0VSKQogCi12b2lkIEhUTUxEb2N1bWVudFBhcnNlcjo6ZGlk
UmVjZWl2ZVRva2Vuc0Zyb21CYWNrZ3JvdW5kUGFyc2VyKFBhc3NPd25QdHI8Q29tcGFjdEhUTUxU
b2tlblN0cmVhbT4gdG9rZW5zKQordm9pZCBIVE1MRG9jdW1lbnRQYXJzZXI6OmRpZFJlY2VpdmVQ
YXJzZWRDaHVua0Zyb21CYWNrZ3JvdW5kUGFyc2VyKFBhc3NPd25QdHI8UGFyc2VkQ2h1bms+IGNo
dW5rKQogewogICAgIGlmIChpc1dhaXRpbmdGb3JTY3JpcHRzKCkpIHsKLSAgICAgICAgbV9wZW5k
aW5nVG9rZW5zLmFwcGVuZCh0b2tlbnMpOworICAgICAgICBtX3NwZWN1bGF0aW9ucy5hcHBlbmQo
Y2h1bmspOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIEFTU0VSVChtX3BlbmRpbmdUb2tl
bnMuaXNFbXB0eSgpKTsKLSAgICBwcm9jZXNzVG9rZW5zRnJvbUJhY2tncm91bmRQYXJzZXIodG9r
ZW5zKTsKKyAgICBBU1NFUlQobV9zcGVjdWxhdGlvbnMuaXNFbXB0eSgpKTsKKyAgICBwcm9jZXNz
UGFyc2VkQ2h1bmtGcm9tQmFja2dyb3VuZFBhcnNlcihjaHVuayk7CiB9CiAKLXZvaWQgSFRNTERv
Y3VtZW50UGFyc2VyOjpkaWRGYWlsU3BlY3VsYXRpb24oUGFzc093blB0cjxIVE1MVG9rZW4+LCBQ
YXNzT3duUHRyPEhUTUxUb2tlbml6ZXI+KQordm9pZCBIVE1MRG9jdW1lbnRQYXJzZXI6OmRpZEZh
aWxTcGVjdWxhdGlvbihQYXNzT3duUHRyPEhUTUxUb2tlbj4gdG9rZW4sIFBhc3NPd25QdHI8SFRN
TFRva2VuaXplcj4gdG9rZW5pemVyKQogewotICAgIC8vIEZJWE1FOiBUZWxsIHRoZSBiYWNrZ3Jv
dW5kIHBhcnNlciB0byByZXN1bWUgcGFyc2luZyB3aXRoIHRoaXMgdG9rZW4gYW5kIHRva2VuaXpl
ci4KKyAgICBtX3dlYWtGYWN0b3J5LnJldm9rZUFsbCgpOworICAgIG1fc3BlY3VsYXRpb25zLmNs
ZWFyKCk7CisKKyAgICBQYXJzZXJJZGVudGlmaWVyIGlkZW50aWZpZXIgPSBQYXJzZXJNYXA6Omlk
ZW50aWZpZXJGb3JQYXJzZXIodGhpcyk7CisgICAgSFRNTFBhcnNlclRocmVhZDo6c2hhcmVkKCkt
PnBvc3RUYXNrKGJpbmQoJkJhY2tncm91bmRIVE1MUGFyc2VyOjpyZXN1bWVGcm9tUGFydGlhbCwK
KyAgICAgICAgaWRlbnRpZmllciwgbV93ZWFrRmFjdG9yeS5jcmVhdGVXZWFrUHRyKCksIHRva2Vu
LCB0b2tlbml6ZXIsIG1fY3VycmVudENodW5rLT5jaGVja3BvaW50KSk7CiB9CiAKLXZvaWQgSFRN
TERvY3VtZW50UGFyc2VyOjpwcm9jZXNzVG9rZW5zRnJvbUJhY2tncm91bmRQYXJzZXIoUGFzc093
blB0cjxDb21wYWN0SFRNTFRva2VuU3RyZWFtPiB0b2tlbnMpCit2b2lkIEhUTUxEb2N1bWVudFBh
cnNlcjo6cHJvY2Vzc1BhcnNlZENodW5rRnJvbUJhY2tncm91bmRQYXJzZXIoUGFzc093blB0cjxQ
YXJzZWRDaHVuaz4gY2h1bmspCiB7CiAgICAgQVNTRVJUKHNob3VsZFVzZVRocmVhZGluZygpKTsK
IApAQCAtMjk5LDYgKzMwNCwxMCBAQCB2b2lkIEhUTUxEb2N1bWVudFBhcnNlcjo6cHJvY2Vzc1Rv
a2Vuc0Zyb21CYWNrZ3JvdW5kUGFyc2VyKFBhc3NPd25QdHI8Q29tcGFjdEhUTQogICAgIC8vIGJ1
dCB3ZSBuZWVkIHRvIGVuc3VyZSBpdCBpc24ndCBkZWxldGVkIHlldC4KICAgICBSZWZQdHI8SFRN
TERvY3VtZW50UGFyc2VyPiBwcm90ZWN0KHRoaXMpOwogCisgICAgQVNTRVJUKCFtX2N1cnJlbnRD
aHVuayk7CisgICAgbV9jdXJyZW50Q2h1bmsgPSBjaHVuazsKKyAgICBPd25QdHI8Q29tcGFjdEhU
TUxUb2tlblN0cmVhbT4gdG9rZW5zID0gbV9jdXJyZW50Q2h1bmstPnRva2Vucy5yZWxlYXNlKCk7
CisKICAgICAvLyBGSVhNRTogUGFzcyBpbiBjdXJyZW50IGlucHV0IGxlbmd0aC4KICAgICBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgY29va2llID0gSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjp3aWxsV3JpdGVIVE1MKGRvY3VtZW50KCksIDAsIGxpbmVOdW1iZXIoKS56ZXJvQmFzZWRJ
bnQoKSk7CiAKQEAgLTMyOSw2ICszMzgsNyBAQCB2b2lkIEhUTUxEb2N1bWVudFBhcnNlcjo6cHJv
Y2Vzc1Rva2Vuc0Zyb21CYWNrZ3JvdW5kUGFyc2VyKFBhc3NPd25QdHI8Q29tcGFjdEhUTQogICAg
ICAgICB9CiAgICAgfQogCisgICAgbV9jdXJyZW50Q2h1bmsuY2xlYXIoKTsKICAgICBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OmRpZFdyaXRlSFRNTChjb29raWUsIGxpbmVOdW1iZXIoKS56ZXJv
QmFzZWRJbnQoKSk7CiB9CiAKQEAgLTcwMSw4ICs3MTEsOCBAQCB2b2lkIEhUTUxEb2N1bWVudFBh
cnNlcjo6cmVzdW1lUGFyc2luZ0FmdGVyU2NyaXB0RXhlY3V0aW9uKCkKIAogI2lmIEVOQUJMRShU
SFJFQURFRF9IVE1MX1BBUlNFUikKICAgICBpZiAoc2hvdWxkVXNlVGhyZWFkaW5nKCkpIHsKLSAg
ICAgICAgd2hpbGUgKCFtX3BlbmRpbmdUb2tlbnMuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBw
cm9jZXNzVG9rZW5zRnJvbUJhY2tncm91bmRQYXJzZXIobV9wZW5kaW5nVG9rZW5zLnRha2VGaXJz
dCgpKTsKKyAgICAgICAgd2hpbGUgKCFtX3NwZWN1bGF0aW9ucy5pc0VtcHR5KCkpIHsKKyAgICAg
ICAgICAgIHByb2Nlc3NQYXJzZWRDaHVua0Zyb21CYWNrZ3JvdW5kUGFyc2VyKG1fc3BlY3VsYXRp
b25zLnRha2VGaXJzdCgpKTsKICAgICAgICAgICAgIGlmIChpc1dhaXRpbmdGb3JTY3JpcHRzKCkg
fHwgaXNTdG9wcGVkKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5oCmluZGV4IGE4
M2IyOWM3ZThlM2JjMzU1YjZkMTExNTJhODI3NTcyOTBkNjAzMjQuLjdiN2QzMTYzZWZlNDg1ZTUw
ZDA3M2NiOWI1MDgxNWM5NzE0ZWJmZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
cGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFy
c2VyL0hUTUxEb2N1bWVudFBhcnNlci5oCkBAIC0yNiw2ICsyNiw3IEBACiAjaWZuZGVmIEhUTUxE
b2N1bWVudFBhcnNlcl9oCiAjZGVmaW5lIEhUTUxEb2N1bWVudFBhcnNlcl9oCiAKKyNpbmNsdWRl
ICJCYWNrZ3JvdW5kSFRNTElucHV0U3RyZWFtLmgiCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VD
bGllbnQuaCIKICNpbmNsdWRlICJGcmFnbWVudFNjcmlwdGluZ1Blcm1pc3Npb24uaCIKICNpbmNs
dWRlICJIVE1MSW5wdXRTdHJlYW0uaCIKQEAgLTgyLDcgKzgzLDExIEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgcmVzdW1lU2NoZWR1bGVkVGFza3MoKTsKIAogI2lmIEVOQUJMRShUSFJFQURF
RF9IVE1MX1BBUlNFUikKLSAgICB2b2lkIGRpZFJlY2VpdmVUb2tlbnNGcm9tQmFja2dyb3VuZFBh
cnNlcihQYXNzT3duUHRyPENvbXBhY3RIVE1MVG9rZW5TdHJlYW0+KTsKKyAgICBzdHJ1Y3QgUGFy
c2VkQ2h1bmsgeworICAgICAgICBPd25QdHI8Q29tcGFjdEhUTUxUb2tlblN0cmVhbT4gdG9rZW5z
OworICAgICAgICBIVE1MSW5wdXRDaGVja3BvaW50IGNoZWNrcG9pbnQ7CisgICAgfTsKKyAgICB2
b2lkIGRpZFJlY2VpdmVQYXJzZWRDaHVua0Zyb21CYWNrZ3JvdW5kUGFyc2VyKFBhc3NPd25QdHI8
UGFyc2VkQ2h1bms+KTsKICNlbmRpZgogCiBwcm90ZWN0ZWQ6CkBAIC0xMjUsNyArMTMwLDcgQEAg
cHJpdmF0ZToKICAgICB2b2lkIHN0YXJ0QmFja2dyb3VuZFBhcnNlcigpOwogICAgIHZvaWQgc3Rv
cEJhY2tncm91bmRQYXJzZXIoKTsKICAgICB2b2lkIGRpZEZhaWxTcGVjdWxhdGlvbihQYXNzT3du
UHRyPEhUTUxUb2tlbj4sIFBhc3NPd25QdHI8SFRNTFRva2VuaXplcj4pOwotICAgIHZvaWQgcHJv
Y2Vzc1Rva2Vuc0Zyb21CYWNrZ3JvdW5kUGFyc2VyKFBhc3NPd25QdHI8Q29tcGFjdEhUTUxUb2tl
blN0cmVhbT4pOworICAgIHZvaWQgcHJvY2Vzc1BhcnNlZENodW5rRnJvbUJhY2tncm91bmRQYXJz
ZXIoUGFzc093blB0cjxQYXJzZWRDaHVuaz4pOwogI2VuZGlmCiAKICAgICBlbnVtIFN5bmNocm9u
b3VzTW9kZSB7CkBAIC0xNzIsNyArMTc3LDggQEAgcHJpdmF0ZToKICAgICBYU1NBdWRpdG9yIG1f
eHNzQXVkaXRvcjsKIAogI2lmIEVOQUJMRShUSFJFQURFRF9IVE1MX1BBUlNFUikKLSAgICBEZXF1
ZTxPd25QdHI8Q29tcGFjdEhUTUxUb2tlblN0cmVhbT4gPiBtX3BlbmRpbmdUb2tlbnM7CisgICAg
T3duUHRyPFBhcnNlZENodW5rPiBtX2N1cnJlbnRDaHVuazsKKyAgICBEZXF1ZTxPd25QdHI8UGFy
c2VkQ2h1bms+ID4gbV9zcGVjdWxhdGlvbnM7CiAgICAgV2Vha1B0ckZhY3Rvcnk8SFRNTERvY3Vt
ZW50UGFyc2VyPiBtX3dlYWtGYWN0b3J5OwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA1OWU3ZjdjZWYzZTE0
ODYyYzZlYzgwMDU3ZDhkMGFmZjM2MzljMTNhLi44ODViNzQyYzJiNWJiZWJkNTBiZmQ3YzRiYjQx
ZDI0ZjZlOGNhOWM5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTMtMDEtMzAgIEFkYW0gQmFy
dGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKworICAgICAgICBUaGUgYmFja2dyb3VuZCBIVE1MIHBh
cnNlciBzaG91bGQgYmUgYWJsZSB0byBwYXJzZSBzcGVjdWxhdGl2ZWx5CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDc3NTMKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3QvcGFyc2VyL2RvY3VtZW50
LXdyaXRlLXBhcnRpYWwtc2NyaXB0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFz
dC9wYXJzZXIvZG9jdW1lbnQtd3JpdGUtcGFydGlhbC1zY3JpcHQuaHRtbDogQWRkZWQuCisKIDIw
MTMtMDEtMzAgIFRoaWFnbyBNYXJjb3MgUC4gU2FudG9zICA8dGhpYWdvLnNhbnRvc0BpbnRlbC5j
b20+CiAKICAgICAgICAgUkVHUkVTU0lPTiAocjE0MTA1MSk6IEJyb2tlIHBsdWdpbiBzdXBwb3J0
IG9uIG5vbi1NYWMgV2ViS2l0MiBQb3J0cwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9w
YXJzZXIvZG9jdW1lbnQtd3JpdGUtcGFydGlhbC1zY3JpcHQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvZmFzdC9wYXJzZXIvZG9jdW1lbnQtd3JpdGUtcGFydGlhbC1zY3JpcHQtZXhwZWN0ZWQu
dHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkODg1MGQyMTkyNTc5YTNjNzVlZGJlYjkzMzYwOTNhOWNmYmVlOWUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3BhcnNlci9kb2N1bWVudC13cml0
ZS1wYXJ0aWFsLXNjcmlwdC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyIEBACitBTEVSVDogUEFT
UzogVGhpcyB0ZXN0IHBhc3NlcyBpZiB0aGlzIHN0cmluZyBpcyBhbGVydGVkCisKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3QvcGFyc2VyL2RvY3VtZW50LXdyaXRlLXBhcnRpYWwtc2NyaXB0
Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3BhcnNlci9kb2N1bWVudC13cml0ZS1wYXJ0aWFsLXNj
cmlwdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFmMjdhYjFiOTJmYTM1YWZmZWYxODJlNjM4MTM5MmJkMzU5
MmVhMTAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3BhcnNlci9kb2N1bWVu
dC13cml0ZS1wYXJ0aWFsLXNjcmlwdC5odG1sCkBAIC0wLDAgKzEsOSBAQAorPHNjcmlwdD4KK2lm
ICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKworZG9j
dW1lbnQud3JpdGUoIjxzY3IiKTsKKzwvc2NyaXB0PmlwdD4KKy8vIDxpZnJhbWUgb25sb2FkPSJh
bGVydCgnRkFJTDogSWYgdGhpcyBzdHJpbmcgaXMgdmlzaWJsZSwgdGhlbiB0aGlzIHRlc3QgZmFp
bHMuJykiIHNyYz0iYWJvdXQ6YmxhbmsiPjwvaWZyYW1lPgorYWxlcnQoJ1BBU1M6IFRoaXMgdGVz
dCBwYXNzZXMgaWYgdGhpcyBzdHJpbmcgaXMgYWxlcnRlZCcpOworPC9zY3JpcHQ+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>185609</attachid>
            <date>2013-01-30 16:10:25 -0800</date>
            <delta_ts>2013-01-30 16:49:11 -0800</delta_ts>
            <desc>everyone but xcode</desc>
            <filename>bug-107753-20130130160709.patch</filename>
            <type>text/plain</type>
            <size>24391</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQxMjgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTAxZTBiZDNmMDkyMGU0
OGRjYWExZGJlNzcyNzU3N2NkNmZhMjc3Ni4uYmVlODUxYzFlMDdkMzI2NjU1ODNjNDJiNjY1Yjhk
NDIzMzQwYzU0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDUyIEBACiAyMDEzLTAxLTMwICBBZGFt
IEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKKyAgICAgICAgVGhlIGJhY2tncm91bmQgSFRN
TCBwYXJzZXIgc2hvdWxkIGJlIGFibGUgdG8gcGFyc2Ugc3BlY3VsYXRpdmVseQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA3NzUzCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIHRo
ZSBhYmlsaXR5IGZvciB0aGUgZm9yZWdyb3VuZCBIVE1MIHBhcnNlciB0bworICAgICAgICBpbnZh
bGlkYXRlIHNwZWN1bGF0aXZlIHBhcnNpbmcgZG9uZSBieSB0aGUgYmFja2dyb3VuZCBIVE1MIHBh
cnNlci4KKyAgICAgICAgQ3VycmVudGx5LCB3ZSdyZSBhIGJpdCBvdmVybHkgYWdyZXNzaXZlIGFu
IGludmFsaWRhdGUgYWxsIHNwZWN1bGF0aW9ucworICAgICAgICBvbiBkb2N1bWVudC53cml0ZS4g
V2UgcGxhbiB0byByZWZpbmUgdGhhdCBpbiB0aGUgZnV0dXJlLgorCisgICAgICAgIFRlc3Q6IGZh
c3QvcGFyc2VyL2RvY3VtZW50LXdyaXRlLXBhcnRpYWwtc2NyaXB0Lmh0bWwKKworICAgICAgICAq
IFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBodG1sL3BhcnNlci9CYWNrZ3JvdW5kSFRNTElucHV0
U3RyZWFtLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6
OkJhY2tncm91bmRIVE1MSW5wdXRTdHJlYW06OkJhY2tncm91bmRIVE1MSW5wdXRTdHJlYW0pOgor
ICAgICAgICAoV2ViQ29yZTo6QmFja2dyb3VuZEhUTUxJbnB1dFN0cmVhbTo6YXBwZW5kKToKKyAg
ICAgICAgKFdlYkNvcmU6OkJhY2tncm91bmRIVE1MSW5wdXRTdHJlYW06OmNsb3NlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkJhY2tncm91bmRIVE1MSW5wdXRTdHJlYW06OmNyZWF0ZUNoZWNrcG9pbnQp
OgorICAgICAgICAoV2ViQ29yZTo6QmFja2dyb3VuZEhUTUxJbnB1dFN0cmVhbTo6cmV3aW5kVG8p
OgorICAgICAgICAqIGh0bWwvcGFyc2VyL0JhY2tncm91bmRIVE1MSW5wdXRTdHJlYW0uaDogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKEJhY2tncm91bmRIVE1MSW5wdXRTdHJl
YW0pOgorICAgICAgICAoV2ViQ29yZTo6QmFja2dyb3VuZEhUTUxJbnB1dFN0cmVhbTo6Y3VycmVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpCYWNrZ3JvdW5kSFRNTElucHV0U3RyZWFtOjpDaGVja3Bv
aW50OjpDaGVja3BvaW50KToKKyAgICAgICAgKENoZWNrcG9pbnQpOgorICAgICAgICAqIGh0bWwv
cGFyc2VyL0JhY2tncm91bmRIVE1MUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJhY2tn
cm91bmRIVE1MUGFyc2VyOjphcHBlbmQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChX
ZWJDb3JlOjpCYWNrZ3JvdW5kSFRNTFBhcnNlcjo6cmVzdW1lRnJvbSk6CisgICAgICAgIChXZWJD
b3JlOjpCYWNrZ3JvdW5kSFRNTFBhcnNlcjo6bWFya0VuZE9mRmlsZSk6CisgICAgICAgIChXZWJD
b3JlOjpCYWNrZ3JvdW5kSFRNTFBhcnNlcjo6cHVtcFRva2VuaXplcik6CisgICAgICAgIChXZWJD
b3JlOjpCYWNrZ3JvdW5kSFRNTFBhcnNlcjo6c2VuZFRva2Vuc1RvTWFpblRocmVhZCk6CisgICAg
ICAgIChXZWJDb3JlOjpCYWNrZ3JvdW5kSFRNTFBhcnNlcjo6cmVzdW1lRnJvbVBhcnRpYWwpOgor
ICAgICAgICAqIGh0bWwvcGFyc2VyL0JhY2tncm91bmRIVE1MUGFyc2VyLmg6CisgICAgICAgIChC
YWNrZ3JvdW5kSFRNTFBhcnNlcik6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50
UGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxEb2N1bWVudFBhcnNlcjo6ZGlkUmVj
ZWl2ZVBhcnNlZENodW5rRnJvbUJhY2tncm91bmRQYXJzZXIpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTERvY3VtZW50UGFyc2VyOjpkaWRGYWlsU3BlY3VsYXRpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTERvY3VtZW50UGFyc2VyOjpwcm9jZXNzUGFyc2VkQ2h1bmtGcm9tQmFja2dyb3VuZFBh
cnNlcik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRG9jdW1lbnRQYXJzZXI6OnJlc3VtZVBhcnNp
bmdBZnRlclNjcmlwdEV4ZWN1dGlvbik6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTERvY3Vt
ZW50UGFyc2VyLmg6CisgICAgICAgIChQYXJzZWRDaHVuayk6CisgICAgICAgIChIVE1MRG9jdW1l
bnRQYXJzZXIpOgorCisyMDEzLTAxLTMwICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+
CisKICAgICAgICAgSFRNTERvY3VtZW50UGFyc2VyOjppbnNlcnQgc2hvdWxkIGJlIGF3YXJlIG9m
IHRocmVhZGVkIHBhcnNpbmcKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEwNzc2NAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3Rz
LnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDJhMmQwNjgyN2I3NmI1
ZTM4ZDlmNjlhODA4OWRhMzllNWI2MjUzMzcuLjYyNzczMTNjNmU3ZDRlZGYxMDY2NzVmMjI0NWY1
N2FlYTZkYjUxNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0Cisr
KyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0xNTMzLDYgKzE1MzMsNyBAQCBz
ZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgaHRtbC9jYW52YXMvV2ViR0xVbmlmb3JtTG9jYXRpb24u
Y3BwCiAgICAgaHRtbC9jYW52YXMvV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUy5jcHAKIAorICAg
IGh0bWwvcGFyc2VyL0JhY2tncm91bmRIVE1MSW5wdXRTdHJlYW0uY3BwCiAgICAgaHRtbC9wYXJz
ZXIvQmFja2dyb3VuZEhUTUxQYXJzZXIuY3BwCiAgICAgaHRtbC9wYXJzZXIvQ1NTUHJlbG9hZFNj
YW5uZXIuY3BwCiAgICAgaHRtbC9wYXJzZXIvQ29tcGFjdEhUTUxUb2tlbi5jcHAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9H
TlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IDk5NjM3OWY5NzUxZThlMDJhNjcxYzk1NDRmYjEyY2Vh
OTliOWExMmYuLjQwODY3MGJmYmM4MjIxZGZlZDE5ZTYzYWE0MDdmNTc4NGQ5NzljMGEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dl
YkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtMzU0NSw2ICszNTQ1LDggQEAgd2ViY29yZV9z
b3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL01vbnRoSW5wdXRUeXBlLmggXAogCVNv
dXJjZS9XZWJDb3JlL2h0bWwvTnVtYmVySW5wdXRUeXBlLmNwcCBcCiAJU291cmNlL1dlYkNvcmUv
aHRtbC9OdW1iZXJJbnB1dFR5cGUuaCBcCisJU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQmFj
a2dyb3VuZEhUTUxJbnB1dFN0cmVhbS5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2Vy
L0JhY2tncm91bmRIVE1MSW5wdXRTdHJlYW0uaCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9wYXJz
ZXIvQmFja2dyb3VuZEhUTUxQYXJzZXIuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNl
ci9CYWNrZ3JvdW5kSFRNTFBhcnNlci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9D
U1NQcmVsb2FkU2Nhbm5lci5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0
LnByaSBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKaW5kZXggMGUzY2Q1ZjZkMzA5Mzg2ZDNi
YzBlYzBjZTFjMzBhNTJkZGExMjRmNy4uZDI0YzA0NGVmZGFkNzhlMjc2NWJmODUxYTg1OTdhZDY2
YTE5OGQwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9UYXJnZXQucHJpCkBAIC03MTEsNiArNzExLDcgQEAgU09VUkNFUyArPSBcCiAg
ICAgaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcCBcCiAgICAgaHRtbC9j
YW52YXMvQ2FudmFzU3R5bGUuY3BwIFwKICAgICBodG1sL2NhbnZhcy9EYXRhVmlldy5jcHAgXAor
ICAgIGh0bWwvcGFyc2VyL0JhY2tncm91bmRIVE1MSW5wdXRTdHJlYW0uY3BwIFwKICAgICBodG1s
L3BhcnNlci9CYWNrZ3JvdW5kSFRNTFBhcnNlci5jcHAgXAogICAgIGh0bWwvcGFyc2VyL0NTU1By
ZWxvYWRTY2FubmVyLmNwcCBcCiAgICAgaHRtbC9wYXJzZXIvQ29tcGFjdEhUTUxUb2tlbi5jcHAg
XApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5neXBpCmluZGV4IDYwNzI2N2NmY2JlNWM2ZTYwNGUyOTIwNzIzNDUxNDUzYTg5
NjMzMTAuLjg5ZDJjYzYwNjk5NTg5N2I5MDNjMTE0N2RiZGI1OWUxNzNkZTcwMDAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmd5cGkKQEAgLTMzNDgsNiArMzM0OCw4IEBACiAgICAgICAgICAgICAnaHRtbC9jYW52YXMv
V2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUy5oJywKICAgICAgICAgICAgICdodG1sL3BhcnNlci9C
YWNrZ3JvdW5kSFRNTFBhcnNlci5jcHAnLAogICAgICAgICAgICAgJ2h0bWwvcGFyc2VyL0JhY2tn
cm91bmRIVE1MUGFyc2VyLmgnLAorICAgICAgICAgICAgJ2h0bWwvcGFyc2VyL0JhY2tncm91bmRI
VE1MSW5wdXRTdHJlYW0uY3BwJywKKyAgICAgICAgICAgICdodG1sL3BhcnNlci9CYWNrZ3JvdW5k
SFRNTElucHV0U3RyZWFtLmgnLAogICAgICAgICAgICAgJ2h0bWwvcGFyc2VyL0NTU1ByZWxvYWRT
Y2FubmVyLmNwcCcsCiAgICAgICAgICAgICAnaHRtbC9wYXJzZXIvQ1NTUHJlbG9hZFNjYW5uZXIu
aCcsCiAgICAgICAgICAgICAnaHRtbC9wYXJzZXIvQ29tcGFjdEhUTUxUb2tlbi5jcHAnLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCA4ZDlhZTNm
MDQwZDEzZTIwZTk4NmQzYWFkOWYzZmVjNzdjYmRhOTU3Li5hZDI4ODdlYzc1MzMyYTE1ZmFlZTA1
MmU5ZDNjMjBiYjNmMmRjMTA3IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZj
cHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9X
ZWJDb3JlLnZjcHJvagpAQCAtNjQ4MTMsNiArNjQ4MTMsMTQgQEAKIAkJCQlOYW1lPSJwYXJzZXIi
CiAJCQkJPgogCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5caHRtbFxwYXJzZXJcQmFj
a2dyb3VuZEhUTUxJbnB1dFN0cmVhbS5jcHAiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZp
bGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxodG1sXHBhcnNlclxCYWNrZ3JvdW5kSFRNTElucHV0
U3RyZWFtLmgiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKIAkJCQkJUmVsYXRpdmVQ
YXRoPSIuLlxodG1sXHBhcnNlclxCYWNrZ3JvdW5kSFRNTFBhcnNlci5jcHAiCiAJCQkJCT4KIAkJ
CQk8L0ZpbGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2Vi
Q29yZS52Y3hwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4
cHJvagppbmRleCA5NWEyZGI1ZTJlYmE4NjdlYmQzZTU1YTM1NjgxOTM5MTBhYzZkODUzLi40NTEx
MGIwNjQyYWU2ZmNhYjY1Y2E1MzdiYTM5MTRhNWRjMWE1NGQ1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oKQEAgLTQ4NjksNiArNDg2OSw3IEBA
CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxodG1sXFZhbGlkYXRpb25NZXNzYWdlLmNwcCIg
Lz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGh0bWxcVmFsaWRpdHlTdGF0ZS5jcHAiIC8+
CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxodG1sXFdlZWtJbnB1dFR5cGUuY3BwIiAvPgor
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caHRtbFxwYXJzZXJcQmFja2dyb3VuZEhUTUxJbnB1
dFN0cmVhbS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxodG1sXHBhcnNlclxC
YWNrZ3JvdW5kSFRNTFBhcnNlci5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxo
dG1sXHBhcnNlclxDb21wYWN0SFRNTFRva2VuLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1
ZGU9Ii4uXGh0bWxccGFyc2VyXENTU1ByZWxvYWRTY2FubmVyLmNwcCIgLz4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycyBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycwpp
bmRleCA5MmE0OTljMTRhZGE0NDhjY2M3N2YzNjEwNDUzNzMyNDFjYmIxMGMwLi5iYjY5ZWM1MWU2
ZWI5ZDM3OTliZDQ4NjMxYTAwNDhjOGJhOWJkNWMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMKKysrIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzCkBAIC01NjI4LDYg
KzU2MjgsOSBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caHRtbFxXZWVrSW5wdXRUeXBl
LmNwcCI+CiAgICAgICA8RmlsdGVyPmh0bWw8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KKyAg
ICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGh0bWxccGFyc2VyXEJhY2tncm91bmRIVE1MSW5wdXRT
dHJlYW0uY3BwIj4KKyAgICAgIDxGaWx0ZXI+aHRtbFxwYXJzZXI8L0ZpbHRlcj4KKyAgICA8L0Ns
Q29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGh0bWxccGFyc2VyXEJhY2tncm91
bmRIVE1MUGFyc2VyLmNwcCI+CiAgICAgICA8RmlsdGVyPmh0bWxccGFyc2VyPC9GaWx0ZXI+CiAg
ICAgPC9DbENvbXBpbGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9C
YWNrZ3JvdW5kSFRNTElucHV0U3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2Vy
L0JhY2tncm91bmRIVE1MSW5wdXRTdHJlYW0uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI4MjIzZDNjOWE2YzI2
NjY2Njc1NmI2YmM4YzNlODQ3MGRlZmY4MzYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3BhcnNlci9CYWNrZ3JvdW5kSFRNTElucHV0U3RyZWFtLmNwcApAQCAtMCwwICsx
LDcyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSwgSW5jLiBBbGwgUmlnaHRz
IFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
R09PR0xFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBHT09HTEUgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShUSFJFQURFRF9IVE1MX1BBUlNFUikK
KworI2luY2x1ZGUgIkJhY2tncm91bmRIVE1MSW5wdXRTdHJlYW0uaCIKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitCYWNrZ3JvdW5kSFRNTElucHV0U3RyZWFtOjpCYWNrZ3JvdW5kSFRNTElucHV0
U3RyZWFtKCkKK3sKK30KKwordm9pZCBCYWNrZ3JvdW5kSFRNTElucHV0U3RyZWFtOjphcHBlbmQo
Y29uc3QgU3RyaW5nJiBpbnB1dCkKK3sKKyAgICBtX2N1cnJlbnQuYXBwZW5kKFNlZ21lbnRlZFN0
cmluZyhpbnB1dCkpOworICAgIG1fc2VnbWVudHMuYXBwZW5kKGlucHV0KTsKK30KKwordm9pZCBC
YWNrZ3JvdW5kSFRNTElucHV0U3RyZWFtOjpjbG9zZSgpCit7CisgICAgbV9jdXJyZW50LmNsb3Nl
KCk7Cit9CisKK0hUTUxJbnB1dENoZWNrcG9pbnQgQmFja2dyb3VuZEhUTUxJbnB1dFN0cmVhbTo6
Y3JlYXRlQ2hlY2twb2ludCgpCit7CisgICAgSFRNTElucHV0Q2hlY2twb2ludCBjaGVja3BvaW50
ID0gbV9jaGVja3BvaW50cy5zaXplKCk7CisgICAgbV9jaGVja3BvaW50cy5hcHBlbmQoQ2hlY2tw
b2ludChtX2N1cnJlbnQsIG1fc2VnbWVudHMuc2l6ZSgpKSk7CisgICAgcmV0dXJuIGNoZWNrcG9p
bnQ7Cit9CisKK3ZvaWQgQmFja2dyb3VuZEhUTUxJbnB1dFN0cmVhbTo6cmV3aW5kVG8oSFRNTElu
cHV0Q2hlY2twb2ludCBjaGVja3BvaW50SW5kZXgpCit7CisgICAgY29uc3QgQ2hlY2twb2ludCYg
Y2hlY2twb2ludCA9IG1fY2hlY2twb2ludHNbY2hlY2twb2ludEluZGV4XTsKKworICAgIGJvb2wg
aXNDbG9zZWQgPSBtX2N1cnJlbnQuaXNDbG9zZWQoKTsKKworICAgIG1fY3VycmVudCA9IGNoZWNr
cG9pbnQuaW5wdXQ7CisgICAgZm9yIChzaXplX3QgaSA9IGNoZWNrcG9pbnQubnVtYmVyT2ZTZWdt
ZW50c0FscmVhZHlBcHBlbmRlZDsgaSA8IG1fc2VnbWVudHMuc2l6ZSgpOyArK2kpCisgICAgICAg
IG1fY3VycmVudC5hcHBlbmQoU2VnbWVudGVkU3RyaW5nKG1fc2VnbWVudHNbaV0pKTsKKworICAg
IGlmIChpc0Nsb3NlZCAmJiAhbV9jdXJyZW50LmlzQ2xvc2VkKCkpCisgICAgICAgIG1fY3VycmVu
dC5jbG9zZSgpOworfQorCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoVEhSRUFERURfSFRNTF9QQVJT
RVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9CYWNrZ3JvdW5kSFRN
TElucHV0U3RyZWFtLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9CYWNrZ3JvdW5kSFRN
TElucHV0U3RyZWFtLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzQ1ZTZkMjI4NGRlN2QzNTEyYzZhMDU2Nzc3OTRi
MjQ5OTRiMzg2YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2Vy
L0JhY2tncm91bmRIVE1MSW5wdXRTdHJlYW0uaApAQCAtMCwwICsxLDY5IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEzIEdvb2dsZSwgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgR09PR0xFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBHT09HTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIEJhY2tncm91
bmRIVE1MSW5wdXRTdHJlYW1faAorI2RlZmluZSBCYWNrZ3JvdW5kSFRNTElucHV0U3RyZWFtX2gK
KworI2lmIEVOQUJMRShUSFJFQURFRF9IVE1MX1BBUlNFUikKKworI2luY2x1ZGUgIlNlZ21lbnRl
ZFN0cmluZy5oIgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit0eXBlZGVmIHNpemVfdCBIVE1M
SW5wdXRDaGVja3BvaW50OworCitjbGFzcyBCYWNrZ3JvdW5kSFRNTElucHV0U3RyZWFtIHsKKyAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShCYWNrZ3JvdW5kSFRNTElucHV0U3RyZWFtKTsKK3B1Ymxp
YzoKKyAgICBCYWNrZ3JvdW5kSFRNTElucHV0U3RyZWFtKCk7CisKKyAgICB2b2lkIGFwcGVuZChj
b25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIGNsb3NlKCk7CisKKyAgICBTZWdtZW50ZWRTdHJpbmcm
IGN1cnJlbnQoKSB7IHJldHVybiBtX2N1cnJlbnQ7IH0KKworICAgIEhUTUxJbnB1dENoZWNrcG9p
bnQgY3JlYXRlQ2hlY2twb2ludCgpOworICAgIHZvaWQgcmV3aW5kVG8oSFRNTElucHV0Q2hlY2tw
b2ludCk7CisKK3ByaXZhdGU6CisgICAgc3RydWN0IENoZWNrcG9pbnQgeworICAgICAgICBDaGVj
a3BvaW50KGNvbnN0IFNlZ21lbnRlZFN0cmluZyYgaSwgc2l6ZV90IG4pIDogaW5wdXQoaSksIG51
bWJlck9mU2VnbWVudHNBbHJlYWR5QXBwZW5kZWQobikgeyB9CisKKyAgICAgICAgU2VnbWVudGVk
U3RyaW5nIGlucHV0OworICAgICAgICBzaXplX3QgbnVtYmVyT2ZTZWdtZW50c0FscmVhZHlBcHBl
bmRlZDsKKyAgICB9OworCisgICAgU2VnbWVudGVkU3RyaW5nIG1fY3VycmVudDsKKyAgICBWZWN0
b3I8U3RyaW5nPiBtX3NlZ21lbnRzOworICAgIFZlY3RvcjxDaGVja3BvaW50PiBtX2NoZWNrcG9p
bnRzOworfTsKKworfQorCisjZW5kaWYgLy8gRU5BQkxFKFRIUkVBREVEX0hUTUxfUEFSU0VSKQor
CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0JhY2tncm91
bmRIVE1MUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0JhY2tncm91bmRI
VE1MUGFyc2VyLmNwcAppbmRleCAwZTk2N2M2ODYyZDg5NjI0YjE1MGMwZjY5MzM1OWIyNTczZjk5
ZmRjLi5jMDhjNDIwMWIxZTdiZjk2YWVhZmE3Njg2M2E0ZWIwMmFjNjI1Y2JmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9CYWNrZ3JvdW5kSFRNTFBhcnNlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQmFja2dyb3VuZEhUTUxQYXJzZXIuY3BwCkBA
IC05NCw3ICs5NCwxNiBAQCBCYWNrZ3JvdW5kSFRNTFBhcnNlcjo6QmFja2dyb3VuZEhUTUxQYXJz
ZXIoY29uc3QgSFRNTFBhcnNlck9wdGlvbnMmIG9wdGlvbnMsIGNvbgogCiB2b2lkIEJhY2tncm91
bmRIVE1MUGFyc2VyOjphcHBlbmQoY29uc3QgU3RyaW5nJiBpbnB1dCkKIHsKLSAgICBtX2lucHV0
LmFwcGVuZChTZWdtZW50ZWRTdHJpbmcoaW5wdXQpKTsKKyAgICBtX2lucHV0LmFwcGVuZChpbnB1
dCk7CisgICAgcHVtcFRva2VuaXplcigpOworfQorCit2b2lkIEJhY2tncm91bmRIVE1MUGFyc2Vy
OjpyZXN1bWVGcm9tKGNvbnN0IFdlYWtQdHI8SFRNTERvY3VtZW50UGFyc2VyPiYgcGFyc2VyLCBQ
YXNzT3duUHRyPEhUTUxUb2tlbj4gdG9rZW4sIFBhc3NPd25QdHI8SFRNTFRva2VuaXplcj4gdG9r
ZW5pemVyLCBIVE1MSW5wdXRDaGVja3BvaW50IGNoZWNrcG9pbnQpCit7CisgICAgbV9wYXJzZXIg
PSBwYXJzZXI7CisgICAgbV90b2tlbiA9IHRva2VuOworICAgIG1fdG9rZW5pemVyID0gdG9rZW5p
emVyOworICAgIG1faW5wdXQucmV3aW5kVG8oY2hlY2twb2ludCk7CiAgICAgcHVtcFRva2VuaXpl
cigpOwogfQogCkBAIC0xMTAsOCArMTE5LDggQEAgdm9pZCBCYWNrZ3JvdW5kSFRNTFBhcnNlcjo6
bWFya0VuZE9mRmlsZSgpCiAgICAgLy8gb25jZSBJbnB1dFN0cmVhbVByZXByb2Nlc3NvciBpcyBz
cGxpdCBvZmYgaW50byBpdHMgb3duIGhlYWRlci4KICAgICBjb25zdCBMQ2hhciBlbmRPZkZpbGVN
YXJrZXIgPSAwOwogCi0gICAgQVNTRVJUKCFtX2lucHV0LmlzQ2xvc2VkKCkpOwotICAgIG1faW5w
dXQuYXBwZW5kKFNlZ21lbnRlZFN0cmluZyhTdHJpbmcoJmVuZE9mRmlsZU1hcmtlciwgMSkpKTsK
KyAgICBBU1NFUlQoIW1faW5wdXQuY3VycmVudCgpLmlzQ2xvc2VkKCkpOworICAgIG1faW5wdXQu
YXBwZW5kKFN0cmluZygmZW5kT2ZGaWxlTWFya2VyLCAxKSk7CiAgICAgbV9pbnB1dC5jbG9zZSgp
OwogfQogCkBAIC0xNTQsOCArMTYzLDggQEAgYm9vbCBCYWNrZ3JvdW5kSFRNTFBhcnNlcjo6c2lt
dWxhdGVUcmVlQnVpbGRlcihjb25zdCBDb21wYWN0SFRNTFRva2VuJiB0b2tlbikKIAogdm9pZCBC
YWNrZ3JvdW5kSFRNTFBhcnNlcjo6cHVtcFRva2VuaXplcigpCiB7Ci0gICAgd2hpbGUgKG1fdG9r
ZW5pemVyLT5uZXh0VG9rZW4obV9pbnB1dCwgKm1fdG9rZW4uZ2V0KCkpKSB7Ci0gICAgICAgIG1f
cGVuZGluZ1Rva2Vucy0+YXBwZW5kKENvbXBhY3RIVE1MVG9rZW4obV90b2tlbi5nZXQoKSwgVGV4
dFBvc2l0aW9uKG1faW5wdXQuY3VycmVudExpbmUoKSwgbV9pbnB1dC5jdXJyZW50Q29sdW1uKCkp
KSk7CisgICAgd2hpbGUgKG1fdG9rZW5pemVyLT5uZXh0VG9rZW4obV9pbnB1dC5jdXJyZW50KCks
ICptX3Rva2VuLmdldCgpKSkgeworICAgICAgICBtX3BlbmRpbmdUb2tlbnMtPmFwcGVuZChDb21w
YWN0SFRNTFRva2VuKG1fdG9rZW4uZ2V0KCksIFRleHRQb3NpdGlvbihtX2lucHV0LmN1cnJlbnQo
KS5jdXJyZW50TGluZSgpLCBtX2lucHV0LmN1cnJlbnQoKS5jdXJyZW50Q29sdW1uKCkpKSk7CiAg
ICAgICAgIG1fdG9rZW4tPmNsZWFyKCk7CiAKICAgICAgICAgaWYgKCFzaW11bGF0ZVRyZWVCdWls
ZGVyKG1fcGVuZGluZ1Rva2Vucy0+bGFzdCgpKSB8fCBtX3BlbmRpbmdUb2tlbnMtPnNpemUoKSA+
PSBwZW5kaW5nVG9rZW5MaW1pdCkKQEAgLTE3NCw3ICsxODMsMTAgQEAgdm9pZCBCYWNrZ3JvdW5k
SFRNTFBhcnNlcjo6c2VuZFRva2Vuc1RvTWFpblRocmVhZCgpCiAgICAgY2hlY2tUaGF0VG9rZW5z
QXJlU2FmZVRvU2VuZFRvQW5vdGhlclRocmVhZChtX3BlbmRpbmdUb2tlbnMuZ2V0KCkpOwogI2Vu
ZGlmCiAKLSAgICBjYWxsT25NYWluVGhyZWFkKGJpbmQoJkhUTUxEb2N1bWVudFBhcnNlcjo6ZGlk
UmVjZWl2ZVRva2Vuc0Zyb21CYWNrZ3JvdW5kUGFyc2VyLCBtX3BhcnNlciwgbV9wZW5kaW5nVG9r
ZW5zLnJlbGVhc2UoKSkpOworICAgIE93blB0cjxIVE1MRG9jdW1lbnRQYXJzZXI6OlBhcnNlZENo
dW5rPiBjaHVuayA9IGFkb3B0UHRyKG5ldyBIVE1MRG9jdW1lbnRQYXJzZXI6OlBhcnNlZENodW5r
KTsKKyAgICBjaHVuay0+dG9rZW5zID0gbV9wZW5kaW5nVG9rZW5zLnJlbGVhc2UoKTsKKyAgICBj
aHVuay0+Y2hlY2twb2ludCA9IG1faW5wdXQuY3JlYXRlQ2hlY2twb2ludCgpOworICAgIGNhbGxP
bk1haW5UaHJlYWQoYmluZCgmSFRNTERvY3VtZW50UGFyc2VyOjpkaWRSZWNlaXZlUGFyc2VkQ2h1
bmtGcm9tQmFja2dyb3VuZFBhcnNlciwgbV9wYXJzZXIsIGNodW5rLnJlbGVhc2UoKSkpOwogCiAg
ICAgbV9wZW5kaW5nVG9rZW5zID0gYWRvcHRQdHIobmV3IENvbXBhY3RIVE1MVG9rZW5TdHJlYW0p
OwogfQpAQCAtMTk3LDYgKzIwOSwxMiBAQCB2b2lkIEJhY2tncm91bmRIVE1MUGFyc2VyOjphcHBl
bmRQYXJ0aWFsKFBhcnNlcklkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgU3RyaQogICAgICAg
ICBwYXJzZXItPmFwcGVuZChpbnB1dCk7CiB9CiAKK3ZvaWQgQmFja2dyb3VuZEhUTUxQYXJzZXI6
OnJlc3VtZUZyb21QYXJ0aWFsKFBhcnNlcklkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgV2Vh
a1B0cjxIVE1MRG9jdW1lbnRQYXJzZXI+JiBwYXJzZXIsIFBhc3NPd25QdHI8SFRNTFRva2VuPiB0
b2tlbiwgUGFzc093blB0cjxIVE1MVG9rZW5pemVyPiB0b2tlbml6ZXIsIEhUTUxJbnB1dENoZWNr
cG9pbnQgY2hlY2twb2ludCkKK3sKKyAgICBpZiAoQmFja2dyb3VuZEhUTUxQYXJzZXIqIGJhY2tn
cm91bmRQYXJzZXIgPSBwYXJzZXJNYXAoKS5iYWNrZ3JvdW5kUGFyc2VycygpLmdldChpZGVudGlm
aWVyKSkKKyAgICAgICAgYmFja2dyb3VuZFBhcnNlci0+cmVzdW1lRnJvbShwYXJzZXIsIHRva2Vu
LCB0b2tlbml6ZXIsIGNoZWNrcG9pbnQpOworfQorCiB2b2lkIEJhY2tncm91bmRIVE1MUGFyc2Vy
OjpmaW5pc2hQYXJ0aWFsKFBhcnNlcklkZW50aWZpZXIgaWRlbnRpZmllcikKIHsKICAgICBpZiAo
QmFja2dyb3VuZEhUTUxQYXJzZXIqIHBhcnNlciA9IHBhcnNlck1hcCgpLmJhY2tncm91bmRQYXJz
ZXJzKCkuZ2V0KGlkZW50aWZpZXIpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9w
YXJzZXIvQmFja2dyb3VuZEhUTUxQYXJzZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2Vy
L0JhY2tncm91bmRIVE1MUGFyc2VyLmgKaW5kZXggZTE3YTliZGQ2MzIzYjcyNDA3MTlmMmFmNGE5
ZGJkOGMzNmJhNGE5YS4uNjdhMjA1YWIwZjQ4MzQ0ZGQ5MzJmNjVlMjhlOWNkOTI3NTE5ODlmYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQmFja2dyb3VuZEhUTUxQYXJz
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9CYWNrZ3JvdW5kSFRNTFBhcnNl
ci5oCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoVEhSRUFERURfSFRNTF9QQVJTRVIp
CiAKKyNpbmNsdWRlICJCYWNrZ3JvdW5kSFRNTElucHV0U3RyZWFtLmgiCiAjaW5jbHVkZSAiQ29t
cGFjdEhUTUxUb2tlbi5oIgogI2luY2x1ZGUgIkhUTUxQYXJzZXJPcHRpb25zLmgiCiAjaW5jbHVk
ZSAiSFRNTFRva2VuLmgiCkBAIC00Myw2ICs0NCw3IEBAIGNsYXNzIEJhY2tncm91bmRIVE1MUGFy
c2VyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB2b2lkIGFw
cGVuZChjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIHJlc3VtZUZyb20oY29uc3QgV2Vha1B0cjxI
VE1MRG9jdW1lbnRQYXJzZXI+JiwgUGFzc093blB0cjxIVE1MVG9rZW4+LCBQYXNzT3duUHRyPEhU
TUxUb2tlbml6ZXI+LCBIVE1MSW5wdXRDaGVja3BvaW50KTsKICAgICB2b2lkIGZpbmlzaCgpOwog
CiAgICAgc3RhdGljIFBhc3NPd25QdHI8QmFja2dyb3VuZEhUTUxQYXJzZXI+IGNyZWF0ZShjb25z
dCBIVE1MUGFyc2VyT3B0aW9ucyYgb3B0aW9ucywgY29uc3QgV2Vha1B0cjxIVE1MRG9jdW1lbnRQ
YXJzZXI+JiBwYXJzZXIpCkBAIC01Myw2ICs1NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9p
ZCBjcmVhdGVQYXJ0aWFsKFBhcnNlcklkZW50aWZpZXIsIGNvbnN0IEhUTUxQYXJzZXJPcHRpb25z
JiwgY29uc3QgV2Vha1B0cjxIVE1MRG9jdW1lbnRQYXJzZXI+Jik7CiAgICAgc3RhdGljIHZvaWQg
c3RvcFBhcnRpYWwoUGFyc2VySWRlbnRpZmllcik7CiAgICAgc3RhdGljIHZvaWQgYXBwZW5kUGFy
dGlhbChQYXJzZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGlucHV0KTsKKyAgICBzdGF0aWMg
dm9pZCByZXN1bWVGcm9tUGFydGlhbChQYXJzZXJJZGVudGlmaWVyLCBjb25zdCBXZWFrUHRyPEhU
TUxEb2N1bWVudFBhcnNlcj4mLCBQYXNzT3duUHRyPEhUTUxUb2tlbj4sIFBhc3NPd25QdHI8SFRN
TFRva2VuaXplcj4sIEhUTUxJbnB1dENoZWNrcG9pbnQpOwogICAgIHN0YXRpYyB2b2lkIGZpbmlz
aFBhcnRpYWwoUGFyc2VySWRlbnRpZmllcik7CiAKIHByaXZhdGU6CkBAIC02NSw3ICs2OCw3IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBzZW5kVG9rZW5zVG9NYWluVGhyZWFkKCk7CiAKICAgICBib29s
IG1faW5Gb3JlaWduQ29udGVudDsgLy8gRklYTUU6IFdlIG5lZWQgYSBzdGFjayBvZiBmb3JlaWdu
IGNvbnRlbnQgbWFya2Vycy4KLSAgICBTZWdtZW50ZWRTdHJpbmcgbV9pbnB1dDsKKyAgICBCYWNr
Z3JvdW5kSFRNTElucHV0U3RyZWFtIG1faW5wdXQ7CiAgICAgT3duUHRyPEhUTUxUb2tlbj4gbV90
b2tlbjsKICAgICBPd25QdHI8SFRNTFRva2VuaXplcj4gbV90b2tlbml6ZXI7CiAgICAgSFRNTFBh
cnNlck9wdGlvbnMgbV9vcHRpb25zOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9w
YXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2Vy
L0hUTUxEb2N1bWVudFBhcnNlci5jcHAKaW5kZXggYzAwMDc2NjA4Yzk5NzQ2ZTNmNThjMjFhMTEz
MjZjZTc0ZDIwMzFmOS4uMGM1ZmIxYTA4Njg3ZjA0OTlmNzY4YzQ1OTQ0YzEwMzZkOWZlZDU5MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2Vy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIu
Y3BwCkBAIC0yNzYsMjIgKzI3NiwyNyBAQCBib29sIEhUTUxEb2N1bWVudFBhcnNlcjo6Y2FuVGFr
ZU5leHRUb2tlbihTeW5jaHJvbm91c01vZGUgbW9kZSwgUHVtcFNlc3Npb24mIHNlcwogCiAjaWYg
RU5BQkxFKFRIUkVBREVEX0hUTUxfUEFSU0VSKQogCi12b2lkIEhUTUxEb2N1bWVudFBhcnNlcjo6
ZGlkUmVjZWl2ZVRva2Vuc0Zyb21CYWNrZ3JvdW5kUGFyc2VyKFBhc3NPd25QdHI8Q29tcGFjdEhU
TUxUb2tlblN0cmVhbT4gdG9rZW5zKQordm9pZCBIVE1MRG9jdW1lbnRQYXJzZXI6OmRpZFJlY2Vp
dmVQYXJzZWRDaHVua0Zyb21CYWNrZ3JvdW5kUGFyc2VyKFBhc3NPd25QdHI8UGFyc2VkQ2h1bms+
IGNodW5rKQogewogICAgIGlmIChpc1dhaXRpbmdGb3JTY3JpcHRzKCkpIHsKLSAgICAgICAgbV9w
ZW5kaW5nVG9rZW5zLmFwcGVuZCh0b2tlbnMpOworICAgICAgICBtX3NwZWN1bGF0aW9ucy5hcHBl
bmQoY2h1bmspOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIEFTU0VSVChtX3BlbmRpbmdU
b2tlbnMuaXNFbXB0eSgpKTsKLSAgICBwcm9jZXNzVG9rZW5zRnJvbUJhY2tncm91bmRQYXJzZXIo
dG9rZW5zKTsKKyAgICBBU1NFUlQobV9zcGVjdWxhdGlvbnMuaXNFbXB0eSgpKTsKKyAgICBwcm9j
ZXNzUGFyc2VkQ2h1bmtGcm9tQmFja2dyb3VuZFBhcnNlcihjaHVuayk7CiB9CiAKLXZvaWQgSFRN
TERvY3VtZW50UGFyc2VyOjpkaWRGYWlsU3BlY3VsYXRpb24oUGFzc093blB0cjxIVE1MVG9rZW4+
LCBQYXNzT3duUHRyPEhUTUxUb2tlbml6ZXI+KQordm9pZCBIVE1MRG9jdW1lbnRQYXJzZXI6OmRp
ZEZhaWxTcGVjdWxhdGlvbihQYXNzT3duUHRyPEhUTUxUb2tlbj4gdG9rZW4sIFBhc3NPd25QdHI8
SFRNTFRva2VuaXplcj4gdG9rZW5pemVyKQogewotICAgIC8vIEZJWE1FOiBUZWxsIHRoZSBiYWNr
Z3JvdW5kIHBhcnNlciB0byByZXN1bWUgcGFyc2luZyB3aXRoIHRoaXMgdG9rZW4gYW5kIHRva2Vu
aXplci4KKyAgICBtX3dlYWtGYWN0b3J5LnJldm9rZUFsbCgpOworICAgIG1fc3BlY3VsYXRpb25z
LmNsZWFyKCk7CisKKyAgICBQYXJzZXJJZGVudGlmaWVyIGlkZW50aWZpZXIgPSBQYXJzZXJNYXA6
OmlkZW50aWZpZXJGb3JQYXJzZXIodGhpcyk7CisgICAgSFRNTFBhcnNlclRocmVhZDo6c2hhcmVk
KCktPnBvc3RUYXNrKGJpbmQoJkJhY2tncm91bmRIVE1MUGFyc2VyOjpyZXN1bWVGcm9tUGFydGlh
bCwKKyAgICAgICAgaWRlbnRpZmllciwgbV93ZWFrRmFjdG9yeS5jcmVhdGVXZWFrUHRyKCksIHRv
a2VuLCB0b2tlbml6ZXIsIG1fY3VycmVudENodW5rLT5jaGVja3BvaW50KSk7CiB9CiAKLXZvaWQg
SFRNTERvY3VtZW50UGFyc2VyOjpwcm9jZXNzVG9rZW5zRnJvbUJhY2tncm91bmRQYXJzZXIoUGFz
c093blB0cjxDb21wYWN0SFRNTFRva2VuU3RyZWFtPiB0b2tlbnMpCit2b2lkIEhUTUxEb2N1bWVu
dFBhcnNlcjo6cHJvY2Vzc1BhcnNlZENodW5rRnJvbUJhY2tncm91bmRQYXJzZXIoUGFzc093blB0
cjxQYXJzZWRDaHVuaz4gY2h1bmspCiB7CiAgICAgQVNTRVJUKHNob3VsZFVzZVRocmVhZGluZygp
KTsKIApAQCAtMjk5LDYgKzMwNCwxMCBAQCB2b2lkIEhUTUxEb2N1bWVudFBhcnNlcjo6cHJvY2Vz
c1Rva2Vuc0Zyb21CYWNrZ3JvdW5kUGFyc2VyKFBhc3NPd25QdHI8Q29tcGFjdEhUTQogICAgIC8v
IGJ1dCB3ZSBuZWVkIHRvIGVuc3VyZSBpdCBpc24ndCBkZWxldGVkIHlldC4KICAgICBSZWZQdHI8
SFRNTERvY3VtZW50UGFyc2VyPiBwcm90ZWN0KHRoaXMpOwogCisgICAgQVNTRVJUKCFtX2N1cnJl
bnRDaHVuayk7CisgICAgbV9jdXJyZW50Q2h1bmsgPSBjaHVuazsKKyAgICBPd25QdHI8Q29tcGFj
dEhUTUxUb2tlblN0cmVhbT4gdG9rZW5zID0gbV9jdXJyZW50Q2h1bmstPnRva2Vucy5yZWxlYXNl
KCk7CisKICAgICAvLyBGSVhNRTogUGFzcyBpbiBjdXJyZW50IGlucHV0IGxlbmd0aC4KICAgICBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgY29va2llID0gSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjp3aWxsV3JpdGVIVE1MKGRvY3VtZW50KCksIDAsIGxpbmVOdW1iZXIoKS56ZXJvQmFz
ZWRJbnQoKSk7CiAKQEAgLTMyOSw2ICszMzgsNyBAQCB2b2lkIEhUTUxEb2N1bWVudFBhcnNlcjo6
cHJvY2Vzc1Rva2Vuc0Zyb21CYWNrZ3JvdW5kUGFyc2VyKFBhc3NPd25QdHI8Q29tcGFjdEhUTQog
ICAgICAgICB9CiAgICAgfQogCisgICAgbV9jdXJyZW50Q2h1bmsuY2xlYXIoKTsKICAgICBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFdyaXRlSFRNTChjb29raWUsIGxpbmVOdW1iZXIoKS56
ZXJvQmFzZWRJbnQoKSk7CiB9CiAKQEAgLTcwMSw4ICs3MTEsOCBAQCB2b2lkIEhUTUxEb2N1bWVu
dFBhcnNlcjo6cmVzdW1lUGFyc2luZ0FmdGVyU2NyaXB0RXhlY3V0aW9uKCkKIAogI2lmIEVOQUJM
RShUSFJFQURFRF9IVE1MX1BBUlNFUikKICAgICBpZiAoc2hvdWxkVXNlVGhyZWFkaW5nKCkpIHsK
LSAgICAgICAgd2hpbGUgKCFtX3BlbmRpbmdUb2tlbnMuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAg
ICBwcm9jZXNzVG9rZW5zRnJvbUJhY2tncm91bmRQYXJzZXIobV9wZW5kaW5nVG9rZW5zLnRha2VG
aXJzdCgpKTsKKyAgICAgICAgd2hpbGUgKCFtX3NwZWN1bGF0aW9ucy5pc0VtcHR5KCkpIHsKKyAg
ICAgICAgICAgIHByb2Nlc3NQYXJzZWRDaHVua0Zyb21CYWNrZ3JvdW5kUGFyc2VyKG1fc3BlY3Vs
YXRpb25zLnRha2VGaXJzdCgpKTsKICAgICAgICAgICAgIGlmIChpc1dhaXRpbmdGb3JTY3JpcHRz
KCkgfHwgaXNTdG9wcGVkKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5oCmluZGV4
IGE4M2IyOWM3ZThlM2JjMzU1YjZkMTExNTJhODI3NTcyOTBkNjAzMjQuLjdiN2QzMTYzZWZlNDg1
ZTUwZDA3M2NiOWI1MDgxNWM5NzE0ZWJmZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
cGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5oCkBAIC0yNiw2ICsyNiw3IEBACiAjaWZuZGVmIEhU
TUxEb2N1bWVudFBhcnNlcl9oCiAjZGVmaW5lIEhUTUxEb2N1bWVudFBhcnNlcl9oCiAKKyNpbmNs
dWRlICJCYWNrZ3JvdW5kSFRNTElucHV0U3RyZWFtLmgiCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3Vy
Y2VDbGllbnQuaCIKICNpbmNsdWRlICJGcmFnbWVudFNjcmlwdGluZ1Blcm1pc3Npb24uaCIKICNp
bmNsdWRlICJIVE1MSW5wdXRTdHJlYW0uaCIKQEAgLTgyLDcgKzgzLDExIEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIHZvaWQgcmVzdW1lU2NoZWR1bGVkVGFza3MoKTsKIAogI2lmIEVOQUJMRShUSFJF
QURFRF9IVE1MX1BBUlNFUikKLSAgICB2b2lkIGRpZFJlY2VpdmVUb2tlbnNGcm9tQmFja2dyb3Vu
ZFBhcnNlcihQYXNzT3duUHRyPENvbXBhY3RIVE1MVG9rZW5TdHJlYW0+KTsKKyAgICBzdHJ1Y3Qg
UGFyc2VkQ2h1bmsgeworICAgICAgICBPd25QdHI8Q29tcGFjdEhUTUxUb2tlblN0cmVhbT4gdG9r
ZW5zOworICAgICAgICBIVE1MSW5wdXRDaGVja3BvaW50IGNoZWNrcG9pbnQ7CisgICAgfTsKKyAg
ICB2b2lkIGRpZFJlY2VpdmVQYXJzZWRDaHVua0Zyb21CYWNrZ3JvdW5kUGFyc2VyKFBhc3NPd25Q
dHI8UGFyc2VkQ2h1bms+KTsKICNlbmRpZgogCiBwcm90ZWN0ZWQ6CkBAIC0xMjUsNyArMTMwLDcg
QEAgcHJpdmF0ZToKICAgICB2b2lkIHN0YXJ0QmFja2dyb3VuZFBhcnNlcigpOwogICAgIHZvaWQg
c3RvcEJhY2tncm91bmRQYXJzZXIoKTsKICAgICB2b2lkIGRpZEZhaWxTcGVjdWxhdGlvbihQYXNz
T3duUHRyPEhUTUxUb2tlbj4sIFBhc3NPd25QdHI8SFRNTFRva2VuaXplcj4pOwotICAgIHZvaWQg
cHJvY2Vzc1Rva2Vuc0Zyb21CYWNrZ3JvdW5kUGFyc2VyKFBhc3NPd25QdHI8Q29tcGFjdEhUTUxU
b2tlblN0cmVhbT4pOworICAgIHZvaWQgcHJvY2Vzc1BhcnNlZENodW5rRnJvbUJhY2tncm91bmRQ
YXJzZXIoUGFzc093blB0cjxQYXJzZWRDaHVuaz4pOwogI2VuZGlmCiAKICAgICBlbnVtIFN5bmNo
cm9ub3VzTW9kZSB7CkBAIC0xNzIsNyArMTc3LDggQEAgcHJpdmF0ZToKICAgICBYU1NBdWRpdG9y
IG1feHNzQXVkaXRvcjsKIAogI2lmIEVOQUJMRShUSFJFQURFRF9IVE1MX1BBUlNFUikKLSAgICBE
ZXF1ZTxPd25QdHI8Q29tcGFjdEhUTUxUb2tlblN0cmVhbT4gPiBtX3BlbmRpbmdUb2tlbnM7Cisg
ICAgT3duUHRyPFBhcnNlZENodW5rPiBtX2N1cnJlbnRDaHVuazsKKyAgICBEZXF1ZTxPd25QdHI8
UGFyc2VkQ2h1bms+ID4gbV9zcGVjdWxhdGlvbnM7CiAgICAgV2Vha1B0ckZhY3Rvcnk8SFRNTERv
Y3VtZW50UGFyc2VyPiBtX3dlYWtGYWN0b3J5OwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA1OWU3ZjdjZWYz
ZTE0ODYyYzZlYzgwMDU3ZDhkMGFmZjM2MzljMTNhLi44ODViNzQyYzJiNWJiZWJkNTBiZmQ3YzRi
YjQxZDI0ZjZlOGNhOWM5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTMtMDEtMzAgIEFkYW0g
QmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKworICAgICAgICBUaGUgYmFja2dyb3VuZCBIVE1M
IHBhcnNlciBzaG91bGQgYmUgYWJsZSB0byBwYXJzZSBzcGVjdWxhdGl2ZWx5CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDc3NTMKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3QvcGFyc2VyL2RvY3Vt
ZW50LXdyaXRlLXBhcnRpYWwtc2NyaXB0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
ZmFzdC9wYXJzZXIvZG9jdW1lbnQtd3JpdGUtcGFydGlhbC1zY3JpcHQuaHRtbDogQWRkZWQuCisK
IDIwMTMtMDEtMzAgIFRoaWFnbyBNYXJjb3MgUC4gU2FudG9zICA8dGhpYWdvLnNhbnRvc0BpbnRl
bC5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTiAocjE0MTA1MSk6IEJyb2tlIHBsdWdpbiBzdXBw
b3J0IG9uIG5vbi1NYWMgV2ViS2l0MiBQb3J0cwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9wYXJzZXIvZG9jdW1lbnQtd3JpdGUtcGFydGlhbC1zY3JpcHQtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvZmFzdC9wYXJzZXIvZG9jdW1lbnQtd3JpdGUtcGFydGlhbC1zY3JpcHQtZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRkODg1MGQyMTkyNTc5YTNjNzVlZGJlYjkzMzYwOTNhOWNmYmVl
OWUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3BhcnNlci9kb2N1bWVudC13
cml0ZS1wYXJ0aWFsLXNjcmlwdC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyIEBACitBTEVSVDog
UEFTUzogVGhpcyB0ZXN0IHBhc3NlcyBpZiB0aGlzIHN0cmluZyBpcyBhbGVydGVkCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvcGFyc2VyL2RvY3VtZW50LXdyaXRlLXBhcnRpYWwtc2Ny
aXB0Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3BhcnNlci9kb2N1bWVudC13cml0ZS1wYXJ0aWFs
LXNjcmlwdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFmMjdhYjFiOTJmYTM1YWZmZWYxODJlNjM4MTM5MmJk
MzU5MmVhMTAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3BhcnNlci9kb2N1
bWVudC13cml0ZS1wYXJ0aWFsLXNjcmlwdC5odG1sCkBAIC0wLDAgKzEsOSBAQAorPHNjcmlwdD4K
K2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKwor
ZG9jdW1lbnQud3JpdGUoIjxzY3IiKTsKKzwvc2NyaXB0PmlwdD4KKy8vIDxpZnJhbWUgb25sb2Fk
PSJhbGVydCgnRkFJTDogSWYgdGhpcyBzdHJpbmcgaXMgdmlzaWJsZSwgdGhlbiB0aGlzIHRlc3Qg
ZmFpbHMuJykiIHNyYz0iYWJvdXQ6YmxhbmsiPjwvaWZyYW1lPgorYWxlcnQoJ1BBU1M6IFRoaXMg
dGVzdCBwYXNzZXMgaWYgdGhpcyBzdHJpbmcgaXMgYWxlcnRlZCcpOworPC9zY3JpcHQ+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>185624</attachid>
            <date>2013-01-30 16:49:13 -0800</date>
            <delta_ts>2013-01-30 18:42:06 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-107753-20130130164557.patch</filename>
            <type>text/plain</type>
            <size>43025</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0MTMzNykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUwIEBACisyMDEzLTAxLTMwICBBZGFtIEJh
cnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVGhlIGJhY2tncm91bmQgSFRNTCBw
YXJzZXIgc2hvdWxkIGJlIGFibGUgdG8gcGFyc2Ugc3BlY3VsYXRpdmVseQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA3NzUzCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIHRoZSBh
YmlsaXR5IGZvciB0aGUgZm9yZWdyb3VuZCBIVE1MIHBhcnNlciB0bworICAgICAgICBpbnZhbGlk
YXRlIHNwZWN1bGF0aXZlIHBhcnNpbmcgZG9uZSBieSB0aGUgYmFja2dyb3VuZCBIVE1MIHBhcnNl
ci4KKyAgICAgICAgQ3VycmVudGx5LCB3ZSdyZSBhIGJpdCBvdmVybHkgYWdyZXNzaXZlIGFuIGlu
dmFsaWRhdGUgYWxsIHNwZWN1bGF0aW9ucworICAgICAgICBvbiBkb2N1bWVudC53cml0ZS4gV2Ug
cGxhbiB0byByZWZpbmUgdGhhdCBpbiB0aGUgZnV0dXJlLgorCisgICAgICAgIFRlc3Q6IGZhc3Qv
cGFyc2VyL2RvY3VtZW50LXdyaXRlLXBhcnRpYWwtc2NyaXB0Lmh0bWwKKworICAgICAgICAqIFdl
YkNvcmUuZ3lwaToKKyAgICAgICAgKiBodG1sL3BhcnNlci9CYWNrZ3JvdW5kSFRNTElucHV0U3Ry
ZWFtLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkJh
Y2tncm91bmRIVE1MSW5wdXRTdHJlYW06OkJhY2tncm91bmRIVE1MSW5wdXRTdHJlYW0pOgorICAg
ICAgICAoV2ViQ29yZTo6QmFja2dyb3VuZEhUTUxJbnB1dFN0cmVhbTo6YXBwZW5kKToKKyAgICAg
ICAgKFdlYkNvcmU6OkJhY2tncm91bmRIVE1MSW5wdXRTdHJlYW06OmNsb3NlKToKKyAgICAgICAg
KFdlYkNvcmU6OkJhY2tncm91bmRIVE1MSW5wdXRTdHJlYW06OmNyZWF0ZUNoZWNrcG9pbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6QmFja2dyb3VuZEhUTUxJbnB1dFN0cmVhbTo6cmV3aW5kVG8pOgor
ICAgICAgICAqIGh0bWwvcGFyc2VyL0JhY2tncm91bmRIVE1MSW5wdXRTdHJlYW0uaDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKEJhY2tncm91bmRIVE1MSW5wdXRTdHJlYW0p
OgorICAgICAgICAoV2ViQ29yZTo6QmFja2dyb3VuZEhUTUxJbnB1dFN0cmVhbTo6Y3VycmVudCk6
CisgICAgICAgIChXZWJDb3JlOjpCYWNrZ3JvdW5kSFRNTElucHV0U3RyZWFtOjpDaGVja3BvaW50
OjpDaGVja3BvaW50KToKKyAgICAgICAgKENoZWNrcG9pbnQpOgorICAgICAgICAqIGh0bWwvcGFy
c2VyL0JhY2tncm91bmRIVE1MUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJhY2tncm91
bmRIVE1MUGFyc2VyOjphcHBlbmQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJD
b3JlOjpCYWNrZ3JvdW5kSFRNTFBhcnNlcjo6cmVzdW1lRnJvbSk6CisgICAgICAgIChXZWJDb3Jl
OjpCYWNrZ3JvdW5kSFRNTFBhcnNlcjo6bWFya0VuZE9mRmlsZSk6CisgICAgICAgIChXZWJDb3Jl
OjpCYWNrZ3JvdW5kSFRNTFBhcnNlcjo6cHVtcFRva2VuaXplcik6CisgICAgICAgIChXZWJDb3Jl
OjpCYWNrZ3JvdW5kSFRNTFBhcnNlcjo6c2VuZFRva2Vuc1RvTWFpblRocmVhZCk6CisgICAgICAg
IChXZWJDb3JlOjpCYWNrZ3JvdW5kSFRNTFBhcnNlcjo6cmVzdW1lRnJvbVBhcnRpYWwpOgorICAg
ICAgICAqIGh0bWwvcGFyc2VyL0JhY2tncm91bmRIVE1MUGFyc2VyLmg6CisgICAgICAgIChCYWNr
Z3JvdW5kSFRNTFBhcnNlcik6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFy
c2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxEb2N1bWVudFBhcnNlcjo6ZGlkUmVjZWl2
ZVBhcnNlZENodW5rRnJvbUJhY2tncm91bmRQYXJzZXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TERvY3VtZW50UGFyc2VyOjpkaWRGYWlsU3BlY3VsYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTERvY3VtZW50UGFyc2VyOjpwcm9jZXNzUGFyc2VkQ2h1bmtGcm9tQmFja2dyb3VuZFBhcnNl
cik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRG9jdW1lbnRQYXJzZXI6OnJlc3VtZVBhcnNpbmdB
ZnRlclNjcmlwdEV4ZWN1dGlvbik6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50
UGFyc2VyLmg6CisgICAgICAgIChQYXJzZWRDaHVuayk6CisgICAgICAgIChIVE1MRG9jdW1lbnRQ
YXJzZXIpOgorCiAyMDEzLTAxLTMwICBKb2UgTWFzb24gIDxqbWFzb25AcmltLmNvbT4KIAogICAg
ICAgICBbQmxhY2tCZXJyeV0gTmV2ZXIgc3RvcmUgZW1wdHkgY3JlZGVudGlhbHMgaW4gTmV0d29y
a0pvYjo6c3RvcmVDcmVkZW50aWFscwpJbmRleDogU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9u
IDE0MTMzNykKKysrIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkp
CkBAIC0xNTMyLDYgKzE1MzIsNyBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgaHRtbC9jYW52
YXMvV2ViR0xVbmlmb3JtTG9jYXRpb24uY3BwCiAgICAgaHRtbC9jYW52YXMvV2ViR0xWZXJ0ZXhB
cnJheU9iamVjdE9FUy5jcHAKIAorICAgIGh0bWwvcGFyc2VyL0JhY2tncm91bmRIVE1MSW5wdXRT
dHJlYW0uY3BwCiAgICAgaHRtbC9wYXJzZXIvQmFja2dyb3VuZEhUTUxQYXJzZXIuY3BwCiAgICAg
aHRtbC9wYXJzZXIvQ1NTUHJlbG9hZFNjYW5uZXIuY3BwCiAgICAgaHRtbC9wYXJzZXIvQ29tcGFj
dEhUTUxUb2tlbi5jcHAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkocmV2aXNp
b24gMTQxMzM3KQorKysgU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkod29ya2lu
ZyBjb3B5KQpAQCAtMzU0Myw2ICszNTQzLDggQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3Vy
Y2UvV2ViQ29yZS9odG1sL01vbnRoSW5wdXRUeXBlLmggXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwv
TnVtYmVySW5wdXRUeXBlLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9OdW1iZXJJbnB1dFR5
cGUuaCBcCisJU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQmFja2dyb3VuZEhUTUxJbnB1dFN0
cmVhbS5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0JhY2tncm91bmRIVE1MSW5w
dXRTdHJlYW0uaCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQmFja2dyb3VuZEhUTUxQ
YXJzZXIuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9CYWNrZ3JvdW5kSFRNTFBh
cnNlci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9DU1NQcmVsb2FkU2Nhbm5lci5j
cHAgXApJbmRleDogU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9UYXJnZXQucHJpCShyZXZpc2lvbiAxNDEzMzcpCisrKyBTb3VyY2UvV2ViQ29y
ZS9UYXJnZXQucHJpCSh3b3JraW5nIGNvcHkpCkBAIC03MTEsNiArNzExLDcgQEAgU09VUkNFUyAr
PSBcCiAgICAgaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcCBcCiAgICAg
aHRtbC9jYW52YXMvQ2FudmFzU3R5bGUuY3BwIFwKICAgICBodG1sL2NhbnZhcy9EYXRhVmlldy5j
cHAgXAorICAgIGh0bWwvcGFyc2VyL0JhY2tncm91bmRIVE1MSW5wdXRTdHJlYW0uY3BwIFwKICAg
ICBodG1sL3BhcnNlci9CYWNrZ3JvdW5kSFRNTFBhcnNlci5jcHAgXAogICAgIGh0bWwvcGFyc2Vy
L0NTU1ByZWxvYWRTY2FubmVyLmNwcCBcCiAgICAgaHRtbC9wYXJzZXIvQ29tcGFjdEhUTUxUb2tl
bi5jcHAgXApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQkocmV2aXNpb24gMTQxMzM3KQorKysgU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5neXBpCSh3b3JraW5nIGNvcHkpCkBAIC0zMzQ4LDYgKzMzNDgsOCBA
QAogICAgICAgICAgICAgJ2h0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMuaCcs
CiAgICAgICAgICAgICAnaHRtbC9wYXJzZXIvQmFja2dyb3VuZEhUTUxQYXJzZXIuY3BwJywKICAg
ICAgICAgICAgICdodG1sL3BhcnNlci9CYWNrZ3JvdW5kSFRNTFBhcnNlci5oJywKKyAgICAgICAg
ICAgICdodG1sL3BhcnNlci9CYWNrZ3JvdW5kSFRNTElucHV0U3RyZWFtLmNwcCcsCisgICAgICAg
ICAgICAnaHRtbC9wYXJzZXIvQmFja2dyb3VuZEhUTUxJbnB1dFN0cmVhbS5oJywKICAgICAgICAg
ICAgICdodG1sL3BhcnNlci9DU1NQcmVsb2FkU2Nhbm5lci5jcHAnLAogICAgICAgICAgICAgJ2h0
bWwvcGFyc2VyL0NTU1ByZWxvYWRTY2FubmVyLmgnLAogICAgICAgICAgICAgJ2h0bWwvcGFyc2Vy
L0NvbXBhY3RIVE1MVG9rZW4uY3BwJywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNw
cm9qL1dlYkNvcmUudmNwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
dmNwcm9qL1dlYkNvcmUudmNwcm9qCShyZXZpc2lvbiAxNDEzMzcpCisrKyBTb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAtNjQ3NTcs
NiArNjQ3NTcsMTQgQEAKIAkJCQlOYW1lPSJwYXJzZXIiCiAJCQkJPgogCQkJCTxGaWxlCisJCQkJ
CVJlbGF0aXZlUGF0aD0iLi5caHRtbFxwYXJzZXJcQmFja2dyb3VuZEhUTUxJbnB1dFN0cmVhbS5j
cHAiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIu
LlxodG1sXHBhcnNlclxCYWNrZ3JvdW5kSFRNTElucHV0U3RyZWFtLmgiCisJCQkJCT4KKwkJCQk8
L0ZpbGU+CisJCQkJPEZpbGUKIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxodG1sXHBhcnNlclxCYWNr
Z3JvdW5kSFRNTFBhcnNlci5jcHAiCiAJCQkJCT4KIAkJCQk8L0ZpbGU+CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oJKHJldmlzaW9uIDE0
MTMzNykKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oJ
KHdvcmtpbmcgY29weSkKQEAgLTQ4NjUsNiArNDg2NSw3IEBACiAgICAgPENsQ29tcGlsZSBJbmNs
dWRlPSIuLlxodG1sXFZhbGlkYXRpb25NZXNzYWdlLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9Ii4uXGh0bWxcVmFsaWRpdHlTdGF0ZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNs
dWRlPSIuLlxodG1sXFdlZWtJbnB1dFR5cGUuY3BwIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iLi5caHRtbFxwYXJzZXJcQmFja2dyb3VuZEhUTUxJbnB1dFN0cmVhbS5jcHAiIC8+CiAgICAg
PENsQ29tcGlsZSBJbmNsdWRlPSIuLlxodG1sXHBhcnNlclxCYWNrZ3JvdW5kSFRNTFBhcnNlci5j
cHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxodG1sXHBhcnNlclxDb21wYWN0SFRN
TFRva2VuLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGh0bWxccGFyc2VyXENT
U1ByZWxvYWRTY2FubmVyLmNwcCIgLz4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4
cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMJKHJldmlzaW9uIDE0MTMz
NykKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmls
dGVycwkod29ya2luZyBjb3B5KQpAQCAtNTYyNSw2ICs1NjI1LDkgQEAKICAgICA8Q2xDb21waWxl
IEluY2x1ZGU9Ii4uXGh0bWxcV2Vla0lucHV0VHlwZS5jcHAiPgogICAgICAgPEZpbHRlcj5odG1s
PC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxo
dG1sXHBhcnNlclxCYWNrZ3JvdW5kSFRNTElucHV0U3RyZWFtLmNwcCI+CisgICAgICA8RmlsdGVy
Pmh0bWxccGFyc2VyPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSIuLlxodG1sXHBhcnNlclxCYWNrZ3JvdW5kSFRNTFBhcnNlci5jcHAiPgogICAgICAg
PEZpbHRlcj5odG1sXHBhcnNlcjwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgpJbmRleDogU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2
aXNpb24gMTQxMzM3KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0zNjg5LDIxICszNjg5LDE4IEBACiAJCTk3QjM4
RTI3MTUxQzQyNzEwMDQ2MjJFOSAvKiBET01XaW5kb3dOb3RpZmljYXRpb25zLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5N0IzOEUyNDE1MUM0MjY0MDA0
NjIyRTkgLyogRE9NV2luZG93Tm90aWZpY2F0aW9ucy5oICovOyB9OwogCQk5N0IzOEUyODE1MUM0
MjczMDA0NjIyRTkgLyogRE9NV2luZG93Tm90aWZpY2F0aW9ucy5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5N0IzOEUyMzE1MUM0MjY0MDA0NjIyRTkg
LyogRE9NV2luZG93Tm90aWZpY2F0aW9ucy5jcHAgKi87IH07CiAJCTk3QjhGRkQxMTZBRTdGOTYw
MDM4Mzg4RCAvKiBDaGFyYWN0ZXJSZWZlcmVuY2VQYXJzZXJJbmxpbmVzLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5N0I4RkZDRjE2QUU3RjkyMDAzODM4
OEQgLyogQ2hhcmFjdGVyUmVmZXJlbmNlUGFyc2VySW5saW5lcy5oICovOyB9OworCQk5N0JDNjlE
QTE1MDVGMDc2MDAxQjc0QUMgLyogRGF0YWJhc2VCYWNrZW5kLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3QkM2OUQ2MTUwNUYwNzYwMDFCNzRBQyAv
KiBEYXRhYmFzZUJhY2tlbmQuY3BwICovOyB9OworCQk5N0JDNjlEQjE1MDVGMDc2MDAxQjc0QUMg
LyogRGF0YWJhc2VCYWNrZW5kLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5N0JDNjlENzE1MDVGMDc2MDAxQjc0QUMgLyogRGF0YWJhc2VCYWNrZW5kLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTdCQzY5
REMxNTA1RjA3NjAwMUI3NEFDIC8qIENoYW5nZVZlcnNpb25XcmFwcGVyLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3QkM2OUQ4MTUwNUYwNzYwMDFC
NzRBQyAvKiBDaGFuZ2VWZXJzaW9uV3JhcHBlci5jcHAgKi87IH07CiAJCTk3QkM2OUREMTUwNUYw
NzYwMDFCNzRBQyAvKiBDaGFuZ2VWZXJzaW9uV3JhcHBlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTdCQzY5RDkxNTA1RjA3NjAwMUI3NEFDIC8qIENo
YW5nZVZlcnNpb25XcmFwcGVyLmggKi87IH07CiAJCTk3QkM2QTIwMTUwNUYwODEwMDFCNzRBQyAv
KiBEYXRhYmFzZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5N0JDNjlERTE1MDVGMDgxMDAxQjc0QUMgLyogRGF0YWJhc2UuY3BwICovOyB9OwogCQk5
N0JDNkEyMTE1MDVGMDgxMDAxQjc0QUMgLyogRGF0YWJhc2UuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3QkM2OURGMTUwNUYwODEwMDFCNzRBQyAvKiBE
YXRhYmFzZS5oICovOyB9OwogCQk5N0JDNkEyMzE1MDVGMDgxMDAxQjc0QUMgLyogRGF0YWJhc2VB
dXRob3JpemVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDk3QkM2OUUxMTUwNUYwODEwMDFCNzRBQyAvKiBEYXRhYmFzZUF1dGhvcml6ZXIuY3BwICov
OyB9OwogCQk5N0JDNkEyNDE1MDVGMDgxMDAxQjc0QUMgLyogRGF0YWJhc2VBdXRob3JpemVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5N0JDNjlFMjE1
MDVGMDgxMDAxQjc0QUMgLyogRGF0YWJhc2VBdXRob3JpemVyLmggKi87IH07Ci0JCTk3QkM2OURB
MTUwNUYwNzYwMDFCNzRBQyAvKiBEYXRhYmFzZUJhY2tlbmQuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTdCQzY5RDYxNTA1RjA3NjAwMUI3NEFDIC8q
IERhdGFiYXNlQmFja2VuZC5jcHAgKi87IH07Ci0JCTk3QkM2OURCMTUwNUYwNzYwMDFCNzRBQyAv
KiBEYXRhYmFzZUJhY2tlbmQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDk3QkM2OUQ3MTUwNUYwNzYwMDFCNzRBQyAvKiBEYXRhYmFzZUJhY2tlbmQuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5N0JDNkEy
NTE1MDVGMDgxMDAxQjc0QUMgLyogRGF0YWJhc2VDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTdCQzY5RTMxNTA1RjA4MTAwMUI3NEFDIC8q
IERhdGFiYXNlQ2FsbGJhY2suaCAqLzsgfTsKIAkJOTdCQzZBMjcxNTA1RjA4MTAwMUI3NEFDIC8q
IERhdGFiYXNlQ29udGV4dC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5N0JDNjlFNTE1MDVGMDgxMDAxQjc0QUMgLyogRGF0YWJhc2VDb250ZXh0LmNw
cCAqLzsgfTsKIAkJOTdCQzZBMjgxNTA1RjA4MTAwMUI3NEFDIC8qIERhdGFiYXNlQ29udGV4dC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTdCQzY5RTYx
NTA1RjA4MTAwMUI3NEFDIC8qIERhdGFiYXNlQ29udGV4dC5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTk3QkM2QTI5MTUwNUYwODEwMDFCNzRBQyAv
KiBEYXRhYmFzZURldGFpbHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDk3QkM2OUU3MTUwNUYwODEwMDFCNzRBQyAvKiBEYXRhYmFzZURldGFpbHMuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQlGRTA5REI0
OTE2OUUyRDZFMDA2MjI1NTcgLyogRGF0YWJhc2VFcnJvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUwOURCNDYxNjlFMkQ2RTAwNjIyNTU3IC8qIERh
dGFiYXNlRXJyb3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwotCQlGRUIyNkQyODE2N0E4RjJBMDBGREQyNkIgLyogRGF0YWJhc2VTZXJ2ZXIuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkVCMjZEMjcxNjdB
OEYyQTAwRkREMjZCIC8qIERhdGFiYXNlU2VydmVyLmNwcCAqLzsgfTsKLQkJRkVBRjY2NTQxNjc5
NzAzMjAwNjJEMEM1IC8qIERhdGFiYXNlU2VydmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRUFGNjY1MzE2Nzk3MDA3MDA2MkQwQzUgLyogRGF0YWJh
c2VTZXJ2ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk5N0JDNkEyQTE1MDVGMDgxMDAxQjc0QUMgLyogRGF0YWJhc2VTeW5jLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3QkM2OUU4MTUwNUYwODEw
MDFCNzRBQyAvKiBEYXRhYmFzZVN5bmMuY3BwICovOyB9OwogCQk5N0JDNkEyQjE1MDVGMDgxMDAx
Qjc0QUMgLyogRGF0YWJhc2VTeW5jLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5N0JDNjlFOTE1MDVGMDgxMDAxQjc0QUMgLyogRGF0YWJhc2VTeW5jLmgg
Ki87IH07CiAJCTk3QkM2QTJEMTUwNUYwODEwMDFCNzRBQyAvKiBEYXRhYmFzZVRhc2suY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTdCQzY5RUIxNTA1
RjA4MTAwMUI3NEFDIC8qIERhdGFiYXNlVGFzay5jcHAgKi87IH07CkBAIC0zNzU2LDYgKzM3NTMs
OCBAQAogCQk5N0M3NDAxNTE2MDNGN0ExMDAxMUZGMkQgLyogRmVhdHVyZU9ic2VydmVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5N0M3NDAxMzE2MDNG
N0ExMDAxMUZGMkQgLyogRmVhdHVyZU9ic2VydmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTdEMkFEMDMxNEI4MjNBNjAwOTNERjMyIC8qIERP
TVdpbmRvd1Byb3BlcnR5LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDk3RDJBRDAxMTRCODIzQTYwMDkzREYzMiAvKiBET01XaW5kb3dQcm9wZXJ0eS5j
cHAgKi87IH07CiAJCTk3RDJBRDA0MTRCODIzQTYwMDkzREYzMiAvKiBET01XaW5kb3dQcm9wZXJ0
eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTdEMkFE
MDIxNEI4MjNBNjAwOTNERjMyIC8qIERPTVdpbmRvd1Byb3BlcnR5LmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJOTdEQzY5RUMxNkI5RjUyOTAwOENG
RDZGIC8qIEJhY2tncm91bmRIVE1MSW5wdXRTdHJlYW0uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTdEQzY5RTkxNkI5RjUwRTAwOENGRDZGIC8qIEJh
Y2tncm91bmRIVE1MSW5wdXRTdHJlYW0uY3BwICovOyB9OworCQk5N0RDNjlFRDE2QjlGNTJDMDA4
Q0ZENkYgLyogQmFja2dyb3VuZEhUTUxJbnB1dFN0cmVhbS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTdEQzY5RUExNkI5RjUwRTAwOENGRDZGIC8qIEJh
Y2tncm91bmRIVE1MSW5wdXRTdHJlYW0uaCAqLzsgfTsKIAkJOTdEQ0UyMDExMDgwN0M3NTAwNTdE
Mzk0IC8qIEhpc3RvcnlDb250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDk3RENFMUZGMTA4MDdDNzUwMDU3RDM5NCAvKiBIaXN0b3J5Q29u
dHJvbGxlci5jcHAgKi87IH07CiAJCTk3RENFMjAyMTA4MDdDNzUwMDU3RDM5NCAvKiBIaXN0b3J5
Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOTdEQ0UyMDAxMDgwN0M3NTAwNTdEMzk0IC8qIEhpc3RvcnlDb250cm9sbGVyLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTdFNDAyOEYxM0E2
OTZFRDAwOTEzRDY3IC8qIEljb25Db250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3RTQwMjhEMTNBNjk2RUQwMDkxM0Q2NyAvKiBJY29u
Q29udHJvbGxlci5jcHAgKi87IH07CkBAIC02NzI5LDYgKzY3MjgsNyBAQAogCQlGREY2QkFGOTEz
NEE0Qzk4MDA4MjI5MjAgLyogSlNPZmZsaW5lQXVkaW9Db21wbGV0aW9uRXZlbnQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZERjZCQUY3MTM0QTRDOTgw
MDgyMjkyMCAvKiBKU09mZmxpbmVBdWRpb0NvbXBsZXRpb25FdmVudC5oICovOyB9OwogCQlGREY3
RTlDMzEzQUMyMURCMDBBNTFFQUMgLyogSlNBdWRpb0J1ZmZlckNhbGxiYWNrLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZERjdFOUMxMTNBQzIxREIw
MEE1MUVBQyAvKiBKU0F1ZGlvQnVmZmVyQ2FsbGJhY2suY3BwICovOyB9OwogCQlGREY3RTlDNDEz
QUMyMURCMDBBNTFFQUMgLyogSlNBdWRpb0J1ZmZlckNhbGxiYWNrLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGREY3RTlDMjEzQUMyMURCMDBBNTFFQUMg
LyogSlNBdWRpb0J1ZmZlckNhbGxiYWNrLmggKi87IH07CisJCUZFMDlEQjQ5MTY5RTJENkUwMDYy
MjU1NyAvKiBEYXRhYmFzZUVycm9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBGRTA5REI0NjE2OUUyRDZFMDA2MjI1NTcgLyogRGF0YWJhc2VFcnJvci5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUZFMTE1
RkFCMTY3OTg4Q0QwMDI0OTEzNCAvKiBBYnN0cmFjdERhdGFiYXNlU2VydmVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTExNUZBOTE2Nzk4OENEMDAy
NDkxMzQgLyogQWJzdHJhY3REYXRhYmFzZVNlcnZlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUZFMzM3MUEyMTY3QzExRDQwMEVEQjc1MiAvKiBE
YXRhYmFzZUJhc2ljVHlwZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEZFMzM3MUEwMTY3QzExRDQwMEVEQjc1MiAvKiBEYXRhYmFzZUJhc2ljVHlwZXMu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGRTQ1
NkYxODE2NzdENzRFMDA1RURERjkgLyogRGF0YWJhc2VNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFNDU2RjE2MTY3N0Q3NEUwMDVFRERG
OSAvKiBEYXRhYmFzZU1hbmFnZXIuY3BwICovOyB9OwpAQCAtNjc0NCw2ICs2NzQ0LDggQEAKIAkJ
RkU4MERBNjYwRTlDNDcwMzAwMEQ2Rjc1IC8qIEpTR2VvcG9zaXRpb24uaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFODBEQTYyMEU5QzQ3MDMwMDBENkY3
NSAvKiBKU0dlb3Bvc2l0aW9uLmggKi87IH07CiAJCUZFODBEQTcxMEU5QzQ3MkYwMDBENkY3NSAv
KiBKU1Bvc2l0aW9uRXJyb3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRkU4MERBNkQwRTlDNDcyRjAwMEQ2Rjc1IC8qIEpTUG9zaXRpb25FcnJvci5j
cHAgKi87IH07CiAJCUZFODBEQTcyMEU5QzQ3MkYwMDBENkY3NSAvKiBKU1Bvc2l0aW9uRXJyb3Iu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFODBEQTZF
MEU5QzQ3MkYwMDBENkY3NSAvKiBKU1Bvc2l0aW9uRXJyb3IuaCAqLzsgfTsKKwkJRkVBRjY2NTQx
Njc5NzAzMjAwNjJEMEM1IC8qIERhdGFiYXNlU2VydmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRUFGNjY1MzE2Nzk3MDA3MDA2MkQwQzUgLyogRGF0
YWJhc2VTZXJ2ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQlGRUIyNkQyODE2N0E4RjJBMDBGREQyNkIgLyogRGF0YWJhc2VTZXJ2ZXIuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkVCMjZEMjcxNjdB
OEYyQTAwRkREMjZCIC8qIERhdGFiYXNlU2VydmVyLmNwcCAqLzsgfTsKIAkJRkVERUY4NDExNjc5
NzEwODAwMEU0NDRBIC8qIERhdGFiYXNlU3RyYXRlZ3kuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkVERUY4M0YxNjc5NzEwODAwMEU0NDRBIC8qIERh
dGFiYXNlU3RyYXRlZ3kuY3BwICovOyB9OwogCQlGRURFRjg0MjE2Nzk3MTA4MDAwRTQ0NEEgLyog
RGF0YWJhc2VTdHJhdGVneS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRkVERUY4NDAxNjc5NzEwODAwMEU0NDRBIC8qIERhdGFiYXNlU3RyYXRlZ3kuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGRjk0NUVD
QjE2MUY3RjM2MDA5NzFCQzggLyogUHNldWRvRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRjk0NUVDOTE2MUY3RjM2MDA5NzFCQzggLyog
UHNldWRvRWxlbWVudC5jcHAgKi87IH07CkBAIC0xMTA5MCw2ICsxMTA5Miw4IEBACiAJCTk3QjM4
RTI0MTUxQzQyNjQwMDQ2MjJFOSAvKiBET01XaW5kb3dOb3RpZmljYXRpb25zLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERPTVdpbmRvd05vdGlmaWNhdGlvbnMuaDsgcGF0aCA9
IE1vZHVsZXMvbm90aWZpY2F0aW9ucy9ET01XaW5kb3dOb3RpZmljYXRpb25zLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk3QjM4RTI1MTUxQzQyNjQwMDQ2MjJFOSAvKiBET01XaW5k
b3dOb3RpZmljYXRpb25zLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBET01XaW5kb3dOb3Rp
ZmljYXRpb25zLmlkbDsgcGF0aCA9IE1vZHVsZXMvbm90aWZpY2F0aW9ucy9ET01XaW5kb3dOb3Rp
ZmljYXRpb25zLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTdCOEZGQ0YxNkFF
N0Y5MjAwMzgzODhEIC8qIENoYXJhY3RlclJlZmVyZW5jZVBhcnNlcklubGluZXMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2hhcmFjdGVyUmVmZXJlbmNlUGFyc2VySW5saW5l
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5N0JDNjlENjE1MDVGMDc2MDAxQjc0
QUMgLyogRGF0YWJhc2VCYWNrZW5kLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
bmFtZSA9IERhdGFiYXNlQmFja2VuZC5jcHA7IHBhdGggPSBNb2R1bGVzL3dlYmRhdGFiYXNlL0Rh
dGFiYXNlQmFja2VuZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk3QkM2OUQ3
MTUwNUYwNzYwMDFCNzRBQyAvKiBEYXRhYmFzZUJhY2tlbmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gRGF0YWJhc2VCYWNrZW5kLmg7IHBhdGggPSBNb2R1bGVzL3dlYmRhdGFi
YXNlL0RhdGFiYXNlQmFja2VuZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5N0JD
NjlEODE1MDVGMDc2MDAxQjc0QUMgLyogQ2hhbmdlVmVyc2lvbldyYXBwZXIuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQ2hhbmdlVmVyc2lvbldyYXBwZXIuY3BwOyBw
YXRoID0gTW9kdWxlcy93ZWJkYXRhYmFzZS9DaGFuZ2VWZXJzaW9uV3JhcHBlci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk3QkM2OUQ5MTUwNUYwNzYwMDFCNzRBQyAvKiBDaGFu
Z2VWZXJzaW9uV3JhcHBlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBDaGFu
Z2VWZXJzaW9uV3JhcHBlci5oOyBwYXRoID0gTW9kdWxlcy93ZWJkYXRhYmFzZS9DaGFuZ2VWZXJz
aW9uV3JhcHBlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5N0JDNjlERTE1MDVG
MDgxMDAxQjc0QUMgLyogRGF0YWJhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBuYW1lID0gRGF0YWJhc2UuY3BwOyBwYXRoID0gTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFz
ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMTA5NywxNiArMTExMDEsMTEg
QEAKIAkJOTdCQzY5RTAxNTA1RjA4MTAwMUI3NEFDIC8qIERhdGFiYXNlLmlkbCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQ7IG5hbWUgPSBEYXRhYmFzZS5pZGw7IHBhdGggPSBNb2R1bGVzL3dlYmRhdGFiYXNlL0Rh
dGFiYXNlLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTdCQzY5RTExNTA1RjA4
MTAwMUI3NEFDIC8qIERhdGFiYXNlQXV0aG9yaXplci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IG5hbWUgPSBEYXRhYmFzZUF1dGhvcml6ZXIuY3BwOyBwYXRoID0gTW9kdWxlcy93
ZWJkYXRhYmFzZS9EYXRhYmFzZUF1dGhvcml6ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk5N0JDNjlFMjE1MDVGMDgxMDAxQjc0QUMgLyogRGF0YWJhc2VBdXRob3JpemVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERhdGFiYXNlQXV0aG9yaXplci5oOyBw
YXRoID0gTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUF1dGhvcml6ZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJOTdCQzY5RDYxNTA1RjA3NjAwMUI3NEFDIC8qIERhdGFiYXNl
QmFja2VuZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBEYXRhYmFz
ZUJhY2tlbmQuY3BwOyBwYXRoID0gTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhY2tlbmQu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk5N0JDNjlENzE1MDVGMDc2MDAxQjc0
QUMgLyogRGF0YWJhc2VCYWNrZW5kLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9
IERhdGFiYXNlQmFja2VuZC5oOyBwYXRoID0gTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJh
Y2tlbmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTdCQzY5RTMxNTA1RjA4MTAw
MUI3NEFDIC8qIERhdGFiYXNlQ2FsbGJhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gRGF0YWJhc2VDYWxsYmFjay5oOyBwYXRoID0gTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRh
YmFzZUNhbGxiYWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk3QkM2OUU0MTUw
NUYwODEwMDFCNzRBQyAvKiBEYXRhYmFzZUNhbGxiYWNrLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5h
bWUgPSBEYXRhYmFzZUNhbGxiYWNrLmlkbDsgcGF0aCA9IE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0
YWJhc2VDYWxsYmFjay5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk3QkM2OUU1
MTUwNUYwODEwMDFCNzRBQyAvKiBEYXRhYmFzZUNvbnRleHQuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBuYW1lID0gRGF0YWJhc2VDb250ZXh0LmNwcDsgcGF0aCA9IE1vZHVsZXMv
d2ViZGF0YWJhc2UvRGF0YWJhc2VDb250ZXh0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJOTdCQzY5RTYxNTA1RjA4MTAwMUI3NEFDIC8qIERhdGFiYXNlQ29udGV4dC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBEYXRhYmFzZUNvbnRleHQuaDsgcGF0aCA9IE1v
ZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VDb250ZXh0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTk3QkM2OUU3MTUwNUYwODEwMDFCNzRBQyAvKiBEYXRhYmFzZURldGFpbHMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRGF0YWJhc2VEZXRhaWxzLmg7IHBhdGgg
PSBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlRGV0YWlscy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQlGRTA5REI0NjE2OUUyRDZFMDA2MjI1NTcgLyogRGF0YWJhc2VFcnJvci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBEYXRhYmFzZUVycm9yLmg7IHBhdGgg
PSBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlRXJyb3IuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJRkVBRjY2NTMxNjc5NzAwNzAwNjJEMEM1IC8qIERhdGFiYXNlU2VydmVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERhdGFiYXNlU2VydmVyLmg7IHBhdGgg
PSBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlU2VydmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCUZFQjI2RDI3MTY3QThGMkEwMEZERDI2QiAvKiBEYXRhYmFzZVNlcnZlci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBEYXRhYmFzZVNlcnZlci5j
cHA7IHBhdGggPSBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlU2VydmVyLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTdCQzY5RTgxNTA1RjA4MTAwMUI3NEFDIC8qIERhdGFi
YXNlU3luYy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBEYXRhYmFz
ZVN5bmMuY3BwOyBwYXRoID0gTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVN5bmMuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5N0JDNjlFOTE1MDVGMDgxMDAxQjc0QUMgLyog
RGF0YWJhc2VTeW5jLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERhdGFiYXNl
U3luYy5oOyBwYXRoID0gTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVN5bmMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTdCQzY5RUExNTA1RjA4MTAwMUI3NEFDIC8qIERhdGFi
YXNlU3luYy5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gRGF0YWJhc2VTeW5jLmlkbDsgcGF0
aCA9IE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VTeW5jLmlkbDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTExMTc0LDYgKzExMTczLDggQEAKIAkJOTdDNzQwMTMxNjAzRjdBMTAw
MTFGRjJEIC8qIEZlYXR1cmVPYnNlcnZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBGZWF0dXJlT2JzZXJ2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTdE
MkFEMDExNEI4MjNBNjAwOTNERjMyIC8qIERPTVdpbmRvd1Byb3BlcnR5LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERPTVdpbmRvd1Byb3BlcnR5LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTdEMkFEMDIxNEI4MjNBNjAwOTNERjMyIC8qIERPTVdp
bmRvd1Byb3BlcnR5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTVdpbmRv
d1Byb3BlcnR5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk3REM2OUU5MTZCOUY1
MEUwMDhDRkQ2RiAvKiBCYWNrZ3JvdW5kSFRNTElucHV0U3RyZWFtLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEJhY2tncm91bmRIVE1MSW5wdXRTdHJlYW0uY3BwOyBw
YXRoID0gcGFyc2VyL0JhY2tncm91bmRIVE1MSW5wdXRTdHJlYW0uY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk5N0RDNjlFQTE2QjlGNTBFMDA4Q0ZENkYgLyogQmFja2dyb3VuZEhU
TUxJbnB1dFN0cmVhbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBCYWNrZ3Jv
dW5kSFRNTElucHV0U3RyZWFtLmg7IHBhdGggPSBwYXJzZXIvQmFja2dyb3VuZEhUTUxJbnB1dFN0
cmVhbS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5N0RDRTFGRjEwODA3Qzc1MDA1
N0QzOTQgLyogSGlzdG9yeUNvbnRyb2xsZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSGlzdG9yeUNvbnRyb2xsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk5N0RDRTIwMDEwODA3Qzc1MDA1N0QzOTQgLyogSGlzdG9yeUNvbnRyb2xsZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSGlzdG9yeUNvbnRyb2xsZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTdFNDAyOEQxM0E2OTZFRDAwOTEzRDY3IC8qIElj
b25Db250cm9sbGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IElj
b25Db250cm9sbGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE0Mzk2LDYg
KzE0Mzk3LDcgQEAKIAkJRkRGNkJBRjcxMzRBNEM5ODAwODIyOTIwIC8qIEpTT2ZmbGluZUF1ZGlv
Q29tcGxldGlvbkV2ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTT2Zm
bGluZUF1ZGlvQ29tcGxldGlvbkV2ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUZERjdFOUMxMTNBQzIxREIwMEE1MUVBQyAvKiBKU0F1ZGlvQnVmZmVyQ2FsbGJhY2suY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNBdWRpb0J1ZmZlckNhbGxiYWNr
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkRGN0U5QzIxM0FDMjFEQjAwQTUx
RUFDIC8qIEpTQXVkaW9CdWZmZXJDYWxsYmFjay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBKU0F1ZGlvQnVmZmVyQ2FsbGJhY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJRkUwOURCNDYxNjlFMkQ2RTAwNjIyNTU3IC8qIERhdGFiYXNlRXJyb3IuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRGF0YWJhc2VFcnJvci5oOyBwYXRoID0gTW9kdWxl
cy93ZWJkYXRhYmFzZS9EYXRhYmFzZUVycm9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUZFMTE1RkE5MTY3OTg4Q0QwMDI0OTEzNCAvKiBBYnN0cmFjdERhdGFiYXNlU2VydmVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEFic3RyYWN0RGF0YWJhc2VTZXJ2ZXIu
aDsgcGF0aCA9IE1vZHVsZXMvd2ViZGF0YWJhc2UvQWJzdHJhY3REYXRhYmFzZVNlcnZlci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTMzNzFBMDE2N0MxMUQ0MDBFREI3NTIgLyog
RGF0YWJhc2VCYXNpY1R5cGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERh
dGFiYXNlQmFzaWNUeXBlcy5oOyBwYXRoID0gTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJh
c2ljVHlwZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkU0NTZGMTYxNjc3RDc0
RTAwNUVEREY5IC8qIERhdGFiYXNlTWFuYWdlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IG5hbWUgPSBEYXRhYmFzZU1hbmFnZXIuY3BwOyBwYXRoID0gTW9kdWxlcy93ZWJkYXRh
YmFzZS9EYXRhYmFzZU1hbmFnZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MTQ0MTIsNiArMTQ0MTQsOCBAQAogCQlGRTgwREE2MjBFOUM0NzAzMDAwRDZGNzUgLyogSlNHZW9w
b3NpdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0dlb3Bvc2l0aW9u
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFODBEQTZEMEU5QzQ3MkYwMDBENkY3
NSAvKiBKU1Bvc2l0aW9uRXJyb3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSlNQb3NpdGlvbkVycm9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RkU4MERBNkUwRTlDNDcyRjAwMEQ2Rjc1IC8qIEpTUG9zaXRpb25FcnJvci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBKU1Bvc2l0aW9uRXJyb3IuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJRkVBRjY2NTMxNjc5NzAwNzAwNjJEMEM1IC8qIERhdGFiYXNlU2VydmVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERhdGFiYXNlU2VydmVyLmg7IHBh
dGggPSBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlU2VydmVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUZFQjI2RDI3MTY3QThGMkEwMEZERDI2QiAvKiBEYXRhYmFzZVNlcnZl
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBEYXRhYmFzZVNlcnZl
ci5jcHA7IHBhdGggPSBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlU2VydmVyLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkVERUY4M0YxNjc5NzEwODAwMEU0NDRBIC8qIERh
dGFiYXNlU3RyYXRlZ3kuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
RGF0YWJhc2VTdHJhdGVneS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFREVG
ODQwMTY3OTcxMDgwMDBFNDQ0QSAvKiBEYXRhYmFzZVN0cmF0ZWd5LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IERhdGFiYXNlU3RyYXRlZ3kuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRkY5NDVFQzkxNjFGN0YzNjAwOTcxQkM4IC8qIFBzZXVkb0VsZW1lbnQuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUHNldWRvRWxlbWVudC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xODU3Niw2ICsxODU4MCw4IEBACiAJCTk3
QzFGNTUxMTIyODU1ODgwMEVERTYxNiAvKiBwYXJzZXIgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91
cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTk3REM2OUU5MTZCOUY1MEUwMDhDRkQ2RiAvKiBCYWNr
Z3JvdW5kSFRNTElucHV0U3RyZWFtLmNwcCAqLywKKwkJCQk5N0RDNjlFQTE2QjlGNTBFMDA4Q0ZE
NkYgLyogQmFja2dyb3VuZEhUTUxJbnB1dFN0cmVhbS5oICovLAogCQkJCTk3OURDMDMxMTZBNzk5
MjEwMDgwNzc5NCAvKiBCYWNrZ3JvdW5kSFRNTFBhcnNlci5jcHAgKi8sCiAJCQkJOTc5REMwMzIx
NkE3OTkyMTAwODA3Nzk0IC8qIEJhY2tncm91bmRIVE1MUGFyc2VyLmggKi8sCiAJCQkJOTc5REMw
MzMxNkE3OTkyMTAwODA3Nzk0IC8qIENvbXBhY3RIVE1MVG9rZW4uY3BwICovLApAQCAtMjYzMTUs
NiArMjYzMjEsNyBAQAogCQkJCUZCOTEzOTJBMTZBRTRGQzAwMDFGRTY4MiAvKiBKU0RPTVBhdGgu
aCBpbiBIZWFkZXJzICovLAogCQkJCTJFMDc3NTM0MTZCMUJENEMwMDREOTkzNiAvKiBNaWNyb0Rh
dGFBdHRyaWJ1dGVUb2tlbkxpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTI5MTlBMUU5MTZCMzM3
NjYwMDc4NzIxMyAvKiBDb250ZW50RmlsdGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk5N0RDNjlF
RDE2QjlGNTJDMDA4Q0ZENkYgLyogQmFja2dyb3VuZEhUTUxJbnB1dFN0cmVhbS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7
CiAJCX07CkBAIC0yOTQ2OSw2ICsyOTQ3Niw3IEBACiAJCQkJRkI5MTM5MkIxNkFFNEZDMDAwMUZF
NjgyIC8qIEpTRE9NUGF0aC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRTA3NzUzMTE2QjFCRDEz
MDA0RDk5MzYgLyogTWljcm9EYXRhQXR0cmlidXRlVG9rZW5MaXN0LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTI5MTlBMUVCMTZCMzM3ODkwMDc4NzIxMyAvKiBDb250ZW50RmlsdGVyTWFjLm1tIGlu
IFNvdXJjZXMgKi8sCisJCQkJOTdEQzY5RUMxNkI5RjUyOTAwOENGRDZGIC8qIEJhY2tncm91bmRI
VE1MSW5wdXRTdHJlYW0uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRl
cGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9o
dG1sL3BhcnNlci9CYWNrZ3JvdW5kSFRNTElucHV0U3RyZWFtLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9CYWNrZ3JvdW5kSFRNTElucHV0U3RyZWFtLmNwcAko
cmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0JhY2tncm91bmRIVE1M
SW5wdXRTdHJlYW0uY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDcyIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEzIEdvb2dsZSwgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgR09PR0xFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBHT09HTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKworI2lmIEVOQUJMRShUSFJFQURFRF9IVE1MX1BBUlNFUikKKworI2luY2x1ZGUgIkJhY2tn
cm91bmRIVE1MSW5wdXRTdHJlYW0uaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitCYWNrZ3Jv
dW5kSFRNTElucHV0U3RyZWFtOjpCYWNrZ3JvdW5kSFRNTElucHV0U3RyZWFtKCkKK3sKK30KKwor
dm9pZCBCYWNrZ3JvdW5kSFRNTElucHV0U3RyZWFtOjphcHBlbmQoY29uc3QgU3RyaW5nJiBpbnB1
dCkKK3sKKyAgICBtX2N1cnJlbnQuYXBwZW5kKFNlZ21lbnRlZFN0cmluZyhpbnB1dCkpOworICAg
IG1fc2VnbWVudHMuYXBwZW5kKGlucHV0KTsKK30KKwordm9pZCBCYWNrZ3JvdW5kSFRNTElucHV0
U3RyZWFtOjpjbG9zZSgpCit7CisgICAgbV9jdXJyZW50LmNsb3NlKCk7Cit9CisKK0hUTUxJbnB1
dENoZWNrcG9pbnQgQmFja2dyb3VuZEhUTUxJbnB1dFN0cmVhbTo6Y3JlYXRlQ2hlY2twb2ludCgp
Cit7CisgICAgSFRNTElucHV0Q2hlY2twb2ludCBjaGVja3BvaW50ID0gbV9jaGVja3BvaW50cy5z
aXplKCk7CisgICAgbV9jaGVja3BvaW50cy5hcHBlbmQoQ2hlY2twb2ludChtX2N1cnJlbnQsIG1f
c2VnbWVudHMuc2l6ZSgpKSk7CisgICAgcmV0dXJuIGNoZWNrcG9pbnQ7Cit9CisKK3ZvaWQgQmFj
a2dyb3VuZEhUTUxJbnB1dFN0cmVhbTo6cmV3aW5kVG8oSFRNTElucHV0Q2hlY2twb2ludCBjaGVj
a3BvaW50SW5kZXgpCit7CisgICAgY29uc3QgQ2hlY2twb2ludCYgY2hlY2twb2ludCA9IG1fY2hl
Y2twb2ludHNbY2hlY2twb2ludEluZGV4XTsKKworICAgIGJvb2wgaXNDbG9zZWQgPSBtX2N1cnJl
bnQuaXNDbG9zZWQoKTsKKworICAgIG1fY3VycmVudCA9IGNoZWNrcG9pbnQuaW5wdXQ7CisgICAg
Zm9yIChzaXplX3QgaSA9IGNoZWNrcG9pbnQubnVtYmVyT2ZTZWdtZW50c0FscmVhZHlBcHBlbmRl
ZDsgaSA8IG1fc2VnbWVudHMuc2l6ZSgpOyArK2kpCisgICAgICAgIG1fY3VycmVudC5hcHBlbmQo
U2VnbWVudGVkU3RyaW5nKG1fc2VnbWVudHNbaV0pKTsKKworICAgIGlmIChpc0Nsb3NlZCAmJiAh
bV9jdXJyZW50LmlzQ2xvc2VkKCkpCisgICAgICAgIG1fY3VycmVudC5jbG9zZSgpOworfQorCit9
CisKKyNlbmRpZiAvLyBFTkFCTEUoVEhSRUFERURfSFRNTF9QQVJTRVIpCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9odG1sL3BhcnNlci9CYWNrZ3JvdW5kSFRNTElucHV0U3RyZWFtLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQmFja2dyb3VuZEhUTUxJbnB1dFN0cmVh
bS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQmFja2dyb3Vu
ZEhUTUxJbnB1dFN0cmVhbS5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY5IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSwgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgR09PR0xFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBHT09HTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIEJhY2tn
cm91bmRIVE1MSW5wdXRTdHJlYW1faAorI2RlZmluZSBCYWNrZ3JvdW5kSFRNTElucHV0U3RyZWFt
X2gKKworI2lmIEVOQUJMRShUSFJFQURFRF9IVE1MX1BBUlNFUikKKworI2luY2x1ZGUgIlNlZ21l
bnRlZFN0cmluZy5oIgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit0eXBlZGVmIHNpemVfdCBI
VE1MSW5wdXRDaGVja3BvaW50OworCitjbGFzcyBCYWNrZ3JvdW5kSFRNTElucHV0U3RyZWFtIHsK
KyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShCYWNrZ3JvdW5kSFRNTElucHV0U3RyZWFtKTsKK3B1
YmxpYzoKKyAgICBCYWNrZ3JvdW5kSFRNTElucHV0U3RyZWFtKCk7CisKKyAgICB2b2lkIGFwcGVu
ZChjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIGNsb3NlKCk7CisKKyAgICBTZWdtZW50ZWRTdHJp
bmcmIGN1cnJlbnQoKSB7IHJldHVybiBtX2N1cnJlbnQ7IH0KKworICAgIEhUTUxJbnB1dENoZWNr
cG9pbnQgY3JlYXRlQ2hlY2twb2ludCgpOworICAgIHZvaWQgcmV3aW5kVG8oSFRNTElucHV0Q2hl
Y2twb2ludCk7CisKK3ByaXZhdGU6CisgICAgc3RydWN0IENoZWNrcG9pbnQgeworICAgICAgICBD
aGVja3BvaW50KGNvbnN0IFNlZ21lbnRlZFN0cmluZyYgaSwgc2l6ZV90IG4pIDogaW5wdXQoaSks
IG51bWJlck9mU2VnbWVudHNBbHJlYWR5QXBwZW5kZWQobikgeyB9CisKKyAgICAgICAgU2VnbWVu
dGVkU3RyaW5nIGlucHV0OworICAgICAgICBzaXplX3QgbnVtYmVyT2ZTZWdtZW50c0FscmVhZHlB
cHBlbmRlZDsKKyAgICB9OworCisgICAgU2VnbWVudGVkU3RyaW5nIG1fY3VycmVudDsKKyAgICBW
ZWN0b3I8U3RyaW5nPiBtX3NlZ21lbnRzOworICAgIFZlY3RvcjxDaGVja3BvaW50PiBtX2NoZWNr
cG9pbnRzOworfTsKKworfQorCisjZW5kaWYgLy8gRU5BQkxFKFRIUkVBREVEX0hUTUxfUEFSU0VS
KQorCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0JhY2tncm91bmRI
VE1MUGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9C
YWNrZ3JvdW5kSFRNTFBhcnNlci5jcHAJKHJldmlzaW9uIDE0MTMzNykKKysrIFNvdXJjZS9XZWJD
b3JlL2h0bWwvcGFyc2VyL0JhY2tncm91bmRIVE1MUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtOTQsNyArOTQsMTYgQEAgQmFja2dyb3VuZEhUTUxQYXJzZXI6OkJhY2tncm91bmRIVE1MUGFy
cwogCiB2b2lkIEJhY2tncm91bmRIVE1MUGFyc2VyOjphcHBlbmQoY29uc3QgU3RyaW5nJiBpbnB1
dCkKIHsKLSAgICBtX2lucHV0LmFwcGVuZChTZWdtZW50ZWRTdHJpbmcoaW5wdXQpKTsKKyAgICBt
X2lucHV0LmFwcGVuZChpbnB1dCk7CisgICAgcHVtcFRva2VuaXplcigpOworfQorCit2b2lkIEJh
Y2tncm91bmRIVE1MUGFyc2VyOjpyZXN1bWVGcm9tKGNvbnN0IFdlYWtQdHI8SFRNTERvY3VtZW50
UGFyc2VyPiYgcGFyc2VyLCBQYXNzT3duUHRyPEhUTUxUb2tlbj4gdG9rZW4sIFBhc3NPd25QdHI8
SFRNTFRva2VuaXplcj4gdG9rZW5pemVyLCBIVE1MSW5wdXRDaGVja3BvaW50IGNoZWNrcG9pbnQp
Cit7CisgICAgbV9wYXJzZXIgPSBwYXJzZXI7CisgICAgbV90b2tlbiA9IHRva2VuOworICAgIG1f
dG9rZW5pemVyID0gdG9rZW5pemVyOworICAgIG1faW5wdXQucmV3aW5kVG8oY2hlY2twb2ludCk7
CiAgICAgcHVtcFRva2VuaXplcigpOwogfQogCkBAIC0xMTAsOCArMTE5LDggQEAgdm9pZCBCYWNr
Z3JvdW5kSFRNTFBhcnNlcjo6bWFya0VuZE9mRmlsZQogICAgIC8vIG9uY2UgSW5wdXRTdHJlYW1Q
cmVwcm9jZXNzb3IgaXMgc3BsaXQgb2ZmIGludG8gaXRzIG93biBoZWFkZXIuCiAgICAgY29uc3Qg
TENoYXIgZW5kT2ZGaWxlTWFya2VyID0gMDsKIAotICAgIEFTU0VSVCghbV9pbnB1dC5pc0Nsb3Nl
ZCgpKTsKLSAgICBtX2lucHV0LmFwcGVuZChTZWdtZW50ZWRTdHJpbmcoU3RyaW5nKCZlbmRPZkZp
bGVNYXJrZXIsIDEpKSk7CisgICAgQVNTRVJUKCFtX2lucHV0LmN1cnJlbnQoKS5pc0Nsb3NlZCgp
KTsKKyAgICBtX2lucHV0LmFwcGVuZChTdHJpbmcoJmVuZE9mRmlsZU1hcmtlciwgMSkpOwogICAg
IG1faW5wdXQuY2xvc2UoKTsKIH0KIApAQCAtMTU0LDggKzE2Myw4IEBAIGJvb2wgQmFja2dyb3Vu
ZEhUTUxQYXJzZXI6OnNpbXVsYXRlVHJlZUIKIAogdm9pZCBCYWNrZ3JvdW5kSFRNTFBhcnNlcjo6
cHVtcFRva2VuaXplcigpCiB7Ci0gICAgd2hpbGUgKG1fdG9rZW5pemVyLT5uZXh0VG9rZW4obV9p
bnB1dCwgKm1fdG9rZW4uZ2V0KCkpKSB7Ci0gICAgICAgIG1fcGVuZGluZ1Rva2Vucy0+YXBwZW5k
KENvbXBhY3RIVE1MVG9rZW4obV90b2tlbi5nZXQoKSwgVGV4dFBvc2l0aW9uKG1faW5wdXQuY3Vy
cmVudExpbmUoKSwgbV9pbnB1dC5jdXJyZW50Q29sdW1uKCkpKSk7CisgICAgd2hpbGUgKG1fdG9r
ZW5pemVyLT5uZXh0VG9rZW4obV9pbnB1dC5jdXJyZW50KCksICptX3Rva2VuLmdldCgpKSkgewor
ICAgICAgICBtX3BlbmRpbmdUb2tlbnMtPmFwcGVuZChDb21wYWN0SFRNTFRva2VuKG1fdG9rZW4u
Z2V0KCksIFRleHRQb3NpdGlvbihtX2lucHV0LmN1cnJlbnQoKS5jdXJyZW50TGluZSgpLCBtX2lu
cHV0LmN1cnJlbnQoKS5jdXJyZW50Q29sdW1uKCkpKSk7CiAgICAgICAgIG1fdG9rZW4tPmNsZWFy
KCk7CiAKICAgICAgICAgaWYgKCFzaW11bGF0ZVRyZWVCdWlsZGVyKG1fcGVuZGluZ1Rva2Vucy0+
bGFzdCgpKSB8fCBtX3BlbmRpbmdUb2tlbnMtPnNpemUoKSA+PSBwZW5kaW5nVG9rZW5MaW1pdCkK
QEAgLTE3NCw3ICsxODMsMTAgQEAgdm9pZCBCYWNrZ3JvdW5kSFRNTFBhcnNlcjo6c2VuZFRva2Vu
c1RvTQogICAgIGNoZWNrVGhhdFRva2Vuc0FyZVNhZmVUb1NlbmRUb0Fub3RoZXJUaHJlYWQobV9w
ZW5kaW5nVG9rZW5zLmdldCgpKTsKICNlbmRpZgogCi0gICAgY2FsbE9uTWFpblRocmVhZChiaW5k
KCZIVE1MRG9jdW1lbnRQYXJzZXI6OmRpZFJlY2VpdmVUb2tlbnNGcm9tQmFja2dyb3VuZFBhcnNl
ciwgbV9wYXJzZXIsIG1fcGVuZGluZ1Rva2Vucy5yZWxlYXNlKCkpKTsKKyAgICBPd25QdHI8SFRN
TERvY3VtZW50UGFyc2VyOjpQYXJzZWRDaHVuaz4gY2h1bmsgPSBhZG9wdFB0cihuZXcgSFRNTERv
Y3VtZW50UGFyc2VyOjpQYXJzZWRDaHVuayk7CisgICAgY2h1bmstPnRva2VucyA9IG1fcGVuZGlu
Z1Rva2Vucy5yZWxlYXNlKCk7CisgICAgY2h1bmstPmNoZWNrcG9pbnQgPSBtX2lucHV0LmNyZWF0
ZUNoZWNrcG9pbnQoKTsKKyAgICBjYWxsT25NYWluVGhyZWFkKGJpbmQoJkhUTUxEb2N1bWVudFBh
cnNlcjo6ZGlkUmVjZWl2ZVBhcnNlZENodW5rRnJvbUJhY2tncm91bmRQYXJzZXIsIG1fcGFyc2Vy
LCBjaHVuay5yZWxlYXNlKCkpKTsKIAogICAgIG1fcGVuZGluZ1Rva2VucyA9IGFkb3B0UHRyKG5l
dyBDb21wYWN0SFRNTFRva2VuU3RyZWFtKTsKIH0KQEAgLTE5Nyw2ICsyMDksMTIgQEAgdm9pZCBC
YWNrZ3JvdW5kSFRNTFBhcnNlcjo6YXBwZW5kUGFydGlhbAogICAgICAgICBwYXJzZXItPmFwcGVu
ZChpbnB1dCk7CiB9CiAKK3ZvaWQgQmFja2dyb3VuZEhUTUxQYXJzZXI6OnJlc3VtZUZyb21QYXJ0
aWFsKFBhcnNlcklkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgV2Vha1B0cjxIVE1MRG9jdW1l
bnRQYXJzZXI+JiBwYXJzZXIsIFBhc3NPd25QdHI8SFRNTFRva2VuPiB0b2tlbiwgUGFzc093blB0
cjxIVE1MVG9rZW5pemVyPiB0b2tlbml6ZXIsIEhUTUxJbnB1dENoZWNrcG9pbnQgY2hlY2twb2lu
dCkKK3sKKyAgICBpZiAoQmFja2dyb3VuZEhUTUxQYXJzZXIqIGJhY2tncm91bmRQYXJzZXIgPSBw
YXJzZXJNYXAoKS5iYWNrZ3JvdW5kUGFyc2VycygpLmdldChpZGVudGlmaWVyKSkKKyAgICAgICAg
YmFja2dyb3VuZFBhcnNlci0+cmVzdW1lRnJvbShwYXJzZXIsIHRva2VuLCB0b2tlbml6ZXIsIGNo
ZWNrcG9pbnQpOworfQorCiB2b2lkIEJhY2tncm91bmRIVE1MUGFyc2VyOjpmaW5pc2hQYXJ0aWFs
KFBhcnNlcklkZW50aWZpZXIgaWRlbnRpZmllcikKIHsKICAgICBpZiAoQmFja2dyb3VuZEhUTUxQ
YXJzZXIqIHBhcnNlciA9IHBhcnNlck1hcCgpLmJhY2tncm91bmRQYXJzZXJzKCkuZ2V0KGlkZW50
aWZpZXIpKQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQmFja2dyb3VuZEhUTUxQ
YXJzZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9CYWNrZ3Jv
dW5kSFRNTFBhcnNlci5oCShyZXZpc2lvbiAxNDEzMzcpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1s
L3BhcnNlci9CYWNrZ3JvdW5kSFRNTFBhcnNlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsy
OCw3IEBACiAKICNpZiBFTkFCTEUoVEhSRUFERURfSFRNTF9QQVJTRVIpCiAKKyNpbmNsdWRlICJC
YWNrZ3JvdW5kSFRNTElucHV0U3RyZWFtLmgiCiAjaW5jbHVkZSAiQ29tcGFjdEhUTUxUb2tlbi5o
IgogI2luY2x1ZGUgIkhUTUxQYXJzZXJPcHRpb25zLmgiCiAjaW5jbHVkZSAiSFRNTFRva2VuLmgi
CkBAIC00Myw2ICs0NCw3IEBAIGNsYXNzIEJhY2tncm91bmRIVE1MUGFyc2VyIHsKICAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB2b2lkIGFwcGVuZChjb25zdCBTdHJp
bmcmKTsKKyAgICB2b2lkIHJlc3VtZUZyb20oY29uc3QgV2Vha1B0cjxIVE1MRG9jdW1lbnRQYXJz
ZXI+JiwgUGFzc093blB0cjxIVE1MVG9rZW4+LCBQYXNzT3duUHRyPEhUTUxUb2tlbml6ZXI+LCBI
VE1MSW5wdXRDaGVja3BvaW50KTsKICAgICB2b2lkIGZpbmlzaCgpOwogCiAgICAgc3RhdGljIFBh
c3NPd25QdHI8QmFja2dyb3VuZEhUTUxQYXJzZXI+IGNyZWF0ZShjb25zdCBIVE1MUGFyc2VyT3B0
aW9ucyYgb3B0aW9ucywgY29uc3QgV2Vha1B0cjxIVE1MRG9jdW1lbnRQYXJzZXI+JiBwYXJzZXIp
CkBAIC01Myw2ICs1NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBjcmVhdGVQYXJ0aWFs
KFBhcnNlcklkZW50aWZpZXIsIGNvbnN0IEhUTUxQYXJzZXJPcHRpb25zJiwgY29uc3QgV2Vha1B0
cjxIVE1MRG9jdW1lbnRQYXJzZXI+Jik7CiAgICAgc3RhdGljIHZvaWQgc3RvcFBhcnRpYWwoUGFy
c2VySWRlbnRpZmllcik7CiAgICAgc3RhdGljIHZvaWQgYXBwZW5kUGFydGlhbChQYXJzZXJJZGVu
dGlmaWVyLCBjb25zdCBTdHJpbmcmIGlucHV0KTsKKyAgICBzdGF0aWMgdm9pZCByZXN1bWVGcm9t
UGFydGlhbChQYXJzZXJJZGVudGlmaWVyLCBjb25zdCBXZWFrUHRyPEhUTUxEb2N1bWVudFBhcnNl
cj4mLCBQYXNzT3duUHRyPEhUTUxUb2tlbj4sIFBhc3NPd25QdHI8SFRNTFRva2VuaXplcj4sIEhU
TUxJbnB1dENoZWNrcG9pbnQpOwogICAgIHN0YXRpYyB2b2lkIGZpbmlzaFBhcnRpYWwoUGFyc2Vy
SWRlbnRpZmllcik7CiAKIHByaXZhdGU6CkBAIC02NSw3ICs2OCw3IEBAIHByaXZhdGU6CiAgICAg
dm9pZCBzZW5kVG9rZW5zVG9NYWluVGhyZWFkKCk7CiAKICAgICBib29sIG1faW5Gb3JlaWduQ29u
dGVudDsgLy8gRklYTUU6IFdlIG5lZWQgYSBzdGFjayBvZiBmb3JlaWduIGNvbnRlbnQgbWFya2Vy
cy4KLSAgICBTZWdtZW50ZWRTdHJpbmcgbV9pbnB1dDsKKyAgICBCYWNrZ3JvdW5kSFRNTElucHV0
U3RyZWFtIG1faW5wdXQ7CiAgICAgT3duUHRyPEhUTUxUb2tlbj4gbV90b2tlbjsKICAgICBPd25Q
dHI8SFRNTFRva2VuaXplcj4gbV90b2tlbml6ZXI7CiAgICAgSFRNTFBhcnNlck9wdGlvbnMgbV9v
cHRpb25zOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFy
c2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRG9j
dW1lbnRQYXJzZXIuY3BwCShyZXZpc2lvbiAxNDEzMzcpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1s
L3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNzYsMjIg
KzI3NiwyNyBAQCBib29sIEhUTUxEb2N1bWVudFBhcnNlcjo6Y2FuVGFrZU5leHRUb2tlCiAKICNp
ZiBFTkFCTEUoVEhSRUFERURfSFRNTF9QQVJTRVIpCiAKLXZvaWQgSFRNTERvY3VtZW50UGFyc2Vy
OjpkaWRSZWNlaXZlVG9rZW5zRnJvbUJhY2tncm91bmRQYXJzZXIoUGFzc093blB0cjxDb21wYWN0
SFRNTFRva2VuU3RyZWFtPiB0b2tlbnMpCit2b2lkIEhUTUxEb2N1bWVudFBhcnNlcjo6ZGlkUmVj
ZWl2ZVBhcnNlZENodW5rRnJvbUJhY2tncm91bmRQYXJzZXIoUGFzc093blB0cjxQYXJzZWRDaHVu
az4gY2h1bmspCiB7CiAgICAgaWYgKGlzV2FpdGluZ0ZvclNjcmlwdHMoKSkgewotICAgICAgICBt
X3BlbmRpbmdUb2tlbnMuYXBwZW5kKHRva2Vucyk7CisgICAgICAgIG1fc3BlY3VsYXRpb25zLmFw
cGVuZChjaHVuayk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgQVNTRVJUKG1fcGVuZGlu
Z1Rva2Vucy5pc0VtcHR5KCkpOwotICAgIHByb2Nlc3NUb2tlbnNGcm9tQmFja2dyb3VuZFBhcnNl
cih0b2tlbnMpOworICAgIEFTU0VSVChtX3NwZWN1bGF0aW9ucy5pc0VtcHR5KCkpOworICAgIHBy
b2Nlc3NQYXJzZWRDaHVua0Zyb21CYWNrZ3JvdW5kUGFyc2VyKGNodW5rKTsKIH0KIAotdm9pZCBI
VE1MRG9jdW1lbnRQYXJzZXI6OmRpZEZhaWxTcGVjdWxhdGlvbihQYXNzT3duUHRyPEhUTUxUb2tl
bj4sIFBhc3NPd25QdHI8SFRNTFRva2VuaXplcj4pCit2b2lkIEhUTUxEb2N1bWVudFBhcnNlcjo6
ZGlkRmFpbFNwZWN1bGF0aW9uKFBhc3NPd25QdHI8SFRNTFRva2VuPiB0b2tlbiwgUGFzc093blB0
cjxIVE1MVG9rZW5pemVyPiB0b2tlbml6ZXIpCiB7Ci0gICAgLy8gRklYTUU6IFRlbGwgdGhlIGJh
Y2tncm91bmQgcGFyc2VyIHRvIHJlc3VtZSBwYXJzaW5nIHdpdGggdGhpcyB0b2tlbiBhbmQgdG9r
ZW5pemVyLgorICAgIG1fd2Vha0ZhY3RvcnkucmV2b2tlQWxsKCk7CisgICAgbV9zcGVjdWxhdGlv
bnMuY2xlYXIoKTsKKworICAgIFBhcnNlcklkZW50aWZpZXIgaWRlbnRpZmllciA9IFBhcnNlck1h
cDo6aWRlbnRpZmllckZvclBhcnNlcih0aGlzKTsKKyAgICBIVE1MUGFyc2VyVGhyZWFkOjpzaGFy
ZWQoKS0+cG9zdFRhc2soYmluZCgmQmFja2dyb3VuZEhUTUxQYXJzZXI6OnJlc3VtZUZyb21QYXJ0
aWFsLAorICAgICAgICBpZGVudGlmaWVyLCBtX3dlYWtGYWN0b3J5LmNyZWF0ZVdlYWtQdHIoKSwg
dG9rZW4sIHRva2VuaXplciwgbV9jdXJyZW50Q2h1bmstPmNoZWNrcG9pbnQpKTsKIH0KIAotdm9p
ZCBIVE1MRG9jdW1lbnRQYXJzZXI6OnByb2Nlc3NUb2tlbnNGcm9tQmFja2dyb3VuZFBhcnNlcihQ
YXNzT3duUHRyPENvbXBhY3RIVE1MVG9rZW5TdHJlYW0+IHRva2VucykKK3ZvaWQgSFRNTERvY3Vt
ZW50UGFyc2VyOjpwcm9jZXNzUGFyc2VkQ2h1bmtGcm9tQmFja2dyb3VuZFBhcnNlcihQYXNzT3du
UHRyPFBhcnNlZENodW5rPiBjaHVuaykKIHsKICAgICBBU1NFUlQoc2hvdWxkVXNlVGhyZWFkaW5n
KCkpOwogCkBAIC0yOTksNiArMzA0LDEwIEBAIHZvaWQgSFRNTERvY3VtZW50UGFyc2VyOjpwcm9j
ZXNzVG9rZW5zRnIKICAgICAvLyBidXQgd2UgbmVlZCB0byBlbnN1cmUgaXQgaXNuJ3QgZGVsZXRl
ZCB5ZXQuCiAgICAgUmVmUHRyPEhUTUxEb2N1bWVudFBhcnNlcj4gcHJvdGVjdCh0aGlzKTsKIAor
ICAgIEFTU0VSVCghbV9jdXJyZW50Q2h1bmspOworICAgIG1fY3VycmVudENodW5rID0gY2h1bms7
CisgICAgT3duUHRyPENvbXBhY3RIVE1MVG9rZW5TdHJlYW0+IHRva2VucyA9IG1fY3VycmVudENo
dW5rLT50b2tlbnMucmVsZWFzZSgpOworCiAgICAgLy8gRklYTUU6IFBhc3MgaW4gY3VycmVudCBp
bnB1dCBsZW5ndGguCiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIGNvb2tpZSA9
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFdyaXRlSFRNTChkb2N1bWVudCgpLCAwLCBs
aW5lTnVtYmVyKCkuemVyb0Jhc2VkSW50KCkpOwogCkBAIC0zMjksNiArMzM4LDcgQEAgdm9pZCBI
VE1MRG9jdW1lbnRQYXJzZXI6OnByb2Nlc3NUb2tlbnNGcgogICAgICAgICB9CiAgICAgfQogCisg
ICAgbV9jdXJyZW50Q2h1bmsuY2xlYXIoKTsKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OmRpZFdyaXRlSFRNTChjb29raWUsIGxpbmVOdW1iZXIoKS56ZXJvQmFzZWRJbnQoKSk7CiB9CiAK
QEAgLTcwMSw4ICs3MTEsOCBAQCB2b2lkIEhUTUxEb2N1bWVudFBhcnNlcjo6cmVzdW1lUGFyc2lu
Z0FmCiAKICNpZiBFTkFCTEUoVEhSRUFERURfSFRNTF9QQVJTRVIpCiAgICAgaWYgKHNob3VsZFVz
ZVRocmVhZGluZygpKSB7Ci0gICAgICAgIHdoaWxlICghbV9wZW5kaW5nVG9rZW5zLmlzRW1wdHko
KSkgewotICAgICAgICAgICAgcHJvY2Vzc1Rva2Vuc0Zyb21CYWNrZ3JvdW5kUGFyc2VyKG1fcGVu
ZGluZ1Rva2Vucy50YWtlRmlyc3QoKSk7CisgICAgICAgIHdoaWxlICghbV9zcGVjdWxhdGlvbnMu
aXNFbXB0eSgpKSB7CisgICAgICAgICAgICBwcm9jZXNzUGFyc2VkQ2h1bmtGcm9tQmFja2dyb3Vu
ZFBhcnNlcihtX3NwZWN1bGF0aW9ucy50YWtlRmlyc3QoKSk7CiAgICAgICAgICAgICBpZiAoaXNX
YWl0aW5nRm9yU2NyaXB0cygpIHx8IGlzU3RvcHBlZCgpKQogICAgICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3Vt
ZW50UGFyc2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRN
TERvY3VtZW50UGFyc2VyLmgJKHJldmlzaW9uIDE0MTMzNykKKysrIFNvdXJjZS9XZWJDb3JlL2h0
bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsy
Niw3IEBACiAjaWZuZGVmIEhUTUxEb2N1bWVudFBhcnNlcl9oCiAjZGVmaW5lIEhUTUxEb2N1bWVu
dFBhcnNlcl9oCiAKKyNpbmNsdWRlICJCYWNrZ3JvdW5kSFRNTElucHV0U3RyZWFtLmgiCiAjaW5j
bHVkZSAiQ2FjaGVkUmVzb3VyY2VDbGllbnQuaCIKICNpbmNsdWRlICJGcmFnbWVudFNjcmlwdGlu
Z1Blcm1pc3Npb24uaCIKICNpbmNsdWRlICJIVE1MSW5wdXRTdHJlYW0uaCIKQEAgLTgyLDcgKzgz
LDExIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcmVzdW1lU2NoZWR1bGVkVGFza3MoKTsK
IAogI2lmIEVOQUJMRShUSFJFQURFRF9IVE1MX1BBUlNFUikKLSAgICB2b2lkIGRpZFJlY2VpdmVU
b2tlbnNGcm9tQmFja2dyb3VuZFBhcnNlcihQYXNzT3duUHRyPENvbXBhY3RIVE1MVG9rZW5TdHJl
YW0+KTsKKyAgICBzdHJ1Y3QgUGFyc2VkQ2h1bmsgeworICAgICAgICBPd25QdHI8Q29tcGFjdEhU
TUxUb2tlblN0cmVhbT4gdG9rZW5zOworICAgICAgICBIVE1MSW5wdXRDaGVja3BvaW50IGNoZWNr
cG9pbnQ7CisgICAgfTsKKyAgICB2b2lkIGRpZFJlY2VpdmVQYXJzZWRDaHVua0Zyb21CYWNrZ3Jv
dW5kUGFyc2VyKFBhc3NPd25QdHI8UGFyc2VkQ2h1bms+KTsKICNlbmRpZgogCiBwcm90ZWN0ZWQ6
CkBAIC0xMjUsNyArMTMwLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHN0YXJ0QmFja2dyb3VuZFBh
cnNlcigpOwogICAgIHZvaWQgc3RvcEJhY2tncm91bmRQYXJzZXIoKTsKICAgICB2b2lkIGRpZEZh
aWxTcGVjdWxhdGlvbihQYXNzT3duUHRyPEhUTUxUb2tlbj4sIFBhc3NPd25QdHI8SFRNTFRva2Vu
aXplcj4pOwotICAgIHZvaWQgcHJvY2Vzc1Rva2Vuc0Zyb21CYWNrZ3JvdW5kUGFyc2VyKFBhc3NP
d25QdHI8Q29tcGFjdEhUTUxUb2tlblN0cmVhbT4pOworICAgIHZvaWQgcHJvY2Vzc1BhcnNlZENo
dW5rRnJvbUJhY2tncm91bmRQYXJzZXIoUGFzc093blB0cjxQYXJzZWRDaHVuaz4pOwogI2VuZGlm
CiAKICAgICBlbnVtIFN5bmNocm9ub3VzTW9kZSB7CkBAIC0xNzIsNyArMTc3LDggQEAgcHJpdmF0
ZToKICAgICBYU1NBdWRpdG9yIG1feHNzQXVkaXRvcjsKIAogI2lmIEVOQUJMRShUSFJFQURFRF9I
VE1MX1BBUlNFUikKLSAgICBEZXF1ZTxPd25QdHI8Q29tcGFjdEhUTUxUb2tlblN0cmVhbT4gPiBt
X3BlbmRpbmdUb2tlbnM7CisgICAgT3duUHRyPFBhcnNlZENodW5rPiBtX2N1cnJlbnRDaHVuazsK
KyAgICBEZXF1ZTxPd25QdHI8UGFyc2VkQ2h1bms+ID4gbV9zcGVjdWxhdGlvbnM7CiAgICAgV2Vh
a1B0ckZhY3Rvcnk8SFRNTERvY3VtZW50UGFyc2VyPiBtX3dlYWtGYWN0b3J5OwogI2VuZGlmCiAK
SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDE0MTMzNykKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDEzLTAxLTMwICBBZGFtIEJhcnRoICA8YWJh
cnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVGhlIGJhY2tncm91bmQgSFRNTCBwYXJzZXIgc2hv
dWxkIGJlIGFibGUgdG8gcGFyc2Ugc3BlY3VsYXRpdmVseQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA3NzUzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0L3BhcnNlci9kb2N1bWVudC13cml0ZS1w
YXJ0aWFsLXNjcmlwdC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvcGFyc2Vy
L2RvY3VtZW50LXdyaXRlLXBhcnRpYWwtc2NyaXB0Lmh0bWw6IEFkZGVkLgorCiAyMDEzLTAxLTMw
ICBUb255IENoYW5nICA8dG9ueUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW0Nocm9taXVtXSBF
bmFibGUgdGV4dGFyZWEgcmVzaXplIGNvcm5lciBmb3IgdGVzdHMKSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3QvcGFyc2VyL2RvY3VtZW50LXdyaXRlLXBhcnRpYWwtc2NyaXB0LWV4cGVjdGVkLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3BhcnNlci9kb2N1bWVudC13cml0ZS1wYXJ0
aWFsLXNjcmlwdC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0
L3BhcnNlci9kb2N1bWVudC13cml0ZS1wYXJ0aWFsLXNjcmlwdC1leHBlY3RlZC50eHQJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsMiBAQAorQUxFUlQ6IFBBU1M6IFRoaXMgdGVzdCBwYXNzZXMgaWYg
dGhpcyBzdHJpbmcgaXMgYWxlcnRlZAorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3BhcnNlci9k
b2N1bWVudC13cml0ZS1wYXJ0aWFsLXNjcmlwdC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvcGFyc2VyL2RvY3VtZW50LXdyaXRlLXBhcnRpYWwtc2NyaXB0Lmh0bWwJKHJldmlz
aW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L3BhcnNlci9kb2N1bWVudC13cml0ZS1wYXJ0aWFs
LXNjcmlwdC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDkgQEAKKzxzY3JpcHQ+CitpZiAo
d2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisKK2RvY3Vt
ZW50LndyaXRlKCI8c2NyIik7Cis8L3NjcmlwdD5pcHQ+CisvLyA8aWZyYW1lIG9ubG9hZD0iYWxl
cnQoJ0ZBSUw6IElmIHRoaXMgc3RyaW5nIGlzIHZpc2libGUsIHRoZW4gdGhpcyB0ZXN0IGZhaWxz
LicpIiBzcmM9ImFib3V0OmJsYW5rIj48L2lmcmFtZT4KK2FsZXJ0KCdQQVNTOiBUaGlzIHRlc3Qg
cGFzc2VzIGlmIHRoaXMgc3RyaW5nIGlzIGFsZXJ0ZWQnKTsKKzwvc2NyaXB0Pgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>