<?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>145154</bug_id>
          
          <creation_ts>2015-05-18 17:15:09 -0700</creation_ts>
          <short_desc>[EFL] Use GSimpleProxyResolver instead of custom SoupProxyResolver</short_desc>
          <delta_ts>2015-05-19 21:50:38 -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>WebKit EFL</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>145127</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryuan Choi">ryuan.choi</reporter>
          <assigned_to name="Ryuan Choi">ryuan.choi</assigned_to>
          <cc>achristensen</cc>
    
    <cc>bartosh</cc>
    
    <cc>commit-queue</cc>
    
    <cc>lucas.de.marchi</cc>
    
    <cc>ossy</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1095752</commentid>
    <comment_count>0</comment_count>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2015-05-18 17:15:09 -0700</bug_when>
    <thetext>SoupProxyResolver was deprecated since 2.28
Now, we are using libsoup 2.42</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1095753</commentid>
    <comment_count>1</comment_count>
      <attachid>253355</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2015-05-18 17:21:25 -0700</bug_when>
    <thetext>Created attachment 253355
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1095777</commentid>
    <comment_count>2</comment_count>
      <attachid>253355</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2015-05-18 18:17:28 -0700</bug_when>
    <thetext>Comment on attachment 253355
Patch

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

&gt; Source/WebCore/ChangeLog:15
&gt; +        * platform/network/soup/ProxyResolverSoup.cpp: Removed.

Doesn&apos;t Win port still use this file ?

Source/WebCore/WebCore.vcxproj/WebCore.vcxproj</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1095849</commentid>
    <comment_count>3</comment_count>
      <attachid>253372</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2015-05-18 23:34:05 -0700</bug_when>
    <thetext>Created attachment 253372
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1095850</commentid>
    <comment_count>4</comment_count>
      <attachid>253373</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2015-05-18 23:35:50 -0700</bug_when>
    <thetext>Created attachment 253373
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1095852</commentid>
    <comment_count>5</comment_count>
      <attachid>253355</attachid>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2015-05-18 23:39:35 -0700</bug_when>
    <thetext>Comment on attachment 253355
Patch

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

&gt;&gt; Source/WebCore/ChangeLog:15
&gt;&gt; +        * platform/network/soup/ProxyResolverSoup.cpp: Removed.
&gt; 
&gt; Doesn&apos;t Win port still use this file ?
&gt; 
&gt; Source/WebCore/WebCore.vcxproj/WebCore.vcxproj

I think nor Apple Windows, neither WinCairo port used SOUP ever, but there 
was an experiment to do it 2 years before - https://trac.webkit.org/changeset/166506 .
But it seems there is no plan to use SOUP on Windows nowadays. Alex, am I right?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1096106</commentid>
    <comment_count>6</comment_count>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2015-05-19 17:47:48 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; Comment on attachment 253355 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=253355&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebCore/ChangeLog:15
&gt; &gt;&gt; +        * platform/network/soup/ProxyResolverSoup.cpp: Removed.
&gt; &gt; 
&gt; &gt; Doesn&apos;t Win port still use this file ?
&gt; &gt; 
&gt; &gt; Source/WebCore/WebCore.vcxproj/WebCore.vcxproj
&gt; 
&gt; I think nor Apple Windows, neither WinCairo port used SOUP ever, but there 
&gt; was an experiment to do it 2 years before -
&gt; https://trac.webkit.org/changeset/166506 .
&gt; But it seems there is no plan to use SOUP on Windows nowadays. Alex, am I
&gt; right?

Although windows port have a plan to use SOUP, I don&apos;t think that ProxyResolverSoup.cpp is required anymore because WebCore.vcxproj still contains SoupNetworkSession.cpp which covers the functionality of ProxyResolverSoup in this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1096108</commentid>
    <comment_count>7</comment_count>
      <attachid>253413</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2015-05-19 17:52:15 -0700</bug_when>
    <thetext>Created attachment 253413
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1096114</commentid>
    <comment_count>8</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2015-05-19 18:07:24 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; I think nor Apple Windows, neither WinCairo port used SOUP ever, but there 
&gt; was an experiment to do it 2 years before -
&gt; https://trac.webkit.org/changeset/166506 .
&gt; But it seems there is no plan to use SOUP on Windows nowadays. Alex, am I
&gt; right?
I&apos;m pretty sure I&apos;m the only one who has ever experimented with SOUP on Windows.  GStreamer on Windows uses libsoup, but they used a version that was too old to link with WebKit, and I never got it to actually load anything.  I think it could be done, but that should not affect decisions in WebKit right now.  The WinCairo port uses CURL because of its license IIRC</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1096119</commentid>
    <comment_count>9</comment_count>
      <attachid>253413</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2015-05-19 18:34:40 -0700</bug_when>
    <thetext>Comment on attachment 253413
Patch

Thank Alex, r=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1096131</commentid>
    <comment_count>10</comment_count>
      <attachid>253413</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2015-05-19 18:57:20 -0700</bug_when>
    <thetext>Comment on attachment 253413
Patch

Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1096141</commentid>
    <comment_count>11</comment_count>
      <attachid>253413</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-05-19 19:46:51 -0700</bug_when>
    <thetext>Comment on attachment 253413
Patch

Clearing flags on attachment: 253413

Committed r184610: &lt;http://trac.webkit.org/changeset/184610&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1096142</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-05-19 19:46:57 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1096165</commentid>
    <comment_count>13</comment_count>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2015-05-19 21:50:38 -0700</bug_when>
    <thetext>*** Bug 113587 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>253355</attachid>
            <date>2015-05-18 17:21:25 -0700</date>
            <delta_ts>2015-05-18 23:34:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-145154-20150519092122.patch</filename>
            <type>text/plain</type>
            <size>17006</size>
            <attacher name="Ryuan Choi">ryuan.choi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg0MzEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjM0Y2E0NzU2MWFkNjA2
MzU2MGJlMWYzNzM1MzkwNWRkNDJjYWUzOC4uYmQ5MzI2OGNhZTVmZDQzMDU0ZDZlNDhjOTNkMWI4
ODQ3ZTBlOWRkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDE1LTA1LTE4ICBSeXVh
biBDaG9pICA8cnl1YW4uY2hvaUBuYXZlcmNvcnAuY29tPgorCisgICAgICAgIFtFRkxdIFVzZSBH
U2ltcGxlUHJveHlSZXNvbHZlciBpbnN0ZWFkIG9mIGN1c3RvbSBTb3VwUHJveHlSZXNvbHZlcgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ1MTU0CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU291cFByb3h5
UmVzb2x2ZXIgd2FzIGRlcHJlY2F0ZWQgc2luY2UgbGlic291cCAyLjQyLgorICAgICAgICBTbywg
dGhpcyBwYXRjaCByZWZhY3RvcnMgdGhlIGN1c3RvbSBTb3VwUHJveHlSZXNvbHZlciB0byBHU2lt
cGxlUHJveHlSZXNvbHZlcgorICAgICAgICB3aGljaCBwcm92aWRlcyBzYW1lIGZ1bmN0aW9uYWxp
dHkgaW4gZ2lvLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgYmVjYXVzZSB0aGVyZSBpcyBub3Qg
YmVoYXZpb3IgY2hhbmdlLgorCisgICAgICAgICogUGxhdGZvcm1FZmwuY21ha2U6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9zb3VwL1Byb3h5UmVzb2x2ZXJTb3VwLmNwcDogUmVtb3ZlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUHJveHlSZXNvbHZlclNvdXAuaDogUmVt
b3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291cE5ldHdvcmtTZXNzaW9u
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNvdXBOZXR3b3JrU2Vzc2lvbjo6c2V0SFRUUFByb3h5
KTogTW92ZWQgdG8gcHJpdmF0ZSBtZW1iZXIuCisgICAgICAgIChXZWJDb3JlOjpTb3VwTmV0d29y
a1Nlc3Npb246Omh0dHBQcm94eSk6IERlbGV0ZWQgYmVjYXVzZSBub2JvZHkgY2FsbHMgaXQuCisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5oOgorCiAy
MDE1LTA1LTEzICBSeXVhbiBDaG9pICA8cnl1YW4uY2hvaUBuYXZlcmNvcnAuY29tPgogCiAgICAg
ICAgIFtDb29yZGluYXRlZEdyYXBoaWNzXSBSZW1vdmUgc2NhbGVGYWN0b3IgZnJvbSBTdXJmYWNl
VXBkYXRlSW5mbwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1FZmwuY21ha2Ug
Yi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFrZQppbmRleCBiMDUyMGY1ODVmNjBmMzU0
OTUxOWUxYmRjNjgwZTYyMjBhMTVjNDc2Li45NmYxMGFlYzU5M2ZkMWE4ZWVmM2Y2ZDA0OTNhMjk1
NjdhYWU2ODRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFrZQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFrZQpAQCAtMjMyLDcgKzIzMiw2IEBA
IGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL25ldHdvcmsvc291cC9D
cmVkZW50aWFsU3RvcmFnZVNvdXAuY3BwCiAgICAgcGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1Nv
dXAuY3BwCiAgICAgcGxhdGZvcm0vbmV0d29yay9zb3VwL05ldHdvcmtTdG9yYWdlU2Vzc2lvblNv
dXAuY3BwCi0gICAgcGxhdGZvcm0vbmV0d29yay9zb3VwL1Byb3h5UmVzb2x2ZXJTb3VwLmNwcAog
ICAgIHBsYXRmb3JtL25ldHdvcmsvc291cC9Qcm94eVNlcnZlclNvdXAuY3BwCiAgICAgcGxhdGZv
cm0vbmV0d29yay9zb3VwL1Jlc291cmNlRXJyb3JTb3VwLmNwcAogICAgIHBsYXRmb3JtL25ldHdv
cmsvc291cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUHJveHlSZXNvbHZlclNvdXAuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Byb3h5UmVzb2x2ZXJTb3VwLmNwcApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTFjYzg2YjJjNmFmNmY5OTRkNjQ1NTI2ZDAyZmRjZTZj
NTQzMTZlOC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUHJveHlSZXNvbHZlclNvdXAuY3Bw
CisrKyAvZGV2L251bGwKQEAgLTEsMjE1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTIgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNp
bmNsdWRlICJjb25maWcuaCIKLQotI2lmIFVTRShTT1VQKQotCi0jaW5jbHVkZSAiUHJveHlSZXNv
bHZlclNvdXAuaCIKLQotI2luY2x1ZGUgPGxpYnNvdXAvc291cC5oPgotI2luY2x1ZGUgPHN0cmlu
Zy5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5n
Lmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLXN0YXRpYyBjb25zdCBjaGFy
IGRlZmF1bHROb1Byb3h5VmFsdWVbXSA9ICJsb2NhbGhvc3QsMTI3LjAuMC4xIjsKLQotdHlwZWRl
ZiBzdHJ1Y3QgewotICAgIFNvdXBVUkkqIHByb3h5VVJJOwotICAgIENTdHJpbmcgbm9Qcm94eTsK
LSAgICBWZWN0b3I8U3RyaW5nPiBwcm94eUV4Y2VwdGlvbnM7Ci19IFNvdXBQcm94eVJlc29sdmVy
V2tQcml2YXRlOwotCi0jZGVmaW5lIFNPVVBfUFJPWFlfUkVTT0xWRVJfV0tfR0VUX1BSSVZBVEUo
bykgKEdfVFlQRV9JTlNUQU5DRV9HRVRfUFJJVkFURSgobyksIFNPVVBfVFlQRV9QUk9YWV9SRVNP
TFZFUl9XSywgU291cFByb3h5UmVzb2x2ZXJXa1ByaXZhdGUpKQotCi1zdGF0aWMgdm9pZCBzb3Vw
X3Byb3h5X3Jlc29sdmVyX3drX2ludGVyZmFjZV9pbml0KFNvdXBQcm94eVVSSVJlc29sdmVySW50
ZXJmYWNlKiBwcm94eVJlc29sdmVySW50ZXJmYWNlKTsKLQotR19ERUZJTkVfVFlQRV9FWFRFTkRF
RChTb3VwUHJveHlSZXNvbHZlcldrLCBzb3VwX3Byb3h5X3Jlc29sdmVyX3drLCBHX1RZUEVfT0JK
RUNULCAwLAotICAgICAgICAgICAgICAgICAgICAgICBHX0lNUExFTUVOVF9JTlRFUkZBQ0UoU09V
UF9UWVBFX1NFU1NJT05fRkVBVFVSRSwgMCkKLSAgICAgICAgICAgICAgICAgICAgICAgR19JTVBM
RU1FTlRfSU5URVJGQUNFKFNPVVBfVFlQRV9QUk9YWV9VUklfUkVTT0xWRVIsIHNvdXBfcHJveHlf
cmVzb2x2ZXJfd2tfaW50ZXJmYWNlX2luaXQpKQotCi1lbnVtIHsKLSAgICBQUk9QXzAsCi0gICAg
UFJPUF9QUk9YWV9VUkksCi0gICAgUFJPUF9OT19QUk9YWSwKLSAgICBMQVNUX1BST1AKLX07Ci0K
LXN0YXRpYyB2b2lkIHNvdXBfcHJveHlfcmVzb2x2ZXJfd2tfaW5pdChTb3VwUHJveHlSZXNvbHZl
cldrKikKLXsKLX0KLQotc3RhdGljIHZvaWQgc291cFByb3h5UmVzb2x2ZXJXa0ZpbmFsaXplKEdP
YmplY3QqIG9iamVjdCkKLXsKLSAgICBTb3VwUHJveHlSZXNvbHZlcldrUHJpdmF0ZSogcHJpdiA9
IFNPVVBfUFJPWFlfUkVTT0xWRVJfV0tfR0VUX1BSSVZBVEUob2JqZWN0KTsKLQotICAgIGdfY2xl
YXJfcG9pbnRlcigmcHJpdi0+cHJveHlVUkksIHNvdXBfdXJpX2ZyZWUpOwotCi0gICAgR19PQkpF
Q1RfQ0xBU1Moc291cF9wcm94eV9yZXNvbHZlcl93a19wYXJlbnRfY2xhc3MpLT5maW5hbGl6ZShv
YmplY3QpOwotfQotCi1zdGF0aWMgdm9pZCBzb3VwUHJveHlSZXNvbHZlcldrU2V0UHJvcGVydHko
R09iamVjdCogb2JqZWN0LCB1bnNpZ25lZCBwcm9wSUQsIGNvbnN0IEdWYWx1ZSogdmFsdWUsIEdQ
YXJhbVNwZWMqIHBzcGVjKQotewotICAgIFNvdXBQcm94eVJlc29sdmVyV2tQcml2YXRlKiBwcml2
ID0gU09VUF9QUk9YWV9SRVNPTFZFUl9XS19HRVRfUFJJVkFURShvYmplY3QpOwotCi0gICAgc3dp
dGNoIChwcm9wSUQpIHsKLSAgICBjYXNlIFBST1BfUFJPWFlfVVJJOiB7Ci0gICAgICAgIFNvdXBV
UkkqIHVyaSA9IHN0YXRpY19jYXN0PFNvdXBVUkkqPihnX3ZhbHVlX2dldF9ib3hlZCh2YWx1ZSkp
OwotICAgICAgICBpZiAocHJpdi0+cHJveHlVUkkpCi0gICAgICAgICAgICBzb3VwX3VyaV9mcmVl
KHByaXYtPnByb3h5VVJJKTsKLQotICAgICAgICBwcml2LT5wcm94eVVSSSA9IHVyaSA/IHNvdXBf
dXJpX2NvcHkodXJpKSA6IDA7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBjYXNlIFBST1Bf
Tk9fUFJPWFk6Ci0gICAgICAgIHByaXYtPm5vUHJveHkgPSBnX3ZhbHVlX2dldF9zdHJpbmcodmFs
dWUpOwotICAgICAgICBwcml2LT5wcm94eUV4Y2VwdGlvbnMuY2xlYXIoKTsKLSAgICAgICAgU3Ry
aW5nOjpmcm9tVVRGOChwcml2LT5ub1Byb3h5LmRhdGEoKSkucmVwbGFjZVdpdGhMaXRlcmFsKCcg
JywgIiIpLnNwbGl0KCcsJywgcHJpdi0+cHJveHlFeGNlcHRpb25zKTsKLSAgICAgICAgYnJlYWs7
Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lE
KG9iamVjdCwgcHJvcElELCBwc3BlYyk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLX0KLQotc3Rh
dGljIHZvaWQgc291cFByb3h5UmVzb2x2ZXJXa0dldFByb3BlcnR5KEdPYmplY3QqIG9iamVjdCwg
dW5zaWduZWQgcHJvcElELCBHVmFsdWUqIHZhbHVlLCBHUGFyYW1TcGVjKiBwc3BlYykKLXsKLSAg
ICBTb3VwUHJveHlSZXNvbHZlcldrUHJpdmF0ZSogcHJpdiA9IFNPVVBfUFJPWFlfUkVTT0xWRVJf
V0tfR0VUX1BSSVZBVEUob2JqZWN0KTsKLQotICAgIHN3aXRjaCAocHJvcElEKSB7Ci0gICAgY2Fz
ZSBQUk9QX1BST1hZX1VSSToKLSAgICAgICAgZ192YWx1ZV9zZXRfYm94ZWQodmFsdWUsIHByaXYt
PnByb3h5VVJJKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQUk9QX05PX1BST1hZOgotICAg
ICAgICBnX3ZhbHVlX3NldF9zdHJpbmcodmFsdWUsIHByaXYtPm5vUHJveHkuZGF0YSgpKTsKLSAg
ICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElE
X1BST1BFUlRZX0lEKG9iamVjdCwgcHJvcElELCBwc3BlYyk7Ci0gICAgICAgIGJyZWFrOwotICAg
IH0KLX0KLQotc3RhdGljIGJvb2wgc2hvdWxkQnlwYXNzUHJveHkoU291cFByb3h5UmVzb2x2ZXJX
a1ByaXZhdGUqIHByaXYsIFNvdXBVUkkqIHVyaSkKLXsKLSAgICBjb25zdCBzaXplX3QgZXhjZXB0
aW9uQ291bnQgPSBwcml2LT5wcm94eUV4Y2VwdGlvbnMuc2l6ZSgpOwotICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgZXhjZXB0aW9uQ291bnQ7ICsraSkgewotICAgICAgICBpZiAoU3RyaW5nOjpm
cm9tVVRGOCh1cmktPmhvc3QpLmVuZHNXaXRoKHByaXYtPnByb3h5RXhjZXB0aW9uc1tpXSwgZmFs
c2UpKQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgcmV0dXJuIGZhbHNl
OwotfQotCi10eXBlZGVmIHN0cnVjdCB7Ci0gICAgU291cFByb3h5VVJJUmVzb2x2ZXIqIHByb3h5
UmVzb2x2ZXI7Ci0gICAgU291cFVSSSogdXJpOwotICAgIFNvdXBQcm94eVVSSVJlc29sdmVyQ2Fs
bGJhY2sgY2FsbGJhY2s7Ci0gICAgdm9pZCogdXNlckRhdGE7Ci19IFNvdXBXa0FzeW5jRGF0YTsK
LQotc3RhdGljIGdib29sZWFuIGlkbGVfcmV0dXJuX3Byb3h5X3VyaSh2b2lkKiBkYXRhKQotewot
ICAgIFNvdXBXa0FzeW5jRGF0YSogc3NhZCA9IHN0YXRpY19jYXN0PFNvdXBXa0FzeW5jRGF0YSo+
KGRhdGEpOwotICAgIFNvdXBQcm94eVJlc29sdmVyV2tQcml2YXRlKiBwcml2ID0gU09VUF9QUk9Y
WV9SRVNPTFZFUl9XS19HRVRfUFJJVkFURShzc2FkLT5wcm94eVJlc29sdmVyKTsKLQotICAgIFNv
dXBVUkkqIHByb3h5VVJJID0gMDsKLSAgICBpZiAoIXNob3VsZEJ5cGFzc1Byb3h5KHByaXYsIHNz
YWQtPnVyaSkpCi0gICAgICAgIHByb3h5VVJJID0gcHJpdi0+cHJveHlVUkk7Ci0KLSAgICBzc2Fk
LT5jYWxsYmFjayhzc2FkLT5wcm94eVJlc29sdmVyLCBTT1VQX1NUQVRVU19PSywgcHJveHlVUkks
IHNzYWQtPnVzZXJEYXRhKTsKLSAgICBnX29iamVjdF91bnJlZihzc2FkLT5wcm94eVJlc29sdmVy
KTsKLSAgICBzb3VwX3VyaV9mcmVlKHNzYWQtPnVyaSk7Ci0gICAgZ19zbGljZV9mcmVlKFNvdXBX
a0FzeW5jRGF0YSwgc3NhZCk7Ci0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLXN0YXRpYyB2b2lk
IHNvdXBQcm94eVJlc29sdmVyV2tHZXRQcm94eVVSSUFzeW5jKFNvdXBQcm94eVVSSVJlc29sdmVy
KiBwcm94eVJlc29sdmVyLCBTb3VwVVJJKiB1cmksIEdNYWluQ29udGV4dCogYXN5bmNDb250ZXh0
LCBHQ2FuY2VsbGFibGUqLCBTb3VwUHJveHlVUklSZXNvbHZlckNhbGxiYWNrIGNhbGxiYWNrLCB2
b2lkKiB1c2VyRGF0YSkKLXsKLSAgICBTb3VwV2tBc3luY0RhdGEqIHNzYWQ7Ci0KLSAgICBzc2Fk
ID0gZ19zbGljZV9uZXcwKFNvdXBXa0FzeW5jRGF0YSk7Ci0gICAgc3NhZC0+cHJveHlSZXNvbHZl
ciA9IFNPVVBfUFJPWFlfVVJJX1JFU09MVkVSKGdfb2JqZWN0X3JlZihwcm94eVJlc29sdmVyKSk7
Ci0gICAgc3NhZC0+dXJpID0gc291cF91cmlfY29weSh1cmkpOwotICAgIHNzYWQtPmNhbGxiYWNr
ID0gY2FsbGJhY2s7Ci0gICAgc3NhZC0+dXNlckRhdGEgPSB1c2VyRGF0YTsKLSAgICBzb3VwX2Fk
ZF9jb21wbGV0aW9uKGFzeW5jQ29udGV4dCwgaWRsZV9yZXR1cm5fcHJveHlfdXJpLCBzc2FkKTsK
LX0KLQotc3RhdGljIHVuc2lnbmVkIHNvdXBQcm94eVJlc29sdmVyV2tHZXRQcm94eVVSSVN5bmMo
U291cFByb3h5VVJJUmVzb2x2ZXIqIHByb3h5UmVzb2x2ZXIsIFNvdXBVUkkqIHVyaSwgR0NhbmNl
bGxhYmxlKiwgU291cFVSSSoqIHByb3h5VVJJKQotewotICAgIFNvdXBQcm94eVJlc29sdmVyV2tQ
cml2YXRlKiBwcml2ID0gU09VUF9QUk9YWV9SRVNPTFZFUl9XS19HRVRfUFJJVkFURShwcm94eVJl
c29sdmVyKTsKLQotICAgIGlmICghc2hvdWxkQnlwYXNzUHJveHkocHJpdiwgdXJpKSkKLSAgICAg
ICAgKnByb3h5VVJJID0gc291cF91cmlfY29weShwcml2LT5wcm94eVVSSSk7Ci0KLSAgICByZXR1
cm4gU09VUF9TVEFUVVNfT0s7Ci19Ci0KLXN0YXRpYyB2b2lkIHNvdXBfcHJveHlfcmVzb2x2ZXJf
d2tfY2xhc3NfaW5pdChTb3VwUHJveHlSZXNvbHZlcldrQ2xhc3MqIHdrQ2xhc3MpCi17Ci0gICAg
R09iamVjdENsYXNzKiBvYmplY3RfY2xhc3MgPSBHX09CSkVDVF9DTEFTUyh3a0NsYXNzKTsKLQot
ICAgIGdfdHlwZV9jbGFzc19hZGRfcHJpdmF0ZSh3a0NsYXNzLCBzaXplb2YoU291cFByb3h5UmVz
b2x2ZXJXa1ByaXZhdGUpKTsKLQotICAgIG9iamVjdF9jbGFzcy0+c2V0X3Byb3BlcnR5ID0gc291
cFByb3h5UmVzb2x2ZXJXa1NldFByb3BlcnR5OwotICAgIG9iamVjdF9jbGFzcy0+Z2V0X3Byb3Bl
cnR5ID0gc291cFByb3h5UmVzb2x2ZXJXa0dldFByb3BlcnR5OwotICAgIG9iamVjdF9jbGFzcy0+
ZmluYWxpemUgPSBzb3VwUHJveHlSZXNvbHZlcldrRmluYWxpemU7Ci0KLSAgICBnX29iamVjdF9j
bGFzc19pbnN0YWxsX3Byb3BlcnR5KG9iamVjdF9jbGFzcywgUFJPUF9QUk9YWV9VUkksCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnX3BhcmFtX3NwZWNfYm94ZWQoU09VUF9Q
Uk9YWV9SRVNPTFZFUl9XS19QUk9YWV9VUkksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIlByb3h5IFVSSSIsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlRoZSBIVFRQIFByb3h5IHRv
IHVzZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgU09VUF9UWVBFX1VSSSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxHUGFyYW1GbGFncz4oR19QQVJBTV9SRUFE
V1JJVEUpKSk7Ci0KLSAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KG9iamVjdF9j
bGFzcywgUFJPUF9OT19QUk9YWSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGdfcGFyYW1fc3BlY19zdHJpbmcoU09VUF9QUk9YWV9SRVNPTFZFUl9XS19OT19QUk9YWSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUHJv
eHkgZXhjZXB0aW9ucyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIkNvbW1hLXNlcGFyYXRlZCBwcm94eSBleGNlcHRpb25zIiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0
Tm9Qcm94eVZhbHVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHN0YXRpY19jYXN0PEdQYXJhbUZsYWdzPihHX1BBUkFNX1JFQURXUklURSkp
KTsKLX0KLQotc3RhdGljIHZvaWQgc291cF9wcm94eV9yZXNvbHZlcl93a19pbnRlcmZhY2VfaW5p
dChTb3VwUHJveHlVUklSZXNvbHZlckludGVyZmFjZSogcHJveHlfdXJpX3Jlc29sdmVyX2ludGVy
ZmFjZSkKLXsKLSAgICBwcm94eV91cmlfcmVzb2x2ZXJfaW50ZXJmYWNlLT5nZXRfcHJveHlfdXJp
X2FzeW5jID0gc291cFByb3h5UmVzb2x2ZXJXa0dldFByb3h5VVJJQXN5bmM7Ci0gICAgcHJveHlf
dXJpX3Jlc29sdmVyX2ludGVyZmFjZS0+Z2V0X3Byb3h5X3VyaV9zeW5jID0gc291cFByb3h5UmVz
b2x2ZXJXa0dldFByb3h5VVJJU3luYzsKLX0KLQotU291cFByb3h5VVJJUmVzb2x2ZXIqIHNvdXBQ
cm94eVJlc29sdmVyV2tOZXcoY29uc3QgY2hhciogaHR0cFByb3h5LCBjb25zdCBjaGFyKiBub1By
b3h5KQotewotICAgIFNvdXBVUkkqIHByb3h5VVJJID0gc291cF91cmlfbmV3KGh0dHBQcm94eSk7
Ci0gICAgU291cFByb3h5VVJJUmVzb2x2ZXIqIHJlc29sdmVyID0gU09VUF9QUk9YWV9VUklfUkVT
T0xWRVIoZ19vYmplY3RfbmV3KFNPVVBfVFlQRV9QUk9YWV9SRVNPTFZFUl9XSywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgU09VUF9QUk9YWV9SRVNPTFZFUl9XS19QUk9YWV9VUkksIHByb3h5VVJJLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBTT1VQX1BST1hZX1JFU09MVkVSX1dLX05PX1BST1hZLCBub1Byb3h5ID8g
bm9Qcm94eSA6IGRlZmF1bHROb1Byb3h5VmFsdWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDApKTsKLSAg
ICBzb3VwX3VyaV9mcmVlKHByb3h5VVJJKTsKLQotICAgIHJldHVybiByZXNvbHZlcjsKLX0KLQot
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAv
UHJveHlSZXNvbHZlclNvdXAuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291
cC9Qcm94eVJlc29sdmVyU291cC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZmRl
ZDUzOGExZmYxMzU0NzRmOWVjNTRjNDhmY2UzMTZhNzgzMWZiLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvc291cC9Qcm94eVJlc29sdmVyU291cC5oCisrKyAvZGV2L251bGwKQEAgLTEsNTcgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
LSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBQcm94eVJlc29sdmVyU291cF9oCi0jZGVm
aW5lIFByb3h5UmVzb2x2ZXJTb3VwX2gKLQotI2luY2x1ZGUgPGxpYnNvdXAvc291cC5oPgotCi1H
X0JFR0lOX0RFQ0xTCi0KLSNkZWZpbmUgU09VUF9UWVBFX1BST1hZX1JFU09MVkVSX1dLICAgICAg
ICAgICAgICAgKHNvdXBfcHJveHlfcmVzb2x2ZXJfd2tfZ2V0X3R5cGUgKCkpCi0jZGVmaW5lIFNP
VVBfUFJPWFlfUkVTT0xWRVJfV0sob2JqZWN0KSAgICAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5T
VEFOQ0VfQ0FTVCAoKG9iamVjdCksIFNPVVBfVFlQRV9QUk9YWV9SRVNPTFZFUl9XSywgU291cFBy
b3h5UmVzb2x2ZXJXaykpCi0jZGVmaW5lIFNPVVBfUFJPWFlfUkVTT0xWRVJfV0tfQ0xBU1Moa2xh
c3MpICAgICAgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfQ0FTVCAoKGtsYXNzKSwgU09VUF9UWVBFX1BS
T1hZX1JFU09MVkVSX1dLLCBTb3VwUHJveHlSZXNvbHZlcldrQ2xhc3MpKQotI2RlZmluZSBTT1VQ
X0lTX1BST1hZX1JFU09MVkVSX1dLKG9iamVjdCkgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RB
TkNFX1RZUEUgKChvYmplY3QpLCBTT1VQX1RZUEVfUFJPWFlfUkVTT0xWRVJfV0spKQotI2RlZmlu
ZSBTT1VQX0lTX1BST1hZX1JFU09MVkVSX1dLX0NMQVNTKGtsYXNzKSAgICAoR19UWVBFX0NIRUNL
X0NMQVNTX1RZUEUgKChrbGFzcyksIFNPVVBfVFlQRV9QUk9YWV9SRVNPTFZFUl9XSykpCi0jZGVm
aW5lIFNPVVBfUFJPWFlfUkVTT0xWRVJfV0tfR0VUX0NMQVNTKG9iaikgICAgIChHX1RZUEVfSU5T
VEFOQ0VfR0VUX0NMQVNTICgob2JqKSwgU09VUF9UWVBFX1BST1hZX1JFU09MVkVSX1dLLCBTb3Vw
UHJveHlSZXNvbHZlcldrQ2xhc3MpKQotCi1zdGF0aWMgY29uc3QgY2hhciBTT1VQX1BST1hZX1JF
U09MVkVSX1dLX1BST1hZX1VSSVtdID0gInByb3h5LXVyaSI7Ci1zdGF0aWMgY29uc3QgY2hhciBT
T1VQX1BST1hZX1JFU09MVkVSX1dLX05PX1BST1hZW10gPSAibm8tcHJveHkiOwotCi10eXBlZGVm
IHN0cnVjdCB7Ci0gICAgR09iamVjdCBwYXJlbnQ7Ci19IFNvdXBQcm94eVJlc29sdmVyV2s7Ci0K
LXR5cGVkZWYgc3RydWN0IHsKLSAgICBHT2JqZWN0Q2xhc3MgcGFyZW50X2NsYXNzOwotfSBTb3Vw
UHJveHlSZXNvbHZlcldrQ2xhc3M7Ci0KLUdUeXBlIHNvdXBfcHJveHlfcmVzb2x2ZXJfd2tfZ2V0
X3R5cGUodm9pZCk7Ci0KLVNvdXBQcm94eVVSSVJlc29sdmVyKiBzb3VwUHJveHlSZXNvbHZlcldr
TmV3KGNvbnN0IGNoYXIqIGh0dHBQcm94eSwgY29uc3QgY2hhciogbm9Qcm94eSk7Ci0KLUdfRU5E
X0RFQ0xTCi0KLSNlbmRpZiAvLyBQcm94eVJlc29sdmVyU291cF9oCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291cE5ldHdvcmtTZXNzaW9uLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwTmV0d29ya1Nlc3Npb24u
Y3BwCmluZGV4IDQ4ZTUyMWQ1NTUyZDkzMTE0NWUxNDc4Y2IyM2FjYzA5ZDg2OTVkNjYuLjRhNzMx
YWZkYzEyN2FlYmM4MTk4NTM0NjE0ZmE0ODc4Y2FmYzhjMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwTmV0d29ya1Nlc3Npb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwTmV0d29ya1Nlc3Npb24u
Y3BwCkBAIC00MCwxMCArNDAsNiBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKLSNpZiBQTEFURk9STShFRkwpCi0j
aW5jbHVkZSAiUHJveHlSZXNvbHZlclNvdXAuaCIKLSNlbmRpZgotCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKICNpZiAhTE9HX0RJU0FCTEVECkBAIC0yMjUsMzYgKzIyMSwyNCBAQCBTb3VwTmV0d29y
a1Nlc3Npb246OlNTTFBvbGljeSBTb3VwTmV0d29ya1Nlc3Npb246OnNzbFBvbGljeSgpIGNvbnN0
CiB2b2lkIFNvdXBOZXR3b3JrU2Vzc2lvbjo6c2V0SFRUUFByb3h5KGNvbnN0IGNoYXIqIGh0dHBQ
cm94eSwgY29uc3QgY2hhciogaHR0cFByb3h5RXhjZXB0aW9ucykKIHsKICNpZiBQTEFURk9STShF
RkwpCi0gICAgLy8gT25seSBmb3IgRUZMIGJlY2F1c2UgR1RLIHBvcnQgdXNlcyB0aGUgZGVmYXVs
dCByZXNvbHZlciwgd2hpY2ggdXNlcyBHSU8ncyBwcm94eSByZXNvbHZlci4KLSAgICBpZiAoIWh0
dHBQcm94eSkgewotICAgICAgICBzb3VwX3Nlc3Npb25fcmVtb3ZlX2ZlYXR1cmVfYnlfdHlwZSht
X3NvdXBTZXNzaW9uLmdldCgpLCBTT1VQX1RZUEVfUFJPWFlfVVJJX1JFU09MVkVSKTsKLSAgICAg
ICAgcmV0dXJuOworICAgIEdQcm94eVJlc29sdmVyKiByZXNvbHZlciA9IG51bGxwdHI7CisgICAg
aWYgKGh0dHBQcm94eSkgeworICAgICAgICBnY2hhcioqIGlnbm9yZUxpc3RzID0gbnVsbHB0cjsK
KyAgICAgICAgaWYgKGh0dHBQcm94eUV4Y2VwdGlvbnMpCisgICAgICAgICAgICBpZ25vcmVMaXN0
cyA9ICBnX3N0cnNwbGl0KGh0dHBQcm94eUV4Y2VwdGlvbnMsICIsIiwgLTEpOworCisgICAgICAg
IHJlc29sdmVyID0gZ19zaW1wbGVfcHJveHlfcmVzb2x2ZXJfbmV3KGh0dHBQcm94eSwgaWdub3Jl
TGlzdHMpOworCisgICAgICAgIGdfc3RyZnJlZXYoaWdub3JlTGlzdHMpOwogICAgIH0KIAotICAg
IEdSZWZQdHI8U291cFByb3h5VVJJUmVzb2x2ZXI+IHJlc29sdmVyID0gYWRvcHRHUmVmKHNvdXBQ
cm94eVJlc29sdmVyV2tOZXcoaHR0cFByb3h5LCBodHRwUHJveHlFeGNlcHRpb25zKSk7Ci0gICAg
c291cF9zZXNzaW9uX2FkZF9mZWF0dXJlKG1fc291cFNlc3Npb24uZ2V0KCksIFNPVVBfU0VTU0lP
Tl9GRUFUVVJFKHJlc29sdmVyLmdldCgpKSk7CisgICAgZ19vYmplY3Rfc2V0KG1fc291cFNlc3Np
b24uZ2V0KCksIFNPVVBfU0VTU0lPTl9QUk9YWV9SRVNPTFZFUiwgcmVzb2x2ZXIsIG51bGxwdHIp
OwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oaHR0cFByb3h5KTsKICAgICBVTlVTRURfUEFSQU0o
aHR0cFByb3h5RXhjZXB0aW9ucyk7CiAjZW5kaWYKIH0KIAotY2hhciogU291cE5ldHdvcmtTZXNz
aW9uOjpodHRwUHJveHkoKSBjb25zdAotewotI2lmIFBMQVRGT1JNKEVGTCkKLSAgICBTb3VwU2Vz
c2lvbkZlYXR1cmUqIHNvdXBSZXNvbHZlciA9IHNvdXBfc2Vzc2lvbl9nZXRfZmVhdHVyZShtX3Nv
dXBTZXNzaW9uLmdldCgpLCBTT1VQX1RZUEVfUFJPWFlfVVJJX1JFU09MVkVSKTsKLSAgICBpZiAo
IXNvdXBSZXNvbHZlcikKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBHVW5pcXVlT3V0
UHRyPFNvdXBVUkk+IHVyaTsKLSAgICBnX29iamVjdF9nZXQoc291cFJlc29sdmVyLCBTT1VQX1BS
T1hZX1JFU09MVkVSX1dLX1BST1hZX1VSSSwgJnVyaS5vdXRQdHIoKSwgbnVsbHB0cik7Ci0KLSAg
ICByZXR1cm4gdXJpID8gc291cF91cmlfdG9fc3RyaW5nKHVyaS5nZXQoKSwgRkFMU0UpIDogbnVs
bHB0cjsKLSNlbHNlCi0gICAgcmV0dXJuIG51bGxwdHI7Ci0jZW5kaWYKLX0KLQogdm9pZCBTb3Vw
TmV0d29ya1Nlc3Npb246OnNldHVwSFRUUFByb3h5RnJvbUVudmlyb25tZW50KCkKIHsKICNpZiBQ
TEFURk9STShFRkwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L3NvdXAvU291cE5ldHdvcmtTZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL3NvdXAvU291cE5ldHdvcmtTZXNzaW9uLmgKaW5kZXggNzk2OTI3ZGE3NDUwNGM5NzA1M2Vm
Y2E1ODViNGMwNmY1MWExNDcyMC4uODkzNDU1YTZjMmVhZDA2ZWNlZDEzMjE2OWYyNzQyMjJlZDgz
OWJlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Nv
dXBOZXR3b3JrU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
c291cC9Tb3VwTmV0d29ya1Nlc3Npb24uaApAQCAtNjUsOCArNjUsNiBAQCBwdWJsaWM6CiAgICAg
dm9pZCBzZXRTU0xQb2xpY3koU1NMUG9saWN5KTsKICAgICBTU0xQb2xpY3kgc3NsUG9saWN5KCkg
Y29uc3Q7CiAKLSAgICB2b2lkIHNldEhUVFBQcm94eShjb25zdCBjaGFyKiBodHRwUHJveHksIGNv
bnN0IGNoYXIqIGh0dHBQcm94eUV4Y2VwdGlvbnMpOwotICAgIGNoYXIqIGh0dHBQcm94eSgpIGNv
bnN0OwogICAgIHZvaWQgc2V0dXBIVFRQUHJveHlGcm9tRW52aXJvbm1lbnQoKTsKIAogICAgIHZv
aWQgc2V0QWNjZXB0TGFuZ3VhZ2VzKGNvbnN0IFZlY3RvcjxTdHJpbmc+Jik7CkBAIC03NSw2ICs3
Myw4IEBAIHByaXZhdGU6CiAgICAgU291cE5ldHdvcmtTZXNzaW9uKFNvdXBDb29raWVKYXIqKTsK
ICAgICBTb3VwTmV0d29ya1Nlc3Npb24oU291cFNlc3Npb24qKTsKIAorICAgIHZvaWQgc2V0SFRU
UFByb3h5KGNvbnN0IGNoYXIqIGh0dHBQcm94eSwgY29uc3QgY2hhciogaHR0cFByb3h5RXhjZXB0
aW9ucyk7CisKICAgICB2b2lkIHNldHVwTG9nZ2VyKCk7CiAKICAgICBHUmVmUHRyPFNvdXBTZXNz
aW9uPiBtX3NvdXBTZXNzaW9uOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>253372</attachid>
            <date>2015-05-18 23:34:05 -0700</date>
            <delta_ts>2015-05-18 23:35:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-145154-20150519153402.patch</filename>
            <type>text/plain</type>
            <size>20460</size>
            <attacher name="Ryuan Choi">ryuan.choi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg0NTQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGU0NmZjZjJkZjY2MmY4
MWMyYTA5NTNhYzcwOGI1MDU4NDY0NjdlNC4uZjFkMjM2OTAyODc3Njk4NDI4YmRlOTEzYjNiM2Iw
MmUxYTEyNzI5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDE1LTA1LTE4ICBSeXVh
biBDaG9pICA8cnl1YW4uY2hvaUBuYXZlcmNvcnAuY29tPgorCisgICAgICAgIFtFRkxdIFVzZSBH
U2ltcGxlUHJveHlSZXNvbHZlciBpbnN0ZWFkIG9mIGN1c3RvbSBTb3VwUHJveHlSZXNvbHZlcgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ1MTU0CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU291cFByb3h5
UmVzb2x2ZXIgd2FzIGRlcHJlY2F0ZWQgc2luY2UgbGlic291cCAyLjQyLgorICAgICAgICBTbywg
dGhpcyBwYXRjaCByZWZhY3RvcnMgdGhlIGN1c3RvbSBTb3VwUHJveHlSZXNvbHZlciB0byBHU2lt
cGxlUHJveHlSZXNvbHZlcgorICAgICAgICB3aGljaCBwcm92aWRlcyBzYW1lIGZ1bmN0aW9uYWxp
dHkgaW4gZ2lvLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgYmVjYXVzZSB0aGVyZSBpcyBub3Qg
YmVoYXZpb3IgY2hhbmdlLgorCisgICAgICAgICogUGxhdGZvcm1FZmwuY21ha2U6CisgICAgICAg
ICogV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnZj
eHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnM6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9zb3VwL1Byb3h5UmVzb2x2ZXJTb3VwLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9uZXR3b3JrL3NvdXAvUHJveHlSZXNvbHZlclNvdXAuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291cE5ldHdvcmtTZXNzaW9uLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNvdXBOZXR3b3JrU2Vzc2lvbjo6c2V0SFRUUFByb3h5KTogTW92ZWQgdG8gcHJpdmF0
ZSBtZW1iZXIuCisgICAgICAgIChXZWJDb3JlOjpTb3VwTmV0d29ya1Nlc3Npb246Omh0dHBQcm94
eSk6IERlbGV0ZWQgYmVjYXVzZSBub2JvZHkgY2FsbHMgaXQuCisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5oOgorCiAyMDE1LTA1LTE4ICBHeXV5b3Vu
ZyBLaW0gIDxneXV5b3VuZy5raW1Ad2Via2l0Lm9yZz4KIAogICAgICAgICBVc2UgUmVmIGluc3Rl
YWQgb2YgUGFzc1JlZlB0ciBpbiBXZWJDb3JlL2JpbmRpbmdzCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtRWZsLmNt
YWtlCmluZGV4IDY5MWE1OTdiMmViYjZkNDAxYzNjMTdhMDVhMTFmYjc4NjY1MGU4ZjcuLmQ4Yjky
OTUxNjdlNjJmZGI4Y2QyNzA3NGE5YzU4MDdmZTYyMDZmMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1BsYXRmb3JtRWZsLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtRWZs
LmNtYWtlCkBAIC0yMzIsNyArMjMyLDYgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAg
ICAgcGxhdGZvcm0vbmV0d29yay9zb3VwL0NyZWRlbnRpYWxTdG9yYWdlU291cC5jcHAKICAgICBw
bGF0Zm9ybS9uZXR3b3JrL3NvdXAvRE5TU291cC5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL3Nv
dXAvTmV0d29ya1N0b3JhZ2VTZXNzaW9uU291cC5jcHAKLSAgICBwbGF0Zm9ybS9uZXR3b3JrL3Nv
dXAvUHJveHlSZXNvbHZlclNvdXAuY3BwCiAgICAgcGxhdGZvcm0vbmV0d29yay9zb3VwL1Byb3h5
U2VydmVyU291cC5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VFcnJvclNv
dXAuY3BwCiAgICAgcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHBy
b2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCmluZGV4
IGMxZTc0OTZlY2E4YzdlZTQ0NmU1ZjhkNjlkMjg3Y2JlZDliNzBmYzQuLmE2NzAyZTdkOGRmNjQ0
NzQxZDgzYjhlMzA4ZDhjY2RmZjQ4MzRiZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagpAQCAtNzkxMywxNiArNzkxMyw2IEBACiAgICAgICA8
RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3Jt
KSc9PSdQcm9kdWN0aW9ufFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CiAgICAgICA8
RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3Jt
KSc9PSdQcm9kdWN0aW9ufHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgogICAgIDwvQ2xD
b21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cbmV0d29ya1xzb3Vw
XFByb3h5UmVzb2x2ZXJTb3VwLmNwcCI+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0
aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPnRydWU8
L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0i
JyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+dHJ1ZTwvRXhjbHVk
ZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25m
aWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z1N1ZmZpeHxXaW4zMiciPnRydWU8L0V4Y2x1
ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29u
ZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdTdWZmaXh8eDY0JyI+dHJ1ZTwvRXhjbHVk
ZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25m
aWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRG
cm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1
cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1
aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlv
bil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1
aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlv
bil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWls
ZD4KLSAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3Jt
XG5ldHdvcmtcc291cFxQcm94eVNlcnZlclNvdXAuY3BwIj4KICAgICAgIDxFeGNsdWRlZEZyb21C
dWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdp
bjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQg
Q29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj50
cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KQEAgLTE5ODgxLDcgKzE5ODcxLDYgQEAKICAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXG5ldHdvcmtcc291cFxDZXJ0aWZpY2F0ZUluZm8u
aCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXG5ldHdvcmtcc291cFxD
b29raWVKYXJTb3VwLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxu
ZXR3b3JrXHNvdXBcR1VuaXF1ZVB0clNvdXAuaCIgLz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXHBsYXRmb3JtXG5ldHdvcmtcc291cFxQcm94eVJlc29sdmVyU291cC5oIiAvPgogICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cbmV0d29ya1xzb3VwXFJlc291cmNlRXJyb3Iu
aCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXG5ldHdvcmtcc291cFxS
ZXNvdXJjZVJlcXVlc3QuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3Jt
XG5ldHdvcmtcc291cFxSZXNvdXJjZVJlc3BvbnNlLmgiIC8+CkBAIC0yMTc4Niw0ICsyMTc3NSw0
IEBACiAgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uVGFyZ2V0cyI+CiAgICAgPEltcG9y
dCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXEJ1aWxkQ3VzdG9taXphdGlvbnNcbWFzbS50YXJn
ZXRzIiAvPgogICA8L0ltcG9ydEdyb3VwPgotPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5k
IG9mIGZpbGUKKzwvUHJvamVjdD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
dmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
dmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycwppbmRleCAxM2QxNTdhMGZhOTFjZGViM2Q4
MzcxNmM2YjJiOTM3Mjk0ZGM4MzAyLi43OGZmNTExZTI1YTFjMzk4MGI0ODAwZTAwMjIzOGZkNzQ3
OWQ1OGIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29y
ZS52Y3hwcm9qLmZpbHRlcnMKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dl
YkNvcmUudmN4cHJvai5maWx0ZXJzCkBAIC02ODg5LDkgKzY4ODksNiBAQAogICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cbmV0d29ya1xzb3VwXE5ldHdvcmtTdG9yYWdlU2Vzc2lv
blNvdXAuY3BwIj4KICAgICAgIDxGaWx0ZXI+cGxhdGZvcm1cbmV0d29ya1xzb3VwPC9GaWx0ZXI+
CiAgICAgPC9DbENvbXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxu
ZXR3b3JrXHNvdXBcUHJveHlSZXNvbHZlclNvdXAuY3BwIj4KLSAgICAgIDxGaWx0ZXI+cGxhdGZv
cm1cbmV0d29ya1xzb3VwPC9GaWx0ZXI+Ci0gICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxuZXR3b3JrXHNvdXBcUHJveHlTZXJ2ZXJTb3VwLmNwcCI+
CiAgICAgICA8RmlsdGVyPnBsYXRmb3JtXG5ldHdvcmtcc291cDwvRmlsdGVyPgogICAgIDwvQ2xD
b21waWxlPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3Vw
L1Byb3h5UmVzb2x2ZXJTb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
c291cC9Qcm94eVJlc29sdmVyU291cC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDUxY2M4NmIyYzZhZjZmOTk0ZDY0NTUyNmQwMmZkY2U2YzU0MzE2ZTguLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9zb3VwL1Byb3h5UmVzb2x2ZXJTb3VwLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDIx
NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNp
ZiBVU0UoU09VUCkKLQotI2luY2x1ZGUgIlByb3h5UmVzb2x2ZXJTb3VwLmgiCi0KLSNpbmNsdWRl
IDxsaWJzb3VwL3NvdXAuaD4KLSNpbmNsdWRlIDxzdHJpbmcuaD4KLSNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgotCi1zdGF0aWMgY29uc3QgY2hhciBkZWZhdWx0Tm9Qcm94eVZhbHVlW10g
PSAibG9jYWxob3N0LDEyNy4wLjAuMSI7Ci0KLXR5cGVkZWYgc3RydWN0IHsKLSAgICBTb3VwVVJJ
KiBwcm94eVVSSTsKLSAgICBDU3RyaW5nIG5vUHJveHk7Ci0gICAgVmVjdG9yPFN0cmluZz4gcHJv
eHlFeGNlcHRpb25zOwotfSBTb3VwUHJveHlSZXNvbHZlcldrUHJpdmF0ZTsKLQotI2RlZmluZSBT
T1VQX1BST1hZX1JFU09MVkVSX1dLX0dFVF9QUklWQVRFKG8pIChHX1RZUEVfSU5TVEFOQ0VfR0VU
X1BSSVZBVEUoKG8pLCBTT1VQX1RZUEVfUFJPWFlfUkVTT0xWRVJfV0ssIFNvdXBQcm94eVJlc29s
dmVyV2tQcml2YXRlKSkKLQotc3RhdGljIHZvaWQgc291cF9wcm94eV9yZXNvbHZlcl93a19pbnRl
cmZhY2VfaW5pdChTb3VwUHJveHlVUklSZXNvbHZlckludGVyZmFjZSogcHJveHlSZXNvbHZlcklu
dGVyZmFjZSk7Ci0KLUdfREVGSU5FX1RZUEVfRVhURU5ERUQoU291cFByb3h5UmVzb2x2ZXJXaywg
c291cF9wcm94eV9yZXNvbHZlcl93aywgR19UWVBFX09CSkVDVCwgMCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgR19JTVBMRU1FTlRfSU5URVJGQUNFKFNPVVBfVFlQRV9TRVNTSU9OX0ZFQVRVUkUs
IDApCi0gICAgICAgICAgICAgICAgICAgICAgIEdfSU1QTEVNRU5UX0lOVEVSRkFDRShTT1VQX1RZ
UEVfUFJPWFlfVVJJX1JFU09MVkVSLCBzb3VwX3Byb3h5X3Jlc29sdmVyX3drX2ludGVyZmFjZV9p
bml0KSkKLQotZW51bSB7Ci0gICAgUFJPUF8wLAotICAgIFBST1BfUFJPWFlfVVJJLAotICAgIFBS
T1BfTk9fUFJPWFksCi0gICAgTEFTVF9QUk9QCi19OwotCi1zdGF0aWMgdm9pZCBzb3VwX3Byb3h5
X3Jlc29sdmVyX3drX2luaXQoU291cFByb3h5UmVzb2x2ZXJXayopCi17Ci19Ci0KLXN0YXRpYyB2
b2lkIHNvdXBQcm94eVJlc29sdmVyV2tGaW5hbGl6ZShHT2JqZWN0KiBvYmplY3QpCi17Ci0gICAg
U291cFByb3h5UmVzb2x2ZXJXa1ByaXZhdGUqIHByaXYgPSBTT1VQX1BST1hZX1JFU09MVkVSX1dL
X0dFVF9QUklWQVRFKG9iamVjdCk7Ci0KLSAgICBnX2NsZWFyX3BvaW50ZXIoJnByaXYtPnByb3h5
VVJJLCBzb3VwX3VyaV9mcmVlKTsKLQotICAgIEdfT0JKRUNUX0NMQVNTKHNvdXBfcHJveHlfcmVz
b2x2ZXJfd2tfcGFyZW50X2NsYXNzKS0+ZmluYWxpemUob2JqZWN0KTsKLX0KLQotc3RhdGljIHZv
aWQgc291cFByb3h5UmVzb2x2ZXJXa1NldFByb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgdW5zaWdu
ZWQgcHJvcElELCBjb25zdCBHVmFsdWUqIHZhbHVlLCBHUGFyYW1TcGVjKiBwc3BlYykKLXsKLSAg
ICBTb3VwUHJveHlSZXNvbHZlcldrUHJpdmF0ZSogcHJpdiA9IFNPVVBfUFJPWFlfUkVTT0xWRVJf
V0tfR0VUX1BSSVZBVEUob2JqZWN0KTsKLQotICAgIHN3aXRjaCAocHJvcElEKSB7Ci0gICAgY2Fz
ZSBQUk9QX1BST1hZX1VSSTogewotICAgICAgICBTb3VwVVJJKiB1cmkgPSBzdGF0aWNfY2FzdDxT
b3VwVVJJKj4oZ192YWx1ZV9nZXRfYm94ZWQodmFsdWUpKTsKLSAgICAgICAgaWYgKHByaXYtPnBy
b3h5VVJJKQotICAgICAgICAgICAgc291cF91cmlfZnJlZShwcml2LT5wcm94eVVSSSk7Ci0KLSAg
ICAgICAgcHJpdi0+cHJveHlVUkkgPSB1cmkgPyBzb3VwX3VyaV9jb3B5KHVyaSkgOiAwOwotICAg
ICAgICBicmVhazsKLSAgICB9Ci0gICAgY2FzZSBQUk9QX05PX1BST1hZOgotICAgICAgICBwcml2
LT5ub1Byb3h5ID0gZ192YWx1ZV9nZXRfc3RyaW5nKHZhbHVlKTsKLSAgICAgICAgcHJpdi0+cHJv
eHlFeGNlcHRpb25zLmNsZWFyKCk7Ci0gICAgICAgIFN0cmluZzo6ZnJvbVVURjgocHJpdi0+bm9Q
cm94eS5kYXRhKCkpLnJlcGxhY2VXaXRoTGl0ZXJhbCgnICcsICIiKS5zcGxpdCgnLCcsIHByaXYt
PnByb3h5RXhjZXB0aW9ucyk7Ci0gICAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAgICAg
IEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRChvYmplY3QsIHByb3BJRCwgcHNwZWMp
OwotICAgICAgICBicmVhazsKLSAgICB9Ci19Ci0KLXN0YXRpYyB2b2lkIHNvdXBQcm94eVJlc29s
dmVyV2tHZXRQcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIHVuc2lnbmVkIHByb3BJRCwgR1ZhbHVl
KiB2YWx1ZSwgR1BhcmFtU3BlYyogcHNwZWMpCi17Ci0gICAgU291cFByb3h5UmVzb2x2ZXJXa1By
aXZhdGUqIHByaXYgPSBTT1VQX1BST1hZX1JFU09MVkVSX1dLX0dFVF9QUklWQVRFKG9iamVjdCk7
Ci0KLSAgICBzd2l0Y2ggKHByb3BJRCkgewotICAgIGNhc2UgUFJPUF9QUk9YWV9VUkk6Ci0gICAg
ICAgIGdfdmFsdWVfc2V0X2JveGVkKHZhbHVlLCBwcml2LT5wcm94eVVSSSk7Ci0gICAgICAgIGJy
ZWFrOwotICAgIGNhc2UgUFJPUF9OT19QUk9YWToKLSAgICAgICAgZ192YWx1ZV9zZXRfc3RyaW5n
KHZhbHVlLCBwcml2LT5ub1Byb3h5LmRhdGEoKSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGRlZmF1
bHQ6Ci0gICAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRChvYmplY3QsIHBy
b3BJRCwgcHNwZWMpOwotICAgICAgICBicmVhazsKLSAgICB9Ci19Ci0KLXN0YXRpYyBib29sIHNo
b3VsZEJ5cGFzc1Byb3h5KFNvdXBQcm94eVJlc29sdmVyV2tQcml2YXRlKiBwcml2LCBTb3VwVVJJ
KiB1cmkpCi17Ci0gICAgY29uc3Qgc2l6ZV90IGV4Y2VwdGlvbkNvdW50ID0gcHJpdi0+cHJveHlF
eGNlcHRpb25zLnNpemUoKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGV4Y2VwdGlvbkNv
dW50OyArK2kpIHsKLSAgICAgICAgaWYgKFN0cmluZzo6ZnJvbVVURjgodXJpLT5ob3N0KS5lbmRz
V2l0aChwcml2LT5wcm94eUV4Y2VwdGlvbnNbaV0sIGZhbHNlKSkKLSAgICAgICAgICAgIHJldHVy
biB0cnVlOwotICAgIH0KLQotICAgIHJldHVybiBmYWxzZTsKLX0KLQotdHlwZWRlZiBzdHJ1Y3Qg
ewotICAgIFNvdXBQcm94eVVSSVJlc29sdmVyKiBwcm94eVJlc29sdmVyOwotICAgIFNvdXBVUkkq
IHVyaTsKLSAgICBTb3VwUHJveHlVUklSZXNvbHZlckNhbGxiYWNrIGNhbGxiYWNrOwotICAgIHZv
aWQqIHVzZXJEYXRhOwotfSBTb3VwV2tBc3luY0RhdGE7Ci0KLXN0YXRpYyBnYm9vbGVhbiBpZGxl
X3JldHVybl9wcm94eV91cmkodm9pZCogZGF0YSkKLXsKLSAgICBTb3VwV2tBc3luY0RhdGEqIHNz
YWQgPSBzdGF0aWNfY2FzdDxTb3VwV2tBc3luY0RhdGEqPihkYXRhKTsKLSAgICBTb3VwUHJveHlS
ZXNvbHZlcldrUHJpdmF0ZSogcHJpdiA9IFNPVVBfUFJPWFlfUkVTT0xWRVJfV0tfR0VUX1BSSVZB
VEUoc3NhZC0+cHJveHlSZXNvbHZlcik7Ci0KLSAgICBTb3VwVVJJKiBwcm94eVVSSSA9IDA7Ci0g
ICAgaWYgKCFzaG91bGRCeXBhc3NQcm94eShwcml2LCBzc2FkLT51cmkpKQotICAgICAgICBwcm94
eVVSSSA9IHByaXYtPnByb3h5VVJJOwotCi0gICAgc3NhZC0+Y2FsbGJhY2soc3NhZC0+cHJveHlS
ZXNvbHZlciwgU09VUF9TVEFUVVNfT0ssIHByb3h5VVJJLCBzc2FkLT51c2VyRGF0YSk7Ci0gICAg
Z19vYmplY3RfdW5yZWYoc3NhZC0+cHJveHlSZXNvbHZlcik7Ci0gICAgc291cF91cmlfZnJlZShz
c2FkLT51cmkpOwotICAgIGdfc2xpY2VfZnJlZShTb3VwV2tBc3luY0RhdGEsIHNzYWQpOwotCi0g
ICAgcmV0dXJuIGZhbHNlOwotfQotCi1zdGF0aWMgdm9pZCBzb3VwUHJveHlSZXNvbHZlcldrR2V0
UHJveHlVUklBc3luYyhTb3VwUHJveHlVUklSZXNvbHZlciogcHJveHlSZXNvbHZlciwgU291cFVS
SSogdXJpLCBHTWFpbkNvbnRleHQqIGFzeW5jQ29udGV4dCwgR0NhbmNlbGxhYmxlKiwgU291cFBy
b3h5VVJJUmVzb2x2ZXJDYWxsYmFjayBjYWxsYmFjaywgdm9pZCogdXNlckRhdGEpCi17Ci0gICAg
U291cFdrQXN5bmNEYXRhKiBzc2FkOwotCi0gICAgc3NhZCA9IGdfc2xpY2VfbmV3MChTb3VwV2tB
c3luY0RhdGEpOwotICAgIHNzYWQtPnByb3h5UmVzb2x2ZXIgPSBTT1VQX1BST1hZX1VSSV9SRVNP
TFZFUihnX29iamVjdF9yZWYocHJveHlSZXNvbHZlcikpOwotICAgIHNzYWQtPnVyaSA9IHNvdXBf
dXJpX2NvcHkodXJpKTsKLSAgICBzc2FkLT5jYWxsYmFjayA9IGNhbGxiYWNrOwotICAgIHNzYWQt
PnVzZXJEYXRhID0gdXNlckRhdGE7Ci0gICAgc291cF9hZGRfY29tcGxldGlvbihhc3luY0NvbnRl
eHQsIGlkbGVfcmV0dXJuX3Byb3h5X3VyaSwgc3NhZCk7Ci19Ci0KLXN0YXRpYyB1bnNpZ25lZCBz
b3VwUHJveHlSZXNvbHZlcldrR2V0UHJveHlVUklTeW5jKFNvdXBQcm94eVVSSVJlc29sdmVyKiBw
cm94eVJlc29sdmVyLCBTb3VwVVJJKiB1cmksIEdDYW5jZWxsYWJsZSosIFNvdXBVUkkqKiBwcm94
eVVSSSkKLXsKLSAgICBTb3VwUHJveHlSZXNvbHZlcldrUHJpdmF0ZSogcHJpdiA9IFNPVVBfUFJP
WFlfUkVTT0xWRVJfV0tfR0VUX1BSSVZBVEUocHJveHlSZXNvbHZlcik7Ci0KLSAgICBpZiAoIXNo
b3VsZEJ5cGFzc1Byb3h5KHByaXYsIHVyaSkpCi0gICAgICAgICpwcm94eVVSSSA9IHNvdXBfdXJp
X2NvcHkocHJpdi0+cHJveHlVUkkpOwotCi0gICAgcmV0dXJuIFNPVVBfU1RBVFVTX09LOwotfQot
Ci1zdGF0aWMgdm9pZCBzb3VwX3Byb3h5X3Jlc29sdmVyX3drX2NsYXNzX2luaXQoU291cFByb3h5
UmVzb2x2ZXJXa0NsYXNzKiB3a0NsYXNzKQotewotICAgIEdPYmplY3RDbGFzcyogb2JqZWN0X2Ns
YXNzID0gR19PQkpFQ1RfQ0xBU1Mod2tDbGFzcyk7Ci0KLSAgICBnX3R5cGVfY2xhc3NfYWRkX3By
aXZhdGUod2tDbGFzcywgc2l6ZW9mKFNvdXBQcm94eVJlc29sdmVyV2tQcml2YXRlKSk7Ci0KLSAg
ICBvYmplY3RfY2xhc3MtPnNldF9wcm9wZXJ0eSA9IHNvdXBQcm94eVJlc29sdmVyV2tTZXRQcm9w
ZXJ0eTsKLSAgICBvYmplY3RfY2xhc3MtPmdldF9wcm9wZXJ0eSA9IHNvdXBQcm94eVJlc29sdmVy
V2tHZXRQcm9wZXJ0eTsKLSAgICBvYmplY3RfY2xhc3MtPmZpbmFsaXplID0gc291cFByb3h5UmVz
b2x2ZXJXa0ZpbmFsaXplOwotCi0gICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShv
YmplY3RfY2xhc3MsIFBST1BfUFJPWFlfVVJJLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZ19wYXJhbV9zcGVjX2JveGVkKFNPVVBfUFJPWFlfUkVTT0xWRVJfV0tfUFJPWFlf
VVJJLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJQcm94eSBVUkkiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJUaGUgSFRUUCBQcm94eSB0byB1c2UiLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNPVVBfVFlQRV9VUkksCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rh
dGljX2Nhc3Q8R1BhcmFtRmxhZ3M+KEdfUEFSQU1fUkVBRFdSSVRFKSkpOwotCi0gICAgZ19vYmpl
Y3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShvYmplY3RfY2xhc3MsIFBST1BfTk9fUFJPWFksCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnX3BhcmFtX3NwZWNfc3RyaW5nKFNP
VVBfUFJPWFlfUkVTT0xWRVJfV0tfTk9fUFJPWFksCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlByb3h5IGV4Y2VwdGlvbnMiLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDb21tYS1z
ZXBhcmF0ZWQgcHJveHkgZXhjZXB0aW9ucyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdE5vUHJveHlWYWx1ZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2Fz
dDxHUGFyYW1GbGFncz4oR19QQVJBTV9SRUFEV1JJVEUpKSk7Ci19Ci0KLXN0YXRpYyB2b2lkIHNv
dXBfcHJveHlfcmVzb2x2ZXJfd2tfaW50ZXJmYWNlX2luaXQoU291cFByb3h5VVJJUmVzb2x2ZXJJ
bnRlcmZhY2UqIHByb3h5X3VyaV9yZXNvbHZlcl9pbnRlcmZhY2UpCi17Ci0gICAgcHJveHlfdXJp
X3Jlc29sdmVyX2ludGVyZmFjZS0+Z2V0X3Byb3h5X3VyaV9hc3luYyA9IHNvdXBQcm94eVJlc29s
dmVyV2tHZXRQcm94eVVSSUFzeW5jOwotICAgIHByb3h5X3VyaV9yZXNvbHZlcl9pbnRlcmZhY2Ut
PmdldF9wcm94eV91cmlfc3luYyA9IHNvdXBQcm94eVJlc29sdmVyV2tHZXRQcm94eVVSSVN5bmM7
Ci19Ci0KLVNvdXBQcm94eVVSSVJlc29sdmVyKiBzb3VwUHJveHlSZXNvbHZlcldrTmV3KGNvbnN0
IGNoYXIqIGh0dHBQcm94eSwgY29uc3QgY2hhciogbm9Qcm94eSkKLXsKLSAgICBTb3VwVVJJKiBw
cm94eVVSSSA9IHNvdXBfdXJpX25ldyhodHRwUHJveHkpOwotICAgIFNvdXBQcm94eVVSSVJlc29s
dmVyKiByZXNvbHZlciA9IFNPVVBfUFJPWFlfVVJJX1JFU09MVkVSKGdfb2JqZWN0X25ldyhTT1VQ
X1RZUEVfUFJPWFlfUkVTT0xWRVJfV0ssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNPVVBfUFJPWFlfUkVT
T0xWRVJfV0tfUFJPWFlfVVJJLCBwcm94eVVSSSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU09VUF9QUk9Y
WV9SRVNPTFZFUl9XS19OT19QUk9YWSwgbm9Qcm94eSA/IG5vUHJveHkgOiBkZWZhdWx0Tm9Qcm94
eVZhbHVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAwKSk7Ci0gICAgc291cF91cmlfZnJlZShwcm94eVVS
SSk7Ci0KLSAgICByZXR1cm4gcmVzb2x2ZXI7Ci19Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Byb3h5UmVzb2x2ZXJTb3VwLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUHJveHlSZXNvbHZlclNvdXAuaApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWZkZWQ1MzhhMWZmMTM1NDc0ZjllYzU0YzQ4
ZmNlMzE2YTc4MzFmYi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUHJveHlSZXNvbHZlclNv
dXAuaAorKysgL2Rldi9udWxsCkBAIC0xLDU3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTIgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNpZm5kZWYgUHJveHlSZXNvbHZlclNvdXBfaAotI2RlZmluZSBQcm94eVJlc29sdmVyU291cF9o
Ci0KLSNpbmNsdWRlIDxsaWJzb3VwL3NvdXAuaD4KLQotR19CRUdJTl9ERUNMUwotCi0jZGVmaW5l
IFNPVVBfVFlQRV9QUk9YWV9SRVNPTFZFUl9XSyAgICAgICAgICAgICAgIChzb3VwX3Byb3h5X3Jl
c29sdmVyX3drX2dldF90eXBlICgpKQotI2RlZmluZSBTT1VQX1BST1hZX1JFU09MVkVSX1dLKG9i
amVjdCkgICAgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QgKChvYmplY3QpLCBT
T1VQX1RZUEVfUFJPWFlfUkVTT0xWRVJfV0ssIFNvdXBQcm94eVJlc29sdmVyV2spKQotI2RlZmlu
ZSBTT1VQX1BST1hZX1JFU09MVkVSX1dLX0NMQVNTKGtsYXNzKSAgICAgICAoR19UWVBFX0NIRUNL
X0NMQVNTX0NBU1QgKChrbGFzcyksIFNPVVBfVFlQRV9QUk9YWV9SRVNPTFZFUl9XSywgU291cFBy
b3h5UmVzb2x2ZXJXa0NsYXNzKSkKLSNkZWZpbmUgU09VUF9JU19QUk9YWV9SRVNPTFZFUl9XSyhv
YmplY3QpICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9UWVBFICgob2JqZWN0KSwgU09V
UF9UWVBFX1BST1hZX1JFU09MVkVSX1dLKSkKLSNkZWZpbmUgU09VUF9JU19QUk9YWV9SRVNPTFZF
Ul9XS19DTEFTUyhrbGFzcykgICAgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBFICgoa2xhc3MpLCBT
T1VQX1RZUEVfUFJPWFlfUkVTT0xWRVJfV0spKQotI2RlZmluZSBTT1VQX1BST1hZX1JFU09MVkVS
X1dLX0dFVF9DTEFTUyhvYmopICAgICAoR19UWVBFX0lOU1RBTkNFX0dFVF9DTEFTUyAoKG9iaiks
IFNPVVBfVFlQRV9QUk9YWV9SRVNPTFZFUl9XSywgU291cFByb3h5UmVzb2x2ZXJXa0NsYXNzKSkK
LQotc3RhdGljIGNvbnN0IGNoYXIgU09VUF9QUk9YWV9SRVNPTFZFUl9XS19QUk9YWV9VUklbXSA9
ICJwcm94eS11cmkiOwotc3RhdGljIGNvbnN0IGNoYXIgU09VUF9QUk9YWV9SRVNPTFZFUl9XS19O
T19QUk9YWVtdID0gIm5vLXByb3h5IjsKLQotdHlwZWRlZiBzdHJ1Y3QgewotICAgIEdPYmplY3Qg
cGFyZW50OwotfSBTb3VwUHJveHlSZXNvbHZlcldrOwotCi10eXBlZGVmIHN0cnVjdCB7Ci0gICAg
R09iamVjdENsYXNzIHBhcmVudF9jbGFzczsKLX0gU291cFByb3h5UmVzb2x2ZXJXa0NsYXNzOwot
Ci1HVHlwZSBzb3VwX3Byb3h5X3Jlc29sdmVyX3drX2dldF90eXBlKHZvaWQpOwotCi1Tb3VwUHJv
eHlVUklSZXNvbHZlciogc291cFByb3h5UmVzb2x2ZXJXa05ldyhjb25zdCBjaGFyKiBodHRwUHJv
eHksIGNvbnN0IGNoYXIqIG5vUHJveHkpOwotCi1HX0VORF9ERUNMUwotCi0jZW5kaWYgLy8gUHJv
eHlSZXNvbHZlclNvdXBfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL3NvdXAvU291cE5ldHdvcmtTZXNzaW9uLmNwcAppbmRleCA0OGU1MjFkNTU1MmQ5
MzExNDVlMTQ3OGNiMjNhY2MwOWQ4Njk1ZDY2Li40YTczMWFmZGMxMjdhZWJjODE5ODUzNDYxNGZh
NDg3OGNhZmM4YzMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L3NvdXAvU291cE5ldHdvcmtTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL3NvdXAvU291cE5ldHdvcmtTZXNzaW9uLmNwcApAQCAtNDAsMTAgKzQwLDYgQEAK
ICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5n
QnVpbGRlci5oPgogCi0jaWYgUExBVEZPUk0oRUZMKQotI2luY2x1ZGUgIlByb3h5UmVzb2x2ZXJT
b3VwLmgiCi0jZW5kaWYKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAjaWYgIUxPR19ESVNBQkxF
RApAQCAtMjI1LDM2ICsyMjEsMjQgQEAgU291cE5ldHdvcmtTZXNzaW9uOjpTU0xQb2xpY3kgU291
cE5ldHdvcmtTZXNzaW9uOjpzc2xQb2xpY3koKSBjb25zdAogdm9pZCBTb3VwTmV0d29ya1Nlc3Np
b246OnNldEhUVFBQcm94eShjb25zdCBjaGFyKiBodHRwUHJveHksIGNvbnN0IGNoYXIqIGh0dHBQ
cm94eUV4Y2VwdGlvbnMpCiB7CiAjaWYgUExBVEZPUk0oRUZMKQotICAgIC8vIE9ubHkgZm9yIEVG
TCBiZWNhdXNlIEdUSyBwb3J0IHVzZXMgdGhlIGRlZmF1bHQgcmVzb2x2ZXIsIHdoaWNoIHVzZXMg
R0lPJ3MgcHJveHkgcmVzb2x2ZXIuCi0gICAgaWYgKCFodHRwUHJveHkpIHsKLSAgICAgICAgc291
cF9zZXNzaW9uX3JlbW92ZV9mZWF0dXJlX2J5X3R5cGUobV9zb3VwU2Vzc2lvbi5nZXQoKSwgU09V
UF9UWVBFX1BST1hZX1VSSV9SRVNPTFZFUik7Ci0gICAgICAgIHJldHVybjsKKyAgICBHUHJveHlS
ZXNvbHZlciogcmVzb2x2ZXIgPSBudWxscHRyOworICAgIGlmIChodHRwUHJveHkpIHsKKyAgICAg
ICAgZ2NoYXIqKiBpZ25vcmVMaXN0cyA9IG51bGxwdHI7CisgICAgICAgIGlmIChodHRwUHJveHlF
eGNlcHRpb25zKQorICAgICAgICAgICAgaWdub3JlTGlzdHMgPSAgZ19zdHJzcGxpdChodHRwUHJv
eHlFeGNlcHRpb25zLCAiLCIsIC0xKTsKKworICAgICAgICByZXNvbHZlciA9IGdfc2ltcGxlX3By
b3h5X3Jlc29sdmVyX25ldyhodHRwUHJveHksIGlnbm9yZUxpc3RzKTsKKworICAgICAgICBnX3N0
cmZyZWV2KGlnbm9yZUxpc3RzKTsKICAgICB9CiAKLSAgICBHUmVmUHRyPFNvdXBQcm94eVVSSVJl
c29sdmVyPiByZXNvbHZlciA9IGFkb3B0R1JlZihzb3VwUHJveHlSZXNvbHZlcldrTmV3KGh0dHBQ
cm94eSwgaHR0cFByb3h5RXhjZXB0aW9ucykpOwotICAgIHNvdXBfc2Vzc2lvbl9hZGRfZmVhdHVy
ZShtX3NvdXBTZXNzaW9uLmdldCgpLCBTT1VQX1NFU1NJT05fRkVBVFVSRShyZXNvbHZlci5nZXQo
KSkpOworICAgIGdfb2JqZWN0X3NldChtX3NvdXBTZXNzaW9uLmdldCgpLCBTT1VQX1NFU1NJT05f
UFJPWFlfUkVTT0xWRVIsIHJlc29sdmVyLCBudWxscHRyKTsKICNlbHNlCiAgICAgVU5VU0VEX1BB
UkFNKGh0dHBQcm94eSk7CiAgICAgVU5VU0VEX1BBUkFNKGh0dHBQcm94eUV4Y2VwdGlvbnMpOwog
I2VuZGlmCiB9CiAKLWNoYXIqIFNvdXBOZXR3b3JrU2Vzc2lvbjo6aHR0cFByb3h5KCkgY29uc3QK
LXsKLSNpZiBQTEFURk9STShFRkwpCi0gICAgU291cFNlc3Npb25GZWF0dXJlKiBzb3VwUmVzb2x2
ZXIgPSBzb3VwX3Nlc3Npb25fZ2V0X2ZlYXR1cmUobV9zb3VwU2Vzc2lvbi5nZXQoKSwgU09VUF9U
WVBFX1BST1hZX1VSSV9SRVNPTFZFUik7Ci0gICAgaWYgKCFzb3VwUmVzb2x2ZXIpCi0gICAgICAg
IHJldHVybiBudWxscHRyOwotCi0gICAgR1VuaXF1ZU91dFB0cjxTb3VwVVJJPiB1cmk7Ci0gICAg
Z19vYmplY3RfZ2V0KHNvdXBSZXNvbHZlciwgU09VUF9QUk9YWV9SRVNPTFZFUl9XS19QUk9YWV9V
UkksICZ1cmkub3V0UHRyKCksIG51bGxwdHIpOwotCi0gICAgcmV0dXJuIHVyaSA/IHNvdXBfdXJp
X3RvX3N0cmluZyh1cmkuZ2V0KCksIEZBTFNFKSA6IG51bGxwdHI7Ci0jZWxzZQotICAgIHJldHVy
biBudWxscHRyOwotI2VuZGlmCi19Ci0KIHZvaWQgU291cE5ldHdvcmtTZXNzaW9uOjpzZXR1cEhU
VFBQcm94eUZyb21FbnZpcm9ubWVudCgpCiB7CiAjaWYgUExBVEZPUk0oRUZMKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lv
bi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvdXBOZXR3b3JrU2Vz
c2lvbi5oCmluZGV4IDc5NjkyN2RhNzQ1MDRjOTcwNTNlZmNhNTg1YjRjMDZmNTFhMTQ3MjAuLjg5
MzQ1NWE2YzJlYWQwNmVjZWQxMzIxNjlmMjc0MjIyZWQ4MzliZWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwTmV0d29ya1Nlc3Npb24uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291cE5ldHdvcmtTZXNzaW9u
LmgKQEAgLTY1LDggKzY1LDYgQEAgcHVibGljOgogICAgIHZvaWQgc2V0U1NMUG9saWN5KFNTTFBv
bGljeSk7CiAgICAgU1NMUG9saWN5IHNzbFBvbGljeSgpIGNvbnN0OwogCi0gICAgdm9pZCBzZXRI
VFRQUHJveHkoY29uc3QgY2hhciogaHR0cFByb3h5LCBjb25zdCBjaGFyKiBodHRwUHJveHlFeGNl
cHRpb25zKTsKLSAgICBjaGFyKiBodHRwUHJveHkoKSBjb25zdDsKICAgICB2b2lkIHNldHVwSFRU
UFByb3h5RnJvbUVudmlyb25tZW50KCk7CiAKICAgICB2b2lkIHNldEFjY2VwdExhbmd1YWdlcyhj
b25zdCBWZWN0b3I8U3RyaW5nPiYpOwpAQCAtNzUsNiArNzMsOCBAQCBwcml2YXRlOgogICAgIFNv
dXBOZXR3b3JrU2Vzc2lvbihTb3VwQ29va2llSmFyKik7CiAgICAgU291cE5ldHdvcmtTZXNzaW9u
KFNvdXBTZXNzaW9uKik7CiAKKyAgICB2b2lkIHNldEhUVFBQcm94eShjb25zdCBjaGFyKiBodHRw
UHJveHksIGNvbnN0IGNoYXIqIGh0dHBQcm94eUV4Y2VwdGlvbnMpOworCiAgICAgdm9pZCBzZXR1
cExvZ2dlcigpOwogCiAgICAgR1JlZlB0cjxTb3VwU2Vzc2lvbj4gbV9zb3VwU2Vzc2lvbjsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>253373</attachid>
            <date>2015-05-18 23:35:50 -0700</date>
            <delta_ts>2015-05-19 17:52:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-145154-20150519153547.patch</filename>
            <type>text/plain</type>
            <size>20248</size>
            <attacher name="Ryuan Choi">ryuan.choi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg0NTQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGU0NmZjZjJkZjY2MmY4
MWMyYTA5NTNhYzcwOGI1MDU4NDY0NjdlNC4uZjFkMjM2OTAyODc3Njk4NDI4YmRlOTEzYjNiM2Iw
MmUxYTEyNzI5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDE1LTA1LTE4ICBSeXVh
biBDaG9pICA8cnl1YW4uY2hvaUBuYXZlcmNvcnAuY29tPgorCisgICAgICAgIFtFRkxdIFVzZSBH
U2ltcGxlUHJveHlSZXNvbHZlciBpbnN0ZWFkIG9mIGN1c3RvbSBTb3VwUHJveHlSZXNvbHZlcgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ1MTU0CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU291cFByb3h5
UmVzb2x2ZXIgd2FzIGRlcHJlY2F0ZWQgc2luY2UgbGlic291cCAyLjQyLgorICAgICAgICBTbywg
dGhpcyBwYXRjaCByZWZhY3RvcnMgdGhlIGN1c3RvbSBTb3VwUHJveHlSZXNvbHZlciB0byBHU2lt
cGxlUHJveHlSZXNvbHZlcgorICAgICAgICB3aGljaCBwcm92aWRlcyBzYW1lIGZ1bmN0aW9uYWxp
dHkgaW4gZ2lvLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgYmVjYXVzZSB0aGVyZSBpcyBub3Qg
YmVoYXZpb3IgY2hhbmdlLgorCisgICAgICAgICogUGxhdGZvcm1FZmwuY21ha2U6CisgICAgICAg
ICogV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnZj
eHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnM6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9zb3VwL1Byb3h5UmVzb2x2ZXJTb3VwLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9uZXR3b3JrL3NvdXAvUHJveHlSZXNvbHZlclNvdXAuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291cE5ldHdvcmtTZXNzaW9uLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNvdXBOZXR3b3JrU2Vzc2lvbjo6c2V0SFRUUFByb3h5KTogTW92ZWQgdG8gcHJpdmF0
ZSBtZW1iZXIuCisgICAgICAgIChXZWJDb3JlOjpTb3VwTmV0d29ya1Nlc3Npb246Omh0dHBQcm94
eSk6IERlbGV0ZWQgYmVjYXVzZSBub2JvZHkgY2FsbHMgaXQuCisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5oOgorCiAyMDE1LTA1LTE4ICBHeXV5b3Vu
ZyBLaW0gIDxneXV5b3VuZy5raW1Ad2Via2l0Lm9yZz4KIAogICAgICAgICBVc2UgUmVmIGluc3Rl
YWQgb2YgUGFzc1JlZlB0ciBpbiBXZWJDb3JlL2JpbmRpbmdzCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtRWZsLmNt
YWtlCmluZGV4IDY5MWE1OTdiMmViYjZkNDAxYzNjMTdhMDVhMTFmYjc4NjY1MGU4ZjcuLmQ4Yjky
OTUxNjdlNjJmZGI4Y2QyNzA3NGE5YzU4MDdmZTYyMDZmMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1BsYXRmb3JtRWZsLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtRWZs
LmNtYWtlCkBAIC0yMzIsNyArMjMyLDYgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAg
ICAgcGxhdGZvcm0vbmV0d29yay9zb3VwL0NyZWRlbnRpYWxTdG9yYWdlU291cC5jcHAKICAgICBw
bGF0Zm9ybS9uZXR3b3JrL3NvdXAvRE5TU291cC5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL3Nv
dXAvTmV0d29ya1N0b3JhZ2VTZXNzaW9uU291cC5jcHAKLSAgICBwbGF0Zm9ybS9uZXR3b3JrL3Nv
dXAvUHJveHlSZXNvbHZlclNvdXAuY3BwCiAgICAgcGxhdGZvcm0vbmV0d29yay9zb3VwL1Byb3h5
U2VydmVyU291cC5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VFcnJvclNv
dXAuY3BwCiAgICAgcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHBy
b2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCmluZGV4
IGMxZTc0OTZlY2E4YzdlZTQ0NmU1ZjhkNjlkMjg3Y2JlZDliNzBmYzQuLjc4NDJkZTAyNDVhZmVk
Y2M1NmQ5M2ZjN2IwYmI1ZjBkNThkYjhjMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagpAQCAtNzkxMywxNiArNzkxMyw2IEBACiAgICAgICA8
RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3Jt
KSc9PSdQcm9kdWN0aW9ufFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CiAgICAgICA8
RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3Jt
KSc9PSdQcm9kdWN0aW9ufHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgogICAgIDwvQ2xD
b21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cbmV0d29ya1xzb3Vw
XFByb3h5UmVzb2x2ZXJTb3VwLmNwcCI+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0
aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPnRydWU8
L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0i
JyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+dHJ1ZTwvRXhjbHVk
ZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25m
aWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z1N1ZmZpeHxXaW4zMiciPnRydWU8L0V4Y2x1
ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29u
ZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdTdWZmaXh8eDY0JyI+dHJ1ZTwvRXhjbHVk
ZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25m
aWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRG
cm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1
cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1
aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlv
bil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1
aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlv
bil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWls
ZD4KLSAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3Jt
XG5ldHdvcmtcc291cFxQcm94eVNlcnZlclNvdXAuY3BwIj4KICAgICAgIDxFeGNsdWRlZEZyb21C
dWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdp
bjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQg
Q29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj50
cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KQEAgLTE5ODgxLDcgKzE5ODcxLDYgQEAKICAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXG5ldHdvcmtcc291cFxDZXJ0aWZpY2F0ZUluZm8u
aCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXG5ldHdvcmtcc291cFxD
b29raWVKYXJTb3VwLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxu
ZXR3b3JrXHNvdXBcR1VuaXF1ZVB0clNvdXAuaCIgLz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXHBsYXRmb3JtXG5ldHdvcmtcc291cFxQcm94eVJlc29sdmVyU291cC5oIiAvPgogICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cbmV0d29ya1xzb3VwXFJlc291cmNlRXJyb3Iu
aCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXG5ldHdvcmtcc291cFxS
ZXNvdXJjZVJlcXVlc3QuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3Jt
XG5ldHdvcmtcc291cFxSZXNvdXJjZVJlc3BvbnNlLmgiIC8+CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMgYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMKaW5kZXggMTNk
MTU3YTBmYTkxY2RlYjNkODM3MTZjNmIyYjkzNzI5NGRjODMwMi4uNzhmZjUxMWUyNWExYzM5ODBi
NDgwMGUwMDIyMzhmZDc0NzlkNThiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycwpAQCAtNjg4OSw5ICs2ODg5LDYg
QEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXG5ldHdvcmtcc291cFxOZXR3
b3JrU3RvcmFnZVNlc3Npb25Tb3VwLmNwcCI+CiAgICAgICA8RmlsdGVyPnBsYXRmb3JtXG5ldHdv
cmtcc291cDwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iLi5ccGxhdGZvcm1cbmV0d29ya1xzb3VwXFByb3h5UmVzb2x2ZXJTb3VwLmNwcCI+Ci0gICAg
ICA8RmlsdGVyPnBsYXRmb3JtXG5ldHdvcmtcc291cDwvRmlsdGVyPgotICAgIDwvQ2xDb21waWxl
PgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cbmV0d29ya1xzb3VwXFByb3h5
U2VydmVyU291cC5jcHAiPgogICAgICAgPEZpbHRlcj5wbGF0Zm9ybVxuZXR3b3JrXHNvdXA8L0Zp
bHRlcj4KICAgICA8L0NsQ29tcGlsZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvc291cC9Qcm94eVJlc29sdmVyU291cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL3NvdXAvUHJveHlSZXNvbHZlclNvdXAuY3BwCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCA1MWNjODZiMmM2YWY2Zjk5NGQ2NDU1MjZkMDJmZGNlNmM1NDMxNmU4
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Qcm94eVJlc29sdmVyU291cC5jcHAKKysrIC9k
ZXYvbnVsbApAQCAtMSwyMTUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBJbnRl
bCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUg
ImNvbmZpZy5oIgotCi0jaWYgVVNFKFNPVVApCi0KLSNpbmNsdWRlICJQcm94eVJlc29sdmVyU291
cC5oIgotCi0jaW5jbHVkZSA8bGlic291cC9zb3VwLmg+Ci0jaW5jbHVkZSA8c3RyaW5nLmg+Ci0j
aW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KLSNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotc3RhdGljIGNvbnN0IGNoYXIgZGVmYXVs
dE5vUHJveHlWYWx1ZVtdID0gImxvY2FsaG9zdCwxMjcuMC4wLjEiOwotCi10eXBlZGVmIHN0cnVj
dCB7Ci0gICAgU291cFVSSSogcHJveHlVUkk7Ci0gICAgQ1N0cmluZyBub1Byb3h5OwotICAgIFZl
Y3RvcjxTdHJpbmc+IHByb3h5RXhjZXB0aW9uczsKLX0gU291cFByb3h5UmVzb2x2ZXJXa1ByaXZh
dGU7Ci0KLSNkZWZpbmUgU09VUF9QUk9YWV9SRVNPTFZFUl9XS19HRVRfUFJJVkFURShvKSAoR19U
WVBFX0lOU1RBTkNFX0dFVF9QUklWQVRFKChvKSwgU09VUF9UWVBFX1BST1hZX1JFU09MVkVSX1dL
LCBTb3VwUHJveHlSZXNvbHZlcldrUHJpdmF0ZSkpCi0KLXN0YXRpYyB2b2lkIHNvdXBfcHJveHlf
cmVzb2x2ZXJfd2tfaW50ZXJmYWNlX2luaXQoU291cFByb3h5VVJJUmVzb2x2ZXJJbnRlcmZhY2Uq
IHByb3h5UmVzb2x2ZXJJbnRlcmZhY2UpOwotCi1HX0RFRklORV9UWVBFX0VYVEVOREVEKFNvdXBQ
cm94eVJlc29sdmVyV2ssIHNvdXBfcHJveHlfcmVzb2x2ZXJfd2ssIEdfVFlQRV9PQkpFQ1QsIDAs
Ci0gICAgICAgICAgICAgICAgICAgICAgIEdfSU1QTEVNRU5UX0lOVEVSRkFDRShTT1VQX1RZUEVf
U0VTU0lPTl9GRUFUVVJFLCAwKQotICAgICAgICAgICAgICAgICAgICAgICBHX0lNUExFTUVOVF9J
TlRFUkZBQ0UoU09VUF9UWVBFX1BST1hZX1VSSV9SRVNPTFZFUiwgc291cF9wcm94eV9yZXNvbHZl
cl93a19pbnRlcmZhY2VfaW5pdCkpCi0KLWVudW0gewotICAgIFBST1BfMCwKLSAgICBQUk9QX1BS
T1hZX1VSSSwKLSAgICBQUk9QX05PX1BST1hZLAotICAgIExBU1RfUFJPUAotfTsKLQotc3RhdGlj
IHZvaWQgc291cF9wcm94eV9yZXNvbHZlcl93a19pbml0KFNvdXBQcm94eVJlc29sdmVyV2sqKQot
ewotfQotCi1zdGF0aWMgdm9pZCBzb3VwUHJveHlSZXNvbHZlcldrRmluYWxpemUoR09iamVjdCog
b2JqZWN0KQotewotICAgIFNvdXBQcm94eVJlc29sdmVyV2tQcml2YXRlKiBwcml2ID0gU09VUF9Q
Uk9YWV9SRVNPTFZFUl9XS19HRVRfUFJJVkFURShvYmplY3QpOwotCi0gICAgZ19jbGVhcl9wb2lu
dGVyKCZwcml2LT5wcm94eVVSSSwgc291cF91cmlfZnJlZSk7Ci0KLSAgICBHX09CSkVDVF9DTEFT
Uyhzb3VwX3Byb3h5X3Jlc29sdmVyX3drX3BhcmVudF9jbGFzcyktPmZpbmFsaXplKG9iamVjdCk7
Ci19Ci0KLXN0YXRpYyB2b2lkIHNvdXBQcm94eVJlc29sdmVyV2tTZXRQcm9wZXJ0eShHT2JqZWN0
KiBvYmplY3QsIHVuc2lnbmVkIHByb3BJRCwgY29uc3QgR1ZhbHVlKiB2YWx1ZSwgR1BhcmFtU3Bl
YyogcHNwZWMpCi17Ci0gICAgU291cFByb3h5UmVzb2x2ZXJXa1ByaXZhdGUqIHByaXYgPSBTT1VQ
X1BST1hZX1JFU09MVkVSX1dLX0dFVF9QUklWQVRFKG9iamVjdCk7Ci0KLSAgICBzd2l0Y2ggKHBy
b3BJRCkgewotICAgIGNhc2UgUFJPUF9QUk9YWV9VUkk6IHsKLSAgICAgICAgU291cFVSSSogdXJp
ID0gc3RhdGljX2Nhc3Q8U291cFVSSSo+KGdfdmFsdWVfZ2V0X2JveGVkKHZhbHVlKSk7Ci0gICAg
ICAgIGlmIChwcml2LT5wcm94eVVSSSkKLSAgICAgICAgICAgIHNvdXBfdXJpX2ZyZWUocHJpdi0+
cHJveHlVUkkpOwotCi0gICAgICAgIHByaXYtPnByb3h5VVJJID0gdXJpID8gc291cF91cmlfY29w
eSh1cmkpIDogMDsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGNhc2UgUFJPUF9OT19QUk9Y
WToKLSAgICAgICAgcHJpdi0+bm9Qcm94eSA9IGdfdmFsdWVfZ2V0X3N0cmluZyh2YWx1ZSk7Ci0g
ICAgICAgIHByaXYtPnByb3h5RXhjZXB0aW9ucy5jbGVhcigpOwotICAgICAgICBTdHJpbmc6OmZy
b21VVEY4KHByaXYtPm5vUHJveHkuZGF0YSgpKS5yZXBsYWNlV2l0aExpdGVyYWwoJyAnLCAiIiku
c3BsaXQoJywnLCBwcml2LT5wcm94eUV4Y2VwdGlvbnMpOwotICAgICAgICBicmVhazsKLSAgICBk
ZWZhdWx0OgotICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQob2JqZWN0
LCBwcm9wSUQsIHBzcGVjKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotfQotCi1zdGF0aWMgdm9p
ZCBzb3VwUHJveHlSZXNvbHZlcldrR2V0UHJvcGVydHkoR09iamVjdCogb2JqZWN0LCB1bnNpZ25l
ZCBwcm9wSUQsIEdWYWx1ZSogdmFsdWUsIEdQYXJhbVNwZWMqIHBzcGVjKQotewotICAgIFNvdXBQ
cm94eVJlc29sdmVyV2tQcml2YXRlKiBwcml2ID0gU09VUF9QUk9YWV9SRVNPTFZFUl9XS19HRVRf
UFJJVkFURShvYmplY3QpOwotCi0gICAgc3dpdGNoIChwcm9wSUQpIHsKLSAgICBjYXNlIFBST1Bf
UFJPWFlfVVJJOgotICAgICAgICBnX3ZhbHVlX3NldF9ib3hlZCh2YWx1ZSwgcHJpdi0+cHJveHlV
UkkpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFBST1BfTk9fUFJPWFk6Ci0gICAgICAgIGdf
dmFsdWVfc2V0X3N0cmluZyh2YWx1ZSwgcHJpdi0+bm9Qcm94eS5kYXRhKCkpOwotICAgICAgICBi
cmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVS
VFlfSUQob2JqZWN0LCBwcm9wSUQsIHBzcGVjKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotfQot
Ci1zdGF0aWMgYm9vbCBzaG91bGRCeXBhc3NQcm94eShTb3VwUHJveHlSZXNvbHZlcldrUHJpdmF0
ZSogcHJpdiwgU291cFVSSSogdXJpKQotewotICAgIGNvbnN0IHNpemVfdCBleGNlcHRpb25Db3Vu
dCA9IHByaXYtPnByb3h5RXhjZXB0aW9ucy5zaXplKCk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBleGNlcHRpb25Db3VudDsgKytpKSB7Ci0gICAgICAgIGlmIChTdHJpbmc6OmZyb21VVEY4
KHVyaS0+aG9zdCkuZW5kc1dpdGgocHJpdi0+cHJveHlFeGNlcHRpb25zW2ldLCBmYWxzZSkpCi0g
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0K
LXR5cGVkZWYgc3RydWN0IHsKLSAgICBTb3VwUHJveHlVUklSZXNvbHZlciogcHJveHlSZXNvbHZl
cjsKLSAgICBTb3VwVVJJKiB1cmk7Ci0gICAgU291cFByb3h5VVJJUmVzb2x2ZXJDYWxsYmFjayBj
YWxsYmFjazsKLSAgICB2b2lkKiB1c2VyRGF0YTsKLX0gU291cFdrQXN5bmNEYXRhOwotCi1zdGF0
aWMgZ2Jvb2xlYW4gaWRsZV9yZXR1cm5fcHJveHlfdXJpKHZvaWQqIGRhdGEpCi17Ci0gICAgU291
cFdrQXN5bmNEYXRhKiBzc2FkID0gc3RhdGljX2Nhc3Q8U291cFdrQXN5bmNEYXRhKj4oZGF0YSk7
Ci0gICAgU291cFByb3h5UmVzb2x2ZXJXa1ByaXZhdGUqIHByaXYgPSBTT1VQX1BST1hZX1JFU09M
VkVSX1dLX0dFVF9QUklWQVRFKHNzYWQtPnByb3h5UmVzb2x2ZXIpOwotCi0gICAgU291cFVSSSog
cHJveHlVUkkgPSAwOwotICAgIGlmICghc2hvdWxkQnlwYXNzUHJveHkocHJpdiwgc3NhZC0+dXJp
KSkKLSAgICAgICAgcHJveHlVUkkgPSBwcml2LT5wcm94eVVSSTsKLQotICAgIHNzYWQtPmNhbGxi
YWNrKHNzYWQtPnByb3h5UmVzb2x2ZXIsIFNPVVBfU1RBVFVTX09LLCBwcm94eVVSSSwgc3NhZC0+
dXNlckRhdGEpOwotICAgIGdfb2JqZWN0X3VucmVmKHNzYWQtPnByb3h5UmVzb2x2ZXIpOwotICAg
IHNvdXBfdXJpX2ZyZWUoc3NhZC0+dXJpKTsKLSAgICBnX3NsaWNlX2ZyZWUoU291cFdrQXN5bmNE
YXRhLCBzc2FkKTsKLQotICAgIHJldHVybiBmYWxzZTsKLX0KLQotc3RhdGljIHZvaWQgc291cFBy
b3h5UmVzb2x2ZXJXa0dldFByb3h5VVJJQXN5bmMoU291cFByb3h5VVJJUmVzb2x2ZXIqIHByb3h5
UmVzb2x2ZXIsIFNvdXBVUkkqIHVyaSwgR01haW5Db250ZXh0KiBhc3luY0NvbnRleHQsIEdDYW5j
ZWxsYWJsZSosIFNvdXBQcm94eVVSSVJlc29sdmVyQ2FsbGJhY2sgY2FsbGJhY2ssIHZvaWQqIHVz
ZXJEYXRhKQotewotICAgIFNvdXBXa0FzeW5jRGF0YSogc3NhZDsKLQotICAgIHNzYWQgPSBnX3Ns
aWNlX25ldzAoU291cFdrQXN5bmNEYXRhKTsKLSAgICBzc2FkLT5wcm94eVJlc29sdmVyID0gU09V
UF9QUk9YWV9VUklfUkVTT0xWRVIoZ19vYmplY3RfcmVmKHByb3h5UmVzb2x2ZXIpKTsKLSAgICBz
c2FkLT51cmkgPSBzb3VwX3VyaV9jb3B5KHVyaSk7Ci0gICAgc3NhZC0+Y2FsbGJhY2sgPSBjYWxs
YmFjazsKLSAgICBzc2FkLT51c2VyRGF0YSA9IHVzZXJEYXRhOwotICAgIHNvdXBfYWRkX2NvbXBs
ZXRpb24oYXN5bmNDb250ZXh0LCBpZGxlX3JldHVybl9wcm94eV91cmksIHNzYWQpOwotfQotCi1z
dGF0aWMgdW5zaWduZWQgc291cFByb3h5UmVzb2x2ZXJXa0dldFByb3h5VVJJU3luYyhTb3VwUHJv
eHlVUklSZXNvbHZlciogcHJveHlSZXNvbHZlciwgU291cFVSSSogdXJpLCBHQ2FuY2VsbGFibGUq
LCBTb3VwVVJJKiogcHJveHlVUkkpCi17Ci0gICAgU291cFByb3h5UmVzb2x2ZXJXa1ByaXZhdGUq
IHByaXYgPSBTT1VQX1BST1hZX1JFU09MVkVSX1dLX0dFVF9QUklWQVRFKHByb3h5UmVzb2x2ZXIp
OwotCi0gICAgaWYgKCFzaG91bGRCeXBhc3NQcm94eShwcml2LCB1cmkpKQotICAgICAgICAqcHJv
eHlVUkkgPSBzb3VwX3VyaV9jb3B5KHByaXYtPnByb3h5VVJJKTsKLQotICAgIHJldHVybiBTT1VQ
X1NUQVRVU19PSzsKLX0KLQotc3RhdGljIHZvaWQgc291cF9wcm94eV9yZXNvbHZlcl93a19jbGFz
c19pbml0KFNvdXBQcm94eVJlc29sdmVyV2tDbGFzcyogd2tDbGFzcykKLXsKLSAgICBHT2JqZWN0
Q2xhc3MqIG9iamVjdF9jbGFzcyA9IEdfT0JKRUNUX0NMQVNTKHdrQ2xhc3MpOwotCi0gICAgZ190
eXBlX2NsYXNzX2FkZF9wcml2YXRlKHdrQ2xhc3MsIHNpemVvZihTb3VwUHJveHlSZXNvbHZlcldr
UHJpdmF0ZSkpOwotCi0gICAgb2JqZWN0X2NsYXNzLT5zZXRfcHJvcGVydHkgPSBzb3VwUHJveHlS
ZXNvbHZlcldrU2V0UHJvcGVydHk7Ci0gICAgb2JqZWN0X2NsYXNzLT5nZXRfcHJvcGVydHkgPSBz
b3VwUHJveHlSZXNvbHZlcldrR2V0UHJvcGVydHk7Ci0gICAgb2JqZWN0X2NsYXNzLT5maW5hbGl6
ZSA9IHNvdXBQcm94eVJlc29sdmVyV2tGaW5hbGl6ZTsKLQotICAgIGdfb2JqZWN0X2NsYXNzX2lu
c3RhbGxfcHJvcGVydHkob2JqZWN0X2NsYXNzLCBQUk9QX1BST1hZX1VSSSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY19ib3hlZChTT1VQX1BST1hZX1JF
U09MVkVSX1dLX1BST1hZX1VSSSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiUHJveHkgVVJJIiwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVGhlIEhUVFAgUHJveHkgdG8gdXNlIiwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBT
T1VQX1RZUEVfVVJJLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHN0YXRpY19jYXN0PEdQYXJhbUZsYWdzPihHX1BBUkFNX1JFQURXUklURSkp
KTsKLQotICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkob2JqZWN0X2NsYXNzLCBQ
Uk9QX05PX1BST1hZLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ19wYXJh
bV9zcGVjX3N0cmluZyhTT1VQX1BST1hZX1JFU09MVkVSX1dLX05PX1BST1hZLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJQcm94eSBleGNl
cHRpb25zIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiQ29tbWEtc2VwYXJhdGVkIHByb3h5IGV4Y2VwdGlvbnMiLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHROb1Byb3h5
VmFsdWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc3RhdGljX2Nhc3Q8R1BhcmFtRmxhZ3M+KEdfUEFSQU1fUkVBRFdSSVRFKSkpOwotfQot
Ci1zdGF0aWMgdm9pZCBzb3VwX3Byb3h5X3Jlc29sdmVyX3drX2ludGVyZmFjZV9pbml0KFNvdXBQ
cm94eVVSSVJlc29sdmVySW50ZXJmYWNlKiBwcm94eV91cmlfcmVzb2x2ZXJfaW50ZXJmYWNlKQot
ewotICAgIHByb3h5X3VyaV9yZXNvbHZlcl9pbnRlcmZhY2UtPmdldF9wcm94eV91cmlfYXN5bmMg
PSBzb3VwUHJveHlSZXNvbHZlcldrR2V0UHJveHlVUklBc3luYzsKLSAgICBwcm94eV91cmlfcmVz
b2x2ZXJfaW50ZXJmYWNlLT5nZXRfcHJveHlfdXJpX3N5bmMgPSBzb3VwUHJveHlSZXNvbHZlcldr
R2V0UHJveHlVUklTeW5jOwotfQotCi1Tb3VwUHJveHlVUklSZXNvbHZlciogc291cFByb3h5UmVz
b2x2ZXJXa05ldyhjb25zdCBjaGFyKiBodHRwUHJveHksIGNvbnN0IGNoYXIqIG5vUHJveHkpCi17
Ci0gICAgU291cFVSSSogcHJveHlVUkkgPSBzb3VwX3VyaV9uZXcoaHR0cFByb3h5KTsKLSAgICBT
b3VwUHJveHlVUklSZXNvbHZlciogcmVzb2x2ZXIgPSBTT1VQX1BST1hZX1VSSV9SRVNPTFZFUihn
X29iamVjdF9uZXcoU09VUF9UWVBFX1BST1hZX1JFU09MVkVSX1dLLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBTT1VQX1BST1hZX1JFU09MVkVSX1dLX1BST1hZX1VSSSwgcHJveHlVUkksCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFNPVVBfUFJPWFlfUkVTT0xWRVJfV0tfTk9fUFJPWFksIG5vUHJveHkgPyBub1Byb3h5
IDogZGVmYXVsdE5vUHJveHlWYWx1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCkpOwotICAgIHNvdXBf
dXJpX2ZyZWUocHJveHlVUkkpOwotCi0gICAgcmV0dXJuIHJlc29sdmVyOwotfQotCi0jZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Qcm94eVJl
c29sdmVyU291cC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Byb3h5
UmVzb2x2ZXJTb3VwLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFmZGVkNTM4YTFm
ZjEzNTQ3NGY5ZWM1NGM0OGZjZTMxNmE3ODMxZmIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3Vw
L1Byb3h5UmVzb2x2ZXJTb3VwLmgKKysrIC9kZXYvbnVsbApAQCAtMSw1NyArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFByb3h5UmVzb2x2ZXJTb3VwX2gKLSNkZWZpbmUgUHJv
eHlSZXNvbHZlclNvdXBfaAotCi0jaW5jbHVkZSA8bGlic291cC9zb3VwLmg+Ci0KLUdfQkVHSU5f
REVDTFMKLQotI2RlZmluZSBTT1VQX1RZUEVfUFJPWFlfUkVTT0xWRVJfV0sgICAgICAgICAgICAg
ICAoc291cF9wcm94eV9yZXNvbHZlcl93a19nZXRfdHlwZSAoKSkKLSNkZWZpbmUgU09VUF9QUk9Y
WV9SRVNPTFZFUl9XSyhvYmplY3QpICAgICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9D
QVNUICgob2JqZWN0KSwgU09VUF9UWVBFX1BST1hZX1JFU09MVkVSX1dLLCBTb3VwUHJveHlSZXNv
bHZlcldrKSkKLSNkZWZpbmUgU09VUF9QUk9YWV9SRVNPTFZFUl9XS19DTEFTUyhrbGFzcykgICAg
ICAgKEdfVFlQRV9DSEVDS19DTEFTU19DQVNUICgoa2xhc3MpLCBTT1VQX1RZUEVfUFJPWFlfUkVT
T0xWRVJfV0ssIFNvdXBQcm94eVJlc29sdmVyV2tDbGFzcykpCi0jZGVmaW5lIFNPVVBfSVNfUFJP
WFlfUkVTT0xWRVJfV0sob2JqZWN0KSAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQ
RSAoKG9iamVjdCksIFNPVVBfVFlQRV9QUk9YWV9SRVNPTFZFUl9XSykpCi0jZGVmaW5lIFNPVVBf
SVNfUFJPWFlfUkVTT0xWRVJfV0tfQ0xBU1Moa2xhc3MpICAgIChHX1RZUEVfQ0hFQ0tfQ0xBU1Nf
VFlQRSAoKGtsYXNzKSwgU09VUF9UWVBFX1BST1hZX1JFU09MVkVSX1dLKSkKLSNkZWZpbmUgU09V
UF9QUk9YWV9SRVNPTFZFUl9XS19HRVRfQ0xBU1Mob2JqKSAgICAgKEdfVFlQRV9JTlNUQU5DRV9H
RVRfQ0xBU1MgKChvYmopLCBTT1VQX1RZUEVfUFJPWFlfUkVTT0xWRVJfV0ssIFNvdXBQcm94eVJl
c29sdmVyV2tDbGFzcykpCi0KLXN0YXRpYyBjb25zdCBjaGFyIFNPVVBfUFJPWFlfUkVTT0xWRVJf
V0tfUFJPWFlfVVJJW10gPSAicHJveHktdXJpIjsKLXN0YXRpYyBjb25zdCBjaGFyIFNPVVBfUFJP
WFlfUkVTT0xWRVJfV0tfTk9fUFJPWFlbXSA9ICJuby1wcm94eSI7Ci0KLXR5cGVkZWYgc3RydWN0
IHsKLSAgICBHT2JqZWN0IHBhcmVudDsKLX0gU291cFByb3h5UmVzb2x2ZXJXazsKLQotdHlwZWRl
ZiBzdHJ1Y3QgewotICAgIEdPYmplY3RDbGFzcyBwYXJlbnRfY2xhc3M7Ci19IFNvdXBQcm94eVJl
c29sdmVyV2tDbGFzczsKLQotR1R5cGUgc291cF9wcm94eV9yZXNvbHZlcl93a19nZXRfdHlwZSh2
b2lkKTsKLQotU291cFByb3h5VVJJUmVzb2x2ZXIqIHNvdXBQcm94eVJlc29sdmVyV2tOZXcoY29u
c3QgY2hhciogaHR0cFByb3h5LCBjb25zdCBjaGFyKiBub1Byb3h5KTsKLQotR19FTkRfREVDTFMK
LQotI2VuZGlmIC8vIFByb3h5UmVzb2x2ZXJTb3VwX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwTmV0d29ya1Nlc3Npb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5jcHAKaW5k
ZXggNDhlNTIxZDU1NTJkOTMxMTQ1ZTE0NzhjYjIzYWNjMDlkODY5NWQ2Ni4uNGE3MzFhZmRjMTI3
YWViYzgxOTg1MzQ2MTRmYTQ4NzhjYWZjOGMzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5jcHAKQEAg
LTQwLDEwICs0MCw2IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAotI2lmIFBMQVRGT1JNKEVGTCkKLSNpbmNsdWRl
ICJQcm94eVJlc29sdmVyU291cC5oIgotI2VuZGlmCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
I2lmICFMT0dfRElTQUJMRUQKQEAgLTIyNSwzNiArMjIxLDI0IEBAIFNvdXBOZXR3b3JrU2Vzc2lv
bjo6U1NMUG9saWN5IFNvdXBOZXR3b3JrU2Vzc2lvbjo6c3NsUG9saWN5KCkgY29uc3QKIHZvaWQg
U291cE5ldHdvcmtTZXNzaW9uOjpzZXRIVFRQUHJveHkoY29uc3QgY2hhciogaHR0cFByb3h5LCBj
b25zdCBjaGFyKiBodHRwUHJveHlFeGNlcHRpb25zKQogewogI2lmIFBMQVRGT1JNKEVGTCkKLSAg
ICAvLyBPbmx5IGZvciBFRkwgYmVjYXVzZSBHVEsgcG9ydCB1c2VzIHRoZSBkZWZhdWx0IHJlc29s
dmVyLCB3aGljaCB1c2VzIEdJTydzIHByb3h5IHJlc29sdmVyLgotICAgIGlmICghaHR0cFByb3h5
KSB7Ci0gICAgICAgIHNvdXBfc2Vzc2lvbl9yZW1vdmVfZmVhdHVyZV9ieV90eXBlKG1fc291cFNl
c3Npb24uZ2V0KCksIFNPVVBfVFlQRV9QUk9YWV9VUklfUkVTT0xWRVIpOwotICAgICAgICByZXR1
cm47CisgICAgR1Byb3h5UmVzb2x2ZXIqIHJlc29sdmVyID0gbnVsbHB0cjsKKyAgICBpZiAoaHR0
cFByb3h5KSB7CisgICAgICAgIGdjaGFyKiogaWdub3JlTGlzdHMgPSBudWxscHRyOworICAgICAg
ICBpZiAoaHR0cFByb3h5RXhjZXB0aW9ucykKKyAgICAgICAgICAgIGlnbm9yZUxpc3RzID0gIGdf
c3Ryc3BsaXQoaHR0cFByb3h5RXhjZXB0aW9ucywgIiwiLCAtMSk7CisKKyAgICAgICAgcmVzb2x2
ZXIgPSBnX3NpbXBsZV9wcm94eV9yZXNvbHZlcl9uZXcoaHR0cFByb3h5LCBpZ25vcmVMaXN0cyk7
CisKKyAgICAgICAgZ19zdHJmcmVldihpZ25vcmVMaXN0cyk7CiAgICAgfQogCi0gICAgR1JlZlB0
cjxTb3VwUHJveHlVUklSZXNvbHZlcj4gcmVzb2x2ZXIgPSBhZG9wdEdSZWYoc291cFByb3h5UmVz
b2x2ZXJXa05ldyhodHRwUHJveHksIGh0dHBQcm94eUV4Y2VwdGlvbnMpKTsKLSAgICBzb3VwX3Nl
c3Npb25fYWRkX2ZlYXR1cmUobV9zb3VwU2Vzc2lvbi5nZXQoKSwgU09VUF9TRVNTSU9OX0ZFQVRV
UkUocmVzb2x2ZXIuZ2V0KCkpKTsKKyAgICBnX29iamVjdF9zZXQobV9zb3VwU2Vzc2lvbi5nZXQo
KSwgU09VUF9TRVNTSU9OX1BST1hZX1JFU09MVkVSLCByZXNvbHZlciwgbnVsbHB0cik7CiAjZWxz
ZQogICAgIFVOVVNFRF9QQVJBTShodHRwUHJveHkpOwogICAgIFVOVVNFRF9QQVJBTShodHRwUHJv
eHlFeGNlcHRpb25zKTsKICNlbmRpZgogfQogCi1jaGFyKiBTb3VwTmV0d29ya1Nlc3Npb246Omh0
dHBQcm94eSgpIGNvbnN0Ci17Ci0jaWYgUExBVEZPUk0oRUZMKQotICAgIFNvdXBTZXNzaW9uRmVh
dHVyZSogc291cFJlc29sdmVyID0gc291cF9zZXNzaW9uX2dldF9mZWF0dXJlKG1fc291cFNlc3Np
b24uZ2V0KCksIFNPVVBfVFlQRV9QUk9YWV9VUklfUkVTT0xWRVIpOwotICAgIGlmICghc291cFJl
c29sdmVyKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIEdVbmlxdWVPdXRQdHI8U291
cFVSST4gdXJpOwotICAgIGdfb2JqZWN0X2dldChzb3VwUmVzb2x2ZXIsIFNPVVBfUFJPWFlfUkVT
T0xWRVJfV0tfUFJPWFlfVVJJLCAmdXJpLm91dFB0cigpLCBudWxscHRyKTsKLQotICAgIHJldHVy
biB1cmkgPyBzb3VwX3VyaV90b19zdHJpbmcodXJpLmdldCgpLCBGQUxTRSkgOiBudWxscHRyOwot
I2Vsc2UKLSAgICByZXR1cm4gbnVsbHB0cjsKLSNlbmRpZgotfQotCiB2b2lkIFNvdXBOZXR3b3Jr
U2Vzc2lvbjo6c2V0dXBIVFRQUHJveHlGcm9tRW52aXJvbm1lbnQoKQogewogI2lmIFBMQVRGT1JN
KEVGTCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9T
b3VwTmV0d29ya1Nlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291
cC9Tb3VwTmV0d29ya1Nlc3Npb24uaAppbmRleCA3OTY5MjdkYTc0NTA0Yzk3MDUzZWZjYTU4NWI0
YzA2ZjUxYTE0NzIwLi44OTM0NTVhNmMyZWFkMDZlY2VkMTMyMTY5ZjI3NDIyMmVkODM5YmVmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291cE5ldHdv
cmtTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Nv
dXBOZXR3b3JrU2Vzc2lvbi5oCkBAIC02NSw4ICs2NSw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHNl
dFNTTFBvbGljeShTU0xQb2xpY3kpOwogICAgIFNTTFBvbGljeSBzc2xQb2xpY3koKSBjb25zdDsK
IAotICAgIHZvaWQgc2V0SFRUUFByb3h5KGNvbnN0IGNoYXIqIGh0dHBQcm94eSwgY29uc3QgY2hh
ciogaHR0cFByb3h5RXhjZXB0aW9ucyk7Ci0gICAgY2hhciogaHR0cFByb3h5KCkgY29uc3Q7CiAg
ICAgdm9pZCBzZXR1cEhUVFBQcm94eUZyb21FbnZpcm9ubWVudCgpOwogCiAgICAgdm9pZCBzZXRB
Y2NlcHRMYW5ndWFnZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mKTsKQEAgLTc1LDYgKzczLDggQEAg
cHJpdmF0ZToKICAgICBTb3VwTmV0d29ya1Nlc3Npb24oU291cENvb2tpZUphciopOwogICAgIFNv
dXBOZXR3b3JrU2Vzc2lvbihTb3VwU2Vzc2lvbiopOwogCisgICAgdm9pZCBzZXRIVFRQUHJveHko
Y29uc3QgY2hhciogaHR0cFByb3h5LCBjb25zdCBjaGFyKiBodHRwUHJveHlFeGNlcHRpb25zKTsK
KwogICAgIHZvaWQgc2V0dXBMb2dnZXIoKTsKIAogICAgIEdSZWZQdHI8U291cFNlc3Npb24+IG1f
c291cFNlc3Npb247Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>253413</attachid>
            <date>2015-05-19 17:52:15 -0700</date>
            <delta_ts>2015-05-19 19:46:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-145154-20150520095209.patch</filename>
            <type>text/plain</type>
            <size>20170</size>
            <attacher name="Ryuan Choi">ryuan.choi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg0NjAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWI5Mzk4N2M4NDM3Nzdk
NmVmNTRjYjU2NzBhZjZjNTBmNThlODE5Ni4uM2I0ODMyZDg4ZDA5OTNlNGYzNTFkNDA0N2FjOTQz
MzA2NWY4YjIzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDE1LTA1LTE5ICBSeXVh
biBDaG9pICA8cnl1YW4uY2hvaUBuYXZlcmNvcnAuY29tPgorCisgICAgICAgIFtFRkxdIFVzZSBH
U2ltcGxlUHJveHlSZXNvbHZlciBpbnN0ZWFkIG9mIGN1c3RvbSBTb3VwUHJveHlSZXNvbHZlcgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ1MTU0CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU291cFByb3h5
UmVzb2x2ZXIgd2FzIGRlcHJlY2F0ZWQgc2luY2UgbGlic291cCAyLjQyLgorICAgICAgICBTbywg
dGhpcyBwYXRjaCByZWZhY3RvcnMgdGhlIGN1c3RvbSBTb3VwUHJveHlSZXNvbHZlciB0byBHU2lt
cGxlUHJveHlSZXNvbHZlcgorICAgICAgICB3aGljaCBwcm92aWRlcyBzYW1lIGZ1bmN0aW9uYWxp
dHkgaW4gZ2lvLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgYmVjYXVzZSB0aGVyZSBpcyBub3Qg
YmVoYXZpb3IgY2hhbmdlLgorCisgICAgICAgICogUGxhdGZvcm1FZmwuY21ha2U6CisgICAgICAg
ICogV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnZj
eHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnM6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9zb3VwL1Byb3h5UmVzb2x2ZXJTb3VwLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9uZXR3b3JrL3NvdXAvUHJveHlSZXNvbHZlclNvdXAuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291cE5ldHdvcmtTZXNzaW9uLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNvdXBOZXR3b3JrU2Vzc2lvbjo6c2V0SFRUUFByb3h5KTogTW92ZWQgdG8gcHJpdmF0
ZSBtZW1iZXIuCisgICAgICAgIChXZWJDb3JlOjpTb3VwTmV0d29ya1Nlc3Npb246Omh0dHBQcm94
eSk6IERlbGV0ZWQgYmVjYXVzZSBub2JvZHkgY2FsbHMgaXQuCisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5oOgorCiAyMDE1LTA1LTE5ICBSb2dlciBG
b25nICA8cm9nZXJfZm9uZ0BhcHBsZS5jb20+CiAKICAgICAgICAgVXBwZXIgaGFsZiBvZiB2b2x1
bWUgY29udHJvbCBzaG91bGQgYmUgZmlsbGVkLCBub3QgaG9sbG93LgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvUGxhdGZvcm1FZmwuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVm
bC5jbWFrZQppbmRleCA2OTFhNTk3YjJlYmI2ZDQwMWMzYzE3YTA1YTExZmI3ODY2NTBlOGY3Li5k
OGI5Mjk1MTY3ZTYyZmRiOGNkMjcwNzRhOWM1ODA3ZmU2MjA2ZjA4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9y
bUVmbC5jbWFrZQpAQCAtMjMyLDcgKzIzMiw2IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNF
UwogICAgIHBsYXRmb3JtL25ldHdvcmsvc291cC9DcmVkZW50aWFsU3RvcmFnZVNvdXAuY3BwCiAg
ICAgcGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1NvdXAuY3BwCiAgICAgcGxhdGZvcm0vbmV0d29y
ay9zb3VwL05ldHdvcmtTdG9yYWdlU2Vzc2lvblNvdXAuY3BwCi0gICAgcGxhdGZvcm0vbmV0d29y
ay9zb3VwL1Byb3h5UmVzb2x2ZXJTb3VwLmNwcAogICAgIHBsYXRmb3JtL25ldHdvcmsvc291cC9Q
cm94eVNlcnZlclNvdXAuY3BwCiAgICAgcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlRXJy
b3JTb3VwLmNwcAogICAgIHBsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUhhbmRsZVNvdXAu
Y3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52
Y3hwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagpp
bmRleCBjMWU3NDk2ZWNhOGM3ZWU0NDZlNWY4ZDY5ZDI4N2NiZWQ5YjcwZmM0Li43ODQyZGUwMjQ1
YWZlZGNjNTZkOTNmYzdiMGJiNWYwZDU4ZGI4YzIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oKQEAgLTc5MTMsMTYgKzc5MTMsNiBAQAogICAg
ICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0
Zm9ybSknPT0nUHJvZHVjdGlvbnxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgogICAg
ICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0
Zm9ybSknPT0nUHJvZHVjdGlvbnx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KICAgICA8
L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXG5ldHdvcmtc
c291cFxQcm94eVJlc29sdmVyU291cC5jcHAiPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENv
bmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj50
cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRp
b249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPnRydWU8L0V4
Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQo
Q29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdTdWZmaXh8V2luMzInIj50cnVlPC9F
eGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249Iick
KENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnU3VmZml4fHg2NCciPnRydWU8L0V4
Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQo
Q29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPnRydWU8L0V4Y2x1
ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29u
ZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj50cnVlPC9FeGNsdWRlZEZy
b21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3Vy
YXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258V2luMzInIj50cnVlPC9FeGNsdWRlZEZy
b21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3Vy
YXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9t
QnVpbGQ+Ci0gICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0
Zm9ybVxuZXR3b3JrXHNvdXBcUHJveHlTZXJ2ZXJTb3VwLmNwcCI+CiAgICAgICA8RXhjbHVkZWRG
cm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1
Z3xXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1
aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0
JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CkBAIC0xOTg4MSw3ICsxOTg3MSw2IEBACiAgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxuZXR3b3JrXHNvdXBcQ2VydGlmaWNhdGVJ
bmZvLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxuZXR3b3JrXHNv
dXBcQ29va2llSmFyU291cC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZv
cm1cbmV0d29ya1xzb3VwXEdVbmlxdWVQdHJTb3VwLmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxwbGF0Zm9ybVxuZXR3b3JrXHNvdXBcUHJveHlSZXNvbHZlclNvdXAuaCIgLz4KICAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXG5ldHdvcmtcc291cFxSZXNvdXJjZUVy
cm9yLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxuZXR3b3JrXHNv
dXBcUmVzb3VyY2VSZXF1ZXN0LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0
Zm9ybVxuZXR3b3JrXHNvdXBcUmVzb3VyY2VSZXNwb25zZS5oIiAvPgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzCmluZGV4
IDEzZDE1N2EwZmE5MWNkZWIzZDgzNzE2YzZiMmI5MzcyOTRkYzgzMDIuLjc4ZmY1MTFlMjVhMWMz
OTgwYjQ4MDBlMDAyMjM4ZmQ3NDc5ZDU4YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycworKysgYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMKQEAgLTY4ODksOSArNjg4
OSw2IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxuZXR3b3JrXHNvdXBc
TmV0d29ya1N0b3JhZ2VTZXNzaW9uU291cC5jcHAiPgogICAgICAgPEZpbHRlcj5wbGF0Zm9ybVxu
ZXR3b3JrXHNvdXA8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9Ii4uXHBsYXRmb3JtXG5ldHdvcmtcc291cFxQcm94eVJlc29sdmVyU291cC5jcHAiPgot
ICAgICAgPEZpbHRlcj5wbGF0Zm9ybVxuZXR3b3JrXHNvdXA8L0ZpbHRlcj4KLSAgICA8L0NsQ29t
cGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXG5ldHdvcmtcc291cFxQ
cm94eVNlcnZlclNvdXAuY3BwIj4KICAgICAgIDxGaWx0ZXI+cGxhdGZvcm1cbmV0d29ya1xzb3Vw
PC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL3NvdXAvUHJveHlSZXNvbHZlclNvdXAuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Byb3h5UmVzb2x2ZXJTb3VwLmNwcApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggNTFjYzg2YjJjNmFmNmY5OTRkNjQ1NTI2ZDAyZmRjZTZjNTQz
MTZlOC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUHJveHlSZXNvbHZlclNvdXAuY3BwCisr
KyAvZGV2L251bGwKQEAgLTEsMjE1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIg
SW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNs
dWRlICJjb25maWcuaCIKLQotI2lmIFVTRShTT1VQKQotCi0jaW5jbHVkZSAiUHJveHlSZXNvbHZl
clNvdXAuaCIKLQotI2luY2x1ZGUgPGxpYnNvdXAvc291cC5oPgotI2luY2x1ZGUgPHN0cmluZy5o
PgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+
Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLXN0YXRpYyBjb25zdCBjaGFyIGRl
ZmF1bHROb1Byb3h5VmFsdWVbXSA9ICJsb2NhbGhvc3QsMTI3LjAuMC4xIjsKLQotdHlwZWRlZiBz
dHJ1Y3QgewotICAgIFNvdXBVUkkqIHByb3h5VVJJOwotICAgIENTdHJpbmcgbm9Qcm94eTsKLSAg
ICBWZWN0b3I8U3RyaW5nPiBwcm94eUV4Y2VwdGlvbnM7Ci19IFNvdXBQcm94eVJlc29sdmVyV2tQ
cml2YXRlOwotCi0jZGVmaW5lIFNPVVBfUFJPWFlfUkVTT0xWRVJfV0tfR0VUX1BSSVZBVEUobykg
KEdfVFlQRV9JTlNUQU5DRV9HRVRfUFJJVkFURSgobyksIFNPVVBfVFlQRV9QUk9YWV9SRVNPTFZF
Ul9XSywgU291cFByb3h5UmVzb2x2ZXJXa1ByaXZhdGUpKQotCi1zdGF0aWMgdm9pZCBzb3VwX3By
b3h5X3Jlc29sdmVyX3drX2ludGVyZmFjZV9pbml0KFNvdXBQcm94eVVSSVJlc29sdmVySW50ZXJm
YWNlKiBwcm94eVJlc29sdmVySW50ZXJmYWNlKTsKLQotR19ERUZJTkVfVFlQRV9FWFRFTkRFRChT
b3VwUHJveHlSZXNvbHZlcldrLCBzb3VwX3Byb3h5X3Jlc29sdmVyX3drLCBHX1RZUEVfT0JKRUNU
LCAwLAotICAgICAgICAgICAgICAgICAgICAgICBHX0lNUExFTUVOVF9JTlRFUkZBQ0UoU09VUF9U
WVBFX1NFU1NJT05fRkVBVFVSRSwgMCkKLSAgICAgICAgICAgICAgICAgICAgICAgR19JTVBMRU1F
TlRfSU5URVJGQUNFKFNPVVBfVFlQRV9QUk9YWV9VUklfUkVTT0xWRVIsIHNvdXBfcHJveHlfcmVz
b2x2ZXJfd2tfaW50ZXJmYWNlX2luaXQpKQotCi1lbnVtIHsKLSAgICBQUk9QXzAsCi0gICAgUFJP
UF9QUk9YWV9VUkksCi0gICAgUFJPUF9OT19QUk9YWSwKLSAgICBMQVNUX1BST1AKLX07Ci0KLXN0
YXRpYyB2b2lkIHNvdXBfcHJveHlfcmVzb2x2ZXJfd2tfaW5pdChTb3VwUHJveHlSZXNvbHZlcldr
KikKLXsKLX0KLQotc3RhdGljIHZvaWQgc291cFByb3h5UmVzb2x2ZXJXa0ZpbmFsaXplKEdPYmpl
Y3QqIG9iamVjdCkKLXsKLSAgICBTb3VwUHJveHlSZXNvbHZlcldrUHJpdmF0ZSogcHJpdiA9IFNP
VVBfUFJPWFlfUkVTT0xWRVJfV0tfR0VUX1BSSVZBVEUob2JqZWN0KTsKLQotICAgIGdfY2xlYXJf
cG9pbnRlcigmcHJpdi0+cHJveHlVUkksIHNvdXBfdXJpX2ZyZWUpOwotCi0gICAgR19PQkpFQ1Rf
Q0xBU1Moc291cF9wcm94eV9yZXNvbHZlcl93a19wYXJlbnRfY2xhc3MpLT5maW5hbGl6ZShvYmpl
Y3QpOwotfQotCi1zdGF0aWMgdm9pZCBzb3VwUHJveHlSZXNvbHZlcldrU2V0UHJvcGVydHkoR09i
amVjdCogb2JqZWN0LCB1bnNpZ25lZCBwcm9wSUQsIGNvbnN0IEdWYWx1ZSogdmFsdWUsIEdQYXJh
bVNwZWMqIHBzcGVjKQotewotICAgIFNvdXBQcm94eVJlc29sdmVyV2tQcml2YXRlKiBwcml2ID0g
U09VUF9QUk9YWV9SRVNPTFZFUl9XS19HRVRfUFJJVkFURShvYmplY3QpOwotCi0gICAgc3dpdGNo
IChwcm9wSUQpIHsKLSAgICBjYXNlIFBST1BfUFJPWFlfVVJJOiB7Ci0gICAgICAgIFNvdXBVUkkq
IHVyaSA9IHN0YXRpY19jYXN0PFNvdXBVUkkqPihnX3ZhbHVlX2dldF9ib3hlZCh2YWx1ZSkpOwot
ICAgICAgICBpZiAocHJpdi0+cHJveHlVUkkpCi0gICAgICAgICAgICBzb3VwX3VyaV9mcmVlKHBy
aXYtPnByb3h5VVJJKTsKLQotICAgICAgICBwcml2LT5wcm94eVVSSSA9IHVyaSA/IHNvdXBfdXJp
X2NvcHkodXJpKSA6IDA7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBjYXNlIFBST1BfTk9f
UFJPWFk6Ci0gICAgICAgIHByaXYtPm5vUHJveHkgPSBnX3ZhbHVlX2dldF9zdHJpbmcodmFsdWUp
OwotICAgICAgICBwcml2LT5wcm94eUV4Y2VwdGlvbnMuY2xlYXIoKTsKLSAgICAgICAgU3RyaW5n
Ojpmcm9tVVRGOChwcml2LT5ub1Byb3h5LmRhdGEoKSkucmVwbGFjZVdpdGhMaXRlcmFsKCcgJywg
IiIpLnNwbGl0KCcsJywgcHJpdi0+cHJveHlFeGNlcHRpb25zKTsKLSAgICAgICAgYnJlYWs7Ci0g
ICAgZGVmYXVsdDoKLSAgICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEKG9i
amVjdCwgcHJvcElELCBwc3BlYyk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLX0KLQotc3RhdGlj
IHZvaWQgc291cFByb3h5UmVzb2x2ZXJXa0dldFByb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgdW5z
aWduZWQgcHJvcElELCBHVmFsdWUqIHZhbHVlLCBHUGFyYW1TcGVjKiBwc3BlYykKLXsKLSAgICBT
b3VwUHJveHlSZXNvbHZlcldrUHJpdmF0ZSogcHJpdiA9IFNPVVBfUFJPWFlfUkVTT0xWRVJfV0tf
R0VUX1BSSVZBVEUob2JqZWN0KTsKLQotICAgIHN3aXRjaCAocHJvcElEKSB7Ci0gICAgY2FzZSBQ
Uk9QX1BST1hZX1VSSToKLSAgICAgICAgZ192YWx1ZV9zZXRfYm94ZWQodmFsdWUsIHByaXYtPnBy
b3h5VVJJKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQUk9QX05PX1BST1hZOgotICAgICAg
ICBnX3ZhbHVlX3NldF9zdHJpbmcodmFsdWUsIHByaXYtPm5vUHJveHkuZGF0YSgpKTsKLSAgICAg
ICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BS
T1BFUlRZX0lEKG9iamVjdCwgcHJvcElELCBwc3BlYyk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0K
LX0KLQotc3RhdGljIGJvb2wgc2hvdWxkQnlwYXNzUHJveHkoU291cFByb3h5UmVzb2x2ZXJXa1By
aXZhdGUqIHByaXYsIFNvdXBVUkkqIHVyaSkKLXsKLSAgICBjb25zdCBzaXplX3QgZXhjZXB0aW9u
Q291bnQgPSBwcml2LT5wcm94eUV4Y2VwdGlvbnMuc2l6ZSgpOwotICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgZXhjZXB0aW9uQ291bnQ7ICsraSkgewotICAgICAgICBpZiAoU3RyaW5nOjpmcm9t
VVRGOCh1cmktPmhvc3QpLmVuZHNXaXRoKHByaXYtPnByb3h5RXhjZXB0aW9uc1tpXSwgZmFsc2Up
KQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgcmV0dXJuIGZhbHNlOwot
fQotCi10eXBlZGVmIHN0cnVjdCB7Ci0gICAgU291cFByb3h5VVJJUmVzb2x2ZXIqIHByb3h5UmVz
b2x2ZXI7Ci0gICAgU291cFVSSSogdXJpOwotICAgIFNvdXBQcm94eVVSSVJlc29sdmVyQ2FsbGJh
Y2sgY2FsbGJhY2s7Ci0gICAgdm9pZCogdXNlckRhdGE7Ci19IFNvdXBXa0FzeW5jRGF0YTsKLQot
c3RhdGljIGdib29sZWFuIGlkbGVfcmV0dXJuX3Byb3h5X3VyaSh2b2lkKiBkYXRhKQotewotICAg
IFNvdXBXa0FzeW5jRGF0YSogc3NhZCA9IHN0YXRpY19jYXN0PFNvdXBXa0FzeW5jRGF0YSo+KGRh
dGEpOwotICAgIFNvdXBQcm94eVJlc29sdmVyV2tQcml2YXRlKiBwcml2ID0gU09VUF9QUk9YWV9S
RVNPTFZFUl9XS19HRVRfUFJJVkFURShzc2FkLT5wcm94eVJlc29sdmVyKTsKLQotICAgIFNvdXBV
UkkqIHByb3h5VVJJID0gMDsKLSAgICBpZiAoIXNob3VsZEJ5cGFzc1Byb3h5KHByaXYsIHNzYWQt
PnVyaSkpCi0gICAgICAgIHByb3h5VVJJID0gcHJpdi0+cHJveHlVUkk7Ci0KLSAgICBzc2FkLT5j
YWxsYmFjayhzc2FkLT5wcm94eVJlc29sdmVyLCBTT1VQX1NUQVRVU19PSywgcHJveHlVUkksIHNz
YWQtPnVzZXJEYXRhKTsKLSAgICBnX29iamVjdF91bnJlZihzc2FkLT5wcm94eVJlc29sdmVyKTsK
LSAgICBzb3VwX3VyaV9mcmVlKHNzYWQtPnVyaSk7Ci0gICAgZ19zbGljZV9mcmVlKFNvdXBXa0Fz
eW5jRGF0YSwgc3NhZCk7Ci0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLXN0YXRpYyB2b2lkIHNv
dXBQcm94eVJlc29sdmVyV2tHZXRQcm94eVVSSUFzeW5jKFNvdXBQcm94eVVSSVJlc29sdmVyKiBw
cm94eVJlc29sdmVyLCBTb3VwVVJJKiB1cmksIEdNYWluQ29udGV4dCogYXN5bmNDb250ZXh0LCBH
Q2FuY2VsbGFibGUqLCBTb3VwUHJveHlVUklSZXNvbHZlckNhbGxiYWNrIGNhbGxiYWNrLCB2b2lk
KiB1c2VyRGF0YSkKLXsKLSAgICBTb3VwV2tBc3luY0RhdGEqIHNzYWQ7Ci0KLSAgICBzc2FkID0g
Z19zbGljZV9uZXcwKFNvdXBXa0FzeW5jRGF0YSk7Ci0gICAgc3NhZC0+cHJveHlSZXNvbHZlciA9
IFNPVVBfUFJPWFlfVVJJX1JFU09MVkVSKGdfb2JqZWN0X3JlZihwcm94eVJlc29sdmVyKSk7Ci0g
ICAgc3NhZC0+dXJpID0gc291cF91cmlfY29weSh1cmkpOwotICAgIHNzYWQtPmNhbGxiYWNrID0g
Y2FsbGJhY2s7Ci0gICAgc3NhZC0+dXNlckRhdGEgPSB1c2VyRGF0YTsKLSAgICBzb3VwX2FkZF9j
b21wbGV0aW9uKGFzeW5jQ29udGV4dCwgaWRsZV9yZXR1cm5fcHJveHlfdXJpLCBzc2FkKTsKLX0K
LQotc3RhdGljIHVuc2lnbmVkIHNvdXBQcm94eVJlc29sdmVyV2tHZXRQcm94eVVSSVN5bmMoU291
cFByb3h5VVJJUmVzb2x2ZXIqIHByb3h5UmVzb2x2ZXIsIFNvdXBVUkkqIHVyaSwgR0NhbmNlbGxh
YmxlKiwgU291cFVSSSoqIHByb3h5VVJJKQotewotICAgIFNvdXBQcm94eVJlc29sdmVyV2tQcml2
YXRlKiBwcml2ID0gU09VUF9QUk9YWV9SRVNPTFZFUl9XS19HRVRfUFJJVkFURShwcm94eVJlc29s
dmVyKTsKLQotICAgIGlmICghc2hvdWxkQnlwYXNzUHJveHkocHJpdiwgdXJpKSkKLSAgICAgICAg
KnByb3h5VVJJID0gc291cF91cmlfY29weShwcml2LT5wcm94eVVSSSk7Ci0KLSAgICByZXR1cm4g
U09VUF9TVEFUVVNfT0s7Ci19Ci0KLXN0YXRpYyB2b2lkIHNvdXBfcHJveHlfcmVzb2x2ZXJfd2tf
Y2xhc3NfaW5pdChTb3VwUHJveHlSZXNvbHZlcldrQ2xhc3MqIHdrQ2xhc3MpCi17Ci0gICAgR09i
amVjdENsYXNzKiBvYmplY3RfY2xhc3MgPSBHX09CSkVDVF9DTEFTUyh3a0NsYXNzKTsKLQotICAg
IGdfdHlwZV9jbGFzc19hZGRfcHJpdmF0ZSh3a0NsYXNzLCBzaXplb2YoU291cFByb3h5UmVzb2x2
ZXJXa1ByaXZhdGUpKTsKLQotICAgIG9iamVjdF9jbGFzcy0+c2V0X3Byb3BlcnR5ID0gc291cFBy
b3h5UmVzb2x2ZXJXa1NldFByb3BlcnR5OwotICAgIG9iamVjdF9jbGFzcy0+Z2V0X3Byb3BlcnR5
ID0gc291cFByb3h5UmVzb2x2ZXJXa0dldFByb3BlcnR5OwotICAgIG9iamVjdF9jbGFzcy0+Zmlu
YWxpemUgPSBzb3VwUHJveHlSZXNvbHZlcldrRmluYWxpemU7Ci0KLSAgICBnX29iamVjdF9jbGFz
c19pbnN0YWxsX3Byb3BlcnR5KG9iamVjdF9jbGFzcywgUFJPUF9QUk9YWV9VUkksCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnX3BhcmFtX3NwZWNfYm94ZWQoU09VUF9QUk9Y
WV9SRVNPTFZFUl9XS19QUk9YWV9VUkksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIlByb3h5IFVSSSIsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlRoZSBIVFRQIFByb3h5IHRvIHVz
ZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgU09VUF9UWVBFX1VSSSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxHUGFyYW1GbGFncz4oR19QQVJBTV9SRUFEV1JJ
VEUpKSk7Ci0KLSAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KG9iamVjdF9jbGFz
cywgUFJPUF9OT19QUk9YWSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdf
cGFyYW1fc3BlY19zdHJpbmcoU09VUF9QUk9YWV9SRVNPTFZFUl9XS19OT19QUk9YWSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUHJveHkg
ZXhjZXB0aW9ucyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIkNvbW1hLXNlcGFyYXRlZCBwcm94eSBleGNlcHRpb25zIiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0Tm9Q
cm94eVZhbHVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHN0YXRpY19jYXN0PEdQYXJhbUZsYWdzPihHX1BBUkFNX1JFQURXUklURSkpKTsK
LX0KLQotc3RhdGljIHZvaWQgc291cF9wcm94eV9yZXNvbHZlcl93a19pbnRlcmZhY2VfaW5pdChT
b3VwUHJveHlVUklSZXNvbHZlckludGVyZmFjZSogcHJveHlfdXJpX3Jlc29sdmVyX2ludGVyZmFj
ZSkKLXsKLSAgICBwcm94eV91cmlfcmVzb2x2ZXJfaW50ZXJmYWNlLT5nZXRfcHJveHlfdXJpX2Fz
eW5jID0gc291cFByb3h5UmVzb2x2ZXJXa0dldFByb3h5VVJJQXN5bmM7Ci0gICAgcHJveHlfdXJp
X3Jlc29sdmVyX2ludGVyZmFjZS0+Z2V0X3Byb3h5X3VyaV9zeW5jID0gc291cFByb3h5UmVzb2x2
ZXJXa0dldFByb3h5VVJJU3luYzsKLX0KLQotU291cFByb3h5VVJJUmVzb2x2ZXIqIHNvdXBQcm94
eVJlc29sdmVyV2tOZXcoY29uc3QgY2hhciogaHR0cFByb3h5LCBjb25zdCBjaGFyKiBub1Byb3h5
KQotewotICAgIFNvdXBVUkkqIHByb3h5VVJJID0gc291cF91cmlfbmV3KGh0dHBQcm94eSk7Ci0g
ICAgU291cFByb3h5VVJJUmVzb2x2ZXIqIHJlc29sdmVyID0gU09VUF9QUk9YWV9VUklfUkVTT0xW
RVIoZ19vYmplY3RfbmV3KFNPVVBfVFlQRV9QUk9YWV9SRVNPTFZFUl9XSywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgU09VUF9QUk9YWV9SRVNPTFZFUl9XS19QUk9YWV9VUkksIHByb3h5VVJJLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBTT1VQX1BST1hZX1JFU09MVkVSX1dLX05PX1BST1hZLCBub1Byb3h5ID8gbm9Q
cm94eSA6IGRlZmF1bHROb1Byb3h5VmFsdWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDApKTsKLSAgICBz
b3VwX3VyaV9mcmVlKHByb3h5VVJJKTsKLQotICAgIHJldHVybiByZXNvbHZlcjsKLX0KLQotI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUHJv
eHlSZXNvbHZlclNvdXAuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Q
cm94eVJlc29sdmVyU291cC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZmRlZDUz
OGExZmYxMzU0NzRmOWVjNTRjNDhmY2UzMTZhNzgzMWZiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
c291cC9Qcm94eVJlc29sdmVyU291cC5oCisrKyAvZGV2L251bGwKQEAgLTEsNTcgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgot
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBQcm94eVJlc29sdmVyU291cF9oCi0jZGVmaW5l
IFByb3h5UmVzb2x2ZXJTb3VwX2gKLQotI2luY2x1ZGUgPGxpYnNvdXAvc291cC5oPgotCi1HX0JF
R0lOX0RFQ0xTCi0KLSNkZWZpbmUgU09VUF9UWVBFX1BST1hZX1JFU09MVkVSX1dLICAgICAgICAg
ICAgICAgKHNvdXBfcHJveHlfcmVzb2x2ZXJfd2tfZ2V0X3R5cGUgKCkpCi0jZGVmaW5lIFNPVVBf
UFJPWFlfUkVTT0xWRVJfV0sob2JqZWN0KSAgICAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFO
Q0VfQ0FTVCAoKG9iamVjdCksIFNPVVBfVFlQRV9QUk9YWV9SRVNPTFZFUl9XSywgU291cFByb3h5
UmVzb2x2ZXJXaykpCi0jZGVmaW5lIFNPVVBfUFJPWFlfUkVTT0xWRVJfV0tfQ0xBU1Moa2xhc3Mp
ICAgICAgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfQ0FTVCAoKGtsYXNzKSwgU09VUF9UWVBFX1BST1hZ
X1JFU09MVkVSX1dLLCBTb3VwUHJveHlSZXNvbHZlcldrQ2xhc3MpKQotI2RlZmluZSBTT1VQX0lT
X1BST1hZX1JFU09MVkVSX1dLKG9iamVjdCkgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNF
X1RZUEUgKChvYmplY3QpLCBTT1VQX1RZUEVfUFJPWFlfUkVTT0xWRVJfV0spKQotI2RlZmluZSBT
T1VQX0lTX1BST1hZX1JFU09MVkVSX1dLX0NMQVNTKGtsYXNzKSAgICAoR19UWVBFX0NIRUNLX0NM
QVNTX1RZUEUgKChrbGFzcyksIFNPVVBfVFlQRV9QUk9YWV9SRVNPTFZFUl9XSykpCi0jZGVmaW5l
IFNPVVBfUFJPWFlfUkVTT0xWRVJfV0tfR0VUX0NMQVNTKG9iaikgICAgIChHX1RZUEVfSU5TVEFO
Q0VfR0VUX0NMQVNTICgob2JqKSwgU09VUF9UWVBFX1BST1hZX1JFU09MVkVSX1dLLCBTb3VwUHJv
eHlSZXNvbHZlcldrQ2xhc3MpKQotCi1zdGF0aWMgY29uc3QgY2hhciBTT1VQX1BST1hZX1JFU09M
VkVSX1dLX1BST1hZX1VSSVtdID0gInByb3h5LXVyaSI7Ci1zdGF0aWMgY29uc3QgY2hhciBTT1VQ
X1BST1hZX1JFU09MVkVSX1dLX05PX1BST1hZW10gPSAibm8tcHJveHkiOwotCi10eXBlZGVmIHN0
cnVjdCB7Ci0gICAgR09iamVjdCBwYXJlbnQ7Ci19IFNvdXBQcm94eVJlc29sdmVyV2s7Ci0KLXR5
cGVkZWYgc3RydWN0IHsKLSAgICBHT2JqZWN0Q2xhc3MgcGFyZW50X2NsYXNzOwotfSBTb3VwUHJv
eHlSZXNvbHZlcldrQ2xhc3M7Ci0KLUdUeXBlIHNvdXBfcHJveHlfcmVzb2x2ZXJfd2tfZ2V0X3R5
cGUodm9pZCk7Ci0KLVNvdXBQcm94eVVSSVJlc29sdmVyKiBzb3VwUHJveHlSZXNvbHZlcldrTmV3
KGNvbnN0IGNoYXIqIGh0dHBQcm94eSwgY29uc3QgY2hhciogbm9Qcm94eSk7Ci0KLUdfRU5EX0RF
Q0xTCi0KLSNlbmRpZiAvLyBQcm94eVJlc29sdmVyU291cF9oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291cE5ldHdvcmtTZXNzaW9uLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwTmV0d29ya1Nlc3Npb24uY3Bw
CmluZGV4IDQ4ZTUyMWQ1NTUyZDkzMTE0NWUxNDc4Y2IyM2FjYzA5ZDg2OTVkNjYuLjI1ZWNiZDkx
MDc4M2VmZWNkZDFhZGFjMTJkZjFhMDhjMThhMTAwNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwTmV0d29ya1Nlc3Npb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwTmV0d29ya1Nlc3Npb24uY3Bw
CkBAIC00MCwxMCArNDAsNiBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKLSNpZiBQTEFURk9STShFRkwpCi0jaW5j
bHVkZSAiUHJveHlSZXNvbHZlclNvdXAuaCIKLSNlbmRpZgotCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKICNpZiAhTE9HX0RJU0FCTEVECkBAIC0yMjYsMzUgKzIyMiwyNCBAQCB2b2lkIFNvdXBOZXR3
b3JrU2Vzc2lvbjo6c2V0SFRUUFByb3h5KGNvbnN0IGNoYXIqIGh0dHBQcm94eSwgY29uc3QgY2hh
ciogaHR0cFBybwogewogI2lmIFBMQVRGT1JNKEVGTCkKICAgICAvLyBPbmx5IGZvciBFRkwgYmVj
YXVzZSBHVEsgcG9ydCB1c2VzIHRoZSBkZWZhdWx0IHJlc29sdmVyLCB3aGljaCB1c2VzIEdJTydz
IHByb3h5IHJlc29sdmVyLgotICAgIGlmICghaHR0cFByb3h5KSB7Ci0gICAgICAgIHNvdXBfc2Vz
c2lvbl9yZW1vdmVfZmVhdHVyZV9ieV90eXBlKG1fc291cFNlc3Npb24uZ2V0KCksIFNPVVBfVFlQ
RV9QUk9YWV9VUklfUkVTT0xWRVIpOwotICAgICAgICByZXR1cm47CisgICAgR1Byb3h5UmVzb2x2
ZXIqIHJlc29sdmVyID0gbnVsbHB0cjsKKyAgICBpZiAoaHR0cFByb3h5KSB7CisgICAgICAgIGdj
aGFyKiogaWdub3JlTGlzdHMgPSBudWxscHRyOworICAgICAgICBpZiAoaHR0cFByb3h5RXhjZXB0
aW9ucykKKyAgICAgICAgICAgIGlnbm9yZUxpc3RzID0gIGdfc3Ryc3BsaXQoaHR0cFByb3h5RXhj
ZXB0aW9ucywgIiwiLCAtMSk7CisKKyAgICAgICAgcmVzb2x2ZXIgPSBnX3NpbXBsZV9wcm94eV9y
ZXNvbHZlcl9uZXcoaHR0cFByb3h5LCBpZ25vcmVMaXN0cyk7CisKKyAgICAgICAgZ19zdHJmcmVl
dihpZ25vcmVMaXN0cyk7CiAgICAgfQogCi0gICAgR1JlZlB0cjxTb3VwUHJveHlVUklSZXNvbHZl
cj4gcmVzb2x2ZXIgPSBhZG9wdEdSZWYoc291cFByb3h5UmVzb2x2ZXJXa05ldyhodHRwUHJveHks
IGh0dHBQcm94eUV4Y2VwdGlvbnMpKTsKLSAgICBzb3VwX3Nlc3Npb25fYWRkX2ZlYXR1cmUobV9z
b3VwU2Vzc2lvbi5nZXQoKSwgU09VUF9TRVNTSU9OX0ZFQVRVUkUocmVzb2x2ZXIuZ2V0KCkpKTsK
KyAgICBnX29iamVjdF9zZXQobV9zb3VwU2Vzc2lvbi5nZXQoKSwgU09VUF9TRVNTSU9OX1BST1hZ
X1JFU09MVkVSLCByZXNvbHZlciwgbnVsbHB0cik7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTSho
dHRwUHJveHkpOwogICAgIFVOVVNFRF9QQVJBTShodHRwUHJveHlFeGNlcHRpb25zKTsKICNlbmRp
ZgogfQogCi1jaGFyKiBTb3VwTmV0d29ya1Nlc3Npb246Omh0dHBQcm94eSgpIGNvbnN0Ci17Ci0j
aWYgUExBVEZPUk0oRUZMKQotICAgIFNvdXBTZXNzaW9uRmVhdHVyZSogc291cFJlc29sdmVyID0g
c291cF9zZXNzaW9uX2dldF9mZWF0dXJlKG1fc291cFNlc3Npb24uZ2V0KCksIFNPVVBfVFlQRV9Q
Uk9YWV9VUklfUkVTT0xWRVIpOwotICAgIGlmICghc291cFJlc29sdmVyKQotICAgICAgICByZXR1
cm4gbnVsbHB0cjsKLQotICAgIEdVbmlxdWVPdXRQdHI8U291cFVSST4gdXJpOwotICAgIGdfb2Jq
ZWN0X2dldChzb3VwUmVzb2x2ZXIsIFNPVVBfUFJPWFlfUkVTT0xWRVJfV0tfUFJPWFlfVVJJLCAm
dXJpLm91dFB0cigpLCBudWxscHRyKTsKLQotICAgIHJldHVybiB1cmkgPyBzb3VwX3VyaV90b19z
dHJpbmcodXJpLmdldCgpLCBGQUxTRSkgOiBudWxscHRyOwotI2Vsc2UKLSAgICByZXR1cm4gbnVs
bHB0cjsKLSNlbmRpZgotfQotCiB2b2lkIFNvdXBOZXR3b3JrU2Vzc2lvbjo6c2V0dXBIVFRQUHJv
eHlGcm9tRW52aXJvbm1lbnQoKQogewogI2lmIFBMQVRGT1JNKEVGTCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwTmV0d29ya1Nlc3Npb24uaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwTmV0d29ya1Nlc3Npb24u
aAppbmRleCA3OTY5MjdkYTc0NTA0Yzk3MDUzZWZjYTU4NWI0YzA2ZjUxYTE0NzIwLi44OTM0NTVh
NmMyZWFkMDZlY2VkMTMyMTY5ZjI3NDIyMmVkODM5YmVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291cE5ldHdvcmtTZXNzaW9uLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5oCkBA
IC02NSw4ICs2NSw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFNTTFBvbGljeShTU0xQb2xpY3kp
OwogICAgIFNTTFBvbGljeSBzc2xQb2xpY3koKSBjb25zdDsKIAotICAgIHZvaWQgc2V0SFRUUFBy
b3h5KGNvbnN0IGNoYXIqIGh0dHBQcm94eSwgY29uc3QgY2hhciogaHR0cFByb3h5RXhjZXB0aW9u
cyk7Ci0gICAgY2hhciogaHR0cFByb3h5KCkgY29uc3Q7CiAgICAgdm9pZCBzZXR1cEhUVFBQcm94
eUZyb21FbnZpcm9ubWVudCgpOwogCiAgICAgdm9pZCBzZXRBY2NlcHRMYW5ndWFnZXMoY29uc3Qg
VmVjdG9yPFN0cmluZz4mKTsKQEAgLTc1LDYgKzczLDggQEAgcHJpdmF0ZToKICAgICBTb3VwTmV0
d29ya1Nlc3Npb24oU291cENvb2tpZUphciopOwogICAgIFNvdXBOZXR3b3JrU2Vzc2lvbihTb3Vw
U2Vzc2lvbiopOwogCisgICAgdm9pZCBzZXRIVFRQUHJveHkoY29uc3QgY2hhciogaHR0cFByb3h5
LCBjb25zdCBjaGFyKiBodHRwUHJveHlFeGNlcHRpb25zKTsKKwogICAgIHZvaWQgc2V0dXBMb2dn
ZXIoKTsKIAogICAgIEdSZWZQdHI8U291cFNlc3Npb24+IG1fc291cFNlc3Npb247Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>