<?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>106899</bug_id>
          
          <creation_ts>2013-01-15 06:07:56 -0800</creation_ts>
          <short_desc>[Chromium] Move SocketStreamHandle and SocketStreamHandleInternal to WebCore/platform</short_desc>
          <delta_ts>2013-01-15 12:47:47 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>106829</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Pilgrim (Google)">pilgrim</reporter>
          <assigned_to name="Mark Pilgrim (Google)">pilgrim</assigned_to>
          <cc>abarth</cc>
    
    <cc>fishd</cc>
    
    <cc>haraken</cc>
    
    <cc>jamesr</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yutak</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>807231</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Pilgrim (Google)">pilgrim</who>
    <bug_when>2013-01-15 06:07:56 -0800</bug_when>
    <thetext>[Chromium] Move SocketStreamHandle and SocketStreamHandleInternal to WebCore/platform</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>807232</commentid>
    <comment_count>1</comment_count>
      <attachid>182749</attachid>
    <who name="Mark Pilgrim (Google)">pilgrim</who>
    <bug_when>2013-01-15 06:08:38 -0800</bug_when>
    <thetext>Created attachment 182749
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>807233</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-15 06:11:12 -0800</bug_when>
    <thetext>Attachment 182749 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1
Source/WebCore/platform/network/chromium/SocketStreamHandle.cpp:32:  You should add a blank line after implementation file&apos;s own header.  [build/include_order] [4]
Source/WebCore/platform/network/chromium/SocketStreamHandle.cpp:213:  One space before end of line comments  [whitespace/comments] [5]
Source/WebCore/platform/network/chromium/SocketStreamHandle.cpp:215:  One space before end of line comments  [whitespace/comments] [5]
Total errors found: 3 in 5 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>807561</commentid>
    <comment_count>3</comment_count>
      <attachid>182749</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-01-15 12:25:39 -0800</bug_when>
    <thetext>Comment on attachment 182749
Patch

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

This looks good.  All these files have minor style issues, but I think you&apos;re right not to chase them.

&gt; Source/WebCore/platform/network/chromium/SocketStreamHandleInternal.h:42
&gt; +

Usually we skip these blank lines for forward declarations.

&gt; Source/WebCore/platform/network/chromium/SocketStreamHandleInternal.h:46
&gt; +

This one too</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>807591</commentid>
    <comment_count>4</comment_count>
      <attachid>182749</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-15 12:47:43 -0800</bug_when>
    <thetext>Comment on attachment 182749
Patch

Clearing flags on attachment: 182749

Committed r139774: &lt;http://trac.webkit.org/changeset/139774&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>807592</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-15 12:47:47 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>182749</attachid>
            <date>2013-01-15 06:08:38 -0800</date>
            <delta_ts>2013-01-15 12:47:43 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-106899-20130115090430.patch</filename>
            <type>text/plain</type>
            <size>28326</size>
            <attacher name="Mark Pilgrim (Google)">pilgrim</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzOTczNSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIyIEBACisyMDEzLTAxLTE1ICBNYXJrIFBp
bGdyaW0gIDxwaWxncmltQGNocm9taXVtLm9yZz4KKworICAgICAgICBbQ2hyb21pdW1dIE1vdmUg
U29ja2V0U3RyZWFtSGFuZGxlIGFuZCBTb2NrZXRTdHJlYW1IYW5kbGVJbnRlcm5hbCB0byBXZWJD
b3JlL3BsYXRmb3JtCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMDY4OTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBQYXJ0IG9mIGEgbGFyZ2VyIHJlZmFjdG9yaW5nIHNlcmllczsgc2VlIHRyYWNraW5nIGJ1
ZyAxMDY4MjkuCisKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9jaHJvbWl1bS9Tb2NrZXRTdHJlYW1IYW5kbGUuY3BwOiBDb3BpZWQgZnJvbSBTb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Tb2NrZXRTdHJlYW1IYW5kbGUuY3BwLgorICAgICAgICAo
V2ViQ29yZTo6U29ja2V0U3RyZWFtSGFuZGxlSW50ZXJuYWw6OnNlbmQpOgorICAgICAgICAoV2Vi
Q29yZTo6U29ja2V0U3RyZWFtSGFuZGxlSW50ZXJuYWw6OmRpZE9wZW5TdHJlYW0pOgorICAgICAg
ICAoV2ViQ29yZTo6U29ja2V0U3RyZWFtSGFuZGxlSW50ZXJuYWw6OmRpZFNlbmREYXRhKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZUludGVybmFsOjpkaWRSZWNlaXZlRGF0
YSk6CisgICAgICAgIChXZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGVJbnRlcm5hbDo6ZGlkQ2xv
c2UpOgorICAgICAgICAoV2ViQ29yZTo6U29ja2V0U3RyZWFtSGFuZGxlSW50ZXJuYWw6OmRpZEZh
aWwpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2hyb21pdW0vU29ja2V0U3RyZWFtSGFu
ZGxlSW50ZXJuYWwuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvU29j
a2V0U3RyZWFtSGFuZGxlSW50ZXJuYWwuaC4KKwogMjAxMy0wMS0xNCAgS2VudGFybyBIYXJhICA8
aGFyYWtlbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW1Y4XSBNYWtlIGFuIElzb2xhdGUgcGFy
YW1ldGVyIG1hbmRhdG9yeSBpbiBTZXJpYWxpemVkU2NyaXB0VmFsdWUgbWV0aG9kcwpJbmRleDog
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZ3lwaQkocmV2aXNpb24gMTM5NzMzKQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5neXBpCSh3b3JraW5nIGNvcHkpCkBAIC00NDM2LDcgKzQ0MzYsOSBAQAogICAgICAgICAgICAg
J3BsYXRmb3JtL25ldHdvcmsvY2hyb21pdW0vUmVzb3VyY2VSZXNwb25zZS5jcHAnLAogICAgICAg
ICAgICAgJ3BsYXRmb3JtL25ldHdvcmsvY2hyb21pdW0vUmVzb3VyY2VSZXNwb25zZS5oJywKICAg
ICAgICAgICAgICdwbGF0Zm9ybS9uZXR3b3JrL2Nocm9taXVtL1NvY2tldFN0cmVhbUVycm9yLmgn
LAorICAgICAgICAgICAgJ3BsYXRmb3JtL25ldHdvcmsvY2hyb21pdW0vU29ja2V0U3RyZWFtSGFu
ZGxlLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vbmV0d29yay9jaHJvbWl1bS9Tb2NrZXRT
dHJlYW1IYW5kbGUuaCcsCisgICAgICAgICAgICAncGxhdGZvcm0vbmV0d29yay9jaHJvbWl1bS9T
b2NrZXRTdHJlYW1IYW5kbGVJbnRlcm5hbC5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaCcsCiAgICAgICAgICAgICAncGxhdGZv
cm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckN1cmwuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvRE5TQ3VybC5jcHAnLApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jaHJvbWl1bS9Tb2NrZXRTdHJlYW1IYW5kbGUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2hyb21pdW0vU29ja2V0U3RyZWFtSGFu
ZGxlLmNwcAkocmV2aXNpb24gMTM5NzMzKQkoZnJvbSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9Tb2NrZXRTdHJlYW1IYW5kbGUuY3BwOjEzOTczMykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY2hyb21pdW0vU29ja2V0U3RyZWFtSGFuZGxlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDIxNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSwgMjAxMiBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisg
KiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJT
b2NrZXRTdHJlYW1IYW5kbGUuaCIKKyNpbmNsdWRlICJTb2NrZXRTdHJlYW1IYW5kbGVJbnRlcm5h
bC5oIgorCisjaWYgRU5BQkxFKFdFQl9TT0NLRVRTKQorCisjaW5jbHVkZSAiTG9nZ2luZy5oIgor
I2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisjaW5jbHVkZSAiU29ja2V0U3RyZWFtSGFuZGxl
Q2xpZW50LmgiCisjaW5jbHVkZSA8cHVibGljL1BsYXRmb3JtLmg+CisjaW5jbHVkZSA8cHVibGlj
L1dlYkRhdGEuaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViU29ja2V0U3RyZWFtSGFuZGxlLmg+Cisj
aW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitTb2NrZXRTdHJlYW1IYW5kbGVJbnRlcm5hbDo6U29ja2V0
U3RyZWFtSGFuZGxlSW50ZXJuYWwoU29ja2V0U3RyZWFtSGFuZGxlKiBoYW5kbGUpCisgICAgOiBt
X2hhbmRsZShoYW5kbGUpCisgICAgLCBtX21heFBlbmRpbmdTZW5kQWxsb3dlZCgwKQorICAgICwg
bV9wZW5kaW5nQW1vdW50U2VudCgwKQoreworfQorCitTb2NrZXRTdHJlYW1IYW5kbGVJbnRlcm5h
bDo6flNvY2tldFN0cmVhbUhhbmRsZUludGVybmFsKCkKK3sKKyAgICBtX2hhbmRsZSA9IDA7Cit9
CisKK3ZvaWQgU29ja2V0U3RyZWFtSGFuZGxlSW50ZXJuYWw6OmNvbm5lY3QoY29uc3QgS1VSTCYg
dXJsKQoreworICAgIG1fc29ja2V0ID0gYWRvcHRQdHIoV2ViS2l0OjpQbGF0Zm9ybTo6Y3VycmVu
dCgpLT5jcmVhdGVTb2NrZXRTdHJlYW1IYW5kbGUoKSk7CisgICAgTE9HKE5ldHdvcmssICJjb25u
ZWN0Iik7CisgICAgQVNTRVJUKG1fc29ja2V0KTsKKyAgICBBU1NFUlQobV9oYW5kbGUpOworICAg
IGlmIChtX2hhbmRsZS0+bV9jbGllbnQpCisgICAgICAgIG1faGFuZGxlLT5tX2NsaWVudC0+d2ls
bE9wZW5Tb2NrZXRTdHJlYW0obV9oYW5kbGUpOworICAgIG1fc29ja2V0LT5jb25uZWN0KHVybCwg
dGhpcyk7Cit9CisKK2ludCBTb2NrZXRTdHJlYW1IYW5kbGVJbnRlcm5hbDo6c2VuZChjb25zdCBj
aGFyKiBkYXRhLCBpbnQgbGVuKQoreworICAgIExPRyhOZXR3b3JrLCAic2VuZCBsZW49JWQiLCBs
ZW4pOworICAgIC8vIEZJWE1FOiB8bV9zb2NrZXR8IHNob3VsZCBub3QgYmUgbnVsbCBoZXJlLCBi
dXQgaXQgc2VlbXMgdGhhdCB0aGVyZSBpcyB0aGUKKyAgICAvLyBjYXNlLiBXZSBzaG91bGQgZmln
dXJlIG91dCBzdWNoIGEgcGF0aCBhbmQgZml4IGl0IHJhdGhlciB0aGFuIGNoZWNraW5nCisgICAg
Ly8gbnVsbCBoZXJlLgorICAgIGlmICghbV9zb2NrZXQpIHsKKyAgICAgICAgTE9HKE5ldHdvcmss
ICJtX3NvY2tldCBpcyBudWxsIHdoZW4gc2VuZGluZy4gSXQgc2hvdWxkIG5vdCBiZS4iKTsKKyAg
ICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIGlmIChtX3BlbmRpbmdBbW91bnRTZW50ICsgbGVu
ID49IG1fbWF4UGVuZGluZ1NlbmRBbGxvd2VkKQorICAgICAgICBsZW4gPSBtX21heFBlbmRpbmdT
ZW5kQWxsb3dlZCAtIG1fcGVuZGluZ0Ftb3VudFNlbnQgLSAxOworCisgICAgaWYgKGxlbiA8PSAw
KQorICAgICAgICByZXR1cm4gbGVuOworICAgIFdlYkRhdGEgd2ViZGF0YShkYXRhLCBsZW4pOwor
ICAgIGlmIChtX3NvY2tldC0+c2VuZCh3ZWJkYXRhKSkgeworICAgICAgICBtX3BlbmRpbmdBbW91
bnRTZW50ICs9IGxlbjsKKyAgICAgICAgTE9HKE5ldHdvcmssICJzZW50Iik7CisgICAgICAgIHJl
dHVybiBsZW47CisgICAgfQorICAgIExPRyhOZXR3b3JrLCAiYnVzeS4gYnVmZmVyaW5nIik7Cisg
ICAgcmV0dXJuIDA7Cit9CisKK3ZvaWQgU29ja2V0U3RyZWFtSGFuZGxlSW50ZXJuYWw6OmNsb3Nl
KCkKK3sKKyAgICBMT0coTmV0d29yaywgImNsb3NlIik7CisgICAgaWYgKG1fc29ja2V0KQorICAg
ICAgICBtX3NvY2tldC0+Y2xvc2UoKTsKK30KKyAgICAKK3ZvaWQgU29ja2V0U3RyZWFtSGFuZGxl
SW50ZXJuYWw6OmRpZE9wZW5TdHJlYW0oV2ViU29ja2V0U3RyZWFtSGFuZGxlKiBzb2NrZXRIYW5k
bGUsIGludCBtYXhQZW5kaW5nU2VuZEFsbG93ZWQpCit7CisgICAgTE9HKE5ldHdvcmssICJTb2Nr
ZXRTdHJlYW1IYW5kbGVJbnRlcm5hbDo6ZGlkT3BlbiAlZCIsCisgICAgICAgIG1heFBlbmRpbmdT
ZW5kQWxsb3dlZCk7CisgICAgQVNTRVJUKG1heFBlbmRpbmdTZW5kQWxsb3dlZCA+IDApOworICAg
IGlmIChtX2hhbmRsZSAmJiBtX3NvY2tldCkgeworICAgICAgICBBU1NFUlQoc29ja2V0SGFuZGxl
ID09IG1fc29ja2V0LmdldCgpKTsKKyAgICAgICAgbV9tYXhQZW5kaW5nU2VuZEFsbG93ZWQgPSBt
YXhQZW5kaW5nU2VuZEFsbG93ZWQ7CisgICAgICAgIG1faGFuZGxlLT5tX3N0YXRlID0gU29ja2V0
U3RyZWFtSGFuZGxlQmFzZTo6T3BlbjsKKyAgICAgICAgaWYgKG1faGFuZGxlLT5tX2NsaWVudCkg
eworICAgICAgICAgICAgbV9oYW5kbGUtPm1fY2xpZW50LT5kaWRPcGVuU29ja2V0U3RyZWFtKG1f
aGFuZGxlKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KKyAgICBMT0co
TmV0d29yaywgIm5vIG1faGFuZGxlIG9yIG1fc29ja2V0PyIpOworfQorCit2b2lkIFNvY2tldFN0
cmVhbUhhbmRsZUludGVybmFsOjpkaWRTZW5kRGF0YShXZWJTb2NrZXRTdHJlYW1IYW5kbGUqIHNv
Y2tldEhhbmRsZSwgaW50IGFtb3VudFNlbnQpCit7CisgICAgTE9HKE5ldHdvcmssICJTb2NrZXRT
dHJlYW1IYW5kbGVJbnRlcm5hbDo6ZGlkU2VuZERhdGEgJWQiLCBhbW91bnRTZW50KTsKKyAgICBB
U1NFUlQoYW1vdW50U2VudCA+IDApOworICAgIGlmIChtX2hhbmRsZSAmJiBtX3NvY2tldCkgewor
ICAgICAgICBBU1NFUlQoc29ja2V0SGFuZGxlID09IG1fc29ja2V0LmdldCgpKTsKKyAgICAgICAg
bV9wZW5kaW5nQW1vdW50U2VudCAtPSBhbW91bnRTZW50OworICAgICAgICBBU1NFUlQobV9wZW5k
aW5nQW1vdW50U2VudCA+PSAwKTsKKyAgICAgICAgbV9oYW5kbGUtPnNlbmRQZW5kaW5nRGF0YSgp
OworICAgIH0KK30KKwordm9pZCBTb2NrZXRTdHJlYW1IYW5kbGVJbnRlcm5hbDo6ZGlkUmVjZWl2
ZURhdGEoV2ViU29ja2V0U3RyZWFtSGFuZGxlKiBzb2NrZXRIYW5kbGUsIGNvbnN0IFdlYkRhdGEm
IGRhdGEpCit7CisgICAgTE9HKE5ldHdvcmssICJkaWRSZWNlaXZlRGF0YSIpOworICAgIGlmICht
X2hhbmRsZSAmJiBtX3NvY2tldCkgeworICAgICAgICBBU1NFUlQoc29ja2V0SGFuZGxlID09IG1f
c29ja2V0LmdldCgpKTsKKyAgICAgICAgaWYgKG1faGFuZGxlLT5tX2NsaWVudCkKKyAgICAgICAg
ICAgIG1faGFuZGxlLT5tX2NsaWVudC0+ZGlkUmVjZWl2ZVNvY2tldFN0cmVhbURhdGEobV9oYW5k
bGUsIGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7CisgICAgfQorfQorCit2b2lkIFNvY2tldFN0
cmVhbUhhbmRsZUludGVybmFsOjpkaWRDbG9zZShXZWJTb2NrZXRTdHJlYW1IYW5kbGUqIHNvY2tl
dEhhbmRsZSkKK3sKKyAgICBMT0coTmV0d29yaywgImRpZENsb3NlIik7CisgICAgaWYgKG1faGFu
ZGxlICYmIG1fc29ja2V0KSB7CisgICAgICAgIEFTU0VSVChzb2NrZXRIYW5kbGUgPT0gbV9zb2Nr
ZXQuZ2V0KCkpOworICAgICAgICBtX3NvY2tldC5jbGVhcigpOworICAgICAgICBTb2NrZXRTdHJl
YW1IYW5kbGUqIGggPSBtX2hhbmRsZTsKKyAgICAgICAgbV9oYW5kbGUgPSAwOworICAgICAgICBp
ZiAoaC0+bV9jbGllbnQpCisgICAgICAgICAgICBoLT5tX2NsaWVudC0+ZGlkQ2xvc2VTb2NrZXRT
dHJlYW0oaCk7CisgICAgfQorfQorCit2b2lkIFNvY2tldFN0cmVhbUhhbmRsZUludGVybmFsOjpk
aWRGYWlsKFdlYlNvY2tldFN0cmVhbUhhbmRsZSogc29ja2V0SGFuZGxlLCBjb25zdCBXZWJTb2Nr
ZXRTdHJlYW1FcnJvciYgZXJyKQoreworICAgIExPRyhOZXR3b3JrLCAiZGlkRmFpbCIpOworICAg
IGlmIChtX2hhbmRsZSAmJiBtX3NvY2tldCkgeworICAgICAgICBBU1NFUlQoc29ja2V0SGFuZGxl
ID09IG1fc29ja2V0LmdldCgpKTsKKyAgICAgICAgbV9zb2NrZXQuY2xlYXIoKTsKKyAgICAgICAg
U29ja2V0U3RyZWFtSGFuZGxlKiBoID0gbV9oYW5kbGU7CisgICAgICAgIG1faGFuZGxlID0gMDsK
KyAgICAgICAgaWYgKGgtPm1fY2xpZW50KQorICAgICAgICAgICAgaC0+bV9jbGllbnQtPmRpZENs
b3NlU29ja2V0U3RyZWFtKGgpOyAvLyBkaWRGYWlsKGgsIGVycik7CisgICAgfQorfQorCisvLyBG
SVhNRTogYXV0aAorCisvLyBTb2NrZXRTdHJlYW1IYW5kbGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitTb2NrZXRTdHJlYW1IYW5k
bGU6OlNvY2tldFN0cmVhbUhhbmRsZShjb25zdCBLVVJMJiB1cmwsIFNvY2tldFN0cmVhbUhhbmRs
ZUNsaWVudCogY2xpZW50KQorICAgIDogU29ja2V0U3RyZWFtSGFuZGxlQmFzZSh1cmwsIGNsaWVu
dCkKK3sKKyAgICBtX2ludGVybmFsID0gU29ja2V0U3RyZWFtSGFuZGxlSW50ZXJuYWw6OmNyZWF0
ZSh0aGlzKTsKKyAgICBtX2ludGVybmFsLT5jb25uZWN0KG1fdXJsKTsKK30KKworU29ja2V0U3Ry
ZWFtSGFuZGxlOjp+U29ja2V0U3RyZWFtSGFuZGxlKCkKK3sKKyAgICBzZXRDbGllbnQoMCk7Cisg
ICAgbV9pbnRlcm5hbC5jbGVhcigpOworfQorCitpbnQgU29ja2V0U3RyZWFtSGFuZGxlOjpwbGF0
Zm9ybVNlbmQoY29uc3QgY2hhciogYnVmLCBpbnQgbGVuKQoreworICAgIGlmICghbV9pbnRlcm5h
bCkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIG1faW50ZXJuYWwtPnNlbmQoYnVmLCBs
ZW4pOworfQorCit2b2lkIFNvY2tldFN0cmVhbUhhbmRsZTo6cGxhdGZvcm1DbG9zZSgpCit7Cisg
ICAgaWYgKG1faW50ZXJuYWwpCisgICAgICAgIG1faW50ZXJuYWwtPmNsb3NlKCk7Cit9CisKK3Zv
aWQgU29ja2V0U3RyZWFtSGFuZGxlOjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2Uo
Y29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGNoYWxsZW5nZSkKK3sKKyAgICBpZiAobV9j
bGllbnQpCisgICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UodGhpcywgY2hhbGxlbmdlKTsKK30KKwordm9pZCBTb2NrZXRTdHJlYW1IYW5kbGU6OnJlY2Vp
dmVkQ3JlZGVudGlhbChjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgY2hhbGxlbmdlLCBj
b25zdCBDcmVkZW50aWFsJiBjcmVkZW50aWFsKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9
CisKK3ZvaWQgU29ja2V0U3RyZWFtSGFuZGxlOjpyZWNlaXZlZFJlcXVlc3RUb0NvbnRpbnVlV2l0
aG91dENyZWRlbnRpYWwoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGNoYWxsZW5nZSkK
K3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit9ICAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYgIC8vIEVOQUJMRShXRUJfU09DS0VUUykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY2hyb21pdW0vU29ja2V0U3RyZWFtSGFuZGxlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nocm9taXVtL1NvY2tldFN0cmVh
bUhhbmRsZS5jcHAJKHJldmlzaW9uIDEzOTczMykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY2hyb21pdW0vU29ja2V0U3RyZWFtSGFuZGxlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDIsOCArNDIsNiBAQAogI2luY2x1ZGUgPHB1YmxpYy9XZWJTb2NrZXRTdHJlYW1IYW5kbGUu
aD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogCi11c2luZyBuYW1lc3BhY2UgV2ViS2l0
OwotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFNvY2tldFN0cmVhbUhhbmRsZUludGVybmFsOjpT
b2NrZXRTdHJlYW1IYW5kbGVJbnRlcm5hbChTb2NrZXRTdHJlYW1IYW5kbGUqIGhhbmRsZSkKQEAg
LTg0LDcgKzgyLDcgQEAgaW50IFNvY2tldFN0cmVhbUhhbmRsZUludGVybmFsOjpzZW5kKGNvbgog
CiAgICAgaWYgKGxlbiA8PSAwKQogICAgICAgICByZXR1cm4gbGVuOwotICAgIFdlYkRhdGEgd2Vi
ZGF0YShkYXRhLCBsZW4pOworICAgIFdlYktpdDo6V2ViRGF0YSB3ZWJkYXRhKGRhdGEsIGxlbik7
CiAgICAgaWYgKG1fc29ja2V0LT5zZW5kKHdlYmRhdGEpKSB7CiAgICAgICAgIG1fcGVuZGluZ0Ft
b3VudFNlbnQgKz0gbGVuOwogICAgICAgICBMT0coTmV0d29yaywgInNlbnQiKTsKQEAgLTEwMSw3
ICs5OSw3IEBAIHZvaWQgU29ja2V0U3RyZWFtSGFuZGxlSW50ZXJuYWw6OmNsb3NlKCkKICAgICAg
ICAgbV9zb2NrZXQtPmNsb3NlKCk7CiB9CiAgICAgCi12b2lkIFNvY2tldFN0cmVhbUhhbmRsZUlu
dGVybmFsOjpkaWRPcGVuU3RyZWFtKFdlYlNvY2tldFN0cmVhbUhhbmRsZSogc29ja2V0SGFuZGxl
LCBpbnQgbWF4UGVuZGluZ1NlbmRBbGxvd2VkKQordm9pZCBTb2NrZXRTdHJlYW1IYW5kbGVJbnRl
cm5hbDo6ZGlkT3BlblN0cmVhbShXZWJLaXQ6OldlYlNvY2tldFN0cmVhbUhhbmRsZSogc29ja2V0
SGFuZGxlLCBpbnQgbWF4UGVuZGluZ1NlbmRBbGxvd2VkKQogewogICAgIExPRyhOZXR3b3JrLCAi
U29ja2V0U3RyZWFtSGFuZGxlSW50ZXJuYWw6OmRpZE9wZW4gJWQiLAogICAgICAgICBtYXhQZW5k
aW5nU2VuZEFsbG93ZWQpOwpAQCAtMTE4LDcgKzExNiw3IEBAIHZvaWQgU29ja2V0U3RyZWFtSGFu
ZGxlSW50ZXJuYWw6OmRpZE9wZW4KICAgICBMT0coTmV0d29yaywgIm5vIG1faGFuZGxlIG9yIG1f
c29ja2V0PyIpOwogfQogCi12b2lkIFNvY2tldFN0cmVhbUhhbmRsZUludGVybmFsOjpkaWRTZW5k
RGF0YShXZWJTb2NrZXRTdHJlYW1IYW5kbGUqIHNvY2tldEhhbmRsZSwgaW50IGFtb3VudFNlbnQp
Cit2b2lkIFNvY2tldFN0cmVhbUhhbmRsZUludGVybmFsOjpkaWRTZW5kRGF0YShXZWJLaXQ6Oldl
YlNvY2tldFN0cmVhbUhhbmRsZSogc29ja2V0SGFuZGxlLCBpbnQgYW1vdW50U2VudCkKIHsKICAg
ICBMT0coTmV0d29yaywgIlNvY2tldFN0cmVhbUhhbmRsZUludGVybmFsOjpkaWRTZW5kRGF0YSAl
ZCIsIGFtb3VudFNlbnQpOwogICAgIEFTU0VSVChhbW91bnRTZW50ID4gMCk7CkBAIC0xMzAsNyAr
MTI4LDcgQEAgdm9pZCBTb2NrZXRTdHJlYW1IYW5kbGVJbnRlcm5hbDo6ZGlkU2VuZAogICAgIH0K
IH0KIAotdm9pZCBTb2NrZXRTdHJlYW1IYW5kbGVJbnRlcm5hbDo6ZGlkUmVjZWl2ZURhdGEoV2Vi
U29ja2V0U3RyZWFtSGFuZGxlKiBzb2NrZXRIYW5kbGUsIGNvbnN0IFdlYkRhdGEmIGRhdGEpCit2
b2lkIFNvY2tldFN0cmVhbUhhbmRsZUludGVybmFsOjpkaWRSZWNlaXZlRGF0YShXZWJLaXQ6Oldl
YlNvY2tldFN0cmVhbUhhbmRsZSogc29ja2V0SGFuZGxlLCBjb25zdCBXZWJLaXQ6OldlYkRhdGEm
IGRhdGEpCiB7CiAgICAgTE9HKE5ldHdvcmssICJkaWRSZWNlaXZlRGF0YSIpOwogICAgIGlmICht
X2hhbmRsZSAmJiBtX3NvY2tldCkgewpAQCAtMTQwLDcgKzEzOCw3IEBAIHZvaWQgU29ja2V0U3Ry
ZWFtSGFuZGxlSW50ZXJuYWw6OmRpZFJlY2UKICAgICB9CiB9CiAKLXZvaWQgU29ja2V0U3RyZWFt
SGFuZGxlSW50ZXJuYWw6OmRpZENsb3NlKFdlYlNvY2tldFN0cmVhbUhhbmRsZSogc29ja2V0SGFu
ZGxlKQordm9pZCBTb2NrZXRTdHJlYW1IYW5kbGVJbnRlcm5hbDo6ZGlkQ2xvc2UoV2ViS2l0OjpX
ZWJTb2NrZXRTdHJlYW1IYW5kbGUqIHNvY2tldEhhbmRsZSkKIHsKICAgICBMT0coTmV0d29yaywg
ImRpZENsb3NlIik7CiAgICAgaWYgKG1faGFuZGxlICYmIG1fc29ja2V0KSB7CkBAIC0xNTMsNyAr
MTUxLDcgQEAgdm9pZCBTb2NrZXRTdHJlYW1IYW5kbGVJbnRlcm5hbDo6ZGlkQ2xvcwogICAgIH0K
IH0KIAotdm9pZCBTb2NrZXRTdHJlYW1IYW5kbGVJbnRlcm5hbDo6ZGlkRmFpbChXZWJTb2NrZXRT
dHJlYW1IYW5kbGUqIHNvY2tldEhhbmRsZSwgY29uc3QgV2ViU29ja2V0U3RyZWFtRXJyb3ImIGVy
cikKK3ZvaWQgU29ja2V0U3RyZWFtSGFuZGxlSW50ZXJuYWw6OmRpZEZhaWwoV2ViS2l0OjpXZWJT
b2NrZXRTdHJlYW1IYW5kbGUqIHNvY2tldEhhbmRsZSwgY29uc3QgV2ViS2l0OjpXZWJTb2NrZXRT
dHJlYW1FcnJvciYgZXJyKQogewogICAgIExPRyhOZXR3b3JrLCAiZGlkRmFpbCIpOwogICAgIGlm
IChtX2hhbmRsZSAmJiBtX3NvY2tldCkgewpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jaHJvbWl1bS9Tb2NrZXRTdHJlYW1IYW5kbGVJbnRlcm5hbC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2hyb21pdW0vU29ja2V0U3RyZWFt
SGFuZGxlSW50ZXJuYWwuaAkocmV2aXNpb24gMTM5NzMzKQkoZnJvbSBTb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9Tb2NrZXRTdHJlYW1IYW5kbGVJbnRlcm5hbC5oOjEzOTczMykKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2hyb21pdW0vU29ja2V0U3RyZWFtSGFuZGxlSW50
ZXJuYWwuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDg5IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4K
KyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
CisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBTb2NrZXRTdHJl
YW1IYW5kbGVJbnRlcm5hbF9oCisjZGVmaW5lIFNvY2tldFN0cmVhbUhhbmRsZUludGVybmFsX2gK
KworI2lmIEVOQUJMRShXRUJfU09DS0VUUykKKworI2luY2x1ZGUgIlNvY2tldFN0cmVhbUhhbmRs
ZS5oIgorI2luY2x1ZGUgPHB1YmxpYy9XZWJTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQuaD4KKyNp
bmNsdWRlIDxwdWJsaWMvV2ViVVJMLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKwor
bmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYkRhdGE7CitjbGFzcyBXZWJTb2NrZXRTdHJl
YW1FcnJvcjsKK2NsYXNzIFdlYlNvY2tldFN0cmVhbUhhbmRsZTsKKworfQorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK2NsYXNzIFNvY2tldFN0cmVhbUhhbmRsZUludGVybmFsIDogcHVibGljIFdl
YktpdDo6V2ViU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMg
UGFzc093blB0cjxTb2NrZXRTdHJlYW1IYW5kbGVJbnRlcm5hbD4gY3JlYXRlKFNvY2tldFN0cmVh
bUhhbmRsZSogaGFuZGxlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBTb2Nr
ZXRTdHJlYW1IYW5kbGVJbnRlcm5hbChoYW5kbGUpKTsKKyAgICB9CisgICAgdmlydHVhbCB+U29j
a2V0U3RyZWFtSGFuZGxlSW50ZXJuYWwoKTsKKworICAgIHZvaWQgY29ubmVjdChjb25zdCBLVVJM
Jik7CisgICAgaW50IHNlbmQoY29uc3QgY2hhciosIGludCk7CisgICAgdm9pZCBjbG9zZSgpOwor
CisgICAgdmlydHVhbCB2b2lkIGRpZE9wZW5TdHJlYW0oV2ViS2l0OjpXZWJTb2NrZXRTdHJlYW1I
YW5kbGUqLCBpbnQpOworICAgIHZpcnR1YWwgdm9pZCBkaWRTZW5kRGF0YShXZWJLaXQ6OldlYlNv
Y2tldFN0cmVhbUhhbmRsZSosIGludCk7CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRh
KFdlYktpdDo6V2ViU29ja2V0U3RyZWFtSGFuZGxlKiwgY29uc3QgV2ViS2l0OjpXZWJEYXRhJik7
CisgICAgdmlydHVhbCB2b2lkIGRpZENsb3NlKFdlYktpdDo6V2ViU29ja2V0U3RyZWFtSGFuZGxl
Kik7CisgICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoV2ViS2l0OjpXZWJTb2NrZXRTdHJlYW1IYW5k
bGUqLCBjb25zdCBXZWJLaXQ6OldlYlNvY2tldFN0cmVhbUVycm9yJik7CisKKyAgICBzdGF0aWMg
V2ViS2l0OjpXZWJTb2NrZXRTdHJlYW1IYW5kbGUqIHRvV2ViU29ja2V0U3RyZWFtSGFuZGxlKFNv
Y2tldFN0cmVhbUhhbmRsZSogaGFuZGxlKQorICAgIHsKKyAgICAgICAgaWYgKGhhbmRsZSAmJiBo
YW5kbGUtPm1faW50ZXJuYWwpCisgICAgICAgICAgICByZXR1cm4gaGFuZGxlLT5tX2ludGVybmFs
LT5tX3NvY2tldC5nZXQoKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCitwcml2YXRlOgor
ICAgIGV4cGxpY2l0IFNvY2tldFN0cmVhbUhhbmRsZUludGVybmFsKFNvY2tldFN0cmVhbUhhbmRs
ZSopOworCisgICAgU29ja2V0U3RyZWFtSGFuZGxlKiBtX2hhbmRsZTsKKyAgICBPd25QdHI8V2Vi
S2l0OjpXZWJTb2NrZXRTdHJlYW1IYW5kbGU+IG1fc29ja2V0OworICAgIGludCBtX21heFBlbmRp
bmdTZW5kQWxsb3dlZDsKKyAgICBpbnQgbV9wZW5kaW5nQW1vdW50U2VudDsKK307CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfU09DS0VUUykKKworI2Vu
ZGlmIC8vIFNvY2tldFN0cmVhbUhhbmRsZUludGVybmFsX2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCShyZXZpc2lvbiAxMzk3MzUpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDEzLTAxLTE1ICBNYXJr
IFBpbGdyaW0gIDxwaWxncmltQGNocm9taXVtLm9yZz4KKworICAgICAgICBbQ2hyb21pdW1dIE1v
dmUgU29ja2V0U3RyZWFtSGFuZGxlIGFuZCBTb2NrZXRTdHJlYW1IYW5kbGVJbnRlcm5hbCB0byBX
ZWJDb3JlL3BsYXRmb3JtCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMDY4OTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBQYXJ0IG9mIGEgbGFyZ2VyIHJlZmFjdG9yaW5nIHNlcmllczsgc2VlIHRyYWNraW5n
IGJ1ZyAxMDY4MjkuCisKKyAgICAgICAgKiBXZWJLaXQuZ3lwOgorICAgICAgICAqIHNyYy9Tb2Nr
ZXRTdHJlYW1IYW5kbGUuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHNyYy9Tb2NrZXRTdHJlYW1I
YW5kbGVJbnRlcm5hbC5oOiBSZW1vdmVkLgorCiAyMDEyLTEyLTI4ICBWc2V2b2xvZCBWbGFzb3Yg
IDx2c2V2aWtAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFN1cHBvcnQg
aW5zcGVjdG9yIGZpbGUgc3lzdGVtIGFjY2VzcyB3aXRoIGlzb2xhdGVkIGZpbGUgc3lzdGVtIHRo
cm91Z2ggSW5zcGVjdG9yRnJvbnRlbmRIb3N0LgpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1
bS9XZWJLaXQuZ3lwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0
Lmd5cAkocmV2aXNpb24gMTM5NzMzKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQu
Z3lwCSh3b3JraW5nIGNvcHkpCkBAIC00NTQsOCArNDU0LDYgQEAKICAgICAgICAgICAgICAgICAn
c3JjL1Njcm9sbGJhckdyb3VwLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9TY3JvbGxiYXJH
cm91cC5oJywKICAgICAgICAgICAgICAgICAnc3JjL1NoYXJlZFdvcmtlclJlcG9zaXRvcnkuY3Bw
JywKLSAgICAgICAgICAgICAgICAnc3JjL1NvY2tldFN0cmVhbUhhbmRsZS5jcHAnLAotICAgICAg
ICAgICAgICAgICdzcmMvU29ja2V0U3RyZWFtSGFuZGxlSW50ZXJuYWwuaCcsCiAgICAgICAgICAg
ICAgICAgJ3NyYy9TcGVlY2hJbnB1dENsaWVudEltcGwuY3BwJywKICAgICAgICAgICAgICAgICAn
c3JjL1NwZWVjaElucHV0Q2xpZW50SW1wbC5oJywKICAgICAgICAgICAgICAgICAnc3JjL1NwZWVj
aFJlY29nbml0aW9uQ2xpZW50UHJveHkuY3BwJywKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1NvY2tldFN0cmVhbUhhbmRsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvU29ja2V0U3RyZWFtSGFuZGxlLmNwcAkocmV2aXNpb24gMTM5NzMzKQor
KysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvU29ja2V0U3RyZWFtSGFuZGxlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMSwyMTcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSwg
MjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAg
ICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRz
Ci0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICog
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
Ci0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNp
bmNsdWRlICJTb2NrZXRTdHJlYW1IYW5kbGUuaCIKLSNpbmNsdWRlICJTb2NrZXRTdHJlYW1IYW5k
bGVJbnRlcm5hbC5oIgotCi0jaWYgRU5BQkxFKFdFQl9TT0NLRVRTKQotCi0jaW5jbHVkZSAiTG9n
Z2luZy5oIgotI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCi0jaW5jbHVkZSAiU29ja2V0U3Ry
ZWFtSGFuZGxlQ2xpZW50LmgiCi0jaW5jbHVkZSA8cHVibGljL1BsYXRmb3JtLmg+Ci0jaW5jbHVk
ZSA8cHVibGljL1dlYkRhdGEuaD4KLSNpbmNsdWRlIDxwdWJsaWMvV2ViU29ja2V0U3RyZWFtSGFu
ZGxlLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KLQotdXNpbmcgbmFtZXNwYWNlIFdl
YktpdDsKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1Tb2NrZXRTdHJlYW1IYW5kbGVJbnRlcm5h
bDo6U29ja2V0U3RyZWFtSGFuZGxlSW50ZXJuYWwoU29ja2V0U3RyZWFtSGFuZGxlKiBoYW5kbGUp
Ci0gICAgOiBtX2hhbmRsZShoYW5kbGUpCi0gICAgLCBtX21heFBlbmRpbmdTZW5kQWxsb3dlZCgw
KQotICAgICwgbV9wZW5kaW5nQW1vdW50U2VudCgwKQotewotfQotCi1Tb2NrZXRTdHJlYW1IYW5k
bGVJbnRlcm5hbDo6flNvY2tldFN0cmVhbUhhbmRsZUludGVybmFsKCkKLXsKLSAgICBtX2hhbmRs
ZSA9IDA7Ci19Ci0KLXZvaWQgU29ja2V0U3RyZWFtSGFuZGxlSW50ZXJuYWw6OmNvbm5lY3QoY29u
c3QgS1VSTCYgdXJsKQotewotICAgIG1fc29ja2V0ID0gYWRvcHRQdHIoV2ViS2l0OjpQbGF0Zm9y
bTo6Y3VycmVudCgpLT5jcmVhdGVTb2NrZXRTdHJlYW1IYW5kbGUoKSk7Ci0gICAgTE9HKE5ldHdv
cmssICJjb25uZWN0Iik7Ci0gICAgQVNTRVJUKG1fc29ja2V0KTsKLSAgICBBU1NFUlQobV9oYW5k
bGUpOwotICAgIGlmIChtX2hhbmRsZS0+bV9jbGllbnQpCi0gICAgICAgIG1faGFuZGxlLT5tX2Ns
aWVudC0+d2lsbE9wZW5Tb2NrZXRTdHJlYW0obV9oYW5kbGUpOwotICAgIG1fc29ja2V0LT5jb25u
ZWN0KHVybCwgdGhpcyk7Ci19Ci0KLWludCBTb2NrZXRTdHJlYW1IYW5kbGVJbnRlcm5hbDo6c2Vu
ZChjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuKQotewotICAgIExPRyhOZXR3b3JrLCAic2VuZCBs
ZW49JWQiLCBsZW4pOwotICAgIC8vIEZJWE1FOiB8bV9zb2NrZXR8IHNob3VsZCBub3QgYmUgbnVs
bCBoZXJlLCBidXQgaXQgc2VlbXMgdGhhdCB0aGVyZSBpcyB0aGUKLSAgICAvLyBjYXNlLiBXZSBz
aG91bGQgZmlndXJlIG91dCBzdWNoIGEgcGF0aCBhbmQgZml4IGl0IHJhdGhlciB0aGFuIGNoZWNr
aW5nCi0gICAgLy8gbnVsbCBoZXJlLgotICAgIGlmICghbV9zb2NrZXQpIHsKLSAgICAgICAgTE9H
KE5ldHdvcmssICJtX3NvY2tldCBpcyBudWxsIHdoZW4gc2VuZGluZy4gSXQgc2hvdWxkIG5vdCBi
ZS4iKTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotICAgIGlmIChtX3BlbmRpbmdBbW91bnRT
ZW50ICsgbGVuID49IG1fbWF4UGVuZGluZ1NlbmRBbGxvd2VkKQotICAgICAgICBsZW4gPSBtX21h
eFBlbmRpbmdTZW5kQWxsb3dlZCAtIG1fcGVuZGluZ0Ftb3VudFNlbnQgLSAxOwotCi0gICAgaWYg
KGxlbiA8PSAwKQotICAgICAgICByZXR1cm4gbGVuOwotICAgIFdlYkRhdGEgd2ViZGF0YShkYXRh
LCBsZW4pOwotICAgIGlmIChtX3NvY2tldC0+c2VuZCh3ZWJkYXRhKSkgewotICAgICAgICBtX3Bl
bmRpbmdBbW91bnRTZW50ICs9IGxlbjsKLSAgICAgICAgTE9HKE5ldHdvcmssICJzZW50Iik7Ci0g
ICAgICAgIHJldHVybiBsZW47Ci0gICAgfQotICAgIExPRyhOZXR3b3JrLCAiYnVzeS4gYnVmZmVy
aW5nIik7Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLXZvaWQgU29ja2V0U3RyZWFtSGFuZGxlSW50ZXJu
YWw6OmNsb3NlKCkKLXsKLSAgICBMT0coTmV0d29yaywgImNsb3NlIik7Ci0gICAgaWYgKG1fc29j
a2V0KQotICAgICAgICBtX3NvY2tldC0+Y2xvc2UoKTsKLX0KLSAgICAKLXZvaWQgU29ja2V0U3Ry
ZWFtSGFuZGxlSW50ZXJuYWw6OmRpZE9wZW5TdHJlYW0oV2ViU29ja2V0U3RyZWFtSGFuZGxlKiBz
b2NrZXRIYW5kbGUsIGludCBtYXhQZW5kaW5nU2VuZEFsbG93ZWQpCi17Ci0gICAgTE9HKE5ldHdv
cmssICJTb2NrZXRTdHJlYW1IYW5kbGVJbnRlcm5hbDo6ZGlkT3BlbiAlZCIsCi0gICAgICAgIG1h
eFBlbmRpbmdTZW5kQWxsb3dlZCk7Ci0gICAgQVNTRVJUKG1heFBlbmRpbmdTZW5kQWxsb3dlZCA+
IDApOwotICAgIGlmIChtX2hhbmRsZSAmJiBtX3NvY2tldCkgewotICAgICAgICBBU1NFUlQoc29j
a2V0SGFuZGxlID09IG1fc29ja2V0LmdldCgpKTsKLSAgICAgICAgbV9tYXhQZW5kaW5nU2VuZEFs
bG93ZWQgPSBtYXhQZW5kaW5nU2VuZEFsbG93ZWQ7Ci0gICAgICAgIG1faGFuZGxlLT5tX3N0YXRl
ID0gU29ja2V0U3RyZWFtSGFuZGxlQmFzZTo6T3BlbjsKLSAgICAgICAgaWYgKG1faGFuZGxlLT5t
X2NsaWVudCkgewotICAgICAgICAgICAgbV9oYW5kbGUtPm1fY2xpZW50LT5kaWRPcGVuU29ja2V0
U3RyZWFtKG1faGFuZGxlKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgIH0K
LSAgICBMT0coTmV0d29yaywgIm5vIG1faGFuZGxlIG9yIG1fc29ja2V0PyIpOwotfQotCi12b2lk
IFNvY2tldFN0cmVhbUhhbmRsZUludGVybmFsOjpkaWRTZW5kRGF0YShXZWJTb2NrZXRTdHJlYW1I
YW5kbGUqIHNvY2tldEhhbmRsZSwgaW50IGFtb3VudFNlbnQpCi17Ci0gICAgTE9HKE5ldHdvcmss
ICJTb2NrZXRTdHJlYW1IYW5kbGVJbnRlcm5hbDo6ZGlkU2VuZERhdGEgJWQiLCBhbW91bnRTZW50
KTsKLSAgICBBU1NFUlQoYW1vdW50U2VudCA+IDApOwotICAgIGlmIChtX2hhbmRsZSAmJiBtX3Nv
Y2tldCkgewotICAgICAgICBBU1NFUlQoc29ja2V0SGFuZGxlID09IG1fc29ja2V0LmdldCgpKTsK
LSAgICAgICAgbV9wZW5kaW5nQW1vdW50U2VudCAtPSBhbW91bnRTZW50OwotICAgICAgICBBU1NF
UlQobV9wZW5kaW5nQW1vdW50U2VudCA+PSAwKTsKLSAgICAgICAgbV9oYW5kbGUtPnNlbmRQZW5k
aW5nRGF0YSgpOwotICAgIH0KLX0KLQotdm9pZCBTb2NrZXRTdHJlYW1IYW5kbGVJbnRlcm5hbDo6
ZGlkUmVjZWl2ZURhdGEoV2ViU29ja2V0U3RyZWFtSGFuZGxlKiBzb2NrZXRIYW5kbGUsIGNvbnN0
IFdlYkRhdGEmIGRhdGEpCi17Ci0gICAgTE9HKE5ldHdvcmssICJkaWRSZWNlaXZlRGF0YSIpOwot
ICAgIGlmIChtX2hhbmRsZSAmJiBtX3NvY2tldCkgewotICAgICAgICBBU1NFUlQoc29ja2V0SGFu
ZGxlID09IG1fc29ja2V0LmdldCgpKTsKLSAgICAgICAgaWYgKG1faGFuZGxlLT5tX2NsaWVudCkK
LSAgICAgICAgICAgIG1faGFuZGxlLT5tX2NsaWVudC0+ZGlkUmVjZWl2ZVNvY2tldFN0cmVhbURh
dGEobV9oYW5kbGUsIGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7Ci0gICAgfQotfQotCi12b2lk
IFNvY2tldFN0cmVhbUhhbmRsZUludGVybmFsOjpkaWRDbG9zZShXZWJTb2NrZXRTdHJlYW1IYW5k
bGUqIHNvY2tldEhhbmRsZSkKLXsKLSAgICBMT0coTmV0d29yaywgImRpZENsb3NlIik7Ci0gICAg
aWYgKG1faGFuZGxlICYmIG1fc29ja2V0KSB7Ci0gICAgICAgIEFTU0VSVChzb2NrZXRIYW5kbGUg
PT0gbV9zb2NrZXQuZ2V0KCkpOwotICAgICAgICBtX3NvY2tldC5jbGVhcigpOwotICAgICAgICBT
b2NrZXRTdHJlYW1IYW5kbGUqIGggPSBtX2hhbmRsZTsKLSAgICAgICAgbV9oYW5kbGUgPSAwOwot
ICAgICAgICBpZiAoaC0+bV9jbGllbnQpCi0gICAgICAgICAgICBoLT5tX2NsaWVudC0+ZGlkQ2xv
c2VTb2NrZXRTdHJlYW0oaCk7Ci0gICAgfQotfQotCi12b2lkIFNvY2tldFN0cmVhbUhhbmRsZUlu
dGVybmFsOjpkaWRGYWlsKFdlYlNvY2tldFN0cmVhbUhhbmRsZSogc29ja2V0SGFuZGxlLCBjb25z
dCBXZWJTb2NrZXRTdHJlYW1FcnJvciYgZXJyKQotewotICAgIExPRyhOZXR3b3JrLCAiZGlkRmFp
bCIpOwotICAgIGlmIChtX2hhbmRsZSAmJiBtX3NvY2tldCkgewotICAgICAgICBBU1NFUlQoc29j
a2V0SGFuZGxlID09IG1fc29ja2V0LmdldCgpKTsKLSAgICAgICAgbV9zb2NrZXQuY2xlYXIoKTsK
LSAgICAgICAgU29ja2V0U3RyZWFtSGFuZGxlKiBoID0gbV9oYW5kbGU7Ci0gICAgICAgIG1faGFu
ZGxlID0gMDsKLSAgICAgICAgaWYgKGgtPm1fY2xpZW50KQotICAgICAgICAgICAgaC0+bV9jbGll
bnQtPmRpZENsb3NlU29ja2V0U3RyZWFtKGgpOyAvLyBkaWRGYWlsKGgsIGVycik7Ci0gICAgfQot
fQotCi0vLyBGSVhNRTogYXV0aAotCi0vLyBTb2NrZXRTdHJlYW1IYW5kbGUgLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1Tb2NrZXRT
dHJlYW1IYW5kbGU6OlNvY2tldFN0cmVhbUhhbmRsZShjb25zdCBLVVJMJiB1cmwsIFNvY2tldFN0
cmVhbUhhbmRsZUNsaWVudCogY2xpZW50KQotICAgIDogU29ja2V0U3RyZWFtSGFuZGxlQmFzZSh1
cmwsIGNsaWVudCkKLXsKLSAgICBtX2ludGVybmFsID0gU29ja2V0U3RyZWFtSGFuZGxlSW50ZXJu
YWw6OmNyZWF0ZSh0aGlzKTsKLSAgICBtX2ludGVybmFsLT5jb25uZWN0KG1fdXJsKTsKLX0KLQot
U29ja2V0U3RyZWFtSGFuZGxlOjp+U29ja2V0U3RyZWFtSGFuZGxlKCkKLXsKLSAgICBzZXRDbGll
bnQoMCk7Ci0gICAgbV9pbnRlcm5hbC5jbGVhcigpOwotfQotCi1pbnQgU29ja2V0U3RyZWFtSGFu
ZGxlOjpwbGF0Zm9ybVNlbmQoY29uc3QgY2hhciogYnVmLCBpbnQgbGVuKQotewotICAgIGlmICgh
bV9pbnRlcm5hbCkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIG1faW50ZXJuYWwtPnNl
bmQoYnVmLCBsZW4pOwotfQotCi12b2lkIFNvY2tldFN0cmVhbUhhbmRsZTo6cGxhdGZvcm1DbG9z
ZSgpCi17Ci0gICAgaWYgKG1faW50ZXJuYWwpCi0gICAgICAgIG1faW50ZXJuYWwtPmNsb3NlKCk7
Ci19Ci0KLXZvaWQgU29ja2V0U3RyZWFtSGFuZGxlOjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25D
aGFsbGVuZ2UoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGNoYWxsZW5nZSkKLXsKLSAg
ICBpZiAobV9jbGllbnQpCi0gICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UodGhpcywgY2hhbGxlbmdlKTsKLX0KLQotdm9pZCBTb2NrZXRTdHJlYW1IYW5k
bGU6OnJlY2VpdmVkQ3JlZGVudGlhbChjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgY2hh
bGxlbmdlLCBjb25zdCBDcmVkZW50aWFsJiBjcmVkZW50aWFsKQotewotICAgIG5vdEltcGxlbWVu
dGVkKCk7Ci19Ci0KLXZvaWQgU29ja2V0U3RyZWFtSGFuZGxlOjpyZWNlaXZlZFJlcXVlc3RUb0Nv
bnRpbnVlV2l0aG91dENyZWRlbnRpYWwoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGNo
YWxsZW5nZSkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi19ICAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQotCi0jZW5kaWYgIC8vIEVOQUJMRShXRUJfU09DS0VUUykKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1NvY2tldFN0cmVhbUhhbmRsZUludGVybmFsLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvU29ja2V0U3RyZWFtSGFuZGxlSW50ZXJu
YWwuaAkocmV2aXNpb24gMTM5NzMzKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvU29j
a2V0U3RyZWFtSGFuZGxlSW50ZXJuYWwuaAkod29ya2luZyBjb3B5KQpAQCAtMSw4OSArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICog
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
LSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
Ci0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I2lmbmRlZiBTb2NrZXRTdHJlYW1IYW5kbGVJbnRlcm5hbF9oCi0jZGVmaW5lIFNvY2tldFN0cmVh
bUhhbmRsZUludGVybmFsX2gKLQotI2lmIEVOQUJMRShXRUJfU09DS0VUUykKLQotI2luY2x1ZGUg
IlNvY2tldFN0cmVhbUhhbmRsZS5oIgotI2luY2x1ZGUgPHB1YmxpYy9XZWJTb2NrZXRTdHJlYW1I
YW5kbGVDbGllbnQuaD4KLSNpbmNsdWRlIDxwdWJsaWMvV2ViVVJMLmg+Ci0jaW5jbHVkZSA8d3Rm
L1Bhc3NPd25QdHIuaD4KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLWNsYXNzIFdlYkRhdGE7Ci1j
bGFzcyBXZWJTb2NrZXRTdHJlYW1FcnJvcjsKLWNsYXNzIFdlYlNvY2tldFN0cmVhbUhhbmRsZTsK
LQotfQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIFNvY2tldFN0cmVhbUhhbmRsZUlu
dGVybmFsIDogcHVibGljIFdlYktpdDo6V2ViU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50IHsKLXB1
YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxTb2NrZXRTdHJlYW1IYW5kbGVJbnRlcm5hbD4g
Y3JlYXRlKFNvY2tldFN0cmVhbUhhbmRsZSogaGFuZGxlKQotICAgIHsKLSAgICAgICAgcmV0dXJu
IGFkb3B0UHRyKG5ldyBTb2NrZXRTdHJlYW1IYW5kbGVJbnRlcm5hbChoYW5kbGUpKTsKLSAgICB9
Ci0gICAgdmlydHVhbCB+U29ja2V0U3RyZWFtSGFuZGxlSW50ZXJuYWwoKTsKLQotICAgIHZvaWQg
Y29ubmVjdChjb25zdCBLVVJMJik7Ci0gICAgaW50IHNlbmQoY29uc3QgY2hhciosIGludCk7Ci0g
ICAgdm9pZCBjbG9zZSgpOwotCi0gICAgdmlydHVhbCB2b2lkIGRpZE9wZW5TdHJlYW0oV2ViS2l0
OjpXZWJTb2NrZXRTdHJlYW1IYW5kbGUqLCBpbnQpOwotICAgIHZpcnR1YWwgdm9pZCBkaWRTZW5k
RGF0YShXZWJLaXQ6OldlYlNvY2tldFN0cmVhbUhhbmRsZSosIGludCk7Ci0gICAgdmlydHVhbCB2
b2lkIGRpZFJlY2VpdmVEYXRhKFdlYktpdDo6V2ViU29ja2V0U3RyZWFtSGFuZGxlKiwgY29uc3Qg
V2ViS2l0OjpXZWJEYXRhJik7Ci0gICAgdmlydHVhbCB2b2lkIGRpZENsb3NlKFdlYktpdDo6V2Vi
U29ja2V0U3RyZWFtSGFuZGxlKik7Ci0gICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoV2ViS2l0OjpX
ZWJTb2NrZXRTdHJlYW1IYW5kbGUqLCBjb25zdCBXZWJLaXQ6OldlYlNvY2tldFN0cmVhbUVycm9y
Jik7Ci0KLSAgICBzdGF0aWMgV2ViS2l0OjpXZWJTb2NrZXRTdHJlYW1IYW5kbGUqIHRvV2ViU29j
a2V0U3RyZWFtSGFuZGxlKFNvY2tldFN0cmVhbUhhbmRsZSogaGFuZGxlKQotICAgIHsKLSAgICAg
ICAgaWYgKGhhbmRsZSAmJiBoYW5kbGUtPm1faW50ZXJuYWwpCi0gICAgICAgICAgICByZXR1cm4g
aGFuZGxlLT5tX2ludGVybmFsLT5tX3NvY2tldC5nZXQoKTsKLSAgICAgICAgcmV0dXJuIDA7Ci0g
ICAgfQotCi1wcml2YXRlOgotICAgIGV4cGxpY2l0IFNvY2tldFN0cmVhbUhhbmRsZUludGVybmFs
KFNvY2tldFN0cmVhbUhhbmRsZSopOwotCi0gICAgU29ja2V0U3RyZWFtSGFuZGxlKiBtX2hhbmRs
ZTsKLSAgICBPd25QdHI8V2ViS2l0OjpXZWJTb2NrZXRTdHJlYW1IYW5kbGU+IG1fc29ja2V0Owot
ICAgIGludCBtX21heFBlbmRpbmdTZW5kQWxsb3dlZDsKLSAgICBpbnQgbV9wZW5kaW5nQW1vdW50
U2VudDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShX
RUJfU09DS0VUUykKLQotI2VuZGlmIC8vIFNvY2tldFN0cmVhbUhhbmRsZUludGVybmFsX2gK
</data>

          </attachment>
      

    </bug>

</bugzilla>