<?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>30193</bug_id>
          
          <creation_ts>2009-10-07 20:49:22 -0700</creation_ts>
          <short_desc>Move PolicyChecker to it&apos;s own file</short_desc>
          <delta_ts>2009-10-07 23:17:32 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Page Loading</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>29947</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Barth">abarth</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>153246</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-10-07 20:49:22 -0700</bug_when>
    <thetext>I&apos;m also renaming PolicyCheck to PolicyCallback in the same change (to more clearly distinguish it from PolicyChecker).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>153247</commentid>
    <comment_count>1</comment_count>
      <attachid>40838</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-10-07 20:50:52 -0700</bug_when>
    <thetext>Created attachment 40838
Patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>153249</commentid>
    <comment_count>2</comment_count>
      <attachid>40840</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-10-07 20:53:34 -0700</bug_when>
    <thetext>Created attachment 40840
Patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>153260</commentid>
    <comment_count>3</comment_count>
      <attachid>40842</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-10-07 21:39:11 -0700</bug_when>
    <thetext>Created attachment 40842
Patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>153274</commentid>
    <comment_count>4</comment_count>
      <attachid>40842</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-10-07 22:06:01 -0700</bug_when>
    <thetext>Comment on attachment 40842
Patch v1

Should it really be &quot;PolicyCallback&quot;? and not &quot;NavigationPolicyCallback&quot; or &quot;LoadPolicyCallback&quot; or &quot;LoaderPolicyCalback&quot;?

Our indent-in-headers policy is under discussion on webkit-dev, but this change complies to the current style guidelines, so is fine as-is.

cq- given the question about the naming, but otherwise looks fine.  You could reply with some naming justification and set cq+ yourself if you like.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>153296</commentid>
    <comment_count>5</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-10-07 22:58:39 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; Should it really be &quot;PolicyCallback&quot;? and not &quot;NavigationPolicyCallback&quot; or
&gt; &quot;LoadPolicyCallback&quot; or &quot;LoaderPolicyCalback&quot;?

NavigationPolicyCallback isn&apos;t right because Navigation is just one of the three things it does.  LoadPolicyCallback or LoaderPolicyCalback would be fine.  We can change the name later if we like.  I just wanted to make it different from PolicyChecker in the short term.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>153302</commentid>
    <comment_count>6</comment_count>
      <attachid>40842</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-10-07 23:09:55 -0700</bug_when>
    <thetext>Comment on attachment 40842
Patch v1

I need to land this manually.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>153306</commentid>
    <comment_count>7</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-10-07 23:17:32 -0700</bug_when>
    <thetext>Committed r49290: &lt;http://trac.webkit.org/changeset/49290&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>40838</attachid>
            <date>2009-10-07 20:50:52 -0700</date>
            <delta_ts>2009-10-07 20:53:29 -0700</delta_ts>
            <desc>Patch v1</desc>
            <filename>bug-30193-20091007205051.patch</filename>
            <type>text/plain</type>
            <size>37720</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MTYyM2U0ZC4uYzQ5Yjc3ZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMiBAQAorMjAwOS0xMC0wNiAgQWRhbSBCYXJ0aCAg
PGFiYXJ0aEB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIE1vdmUgUG9saWN5Q2hlY2tlciB0byBpdCdzIG93biBmaWxlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMDE5MworCisgICAgICAg
IFRoaXMgaXMganVzdCBtb3ZpbmcgY29kZSBhcm91bmQgYW5kIHJlLW5hbWluZyB0aGluZ3MuCisK
KyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAg
ICAgICogV2ViQ29yZS5wcm86CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3By
b2o6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAg
ICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVy
Lmg6CisgICAgICAgICogbG9hZGVyL1BvbGljeUNhbGxiYWNrLmNwcDogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlOjpQb2xpY3lDYWxsYmFjazo6UG9saWN5Q2FsbGJhY2spOgorICAgICAgICAoV2Vi
Q29yZTo6UG9saWN5Q2FsbGJhY2s6On5Qb2xpY3lDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3Jl
OjpQb2xpY3lDYWxsYmFjazo6Y2xlYXIpOgorICAgICAgICAoV2ViQ29yZTo6UG9saWN5Q2FsbGJh
Y2s6OnNldCk6CisgICAgICAgIChXZWJDb3JlOjpQb2xpY3lDYWxsYmFjazo6Y2FsbCk6CisgICAg
ICAgIChXZWJDb3JlOjpQb2xpY3lDYWxsYmFjazo6Y2xlYXJSZXF1ZXN0KToKKyAgICAgICAgKFdl
YkNvcmU6OlBvbGljeUNhbGxiYWNrOjpjYW5jZWwpOgorICAgICAgICAqIGxvYWRlci9Qb2xpY3lD
YWxsYmFjay5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBvbGljeUNhbGxiYWNrOjpyZXF1
ZXN0KToKKyAgICAgICAgKiBsb2FkZXIvUG9saWN5Q2hlY2suY3BwOiBSZW1vdmVkLgorICAgICAg
ICAqIGxvYWRlci9Qb2xpY3lDaGVjay5oOiBSZW1vdmVkLgorCiAyMDA5LTEwLTA3ICBBZGFtIEJh
cnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRs
ZXIuCmRpZmYgLS1naXQgYS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtIGIvV2ViQ29yZS9HTlVtYWtl
ZmlsZS5hbQppbmRleCAzNzYyMGFmLi44YTZlYmYyIDEwMDY0NAotLS0gYS9XZWJDb3JlL0dOVW1h
a2VmaWxlLmFtCisrKyBiL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KQEAgLTEyNDUsOCArMTI0NSwx
MCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVdlYkNvcmUvbG9hZGVyL1BsYWNlaG9sZGVyRG9j
dW1lbnQuaCBcCiAJV2ViQ29yZS9sb2FkZXIvUGx1Z2luRG9jdW1lbnQuY3BwIFwKIAlXZWJDb3Jl
L2xvYWRlci9QbHVnaW5Eb2N1bWVudC5oIFwKLQlXZWJDb3JlL2xvYWRlci9Qb2xpY3lDaGVjay5j
cHAgXAotCVdlYkNvcmUvbG9hZGVyL1BvbGljeUNoZWNrLmggXAorCVdlYkNvcmUvbG9hZGVyL1Bv
bGljeUNhbGxiYWNrLmNwcCBcCisJV2ViQ29yZS9sb2FkZXIvUG9saWN5Q2FsbGJhY2suaCBcCisJ
V2ViQ29yZS9sb2FkZXIvUG9saWN5Q2hlY2tlci5jcHAgXAorCVdlYkNvcmUvbG9hZGVyL1BvbGlj
eUNoZWNrZXIuaCBcCiAJV2ViQ29yZS9sb2FkZXIvUHJvZ3Jlc3NUcmFja2VyLmNwcCBcCiAJV2Vi
Q29yZS9sb2FkZXIvUHJvZ3Jlc3NUcmFja2VyLmggXAogCVdlYkNvcmUvbG9hZGVyL1JlZGlyZWN0
U2NoZWR1bGVyLmNwcCBcCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1dlYkNv
cmUvV2ViQ29yZS5neXBpCmluZGV4IDA0Y2NiMjkuLmE4Y2ZlYjkgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvV2ViQ29yZS5neXBpCisrKyBiL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0xNjMxLDggKzE2
MzEsMTAgQEAKICAgICAgICAgICAgICdsb2FkZXIvUGxhY2Vob2xkZXJEb2N1bWVudC5oJywKICAg
ICAgICAgICAgICdsb2FkZXIvUGx1Z2luRG9jdW1lbnQuY3BwJywKICAgICAgICAgICAgICdsb2Fk
ZXIvUGx1Z2luRG9jdW1lbnQuaCcsCi0gICAgICAgICAgICAnbG9hZGVyL1BvbGljeUNoZWNrLmNw
cCcsCi0gICAgICAgICAgICAnbG9hZGVyL1BvbGljeUNoZWNrLmgnLAorICAgICAgICAgICAgJ2xv
YWRlci9Qb2xpY3lDYWxsYmFjay5jcHAnLAorICAgICAgICAgICAgJ2xvYWRlci9Qb2xpY3lDYWxs
YmFjay5oJywKKyAgICAgICAgICAgICdsb2FkZXIvUG9saWN5Q2hlY2tlci5jcHAnLAorICAgICAg
ICAgICAgJ2xvYWRlci9Qb2xpY3lDaGVja2VyLmgnLAogICAgICAgICAgICAgJ2xvYWRlci9Qcm9n
cmVzc1RyYWNrZXIuY3BwJywKICAgICAgICAgICAgICdsb2FkZXIvUHJvZ3Jlc3NUcmFja2VyLmgn
LAogICAgICAgICAgICAgJ2xvYWRlci9SZWRpcmVjdFNjaGVkdWxlci5jcHAnLApkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9XZWJDb3JlLnBybyBiL1dlYkNvcmUvV2ViQ29yZS5wcm8KaW5kZXggOTY3MThm
Yi4uMjRjZTBjOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnBybworKysgYi9XZWJDb3Jl
L1dlYkNvcmUucHJvCkBAIC0xMTEzLDcgKzExMTMsOCBAQCBTT1VSQ0VTICs9IFwKICAgICBsb2Fk
ZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuY3BwIFwKICAgICBsb2FkZXIvUGxhY2Vob2xk
ZXJEb2N1bWVudC5jcHAgXAogICAgIGxvYWRlci9QbHVnaW5Eb2N1bWVudC5jcHAgXAotICAgIGxv
YWRlci9Qb2xpY3lDaGVjay5jcHAgXAorICAgIGxvYWRlci9Qb2xpY3lDYWxsYmFjay5jcHAgXAor
ICAgIGxvYWRlci9Qb2xpY3lDaGVja2VyLmNwcCBcCiAgICAgbG9hZGVyL1Byb2dyZXNzVHJhY2tl
ci5jcHAgXAogICAgIGxvYWRlci9SZWRpcmVjdFNjaGVkdWxlci5jcHAgXAogICAgIGxvYWRlci9S
ZXF1ZXN0LmNwcCBcCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUu
dmNwcm9qIGIvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCA4M2Uz
YTIxLi45YTllM2VjIDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUu
dmNwcm9qCisrKyBiL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAgLTE3
NDg5LDExICsxNzQ4OSwxOSBAQAogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJ
UmVsYXRpdmVQYXRoPSIuLlxsb2FkZXJcUG9saWN5Q2hlY2suY3BwIg0KKwkJCQlSZWxhdGl2ZVBh
dGg9Ii4uXGxvYWRlclxQb2xpY3lDYWxsYmFjay5jcHAiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQog
CQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxsb2FkZXJcUG9saWN5Q2hlY2suaCINCisJ
CQkJUmVsYXRpdmVQYXRoPSIuLlxsb2FkZXJcUG9saWN5Q2FsbGJhY2suaCINCisJCQkJPg0KKwkJ
CTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGxvYWRlclxQb2xpY3lD
aGVja2VyLmNwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2
ZVBhdGg9Ii4uXGxvYWRlclxQb2xpY3lDaGVja2VyLmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQog
CQkJPEZpbGUNCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvaiBiL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4
IDAxNmE1ZWYuLjE2YTFlNDIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCisrKyBiL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCkBAIC0yMzQ1LDEwICsyMzQ1LDEyIEBACiAJCTkzRjlCN0EwMEJBNjAzMjYwMDg1NDA2
NCAvKiBKU0NEQVRBU2VjdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5M0Y5Qjc5RTBCQTYwMzI2MDA4NTQwNjQgLyogSlNDREFUQVNlY3Rpb24u
Y3BwICovOyB9OwogCQk5M0Y5QjdBMTBCQTYwMzI2MDA4NTQwNjQgLyogSlNDREFUQVNlY3Rpb24u
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRjlCNzlG
MEJBNjAzMjYwMDg1NDA2NCAvKiBKU0NEQVRBU2VjdGlvbi5oICovOyB9OwogCQk5M0ZEQUZDQTBC
MTEzMDc0MDBFMjc0NkYgLyogRWRpdG9ySW5zZXJ0QWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0ZEQUZDOTBCMTEzMDc0MDBFMjc0NkYgLyog
RWRpdG9ySW5zZXJ0QWN0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJOTcwNTk5NzcxMDdEOTc1MjAwQTUwQTdDIC8qIFBvbGljeUNhbGxiYWNr
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3MDU5
OTczMTA3RDk3NTIwMEE1MEE3QyAvKiBQb2xpY3lDYWxsYmFjay5jcHAgKi87IH07CisJCTk3MDU5
OTc4MTA3RDk3NTIwMEE1MEE3QyAvKiBQb2xpY3lDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTcwNTk5NzQxMDdEOTc1MjAwQTUwQTdDIC8q
IFBvbGljeUNhbGxiYWNrLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJOTcwNTk5NzkxMDdEOTc1MjAwQTUwQTdDIC8qIFBvbGljeUNoZWNrZXIuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTcwNTk5NzUx
MDdEOTc1MjAwQTUwQTdDIC8qIFBvbGljeUNoZWNrZXIuY3BwICovOyB9OworCQk5NzA1OTk3QTEw
N0Q5NzUyMDBBNTBBN0MgLyogUG9saWN5Q2hlY2tlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTcwNTk5NzYxMDdEOTc1MjAwQTUwQTdDIC8qIFBvbGlj
eUNoZWNrZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk5NzlGNDNEMzEwNzVFNDRBMDAwMEY4M0IgLyogUmVkaXJlY3RTY2hlZHVsZXIuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTc5RjQzRDExMDc1
RTQ0QTAwMDBGODNCIC8qIFJlZGlyZWN0U2NoZWR1bGVyLmNwcCAqLzsgfTsKIAkJOTc5RjQzRDQx
MDc1RTQ0QTAwMDBGODNCIC8qIFJlZGlyZWN0U2NoZWR1bGVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NzlGNDNEMjEwNzVFNDRBMDAwMEY4M0IgLyog
UmVkaXJlY3RTY2hlZHVsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwotCQk5N0JDNjNCODEwNzZDOTdGMDAyQzIxNDIgLyogUG9saWN5Q2hlY2suY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTdCQzYzQjYx
MDc2Qzk3RjAwMkMyMTQyIC8qIFBvbGljeUNoZWNrLmNwcCAqLzsgfTsKLQkJOTdCQzYzQjkxMDc2
Qzk3RjAwMkMyMTQyIC8qIFBvbGljeUNoZWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5N0JDNjNCNzEwNzZDOTdGMDAyQzIxNDIgLyogUG9saWN5Q2hl
Y2suaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5
N0RENEQ4NjBGREY0RDZFMDBFQ0Y5QTQgLyogWFNTQXVkaXRvci5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5N0RENEQ4NDBGREY0RDZEMDBFQ0Y5QTQg
LyogWFNTQXVkaXRvci5jcHAgKi87IH07CiAJCTk3REQ0RDg3MEZERjRENkUwMEVDRjlBNCAvKiBY
U1NBdWRpdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA5N0RENEQ4NTBGREY0RDZFMDBFQ0Y5QTQgLyogWFNTQXVkaXRvci5oICovOyB9OwogCQlBMTdD
ODEyMjBGMkE1Q0Y3MDA1REFBRUIgLyogSFRNTEVsZW1lbnRGYWN0b3J5LmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExN0M4MTIwMEYyQTVDRjcwMDVE
QUFFQiAvKiBIVE1MRWxlbWVudEZhY3RvcnkuY3BwICovOyB9OwpAQCAtNzUzNiwxMCArNzUzOCwx
MiBAQAogCQk5M0Y5Qjc5RTBCQTYwMzI2MDA4NTQwNjQgLyogSlNDREFUQVNlY3Rpb24uY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNDREFUQVNlY3Rpb24uY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0Y5Qjc5RjBCQTYwMzI2MDA4NTQwNjQgLyog
SlNDREFUQVNlY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNDREFU
QVNlY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNGREFGQzkwQjExMzA3
NDAwRTI3NDZGIC8qIEVkaXRvckluc2VydEFjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gRWRpdG9ySW5zZXJ0QWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTk3MDU5OTczMTA3RDk3NTIwMEE1MEE3QyAvKiBQb2xpY3lDYWxsYmFjay5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQb2xpY3lDYWxsYmFjay5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk3MDU5OTc0MTA3RDk3NTIwMEE1MEE3QyAvKiBQ
b2xpY3lDYWxsYmFjay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQb2xpY3lD
YWxsYmFjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5NzA1OTk3NTEwN0Q5NzUy
MDBBNTBBN0MgLyogUG9saWN5Q2hlY2tlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBQb2xpY3lDaGVja2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJOTcwNTk5NzYxMDdEOTc1MjAwQTUwQTdDIC8qIFBvbGljeUNoZWNrZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUG9saWN5Q2hlY2tlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk5NzlGNDNEMTEwNzVFNDRBMDAwMEY4M0IgLyogUmVkaXJlY3RTY2hlZHVs
ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVkaXJlY3RTY2hl
ZHVsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5NzlGNDNEMjEwNzVFNDRB
MDAwMEY4M0IgLyogUmVkaXJlY3RTY2hlZHVsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gUmVkaXJlY3RTY2hlZHVsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJOTdCQzYzQjYxMDc2Qzk3RjAwMkMyMTQyIC8qIFBvbGljeUNoZWNrLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBvbGljeUNoZWNrLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJOTdCQzYzQjcxMDc2Qzk3RjAwMkMyMTQyIC8qIFBvbGljeUNoZWNr
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBvbGljeUNoZWNrLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk3REQ0RDg0MEZERjRENkQwMEVDRjlBNCAvKiBYU1NB
dWRpdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFhTU0F1ZGl0
b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5N0RENEQ4NTBGREY0RDZFMDBF
Q0Y5QTQgLyogWFNTQXVkaXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBY
U1NBdWRpdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExN0M4MTIwMEYyQTVD
RjcwMDVEQUFFQiAvKiBIVE1MRWxlbWVudEZhY3RvcnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSFRNTEVsZW1lbnRGYWN0b3J5LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTE0NTg4LDggKzE0NTkyLDEwIEBACiAJCQkJMzc3QzRDREQxMDE0RTlG
NjAwQjlBRTQyIC8qIFBsYWNlaG9sZGVyRG9jdW1lbnQuaCAqLywKIAkJCQkxQUM2OTRDNTBBM0Ix
Njc2MDAzRjUwNDkgLyogUGx1Z2luRG9jdW1lbnQuY3BwICovLAogCQkJCTFBQzY5NEM2MEEzQjE2
NzYwMDNGNTA0OSAvKiBQbHVnaW5Eb2N1bWVudC5oICovLAotCQkJCTk3QkM2M0I2MTA3NkM5N0Yw
MDJDMjE0MiAvKiBQb2xpY3lDaGVjay5jcHAgKi8sCi0JCQkJOTdCQzYzQjcxMDc2Qzk3RjAwMkMy
MTQyIC8qIFBvbGljeUNoZWNrLmggKi8sCisJCQkJOTcwNTk5NzMxMDdEOTc1MjAwQTUwQTdDIC8q
IFBvbGljeUNhbGxiYWNrLmNwcCAqLywKKwkJCQk5NzA1OTk3NDEwN0Q5NzUyMDBBNTBBN0MgLyog
UG9saWN5Q2FsbGJhY2suaCAqLywKKwkJCQk5NzA1OTk3NTEwN0Q5NzUyMDBBNTBBN0MgLyogUG9s
aWN5Q2hlY2tlci5jcHAgKi8sCisJCQkJOTcwNTk5NzYxMDdEOTc1MjAwQTUwQTdDIC8qIFBvbGlj
eUNoZWNrZXIuaCAqLywKIAkJCQkxQTJBNjgyMTBCNUJFREU3MDAwMkE0ODAgLyogUHJvZ3Jlc3NU
cmFja2VyLmNwcCAqLywKIAkJCQkxQTJBNjgyMjBCNUJFREU3MDAwMkE0ODAgLyogUHJvZ3Jlc3NU
cmFja2VyLmggKi8sCiAJCQkJOTc5RjQzRDExMDc1RTQ0QTAwMDBGODNCIC8qIFJlZGlyZWN0U2No
ZWR1bGVyLmNwcCAqLywKQEAgLTE3OTY0LDkgKzE3OTcwLDEwIEBACiAJCQkJOTc5RjQzRDQxMDc1
RTQ0QTAwMDBGODNCIC8qIFJlZGlyZWN0U2NoZWR1bGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlC
Qzk0NjJEODEwN0E3QjRDMDA4NTcxOTMgLyogQmVmb3JlTG9hZEV2ZW50LmggaW4gSGVhZGVycyAq
LywKIAkJCQlCQzk0NjM0ODEwN0E5MzY2MDA4NTcxOTMgLyogSlNCZWZvcmVMb2FkRXZlbnQuaCBp
biBIZWFkZXJzICovLAotCQkJCTk3QkM2M0I5MTA3NkM5N0YwMDJDMjE0MiAvKiBQb2xpY3lDaGVj
ay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQ0OUUyNEMxMDdENEE4NDAwQjU3OTNGIC8qIEpTQ2Fs
bGJhY2tEYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzVFNDk3NjEwNzUyQUNCMDBDOUI4OTYg
LyogU2VyaWFsaXplZFNjcmlwdFZhbHVlLmggaW4gSGVhZGVycyAqLywKKwkJCQk5NzA1OTk3ODEw
N0Q5NzUyMDBBNTBBN0MgLyogUG9saWN5Q2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAorCQkJCTk3
MDU5OTdBMTA3RDk3NTIwMEE1MEE3QyAvKiBQb2xpY3lDaGVja2VyLmggaW4gSGVhZGVycyAqLywK
IAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsK
QEAgLTIwMDg2LDkgKzIwMDkzLDEwIEBACiAJCQkJNURCMUJDNkIxMDcxNUE2NDAwRUZBQTQ5IC8q
IFRyYW5zZm9ybVNvdXJjZUxpYnhzbHQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTc5RjQzRDMx
MDc1RTQ0QTAwMDBGODNCIC8qIFJlZGlyZWN0U2NoZWR1bGVyLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUJDOTQ2MzQ2MTA3QTkzNEIwMDg1NzE5MyAvKiBKU0JlZm9yZUxvYWRFdmVudC5jcHAgaW4g
U291cmNlcyAqLywKLQkJCQk5N0JDNjNCODEwNzZDOTdGMDAyQzIxNDIgLyogUG9saWN5Q2hlY2su
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ0OUUyODcxMDdENERCNDAwQjU3OTNGIC8qIEpTQ2Fs
bGJhY2tEYXRhLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3NUU0OTc3MTA3NTJBQ0IwMEM5Qjg5
NiAvKiBTZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJOTcwNTk5
NzcxMDdEOTc1MjAwQTUwQTdDIC8qIFBvbGljeUNhbGxiYWNrLmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCTk3MDU5OTc5MTA3RDk3NTIwMEE1MEE3QyAvKiBQb2xpY3lDaGVja2VyLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAw
OwogCQl9OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwIGIvV2Vi
Q29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCmluZGV4IDU3YTdhNzkuLjgzZGE5MWQgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAorKysgYi9XZWJDb3JlL2xvYWRl
ci9GcmFtZUxvYWRlci5jcHAKQEAgLTIxNjMsNDMgKzIxNjMsMTEgQEAgYm9vbCBGcmFtZUxvYWRl
cjo6d2lsbExvYWRNZWRpYUVsZW1lbnRVUkwoS1VSTCYgdXJsKQogICAgIHJldHVybiBlcnJvci5p
c051bGwoKTsKIH0KIAotdm9pZCBQb2xpY3lDaGVja2VyOjpoYW5kbGVVbmltcGxlbWVudGFibGVQ
b2xpY3koY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCi17Ci0gICAgbV9kZWxlZ2F0ZUlzSGFu
ZGxpbmdVbmltcGxlbWVudGFibGVQb2xpY3kgPSB0cnVlOwotICAgIG1fZnJhbWUtPmxvYWRlcigp
LT5jbGllbnQoKS0+ZGlzcGF0Y2hVbmFibGVUb0ltcGxlbWVudFBvbGljeShlcnJvcik7Ci0gICAg
bV9kZWxlZ2F0ZUlzSGFuZGxpbmdVbmltcGxlbWVudGFibGVQb2xpY3kgPSBmYWxzZTsKLX0KLQot
dm9pZCBQb2xpY3lDaGVja2VyOjpjYW5ub3RTaG93TUlNRVR5cGUoY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYgcmVzcG9uc2UpCi17Ci0gICAgaGFuZGxlVW5pbXBsZW1lbnRhYmxlUG9saWN5KG1fZnJh
bWUtPmxvYWRlcigpLT5jbGllbnQoKS0+Y2Fubm90U2hvd01JTUVUeXBlRXJyb3IocmVzcG9uc2Up
KTsKLX0KLQogUmVzb3VyY2VFcnJvciBGcmFtZUxvYWRlcjo6aW50ZXJydXB0aW9uRm9yUG9saWN5
Q2hhbmdlRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewogICAgIHJldHVy
biBtX2NsaWVudC0+aW50ZXJydXB0Rm9yUG9saWN5Q2hhbmdlRXJyb3IocmVxdWVzdCk7CiB9CiAK
LVBvbGljeUNoZWNrZXI6OlBvbGljeUNoZWNrZXIoRnJhbWUqIGZyYW1lKQotICAgIDogbV9mcmFt
ZShmcmFtZSkKLSAgICAsIG1fZGVsZWdhdGVJc0RlY2lkaW5nTmF2aWdhdGlvblBvbGljeShmYWxz
ZSkKLSAgICAsIG1fZGVsZWdhdGVJc0hhbmRsaW5nVW5pbXBsZW1lbnRhYmxlUG9saWN5KGZhbHNl
KQotICAgICwgbV9sb2FkVHlwZShGcmFtZUxvYWRUeXBlU3RhbmRhcmQpCi17Ci19Ci0KLXZvaWQg
UG9saWN5Q2hlY2tlcjo6Y2hlY2tOYXZpZ2F0aW9uUG9saWN5KGNvbnN0IFJlc291cmNlUmVxdWVz
dCYgbmV3UmVxdWVzdCwgTmF2aWdhdGlvblBvbGljeURlY2lzaW9uRnVuY3Rpb24gZnVuY3Rpb24s
IHZvaWQqIGFyZ3VtZW50KQotewotICAgIGNoZWNrTmF2aWdhdGlvblBvbGljeShuZXdSZXF1ZXN0
LCBtX2ZyYW1lLT5sb2FkZXIoKS0+YWN0aXZlRG9jdW1lbnRMb2FkZXIoKSwgMCwgZnVuY3Rpb24s
IGFyZ3VtZW50KTsKLX0KLQotdm9pZCBQb2xpY3lDaGVja2VyOjpjaGVja0NvbnRlbnRQb2xpY3ko
Y29uc3QgU3RyaW5nJiBNSU1FVHlwZSwgQ29udGVudFBvbGljeURlY2lzaW9uRnVuY3Rpb24gZnVu
Y3Rpb24sIHZvaWQqIGFyZ3VtZW50KQotewotICAgIG1fcG9saWN5Q2hlY2suc2V0KGZ1bmN0aW9u
LCBhcmd1bWVudCk7Ci0gICAgbV9mcmFtZS0+bG9hZGVyKCktPmNsaWVudCgpLT5kaXNwYXRjaERl
Y2lkZVBvbGljeUZvck1JTUVUeXBlKCZQb2xpY3lDaGVja2VyOjpjb250aW51ZUFmdGVyQ29udGVu
dFBvbGljeSwKLSAgICAgICAgTUlNRVR5cGUsIG1fZnJhbWUtPmxvYWRlcigpLT5hY3RpdmVEb2N1
bWVudExvYWRlcigpLT5yZXF1ZXN0KCkpOwotfQotCiBib29sIEZyYW1lTG9hZGVyOjpzaG91bGRS
ZWxvYWRUb0hhbmRsZVVucmVhY2hhYmxlVVJMKERvY3VtZW50TG9hZGVyKiBkb2NMb2FkZXIpCiB7
CiAgICAgS1VSTCB1bnJlYWNoYWJsZVVSTCA9IGRvY0xvYWRlci0+dW5yZWFjaGFibGVVUkwoKTsK
QEAgLTI4NTEsMTIgKzI4MTksNiBAQCBTdHJpbmcgRnJhbWVMb2FkZXI6OmdlbmVyYXRlZE1JTUVU
eXBlRm9yVVJMU2NoZW1lKGNvbnN0IFN0cmluZyYgVVJMU2NoZW1lKQogICAgIHJldHVybiBtX2Ns
aWVudC0+Z2VuZXJhdGVkTUlNRVR5cGVGb3JVUkxTY2hlbWUoVVJMU2NoZW1lKTsKIH0KIAotdm9p
ZCBQb2xpY3lDaGVja2VyOjpjYW5jZWxDaGVjaygpCi17Ci0gICAgbV9mcmFtZS0+bG9hZGVyKCkt
PmNsaWVudCgpLT5jYW5jZWxQb2xpY3lDaGVjaygpOwotICAgIG1fcG9saWN5Q2hlY2suY2xlYXIo
KTsKLX0KLQogdm9pZCBGcmFtZUxvYWRlcjo6ZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJv
dmlzaW9uYWxMb2FkRm9yRnJhbWUoKQogewogICAgIG1fY2xpZW50LT5kaXNwYXRjaERpZFJlY2Vp
dmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZCgpOwpAQCAtMjk3NiwxNCArMjkzOCw2
IEBAIENhY2hlUG9saWN5IEZyYW1lTG9hZGVyOjpzdWJyZXNvdXJjZUNhY2hlUG9saWN5KCkgY29u
c3QKICAgICByZXR1cm4gQ2FjaGVQb2xpY3lWZXJpZnk7CiB9CiAKLXZvaWQgUG9saWN5Q2hlY2tl
cjo6c3RvcENoZWNrKCkKLXsKLSAgICBtX2ZyYW1lLT5sb2FkZXIoKS0+Y2xpZW50KCktPmNhbmNl
bFBvbGljeUNoZWNrKCk7Ci0gICAgUG9saWN5Q2hlY2sgY2hlY2sgPSBtX3BvbGljeUNoZWNrOwot
ICAgIG1fcG9saWN5Q2hlY2suY2xlYXIoKTsKLSAgICBjaGVjay5jYW5jZWwoKTsKLX0KLQogdm9p
ZCBGcmFtZUxvYWRlcjo6Y2hlY2tMb2FkQ29tcGxldGVGb3JUaGlzRnJhbWUoKQogewogICAgIEFT
U0VSVChtX2NsaWVudC0+aGFzV2ViVmlldygpKTsKQEAgLTMwODIsMjAgKzMwMzYsNiBAQCB2b2lk
IEZyYW1lTG9hZGVyOjpjaGVja0xvYWRDb21wbGV0ZUZvclRoaXNGcmFtZSgpCiAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CiB9CiAKLXZvaWQgUG9saWN5Q2hlY2tlcjo6Y29udGludWVBZnRlckNv
bnRlbnRQb2xpY3koUG9saWN5QWN0aW9uIHBvbGljeSkKLXsKLSAgICBQb2xpY3lDaGVjayBjaGVj
ayA9IG1fcG9saWN5Q2hlY2s7Ci0gICAgbV9wb2xpY3lDaGVjay5jbGVhcigpOwotICAgIGNoZWNr
LmNhbGwocG9saWN5KTsKLX0KLQotdm9pZCBQb2xpY3lDaGVja2VyOjpjb250aW51ZUxvYWRBZnRl
cldpbGxTdWJtaXRGb3JtKFBvbGljeUFjdGlvbikKLXsKLSAgICAvLyBTZWUgaGVhZGVyIGZpbGUg
Zm9yIGFuIGV4cGxhaW5hdGlvbiBvZiB3aHkgdGhpcyBmdW5jdGlvbgotICAgIC8vIGlzbid0IGxp
a2UgdGhlIG90aGVycy4KLSAgICBtX2ZyYW1lLT5sb2FkZXIoKS0+Y29udGludWVMb2FkQWZ0ZXJX
aWxsU3VibWl0Rm9ybSgpOwotfQotCiB2b2lkIEZyYW1lTG9hZGVyOjpjb250aW51ZUxvYWRBZnRl
cldpbGxTdWJtaXRGb3JtKCkKIHsKICAgICBpZiAoIW1fcHJvdmlzaW9uYWxEb2N1bWVudExvYWRl
cikKQEAgLTM1ODgsMTAwICszNTI4LDYgQEAgYm9vbCBGcmFtZUxvYWRlcjo6c2hvdWxkU2Nyb2xs
VG9BbmNob3IoYm9vbCBpc0Zvcm1TdWJtaXNzaW9uLCBGcmFtZUxvYWRUeXBlIGxvYWQKICAgICAg
ICAgJiYgIW1fZnJhbWUtPmRvY3VtZW50KCktPmlzRnJhbWVTZXQoKTsKIH0KIAotdm9pZCBQb2xp
Y3lDaGVja2VyOjpjaGVja05ld1dpbmRvd1BvbGljeShjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiBh
Y3Rpb24sIE5ld1dpbmRvd1BvbGljeURlY2lzaW9uRnVuY3Rpb24gZnVuY3Rpb24sCi0gICAgY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBQYXNzUmVmUHRyPEZvcm1TdGF0ZT4gZm9ybVN0
YXRlLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgdm9pZCogYXJndW1lbnQpCi17Ci0gICAgbV9w
b2xpY3lDaGVjay5zZXQocmVxdWVzdCwgZm9ybVN0YXRlLCBmcmFtZU5hbWUsIGZ1bmN0aW9uLCBh
cmd1bWVudCk7Ci0gICAgbV9mcmFtZS0+bG9hZGVyKCktPmNsaWVudCgpLT5kaXNwYXRjaERlY2lk
ZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbigmUG9saWN5Q2hlY2tlcjo6Y29udGludWVBZnRlck5l
d1dpbmRvd1BvbGljeSwKLSAgICAgICAgYWN0aW9uLCByZXF1ZXN0LCBmb3JtU3RhdGUsIGZyYW1l
TmFtZSk7Ci19Ci0KLXZvaWQgUG9saWN5Q2hlY2tlcjo6Y29udGludWVBZnRlck5ld1dpbmRvd1Bv
bGljeShQb2xpY3lBY3Rpb24gcG9saWN5KQotewotICAgIFBvbGljeUNoZWNrIGNoZWNrID0gbV9w
b2xpY3lDaGVjazsKLSAgICBtX3BvbGljeUNoZWNrLmNsZWFyKCk7Ci0KLSAgICBzd2l0Y2ggKHBv
bGljeSkgewotICAgICAgICBjYXNlIFBvbGljeUlnbm9yZToKLSAgICAgICAgICAgIGNoZWNrLmNs
ZWFyUmVxdWVzdCgpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgUG9saWN5RG93
bmxvYWQ6Ci0gICAgICAgICAgICBtX2ZyYW1lLT5sb2FkZXIoKS0+Y2xpZW50KCktPnN0YXJ0RG93
bmxvYWQoY2hlY2sucmVxdWVzdCgpKTsKLSAgICAgICAgICAgIGNoZWNrLmNsZWFyUmVxdWVzdCgp
OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgUG9saWN5VXNlOgotICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgfQotCi0gICAgY2hlY2suY2FsbChwb2xpY3kgPT0gUG9saWN5VXNlKTsK
LX0KLQotdm9pZCBQb2xpY3lDaGVja2VyOjpjaGVja05hdmlnYXRpb25Qb2xpY3koY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBEb2N1bWVudExvYWRlciogbG9hZGVyLAotICAgIFBhc3NS
ZWZQdHI8Rm9ybVN0YXRlPiBmb3JtU3RhdGUsIE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbkZ1bmN0
aW9uIGZ1bmN0aW9uLCB2b2lkKiBhcmd1bWVudCkKLXsKLSAgICBOYXZpZ2F0aW9uQWN0aW9uIGFj
dGlvbiA9IGxvYWRlci0+dHJpZ2dlcmluZ0FjdGlvbigpOwotICAgIGlmIChhY3Rpb24uaXNFbXB0
eSgpKSB7Ci0gICAgICAgIGFjdGlvbiA9IE5hdmlnYXRpb25BY3Rpb24ocmVxdWVzdC51cmwoKSwg
TmF2aWdhdGlvblR5cGVPdGhlcik7Ci0gICAgICAgIGxvYWRlci0+c2V0VHJpZ2dlcmluZ0FjdGlv
bihhY3Rpb24pOwotICAgIH0KLQotICAgIC8vIERvbid0IGFzayBtb3JlIHRoYW4gb25jZSBmb3Ig
dGhlIHNhbWUgcmVxdWVzdCBvciBpZiB3ZSBhcmUgbG9hZGluZyBhbiBlbXB0eSBVUkwuCi0gICAg
Ly8gVGhpcyBhdm9pZHMgY29uZnVzaW9uIG9uIHRoZSBwYXJ0IG9mIHRoZSBjbGllbnQuCi0gICAg
aWYgKGVxdWFsSWdub3JpbmdIZWFkZXJGaWVsZHMocmVxdWVzdCwgbG9hZGVyLT5sYXN0Q2hlY2tl
ZFJlcXVlc3QoKSkgfHwgKCFyZXF1ZXN0LmlzTnVsbCgpICYmIHJlcXVlc3QudXJsKCkuaXNFbXB0
eSgpKSkgewotICAgICAgICBmdW5jdGlvbihhcmd1bWVudCwgcmVxdWVzdCwgMCwgdHJ1ZSk7Ci0g
ICAgICAgIGxvYWRlci0+c2V0TGFzdENoZWNrZWRSZXF1ZXN0KHJlcXVlc3QpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotICAgIAotICAgIC8vIFdlIGFyZSBhbHdheXMgd2lsbGluZyB0byBzaG93
IGFsdGVybmF0ZSBjb250ZW50IGZvciB1bnJlYWNoYWJsZSBVUkxzOwotICAgIC8vIHRyZWF0IGl0
IGxpa2UgYSByZWxvYWQgc28gaXQgbWFpbnRhaW5zIHRoZSByaWdodCBzdGF0ZSBmb3IgYi9mIGxp
c3QuCi0gICAgaWYgKGxvYWRlci0+c3Vic3RpdHV0ZURhdGEoKS5pc1ZhbGlkKCkgJiYgIWxvYWRl
ci0+c3Vic3RpdHV0ZURhdGEoKS5mYWlsaW5nVVJMKCkuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGlm
IChpc0JhY2tGb3J3YXJkTG9hZFR5cGUobV9sb2FkVHlwZSkpCi0gICAgICAgICAgICBtX2xvYWRU
eXBlID0gRnJhbWVMb2FkVHlwZVJlbG9hZDsKLSAgICAgICAgZnVuY3Rpb24oYXJndW1lbnQsIHJl
cXVlc3QsIDAsIHRydWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIAotICAgIGxvYWRl
ci0+c2V0TGFzdENoZWNrZWRSZXF1ZXN0KHJlcXVlc3QpOwotCi0gICAgbV9wb2xpY3lDaGVjay5z
ZXQocmVxdWVzdCwgZm9ybVN0YXRlLmdldCgpLCBmdW5jdGlvbiwgYXJndW1lbnQpOwotCi0gICAg
bV9kZWxlZ2F0ZUlzRGVjaWRpbmdOYXZpZ2F0aW9uUG9saWN5ID0gdHJ1ZTsKLSAgICBtX2ZyYW1l
LT5sb2FkZXIoKS0+Y2xpZW50KCktPmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFj
dGlvbigmUG9saWN5Q2hlY2tlcjo6Y29udGludWVBZnRlck5hdmlnYXRpb25Qb2xpY3ksCi0gICAg
ICAgIGFjdGlvbiwgcmVxdWVzdCwgZm9ybVN0YXRlKTsKLSAgICBtX2RlbGVnYXRlSXNEZWNpZGlu
Z05hdmlnYXRpb25Qb2xpY3kgPSBmYWxzZTsKLX0KLQotdm9pZCBQb2xpY3lDaGVja2VyOjpjb250
aW51ZUFmdGVyTmF2aWdhdGlvblBvbGljeShQb2xpY3lBY3Rpb24gcG9saWN5KQotewotICAgIFBv
bGljeUNoZWNrIGNoZWNrID0gbV9wb2xpY3lDaGVjazsKLSAgICBtX3BvbGljeUNoZWNrLmNsZWFy
KCk7Ci0KLSAgICBib29sIHNob3VsZENvbnRpbnVlID0gcG9saWN5ID09IFBvbGljeVVzZTsKLQot
ICAgIHN3aXRjaCAocG9saWN5KSB7Ci0gICAgICAgIGNhc2UgUG9saWN5SWdub3JlOgotICAgICAg
ICAgICAgY2hlY2suY2xlYXJSZXF1ZXN0KCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAg
Y2FzZSBQb2xpY3lEb3dubG9hZDoKLSAgICAgICAgICAgIG1fZnJhbWUtPmxvYWRlcigpLT5jbGll
bnQoKS0+c3RhcnREb3dubG9hZChjaGVjay5yZXF1ZXN0KCkpOwotICAgICAgICAgICAgY2hlY2su
Y2xlYXJSZXF1ZXN0KCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBQb2xpY3lV
c2U6IHsKLSAgICAgICAgICAgIFJlc291cmNlUmVxdWVzdCByZXF1ZXN0KGNoZWNrLnJlcXVlc3Qo
KSk7Ci0KLSAgICAgICAgICAgIGlmICghbV9mcmFtZS0+bG9hZGVyKCktPmNsaWVudCgpLT5jYW5I
YW5kbGVSZXF1ZXN0KHJlcXVlc3QpKSB7Ci0gICAgICAgICAgICAgICAgaGFuZGxlVW5pbXBsZW1l
bnRhYmxlUG9saWN5KG1fZnJhbWUtPmxvYWRlcigpLT5jYW5ub3RTaG93VVJMRXJyb3IoY2hlY2su
cmVxdWVzdCgpKSk7Ci0gICAgICAgICAgICAgICAgY2hlY2suY2xlYXJSZXF1ZXN0KCk7Ci0gICAg
ICAgICAgICAgICAgc2hvdWxkQ29udGludWUgPSBmYWxzZTsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgY2hlY2suY2FsbChzaG91bGRD
b250aW51ZSk7Ci19Ci0KIHZvaWQgRnJhbWVMb2FkZXI6OmNhbGxDb250aW51ZUxvYWRBZnRlck5h
dmlnYXRpb25Qb2xpY3kodm9pZCogYXJndW1lbnQsCiAgICAgY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0LCBQYXNzUmVmUHRyPEZvcm1TdGF0ZT4gZm9ybVN0YXRlLCBib29sIHNob3VsZENv
bnRpbnVlKQogewpAQCAtMzc1OCw3ICszNjA0LDYgQEAgdm9pZCBGcmFtZUxvYWRlcjo6Y29udGlu
dWVMb2FkQWZ0ZXJOYXZpZ2F0aW9uUG9saWN5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFBhc3MK
ICAgICAgICAgY29udGludWVMb2FkQWZ0ZXJXaWxsU3VibWl0Rm9ybSgpOwogfQogCi0KIHZvaWQg
RnJhbWVMb2FkZXI6OmNhbGxDb250aW51ZUxvYWRBZnRlck5ld1dpbmRvd1BvbGljeSh2b2lkKiBh
cmd1bWVudCwKICAgICBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFBhc3NSZWZQdHI8
Rm9ybVN0YXRlPiBmb3JtU3RhdGUsIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBib29sIHNob3Vs
ZENvbnRpbnVlKQogewpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaCBi
L1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKaW5kZXggOTBlZGQzZC4uNGFmMzM1YyAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAorKysgYi9XZWJDb3JlL2xvYWRl
ci9GcmFtZUxvYWRlci5oCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiQ2FjaGVQb2xpY3ku
aCIKICNpbmNsdWRlICJGcmFtZUxvYWRlclR5cGVzLmgiCiAjaW5jbHVkZSAiUG9saWN5Q2hlY2su
aCIKKyNpbmNsdWRlICJQb2xpY3lDaGVja2VyLmgiCiAjaW5jbHVkZSAiUmVkaXJlY3RTY2hlZHVs
ZXIuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKICNpbmNsdWRlICJUaHJlYWRhYmxl
TG9hZGVyLmgiCkBAIC03OCw1MyArNzksNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBi
b29sIGlzQmFja0ZvcndhcmRMb2FkVHlwZShGcmFtZUxvYWRUeXBlKTsKIAotICAgIGNsYXNzIFBv
bGljeUNoZWNrZXIgOiBwdWJsaWMgTm9uY29weWFibGUgewotICAgIHB1YmxpYzoKLSAgICAgICAg
UG9saWN5Q2hlY2tlcihGcmFtZSopOwotCi0gICAgICAgIHZvaWQgY2hlY2tOYXZpZ2F0aW9uUG9s
aWN5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIERvY3VtZW50TG9hZGVyKiwgUGFzc1JlZlB0cjxG
b3JtU3RhdGU+LCBOYXZpZ2F0aW9uUG9saWN5RGVjaXNpb25GdW5jdGlvbiwgdm9pZCogYXJndW1l
bnQpOwotICAgICAgICB2b2lkIGNoZWNrTmF2aWdhdGlvblBvbGljeShjb25zdCBSZXNvdXJjZVJl
cXVlc3QmLCBOYXZpZ2F0aW9uUG9saWN5RGVjaXNpb25GdW5jdGlvbiwgdm9pZCogYXJndW1lbnQp
OwotICAgICAgICB2b2lkIGNoZWNrTmV3V2luZG93UG9saWN5KGNvbnN0IE5hdmlnYXRpb25BY3Rp
b24mLCBOZXdXaW5kb3dQb2xpY3lEZWNpc2lvbkZ1bmN0aW9uLCBjb25zdCBSZXNvdXJjZVJlcXVl
c3QmLCBQYXNzUmVmUHRyPEZvcm1TdGF0ZT4sIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCB2b2lk
KiBhcmd1bWVudCk7Ci0gICAgICAgIHZvaWQgY2hlY2tDb250ZW50UG9saWN5KGNvbnN0IFN0cmlu
ZyYgTUlNRVR5cGUsIENvbnRlbnRQb2xpY3lEZWNpc2lvbkZ1bmN0aW9uLCB2b2lkKiBhcmd1bWVu
dCk7Ci0KLSAgICAgICAgLy8gRklYTUU6IFRoZXNlIGFyZSBkaWZmZXJlbnQuICBUaGV5IGNvdWxk
IHVzZSBiZXR0ZXIgbmFtZXMuCi0gICAgICAgIHZvaWQgY2FuY2VsQ2hlY2soKTsKLSAgICAgICAg
dm9pZCBzdG9wQ2hlY2soKTsKLQotICAgICAgICB2b2lkIGNhbm5vdFNob3dNSU1FVHlwZShjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJik7Ci0KLSAgICAgICAgRnJhbWVMb2FkVHlwZSBsb2FkVHlwZSgp
IGNvbnN0IHsgcmV0dXJuIG1fbG9hZFR5cGU7IH0KLSAgICAgICAgdm9pZCBzZXRMb2FkVHlwZShG
cmFtZUxvYWRUeXBlIGxvYWRUeXBlKSB7IG1fbG9hZFR5cGUgPSBsb2FkVHlwZTsgfQotCi0gICAg
ICAgIGJvb2wgZGVsZWdhdGVJc0RlY2lkaW5nTmF2aWdhdGlvblBvbGljeSgpIGNvbnN0IHsgcmV0
dXJuIG1fZGVsZWdhdGVJc0RlY2lkaW5nTmF2aWdhdGlvblBvbGljeTsgfQotICAgICAgICBib29s
IGRlbGVnYXRlSXNIYW5kbGluZ1VuaW1wbGVtZW50YWJsZVBvbGljeSgpIGNvbnN0IHsgcmV0dXJu
IG1fZGVsZWdhdGVJc0hhbmRsaW5nVW5pbXBsZW1lbnRhYmxlUG9saWN5OyB9Ci0KLSAgICAgICAg
Ly8gRklYTUU6IFRoaXMgZnVuY3Rpb24gaXMgYSBjaGVhdC4gIEJhc2ljYWxseSwgdGhpcyBpcyBq
dXN0IGFuIGFzeW5jaHJvbm91YyBjYWxsYmFjawotICAgICAgICAvLyBmcm9tIHRoZSBGcmFtZUxv
YWRlckNsaWVudCwgYnV0IHRoaXMgY2FsbGJhY2sgdXNlcyB0aGUgcG9saWN5IHR5cGVzIGFuZCBz
byBoYXMgdG8KLSAgICAgICAgLy8gbGl2ZSBvbiB0aGlzIG9iamVjdC4gIEluIHRoZSBsb25nIHRl
cm0sIHdlIHNob3VsZCBjcmVhdGUgYSB0eXBlIGZvciBub24tcG9saWN5Ci0gICAgICAgIC8vIGNh
bGxiYWNrcyBmcm9tIHRoZSBGcmFtZUxvYWRlckNsaWVudCBhbmQgcmVtb3ZlIHRoaXMgdmVzdGln
ZS4gIEkganVzdCBkb24ndCBoYXZlCi0gICAgICAgIC8vIHRoZSBoZWFydCB0byBoYWNrIG9uIGFs
bCB0aGUgcGxhdGZvcm1zIHRvIG1ha2UgdGhhdCBoYXBwZW4gcmlnaHQgbm93LgotICAgICAgICB2
b2lkIGNvbnRpbnVlTG9hZEFmdGVyV2lsbFN1Ym1pdEZvcm0oUG9saWN5QWN0aW9uKTsKLQotICAg
IHByaXZhdGU6Ci0gICAgICAgIHZvaWQgY29udGludWVBZnRlck5hdmlnYXRpb25Qb2xpY3koUG9s
aWN5QWN0aW9uKTsKLSAgICAgICAgdm9pZCBjb250aW51ZUFmdGVyTmV3V2luZG93UG9saWN5KFBv
bGljeUFjdGlvbik7Ci0gICAgICAgIHZvaWQgY29udGludWVBZnRlckNvbnRlbnRQb2xpY3koUG9s
aWN5QWN0aW9uKTsKLQotICAgICAgICB2b2lkIGhhbmRsZVVuaW1wbGVtZW50YWJsZVBvbGljeShj
b25zdCBSZXNvdXJjZUVycm9yJik7Ci0KLSAgICAgICAgRnJhbWUqIG1fZnJhbWU7Ci0KLSAgICAg
ICAgYm9vbCBtX2RlbGVnYXRlSXNEZWNpZGluZ05hdmlnYXRpb25Qb2xpY3k7Ci0gICAgICAgIGJv
b2wgbV9kZWxlZ2F0ZUlzSGFuZGxpbmdVbmltcGxlbWVudGFibGVQb2xpY3k7Ci0KLSAgICAgICAg
Ly8gVGhpcyBpZGVudGlmaWVzIHRoZSB0eXBlIG9mIG5hdmlnYXRpb24gYWN0aW9uIHdoaWNoIHBy
b21wdGVkIHRoaXMgbG9hZC4gTm90ZSAKLSAgICAgICAgLy8gdGhhdCBXZWJLaXQgY29udmV5cyB0
aGlzIHZhbHVlIGFzIHRoZSBXZWJBY3Rpb25OYXZpZ2F0aW9uVHlwZUtleSB2YWx1ZQotICAgICAg
ICAvLyBvbiBuYXZpZ2F0aW9uIGFjdGlvbiBkZWxlZ2F0ZSBjYWxsYmFja3MuCi0gICAgICAgIEZy
YW1lTG9hZFR5cGUgbV9sb2FkVHlwZTsKLSAgICAgICAgUG9saWN5Q2hlY2sgbV9wb2xpY3lDaGVj
azsKLSAgICB9OwotCiAgICAgY2xhc3MgRnJhbWVMb2FkZXIgOiBwdWJsaWMgTm9uY29weWFibGUg
ewogICAgIHB1YmxpYzoKICAgICAgICAgRnJhbWVMb2FkZXIoRnJhbWUqLCBGcmFtZUxvYWRlckNs
aWVudCopOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9sb2FkZXIvUG9saWN5Q2FsbGJhY2suY3BwIGIv
V2ViQ29yZS9sb2FkZXIvUG9saWN5Q2FsbGJhY2suY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLjE0Nzk5Y2YKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2xvYWRlci9Q
b2xpY3lDYWxsYmFjay5jcHAKQEAgLTAsMCArMSwxMzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDYsIDIwMDcsIDIwMDgsIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDA4IE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lk
aWFyeSgtaWVzKQorICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5IFRvcmNoIE1vYmlsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuIChodHRwOi8vd3d3LnRvcmNobW9iaWxlLmNvbS8pCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLiAKKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLiAKKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVy
LCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICog
ICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4gCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQg
SVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAq
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9S
IElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
CisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlBvbGljeUNhbGxiYWNrLmgiCisKKyNpbmNsdWRl
ICJGb3JtU3RhdGUuaCIKKyNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIkZyYW1lTG9hZGVy
LmgiCisjaW5jbHVkZSAiSFRNTEZvcm1FbGVtZW50LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworUG9saWN5Q2FsbGJhY2s6OlBvbGljeUNhbGxiYWNrKCkKKyAgICA6IG1fbmF2aWdhdGlvbkZ1
bmN0aW9uKDApCisgICAgLCBtX25ld1dpbmRvd0Z1bmN0aW9uKDApCisgICAgLCBtX2NvbnRlbnRG
dW5jdGlvbigwKQoreworfQorCitQb2xpY3lDYWxsYmFjazo6flBvbGljeUNhbGxiYWNrKCkKK3sK
K30KKwordm9pZCBQb2xpY3lDYWxsYmFjazo6Y2xlYXIoKQoreworICAgIGNsZWFyUmVxdWVzdCgp
OworICAgIG1fbmF2aWdhdGlvbkZ1bmN0aW9uID0gMDsKKyAgICBtX25ld1dpbmRvd0Z1bmN0aW9u
ID0gMDsKKyAgICBtX2NvbnRlbnRGdW5jdGlvbiA9IDA7Cit9CisKK3ZvaWQgUG9saWN5Q2FsbGJh
Y2s6OnNldChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFBhc3NSZWZQdHI8Rm9ybVN0
YXRlPiBmb3JtU3RhdGUsCisgICAgTmF2aWdhdGlvblBvbGljeURlY2lzaW9uRnVuY3Rpb24gZnVu
Y3Rpb24sIHZvaWQqIGFyZ3VtZW50KQoreworICAgIG1fcmVxdWVzdCA9IHJlcXVlc3Q7CisgICAg
bV9mb3JtU3RhdGUgPSBmb3JtU3RhdGU7CisgICAgbV9mcmFtZU5hbWUgPSBTdHJpbmcoKTsKKwor
ICAgIG1fbmF2aWdhdGlvbkZ1bmN0aW9uID0gZnVuY3Rpb247CisgICAgbV9uZXdXaW5kb3dGdW5j
dGlvbiA9IDA7CisgICAgbV9jb250ZW50RnVuY3Rpb24gPSAwOworICAgIG1fYXJndW1lbnQgPSBh
cmd1bWVudDsKK30KKwordm9pZCBQb2xpY3lDYWxsYmFjazo6c2V0KGNvbnN0IFJlc291cmNlUmVx
dWVzdCYgcmVxdWVzdCwgUGFzc1JlZlB0cjxGb3JtU3RhdGU+IGZvcm1TdGF0ZSwKKyAgICBjb25z
dCBTdHJpbmcmIGZyYW1lTmFtZSwgTmV3V2luZG93UG9saWN5RGVjaXNpb25GdW5jdGlvbiBmdW5j
dGlvbiwgdm9pZCogYXJndW1lbnQpCit7CisgICAgbV9yZXF1ZXN0ID0gcmVxdWVzdDsKKyAgICBt
X2Zvcm1TdGF0ZSA9IGZvcm1TdGF0ZTsKKyAgICBtX2ZyYW1lTmFtZSA9IGZyYW1lTmFtZTsKKwor
ICAgIG1fbmF2aWdhdGlvbkZ1bmN0aW9uID0gMDsKKyAgICBtX25ld1dpbmRvd0Z1bmN0aW9uID0g
ZnVuY3Rpb247CisgICAgbV9jb250ZW50RnVuY3Rpb24gPSAwOworICAgIG1fYXJndW1lbnQgPSBh
cmd1bWVudDsKK30KKwordm9pZCBQb2xpY3lDYWxsYmFjazo6c2V0KENvbnRlbnRQb2xpY3lEZWNp
c2lvbkZ1bmN0aW9uIGZ1bmN0aW9uLCB2b2lkKiBhcmd1bWVudCkKK3sKKyAgICBtX3JlcXVlc3Qg
PSBSZXNvdXJjZVJlcXVlc3QoKTsKKyAgICBtX2Zvcm1TdGF0ZSA9IDA7CisgICAgbV9mcmFtZU5h
bWUgPSBTdHJpbmcoKTsKKworICAgIG1fbmF2aWdhdGlvbkZ1bmN0aW9uID0gMDsKKyAgICBtX25l
d1dpbmRvd0Z1bmN0aW9uID0gMDsKKyAgICBtX2NvbnRlbnRGdW5jdGlvbiA9IGZ1bmN0aW9uOwor
ICAgIG1fYXJndW1lbnQgPSBhcmd1bWVudDsKK30KKwordm9pZCBQb2xpY3lDYWxsYmFjazo6Y2Fs
bChib29sIHNob3VsZENvbnRpbnVlKQoreworICAgIGlmIChtX25hdmlnYXRpb25GdW5jdGlvbikK
KyAgICAgICAgbV9uYXZpZ2F0aW9uRnVuY3Rpb24obV9hcmd1bWVudCwgbV9yZXF1ZXN0LCBtX2Zv
cm1TdGF0ZS5nZXQoKSwgc2hvdWxkQ29udGludWUpOworICAgIGlmIChtX25ld1dpbmRvd0Z1bmN0
aW9uKQorICAgICAgICBtX25ld1dpbmRvd0Z1bmN0aW9uKG1fYXJndW1lbnQsIG1fcmVxdWVzdCwg
bV9mb3JtU3RhdGUuZ2V0KCksIG1fZnJhbWVOYW1lLCBzaG91bGRDb250aW51ZSk7CisgICAgQVNT
RVJUKCFtX2NvbnRlbnRGdW5jdGlvbik7Cit9CisKK3ZvaWQgUG9saWN5Q2FsbGJhY2s6OmNhbGwo
UG9saWN5QWN0aW9uIGFjdGlvbikKK3sKKyAgICBBU1NFUlQoIW1fbmF2aWdhdGlvbkZ1bmN0aW9u
KTsKKyAgICBBU1NFUlQoIW1fbmV3V2luZG93RnVuY3Rpb24pOworICAgIEFTU0VSVChtX2NvbnRl
bnRGdW5jdGlvbik7CisgICAgbV9jb250ZW50RnVuY3Rpb24obV9hcmd1bWVudCwgYWN0aW9uKTsK
K30KKwordm9pZCBQb2xpY3lDYWxsYmFjazo6Y2xlYXJSZXF1ZXN0KCkKK3sKKyAgICBtX3JlcXVl
c3QgPSBSZXNvdXJjZVJlcXVlc3QoKTsKKyAgICBtX2Zvcm1TdGF0ZSA9IDA7CisgICAgbV9mcmFt
ZU5hbWUgPSBTdHJpbmcoKTsKK30KKwordm9pZCBQb2xpY3lDYWxsYmFjazo6Y2FuY2VsKCkKK3sK
KyAgICBjbGVhclJlcXVlc3QoKTsKKyAgICBpZiAobV9uYXZpZ2F0aW9uRnVuY3Rpb24pCisgICAg
ICAgIG1fbmF2aWdhdGlvbkZ1bmN0aW9uKG1fYXJndW1lbnQsIG1fcmVxdWVzdCwgbV9mb3JtU3Rh
dGUuZ2V0KCksIGZhbHNlKTsKKyAgICBpZiAobV9uZXdXaW5kb3dGdW5jdGlvbikKKyAgICAgICAg
bV9uZXdXaW5kb3dGdW5jdGlvbihtX2FyZ3VtZW50LCBtX3JlcXVlc3QsIG1fZm9ybVN0YXRlLmdl
dCgpLCBtX2ZyYW1lTmFtZSwgZmFsc2UpOworICAgIGlmIChtX2NvbnRlbnRGdW5jdGlvbikKKyAg
ICAgICAgbV9jb250ZW50RnVuY3Rpb24obV9hcmd1bWVudCwgUG9saWN5SWdub3JlKTsKK30KKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9sb2FkZXIvUG9saWN5
Q2FsbGJhY2suaCBiL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNhbGxiYWNrLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmFhN2M3YwotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNv
cmUvbG9hZGVyL1BvbGljeUNhbGxiYWNrLmgKQEAgLTAsMCArMSw4MCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDkgVG9yY2ggTW9iaWxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4gKGh0dHA6Ly93d3cudG9yY2htb2JpbGUuY29tLykKKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuIAorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uIAorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIElu
Yy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAg
ZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLiAKKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMg
Q09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRT
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAq
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVm
IFBvbGljeUNhbGxiYWNrX2gKKyNkZWZpbmUgUG9saWN5Q2FsbGJhY2tfaAorCisjaW5jbHVkZSAi
RnJhbWVMb2FkZXJUeXBlcy5oIgorI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisjaW5jbHVk
ZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKKyAgICBjbGFzcyBGb3JtU3RhdGU7CisKKyAgICB0eXBlZGVmIHZvaWQg
KCpOYXZpZ2F0aW9uUG9saWN5RGVjaXNpb25GdW5jdGlvbikodm9pZCogYXJndW1lbnQsCisgICAg
ICAgIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFBhc3NSZWZQdHI8Rm9ybVN0YXRlPiwgYm9vbCBz
aG91bGRDb250aW51ZSk7CisgICAgdHlwZWRlZiB2b2lkICgqTmV3V2luZG93UG9saWN5RGVjaXNp
b25GdW5jdGlvbikodm9pZCogYXJndW1lbnQsCisgICAgICAgIGNvbnN0IFJlc291cmNlUmVxdWVz
dCYsIFBhc3NSZWZQdHI8Rm9ybVN0YXRlPiwgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIGJvb2wg
c2hvdWxkQ29udGludWUpOworICAgIHR5cGVkZWYgdm9pZCAoKkNvbnRlbnRQb2xpY3lEZWNpc2lv
bkZ1bmN0aW9uKSh2b2lkKiBhcmd1bWVudCwgUG9saWN5QWN0aW9uKTsKKworICAgIGNsYXNzIFBv
bGljeUNhbGxiYWNrIHsKKyAgICBwdWJsaWM6CisgICAgICAgIFBvbGljeUNhbGxiYWNrKCk7Cisg
ICAgICAgIH5Qb2xpY3lDYWxsYmFjaygpOworCisgICAgICAgIHZvaWQgY2xlYXIoKTsKKyAgICAg
ICAgdm9pZCBzZXQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgUGFzc1JlZlB0cjxGb3JtU3RhdGU+
LAorICAgICAgICAgICAgTmF2aWdhdGlvblBvbGljeURlY2lzaW9uRnVuY3Rpb24sIHZvaWQqIGFy
Z3VtZW50KTsKKyAgICAgICAgdm9pZCBzZXQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgUGFzc1Jl
ZlB0cjxGb3JtU3RhdGU+LCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwKKyAgICAgICAgICAgIE5l
d1dpbmRvd1BvbGljeURlY2lzaW9uRnVuY3Rpb24sIHZvaWQqIGFyZ3VtZW50KTsKKyAgICAgICAg
dm9pZCBzZXQoQ29udGVudFBvbGljeURlY2lzaW9uRnVuY3Rpb24sIHZvaWQqIGFyZ3VtZW50KTsK
KworICAgICAgICBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QoKSBjb25zdCB7IHJldHVy
biBtX3JlcXVlc3Q7IH0KKyAgICAgICAgdm9pZCBjbGVhclJlcXVlc3QoKTsKKworICAgICAgICB2
b2lkIGNhbGwoYm9vbCBzaG91bGRDb250aW51ZSk7CisgICAgICAgIHZvaWQgY2FsbChQb2xpY3lB
Y3Rpb24pOworICAgICAgICB2b2lkIGNhbmNlbCgpOworCisgICAgcHJpdmF0ZToKKyAgICAgICAg
UmVzb3VyY2VSZXF1ZXN0IG1fcmVxdWVzdDsKKyAgICAgICAgUmVmUHRyPEZvcm1TdGF0ZT4gbV9m
b3JtU3RhdGU7CisgICAgICAgIFN0cmluZyBtX2ZyYW1lTmFtZTsKKworICAgICAgICBOYXZpZ2F0
aW9uUG9saWN5RGVjaXNpb25GdW5jdGlvbiBtX25hdmlnYXRpb25GdW5jdGlvbjsKKyAgICAgICAg
TmV3V2luZG93UG9saWN5RGVjaXNpb25GdW5jdGlvbiBtX25ld1dpbmRvd0Z1bmN0aW9uOworICAg
ICAgICBDb250ZW50UG9saWN5RGVjaXNpb25GdW5jdGlvbiBtX2NvbnRlbnRGdW5jdGlvbjsKKyAg
ICAgICAgdm9pZCogbV9hcmd1bWVudDsKKyAgICB9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZiAvLyBQb2xpY3lDYWxsYmFja19oCmRpZmYgLS1naXQgYS9XZWJDb3JlL2xvYWRl
ci9Qb2xpY3lDaGVjay5jcHAgYi9XZWJDb3JlL2xvYWRlci9Qb2xpY3lDaGVjay5jcHAKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg4YTM4ZmEuLjAwMDAwMDAKLS0tIGEvV2ViQ29yZS9s
b2FkZXIvUG9saWN5Q2hlY2suY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTMzICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDA4IE5va2lhIENvcnBvcmF0aW9u
IGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQotICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5
IFRvcmNoIE1vYmlsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIChodHRwOi8vd3d3LnRvcmNo
bW9iaWxlLmNvbS8pCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLiAKLSAqIDMuICBOZWl0aGVyIHRoZSBuYW1l
IG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCi0gKiAg
ICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZAotICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4gCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAq
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlBvbGljeUNoZWNr
LmgiCi0KLSNpbmNsdWRlICJGb3JtU3RhdGUuaCIKLSNpbmNsdWRlICJGcmFtZS5oIgotI2luY2x1
ZGUgIkZyYW1lTG9hZGVyLmgiCi0jaW5jbHVkZSAiSFRNTEZvcm1FbGVtZW50LmgiCi0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLQotUG9saWN5Q2hlY2s6OlBvbGljeUNoZWNrKCkKLSAgICA6IG1fbmF2
aWdhdGlvbkZ1bmN0aW9uKDApCi0gICAgLCBtX25ld1dpbmRvd0Z1bmN0aW9uKDApCi0gICAgLCBt
X2NvbnRlbnRGdW5jdGlvbigwKQotewotfQotCi1Qb2xpY3lDaGVjazo6flBvbGljeUNoZWNrKCkK
LXsKLX0KLQotdm9pZCBQb2xpY3lDaGVjazo6Y2xlYXIoKQotewotICAgIGNsZWFyUmVxdWVzdCgp
OwotICAgIG1fbmF2aWdhdGlvbkZ1bmN0aW9uID0gMDsKLSAgICBtX25ld1dpbmRvd0Z1bmN0aW9u
ID0gMDsKLSAgICBtX2NvbnRlbnRGdW5jdGlvbiA9IDA7Ci19Ci0KLXZvaWQgUG9saWN5Q2hlY2s6
OnNldChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFBhc3NSZWZQdHI8Rm9ybVN0YXRl
PiBmb3JtU3RhdGUsCi0gICAgTmF2aWdhdGlvblBvbGljeURlY2lzaW9uRnVuY3Rpb24gZnVuY3Rp
b24sIHZvaWQqIGFyZ3VtZW50KQotewotICAgIG1fcmVxdWVzdCA9IHJlcXVlc3Q7Ci0gICAgbV9m
b3JtU3RhdGUgPSBmb3JtU3RhdGU7Ci0gICAgbV9mcmFtZU5hbWUgPSBTdHJpbmcoKTsKLQotICAg
IG1fbmF2aWdhdGlvbkZ1bmN0aW9uID0gZnVuY3Rpb247Ci0gICAgbV9uZXdXaW5kb3dGdW5jdGlv
biA9IDA7Ci0gICAgbV9jb250ZW50RnVuY3Rpb24gPSAwOwotICAgIG1fYXJndW1lbnQgPSBhcmd1
bWVudDsKLX0KLQotdm9pZCBQb2xpY3lDaGVjazo6c2V0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYg
cmVxdWVzdCwgUGFzc1JlZlB0cjxGb3JtU3RhdGU+IGZvcm1TdGF0ZSwKLSAgICBjb25zdCBTdHJp
bmcmIGZyYW1lTmFtZSwgTmV3V2luZG93UG9saWN5RGVjaXNpb25GdW5jdGlvbiBmdW5jdGlvbiwg
dm9pZCogYXJndW1lbnQpCi17Ci0gICAgbV9yZXF1ZXN0ID0gcmVxdWVzdDsKLSAgICBtX2Zvcm1T
dGF0ZSA9IGZvcm1TdGF0ZTsKLSAgICBtX2ZyYW1lTmFtZSA9IGZyYW1lTmFtZTsKLQotICAgIG1f
bmF2aWdhdGlvbkZ1bmN0aW9uID0gMDsKLSAgICBtX25ld1dpbmRvd0Z1bmN0aW9uID0gZnVuY3Rp
b247Ci0gICAgbV9jb250ZW50RnVuY3Rpb24gPSAwOwotICAgIG1fYXJndW1lbnQgPSBhcmd1bWVu
dDsKLX0KLQotdm9pZCBQb2xpY3lDaGVjazo6c2V0KENvbnRlbnRQb2xpY3lEZWNpc2lvbkZ1bmN0
aW9uIGZ1bmN0aW9uLCB2b2lkKiBhcmd1bWVudCkKLXsKLSAgICBtX3JlcXVlc3QgPSBSZXNvdXJj
ZVJlcXVlc3QoKTsKLSAgICBtX2Zvcm1TdGF0ZSA9IDA7Ci0gICAgbV9mcmFtZU5hbWUgPSBTdHJp
bmcoKTsKLQotICAgIG1fbmF2aWdhdGlvbkZ1bmN0aW9uID0gMDsKLSAgICBtX25ld1dpbmRvd0Z1
bmN0aW9uID0gMDsKLSAgICBtX2NvbnRlbnRGdW5jdGlvbiA9IGZ1bmN0aW9uOwotICAgIG1fYXJn
dW1lbnQgPSBhcmd1bWVudDsKLX0KLQotdm9pZCBQb2xpY3lDaGVjazo6Y2FsbChib29sIHNob3Vs
ZENvbnRpbnVlKQotewotICAgIGlmIChtX25hdmlnYXRpb25GdW5jdGlvbikKLSAgICAgICAgbV9u
YXZpZ2F0aW9uRnVuY3Rpb24obV9hcmd1bWVudCwgbV9yZXF1ZXN0LCBtX2Zvcm1TdGF0ZS5nZXQo
KSwgc2hvdWxkQ29udGludWUpOwotICAgIGlmIChtX25ld1dpbmRvd0Z1bmN0aW9uKQotICAgICAg
ICBtX25ld1dpbmRvd0Z1bmN0aW9uKG1fYXJndW1lbnQsIG1fcmVxdWVzdCwgbV9mb3JtU3RhdGUu
Z2V0KCksIG1fZnJhbWVOYW1lLCBzaG91bGRDb250aW51ZSk7Ci0gICAgQVNTRVJUKCFtX2NvbnRl
bnRGdW5jdGlvbik7Ci19Ci0KLXZvaWQgUG9saWN5Q2hlY2s6OmNhbGwoUG9saWN5QWN0aW9uIGFj
dGlvbikKLXsKLSAgICBBU1NFUlQoIW1fbmF2aWdhdGlvbkZ1bmN0aW9uKTsKLSAgICBBU1NFUlQo
IW1fbmV3V2luZG93RnVuY3Rpb24pOwotICAgIEFTU0VSVChtX2NvbnRlbnRGdW5jdGlvbik7Ci0g
ICAgbV9jb250ZW50RnVuY3Rpb24obV9hcmd1bWVudCwgYWN0aW9uKTsKLX0KLQotdm9pZCBQb2xp
Y3lDaGVjazo6Y2xlYXJSZXF1ZXN0KCkKLXsKLSAgICBtX3JlcXVlc3QgPSBSZXNvdXJjZVJlcXVl
c3QoKTsKLSAgICBtX2Zvcm1TdGF0ZSA9IDA7Ci0gICAgbV9mcmFtZU5hbWUgPSBTdHJpbmcoKTsK
LX0KLQotdm9pZCBQb2xpY3lDaGVjazo6Y2FuY2VsKCkKLXsKLSAgICBjbGVhclJlcXVlc3QoKTsK
LSAgICBpZiAobV9uYXZpZ2F0aW9uRnVuY3Rpb24pCi0gICAgICAgIG1fbmF2aWdhdGlvbkZ1bmN0
aW9uKG1fYXJndW1lbnQsIG1fcmVxdWVzdCwgbV9mb3JtU3RhdGUuZ2V0KCksIGZhbHNlKTsKLSAg
ICBpZiAobV9uZXdXaW5kb3dGdW5jdGlvbikKLSAgICAgICAgbV9uZXdXaW5kb3dGdW5jdGlvbiht
X2FyZ3VtZW50LCBtX3JlcXVlc3QsIG1fZm9ybVN0YXRlLmdldCgpLCBtX2ZyYW1lTmFtZSwgZmFs
c2UpOwotICAgIGlmIChtX2NvbnRlbnRGdW5jdGlvbikKLSAgICAgICAgbV9jb250ZW50RnVuY3Rp
b24obV9hcmd1bWVudCwgUG9saWN5SWdub3JlKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9sb2FkZXIvUG9saWN5Q2hlY2suaCBiL1dlYkNvcmUvbG9h
ZGVyL1BvbGljeUNoZWNrLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc2MzVkNTAu
LjAwMDAwMDAKLS0tIGEvV2ViQ29yZS9sb2FkZXIvUG9saWN5Q2hlY2suaAorKysgL2Rldi9udWxs
CkBAIC0xLDgwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMDgs
IDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAy
MDA4LCAyMDA5IFRvcmNoIE1vYmlsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIChodHRwOi8v
d3d3LnRvcmNobW9iaWxlLmNvbS8pCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKLSAqIDIuICBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLiAKLSAqIDMuICBOZWl0aGVy
IHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVz
IG9mCi0gKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZAotICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4gCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBB
TlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBQb2xpY3lDaGVja19oCi0jZGVmaW5lIFBv
bGljeUNoZWNrX2gKLQotI2luY2x1ZGUgIkZyYW1lTG9hZGVyVHlwZXMuaCIKLSNpbmNsdWRlICJQ
bGF0Zm9ybVN0cmluZy5oIgotI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgotI2luY2x1ZGUg
PHd0Zi9SZWZQdHIuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi0gICAgY2xhc3MgRm9ybVN0
YXRlOwotCi0gICAgdHlwZWRlZiB2b2lkICgqTmF2aWdhdGlvblBvbGljeURlY2lzaW9uRnVuY3Rp
b24pKHZvaWQqIGFyZ3VtZW50LAotICAgICAgICBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBQYXNz
UmVmUHRyPEZvcm1TdGF0ZT4sIGJvb2wgc2hvdWxkQ29udGludWUpOwotICAgIHR5cGVkZWYgdm9p
ZCAoKk5ld1dpbmRvd1BvbGljeURlY2lzaW9uRnVuY3Rpb24pKHZvaWQqIGFyZ3VtZW50LAotICAg
ICAgICBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBQYXNzUmVmUHRyPEZvcm1TdGF0ZT4sIGNvbnN0
IFN0cmluZyYgZnJhbWVOYW1lLCBib29sIHNob3VsZENvbnRpbnVlKTsKLSAgICB0eXBlZGVmIHZv
aWQgKCpDb250ZW50UG9saWN5RGVjaXNpb25GdW5jdGlvbikodm9pZCogYXJndW1lbnQsIFBvbGlj
eUFjdGlvbik7Ci0KLSAgICBjbGFzcyBQb2xpY3lDaGVjayB7Ci0gICAgcHVibGljOgotICAgICAg
ICBQb2xpY3lDaGVjaygpOwotICAgICAgICB+UG9saWN5Q2hlY2soKTsKLQotICAgICAgICB2b2lk
IGNsZWFyKCk7Ci0gICAgICAgIHZvaWQgc2V0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFBhc3NS
ZWZQdHI8Rm9ybVN0YXRlPiwKLSAgICAgICAgICAgIE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbkZ1
bmN0aW9uLCB2b2lkKiBhcmd1bWVudCk7Ci0gICAgICAgIHZvaWQgc2V0KGNvbnN0IFJlc291cmNl
UmVxdWVzdCYsIFBhc3NSZWZQdHI8Rm9ybVN0YXRlPiwgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUs
Ci0gICAgICAgICAgICBOZXdXaW5kb3dQb2xpY3lEZWNpc2lvbkZ1bmN0aW9uLCB2b2lkKiBhcmd1
bWVudCk7Ci0gICAgICAgIHZvaWQgc2V0KENvbnRlbnRQb2xpY3lEZWNpc2lvbkZ1bmN0aW9uLCB2
b2lkKiBhcmd1bWVudCk7Ci0KLSAgICAgICAgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
KCkgY29uc3QgeyByZXR1cm4gbV9yZXF1ZXN0OyB9Ci0gICAgICAgIHZvaWQgY2xlYXJSZXF1ZXN0
KCk7Ci0KLSAgICAgICAgdm9pZCBjYWxsKGJvb2wgc2hvdWxkQ29udGludWUpOwotICAgICAgICB2
b2lkIGNhbGwoUG9saWN5QWN0aW9uKTsKLSAgICAgICAgdm9pZCBjYW5jZWwoKTsKLQotICAgIHBy
aXZhdGU6Ci0gICAgICAgIFJlc291cmNlUmVxdWVzdCBtX3JlcXVlc3Q7Ci0gICAgICAgIFJlZlB0
cjxGb3JtU3RhdGU+IG1fZm9ybVN0YXRlOwotICAgICAgICBTdHJpbmcgbV9mcmFtZU5hbWU7Ci0K
LSAgICAgICAgTmF2aWdhdGlvblBvbGljeURlY2lzaW9uRnVuY3Rpb24gbV9uYXZpZ2F0aW9uRnVu
Y3Rpb247Ci0gICAgICAgIE5ld1dpbmRvd1BvbGljeURlY2lzaW9uRnVuY3Rpb24gbV9uZXdXaW5k
b3dGdW5jdGlvbjsKLSAgICAgICAgQ29udGVudFBvbGljeURlY2lzaW9uRnVuY3Rpb24gbV9jb250
ZW50RnVuY3Rpb247Ci0gICAgICAgIHZvaWQqIG1fYXJndW1lbnQ7Ci0gICAgfTsKLQotfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gUG9saWN5Q2hlY2tfaA==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>40840</attachid>
            <date>2009-10-07 20:53:34 -0700</date>
            <delta_ts>2009-10-07 21:39:05 -0700</delta_ts>
            <desc>Patch v1</desc>
            <filename>bug-30193-20091007205333.patch</filename>
            <type>text/plain</type>
            <size>37751</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MTYyM2U0ZC4uYzQ5Yjc3ZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMiBAQAorMjAwOS0xMC0wNiAgQWRhbSBCYXJ0aCAg
PGFiYXJ0aEB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIE1vdmUgUG9saWN5Q2hlY2tlciB0byBpdCdzIG93biBmaWxlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMDE5MworCisgICAgICAg
IFRoaXMgaXMganVzdCBtb3ZpbmcgY29kZSBhcm91bmQgYW5kIHJlLW5hbWluZyB0aGluZ3MuCisK
KyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAg
ICAgICogV2ViQ29yZS5wcm86CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3By
b2o6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAg
ICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVy
Lmg6CisgICAgICAgICogbG9hZGVyL1BvbGljeUNhbGxiYWNrLmNwcDogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlOjpQb2xpY3lDYWxsYmFjazo6UG9saWN5Q2FsbGJhY2spOgorICAgICAgICAoV2Vi
Q29yZTo6UG9saWN5Q2FsbGJhY2s6On5Qb2xpY3lDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3Jl
OjpQb2xpY3lDYWxsYmFjazo6Y2xlYXIpOgorICAgICAgICAoV2ViQ29yZTo6UG9saWN5Q2FsbGJh
Y2s6OnNldCk6CisgICAgICAgIChXZWJDb3JlOjpQb2xpY3lDYWxsYmFjazo6Y2FsbCk6CisgICAg
ICAgIChXZWJDb3JlOjpQb2xpY3lDYWxsYmFjazo6Y2xlYXJSZXF1ZXN0KToKKyAgICAgICAgKFdl
YkNvcmU6OlBvbGljeUNhbGxiYWNrOjpjYW5jZWwpOgorICAgICAgICAqIGxvYWRlci9Qb2xpY3lD
YWxsYmFjay5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBvbGljeUNhbGxiYWNrOjpyZXF1
ZXN0KToKKyAgICAgICAgKiBsb2FkZXIvUG9saWN5Q2hlY2suY3BwOiBSZW1vdmVkLgorICAgICAg
ICAqIGxvYWRlci9Qb2xpY3lDaGVjay5oOiBSZW1vdmVkLgorCiAyMDA5LTEwLTA3ICBBZGFtIEJh
cnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRs
ZXIuCmRpZmYgLS1naXQgYS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtIGIvV2ViQ29yZS9HTlVtYWtl
ZmlsZS5hbQppbmRleCAzNzYyMGFmLi44YTZlYmYyIDEwMDY0NAotLS0gYS9XZWJDb3JlL0dOVW1h
a2VmaWxlLmFtCisrKyBiL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KQEAgLTEyNDUsOCArMTI0NSwx
MCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVdlYkNvcmUvbG9hZGVyL1BsYWNlaG9sZGVyRG9j
dW1lbnQuaCBcCiAJV2ViQ29yZS9sb2FkZXIvUGx1Z2luRG9jdW1lbnQuY3BwIFwKIAlXZWJDb3Jl
L2xvYWRlci9QbHVnaW5Eb2N1bWVudC5oIFwKLQlXZWJDb3JlL2xvYWRlci9Qb2xpY3lDaGVjay5j
cHAgXAotCVdlYkNvcmUvbG9hZGVyL1BvbGljeUNoZWNrLmggXAorCVdlYkNvcmUvbG9hZGVyL1Bv
bGljeUNhbGxiYWNrLmNwcCBcCisJV2ViQ29yZS9sb2FkZXIvUG9saWN5Q2FsbGJhY2suaCBcCisJ
V2ViQ29yZS9sb2FkZXIvUG9saWN5Q2hlY2tlci5jcHAgXAorCVdlYkNvcmUvbG9hZGVyL1BvbGlj
eUNoZWNrZXIuaCBcCiAJV2ViQ29yZS9sb2FkZXIvUHJvZ3Jlc3NUcmFja2VyLmNwcCBcCiAJV2Vi
Q29yZS9sb2FkZXIvUHJvZ3Jlc3NUcmFja2VyLmggXAogCVdlYkNvcmUvbG9hZGVyL1JlZGlyZWN0
U2NoZWR1bGVyLmNwcCBcCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1dlYkNv
cmUvV2ViQ29yZS5neXBpCmluZGV4IDA0Y2NiMjkuLmE4Y2ZlYjkgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvV2ViQ29yZS5neXBpCisrKyBiL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0xNjMxLDggKzE2
MzEsMTAgQEAKICAgICAgICAgICAgICdsb2FkZXIvUGxhY2Vob2xkZXJEb2N1bWVudC5oJywKICAg
ICAgICAgICAgICdsb2FkZXIvUGx1Z2luRG9jdW1lbnQuY3BwJywKICAgICAgICAgICAgICdsb2Fk
ZXIvUGx1Z2luRG9jdW1lbnQuaCcsCi0gICAgICAgICAgICAnbG9hZGVyL1BvbGljeUNoZWNrLmNw
cCcsCi0gICAgICAgICAgICAnbG9hZGVyL1BvbGljeUNoZWNrLmgnLAorICAgICAgICAgICAgJ2xv
YWRlci9Qb2xpY3lDYWxsYmFjay5jcHAnLAorICAgICAgICAgICAgJ2xvYWRlci9Qb2xpY3lDYWxs
YmFjay5oJywKKyAgICAgICAgICAgICdsb2FkZXIvUG9saWN5Q2hlY2tlci5jcHAnLAorICAgICAg
ICAgICAgJ2xvYWRlci9Qb2xpY3lDaGVja2VyLmgnLAogICAgICAgICAgICAgJ2xvYWRlci9Qcm9n
cmVzc1RyYWNrZXIuY3BwJywKICAgICAgICAgICAgICdsb2FkZXIvUHJvZ3Jlc3NUcmFja2VyLmgn
LAogICAgICAgICAgICAgJ2xvYWRlci9SZWRpcmVjdFNjaGVkdWxlci5jcHAnLApkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9XZWJDb3JlLnBybyBiL1dlYkNvcmUvV2ViQ29yZS5wcm8KaW5kZXggOTY3MThm
Yi4uMjRjZTBjOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnBybworKysgYi9XZWJDb3Jl
L1dlYkNvcmUucHJvCkBAIC0xMTEzLDcgKzExMTMsOCBAQCBTT1VSQ0VTICs9IFwKICAgICBsb2Fk
ZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuY3BwIFwKICAgICBsb2FkZXIvUGxhY2Vob2xk
ZXJEb2N1bWVudC5jcHAgXAogICAgIGxvYWRlci9QbHVnaW5Eb2N1bWVudC5jcHAgXAotICAgIGxv
YWRlci9Qb2xpY3lDaGVjay5jcHAgXAorICAgIGxvYWRlci9Qb2xpY3lDYWxsYmFjay5jcHAgXAor
ICAgIGxvYWRlci9Qb2xpY3lDaGVja2VyLmNwcCBcCiAgICAgbG9hZGVyL1Byb2dyZXNzVHJhY2tl
ci5jcHAgXAogICAgIGxvYWRlci9SZWRpcmVjdFNjaGVkdWxlci5jcHAgXAogICAgIGxvYWRlci9S
ZXF1ZXN0LmNwcCBcCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUu
dmNwcm9qIGIvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCA4M2Uz
YTIxLi45YTllM2VjIDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUu
dmNwcm9qCisrKyBiL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAgLTE3
NDg5LDExICsxNzQ4OSwxOSBAQAogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJ
UmVsYXRpdmVQYXRoPSIuLlxsb2FkZXJcUG9saWN5Q2hlY2suY3BwIg0KKwkJCQlSZWxhdGl2ZVBh
dGg9Ii4uXGxvYWRlclxQb2xpY3lDYWxsYmFjay5jcHAiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQog
CQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxsb2FkZXJcUG9saWN5Q2hlY2suaCINCisJ
CQkJUmVsYXRpdmVQYXRoPSIuLlxsb2FkZXJcUG9saWN5Q2FsbGJhY2suaCINCisJCQkJPg0KKwkJ
CTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGxvYWRlclxQb2xpY3lD
aGVja2VyLmNwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2
ZVBhdGg9Ii4uXGxvYWRlclxQb2xpY3lDaGVja2VyLmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQog
CQkJPEZpbGUNCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvaiBiL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4
IDAxNmE1ZWYuLjE2YTFlNDIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCisrKyBiL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCkBAIC0yMzQ1LDEwICsyMzQ1LDEyIEBACiAJCTkzRjlCN0EwMEJBNjAzMjYwMDg1NDA2
NCAvKiBKU0NEQVRBU2VjdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5M0Y5Qjc5RTBCQTYwMzI2MDA4NTQwNjQgLyogSlNDREFUQVNlY3Rpb24u
Y3BwICovOyB9OwogCQk5M0Y5QjdBMTBCQTYwMzI2MDA4NTQwNjQgLyogSlNDREFUQVNlY3Rpb24u
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRjlCNzlG
MEJBNjAzMjYwMDg1NDA2NCAvKiBKU0NEQVRBU2VjdGlvbi5oICovOyB9OwogCQk5M0ZEQUZDQTBC
MTEzMDc0MDBFMjc0NkYgLyogRWRpdG9ySW5zZXJ0QWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0ZEQUZDOTBCMTEzMDc0MDBFMjc0NkYgLyog
RWRpdG9ySW5zZXJ0QWN0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJOTcwNTk5NzcxMDdEOTc1MjAwQTUwQTdDIC8qIFBvbGljeUNhbGxiYWNr
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3MDU5
OTczMTA3RDk3NTIwMEE1MEE3QyAvKiBQb2xpY3lDYWxsYmFjay5jcHAgKi87IH07CisJCTk3MDU5
OTc4MTA3RDk3NTIwMEE1MEE3QyAvKiBQb2xpY3lDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTcwNTk5NzQxMDdEOTc1MjAwQTUwQTdDIC8q
IFBvbGljeUNhbGxiYWNrLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJOTcwNTk5NzkxMDdEOTc1MjAwQTUwQTdDIC8qIFBvbGljeUNoZWNrZXIuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTcwNTk5NzUx
MDdEOTc1MjAwQTUwQTdDIC8qIFBvbGljeUNoZWNrZXIuY3BwICovOyB9OworCQk5NzA1OTk3QTEw
N0Q5NzUyMDBBNTBBN0MgLyogUG9saWN5Q2hlY2tlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTcwNTk5NzYxMDdEOTc1MjAwQTUwQTdDIC8qIFBvbGlj
eUNoZWNrZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk5NzlGNDNEMzEwNzVFNDRBMDAwMEY4M0IgLyogUmVkaXJlY3RTY2hlZHVsZXIuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTc5RjQzRDExMDc1
RTQ0QTAwMDBGODNCIC8qIFJlZGlyZWN0U2NoZWR1bGVyLmNwcCAqLzsgfTsKIAkJOTc5RjQzRDQx
MDc1RTQ0QTAwMDBGODNCIC8qIFJlZGlyZWN0U2NoZWR1bGVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NzlGNDNEMjEwNzVFNDRBMDAwMEY4M0IgLyog
UmVkaXJlY3RTY2hlZHVsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwotCQk5N0JDNjNCODEwNzZDOTdGMDAyQzIxNDIgLyogUG9saWN5Q2hlY2suY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTdCQzYzQjYx
MDc2Qzk3RjAwMkMyMTQyIC8qIFBvbGljeUNoZWNrLmNwcCAqLzsgfTsKLQkJOTdCQzYzQjkxMDc2
Qzk3RjAwMkMyMTQyIC8qIFBvbGljeUNoZWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5N0JDNjNCNzEwNzZDOTdGMDAyQzIxNDIgLyogUG9saWN5Q2hl
Y2suaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5
N0RENEQ4NjBGREY0RDZFMDBFQ0Y5QTQgLyogWFNTQXVkaXRvci5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5N0RENEQ4NDBGREY0RDZEMDBFQ0Y5QTQg
LyogWFNTQXVkaXRvci5jcHAgKi87IH07CiAJCTk3REQ0RDg3MEZERjRENkUwMEVDRjlBNCAvKiBY
U1NBdWRpdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA5N0RENEQ4NTBGREY0RDZFMDBFQ0Y5QTQgLyogWFNTQXVkaXRvci5oICovOyB9OwogCQlBMTdD
ODEyMjBGMkE1Q0Y3MDA1REFBRUIgLyogSFRNTEVsZW1lbnRGYWN0b3J5LmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExN0M4MTIwMEYyQTVDRjcwMDVE
QUFFQiAvKiBIVE1MRWxlbWVudEZhY3RvcnkuY3BwICovOyB9OwpAQCAtNzUzNiwxMCArNzUzOCwx
MiBAQAogCQk5M0Y5Qjc5RTBCQTYwMzI2MDA4NTQwNjQgLyogSlNDREFUQVNlY3Rpb24uY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNDREFUQVNlY3Rpb24uY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0Y5Qjc5RjBCQTYwMzI2MDA4NTQwNjQgLyog
SlNDREFUQVNlY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNDREFU
QVNlY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNGREFGQzkwQjExMzA3
NDAwRTI3NDZGIC8qIEVkaXRvckluc2VydEFjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gRWRpdG9ySW5zZXJ0QWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTk3MDU5OTczMTA3RDk3NTIwMEE1MEE3QyAvKiBQb2xpY3lDYWxsYmFjay5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQb2xpY3lDYWxsYmFjay5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk3MDU5OTc0MTA3RDk3NTIwMEE1MEE3QyAvKiBQ
b2xpY3lDYWxsYmFjay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQb2xpY3lD
YWxsYmFjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5NzA1OTk3NTEwN0Q5NzUy
MDBBNTBBN0MgLyogUG9saWN5Q2hlY2tlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBQb2xpY3lDaGVja2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJOTcwNTk5NzYxMDdEOTc1MjAwQTUwQTdDIC8qIFBvbGljeUNoZWNrZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUG9saWN5Q2hlY2tlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk5NzlGNDNEMTEwNzVFNDRBMDAwMEY4M0IgLyogUmVkaXJlY3RTY2hlZHVs
ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVkaXJlY3RTY2hl
ZHVsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5NzlGNDNEMjEwNzVFNDRB
MDAwMEY4M0IgLyogUmVkaXJlY3RTY2hlZHVsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gUmVkaXJlY3RTY2hlZHVsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJOTdCQzYzQjYxMDc2Qzk3RjAwMkMyMTQyIC8qIFBvbGljeUNoZWNrLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBvbGljeUNoZWNrLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJOTdCQzYzQjcxMDc2Qzk3RjAwMkMyMTQyIC8qIFBvbGljeUNoZWNr
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBvbGljeUNoZWNrLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk3REQ0RDg0MEZERjRENkQwMEVDRjlBNCAvKiBYU1NB
dWRpdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFhTU0F1ZGl0
b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5N0RENEQ4NTBGREY0RDZFMDBF
Q0Y5QTQgLyogWFNTQXVkaXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBY
U1NBdWRpdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExN0M4MTIwMEYyQTVD
RjcwMDVEQUFFQiAvKiBIVE1MRWxlbWVudEZhY3RvcnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSFRNTEVsZW1lbnRGYWN0b3J5LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTE0NTg4LDggKzE0NTkyLDEwIEBACiAJCQkJMzc3QzRDREQxMDE0RTlG
NjAwQjlBRTQyIC8qIFBsYWNlaG9sZGVyRG9jdW1lbnQuaCAqLywKIAkJCQkxQUM2OTRDNTBBM0Ix
Njc2MDAzRjUwNDkgLyogUGx1Z2luRG9jdW1lbnQuY3BwICovLAogCQkJCTFBQzY5NEM2MEEzQjE2
NzYwMDNGNTA0OSAvKiBQbHVnaW5Eb2N1bWVudC5oICovLAotCQkJCTk3QkM2M0I2MTA3NkM5N0Yw
MDJDMjE0MiAvKiBQb2xpY3lDaGVjay5jcHAgKi8sCi0JCQkJOTdCQzYzQjcxMDc2Qzk3RjAwMkMy
MTQyIC8qIFBvbGljeUNoZWNrLmggKi8sCisJCQkJOTcwNTk5NzMxMDdEOTc1MjAwQTUwQTdDIC8q
IFBvbGljeUNhbGxiYWNrLmNwcCAqLywKKwkJCQk5NzA1OTk3NDEwN0Q5NzUyMDBBNTBBN0MgLyog
UG9saWN5Q2FsbGJhY2suaCAqLywKKwkJCQk5NzA1OTk3NTEwN0Q5NzUyMDBBNTBBN0MgLyogUG9s
aWN5Q2hlY2tlci5jcHAgKi8sCisJCQkJOTcwNTk5NzYxMDdEOTc1MjAwQTUwQTdDIC8qIFBvbGlj
eUNoZWNrZXIuaCAqLywKIAkJCQkxQTJBNjgyMTBCNUJFREU3MDAwMkE0ODAgLyogUHJvZ3Jlc3NU
cmFja2VyLmNwcCAqLywKIAkJCQkxQTJBNjgyMjBCNUJFREU3MDAwMkE0ODAgLyogUHJvZ3Jlc3NU
cmFja2VyLmggKi8sCiAJCQkJOTc5RjQzRDExMDc1RTQ0QTAwMDBGODNCIC8qIFJlZGlyZWN0U2No
ZWR1bGVyLmNwcCAqLywKQEAgLTE3OTY0LDkgKzE3OTcwLDEwIEBACiAJCQkJOTc5RjQzRDQxMDc1
RTQ0QTAwMDBGODNCIC8qIFJlZGlyZWN0U2NoZWR1bGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlC
Qzk0NjJEODEwN0E3QjRDMDA4NTcxOTMgLyogQmVmb3JlTG9hZEV2ZW50LmggaW4gSGVhZGVycyAq
LywKIAkJCQlCQzk0NjM0ODEwN0E5MzY2MDA4NTcxOTMgLyogSlNCZWZvcmVMb2FkRXZlbnQuaCBp
biBIZWFkZXJzICovLAotCQkJCTk3QkM2M0I5MTA3NkM5N0YwMDJDMjE0MiAvKiBQb2xpY3lDaGVj
ay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQ0OUUyNEMxMDdENEE4NDAwQjU3OTNGIC8qIEpTQ2Fs
bGJhY2tEYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzVFNDk3NjEwNzUyQUNCMDBDOUI4OTYg
LyogU2VyaWFsaXplZFNjcmlwdFZhbHVlLmggaW4gSGVhZGVycyAqLywKKwkJCQk5NzA1OTk3ODEw
N0Q5NzUyMDBBNTBBN0MgLyogUG9saWN5Q2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAorCQkJCTk3
MDU5OTdBMTA3RDk3NTIwMEE1MEE3QyAvKiBQb2xpY3lDaGVja2VyLmggaW4gSGVhZGVycyAqLywK
IAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsK
QEAgLTIwMDg2LDkgKzIwMDkzLDEwIEBACiAJCQkJNURCMUJDNkIxMDcxNUE2NDAwRUZBQTQ5IC8q
IFRyYW5zZm9ybVNvdXJjZUxpYnhzbHQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTc5RjQzRDMx
MDc1RTQ0QTAwMDBGODNCIC8qIFJlZGlyZWN0U2NoZWR1bGVyLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUJDOTQ2MzQ2MTA3QTkzNEIwMDg1NzE5MyAvKiBKU0JlZm9yZUxvYWRFdmVudC5jcHAgaW4g
U291cmNlcyAqLywKLQkJCQk5N0JDNjNCODEwNzZDOTdGMDAyQzIxNDIgLyogUG9saWN5Q2hlY2su
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ0OUUyODcxMDdENERCNDAwQjU3OTNGIC8qIEpTQ2Fs
bGJhY2tEYXRhLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3NUU0OTc3MTA3NTJBQ0IwMEM5Qjg5
NiAvKiBTZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJOTcwNTk5
NzcxMDdEOTc1MjAwQTUwQTdDIC8qIFBvbGljeUNhbGxiYWNrLmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCTk3MDU5OTc5MTA3RDk3NTIwMEE1MEE3QyAvKiBQb2xpY3lDaGVja2VyLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAw
OwogCQl9OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwIGIvV2Vi
Q29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCmluZGV4IDU3YTdhNzkuLjgzZGE5MWQgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAorKysgYi9XZWJDb3JlL2xvYWRl
ci9GcmFtZUxvYWRlci5jcHAKQEAgLTIxNjMsNDMgKzIxNjMsMTEgQEAgYm9vbCBGcmFtZUxvYWRl
cjo6d2lsbExvYWRNZWRpYUVsZW1lbnRVUkwoS1VSTCYgdXJsKQogICAgIHJldHVybiBlcnJvci5p
c051bGwoKTsKIH0KIAotdm9pZCBQb2xpY3lDaGVja2VyOjpoYW5kbGVVbmltcGxlbWVudGFibGVQ
b2xpY3koY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCi17Ci0gICAgbV9kZWxlZ2F0ZUlzSGFu
ZGxpbmdVbmltcGxlbWVudGFibGVQb2xpY3kgPSB0cnVlOwotICAgIG1fZnJhbWUtPmxvYWRlcigp
LT5jbGllbnQoKS0+ZGlzcGF0Y2hVbmFibGVUb0ltcGxlbWVudFBvbGljeShlcnJvcik7Ci0gICAg
bV9kZWxlZ2F0ZUlzSGFuZGxpbmdVbmltcGxlbWVudGFibGVQb2xpY3kgPSBmYWxzZTsKLX0KLQot
dm9pZCBQb2xpY3lDaGVja2VyOjpjYW5ub3RTaG93TUlNRVR5cGUoY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYgcmVzcG9uc2UpCi17Ci0gICAgaGFuZGxlVW5pbXBsZW1lbnRhYmxlUG9saWN5KG1fZnJh
bWUtPmxvYWRlcigpLT5jbGllbnQoKS0+Y2Fubm90U2hvd01JTUVUeXBlRXJyb3IocmVzcG9uc2Up
KTsKLX0KLQogUmVzb3VyY2VFcnJvciBGcmFtZUxvYWRlcjo6aW50ZXJydXB0aW9uRm9yUG9saWN5
Q2hhbmdlRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewogICAgIHJldHVy
biBtX2NsaWVudC0+aW50ZXJydXB0Rm9yUG9saWN5Q2hhbmdlRXJyb3IocmVxdWVzdCk7CiB9CiAK
LVBvbGljeUNoZWNrZXI6OlBvbGljeUNoZWNrZXIoRnJhbWUqIGZyYW1lKQotICAgIDogbV9mcmFt
ZShmcmFtZSkKLSAgICAsIG1fZGVsZWdhdGVJc0RlY2lkaW5nTmF2aWdhdGlvblBvbGljeShmYWxz
ZSkKLSAgICAsIG1fZGVsZWdhdGVJc0hhbmRsaW5nVW5pbXBsZW1lbnRhYmxlUG9saWN5KGZhbHNl
KQotICAgICwgbV9sb2FkVHlwZShGcmFtZUxvYWRUeXBlU3RhbmRhcmQpCi17Ci19Ci0KLXZvaWQg
UG9saWN5Q2hlY2tlcjo6Y2hlY2tOYXZpZ2F0aW9uUG9saWN5KGNvbnN0IFJlc291cmNlUmVxdWVz
dCYgbmV3UmVxdWVzdCwgTmF2aWdhdGlvblBvbGljeURlY2lzaW9uRnVuY3Rpb24gZnVuY3Rpb24s
IHZvaWQqIGFyZ3VtZW50KQotewotICAgIGNoZWNrTmF2aWdhdGlvblBvbGljeShuZXdSZXF1ZXN0
LCBtX2ZyYW1lLT5sb2FkZXIoKS0+YWN0aXZlRG9jdW1lbnRMb2FkZXIoKSwgMCwgZnVuY3Rpb24s
IGFyZ3VtZW50KTsKLX0KLQotdm9pZCBQb2xpY3lDaGVja2VyOjpjaGVja0NvbnRlbnRQb2xpY3ko
Y29uc3QgU3RyaW5nJiBNSU1FVHlwZSwgQ29udGVudFBvbGljeURlY2lzaW9uRnVuY3Rpb24gZnVu
Y3Rpb24sIHZvaWQqIGFyZ3VtZW50KQotewotICAgIG1fcG9saWN5Q2hlY2suc2V0KGZ1bmN0aW9u
LCBhcmd1bWVudCk7Ci0gICAgbV9mcmFtZS0+bG9hZGVyKCktPmNsaWVudCgpLT5kaXNwYXRjaERl
Y2lkZVBvbGljeUZvck1JTUVUeXBlKCZQb2xpY3lDaGVja2VyOjpjb250aW51ZUFmdGVyQ29udGVu
dFBvbGljeSwKLSAgICAgICAgTUlNRVR5cGUsIG1fZnJhbWUtPmxvYWRlcigpLT5hY3RpdmVEb2N1
bWVudExvYWRlcigpLT5yZXF1ZXN0KCkpOwotfQotCiBib29sIEZyYW1lTG9hZGVyOjpzaG91bGRS
ZWxvYWRUb0hhbmRsZVVucmVhY2hhYmxlVVJMKERvY3VtZW50TG9hZGVyKiBkb2NMb2FkZXIpCiB7
CiAgICAgS1VSTCB1bnJlYWNoYWJsZVVSTCA9IGRvY0xvYWRlci0+dW5yZWFjaGFibGVVUkwoKTsK
QEAgLTI4NTEsMTIgKzI4MTksNiBAQCBTdHJpbmcgRnJhbWVMb2FkZXI6OmdlbmVyYXRlZE1JTUVU
eXBlRm9yVVJMU2NoZW1lKGNvbnN0IFN0cmluZyYgVVJMU2NoZW1lKQogICAgIHJldHVybiBtX2Ns
aWVudC0+Z2VuZXJhdGVkTUlNRVR5cGVGb3JVUkxTY2hlbWUoVVJMU2NoZW1lKTsKIH0KIAotdm9p
ZCBQb2xpY3lDaGVja2VyOjpjYW5jZWxDaGVjaygpCi17Ci0gICAgbV9mcmFtZS0+bG9hZGVyKCkt
PmNsaWVudCgpLT5jYW5jZWxQb2xpY3lDaGVjaygpOwotICAgIG1fcG9saWN5Q2hlY2suY2xlYXIo
KTsKLX0KLQogdm9pZCBGcmFtZUxvYWRlcjo6ZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJv
dmlzaW9uYWxMb2FkRm9yRnJhbWUoKQogewogICAgIG1fY2xpZW50LT5kaXNwYXRjaERpZFJlY2Vp
dmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZCgpOwpAQCAtMjk3NiwxNCArMjkzOCw2
IEBAIENhY2hlUG9saWN5IEZyYW1lTG9hZGVyOjpzdWJyZXNvdXJjZUNhY2hlUG9saWN5KCkgY29u
c3QKICAgICByZXR1cm4gQ2FjaGVQb2xpY3lWZXJpZnk7CiB9CiAKLXZvaWQgUG9saWN5Q2hlY2tl
cjo6c3RvcENoZWNrKCkKLXsKLSAgICBtX2ZyYW1lLT5sb2FkZXIoKS0+Y2xpZW50KCktPmNhbmNl
bFBvbGljeUNoZWNrKCk7Ci0gICAgUG9saWN5Q2hlY2sgY2hlY2sgPSBtX3BvbGljeUNoZWNrOwot
ICAgIG1fcG9saWN5Q2hlY2suY2xlYXIoKTsKLSAgICBjaGVjay5jYW5jZWwoKTsKLX0KLQogdm9p
ZCBGcmFtZUxvYWRlcjo6Y2hlY2tMb2FkQ29tcGxldGVGb3JUaGlzRnJhbWUoKQogewogICAgIEFT
U0VSVChtX2NsaWVudC0+aGFzV2ViVmlldygpKTsKQEAgLTMwODIsMjAgKzMwMzYsNiBAQCB2b2lk
IEZyYW1lTG9hZGVyOjpjaGVja0xvYWRDb21wbGV0ZUZvclRoaXNGcmFtZSgpCiAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CiB9CiAKLXZvaWQgUG9saWN5Q2hlY2tlcjo6Y29udGludWVBZnRlckNv
bnRlbnRQb2xpY3koUG9saWN5QWN0aW9uIHBvbGljeSkKLXsKLSAgICBQb2xpY3lDaGVjayBjaGVj
ayA9IG1fcG9saWN5Q2hlY2s7Ci0gICAgbV9wb2xpY3lDaGVjay5jbGVhcigpOwotICAgIGNoZWNr
LmNhbGwocG9saWN5KTsKLX0KLQotdm9pZCBQb2xpY3lDaGVja2VyOjpjb250aW51ZUxvYWRBZnRl
cldpbGxTdWJtaXRGb3JtKFBvbGljeUFjdGlvbikKLXsKLSAgICAvLyBTZWUgaGVhZGVyIGZpbGUg
Zm9yIGFuIGV4cGxhaW5hdGlvbiBvZiB3aHkgdGhpcyBmdW5jdGlvbgotICAgIC8vIGlzbid0IGxp
a2UgdGhlIG90aGVycy4KLSAgICBtX2ZyYW1lLT5sb2FkZXIoKS0+Y29udGludWVMb2FkQWZ0ZXJX
aWxsU3VibWl0Rm9ybSgpOwotfQotCiB2b2lkIEZyYW1lTG9hZGVyOjpjb250aW51ZUxvYWRBZnRl
cldpbGxTdWJtaXRGb3JtKCkKIHsKICAgICBpZiAoIW1fcHJvdmlzaW9uYWxEb2N1bWVudExvYWRl
cikKQEAgLTM1ODgsMTAwICszNTI4LDYgQEAgYm9vbCBGcmFtZUxvYWRlcjo6c2hvdWxkU2Nyb2xs
VG9BbmNob3IoYm9vbCBpc0Zvcm1TdWJtaXNzaW9uLCBGcmFtZUxvYWRUeXBlIGxvYWQKICAgICAg
ICAgJiYgIW1fZnJhbWUtPmRvY3VtZW50KCktPmlzRnJhbWVTZXQoKTsKIH0KIAotdm9pZCBQb2xp
Y3lDaGVja2VyOjpjaGVja05ld1dpbmRvd1BvbGljeShjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiBh
Y3Rpb24sIE5ld1dpbmRvd1BvbGljeURlY2lzaW9uRnVuY3Rpb24gZnVuY3Rpb24sCi0gICAgY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBQYXNzUmVmUHRyPEZvcm1TdGF0ZT4gZm9ybVN0
YXRlLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgdm9pZCogYXJndW1lbnQpCi17Ci0gICAgbV9w
b2xpY3lDaGVjay5zZXQocmVxdWVzdCwgZm9ybVN0YXRlLCBmcmFtZU5hbWUsIGZ1bmN0aW9uLCBh
cmd1bWVudCk7Ci0gICAgbV9mcmFtZS0+bG9hZGVyKCktPmNsaWVudCgpLT5kaXNwYXRjaERlY2lk
ZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbigmUG9saWN5Q2hlY2tlcjo6Y29udGludWVBZnRlck5l
d1dpbmRvd1BvbGljeSwKLSAgICAgICAgYWN0aW9uLCByZXF1ZXN0LCBmb3JtU3RhdGUsIGZyYW1l
TmFtZSk7Ci19Ci0KLXZvaWQgUG9saWN5Q2hlY2tlcjo6Y29udGludWVBZnRlck5ld1dpbmRvd1Bv
bGljeShQb2xpY3lBY3Rpb24gcG9saWN5KQotewotICAgIFBvbGljeUNoZWNrIGNoZWNrID0gbV9w
b2xpY3lDaGVjazsKLSAgICBtX3BvbGljeUNoZWNrLmNsZWFyKCk7Ci0KLSAgICBzd2l0Y2ggKHBv
bGljeSkgewotICAgICAgICBjYXNlIFBvbGljeUlnbm9yZToKLSAgICAgICAgICAgIGNoZWNrLmNs
ZWFyUmVxdWVzdCgpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgUG9saWN5RG93
bmxvYWQ6Ci0gICAgICAgICAgICBtX2ZyYW1lLT5sb2FkZXIoKS0+Y2xpZW50KCktPnN0YXJ0RG93
bmxvYWQoY2hlY2sucmVxdWVzdCgpKTsKLSAgICAgICAgICAgIGNoZWNrLmNsZWFyUmVxdWVzdCgp
OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgUG9saWN5VXNlOgotICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgfQotCi0gICAgY2hlY2suY2FsbChwb2xpY3kgPT0gUG9saWN5VXNlKTsK
LX0KLQotdm9pZCBQb2xpY3lDaGVja2VyOjpjaGVja05hdmlnYXRpb25Qb2xpY3koY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBEb2N1bWVudExvYWRlciogbG9hZGVyLAotICAgIFBhc3NS
ZWZQdHI8Rm9ybVN0YXRlPiBmb3JtU3RhdGUsIE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbkZ1bmN0
aW9uIGZ1bmN0aW9uLCB2b2lkKiBhcmd1bWVudCkKLXsKLSAgICBOYXZpZ2F0aW9uQWN0aW9uIGFj
dGlvbiA9IGxvYWRlci0+dHJpZ2dlcmluZ0FjdGlvbigpOwotICAgIGlmIChhY3Rpb24uaXNFbXB0
eSgpKSB7Ci0gICAgICAgIGFjdGlvbiA9IE5hdmlnYXRpb25BY3Rpb24ocmVxdWVzdC51cmwoKSwg
TmF2aWdhdGlvblR5cGVPdGhlcik7Ci0gICAgICAgIGxvYWRlci0+c2V0VHJpZ2dlcmluZ0FjdGlv
bihhY3Rpb24pOwotICAgIH0KLQotICAgIC8vIERvbid0IGFzayBtb3JlIHRoYW4gb25jZSBmb3Ig
dGhlIHNhbWUgcmVxdWVzdCBvciBpZiB3ZSBhcmUgbG9hZGluZyBhbiBlbXB0eSBVUkwuCi0gICAg
Ly8gVGhpcyBhdm9pZHMgY29uZnVzaW9uIG9uIHRoZSBwYXJ0IG9mIHRoZSBjbGllbnQuCi0gICAg
aWYgKGVxdWFsSWdub3JpbmdIZWFkZXJGaWVsZHMocmVxdWVzdCwgbG9hZGVyLT5sYXN0Q2hlY2tl
ZFJlcXVlc3QoKSkgfHwgKCFyZXF1ZXN0LmlzTnVsbCgpICYmIHJlcXVlc3QudXJsKCkuaXNFbXB0
eSgpKSkgewotICAgICAgICBmdW5jdGlvbihhcmd1bWVudCwgcmVxdWVzdCwgMCwgdHJ1ZSk7Ci0g
ICAgICAgIGxvYWRlci0+c2V0TGFzdENoZWNrZWRSZXF1ZXN0KHJlcXVlc3QpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotICAgIAotICAgIC8vIFdlIGFyZSBhbHdheXMgd2lsbGluZyB0byBzaG93
IGFsdGVybmF0ZSBjb250ZW50IGZvciB1bnJlYWNoYWJsZSBVUkxzOwotICAgIC8vIHRyZWF0IGl0
IGxpa2UgYSByZWxvYWQgc28gaXQgbWFpbnRhaW5zIHRoZSByaWdodCBzdGF0ZSBmb3IgYi9mIGxp
c3QuCi0gICAgaWYgKGxvYWRlci0+c3Vic3RpdHV0ZURhdGEoKS5pc1ZhbGlkKCkgJiYgIWxvYWRl
ci0+c3Vic3RpdHV0ZURhdGEoKS5mYWlsaW5nVVJMKCkuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGlm
IChpc0JhY2tGb3J3YXJkTG9hZFR5cGUobV9sb2FkVHlwZSkpCi0gICAgICAgICAgICBtX2xvYWRU
eXBlID0gRnJhbWVMb2FkVHlwZVJlbG9hZDsKLSAgICAgICAgZnVuY3Rpb24oYXJndW1lbnQsIHJl
cXVlc3QsIDAsIHRydWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIAotICAgIGxvYWRl
ci0+c2V0TGFzdENoZWNrZWRSZXF1ZXN0KHJlcXVlc3QpOwotCi0gICAgbV9wb2xpY3lDaGVjay5z
ZXQocmVxdWVzdCwgZm9ybVN0YXRlLmdldCgpLCBmdW5jdGlvbiwgYXJndW1lbnQpOwotCi0gICAg
bV9kZWxlZ2F0ZUlzRGVjaWRpbmdOYXZpZ2F0aW9uUG9saWN5ID0gdHJ1ZTsKLSAgICBtX2ZyYW1l
LT5sb2FkZXIoKS0+Y2xpZW50KCktPmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFj
dGlvbigmUG9saWN5Q2hlY2tlcjo6Y29udGludWVBZnRlck5hdmlnYXRpb25Qb2xpY3ksCi0gICAg
ICAgIGFjdGlvbiwgcmVxdWVzdCwgZm9ybVN0YXRlKTsKLSAgICBtX2RlbGVnYXRlSXNEZWNpZGlu
Z05hdmlnYXRpb25Qb2xpY3kgPSBmYWxzZTsKLX0KLQotdm9pZCBQb2xpY3lDaGVja2VyOjpjb250
aW51ZUFmdGVyTmF2aWdhdGlvblBvbGljeShQb2xpY3lBY3Rpb24gcG9saWN5KQotewotICAgIFBv
bGljeUNoZWNrIGNoZWNrID0gbV9wb2xpY3lDaGVjazsKLSAgICBtX3BvbGljeUNoZWNrLmNsZWFy
KCk7Ci0KLSAgICBib29sIHNob3VsZENvbnRpbnVlID0gcG9saWN5ID09IFBvbGljeVVzZTsKLQot
ICAgIHN3aXRjaCAocG9saWN5KSB7Ci0gICAgICAgIGNhc2UgUG9saWN5SWdub3JlOgotICAgICAg
ICAgICAgY2hlY2suY2xlYXJSZXF1ZXN0KCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAg
Y2FzZSBQb2xpY3lEb3dubG9hZDoKLSAgICAgICAgICAgIG1fZnJhbWUtPmxvYWRlcigpLT5jbGll
bnQoKS0+c3RhcnREb3dubG9hZChjaGVjay5yZXF1ZXN0KCkpOwotICAgICAgICAgICAgY2hlY2su
Y2xlYXJSZXF1ZXN0KCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBQb2xpY3lV
c2U6IHsKLSAgICAgICAgICAgIFJlc291cmNlUmVxdWVzdCByZXF1ZXN0KGNoZWNrLnJlcXVlc3Qo
KSk7Ci0KLSAgICAgICAgICAgIGlmICghbV9mcmFtZS0+bG9hZGVyKCktPmNsaWVudCgpLT5jYW5I
YW5kbGVSZXF1ZXN0KHJlcXVlc3QpKSB7Ci0gICAgICAgICAgICAgICAgaGFuZGxlVW5pbXBsZW1l
bnRhYmxlUG9saWN5KG1fZnJhbWUtPmxvYWRlcigpLT5jYW5ub3RTaG93VVJMRXJyb3IoY2hlY2su
cmVxdWVzdCgpKSk7Ci0gICAgICAgICAgICAgICAgY2hlY2suY2xlYXJSZXF1ZXN0KCk7Ci0gICAg
ICAgICAgICAgICAgc2hvdWxkQ29udGludWUgPSBmYWxzZTsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgY2hlY2suY2FsbChzaG91bGRD
b250aW51ZSk7Ci19Ci0KIHZvaWQgRnJhbWVMb2FkZXI6OmNhbGxDb250aW51ZUxvYWRBZnRlck5h
dmlnYXRpb25Qb2xpY3kodm9pZCogYXJndW1lbnQsCiAgICAgY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0LCBQYXNzUmVmUHRyPEZvcm1TdGF0ZT4gZm9ybVN0YXRlLCBib29sIHNob3VsZENv
bnRpbnVlKQogewpAQCAtMzc1OCw3ICszNjA0LDYgQEAgdm9pZCBGcmFtZUxvYWRlcjo6Y29udGlu
dWVMb2FkQWZ0ZXJOYXZpZ2F0aW9uUG9saWN5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFBhc3MK
ICAgICAgICAgY29udGludWVMb2FkQWZ0ZXJXaWxsU3VibWl0Rm9ybSgpOwogfQogCi0KIHZvaWQg
RnJhbWVMb2FkZXI6OmNhbGxDb250aW51ZUxvYWRBZnRlck5ld1dpbmRvd1BvbGljeSh2b2lkKiBh
cmd1bWVudCwKICAgICBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFBhc3NSZWZQdHI8
Rm9ybVN0YXRlPiBmb3JtU3RhdGUsIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBib29sIHNob3Vs
ZENvbnRpbnVlKQogewpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaCBi
L1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKaW5kZXggOTBlZGQzZC4uMDIyZDkyNyAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAorKysgYi9XZWJDb3JlL2xvYWRl
ci9GcmFtZUxvYWRlci5oCkBAIC0zMiw3ICszMiw4IEBACiAKICNpbmNsdWRlICJDYWNoZVBvbGlj
eS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyVHlwZXMuaCIKLSNpbmNsdWRlICJQb2xpY3lDaGVj
ay5oIgorI2luY2x1ZGUgIlBvbGljeUNhbGxiYWNrLmgiCisjaW5jbHVkZSAiUG9saWN5Q2hlY2tl
ci5oIgogI2luY2x1ZGUgIlJlZGlyZWN0U2NoZWR1bGVyLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VS
ZXF1ZXN0LmgiCiAjaW5jbHVkZSAiVGhyZWFkYWJsZUxvYWRlci5oIgpAQCAtNzgsNTMgKzc5LDYg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgYm9vbCBpc0JhY2tGb3J3YXJkTG9hZFR5cGUo
RnJhbWVMb2FkVHlwZSk7CiAKLSAgICBjbGFzcyBQb2xpY3lDaGVja2VyIDogcHVibGljIE5vbmNv
cHlhYmxlIHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIFBvbGljeUNoZWNrZXIoRnJhbWUqKTsKLQot
ICAgICAgICB2b2lkIGNoZWNrTmF2aWdhdGlvblBvbGljeShjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
LCBEb2N1bWVudExvYWRlciosIFBhc3NSZWZQdHI8Rm9ybVN0YXRlPiwgTmF2aWdhdGlvblBvbGlj
eURlY2lzaW9uRnVuY3Rpb24sIHZvaWQqIGFyZ3VtZW50KTsKLSAgICAgICAgdm9pZCBjaGVja05h
dmlnYXRpb25Qb2xpY3koY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgTmF2aWdhdGlvblBvbGljeURl
Y2lzaW9uRnVuY3Rpb24sIHZvaWQqIGFyZ3VtZW50KTsKLSAgICAgICAgdm9pZCBjaGVja05ld1dp
bmRvd1BvbGljeShjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiwgTmV3V2luZG93UG9saWN5RGVjaXNp
b25GdW5jdGlvbiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgUGFzc1JlZlB0cjxGb3JtU3RhdGU+
LCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgdm9pZCogYXJndW1lbnQpOwotICAgICAgICB2b2lk
IGNoZWNrQ29udGVudFBvbGljeShjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBDb250ZW50UG9saWN5
RGVjaXNpb25GdW5jdGlvbiwgdm9pZCogYXJndW1lbnQpOwotCi0gICAgICAgIC8vIEZJWE1FOiBU
aGVzZSBhcmUgZGlmZmVyZW50LiAgVGhleSBjb3VsZCB1c2UgYmV0dGVyIG5hbWVzLgotICAgICAg
ICB2b2lkIGNhbmNlbENoZWNrKCk7Ci0gICAgICAgIHZvaWQgc3RvcENoZWNrKCk7Ci0KLSAgICAg
ICAgdm9pZCBjYW5ub3RTaG93TUlNRVR5cGUoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwotCi0g
ICAgICAgIEZyYW1lTG9hZFR5cGUgbG9hZFR5cGUoKSBjb25zdCB7IHJldHVybiBtX2xvYWRUeXBl
OyB9Ci0gICAgICAgIHZvaWQgc2V0TG9hZFR5cGUoRnJhbWVMb2FkVHlwZSBsb2FkVHlwZSkgeyBt
X2xvYWRUeXBlID0gbG9hZFR5cGU7IH0KLQotICAgICAgICBib29sIGRlbGVnYXRlSXNEZWNpZGlu
Z05hdmlnYXRpb25Qb2xpY3koKSBjb25zdCB7IHJldHVybiBtX2RlbGVnYXRlSXNEZWNpZGluZ05h
dmlnYXRpb25Qb2xpY3k7IH0KLSAgICAgICAgYm9vbCBkZWxlZ2F0ZUlzSGFuZGxpbmdVbmltcGxl
bWVudGFibGVQb2xpY3koKSBjb25zdCB7IHJldHVybiBtX2RlbGVnYXRlSXNIYW5kbGluZ1VuaW1w
bGVtZW50YWJsZVBvbGljeTsgfQotCi0gICAgICAgIC8vIEZJWE1FOiBUaGlzIGZ1bmN0aW9uIGlz
IGEgY2hlYXQuICBCYXNpY2FsbHksIHRoaXMgaXMganVzdCBhbiBhc3luY2hyb25vdWMgY2FsbGJh
Y2sKLSAgICAgICAgLy8gZnJvbSB0aGUgRnJhbWVMb2FkZXJDbGllbnQsIGJ1dCB0aGlzIGNhbGxi
YWNrIHVzZXMgdGhlIHBvbGljeSB0eXBlcyBhbmQgc28gaGFzIHRvCi0gICAgICAgIC8vIGxpdmUg
b24gdGhpcyBvYmplY3QuICBJbiB0aGUgbG9uZyB0ZXJtLCB3ZSBzaG91bGQgY3JlYXRlIGEgdHlw
ZSBmb3Igbm9uLXBvbGljeQotICAgICAgICAvLyBjYWxsYmFja3MgZnJvbSB0aGUgRnJhbWVMb2Fk
ZXJDbGllbnQgYW5kIHJlbW92ZSB0aGlzIHZlc3RpZ2UuICBJIGp1c3QgZG9uJ3QgaGF2ZQotICAg
ICAgICAvLyB0aGUgaGVhcnQgdG8gaGFjayBvbiBhbGwgdGhlIHBsYXRmb3JtcyB0byBtYWtlIHRo
YXQgaGFwcGVuIHJpZ2h0IG5vdy4KLSAgICAgICAgdm9pZCBjb250aW51ZUxvYWRBZnRlcldpbGxT
dWJtaXRGb3JtKFBvbGljeUFjdGlvbik7Ci0KLSAgICBwcml2YXRlOgotICAgICAgICB2b2lkIGNv
bnRpbnVlQWZ0ZXJOYXZpZ2F0aW9uUG9saWN5KFBvbGljeUFjdGlvbik7Ci0gICAgICAgIHZvaWQg
Y29udGludWVBZnRlck5ld1dpbmRvd1BvbGljeShQb2xpY3lBY3Rpb24pOwotICAgICAgICB2b2lk
IGNvbnRpbnVlQWZ0ZXJDb250ZW50UG9saWN5KFBvbGljeUFjdGlvbik7Ci0KLSAgICAgICAgdm9p
ZCBoYW5kbGVVbmltcGxlbWVudGFibGVQb2xpY3koY29uc3QgUmVzb3VyY2VFcnJvciYpOwotCi0g
ICAgICAgIEZyYW1lKiBtX2ZyYW1lOwotCi0gICAgICAgIGJvb2wgbV9kZWxlZ2F0ZUlzRGVjaWRp
bmdOYXZpZ2F0aW9uUG9saWN5OwotICAgICAgICBib29sIG1fZGVsZWdhdGVJc0hhbmRsaW5nVW5p
bXBsZW1lbnRhYmxlUG9saWN5OwotCi0gICAgICAgIC8vIFRoaXMgaWRlbnRpZmllcyB0aGUgdHlw
ZSBvZiBuYXZpZ2F0aW9uIGFjdGlvbiB3aGljaCBwcm9tcHRlZCB0aGlzIGxvYWQuIE5vdGUgCi0g
ICAgICAgIC8vIHRoYXQgV2ViS2l0IGNvbnZleXMgdGhpcyB2YWx1ZSBhcyB0aGUgV2ViQWN0aW9u
TmF2aWdhdGlvblR5cGVLZXkgdmFsdWUKLSAgICAgICAgLy8gb24gbmF2aWdhdGlvbiBhY3Rpb24g
ZGVsZWdhdGUgY2FsbGJhY2tzLgotICAgICAgICBGcmFtZUxvYWRUeXBlIG1fbG9hZFR5cGU7Ci0g
ICAgICAgIFBvbGljeUNoZWNrIG1fcG9saWN5Q2hlY2s7Ci0gICAgfTsKLQogICAgIGNsYXNzIEZy
YW1lTG9hZGVyIDogcHVibGljIE5vbmNvcHlhYmxlIHsKICAgICBwdWJsaWM6CiAgICAgICAgIEZy
YW1lTG9hZGVyKEZyYW1lKiwgRnJhbWVMb2FkZXJDbGllbnQqKTsKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvbG9hZGVyL1BvbGljeUNhbGxiYWNrLmNwcCBiL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNhbGxi
YWNrLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNDc5OWNmCi0tLSAv
ZGV2L251bGwKKysrIGIvV2ViQ29yZS9sb2FkZXIvUG9saWN5Q2FsbGJhY2suY3BwCkBAIC0wLDAg
KzEsMTMzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOCBOb2tp
YSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKyAqIENvcHlyaWdodCAo
QykgMjAwOCwgMjAwOSBUb3JjaCBNb2JpbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLiAoaHR0
cDovL3d3dy50b3JjaG1vYmlsZS5jb20vKQorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCisgKiAyLiAgUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4gCisgKiAzLiAgTmVp
dGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBu
YW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uIAorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwor
ICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJQb2xpY3lDYWxsYmFjay5oIgorCisjaW5jbHVkZSAiRm9ybVN0YXRlLmgiCisjaW5jbHVkZSAi
RnJhbWUuaCIKKyNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgorI2luY2x1ZGUgIkhUTUxGb3JtRWxl
bWVudC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1BvbGljeUNhbGxiYWNrOjpQb2xpY3lD
YWxsYmFjaygpCisgICAgOiBtX25hdmlnYXRpb25GdW5jdGlvbigwKQorICAgICwgbV9uZXdXaW5k
b3dGdW5jdGlvbigwKQorICAgICwgbV9jb250ZW50RnVuY3Rpb24oMCkKK3sKK30KKworUG9saWN5
Q2FsbGJhY2s6On5Qb2xpY3lDYWxsYmFjaygpCit7Cit9CisKK3ZvaWQgUG9saWN5Q2FsbGJhY2s6
OmNsZWFyKCkKK3sKKyAgICBjbGVhclJlcXVlc3QoKTsKKyAgICBtX25hdmlnYXRpb25GdW5jdGlv
biA9IDA7CisgICAgbV9uZXdXaW5kb3dGdW5jdGlvbiA9IDA7CisgICAgbV9jb250ZW50RnVuY3Rp
b24gPSAwOworfQorCit2b2lkIFBvbGljeUNhbGxiYWNrOjpzZXQoY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiByZXF1ZXN0LCBQYXNzUmVmUHRyPEZvcm1TdGF0ZT4gZm9ybVN0YXRlLAorICAgIE5hdmln
YXRpb25Qb2xpY3lEZWNpc2lvbkZ1bmN0aW9uIGZ1bmN0aW9uLCB2b2lkKiBhcmd1bWVudCkKK3sK
KyAgICBtX3JlcXVlc3QgPSByZXF1ZXN0OworICAgIG1fZm9ybVN0YXRlID0gZm9ybVN0YXRlOwor
ICAgIG1fZnJhbWVOYW1lID0gU3RyaW5nKCk7CisKKyAgICBtX25hdmlnYXRpb25GdW5jdGlvbiA9
IGZ1bmN0aW9uOworICAgIG1fbmV3V2luZG93RnVuY3Rpb24gPSAwOworICAgIG1fY29udGVudEZ1
bmN0aW9uID0gMDsKKyAgICBtX2FyZ3VtZW50ID0gYXJndW1lbnQ7Cit9CisKK3ZvaWQgUG9saWN5
Q2FsbGJhY2s6OnNldChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFBhc3NSZWZQdHI8
Rm9ybVN0YXRlPiBmb3JtU3RhdGUsCisgICAgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIE5ld1dp
bmRvd1BvbGljeURlY2lzaW9uRnVuY3Rpb24gZnVuY3Rpb24sIHZvaWQqIGFyZ3VtZW50KQorewor
ICAgIG1fcmVxdWVzdCA9IHJlcXVlc3Q7CisgICAgbV9mb3JtU3RhdGUgPSBmb3JtU3RhdGU7Cisg
ICAgbV9mcmFtZU5hbWUgPSBmcmFtZU5hbWU7CisKKyAgICBtX25hdmlnYXRpb25GdW5jdGlvbiA9
IDA7CisgICAgbV9uZXdXaW5kb3dGdW5jdGlvbiA9IGZ1bmN0aW9uOworICAgIG1fY29udGVudEZ1
bmN0aW9uID0gMDsKKyAgICBtX2FyZ3VtZW50ID0gYXJndW1lbnQ7Cit9CisKK3ZvaWQgUG9saWN5
Q2FsbGJhY2s6OnNldChDb250ZW50UG9saWN5RGVjaXNpb25GdW5jdGlvbiBmdW5jdGlvbiwgdm9p
ZCogYXJndW1lbnQpCit7CisgICAgbV9yZXF1ZXN0ID0gUmVzb3VyY2VSZXF1ZXN0KCk7CisgICAg
bV9mb3JtU3RhdGUgPSAwOworICAgIG1fZnJhbWVOYW1lID0gU3RyaW5nKCk7CisKKyAgICBtX25h
dmlnYXRpb25GdW5jdGlvbiA9IDA7CisgICAgbV9uZXdXaW5kb3dGdW5jdGlvbiA9IDA7CisgICAg
bV9jb250ZW50RnVuY3Rpb24gPSBmdW5jdGlvbjsKKyAgICBtX2FyZ3VtZW50ID0gYXJndW1lbnQ7
Cit9CisKK3ZvaWQgUG9saWN5Q2FsbGJhY2s6OmNhbGwoYm9vbCBzaG91bGRDb250aW51ZSkKK3sK
KyAgICBpZiAobV9uYXZpZ2F0aW9uRnVuY3Rpb24pCisgICAgICAgIG1fbmF2aWdhdGlvbkZ1bmN0
aW9uKG1fYXJndW1lbnQsIG1fcmVxdWVzdCwgbV9mb3JtU3RhdGUuZ2V0KCksIHNob3VsZENvbnRp
bnVlKTsKKyAgICBpZiAobV9uZXdXaW5kb3dGdW5jdGlvbikKKyAgICAgICAgbV9uZXdXaW5kb3dG
dW5jdGlvbihtX2FyZ3VtZW50LCBtX3JlcXVlc3QsIG1fZm9ybVN0YXRlLmdldCgpLCBtX2ZyYW1l
TmFtZSwgc2hvdWxkQ29udGludWUpOworICAgIEFTU0VSVCghbV9jb250ZW50RnVuY3Rpb24pOwor
fQorCit2b2lkIFBvbGljeUNhbGxiYWNrOjpjYWxsKFBvbGljeUFjdGlvbiBhY3Rpb24pCit7Cisg
ICAgQVNTRVJUKCFtX25hdmlnYXRpb25GdW5jdGlvbik7CisgICAgQVNTRVJUKCFtX25ld1dpbmRv
d0Z1bmN0aW9uKTsKKyAgICBBU1NFUlQobV9jb250ZW50RnVuY3Rpb24pOworICAgIG1fY29udGVu
dEZ1bmN0aW9uKG1fYXJndW1lbnQsIGFjdGlvbik7Cit9CisKK3ZvaWQgUG9saWN5Q2FsbGJhY2s6
OmNsZWFyUmVxdWVzdCgpCit7CisgICAgbV9yZXF1ZXN0ID0gUmVzb3VyY2VSZXF1ZXN0KCk7Cisg
ICAgbV9mb3JtU3RhdGUgPSAwOworICAgIG1fZnJhbWVOYW1lID0gU3RyaW5nKCk7Cit9CisKK3Zv
aWQgUG9saWN5Q2FsbGJhY2s6OmNhbmNlbCgpCit7CisgICAgY2xlYXJSZXF1ZXN0KCk7CisgICAg
aWYgKG1fbmF2aWdhdGlvbkZ1bmN0aW9uKQorICAgICAgICBtX25hdmlnYXRpb25GdW5jdGlvbiht
X2FyZ3VtZW50LCBtX3JlcXVlc3QsIG1fZm9ybVN0YXRlLmdldCgpLCBmYWxzZSk7CisgICAgaWYg
KG1fbmV3V2luZG93RnVuY3Rpb24pCisgICAgICAgIG1fbmV3V2luZG93RnVuY3Rpb24obV9hcmd1
bWVudCwgbV9yZXF1ZXN0LCBtX2Zvcm1TdGF0ZS5nZXQoKSwgbV9mcmFtZU5hbWUsIGZhbHNlKTsK
KyAgICBpZiAobV9jb250ZW50RnVuY3Rpb24pCisgICAgICAgIG1fY29udGVudEZ1bmN0aW9uKG1f
YXJndW1lbnQsIFBvbGljeUlnbm9yZSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNhbGxiYWNrLmggYi9XZWJDb3JlL2xvYWRl
ci9Qb2xpY3lDYWxsYmFjay5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJh
YTdjN2MKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2xvYWRlci9Qb2xpY3lDYWxsYmFjay5o
CkBAIC0wLDAgKzEsODAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMDgs
IDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDA4LCAyMDA5IFRvcmNoIE1vYmlsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIChodHRwOi8v
d3d3LnRvcmNobW9iaWxlLmNvbS8pCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKKyAqIDIuICBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLiAKKyAqIDMuICBOZWl0aGVy
IHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVz
IG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4gCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBQb2xpY3lDYWxsYmFja19oCisjZGVmaW5l
IFBvbGljeUNhbGxiYWNrX2gKKworI2luY2x1ZGUgIkZyYW1lTG9hZGVyVHlwZXMuaCIKKyNpbmNs
dWRlICJQbGF0Zm9ybVN0cmluZy5oIgorI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgorI2lu
Y2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisgICAgY2xhc3Mg
Rm9ybVN0YXRlOworCisgICAgdHlwZWRlZiB2b2lkICgqTmF2aWdhdGlvblBvbGljeURlY2lzaW9u
RnVuY3Rpb24pKHZvaWQqIGFyZ3VtZW50LAorICAgICAgICBjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
LCBQYXNzUmVmUHRyPEZvcm1TdGF0ZT4sIGJvb2wgc2hvdWxkQ29udGludWUpOworICAgIHR5cGVk
ZWYgdm9pZCAoKk5ld1dpbmRvd1BvbGljeURlY2lzaW9uRnVuY3Rpb24pKHZvaWQqIGFyZ3VtZW50
LAorICAgICAgICBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBQYXNzUmVmUHRyPEZvcm1TdGF0ZT4s
IGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBib29sIHNob3VsZENvbnRpbnVlKTsKKyAgICB0eXBl
ZGVmIHZvaWQgKCpDb250ZW50UG9saWN5RGVjaXNpb25GdW5jdGlvbikodm9pZCogYXJndW1lbnQs
IFBvbGljeUFjdGlvbik7CisKKyAgICBjbGFzcyBQb2xpY3lDYWxsYmFjayB7CisgICAgcHVibGlj
OgorICAgICAgICBQb2xpY3lDYWxsYmFjaygpOworICAgICAgICB+UG9saWN5Q2FsbGJhY2soKTsK
KworICAgICAgICB2b2lkIGNsZWFyKCk7CisgICAgICAgIHZvaWQgc2V0KGNvbnN0IFJlc291cmNl
UmVxdWVzdCYsIFBhc3NSZWZQdHI8Rm9ybVN0YXRlPiwKKyAgICAgICAgICAgIE5hdmlnYXRpb25Q
b2xpY3lEZWNpc2lvbkZ1bmN0aW9uLCB2b2lkKiBhcmd1bWVudCk7CisgICAgICAgIHZvaWQgc2V0
KGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFBhc3NSZWZQdHI8Rm9ybVN0YXRlPiwgY29uc3QgU3Ry
aW5nJiBmcmFtZU5hbWUsCisgICAgICAgICAgICBOZXdXaW5kb3dQb2xpY3lEZWNpc2lvbkZ1bmN0
aW9uLCB2b2lkKiBhcmd1bWVudCk7CisgICAgICAgIHZvaWQgc2V0KENvbnRlbnRQb2xpY3lEZWNp
c2lvbkZ1bmN0aW9uLCB2b2lkKiBhcmd1bWVudCk7CisKKyAgICAgICAgY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JiByZXF1ZXN0KCkgY29uc3QgeyByZXR1cm4gbV9yZXF1ZXN0OyB9CisgICAgICAgIHZv
aWQgY2xlYXJSZXF1ZXN0KCk7CisKKyAgICAgICAgdm9pZCBjYWxsKGJvb2wgc2hvdWxkQ29udGlu
dWUpOworICAgICAgICB2b2lkIGNhbGwoUG9saWN5QWN0aW9uKTsKKyAgICAgICAgdm9pZCBjYW5j
ZWwoKTsKKworICAgIHByaXZhdGU6CisgICAgICAgIFJlc291cmNlUmVxdWVzdCBtX3JlcXVlc3Q7
CisgICAgICAgIFJlZlB0cjxGb3JtU3RhdGU+IG1fZm9ybVN0YXRlOworICAgICAgICBTdHJpbmcg
bV9mcmFtZU5hbWU7CisKKyAgICAgICAgTmF2aWdhdGlvblBvbGljeURlY2lzaW9uRnVuY3Rpb24g
bV9uYXZpZ2F0aW9uRnVuY3Rpb247CisgICAgICAgIE5ld1dpbmRvd1BvbGljeURlY2lzaW9uRnVu
Y3Rpb24gbV9uZXdXaW5kb3dGdW5jdGlvbjsKKyAgICAgICAgQ29udGVudFBvbGljeURlY2lzaW9u
RnVuY3Rpb24gbV9jb250ZW50RnVuY3Rpb247CisgICAgICAgIHZvaWQqIG1fYXJndW1lbnQ7Cisg
ICAgfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gUG9saWN5Q2FsbGJh
Y2tfaApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9sb2FkZXIvUG9saWN5Q2hlY2suY3BwIGIvV2ViQ29y
ZS9sb2FkZXIvUG9saWN5Q2hlY2suY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4
OGEzOGZhLi4wMDAwMDAwCi0tLSBhL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNoZWNrLmNwcAorKysg
L2Rldi9udWxsCkBAIC0xLDEzMyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA2LCAy
MDA3LCAyMDA4LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHly
aWdodCAoQykgMjAwOCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWll
cykKLSAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAwOSBUb3JjaCBNb2JpbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLiAoaHR0cDovL3d3dy50b3JjaG1vYmlsZS5jb20vKQotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4gCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4gCi0gKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAo
IkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgotICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKLSAqICAgICBmcm9t
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
IAotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05U
UklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJj
b25maWcuaCIKLSNpbmNsdWRlICJQb2xpY3lDaGVjay5oIgotCi0jaW5jbHVkZSAiRm9ybVN0YXRl
LmgiCi0jaW5jbHVkZSAiRnJhbWUuaCIKLSNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgotI2luY2x1
ZGUgIkhUTUxGb3JtRWxlbWVudC5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVBvbGljeUNo
ZWNrOjpQb2xpY3lDaGVjaygpCi0gICAgOiBtX25hdmlnYXRpb25GdW5jdGlvbigwKQotICAgICwg
bV9uZXdXaW5kb3dGdW5jdGlvbigwKQotICAgICwgbV9jb250ZW50RnVuY3Rpb24oMCkKLXsKLX0K
LQotUG9saWN5Q2hlY2s6On5Qb2xpY3lDaGVjaygpCi17Ci19Ci0KLXZvaWQgUG9saWN5Q2hlY2s6
OmNsZWFyKCkKLXsKLSAgICBjbGVhclJlcXVlc3QoKTsKLSAgICBtX25hdmlnYXRpb25GdW5jdGlv
biA9IDA7Ci0gICAgbV9uZXdXaW5kb3dGdW5jdGlvbiA9IDA7Ci0gICAgbV9jb250ZW50RnVuY3Rp
b24gPSAwOwotfQotCi12b2lkIFBvbGljeUNoZWNrOjpzZXQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0LCBQYXNzUmVmUHRyPEZvcm1TdGF0ZT4gZm9ybVN0YXRlLAotICAgIE5hdmlnYXRp
b25Qb2xpY3lEZWNpc2lvbkZ1bmN0aW9uIGZ1bmN0aW9uLCB2b2lkKiBhcmd1bWVudCkKLXsKLSAg
ICBtX3JlcXVlc3QgPSByZXF1ZXN0OwotICAgIG1fZm9ybVN0YXRlID0gZm9ybVN0YXRlOwotICAg
IG1fZnJhbWVOYW1lID0gU3RyaW5nKCk7Ci0KLSAgICBtX25hdmlnYXRpb25GdW5jdGlvbiA9IGZ1
bmN0aW9uOwotICAgIG1fbmV3V2luZG93RnVuY3Rpb24gPSAwOwotICAgIG1fY29udGVudEZ1bmN0
aW9uID0gMDsKLSAgICBtX2FyZ3VtZW50ID0gYXJndW1lbnQ7Ci19Ci0KLXZvaWQgUG9saWN5Q2hl
Y2s6OnNldChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFBhc3NSZWZQdHI8Rm9ybVN0
YXRlPiBmb3JtU3RhdGUsCi0gICAgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIE5ld1dpbmRvd1Bv
bGljeURlY2lzaW9uRnVuY3Rpb24gZnVuY3Rpb24sIHZvaWQqIGFyZ3VtZW50KQotewotICAgIG1f
cmVxdWVzdCA9IHJlcXVlc3Q7Ci0gICAgbV9mb3JtU3RhdGUgPSBmb3JtU3RhdGU7Ci0gICAgbV9m
cmFtZU5hbWUgPSBmcmFtZU5hbWU7Ci0KLSAgICBtX25hdmlnYXRpb25GdW5jdGlvbiA9IDA7Ci0g
ICAgbV9uZXdXaW5kb3dGdW5jdGlvbiA9IGZ1bmN0aW9uOwotICAgIG1fY29udGVudEZ1bmN0aW9u
ID0gMDsKLSAgICBtX2FyZ3VtZW50ID0gYXJndW1lbnQ7Ci19Ci0KLXZvaWQgUG9saWN5Q2hlY2s6
OnNldChDb250ZW50UG9saWN5RGVjaXNpb25GdW5jdGlvbiBmdW5jdGlvbiwgdm9pZCogYXJndW1l
bnQpCi17Ci0gICAgbV9yZXF1ZXN0ID0gUmVzb3VyY2VSZXF1ZXN0KCk7Ci0gICAgbV9mb3JtU3Rh
dGUgPSAwOwotICAgIG1fZnJhbWVOYW1lID0gU3RyaW5nKCk7Ci0KLSAgICBtX25hdmlnYXRpb25G
dW5jdGlvbiA9IDA7Ci0gICAgbV9uZXdXaW5kb3dGdW5jdGlvbiA9IDA7Ci0gICAgbV9jb250ZW50
RnVuY3Rpb24gPSBmdW5jdGlvbjsKLSAgICBtX2FyZ3VtZW50ID0gYXJndW1lbnQ7Ci19Ci0KLXZv
aWQgUG9saWN5Q2hlY2s6OmNhbGwoYm9vbCBzaG91bGRDb250aW51ZSkKLXsKLSAgICBpZiAobV9u
YXZpZ2F0aW9uRnVuY3Rpb24pCi0gICAgICAgIG1fbmF2aWdhdGlvbkZ1bmN0aW9uKG1fYXJndW1l
bnQsIG1fcmVxdWVzdCwgbV9mb3JtU3RhdGUuZ2V0KCksIHNob3VsZENvbnRpbnVlKTsKLSAgICBp
ZiAobV9uZXdXaW5kb3dGdW5jdGlvbikKLSAgICAgICAgbV9uZXdXaW5kb3dGdW5jdGlvbihtX2Fy
Z3VtZW50LCBtX3JlcXVlc3QsIG1fZm9ybVN0YXRlLmdldCgpLCBtX2ZyYW1lTmFtZSwgc2hvdWxk
Q29udGludWUpOwotICAgIEFTU0VSVCghbV9jb250ZW50RnVuY3Rpb24pOwotfQotCi12b2lkIFBv
bGljeUNoZWNrOjpjYWxsKFBvbGljeUFjdGlvbiBhY3Rpb24pCi17Ci0gICAgQVNTRVJUKCFtX25h
dmlnYXRpb25GdW5jdGlvbik7Ci0gICAgQVNTRVJUKCFtX25ld1dpbmRvd0Z1bmN0aW9uKTsKLSAg
ICBBU1NFUlQobV9jb250ZW50RnVuY3Rpb24pOwotICAgIG1fY29udGVudEZ1bmN0aW9uKG1fYXJn
dW1lbnQsIGFjdGlvbik7Ci19Ci0KLXZvaWQgUG9saWN5Q2hlY2s6OmNsZWFyUmVxdWVzdCgpCi17
Ci0gICAgbV9yZXF1ZXN0ID0gUmVzb3VyY2VSZXF1ZXN0KCk7Ci0gICAgbV9mb3JtU3RhdGUgPSAw
OwotICAgIG1fZnJhbWVOYW1lID0gU3RyaW5nKCk7Ci19Ci0KLXZvaWQgUG9saWN5Q2hlY2s6OmNh
bmNlbCgpCi17Ci0gICAgY2xlYXJSZXF1ZXN0KCk7Ci0gICAgaWYgKG1fbmF2aWdhdGlvbkZ1bmN0
aW9uKQotICAgICAgICBtX25hdmlnYXRpb25GdW5jdGlvbihtX2FyZ3VtZW50LCBtX3JlcXVlc3Qs
IG1fZm9ybVN0YXRlLmdldCgpLCBmYWxzZSk7Ci0gICAgaWYgKG1fbmV3V2luZG93RnVuY3Rpb24p
Ci0gICAgICAgIG1fbmV3V2luZG93RnVuY3Rpb24obV9hcmd1bWVudCwgbV9yZXF1ZXN0LCBtX2Zv
cm1TdGF0ZS5nZXQoKSwgbV9mcmFtZU5hbWUsIGZhbHNlKTsKLSAgICBpZiAobV9jb250ZW50RnVu
Y3Rpb24pCi0gICAgICAgIG1fY29udGVudEZ1bmN0aW9uKG1fYXJndW1lbnQsIFBvbGljeUlnbm9y
ZSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9h
ZGVyL1BvbGljeUNoZWNrLmggYi9XZWJDb3JlL2xvYWRlci9Qb2xpY3lDaGVjay5oCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NjM1ZDUwLi4wMDAwMDAwCi0tLSBhL1dlYkNvcmUvbG9h
ZGVyL1BvbGljeUNoZWNrLmgKKysrIC9kZXYvbnVsbApAQCAtMSw4MCArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAwOSBUb3JjaCBNb2JpbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLiAoaHR0cDovL3d3dy50b3JjaG1vYmlsZS5jb20vKQotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4gCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4gCi0gKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRl
ciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgotICogICAgIGl0cyBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKLSAq
ICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uIAotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5E
IElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0g
KiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBP
UiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNp
Zm5kZWYgUG9saWN5Q2hlY2tfaAotI2RlZmluZSBQb2xpY3lDaGVja19oCi0KLSNpbmNsdWRlICJG
cmFtZUxvYWRlclR5cGVzLmgiCi0jaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKLSNpbmNsdWRl
ICJSZXNvdXJjZVJlcXVlc3QuaCIKLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0KLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLQotICAgIGNsYXNzIEZvcm1TdGF0ZTsKLQotICAgIHR5cGVkZWYgdm9pZCAo
Kk5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbkZ1bmN0aW9uKSh2b2lkKiBhcmd1bWVudCwKLSAgICAg
ICAgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgUGFzc1JlZlB0cjxGb3JtU3RhdGU+LCBib29sIHNo
b3VsZENvbnRpbnVlKTsKLSAgICB0eXBlZGVmIHZvaWQgKCpOZXdXaW5kb3dQb2xpY3lEZWNpc2lv
bkZ1bmN0aW9uKSh2b2lkKiBhcmd1bWVudCwKLSAgICAgICAgY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiwgUGFzc1JlZlB0cjxGb3JtU3RhdGU+LCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgYm9vbCBz
aG91bGRDb250aW51ZSk7Ci0gICAgdHlwZWRlZiB2b2lkICgqQ29udGVudFBvbGljeURlY2lzaW9u
RnVuY3Rpb24pKHZvaWQqIGFyZ3VtZW50LCBQb2xpY3lBY3Rpb24pOwotCi0gICAgY2xhc3MgUG9s
aWN5Q2hlY2sgewotICAgIHB1YmxpYzoKLSAgICAgICAgUG9saWN5Q2hlY2soKTsKLSAgICAgICAg
flBvbGljeUNoZWNrKCk7Ci0KLSAgICAgICAgdm9pZCBjbGVhcigpOwotICAgICAgICB2b2lkIHNl
dChjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBQYXNzUmVmUHRyPEZvcm1TdGF0ZT4sCi0gICAgICAg
ICAgICBOYXZpZ2F0aW9uUG9saWN5RGVjaXNpb25GdW5jdGlvbiwgdm9pZCogYXJndW1lbnQpOwot
ICAgICAgICB2b2lkIHNldChjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBQYXNzUmVmUHRyPEZvcm1T
dGF0ZT4sIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLAotICAgICAgICAgICAgTmV3V2luZG93UG9s
aWN5RGVjaXNpb25GdW5jdGlvbiwgdm9pZCogYXJndW1lbnQpOwotICAgICAgICB2b2lkIHNldChD
b250ZW50UG9saWN5RGVjaXNpb25GdW5jdGlvbiwgdm9pZCogYXJndW1lbnQpOwotCi0gICAgICAg
IGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVxdWVz
dDsgfQotICAgICAgICB2b2lkIGNsZWFyUmVxdWVzdCgpOwotCi0gICAgICAgIHZvaWQgY2FsbChi
b29sIHNob3VsZENvbnRpbnVlKTsKLSAgICAgICAgdm9pZCBjYWxsKFBvbGljeUFjdGlvbik7Ci0g
ICAgICAgIHZvaWQgY2FuY2VsKCk7Ci0KLSAgICBwcml2YXRlOgotICAgICAgICBSZXNvdXJjZVJl
cXVlc3QgbV9yZXF1ZXN0OwotICAgICAgICBSZWZQdHI8Rm9ybVN0YXRlPiBtX2Zvcm1TdGF0ZTsK
LSAgICAgICAgU3RyaW5nIG1fZnJhbWVOYW1lOwotCi0gICAgICAgIE5hdmlnYXRpb25Qb2xpY3lE
ZWNpc2lvbkZ1bmN0aW9uIG1fbmF2aWdhdGlvbkZ1bmN0aW9uOwotICAgICAgICBOZXdXaW5kb3dQ
b2xpY3lEZWNpc2lvbkZ1bmN0aW9uIG1fbmV3V2luZG93RnVuY3Rpb247Ci0gICAgICAgIENvbnRl
bnRQb2xpY3lEZWNpc2lvbkZ1bmN0aW9uIG1fY29udGVudEZ1bmN0aW9uOwotICAgICAgICB2b2lk
KiBtX2FyZ3VtZW50OwotICAgIH07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlm
IC8vIFBvbGljeUNoZWNrX2g=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>40842</attachid>
            <date>2009-10-07 21:39:11 -0700</date>
            <delta_ts>2009-10-07 23:09:55 -0700</delta_ts>
            <desc>Patch v1</desc>
            <filename>bug-30193-20091007213909.patch</filename>
            <type>text/plain</type>
            <size>37751</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MTYyM2U0ZC4uYzQ5Yjc3ZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMiBAQAorMjAwOS0xMC0wNiAgQWRhbSBCYXJ0aCAg
PGFiYXJ0aEB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIE1vdmUgUG9saWN5Q2hlY2tlciB0byBpdCdzIG93biBmaWxlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMDE5MworCisgICAgICAg
IFRoaXMgaXMganVzdCBtb3ZpbmcgY29kZSBhcm91bmQgYW5kIHJlLW5hbWluZyB0aGluZ3MuCisK
KyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAg
ICAgICogV2ViQ29yZS5wcm86CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3By
b2o6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAg
ICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVy
Lmg6CisgICAgICAgICogbG9hZGVyL1BvbGljeUNhbGxiYWNrLmNwcDogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlOjpQb2xpY3lDYWxsYmFjazo6UG9saWN5Q2FsbGJhY2spOgorICAgICAgICAoV2Vi
Q29yZTo6UG9saWN5Q2FsbGJhY2s6On5Qb2xpY3lDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3Jl
OjpQb2xpY3lDYWxsYmFjazo6Y2xlYXIpOgorICAgICAgICAoV2ViQ29yZTo6UG9saWN5Q2FsbGJh
Y2s6OnNldCk6CisgICAgICAgIChXZWJDb3JlOjpQb2xpY3lDYWxsYmFjazo6Y2FsbCk6CisgICAg
ICAgIChXZWJDb3JlOjpQb2xpY3lDYWxsYmFjazo6Y2xlYXJSZXF1ZXN0KToKKyAgICAgICAgKFdl
YkNvcmU6OlBvbGljeUNhbGxiYWNrOjpjYW5jZWwpOgorICAgICAgICAqIGxvYWRlci9Qb2xpY3lD
YWxsYmFjay5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBvbGljeUNhbGxiYWNrOjpyZXF1
ZXN0KToKKyAgICAgICAgKiBsb2FkZXIvUG9saWN5Q2hlY2suY3BwOiBSZW1vdmVkLgorICAgICAg
ICAqIGxvYWRlci9Qb2xpY3lDaGVjay5oOiBSZW1vdmVkLgorCiAyMDA5LTEwLTA3ICBBZGFtIEJh
cnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRs
ZXIuCmRpZmYgLS1naXQgYS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtIGIvV2ViQ29yZS9HTlVtYWtl
ZmlsZS5hbQppbmRleCAzNzYyMGFmLi44YTZlYmYyIDEwMDY0NAotLS0gYS9XZWJDb3JlL0dOVW1h
a2VmaWxlLmFtCisrKyBiL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KQEAgLTEyNDUsOCArMTI0NSwx
MCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVdlYkNvcmUvbG9hZGVyL1BsYWNlaG9sZGVyRG9j
dW1lbnQuaCBcCiAJV2ViQ29yZS9sb2FkZXIvUGx1Z2luRG9jdW1lbnQuY3BwIFwKIAlXZWJDb3Jl
L2xvYWRlci9QbHVnaW5Eb2N1bWVudC5oIFwKLQlXZWJDb3JlL2xvYWRlci9Qb2xpY3lDaGVjay5j
cHAgXAotCVdlYkNvcmUvbG9hZGVyL1BvbGljeUNoZWNrLmggXAorCVdlYkNvcmUvbG9hZGVyL1Bv
bGljeUNhbGxiYWNrLmNwcCBcCisJV2ViQ29yZS9sb2FkZXIvUG9saWN5Q2FsbGJhY2suaCBcCisJ
V2ViQ29yZS9sb2FkZXIvUG9saWN5Q2hlY2tlci5jcHAgXAorCVdlYkNvcmUvbG9hZGVyL1BvbGlj
eUNoZWNrZXIuaCBcCiAJV2ViQ29yZS9sb2FkZXIvUHJvZ3Jlc3NUcmFja2VyLmNwcCBcCiAJV2Vi
Q29yZS9sb2FkZXIvUHJvZ3Jlc3NUcmFja2VyLmggXAogCVdlYkNvcmUvbG9hZGVyL1JlZGlyZWN0
U2NoZWR1bGVyLmNwcCBcCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1dlYkNv
cmUvV2ViQ29yZS5neXBpCmluZGV4IDA0Y2NiMjkuLmE4Y2ZlYjkgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvV2ViQ29yZS5neXBpCisrKyBiL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0xNjMxLDggKzE2
MzEsMTAgQEAKICAgICAgICAgICAgICdsb2FkZXIvUGxhY2Vob2xkZXJEb2N1bWVudC5oJywKICAg
ICAgICAgICAgICdsb2FkZXIvUGx1Z2luRG9jdW1lbnQuY3BwJywKICAgICAgICAgICAgICdsb2Fk
ZXIvUGx1Z2luRG9jdW1lbnQuaCcsCi0gICAgICAgICAgICAnbG9hZGVyL1BvbGljeUNoZWNrLmNw
cCcsCi0gICAgICAgICAgICAnbG9hZGVyL1BvbGljeUNoZWNrLmgnLAorICAgICAgICAgICAgJ2xv
YWRlci9Qb2xpY3lDYWxsYmFjay5jcHAnLAorICAgICAgICAgICAgJ2xvYWRlci9Qb2xpY3lDYWxs
YmFjay5oJywKKyAgICAgICAgICAgICdsb2FkZXIvUG9saWN5Q2hlY2tlci5jcHAnLAorICAgICAg
ICAgICAgJ2xvYWRlci9Qb2xpY3lDaGVja2VyLmgnLAogICAgICAgICAgICAgJ2xvYWRlci9Qcm9n
cmVzc1RyYWNrZXIuY3BwJywKICAgICAgICAgICAgICdsb2FkZXIvUHJvZ3Jlc3NUcmFja2VyLmgn
LAogICAgICAgICAgICAgJ2xvYWRlci9SZWRpcmVjdFNjaGVkdWxlci5jcHAnLApkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9XZWJDb3JlLnBybyBiL1dlYkNvcmUvV2ViQ29yZS5wcm8KaW5kZXggOTY3MThm
Yi4uMjRjZTBjOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnBybworKysgYi9XZWJDb3Jl
L1dlYkNvcmUucHJvCkBAIC0xMTEzLDcgKzExMTMsOCBAQCBTT1VSQ0VTICs9IFwKICAgICBsb2Fk
ZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuY3BwIFwKICAgICBsb2FkZXIvUGxhY2Vob2xk
ZXJEb2N1bWVudC5jcHAgXAogICAgIGxvYWRlci9QbHVnaW5Eb2N1bWVudC5jcHAgXAotICAgIGxv
YWRlci9Qb2xpY3lDaGVjay5jcHAgXAorICAgIGxvYWRlci9Qb2xpY3lDYWxsYmFjay5jcHAgXAor
ICAgIGxvYWRlci9Qb2xpY3lDaGVja2VyLmNwcCBcCiAgICAgbG9hZGVyL1Byb2dyZXNzVHJhY2tl
ci5jcHAgXAogICAgIGxvYWRlci9SZWRpcmVjdFNjaGVkdWxlci5jcHAgXAogICAgIGxvYWRlci9S
ZXF1ZXN0LmNwcCBcCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUu
dmNwcm9qIGIvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCA4M2Uz
YTIxLi45YTllM2VjIDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUu
dmNwcm9qCisrKyBiL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAgLTE3
NDg5LDExICsxNzQ4OSwxOSBAQAogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJ
UmVsYXRpdmVQYXRoPSIuLlxsb2FkZXJcUG9saWN5Q2hlY2suY3BwIg0KKwkJCQlSZWxhdGl2ZVBh
dGg9Ii4uXGxvYWRlclxQb2xpY3lDYWxsYmFjay5jcHAiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQog
CQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxsb2FkZXJcUG9saWN5Q2hlY2suaCINCisJ
CQkJUmVsYXRpdmVQYXRoPSIuLlxsb2FkZXJcUG9saWN5Q2FsbGJhY2suaCINCisJCQkJPg0KKwkJ
CTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGxvYWRlclxQb2xpY3lD
aGVja2VyLmNwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2
ZVBhdGg9Ii4uXGxvYWRlclxQb2xpY3lDaGVja2VyLmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQog
CQkJPEZpbGUNCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvaiBiL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4
IDAxNmE1ZWYuLjE2YTFlNDIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCisrKyBiL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCkBAIC0yMzQ1LDEwICsyMzQ1LDEyIEBACiAJCTkzRjlCN0EwMEJBNjAzMjYwMDg1NDA2
NCAvKiBKU0NEQVRBU2VjdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5M0Y5Qjc5RTBCQTYwMzI2MDA4NTQwNjQgLyogSlNDREFUQVNlY3Rpb24u
Y3BwICovOyB9OwogCQk5M0Y5QjdBMTBCQTYwMzI2MDA4NTQwNjQgLyogSlNDREFUQVNlY3Rpb24u
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRjlCNzlG
MEJBNjAzMjYwMDg1NDA2NCAvKiBKU0NEQVRBU2VjdGlvbi5oICovOyB9OwogCQk5M0ZEQUZDQTBC
MTEzMDc0MDBFMjc0NkYgLyogRWRpdG9ySW5zZXJ0QWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0ZEQUZDOTBCMTEzMDc0MDBFMjc0NkYgLyog
RWRpdG9ySW5zZXJ0QWN0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJOTcwNTk5NzcxMDdEOTc1MjAwQTUwQTdDIC8qIFBvbGljeUNhbGxiYWNr
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3MDU5
OTczMTA3RDk3NTIwMEE1MEE3QyAvKiBQb2xpY3lDYWxsYmFjay5jcHAgKi87IH07CisJCTk3MDU5
OTc4MTA3RDk3NTIwMEE1MEE3QyAvKiBQb2xpY3lDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTcwNTk5NzQxMDdEOTc1MjAwQTUwQTdDIC8q
IFBvbGljeUNhbGxiYWNrLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJOTcwNTk5NzkxMDdEOTc1MjAwQTUwQTdDIC8qIFBvbGljeUNoZWNrZXIuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTcwNTk5NzUx
MDdEOTc1MjAwQTUwQTdDIC8qIFBvbGljeUNoZWNrZXIuY3BwICovOyB9OworCQk5NzA1OTk3QTEw
N0Q5NzUyMDBBNTBBN0MgLyogUG9saWN5Q2hlY2tlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTcwNTk5NzYxMDdEOTc1MjAwQTUwQTdDIC8qIFBvbGlj
eUNoZWNrZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk5NzlGNDNEMzEwNzVFNDRBMDAwMEY4M0IgLyogUmVkaXJlY3RTY2hlZHVsZXIuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTc5RjQzRDExMDc1
RTQ0QTAwMDBGODNCIC8qIFJlZGlyZWN0U2NoZWR1bGVyLmNwcCAqLzsgfTsKIAkJOTc5RjQzRDQx
MDc1RTQ0QTAwMDBGODNCIC8qIFJlZGlyZWN0U2NoZWR1bGVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NzlGNDNEMjEwNzVFNDRBMDAwMEY4M0IgLyog
UmVkaXJlY3RTY2hlZHVsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwotCQk5N0JDNjNCODEwNzZDOTdGMDAyQzIxNDIgLyogUG9saWN5Q2hlY2suY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTdCQzYzQjYx
MDc2Qzk3RjAwMkMyMTQyIC8qIFBvbGljeUNoZWNrLmNwcCAqLzsgfTsKLQkJOTdCQzYzQjkxMDc2
Qzk3RjAwMkMyMTQyIC8qIFBvbGljeUNoZWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5N0JDNjNCNzEwNzZDOTdGMDAyQzIxNDIgLyogUG9saWN5Q2hl
Y2suaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5
N0RENEQ4NjBGREY0RDZFMDBFQ0Y5QTQgLyogWFNTQXVkaXRvci5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5N0RENEQ4NDBGREY0RDZEMDBFQ0Y5QTQg
LyogWFNTQXVkaXRvci5jcHAgKi87IH07CiAJCTk3REQ0RDg3MEZERjRENkUwMEVDRjlBNCAvKiBY
U1NBdWRpdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA5N0RENEQ4NTBGREY0RDZFMDBFQ0Y5QTQgLyogWFNTQXVkaXRvci5oICovOyB9OwogCQlBMTdD
ODEyMjBGMkE1Q0Y3MDA1REFBRUIgLyogSFRNTEVsZW1lbnRGYWN0b3J5LmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExN0M4MTIwMEYyQTVDRjcwMDVE
QUFFQiAvKiBIVE1MRWxlbWVudEZhY3RvcnkuY3BwICovOyB9OwpAQCAtNzUzNiwxMCArNzUzOCwx
MiBAQAogCQk5M0Y5Qjc5RTBCQTYwMzI2MDA4NTQwNjQgLyogSlNDREFUQVNlY3Rpb24uY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNDREFUQVNlY3Rpb24uY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0Y5Qjc5RjBCQTYwMzI2MDA4NTQwNjQgLyog
SlNDREFUQVNlY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNDREFU
QVNlY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNGREFGQzkwQjExMzA3
NDAwRTI3NDZGIC8qIEVkaXRvckluc2VydEFjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gRWRpdG9ySW5zZXJ0QWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTk3MDU5OTczMTA3RDk3NTIwMEE1MEE3QyAvKiBQb2xpY3lDYWxsYmFjay5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQb2xpY3lDYWxsYmFjay5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk3MDU5OTc0MTA3RDk3NTIwMEE1MEE3QyAvKiBQ
b2xpY3lDYWxsYmFjay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQb2xpY3lD
YWxsYmFjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5NzA1OTk3NTEwN0Q5NzUy
MDBBNTBBN0MgLyogUG9saWN5Q2hlY2tlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBQb2xpY3lDaGVja2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJOTcwNTk5NzYxMDdEOTc1MjAwQTUwQTdDIC8qIFBvbGljeUNoZWNrZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUG9saWN5Q2hlY2tlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk5NzlGNDNEMTEwNzVFNDRBMDAwMEY4M0IgLyogUmVkaXJlY3RTY2hlZHVs
ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVkaXJlY3RTY2hl
ZHVsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5NzlGNDNEMjEwNzVFNDRB
MDAwMEY4M0IgLyogUmVkaXJlY3RTY2hlZHVsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gUmVkaXJlY3RTY2hlZHVsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJOTdCQzYzQjYxMDc2Qzk3RjAwMkMyMTQyIC8qIFBvbGljeUNoZWNrLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBvbGljeUNoZWNrLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJOTdCQzYzQjcxMDc2Qzk3RjAwMkMyMTQyIC8qIFBvbGljeUNoZWNr
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBvbGljeUNoZWNrLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk3REQ0RDg0MEZERjRENkQwMEVDRjlBNCAvKiBYU1NB
dWRpdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFhTU0F1ZGl0
b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5N0RENEQ4NTBGREY0RDZFMDBF
Q0Y5QTQgLyogWFNTQXVkaXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBY
U1NBdWRpdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExN0M4MTIwMEYyQTVD
RjcwMDVEQUFFQiAvKiBIVE1MRWxlbWVudEZhY3RvcnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSFRNTEVsZW1lbnRGYWN0b3J5LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTE0NTg4LDggKzE0NTkyLDEwIEBACiAJCQkJMzc3QzRDREQxMDE0RTlG
NjAwQjlBRTQyIC8qIFBsYWNlaG9sZGVyRG9jdW1lbnQuaCAqLywKIAkJCQkxQUM2OTRDNTBBM0Ix
Njc2MDAzRjUwNDkgLyogUGx1Z2luRG9jdW1lbnQuY3BwICovLAogCQkJCTFBQzY5NEM2MEEzQjE2
NzYwMDNGNTA0OSAvKiBQbHVnaW5Eb2N1bWVudC5oICovLAotCQkJCTk3QkM2M0I2MTA3NkM5N0Yw
MDJDMjE0MiAvKiBQb2xpY3lDaGVjay5jcHAgKi8sCi0JCQkJOTdCQzYzQjcxMDc2Qzk3RjAwMkMy
MTQyIC8qIFBvbGljeUNoZWNrLmggKi8sCisJCQkJOTcwNTk5NzMxMDdEOTc1MjAwQTUwQTdDIC8q
IFBvbGljeUNhbGxiYWNrLmNwcCAqLywKKwkJCQk5NzA1OTk3NDEwN0Q5NzUyMDBBNTBBN0MgLyog
UG9saWN5Q2FsbGJhY2suaCAqLywKKwkJCQk5NzA1OTk3NTEwN0Q5NzUyMDBBNTBBN0MgLyogUG9s
aWN5Q2hlY2tlci5jcHAgKi8sCisJCQkJOTcwNTk5NzYxMDdEOTc1MjAwQTUwQTdDIC8qIFBvbGlj
eUNoZWNrZXIuaCAqLywKIAkJCQkxQTJBNjgyMTBCNUJFREU3MDAwMkE0ODAgLyogUHJvZ3Jlc3NU
cmFja2VyLmNwcCAqLywKIAkJCQkxQTJBNjgyMjBCNUJFREU3MDAwMkE0ODAgLyogUHJvZ3Jlc3NU
cmFja2VyLmggKi8sCiAJCQkJOTc5RjQzRDExMDc1RTQ0QTAwMDBGODNCIC8qIFJlZGlyZWN0U2No
ZWR1bGVyLmNwcCAqLywKQEAgLTE3OTY0LDkgKzE3OTcwLDEwIEBACiAJCQkJOTc5RjQzRDQxMDc1
RTQ0QTAwMDBGODNCIC8qIFJlZGlyZWN0U2NoZWR1bGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlC
Qzk0NjJEODEwN0E3QjRDMDA4NTcxOTMgLyogQmVmb3JlTG9hZEV2ZW50LmggaW4gSGVhZGVycyAq
LywKIAkJCQlCQzk0NjM0ODEwN0E5MzY2MDA4NTcxOTMgLyogSlNCZWZvcmVMb2FkRXZlbnQuaCBp
biBIZWFkZXJzICovLAotCQkJCTk3QkM2M0I5MTA3NkM5N0YwMDJDMjE0MiAvKiBQb2xpY3lDaGVj
ay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQ0OUUyNEMxMDdENEE4NDAwQjU3OTNGIC8qIEpTQ2Fs
bGJhY2tEYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzVFNDk3NjEwNzUyQUNCMDBDOUI4OTYg
LyogU2VyaWFsaXplZFNjcmlwdFZhbHVlLmggaW4gSGVhZGVycyAqLywKKwkJCQk5NzA1OTk3ODEw
N0Q5NzUyMDBBNTBBN0MgLyogUG9saWN5Q2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAorCQkJCTk3
MDU5OTdBMTA3RDk3NTIwMEE1MEE3QyAvKiBQb2xpY3lDaGVja2VyLmggaW4gSGVhZGVycyAqLywK
IAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsK
QEAgLTIwMDg2LDkgKzIwMDkzLDEwIEBACiAJCQkJNURCMUJDNkIxMDcxNUE2NDAwRUZBQTQ5IC8q
IFRyYW5zZm9ybVNvdXJjZUxpYnhzbHQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTc5RjQzRDMx
MDc1RTQ0QTAwMDBGODNCIC8qIFJlZGlyZWN0U2NoZWR1bGVyLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUJDOTQ2MzQ2MTA3QTkzNEIwMDg1NzE5MyAvKiBKU0JlZm9yZUxvYWRFdmVudC5jcHAgaW4g
U291cmNlcyAqLywKLQkJCQk5N0JDNjNCODEwNzZDOTdGMDAyQzIxNDIgLyogUG9saWN5Q2hlY2su
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ0OUUyODcxMDdENERCNDAwQjU3OTNGIC8qIEpTQ2Fs
bGJhY2tEYXRhLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3NUU0OTc3MTA3NTJBQ0IwMEM5Qjg5
NiAvKiBTZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJOTcwNTk5
NzcxMDdEOTc1MjAwQTUwQTdDIC8qIFBvbGljeUNhbGxiYWNrLmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCTk3MDU5OTc5MTA3RDk3NTIwMEE1MEE3QyAvKiBQb2xpY3lDaGVja2VyLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAw
OwogCQl9OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwIGIvV2Vi
Q29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCmluZGV4IDU3YTdhNzkuLjgzZGE5MWQgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAorKysgYi9XZWJDb3JlL2xvYWRl
ci9GcmFtZUxvYWRlci5jcHAKQEAgLTIxNjMsNDMgKzIxNjMsMTEgQEAgYm9vbCBGcmFtZUxvYWRl
cjo6d2lsbExvYWRNZWRpYUVsZW1lbnRVUkwoS1VSTCYgdXJsKQogICAgIHJldHVybiBlcnJvci5p
c051bGwoKTsKIH0KIAotdm9pZCBQb2xpY3lDaGVja2VyOjpoYW5kbGVVbmltcGxlbWVudGFibGVQ
b2xpY3koY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCi17Ci0gICAgbV9kZWxlZ2F0ZUlzSGFu
ZGxpbmdVbmltcGxlbWVudGFibGVQb2xpY3kgPSB0cnVlOwotICAgIG1fZnJhbWUtPmxvYWRlcigp
LT5jbGllbnQoKS0+ZGlzcGF0Y2hVbmFibGVUb0ltcGxlbWVudFBvbGljeShlcnJvcik7Ci0gICAg
bV9kZWxlZ2F0ZUlzSGFuZGxpbmdVbmltcGxlbWVudGFibGVQb2xpY3kgPSBmYWxzZTsKLX0KLQot
dm9pZCBQb2xpY3lDaGVja2VyOjpjYW5ub3RTaG93TUlNRVR5cGUoY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYgcmVzcG9uc2UpCi17Ci0gICAgaGFuZGxlVW5pbXBsZW1lbnRhYmxlUG9saWN5KG1fZnJh
bWUtPmxvYWRlcigpLT5jbGllbnQoKS0+Y2Fubm90U2hvd01JTUVUeXBlRXJyb3IocmVzcG9uc2Up
KTsKLX0KLQogUmVzb3VyY2VFcnJvciBGcmFtZUxvYWRlcjo6aW50ZXJydXB0aW9uRm9yUG9saWN5
Q2hhbmdlRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewogICAgIHJldHVy
biBtX2NsaWVudC0+aW50ZXJydXB0Rm9yUG9saWN5Q2hhbmdlRXJyb3IocmVxdWVzdCk7CiB9CiAK
LVBvbGljeUNoZWNrZXI6OlBvbGljeUNoZWNrZXIoRnJhbWUqIGZyYW1lKQotICAgIDogbV9mcmFt
ZShmcmFtZSkKLSAgICAsIG1fZGVsZWdhdGVJc0RlY2lkaW5nTmF2aWdhdGlvblBvbGljeShmYWxz
ZSkKLSAgICAsIG1fZGVsZWdhdGVJc0hhbmRsaW5nVW5pbXBsZW1lbnRhYmxlUG9saWN5KGZhbHNl
KQotICAgICwgbV9sb2FkVHlwZShGcmFtZUxvYWRUeXBlU3RhbmRhcmQpCi17Ci19Ci0KLXZvaWQg
UG9saWN5Q2hlY2tlcjo6Y2hlY2tOYXZpZ2F0aW9uUG9saWN5KGNvbnN0IFJlc291cmNlUmVxdWVz
dCYgbmV3UmVxdWVzdCwgTmF2aWdhdGlvblBvbGljeURlY2lzaW9uRnVuY3Rpb24gZnVuY3Rpb24s
IHZvaWQqIGFyZ3VtZW50KQotewotICAgIGNoZWNrTmF2aWdhdGlvblBvbGljeShuZXdSZXF1ZXN0
LCBtX2ZyYW1lLT5sb2FkZXIoKS0+YWN0aXZlRG9jdW1lbnRMb2FkZXIoKSwgMCwgZnVuY3Rpb24s
IGFyZ3VtZW50KTsKLX0KLQotdm9pZCBQb2xpY3lDaGVja2VyOjpjaGVja0NvbnRlbnRQb2xpY3ko
Y29uc3QgU3RyaW5nJiBNSU1FVHlwZSwgQ29udGVudFBvbGljeURlY2lzaW9uRnVuY3Rpb24gZnVu
Y3Rpb24sIHZvaWQqIGFyZ3VtZW50KQotewotICAgIG1fcG9saWN5Q2hlY2suc2V0KGZ1bmN0aW9u
LCBhcmd1bWVudCk7Ci0gICAgbV9mcmFtZS0+bG9hZGVyKCktPmNsaWVudCgpLT5kaXNwYXRjaERl
Y2lkZVBvbGljeUZvck1JTUVUeXBlKCZQb2xpY3lDaGVja2VyOjpjb250aW51ZUFmdGVyQ29udGVu
dFBvbGljeSwKLSAgICAgICAgTUlNRVR5cGUsIG1fZnJhbWUtPmxvYWRlcigpLT5hY3RpdmVEb2N1
bWVudExvYWRlcigpLT5yZXF1ZXN0KCkpOwotfQotCiBib29sIEZyYW1lTG9hZGVyOjpzaG91bGRS
ZWxvYWRUb0hhbmRsZVVucmVhY2hhYmxlVVJMKERvY3VtZW50TG9hZGVyKiBkb2NMb2FkZXIpCiB7
CiAgICAgS1VSTCB1bnJlYWNoYWJsZVVSTCA9IGRvY0xvYWRlci0+dW5yZWFjaGFibGVVUkwoKTsK
QEAgLTI4NTEsMTIgKzI4MTksNiBAQCBTdHJpbmcgRnJhbWVMb2FkZXI6OmdlbmVyYXRlZE1JTUVU
eXBlRm9yVVJMU2NoZW1lKGNvbnN0IFN0cmluZyYgVVJMU2NoZW1lKQogICAgIHJldHVybiBtX2Ns
aWVudC0+Z2VuZXJhdGVkTUlNRVR5cGVGb3JVUkxTY2hlbWUoVVJMU2NoZW1lKTsKIH0KIAotdm9p
ZCBQb2xpY3lDaGVja2VyOjpjYW5jZWxDaGVjaygpCi17Ci0gICAgbV9mcmFtZS0+bG9hZGVyKCkt
PmNsaWVudCgpLT5jYW5jZWxQb2xpY3lDaGVjaygpOwotICAgIG1fcG9saWN5Q2hlY2suY2xlYXIo
KTsKLX0KLQogdm9pZCBGcmFtZUxvYWRlcjo6ZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJv
dmlzaW9uYWxMb2FkRm9yRnJhbWUoKQogewogICAgIG1fY2xpZW50LT5kaXNwYXRjaERpZFJlY2Vp
dmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZCgpOwpAQCAtMjk3NiwxNCArMjkzOCw2
IEBAIENhY2hlUG9saWN5IEZyYW1lTG9hZGVyOjpzdWJyZXNvdXJjZUNhY2hlUG9saWN5KCkgY29u
c3QKICAgICByZXR1cm4gQ2FjaGVQb2xpY3lWZXJpZnk7CiB9CiAKLXZvaWQgUG9saWN5Q2hlY2tl
cjo6c3RvcENoZWNrKCkKLXsKLSAgICBtX2ZyYW1lLT5sb2FkZXIoKS0+Y2xpZW50KCktPmNhbmNl
bFBvbGljeUNoZWNrKCk7Ci0gICAgUG9saWN5Q2hlY2sgY2hlY2sgPSBtX3BvbGljeUNoZWNrOwot
ICAgIG1fcG9saWN5Q2hlY2suY2xlYXIoKTsKLSAgICBjaGVjay5jYW5jZWwoKTsKLX0KLQogdm9p
ZCBGcmFtZUxvYWRlcjo6Y2hlY2tMb2FkQ29tcGxldGVGb3JUaGlzRnJhbWUoKQogewogICAgIEFT
U0VSVChtX2NsaWVudC0+aGFzV2ViVmlldygpKTsKQEAgLTMwODIsMjAgKzMwMzYsNiBAQCB2b2lk
IEZyYW1lTG9hZGVyOjpjaGVja0xvYWRDb21wbGV0ZUZvclRoaXNGcmFtZSgpCiAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CiB9CiAKLXZvaWQgUG9saWN5Q2hlY2tlcjo6Y29udGludWVBZnRlckNv
bnRlbnRQb2xpY3koUG9saWN5QWN0aW9uIHBvbGljeSkKLXsKLSAgICBQb2xpY3lDaGVjayBjaGVj
ayA9IG1fcG9saWN5Q2hlY2s7Ci0gICAgbV9wb2xpY3lDaGVjay5jbGVhcigpOwotICAgIGNoZWNr
LmNhbGwocG9saWN5KTsKLX0KLQotdm9pZCBQb2xpY3lDaGVja2VyOjpjb250aW51ZUxvYWRBZnRl
cldpbGxTdWJtaXRGb3JtKFBvbGljeUFjdGlvbikKLXsKLSAgICAvLyBTZWUgaGVhZGVyIGZpbGUg
Zm9yIGFuIGV4cGxhaW5hdGlvbiBvZiB3aHkgdGhpcyBmdW5jdGlvbgotICAgIC8vIGlzbid0IGxp
a2UgdGhlIG90aGVycy4KLSAgICBtX2ZyYW1lLT5sb2FkZXIoKS0+Y29udGludWVMb2FkQWZ0ZXJX
aWxsU3VibWl0Rm9ybSgpOwotfQotCiB2b2lkIEZyYW1lTG9hZGVyOjpjb250aW51ZUxvYWRBZnRl
cldpbGxTdWJtaXRGb3JtKCkKIHsKICAgICBpZiAoIW1fcHJvdmlzaW9uYWxEb2N1bWVudExvYWRl
cikKQEAgLTM1ODgsMTAwICszNTI4LDYgQEAgYm9vbCBGcmFtZUxvYWRlcjo6c2hvdWxkU2Nyb2xs
VG9BbmNob3IoYm9vbCBpc0Zvcm1TdWJtaXNzaW9uLCBGcmFtZUxvYWRUeXBlIGxvYWQKICAgICAg
ICAgJiYgIW1fZnJhbWUtPmRvY3VtZW50KCktPmlzRnJhbWVTZXQoKTsKIH0KIAotdm9pZCBQb2xp
Y3lDaGVja2VyOjpjaGVja05ld1dpbmRvd1BvbGljeShjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiBh
Y3Rpb24sIE5ld1dpbmRvd1BvbGljeURlY2lzaW9uRnVuY3Rpb24gZnVuY3Rpb24sCi0gICAgY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBQYXNzUmVmUHRyPEZvcm1TdGF0ZT4gZm9ybVN0
YXRlLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgdm9pZCogYXJndW1lbnQpCi17Ci0gICAgbV9w
b2xpY3lDaGVjay5zZXQocmVxdWVzdCwgZm9ybVN0YXRlLCBmcmFtZU5hbWUsIGZ1bmN0aW9uLCBh
cmd1bWVudCk7Ci0gICAgbV9mcmFtZS0+bG9hZGVyKCktPmNsaWVudCgpLT5kaXNwYXRjaERlY2lk
ZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbigmUG9saWN5Q2hlY2tlcjo6Y29udGludWVBZnRlck5l
d1dpbmRvd1BvbGljeSwKLSAgICAgICAgYWN0aW9uLCByZXF1ZXN0LCBmb3JtU3RhdGUsIGZyYW1l
TmFtZSk7Ci19Ci0KLXZvaWQgUG9saWN5Q2hlY2tlcjo6Y29udGludWVBZnRlck5ld1dpbmRvd1Bv
bGljeShQb2xpY3lBY3Rpb24gcG9saWN5KQotewotICAgIFBvbGljeUNoZWNrIGNoZWNrID0gbV9w
b2xpY3lDaGVjazsKLSAgICBtX3BvbGljeUNoZWNrLmNsZWFyKCk7Ci0KLSAgICBzd2l0Y2ggKHBv
bGljeSkgewotICAgICAgICBjYXNlIFBvbGljeUlnbm9yZToKLSAgICAgICAgICAgIGNoZWNrLmNs
ZWFyUmVxdWVzdCgpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgUG9saWN5RG93
bmxvYWQ6Ci0gICAgICAgICAgICBtX2ZyYW1lLT5sb2FkZXIoKS0+Y2xpZW50KCktPnN0YXJ0RG93
bmxvYWQoY2hlY2sucmVxdWVzdCgpKTsKLSAgICAgICAgICAgIGNoZWNrLmNsZWFyUmVxdWVzdCgp
OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgUG9saWN5VXNlOgotICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgfQotCi0gICAgY2hlY2suY2FsbChwb2xpY3kgPT0gUG9saWN5VXNlKTsK
LX0KLQotdm9pZCBQb2xpY3lDaGVja2VyOjpjaGVja05hdmlnYXRpb25Qb2xpY3koY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBEb2N1bWVudExvYWRlciogbG9hZGVyLAotICAgIFBhc3NS
ZWZQdHI8Rm9ybVN0YXRlPiBmb3JtU3RhdGUsIE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbkZ1bmN0
aW9uIGZ1bmN0aW9uLCB2b2lkKiBhcmd1bWVudCkKLXsKLSAgICBOYXZpZ2F0aW9uQWN0aW9uIGFj
dGlvbiA9IGxvYWRlci0+dHJpZ2dlcmluZ0FjdGlvbigpOwotICAgIGlmIChhY3Rpb24uaXNFbXB0
eSgpKSB7Ci0gICAgICAgIGFjdGlvbiA9IE5hdmlnYXRpb25BY3Rpb24ocmVxdWVzdC51cmwoKSwg
TmF2aWdhdGlvblR5cGVPdGhlcik7Ci0gICAgICAgIGxvYWRlci0+c2V0VHJpZ2dlcmluZ0FjdGlv
bihhY3Rpb24pOwotICAgIH0KLQotICAgIC8vIERvbid0IGFzayBtb3JlIHRoYW4gb25jZSBmb3Ig
dGhlIHNhbWUgcmVxdWVzdCBvciBpZiB3ZSBhcmUgbG9hZGluZyBhbiBlbXB0eSBVUkwuCi0gICAg
Ly8gVGhpcyBhdm9pZHMgY29uZnVzaW9uIG9uIHRoZSBwYXJ0IG9mIHRoZSBjbGllbnQuCi0gICAg
aWYgKGVxdWFsSWdub3JpbmdIZWFkZXJGaWVsZHMocmVxdWVzdCwgbG9hZGVyLT5sYXN0Q2hlY2tl
ZFJlcXVlc3QoKSkgfHwgKCFyZXF1ZXN0LmlzTnVsbCgpICYmIHJlcXVlc3QudXJsKCkuaXNFbXB0
eSgpKSkgewotICAgICAgICBmdW5jdGlvbihhcmd1bWVudCwgcmVxdWVzdCwgMCwgdHJ1ZSk7Ci0g
ICAgICAgIGxvYWRlci0+c2V0TGFzdENoZWNrZWRSZXF1ZXN0KHJlcXVlc3QpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotICAgIAotICAgIC8vIFdlIGFyZSBhbHdheXMgd2lsbGluZyB0byBzaG93
IGFsdGVybmF0ZSBjb250ZW50IGZvciB1bnJlYWNoYWJsZSBVUkxzOwotICAgIC8vIHRyZWF0IGl0
IGxpa2UgYSByZWxvYWQgc28gaXQgbWFpbnRhaW5zIHRoZSByaWdodCBzdGF0ZSBmb3IgYi9mIGxp
c3QuCi0gICAgaWYgKGxvYWRlci0+c3Vic3RpdHV0ZURhdGEoKS5pc1ZhbGlkKCkgJiYgIWxvYWRl
ci0+c3Vic3RpdHV0ZURhdGEoKS5mYWlsaW5nVVJMKCkuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGlm
IChpc0JhY2tGb3J3YXJkTG9hZFR5cGUobV9sb2FkVHlwZSkpCi0gICAgICAgICAgICBtX2xvYWRU
eXBlID0gRnJhbWVMb2FkVHlwZVJlbG9hZDsKLSAgICAgICAgZnVuY3Rpb24oYXJndW1lbnQsIHJl
cXVlc3QsIDAsIHRydWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIAotICAgIGxvYWRl
ci0+c2V0TGFzdENoZWNrZWRSZXF1ZXN0KHJlcXVlc3QpOwotCi0gICAgbV9wb2xpY3lDaGVjay5z
ZXQocmVxdWVzdCwgZm9ybVN0YXRlLmdldCgpLCBmdW5jdGlvbiwgYXJndW1lbnQpOwotCi0gICAg
bV9kZWxlZ2F0ZUlzRGVjaWRpbmdOYXZpZ2F0aW9uUG9saWN5ID0gdHJ1ZTsKLSAgICBtX2ZyYW1l
LT5sb2FkZXIoKS0+Y2xpZW50KCktPmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFj
dGlvbigmUG9saWN5Q2hlY2tlcjo6Y29udGludWVBZnRlck5hdmlnYXRpb25Qb2xpY3ksCi0gICAg
ICAgIGFjdGlvbiwgcmVxdWVzdCwgZm9ybVN0YXRlKTsKLSAgICBtX2RlbGVnYXRlSXNEZWNpZGlu
Z05hdmlnYXRpb25Qb2xpY3kgPSBmYWxzZTsKLX0KLQotdm9pZCBQb2xpY3lDaGVja2VyOjpjb250
aW51ZUFmdGVyTmF2aWdhdGlvblBvbGljeShQb2xpY3lBY3Rpb24gcG9saWN5KQotewotICAgIFBv
bGljeUNoZWNrIGNoZWNrID0gbV9wb2xpY3lDaGVjazsKLSAgICBtX3BvbGljeUNoZWNrLmNsZWFy
KCk7Ci0KLSAgICBib29sIHNob3VsZENvbnRpbnVlID0gcG9saWN5ID09IFBvbGljeVVzZTsKLQot
ICAgIHN3aXRjaCAocG9saWN5KSB7Ci0gICAgICAgIGNhc2UgUG9saWN5SWdub3JlOgotICAgICAg
ICAgICAgY2hlY2suY2xlYXJSZXF1ZXN0KCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAg
Y2FzZSBQb2xpY3lEb3dubG9hZDoKLSAgICAgICAgICAgIG1fZnJhbWUtPmxvYWRlcigpLT5jbGll
bnQoKS0+c3RhcnREb3dubG9hZChjaGVjay5yZXF1ZXN0KCkpOwotICAgICAgICAgICAgY2hlY2su
Y2xlYXJSZXF1ZXN0KCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBQb2xpY3lV
c2U6IHsKLSAgICAgICAgICAgIFJlc291cmNlUmVxdWVzdCByZXF1ZXN0KGNoZWNrLnJlcXVlc3Qo
KSk7Ci0KLSAgICAgICAgICAgIGlmICghbV9mcmFtZS0+bG9hZGVyKCktPmNsaWVudCgpLT5jYW5I
YW5kbGVSZXF1ZXN0KHJlcXVlc3QpKSB7Ci0gICAgICAgICAgICAgICAgaGFuZGxlVW5pbXBsZW1l
bnRhYmxlUG9saWN5KG1fZnJhbWUtPmxvYWRlcigpLT5jYW5ub3RTaG93VVJMRXJyb3IoY2hlY2su
cmVxdWVzdCgpKSk7Ci0gICAgICAgICAgICAgICAgY2hlY2suY2xlYXJSZXF1ZXN0KCk7Ci0gICAg
ICAgICAgICAgICAgc2hvdWxkQ29udGludWUgPSBmYWxzZTsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgY2hlY2suY2FsbChzaG91bGRD
b250aW51ZSk7Ci19Ci0KIHZvaWQgRnJhbWVMb2FkZXI6OmNhbGxDb250aW51ZUxvYWRBZnRlck5h
dmlnYXRpb25Qb2xpY3kodm9pZCogYXJndW1lbnQsCiAgICAgY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0LCBQYXNzUmVmUHRyPEZvcm1TdGF0ZT4gZm9ybVN0YXRlLCBib29sIHNob3VsZENv
bnRpbnVlKQogewpAQCAtMzc1OCw3ICszNjA0LDYgQEAgdm9pZCBGcmFtZUxvYWRlcjo6Y29udGlu
dWVMb2FkQWZ0ZXJOYXZpZ2F0aW9uUG9saWN5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFBhc3MK
ICAgICAgICAgY29udGludWVMb2FkQWZ0ZXJXaWxsU3VibWl0Rm9ybSgpOwogfQogCi0KIHZvaWQg
RnJhbWVMb2FkZXI6OmNhbGxDb250aW51ZUxvYWRBZnRlck5ld1dpbmRvd1BvbGljeSh2b2lkKiBh
cmd1bWVudCwKICAgICBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFBhc3NSZWZQdHI8
Rm9ybVN0YXRlPiBmb3JtU3RhdGUsIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBib29sIHNob3Vs
ZENvbnRpbnVlKQogewpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaCBi
L1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKaW5kZXggOTBlZGQzZC4uMDIyZDkyNyAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAorKysgYi9XZWJDb3JlL2xvYWRl
ci9GcmFtZUxvYWRlci5oCkBAIC0zMiw3ICszMiw4IEBACiAKICNpbmNsdWRlICJDYWNoZVBvbGlj
eS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyVHlwZXMuaCIKLSNpbmNsdWRlICJQb2xpY3lDaGVj
ay5oIgorI2luY2x1ZGUgIlBvbGljeUNhbGxiYWNrLmgiCisjaW5jbHVkZSAiUG9saWN5Q2hlY2tl
ci5oIgogI2luY2x1ZGUgIlJlZGlyZWN0U2NoZWR1bGVyLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VS
ZXF1ZXN0LmgiCiAjaW5jbHVkZSAiVGhyZWFkYWJsZUxvYWRlci5oIgpAQCAtNzgsNTMgKzc5LDYg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgYm9vbCBpc0JhY2tGb3J3YXJkTG9hZFR5cGUo
RnJhbWVMb2FkVHlwZSk7CiAKLSAgICBjbGFzcyBQb2xpY3lDaGVja2VyIDogcHVibGljIE5vbmNv
cHlhYmxlIHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIFBvbGljeUNoZWNrZXIoRnJhbWUqKTsKLQot
ICAgICAgICB2b2lkIGNoZWNrTmF2aWdhdGlvblBvbGljeShjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
LCBEb2N1bWVudExvYWRlciosIFBhc3NSZWZQdHI8Rm9ybVN0YXRlPiwgTmF2aWdhdGlvblBvbGlj
eURlY2lzaW9uRnVuY3Rpb24sIHZvaWQqIGFyZ3VtZW50KTsKLSAgICAgICAgdm9pZCBjaGVja05h
dmlnYXRpb25Qb2xpY3koY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgTmF2aWdhdGlvblBvbGljeURl
Y2lzaW9uRnVuY3Rpb24sIHZvaWQqIGFyZ3VtZW50KTsKLSAgICAgICAgdm9pZCBjaGVja05ld1dp
bmRvd1BvbGljeShjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiwgTmV3V2luZG93UG9saWN5RGVjaXNp
b25GdW5jdGlvbiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgUGFzc1JlZlB0cjxGb3JtU3RhdGU+
LCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgdm9pZCogYXJndW1lbnQpOwotICAgICAgICB2b2lk
IGNoZWNrQ29udGVudFBvbGljeShjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBDb250ZW50UG9saWN5
RGVjaXNpb25GdW5jdGlvbiwgdm9pZCogYXJndW1lbnQpOwotCi0gICAgICAgIC8vIEZJWE1FOiBU
aGVzZSBhcmUgZGlmZmVyZW50LiAgVGhleSBjb3VsZCB1c2UgYmV0dGVyIG5hbWVzLgotICAgICAg
ICB2b2lkIGNhbmNlbENoZWNrKCk7Ci0gICAgICAgIHZvaWQgc3RvcENoZWNrKCk7Ci0KLSAgICAg
ICAgdm9pZCBjYW5ub3RTaG93TUlNRVR5cGUoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwotCi0g
ICAgICAgIEZyYW1lTG9hZFR5cGUgbG9hZFR5cGUoKSBjb25zdCB7IHJldHVybiBtX2xvYWRUeXBl
OyB9Ci0gICAgICAgIHZvaWQgc2V0TG9hZFR5cGUoRnJhbWVMb2FkVHlwZSBsb2FkVHlwZSkgeyBt
X2xvYWRUeXBlID0gbG9hZFR5cGU7IH0KLQotICAgICAgICBib29sIGRlbGVnYXRlSXNEZWNpZGlu
Z05hdmlnYXRpb25Qb2xpY3koKSBjb25zdCB7IHJldHVybiBtX2RlbGVnYXRlSXNEZWNpZGluZ05h
dmlnYXRpb25Qb2xpY3k7IH0KLSAgICAgICAgYm9vbCBkZWxlZ2F0ZUlzSGFuZGxpbmdVbmltcGxl
bWVudGFibGVQb2xpY3koKSBjb25zdCB7IHJldHVybiBtX2RlbGVnYXRlSXNIYW5kbGluZ1VuaW1w
bGVtZW50YWJsZVBvbGljeTsgfQotCi0gICAgICAgIC8vIEZJWE1FOiBUaGlzIGZ1bmN0aW9uIGlz
IGEgY2hlYXQuICBCYXNpY2FsbHksIHRoaXMgaXMganVzdCBhbiBhc3luY2hyb25vdWMgY2FsbGJh
Y2sKLSAgICAgICAgLy8gZnJvbSB0aGUgRnJhbWVMb2FkZXJDbGllbnQsIGJ1dCB0aGlzIGNhbGxi
YWNrIHVzZXMgdGhlIHBvbGljeSB0eXBlcyBhbmQgc28gaGFzIHRvCi0gICAgICAgIC8vIGxpdmUg
b24gdGhpcyBvYmplY3QuICBJbiB0aGUgbG9uZyB0ZXJtLCB3ZSBzaG91bGQgY3JlYXRlIGEgdHlw
ZSBmb3Igbm9uLXBvbGljeQotICAgICAgICAvLyBjYWxsYmFja3MgZnJvbSB0aGUgRnJhbWVMb2Fk
ZXJDbGllbnQgYW5kIHJlbW92ZSB0aGlzIHZlc3RpZ2UuICBJIGp1c3QgZG9uJ3QgaGF2ZQotICAg
ICAgICAvLyB0aGUgaGVhcnQgdG8gaGFjayBvbiBhbGwgdGhlIHBsYXRmb3JtcyB0byBtYWtlIHRo
YXQgaGFwcGVuIHJpZ2h0IG5vdy4KLSAgICAgICAgdm9pZCBjb250aW51ZUxvYWRBZnRlcldpbGxT
dWJtaXRGb3JtKFBvbGljeUFjdGlvbik7Ci0KLSAgICBwcml2YXRlOgotICAgICAgICB2b2lkIGNv
bnRpbnVlQWZ0ZXJOYXZpZ2F0aW9uUG9saWN5KFBvbGljeUFjdGlvbik7Ci0gICAgICAgIHZvaWQg
Y29udGludWVBZnRlck5ld1dpbmRvd1BvbGljeShQb2xpY3lBY3Rpb24pOwotICAgICAgICB2b2lk
IGNvbnRpbnVlQWZ0ZXJDb250ZW50UG9saWN5KFBvbGljeUFjdGlvbik7Ci0KLSAgICAgICAgdm9p
ZCBoYW5kbGVVbmltcGxlbWVudGFibGVQb2xpY3koY29uc3QgUmVzb3VyY2VFcnJvciYpOwotCi0g
ICAgICAgIEZyYW1lKiBtX2ZyYW1lOwotCi0gICAgICAgIGJvb2wgbV9kZWxlZ2F0ZUlzRGVjaWRp
bmdOYXZpZ2F0aW9uUG9saWN5OwotICAgICAgICBib29sIG1fZGVsZWdhdGVJc0hhbmRsaW5nVW5p
bXBsZW1lbnRhYmxlUG9saWN5OwotCi0gICAgICAgIC8vIFRoaXMgaWRlbnRpZmllcyB0aGUgdHlw
ZSBvZiBuYXZpZ2F0aW9uIGFjdGlvbiB3aGljaCBwcm9tcHRlZCB0aGlzIGxvYWQuIE5vdGUgCi0g
ICAgICAgIC8vIHRoYXQgV2ViS2l0IGNvbnZleXMgdGhpcyB2YWx1ZSBhcyB0aGUgV2ViQWN0aW9u
TmF2aWdhdGlvblR5cGVLZXkgdmFsdWUKLSAgICAgICAgLy8gb24gbmF2aWdhdGlvbiBhY3Rpb24g
ZGVsZWdhdGUgY2FsbGJhY2tzLgotICAgICAgICBGcmFtZUxvYWRUeXBlIG1fbG9hZFR5cGU7Ci0g
ICAgICAgIFBvbGljeUNoZWNrIG1fcG9saWN5Q2hlY2s7Ci0gICAgfTsKLQogICAgIGNsYXNzIEZy
YW1lTG9hZGVyIDogcHVibGljIE5vbmNvcHlhYmxlIHsKICAgICBwdWJsaWM6CiAgICAgICAgIEZy
YW1lTG9hZGVyKEZyYW1lKiwgRnJhbWVMb2FkZXJDbGllbnQqKTsKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvbG9hZGVyL1BvbGljeUNhbGxiYWNrLmNwcCBiL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNhbGxi
YWNrLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNDc5OWNmCi0tLSAv
ZGV2L251bGwKKysrIGIvV2ViQ29yZS9sb2FkZXIvUG9saWN5Q2FsbGJhY2suY3BwCkBAIC0wLDAg
KzEsMTMzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOCBOb2tp
YSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKyAqIENvcHlyaWdodCAo
QykgMjAwOCwgMjAwOSBUb3JjaCBNb2JpbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLiAoaHR0
cDovL3d3dy50b3JjaG1vYmlsZS5jb20vKQorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCisgKiAyLiAgUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4gCisgKiAzLiAgTmVp
dGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBu
YW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uIAorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwor
ICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJQb2xpY3lDYWxsYmFjay5oIgorCisjaW5jbHVkZSAiRm9ybVN0YXRlLmgiCisjaW5jbHVkZSAi
RnJhbWUuaCIKKyNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgorI2luY2x1ZGUgIkhUTUxGb3JtRWxl
bWVudC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1BvbGljeUNhbGxiYWNrOjpQb2xpY3lD
YWxsYmFjaygpCisgICAgOiBtX25hdmlnYXRpb25GdW5jdGlvbigwKQorICAgICwgbV9uZXdXaW5k
b3dGdW5jdGlvbigwKQorICAgICwgbV9jb250ZW50RnVuY3Rpb24oMCkKK3sKK30KKworUG9saWN5
Q2FsbGJhY2s6On5Qb2xpY3lDYWxsYmFjaygpCit7Cit9CisKK3ZvaWQgUG9saWN5Q2FsbGJhY2s6
OmNsZWFyKCkKK3sKKyAgICBjbGVhclJlcXVlc3QoKTsKKyAgICBtX25hdmlnYXRpb25GdW5jdGlv
biA9IDA7CisgICAgbV9uZXdXaW5kb3dGdW5jdGlvbiA9IDA7CisgICAgbV9jb250ZW50RnVuY3Rp
b24gPSAwOworfQorCit2b2lkIFBvbGljeUNhbGxiYWNrOjpzZXQoY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiByZXF1ZXN0LCBQYXNzUmVmUHRyPEZvcm1TdGF0ZT4gZm9ybVN0YXRlLAorICAgIE5hdmln
YXRpb25Qb2xpY3lEZWNpc2lvbkZ1bmN0aW9uIGZ1bmN0aW9uLCB2b2lkKiBhcmd1bWVudCkKK3sK
KyAgICBtX3JlcXVlc3QgPSByZXF1ZXN0OworICAgIG1fZm9ybVN0YXRlID0gZm9ybVN0YXRlOwor
ICAgIG1fZnJhbWVOYW1lID0gU3RyaW5nKCk7CisKKyAgICBtX25hdmlnYXRpb25GdW5jdGlvbiA9
IGZ1bmN0aW9uOworICAgIG1fbmV3V2luZG93RnVuY3Rpb24gPSAwOworICAgIG1fY29udGVudEZ1
bmN0aW9uID0gMDsKKyAgICBtX2FyZ3VtZW50ID0gYXJndW1lbnQ7Cit9CisKK3ZvaWQgUG9saWN5
Q2FsbGJhY2s6OnNldChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFBhc3NSZWZQdHI8
Rm9ybVN0YXRlPiBmb3JtU3RhdGUsCisgICAgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIE5ld1dp
bmRvd1BvbGljeURlY2lzaW9uRnVuY3Rpb24gZnVuY3Rpb24sIHZvaWQqIGFyZ3VtZW50KQorewor
ICAgIG1fcmVxdWVzdCA9IHJlcXVlc3Q7CisgICAgbV9mb3JtU3RhdGUgPSBmb3JtU3RhdGU7Cisg
ICAgbV9mcmFtZU5hbWUgPSBmcmFtZU5hbWU7CisKKyAgICBtX25hdmlnYXRpb25GdW5jdGlvbiA9
IDA7CisgICAgbV9uZXdXaW5kb3dGdW5jdGlvbiA9IGZ1bmN0aW9uOworICAgIG1fY29udGVudEZ1
bmN0aW9uID0gMDsKKyAgICBtX2FyZ3VtZW50ID0gYXJndW1lbnQ7Cit9CisKK3ZvaWQgUG9saWN5
Q2FsbGJhY2s6OnNldChDb250ZW50UG9saWN5RGVjaXNpb25GdW5jdGlvbiBmdW5jdGlvbiwgdm9p
ZCogYXJndW1lbnQpCit7CisgICAgbV9yZXF1ZXN0ID0gUmVzb3VyY2VSZXF1ZXN0KCk7CisgICAg
bV9mb3JtU3RhdGUgPSAwOworICAgIG1fZnJhbWVOYW1lID0gU3RyaW5nKCk7CisKKyAgICBtX25h
dmlnYXRpb25GdW5jdGlvbiA9IDA7CisgICAgbV9uZXdXaW5kb3dGdW5jdGlvbiA9IDA7CisgICAg
bV9jb250ZW50RnVuY3Rpb24gPSBmdW5jdGlvbjsKKyAgICBtX2FyZ3VtZW50ID0gYXJndW1lbnQ7
Cit9CisKK3ZvaWQgUG9saWN5Q2FsbGJhY2s6OmNhbGwoYm9vbCBzaG91bGRDb250aW51ZSkKK3sK
KyAgICBpZiAobV9uYXZpZ2F0aW9uRnVuY3Rpb24pCisgICAgICAgIG1fbmF2aWdhdGlvbkZ1bmN0
aW9uKG1fYXJndW1lbnQsIG1fcmVxdWVzdCwgbV9mb3JtU3RhdGUuZ2V0KCksIHNob3VsZENvbnRp
bnVlKTsKKyAgICBpZiAobV9uZXdXaW5kb3dGdW5jdGlvbikKKyAgICAgICAgbV9uZXdXaW5kb3dG
dW5jdGlvbihtX2FyZ3VtZW50LCBtX3JlcXVlc3QsIG1fZm9ybVN0YXRlLmdldCgpLCBtX2ZyYW1l
TmFtZSwgc2hvdWxkQ29udGludWUpOworICAgIEFTU0VSVCghbV9jb250ZW50RnVuY3Rpb24pOwor
fQorCit2b2lkIFBvbGljeUNhbGxiYWNrOjpjYWxsKFBvbGljeUFjdGlvbiBhY3Rpb24pCit7Cisg
ICAgQVNTRVJUKCFtX25hdmlnYXRpb25GdW5jdGlvbik7CisgICAgQVNTRVJUKCFtX25ld1dpbmRv
d0Z1bmN0aW9uKTsKKyAgICBBU1NFUlQobV9jb250ZW50RnVuY3Rpb24pOworICAgIG1fY29udGVu
dEZ1bmN0aW9uKG1fYXJndW1lbnQsIGFjdGlvbik7Cit9CisKK3ZvaWQgUG9saWN5Q2FsbGJhY2s6
OmNsZWFyUmVxdWVzdCgpCit7CisgICAgbV9yZXF1ZXN0ID0gUmVzb3VyY2VSZXF1ZXN0KCk7Cisg
ICAgbV9mb3JtU3RhdGUgPSAwOworICAgIG1fZnJhbWVOYW1lID0gU3RyaW5nKCk7Cit9CisKK3Zv
aWQgUG9saWN5Q2FsbGJhY2s6OmNhbmNlbCgpCit7CisgICAgY2xlYXJSZXF1ZXN0KCk7CisgICAg
aWYgKG1fbmF2aWdhdGlvbkZ1bmN0aW9uKQorICAgICAgICBtX25hdmlnYXRpb25GdW5jdGlvbiht
X2FyZ3VtZW50LCBtX3JlcXVlc3QsIG1fZm9ybVN0YXRlLmdldCgpLCBmYWxzZSk7CisgICAgaWYg
KG1fbmV3V2luZG93RnVuY3Rpb24pCisgICAgICAgIG1fbmV3V2luZG93RnVuY3Rpb24obV9hcmd1
bWVudCwgbV9yZXF1ZXN0LCBtX2Zvcm1TdGF0ZS5nZXQoKSwgbV9mcmFtZU5hbWUsIGZhbHNlKTsK
KyAgICBpZiAobV9jb250ZW50RnVuY3Rpb24pCisgICAgICAgIG1fY29udGVudEZ1bmN0aW9uKG1f
YXJndW1lbnQsIFBvbGljeUlnbm9yZSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNhbGxiYWNrLmggYi9XZWJDb3JlL2xvYWRl
ci9Qb2xpY3lDYWxsYmFjay5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJh
YTdjN2MKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2xvYWRlci9Qb2xpY3lDYWxsYmFjay5o
CkBAIC0wLDAgKzEsODAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMDgs
IDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDA4LCAyMDA5IFRvcmNoIE1vYmlsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIChodHRwOi8v
d3d3LnRvcmNobW9iaWxlLmNvbS8pCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKKyAqIDIuICBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLiAKKyAqIDMuICBOZWl0aGVy
IHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVz
IG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4gCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBQb2xpY3lDYWxsYmFja19oCisjZGVmaW5l
IFBvbGljeUNhbGxiYWNrX2gKKworI2luY2x1ZGUgIkZyYW1lTG9hZGVyVHlwZXMuaCIKKyNpbmNs
dWRlICJQbGF0Zm9ybVN0cmluZy5oIgorI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgorI2lu
Y2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisgICAgY2xhc3Mg
Rm9ybVN0YXRlOworCisgICAgdHlwZWRlZiB2b2lkICgqTmF2aWdhdGlvblBvbGljeURlY2lzaW9u
RnVuY3Rpb24pKHZvaWQqIGFyZ3VtZW50LAorICAgICAgICBjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
LCBQYXNzUmVmUHRyPEZvcm1TdGF0ZT4sIGJvb2wgc2hvdWxkQ29udGludWUpOworICAgIHR5cGVk
ZWYgdm9pZCAoKk5ld1dpbmRvd1BvbGljeURlY2lzaW9uRnVuY3Rpb24pKHZvaWQqIGFyZ3VtZW50
LAorICAgICAgICBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBQYXNzUmVmUHRyPEZvcm1TdGF0ZT4s
IGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBib29sIHNob3VsZENvbnRpbnVlKTsKKyAgICB0eXBl
ZGVmIHZvaWQgKCpDb250ZW50UG9saWN5RGVjaXNpb25GdW5jdGlvbikodm9pZCogYXJndW1lbnQs
IFBvbGljeUFjdGlvbik7CisKKyAgICBjbGFzcyBQb2xpY3lDYWxsYmFjayB7CisgICAgcHVibGlj
OgorICAgICAgICBQb2xpY3lDYWxsYmFjaygpOworICAgICAgICB+UG9saWN5Q2FsbGJhY2soKTsK
KworICAgICAgICB2b2lkIGNsZWFyKCk7CisgICAgICAgIHZvaWQgc2V0KGNvbnN0IFJlc291cmNl
UmVxdWVzdCYsIFBhc3NSZWZQdHI8Rm9ybVN0YXRlPiwKKyAgICAgICAgICAgIE5hdmlnYXRpb25Q
b2xpY3lEZWNpc2lvbkZ1bmN0aW9uLCB2b2lkKiBhcmd1bWVudCk7CisgICAgICAgIHZvaWQgc2V0
KGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFBhc3NSZWZQdHI8Rm9ybVN0YXRlPiwgY29uc3QgU3Ry
aW5nJiBmcmFtZU5hbWUsCisgICAgICAgICAgICBOZXdXaW5kb3dQb2xpY3lEZWNpc2lvbkZ1bmN0
aW9uLCB2b2lkKiBhcmd1bWVudCk7CisgICAgICAgIHZvaWQgc2V0KENvbnRlbnRQb2xpY3lEZWNp
c2lvbkZ1bmN0aW9uLCB2b2lkKiBhcmd1bWVudCk7CisKKyAgICAgICAgY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JiByZXF1ZXN0KCkgY29uc3QgeyByZXR1cm4gbV9yZXF1ZXN0OyB9CisgICAgICAgIHZv
aWQgY2xlYXJSZXF1ZXN0KCk7CisKKyAgICAgICAgdm9pZCBjYWxsKGJvb2wgc2hvdWxkQ29udGlu
dWUpOworICAgICAgICB2b2lkIGNhbGwoUG9saWN5QWN0aW9uKTsKKyAgICAgICAgdm9pZCBjYW5j
ZWwoKTsKKworICAgIHByaXZhdGU6CisgICAgICAgIFJlc291cmNlUmVxdWVzdCBtX3JlcXVlc3Q7
CisgICAgICAgIFJlZlB0cjxGb3JtU3RhdGU+IG1fZm9ybVN0YXRlOworICAgICAgICBTdHJpbmcg
bV9mcmFtZU5hbWU7CisKKyAgICAgICAgTmF2aWdhdGlvblBvbGljeURlY2lzaW9uRnVuY3Rpb24g
bV9uYXZpZ2F0aW9uRnVuY3Rpb247CisgICAgICAgIE5ld1dpbmRvd1BvbGljeURlY2lzaW9uRnVu
Y3Rpb24gbV9uZXdXaW5kb3dGdW5jdGlvbjsKKyAgICAgICAgQ29udGVudFBvbGljeURlY2lzaW9u
RnVuY3Rpb24gbV9jb250ZW50RnVuY3Rpb247CisgICAgICAgIHZvaWQqIG1fYXJndW1lbnQ7Cisg
ICAgfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gUG9saWN5Q2FsbGJh
Y2tfaApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9sb2FkZXIvUG9saWN5Q2hlY2suY3BwIGIvV2ViQ29y
ZS9sb2FkZXIvUG9saWN5Q2hlY2suY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4
OGEzOGZhLi4wMDAwMDAwCi0tLSBhL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNoZWNrLmNwcAorKysg
L2Rldi9udWxsCkBAIC0xLDEzMyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA2LCAy
MDA3LCAyMDA4LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHly
aWdodCAoQykgMjAwOCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWll
cykKLSAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAwOSBUb3JjaCBNb2JpbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLiAoaHR0cDovL3d3dy50b3JjaG1vYmlsZS5jb20vKQotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4gCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4gCi0gKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAo
IkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgotICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKLSAqICAgICBmcm9t
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
IAotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05U
UklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJj
b25maWcuaCIKLSNpbmNsdWRlICJQb2xpY3lDaGVjay5oIgotCi0jaW5jbHVkZSAiRm9ybVN0YXRl
LmgiCi0jaW5jbHVkZSAiRnJhbWUuaCIKLSNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgotI2luY2x1
ZGUgIkhUTUxGb3JtRWxlbWVudC5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVBvbGljeUNo
ZWNrOjpQb2xpY3lDaGVjaygpCi0gICAgOiBtX25hdmlnYXRpb25GdW5jdGlvbigwKQotICAgICwg
bV9uZXdXaW5kb3dGdW5jdGlvbigwKQotICAgICwgbV9jb250ZW50RnVuY3Rpb24oMCkKLXsKLX0K
LQotUG9saWN5Q2hlY2s6On5Qb2xpY3lDaGVjaygpCi17Ci19Ci0KLXZvaWQgUG9saWN5Q2hlY2s6
OmNsZWFyKCkKLXsKLSAgICBjbGVhclJlcXVlc3QoKTsKLSAgICBtX25hdmlnYXRpb25GdW5jdGlv
biA9IDA7Ci0gICAgbV9uZXdXaW5kb3dGdW5jdGlvbiA9IDA7Ci0gICAgbV9jb250ZW50RnVuY3Rp
b24gPSAwOwotfQotCi12b2lkIFBvbGljeUNoZWNrOjpzZXQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0LCBQYXNzUmVmUHRyPEZvcm1TdGF0ZT4gZm9ybVN0YXRlLAotICAgIE5hdmlnYXRp
b25Qb2xpY3lEZWNpc2lvbkZ1bmN0aW9uIGZ1bmN0aW9uLCB2b2lkKiBhcmd1bWVudCkKLXsKLSAg
ICBtX3JlcXVlc3QgPSByZXF1ZXN0OwotICAgIG1fZm9ybVN0YXRlID0gZm9ybVN0YXRlOwotICAg
IG1fZnJhbWVOYW1lID0gU3RyaW5nKCk7Ci0KLSAgICBtX25hdmlnYXRpb25GdW5jdGlvbiA9IGZ1
bmN0aW9uOwotICAgIG1fbmV3V2luZG93RnVuY3Rpb24gPSAwOwotICAgIG1fY29udGVudEZ1bmN0
aW9uID0gMDsKLSAgICBtX2FyZ3VtZW50ID0gYXJndW1lbnQ7Ci19Ci0KLXZvaWQgUG9saWN5Q2hl
Y2s6OnNldChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFBhc3NSZWZQdHI8Rm9ybVN0
YXRlPiBmb3JtU3RhdGUsCi0gICAgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIE5ld1dpbmRvd1Bv
bGljeURlY2lzaW9uRnVuY3Rpb24gZnVuY3Rpb24sIHZvaWQqIGFyZ3VtZW50KQotewotICAgIG1f
cmVxdWVzdCA9IHJlcXVlc3Q7Ci0gICAgbV9mb3JtU3RhdGUgPSBmb3JtU3RhdGU7Ci0gICAgbV9m
cmFtZU5hbWUgPSBmcmFtZU5hbWU7Ci0KLSAgICBtX25hdmlnYXRpb25GdW5jdGlvbiA9IDA7Ci0g
ICAgbV9uZXdXaW5kb3dGdW5jdGlvbiA9IGZ1bmN0aW9uOwotICAgIG1fY29udGVudEZ1bmN0aW9u
ID0gMDsKLSAgICBtX2FyZ3VtZW50ID0gYXJndW1lbnQ7Ci19Ci0KLXZvaWQgUG9saWN5Q2hlY2s6
OnNldChDb250ZW50UG9saWN5RGVjaXNpb25GdW5jdGlvbiBmdW5jdGlvbiwgdm9pZCogYXJndW1l
bnQpCi17Ci0gICAgbV9yZXF1ZXN0ID0gUmVzb3VyY2VSZXF1ZXN0KCk7Ci0gICAgbV9mb3JtU3Rh
dGUgPSAwOwotICAgIG1fZnJhbWVOYW1lID0gU3RyaW5nKCk7Ci0KLSAgICBtX25hdmlnYXRpb25G
dW5jdGlvbiA9IDA7Ci0gICAgbV9uZXdXaW5kb3dGdW5jdGlvbiA9IDA7Ci0gICAgbV9jb250ZW50
RnVuY3Rpb24gPSBmdW5jdGlvbjsKLSAgICBtX2FyZ3VtZW50ID0gYXJndW1lbnQ7Ci19Ci0KLXZv
aWQgUG9saWN5Q2hlY2s6OmNhbGwoYm9vbCBzaG91bGRDb250aW51ZSkKLXsKLSAgICBpZiAobV9u
YXZpZ2F0aW9uRnVuY3Rpb24pCi0gICAgICAgIG1fbmF2aWdhdGlvbkZ1bmN0aW9uKG1fYXJndW1l
bnQsIG1fcmVxdWVzdCwgbV9mb3JtU3RhdGUuZ2V0KCksIHNob3VsZENvbnRpbnVlKTsKLSAgICBp
ZiAobV9uZXdXaW5kb3dGdW5jdGlvbikKLSAgICAgICAgbV9uZXdXaW5kb3dGdW5jdGlvbihtX2Fy
Z3VtZW50LCBtX3JlcXVlc3QsIG1fZm9ybVN0YXRlLmdldCgpLCBtX2ZyYW1lTmFtZSwgc2hvdWxk
Q29udGludWUpOwotICAgIEFTU0VSVCghbV9jb250ZW50RnVuY3Rpb24pOwotfQotCi12b2lkIFBv
bGljeUNoZWNrOjpjYWxsKFBvbGljeUFjdGlvbiBhY3Rpb24pCi17Ci0gICAgQVNTRVJUKCFtX25h
dmlnYXRpb25GdW5jdGlvbik7Ci0gICAgQVNTRVJUKCFtX25ld1dpbmRvd0Z1bmN0aW9uKTsKLSAg
ICBBU1NFUlQobV9jb250ZW50RnVuY3Rpb24pOwotICAgIG1fY29udGVudEZ1bmN0aW9uKG1fYXJn
dW1lbnQsIGFjdGlvbik7Ci19Ci0KLXZvaWQgUG9saWN5Q2hlY2s6OmNsZWFyUmVxdWVzdCgpCi17
Ci0gICAgbV9yZXF1ZXN0ID0gUmVzb3VyY2VSZXF1ZXN0KCk7Ci0gICAgbV9mb3JtU3RhdGUgPSAw
OwotICAgIG1fZnJhbWVOYW1lID0gU3RyaW5nKCk7Ci19Ci0KLXZvaWQgUG9saWN5Q2hlY2s6OmNh
bmNlbCgpCi17Ci0gICAgY2xlYXJSZXF1ZXN0KCk7Ci0gICAgaWYgKG1fbmF2aWdhdGlvbkZ1bmN0
aW9uKQotICAgICAgICBtX25hdmlnYXRpb25GdW5jdGlvbihtX2FyZ3VtZW50LCBtX3JlcXVlc3Qs
IG1fZm9ybVN0YXRlLmdldCgpLCBmYWxzZSk7Ci0gICAgaWYgKG1fbmV3V2luZG93RnVuY3Rpb24p
Ci0gICAgICAgIG1fbmV3V2luZG93RnVuY3Rpb24obV9hcmd1bWVudCwgbV9yZXF1ZXN0LCBtX2Zv
cm1TdGF0ZS5nZXQoKSwgbV9mcmFtZU5hbWUsIGZhbHNlKTsKLSAgICBpZiAobV9jb250ZW50RnVu
Y3Rpb24pCi0gICAgICAgIG1fY29udGVudEZ1bmN0aW9uKG1fYXJndW1lbnQsIFBvbGljeUlnbm9y
ZSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9h
ZGVyL1BvbGljeUNoZWNrLmggYi9XZWJDb3JlL2xvYWRlci9Qb2xpY3lDaGVjay5oCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NjM1ZDUwLi4wMDAwMDAwCi0tLSBhL1dlYkNvcmUvbG9h
ZGVyL1BvbGljeUNoZWNrLmgKKysrIC9kZXYvbnVsbApAQCAtMSw4MCArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAwOSBUb3JjaCBNb2JpbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLiAoaHR0cDovL3d3dy50b3JjaG1vYmlsZS5jb20vKQotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4gCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4gCi0gKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRl
ciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgotICogICAgIGl0cyBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKLSAq
ICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uIAotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5E
IElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0g
KiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBP
UiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNp
Zm5kZWYgUG9saWN5Q2hlY2tfaAotI2RlZmluZSBQb2xpY3lDaGVja19oCi0KLSNpbmNsdWRlICJG
cmFtZUxvYWRlclR5cGVzLmgiCi0jaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKLSNpbmNsdWRl
ICJSZXNvdXJjZVJlcXVlc3QuaCIKLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0KLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLQotICAgIGNsYXNzIEZvcm1TdGF0ZTsKLQotICAgIHR5cGVkZWYgdm9pZCAo
Kk5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbkZ1bmN0aW9uKSh2b2lkKiBhcmd1bWVudCwKLSAgICAg
ICAgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgUGFzc1JlZlB0cjxGb3JtU3RhdGU+LCBib29sIHNo
b3VsZENvbnRpbnVlKTsKLSAgICB0eXBlZGVmIHZvaWQgKCpOZXdXaW5kb3dQb2xpY3lEZWNpc2lv
bkZ1bmN0aW9uKSh2b2lkKiBhcmd1bWVudCwKLSAgICAgICAgY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiwgUGFzc1JlZlB0cjxGb3JtU3RhdGU+LCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgYm9vbCBz
aG91bGRDb250aW51ZSk7Ci0gICAgdHlwZWRlZiB2b2lkICgqQ29udGVudFBvbGljeURlY2lzaW9u
RnVuY3Rpb24pKHZvaWQqIGFyZ3VtZW50LCBQb2xpY3lBY3Rpb24pOwotCi0gICAgY2xhc3MgUG9s
aWN5Q2hlY2sgewotICAgIHB1YmxpYzoKLSAgICAgICAgUG9saWN5Q2hlY2soKTsKLSAgICAgICAg
flBvbGljeUNoZWNrKCk7Ci0KLSAgICAgICAgdm9pZCBjbGVhcigpOwotICAgICAgICB2b2lkIHNl
dChjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBQYXNzUmVmUHRyPEZvcm1TdGF0ZT4sCi0gICAgICAg
ICAgICBOYXZpZ2F0aW9uUG9saWN5RGVjaXNpb25GdW5jdGlvbiwgdm9pZCogYXJndW1lbnQpOwot
ICAgICAgICB2b2lkIHNldChjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBQYXNzUmVmUHRyPEZvcm1T
dGF0ZT4sIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLAotICAgICAgICAgICAgTmV3V2luZG93UG9s
aWN5RGVjaXNpb25GdW5jdGlvbiwgdm9pZCogYXJndW1lbnQpOwotICAgICAgICB2b2lkIHNldChD
b250ZW50UG9saWN5RGVjaXNpb25GdW5jdGlvbiwgdm9pZCogYXJndW1lbnQpOwotCi0gICAgICAg
IGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVxdWVz
dDsgfQotICAgICAgICB2b2lkIGNsZWFyUmVxdWVzdCgpOwotCi0gICAgICAgIHZvaWQgY2FsbChi
b29sIHNob3VsZENvbnRpbnVlKTsKLSAgICAgICAgdm9pZCBjYWxsKFBvbGljeUFjdGlvbik7Ci0g
ICAgICAgIHZvaWQgY2FuY2VsKCk7Ci0KLSAgICBwcml2YXRlOgotICAgICAgICBSZXNvdXJjZVJl
cXVlc3QgbV9yZXF1ZXN0OwotICAgICAgICBSZWZQdHI8Rm9ybVN0YXRlPiBtX2Zvcm1TdGF0ZTsK
LSAgICAgICAgU3RyaW5nIG1fZnJhbWVOYW1lOwotCi0gICAgICAgIE5hdmlnYXRpb25Qb2xpY3lE
ZWNpc2lvbkZ1bmN0aW9uIG1fbmF2aWdhdGlvbkZ1bmN0aW9uOwotICAgICAgICBOZXdXaW5kb3dQ
b2xpY3lEZWNpc2lvbkZ1bmN0aW9uIG1fbmV3V2luZG93RnVuY3Rpb247Ci0gICAgICAgIENvbnRl
bnRQb2xpY3lEZWNpc2lvbkZ1bmN0aW9uIG1fY29udGVudEZ1bmN0aW9uOwotICAgICAgICB2b2lk
KiBtX2FyZ3VtZW50OwotICAgIH07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlm
IC8vIFBvbGljeUNoZWNrX2g=
</data>
<flag name="review"
          id="22133"
          type_id="1"
          status="+"
          setter="eric"
    />
    <flag name="commit-queue"
          id="22136"
          type_id="3"
          status="-"
          setter="abarth"
    />
          </attachment>
      

    </bug>

</bugzilla>