<?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>138004</bug_id>
          
          <creation_ts>2014-10-23 03:26:28 -0700</creation_ts>
          <short_desc>[GTK][Cairo] Remove GTK dependency of WidgetBackingStoreGtkX11</short_desc>
          <delta_ts>2014-10-23 23:58:18 -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>Platform</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>Cairo, Gtk</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Carlos Garcia Campos">cgarcia</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>alex</cc>
    
    <cc>commit-queue</cc>
    
    <cc>d-r</cc>
    
    <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>pnormand</cc>
    
    <cc>rakuco</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1043733</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-10-23 03:26:28 -0700</bug_when>
    <thetext>If we make it pure X11, we can move the file to webcore sources and e avoid building it twice.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1043735</commentid>
    <comment_count>1</comment_count>
      <attachid>240340</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-10-23 03:46:41 -0700</bug_when>
    <thetext>Created attachment 240340
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1043759</commentid>
    <comment_count>2</comment_count>
      <attachid>240340</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2014-10-23 09:10:52 -0700</bug_when>
    <thetext>Comment on attachment 240340
Patch

LGTM, I thought about something similar some time ago, thanks for making it happen =)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1043947</commentid>
    <comment_count>3</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-10-23 23:58:18 -0700</bug_when>
    <thetext>Committed r175159: &lt;http://trac.webkit.org/changeset/175159&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>240340</attachid>
            <date>2014-10-23 03:46:41 -0700</date>
            <delta_ts>2014-10-23 09:10:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>wk-backing-store-backend-cairo.diff</filename>
            <type>text/plain</type>
            <size>37648</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBmNWNlNWY2Li5mNzZmODM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDUg
QEAKKzIwMTQtMTAtMjMgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgorCisgICAgICAgIFtHVEtdW0NhaXJvXSBSZW1vdmUgR1RLIGRlcGVuZGVuY3kgb2YgV2lkZ2V0
QmFja2luZ1N0b3JlR3RrWDExCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMzgwMDQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBSZW5hbWUgYWxsIFdpZGdldEJhY2tpbmdTdG9yZSogY2xhc3NlcyBhcworICAg
ICAgICBCYWNraW5nU3RvcmVCYWNrZW5kQ2Fpcm8qIHNpbmNlIGFsbCBvZiB0aGVtIGFyZSBhY3R1
YWxseQorICAgICAgICBCYWNraW5nU3RvcmUgYmFja2VuZHMgYmFzZWQgb24gY2Fpcm8sIGFuZCBt
b3ZlIHRoZW0gZnJvbQorICAgICAgICBwbGF0Zm9ybS9jYWlybyBhbmQgcGxhdGZvcm0vZ3RrIHRv
IHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvLgorICAgICAgICBCYWNraW5nU3RvcmVCYWNrZW5kQ2Fp
cm8gaXMgdGhlIGJhc2UgY2xhc3MgdGhhdCBjb250YWlucyBjb21tb24KKyAgICAgICAgbWVtYmVy
cyBsaWtlIHRoZSBzdXJmYWNlIGFuZCBzaXplLiBCYWNraW5nU3RvcmVCYWNrZW5kQ2Fpcm9JbXBs
IGlzCisgICAgICAgIHRoZSBpbXBsZW1lbnRhdGlvbiB1c2luZyBvbmx5IGNhaXJvLCBhbmQgQmFj
a2luZ1N0b3JlQmFja2VuZENhaXJvWDExCisgICAgICAgIHVzaW5nIHhsaWIuIEJhY2tpbmdTdG9y
ZUJhY2tlbmRDYWlyb1gxMSByZWNlaXZlcyBhbGwgdGhlIFgxMQorICAgICAgICBpbmZvcm1hdGlv
biBpdCBuZWVkcyBhcyBjb25zdHJ1Y3RvciBwYXJhbWV0ZXJzLCBpbnN0ZWFkIG9mIHVzaW5nIGEK
KyAgICAgICAgR3RrV2lkZ2V0IGFuZCBHVEsrIFgxMSBBUEkuIEJhY2tpbmdTdG9yZUJhY2tlbmRD
YWlyb0ltcGwgcmVjZWl2ZXMKKyAgICAgICAgdGhlIHN1cmZhY2UgYWxyZWFkeSBjcmVhdGVkIGFz
IGNvbnN0cnVjdG9yIHBhcmFtZXRlciwgc28gdGhhdCBpdAorICAgICAgICBkb2Vzbid0IGhhdmUg
YW55IHBsYXRmb3JtIHNwZWNpZmljIGNvZGUgbm93LgorCisgICAgICAgICogUGxhdGZvcm1FZmwu
Y21ha2U6IFVwZGF0ZSBjb21waWxhdGlvbiBmaWxlcy4KKyAgICAgICAgKiBQbGF0Zm9ybUdUSy5j
bWFrZTogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vY2Fpcm8vV2lkZ2V0QmFja2luZ1N0b3Jl
Q2Fpcm8uY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0Jh
Y2tpbmdTdG9yZUJhY2tlbmRDYWlyby5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY2Fpcm8vV2lkZ2V0QmFja2luZ1N0b3JlLmguCisgICAgICAgIChXZWJDb3JlOjpCYWNr
aW5nU3RvcmVCYWNrZW5kQ2Fpcm86On5CYWNraW5nU3RvcmVCYWNrZW5kQ2Fpcm8pOgorICAgICAg
ICAoV2ViQ29yZTo6QmFja2luZ1N0b3JlQmFja2VuZENhaXJvOjpzdXJmYWNlKToKKyAgICAgICAg
KFdlYkNvcmU6OkJhY2tpbmdTdG9yZUJhY2tlbmRDYWlybzo6c2l6ZSk6CisgICAgICAgIChXZWJD
b3JlOjpCYWNraW5nU3RvcmVCYWNrZW5kQ2Fpcm86OkJhY2tpbmdTdG9yZUJhY2tlbmRDYWlybyk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQmFja2luZ1N0b3JlQmFja2VuZENh
aXJvSW1wbC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6QmFja2luZ1N0b3JlQmFja2Vu
ZENhaXJvSW1wbDo6QmFja2luZ1N0b3JlQmFja2VuZENhaXJvSW1wbCk6CisgICAgICAgIChXZWJD
b3JlOjpCYWNraW5nU3RvcmVCYWNrZW5kQ2Fpcm9JbXBsOjp+QmFja2luZ1N0b3JlQmFja2VuZENh
aXJvSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpCYWNraW5nU3RvcmVCYWNrZW5kQ2Fpcm9JbXBs
OjpzY3JvbGwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0JhY2tpbmdTdG9y
ZUJhY2tlbmRDYWlyb0ltcGwuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2NhaXJvL1dpZGdldEJhY2tpbmdTdG9yZUNhaXJvLmguCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vQmFja2luZ1N0b3JlQmFja2VuZENhaXJvWDExLmNwcDogUmVuYW1lZCBmcm9t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9XaWRnZXRCYWNraW5nU3RvcmVHdGtYMTEuY3Bw
LgorICAgICAgICAoV2ViQ29yZTo6QmFja2luZ1N0b3JlQmFja2VuZENhaXJvWDExOjpCYWNraW5n
U3RvcmVCYWNrZW5kQ2Fpcm9YMTEpOgorICAgICAgICAoV2ViQ29yZTo6QmFja2luZ1N0b3JlQmFj
a2VuZENhaXJvWDExOjp+QmFja2luZ1N0b3JlQmFja2VuZENhaXJvWDExKToKKyAgICAgICAgKFdl
YkNvcmU6OkJhY2tpbmdTdG9yZUJhY2tlbmRDYWlyb1gxMTo6c2Nyb2xsKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9CYWNraW5nU3RvcmVCYWNrZW5kQ2Fpcm9YMTEuaDogUmVu
YW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9XaWRnZXRCYWNraW5nU3RvcmVH
dGtYMTEuaC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb1V0aWxpdGll
cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjYWlyb1N1cmZhY2VHZXREZXZpY2VTY2FsZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9VdGlsaXRpZXMuaDoKKwogMjAx
NC0xMC0yMiAgTWlsYW4gQ3JoYSAgPG1jcmhhQHJlZGhhdC5jb20+CiAKICAgICAgICAgRG8gbm90
IGluY2x1ZGUgR3JhcGhpY3NDb250ZXh0M0QuaCB3aGVuIDNEX0dSQVBISUNTIGlzIG5vdCB1c2Vk
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1FZmwuY21ha2UgYi9Tb3VyY2Uv
V2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFrZQppbmRleCA3YjQ0NmRjLi44ODhjNTQ1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9QbGF0Zm9ybUVmbC5jbWFrZQpAQCAtNzMsOCArNzMsNiBAQCBsaXN0KEFQUEVORCBXZWJDb3Jl
X1NPVVJDRVMKICAgICBwbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvRkZURnJhbWVHU3RyZWFtZXIu
Y3BwCiAgICAgcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL1dlYktpdFdlYkF1ZGlvU291cmNlR1N0
cmVhbWVyLmNwcAogCi0gICAgcGxhdGZvcm0vY2Fpcm8vV2lkZ2V0QmFja2luZ1N0b3JlQ2Fpcm8u
Y3BwCi0KICAgICBwbGF0Zm9ybS9lZmwvQmF0dGVyeVByb3ZpZGVyRWZsLmNwcAogICAgIHBsYXRm
b3JtL2VmbC9DdXJzb3JFZmwuY3BwCiAgICAgcGxhdGZvcm0vZWZsL0RyYWdEYXRhRWZsLmNwcApA
QCAtMTA5LDYgKzEwNyw3IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRm
b3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1dPRkZG
aWxlRm9ybWF0LmNwcAogCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQmFja2luZ1N0b3Jl
QmFja2VuZENhaXJvSW1wbC5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9CaXRtYXBJ
bWFnZUNhaXJvLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvVXRpbGl0aWVz
LmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0RyYXdpbmdCdWZmZXJDYWlyby5jcHAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlIGIvU291cmNlL1dl
YkNvcmUvUGxhdGZvcm1HVEsuY21ha2UKaW5kZXggYzJlYmFmNy4uOGExNGNhZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUv
UGxhdGZvcm1HVEsuY21ha2UKQEAgLTY3LDYgKzY3LDggQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9T
T1VSQ0VTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvT3BlbkdMU2hpbXMuY3BwCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuY3BwCiAKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9CYWNraW5nU3RvcmVCYWNrZW5kQ2Fpcm9JbXBsLmNwcAorICAgIHBsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL0JhY2tpbmdTdG9yZUJhY2tlbmRDYWlyb1gxMS5jcHAKICAgICBwbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9CaXRtYXBJbWFnZUNhaXJvLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0NhaXJvVXRpbGl0aWVzLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0Ry
YXdpbmdCdWZmZXJDYWlyby5jcHAKQEAgLTE5Nyw4ICsxOTksNiBAQCBsaXN0KEFQUEVORCBXZWJD
b3JlUGxhdGZvcm1HVEtfU09VUkNFUwogICAgIHBhZ2UvZ3RrL0RyYWdDb250cm9sbGVyR3RrLmNw
cAogICAgIHBhZ2UvZ3RrL0V2ZW50SGFuZGxlckd0ay5jcHAKIAotICAgIHBsYXRmb3JtL2NhaXJv
L1dpZGdldEJhY2tpbmdTdG9yZUNhaXJvLmNwcAotCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvR0xD
b250ZXh0LmNwcAogCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTC5jcHAK
QEAgLTIzNiw3ICsyMzYsNiBAQCBsaXN0KEFQUEVORCBXZWJDb3JlUGxhdGZvcm1HVEtfU09VUkNF
UwogICAgIHBsYXRmb3JtL2d0ay9TY3JvbGxiYXJUaGVtZUd0ay5jcHAKICAgICBwbGF0Zm9ybS9n
dGsvU2hhcmVkVGltZXJHdGsuY3BwCiAgICAgcGxhdGZvcm0vZ3RrL1NvdW5kR3RrLmNwcAotICAg
IHBsYXRmb3JtL2d0ay9XaWRnZXRCYWNraW5nU3RvcmVHdGtYMTEuY3BwCiAgICAgcGxhdGZvcm0v
Z3RrL1dpZGdldEd0ay5jcHAKIAogICAgIHJlbmRlcmluZy9SZW5kZXJUaGVtZUd0ay5jcHAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NhaXJvL1dpZGdldEJhY2tpbmdTdG9y
ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2Fpcm8vV2lkZ2V0QmFja2luZ1N0b3JlLmgK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE1ODc3ZjUuLjAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2Fpcm8vV2lkZ2V0QmFja2luZ1N0b3JlLmgKKysrIC9kZXYv
bnVsbApAQCAtMSw2NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExLCBJZ2FsaWEg
Uy5MLgotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yCi0gKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
R05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogIHZlcnNpb24gMiBvZiB0aGUg
TGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiAg
VGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1
c2VmdWwsCi0gKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt
cGxpZWQgd2FycmFudHkgb2YKLSAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogIExlc3NlciBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogIFlvdSBzaG91bGQgaGF2ZSByZWNl
aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSAqICBMaWNlbnNl
IGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3
YXJlCi0gKiAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9v
ciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCi0gKi8KLQotI2lmbmRlZiBXaWRnZXRCYWNr
aW5nU3RvcmVfaAotI2RlZmluZSBXaWRnZXRCYWNraW5nU3RvcmVfaAotCi0jaW5jbHVkZSAiSW50
UmVjdC5oIgotI2luY2x1ZGUgIkludFNpemUuaCIKLSNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5o
PgotI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRy
Lmg+Ci0KLSNpZiBQTEFURk9STShHVEspCi0jaW5jbHVkZSA8Z3RrL2d0ay5oPgotI2VsaWYgUExB
VEZPUk0oRUZMKQotI2luY2x1ZGUgPEV2YXMuaD4KLSNlbmRpZgotCi10eXBlZGVmIHN0cnVjdCBf
Y2Fpcm9fc3VyZmFjZSBjYWlyb19zdXJmYWNlX3Q7Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQot
I2lmIFBMQVRGT1JNKEdUSykKLXR5cGVkZWYgR3RrV2lkZ2V0KiBQbGF0Zm9ybVdpZGdldDsKLSNl
bGlmIFBMQVRGT1JNKEVGTCkKLXR5cGVkZWYgRXZhc19PYmplY3QqIFBsYXRmb3JtV2lkZ2V0Owot
I2VuZGlmCi0KLWNsYXNzIFdpZGdldEJhY2tpbmdTdG9yZSB7Ci0gICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoV2lkZ2V0QmFja2luZ1N0b3JlKTsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
LQotcHVibGljOgotICAgIHZpcnR1YWwgY2Fpcm9fc3VyZmFjZV90KiBjYWlyb1N1cmZhY2UoKSA9
IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNjcm9sbChjb25zdCBJbnRSZWN0JiBzY3JvbGxSZWN0LCBj
b25zdCBJbnRTaXplJiBzY3JvbGxPZmZzZXQpID0gMDsKLSAgICBjb25zdCBJbnRTaXplJiBzaXpl
KCkgeyByZXR1cm4gbV9zaXplOyB9Ci0KLSAgICBXaWRnZXRCYWNraW5nU3RvcmUoY29uc3QgSW50
U2l6ZSYgc2l6ZSwgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IpCi0gICAgICAgIDogbV9zaXplKHNp
emUpCi0gICAgICAgICwgbV9kZXZpY2VTY2FsZUZhY3RvcihkZXZpY2VTY2FsZUZhY3RvcikKLSAg
ICB7IH0KLQotICAgIHZpcnR1YWwgfldpZGdldEJhY2tpbmdTdG9yZSgpIHsgfQotCi1wcm90ZWN0
ZWQ6Ci0gICAgSW50U2l6ZSBtX3NpemU7Ci0gICAgZmxvYXQgbV9kZXZpY2VTY2FsZUZhY3RvcjsK
LX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIFdpZGdldEJhY2tpbmdT
dG9yZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jYWlyby9XaWRnZXRC
YWNraW5nU3RvcmVDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jYWlyby9XaWRn
ZXRCYWNraW5nU3RvcmVDYWlyby5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQx
MmQ4ZTYuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2Fpcm8vV2lkZ2V0
QmFja2luZ1N0b3JlQ2Fpcm8uY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNzYgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMSwgSWdhbGlhIFMuTC4KLSAqIENvcHlyaWdodCAoQykgMjAx
MSBTYW1zdW5nIEVsZWN0cm9uaWNzCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqICBtb2RpZnkgaXQgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0gKiAgTGljZW5zZSBh
cyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiAg
dmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2
ZXJzaW9uLgotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg
dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp
dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogIE1FUkNIQU5UQUJJTElUWSBv
ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiAgTGVz
c2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiAgWW91
IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1
YmxpYwotICogIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUg
dG8gdGhlIEZyZWUgU29mdHdhcmUKLSAqICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBT
dHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKLSAqLwotCi0j
aW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV2lkZ2V0QmFja2luZ1N0b3JlQ2Fpcm8uaCIK
LQotI2luY2x1ZGUgIkNhaXJvVXRpbGl0aWVzLmgiCi0jaW5jbHVkZSAiUmVmUHRyQ2Fpcm8uaCIK
LSNpbmNsdWRlIDxjYWlyby5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0YXRpYyBQYXNz
UmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gY3JlYXRlU3VyZmFjZUZvckJhY2tpbmdTdG9yZShQbGF0
Zm9ybVdpZGdldCB3aWRnZXQsIEludFNpemUgc2l6ZSwgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3Ip
Ci17Ci0gICAgc2l6ZS5zY2FsZShkZXZpY2VTY2FsZUZhY3Rvcik7Ci0KLSNpZiBQTEFURk9STShH
VEspCi0gICAgcmV0dXJuIGFkb3B0UmVmKGdka193aW5kb3dfY3JlYXRlX3NpbWlsYXJfc3VyZmFj
ZShndGtfd2lkZ2V0X2dldF93aW5kb3cod2lkZ2V0KSwgQ0FJUk9fQ09OVEVOVF9DT0xPUl9BTFBI
QSwgc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpKSk7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJB
TSh3aWRnZXQpOwotICAgIHJldHVybiBhZG9wdFJlZihjYWlyb19pbWFnZV9zdXJmYWNlX2NyZWF0
ZShDQUlST19GT1JNQVRfQVJHQjMyLCBzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkpKTsKLSNl
bmRpZgotfQotCi0vLyBXZSBrZWVwIHR3byBjb3BpZXMgb2YgdGhlIHN1cmZhY2UgaGVyZSwgd2hp
Y2ggd2lsbCBkb3VibGUgdGhlIG1lbW9yeSB1c2FnZSwgYnV0IGluY3JlYXNlCi0vLyBzY3JvbGxp
bmcgcGVyZm9ybWFuY2Ugc2luY2Ugd2UgZG8gbm90IGhhdmUgdG8ga2VlcCByZWFsbG9jYXRpbmcg
YSBtZW1vcnkgcmVnaW9uIGR1cmluZwotLy8gcXVpY2sgc2Nyb2xsaW5nIHJlcXVlc3RzLgotV2lk
Z2V0QmFja2luZ1N0b3JlQ2Fpcm86OldpZGdldEJhY2tpbmdTdG9yZUNhaXJvKFBsYXRmb3JtV2lk
Z2V0IHdpZGdldCwgY29uc3QgSW50U2l6ZSYgc2l6ZSwgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3Ip
Ci0gICAgOiBXaWRnZXRCYWNraW5nU3RvcmUoc2l6ZSwgZGV2aWNlU2NhbGVGYWN0b3IpCi0gICAg
LCBtX3N1cmZhY2UoY3JlYXRlU3VyZmFjZUZvckJhY2tpbmdTdG9yZSh3aWRnZXQsIHNpemUsIGRl
dmljZVNjYWxlRmFjdG9yKSkKLSAgICAsIG1fc2Nyb2xsU3VyZmFjZShjcmVhdGVTdXJmYWNlRm9y
QmFja2luZ1N0b3JlKHdpZGdldCwgc2l6ZSwgZGV2aWNlU2NhbGVGYWN0b3IpKQotewotICAgIGNh
aXJvU3VyZmFjZVNldERldmljZVNjYWxlKG1fc3VyZmFjZS5nZXQoKSwgZGV2aWNlU2NhbGVGYWN0
b3IsIGRldmljZVNjYWxlRmFjdG9yKTsKLX0KLQotV2lkZ2V0QmFja2luZ1N0b3JlQ2Fpcm86On5X
aWRnZXRCYWNraW5nU3RvcmVDYWlybygpCi17Ci19Ci0KLWNhaXJvX3N1cmZhY2VfdCogV2lkZ2V0
QmFja2luZ1N0b3JlQ2Fpcm86OmNhaXJvU3VyZmFjZSgpCi17Ci0gICAgcmV0dXJuIG1fc3VyZmFj
ZS5nZXQoKTsKLX0KLQotdm9pZCBXaWRnZXRCYWNraW5nU3RvcmVDYWlybzo6c2Nyb2xsKGNvbnN0
IEludFJlY3QmIHNjcm9sbFJlY3QsIGNvbnN0IEludFNpemUmIHNjcm9sbE9mZnNldCkKLXsKLSAg
ICBJbnRSZWN0IHRhcmdldFJlY3Qoc2Nyb2xsUmVjdCk7Ci0gICAgdGFyZ2V0UmVjdC5tb3ZlKHNj
cm9sbE9mZnNldCk7Ci0gICAgdGFyZ2V0UmVjdC5zaGlmdE1heFhFZGdlVG8odGFyZ2V0UmVjdC5t
YXhYKCkgLSBzY3JvbGxPZmZzZXQud2lkdGgoKSk7Ci0gICAgdGFyZ2V0UmVjdC5zaGlmdE1heFlF
ZGdlVG8odGFyZ2V0UmVjdC5tYXhZKCkgLSBzY3JvbGxPZmZzZXQuaGVpZ2h0KCkpOwotICAgIGlm
ICh0YXJnZXRSZWN0LmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgY29weVJlY3RG
cm9tT25lU3VyZmFjZVRvQW5vdGhlcihtX3N1cmZhY2UuZ2V0KCksIG1fc2Nyb2xsU3VyZmFjZS5n
ZXQoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjcm9sbE9mZnNldCwg
dGFyZ2V0UmVjdCk7Ci0gICAgY29weVJlY3RGcm9tT25lU3VyZmFjZVRvQW5vdGhlcihtX3Njcm9s
bFN1cmZhY2UuZ2V0KCksIG1fc3VyZmFjZS5nZXQoKSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEludFNpemUoKSwgdGFyZ2V0UmVjdCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NhaXJvL1dpZGdl
dEJhY2tpbmdTdG9yZUNhaXJvLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jYWlyby9XaWRn
ZXRCYWNraW5nU3RvcmVDYWlyby5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZWQw
Nzc1Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NhaXJvL1dpZGdldEJh
Y2tpbmdTdG9yZUNhaXJvLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0MiArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDEzLCBJZ2FsaWEgUy5MLgotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiAgbW9kaWZ5
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotICog
IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp
dGhlcgotICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBh
bnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGlu
IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiAgYnV0IFdJVEhPVVQgQU5ZIFdB
UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqICBNRVJDSEFO
VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdO
VQotICogIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0g
KgotICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIg
R2VuZXJhbCBQdWJsaWMKLSAqICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBu
b3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0gKiAgRm91bmRhdGlvbiwgSW5jLiwgNTEg
RnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNB
Ci0gKi8KLQotI2lmbmRlZiBXaWRnZXRCYWNraW5nU3RvcmVDYWlyb19oCi0jZGVmaW5lIFdpZGdl
dEJhY2tpbmdTdG9yZUNhaXJvX2gKLQotI2luY2x1ZGUgIldpZGdldEJhY2tpbmdTdG9yZS5oIgot
I2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBX
aWRnZXRCYWNraW5nU3RvcmVDYWlybyA6IHB1YmxpYyBXaWRnZXRCYWNraW5nU3RvcmUgewotCi1w
dWJsaWM6Ci0gICAgV2lkZ2V0QmFja2luZ1N0b3JlQ2Fpcm8oUGxhdGZvcm1XaWRnZXQsIGNvbnN0
IEludFNpemUmLCBmbG9hdCBkZXZpY2VTY2FsZUZhY3Rvcik7Ci0gICAgfldpZGdldEJhY2tpbmdT
dG9yZUNhaXJvKCk7Ci0gICAgY2Fpcm9fc3VyZmFjZV90KiBjYWlyb1N1cmZhY2UoKTsKLSAgICB2
b2lkIHNjcm9sbChjb25zdCBJbnRSZWN0JiwgY29uc3QgSW50U2l6ZSYpOwotCi1wcml2YXRlOgot
ICAgIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IG1fc3VyZmFjZTsKLSAgICBSZWZQdHI8Y2Fpcm9f
c3VyZmFjZV90PiBtX3Njcm9sbFN1cmZhY2U7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
Ci0KLSNlbmRpZiAvLyBXaWRnZXRCYWNraW5nU3RvcmVDYWlyb19oCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9CYWNraW5nU3RvcmVCYWNrZW5kQ2Fp
cm8uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0JhY2tpbmdTdG9y
ZUJhY2tlbmRDYWlyby5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM0MWZl
NjEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9CYWNraW5nU3RvcmVCYWNrZW5kQ2Fpcm8uaApAQCAtMCwwICsxLDU4IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDExLDIwMTQgSWdhbGlhIFMuTC4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMK
KyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
OyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlv
bikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRl
ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogIGJ1dCBXSVRIT1VUIEFO
WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgTUVS
Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo
ZSBHTlUKKyAqICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz
LgorICoKKyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVz
c2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsg
aWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogIEZvdW5kYXRpb24sIEluYy4s
IDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEg
IFVTQQorICovCisKKyNpZm5kZWYgQmFja2luZ1N0b3JlQmFja2VuZENhaXJvX2gKKyNkZWZpbmUg
QmFja2luZ1N0b3JlQmFja2VuZENhaXJvX2gKKworI2lmIFVTRShDQUlSTykKKworI2luY2x1ZGUg
IkludFJlY3QuaCIKKyNpbmNsdWRlICJSZWZQdHJDYWlyby5oIgorI2luY2x1ZGUgPHd0Zi9GYXN0
TWFsbG9jLmg+CisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisKK3R5cGVkZWYgc3RydWN0
IF9jYWlyb19zdXJmYWNlIGNhaXJvX3N1cmZhY2VfdDsKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitjbGFzcyBCYWNraW5nU3RvcmVCYWNrZW5kQ2Fpcm8geworICAgIFdURl9NQUtFX05PTkNPUFlB
QkxFKEJhY2tpbmdTdG9yZUJhY2tlbmRDYWlybyk7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CitwdWJsaWM6CisgICAgdmlydHVhbCB+QmFja2luZ1N0b3JlQmFja2VuZENhaXJvKCkgeyB9
CisKKyAgICBjYWlyb19zdXJmYWNlX3QqIHN1cmZhY2UoKSBjb25zdCB7IHJldHVybiBtX3N1cmZh
Y2UuZ2V0KCk7IH0KKyAgICBjb25zdCBJbnRTaXplJiBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9z
aXplOyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsKGNvbnN0IEludFJlY3QmIHNjcm9sbFJl
Y3QsIGNvbnN0IEludFNpemUmIHNjcm9sbE9mZnNldCkgPSAwOworCitwcm90ZWN0ZWQ6CisgICAg
QmFja2luZ1N0b3JlQmFja2VuZENhaXJvKGNvbnN0IEludFNpemUmIHNpemUpCisgICAgICAgIDog
bV9zaXplKHNpemUpCisgICAgeworICAgIH0KKworICAgIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+
IG1fc3VyZmFjZTsKKyAgICBJbnRTaXplIG1fc2l6ZTsKK307CisKKyNlbmRpZiAvLyBVU0UoQ0FJ
Uk8pCisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEJhY2tpbmdTdG9yZUJh
Y2tlbmRDYWlyb19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9CYWNraW5nU3RvcmVCYWNrZW5kQ2Fpcm9JbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0JhY2tpbmdTdG9yZUJhY2tlbmRDYWlyb0ltcGwuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQwZDA2ZGIKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9CYWNraW5nU3Rv
cmVCYWNrZW5kQ2Fpcm9JbXBsLmNwcApAQCAtMCwwICsxLDYzIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDExLDIwMTQgSWdhbGlhIFMuTC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBTYW1zdW5n
IEVsZWN0cm9uaWNzCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhcyBwdWJsaXNo
ZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiAgdmVyc2lvbiAy
IG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgor
ICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3
aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl
biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiAgTGVzc2VyIEdlbmVy
YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiAgWW91IHNob3VsZCBo
YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICog
IExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZy
ZWUgU29mdHdhcmUKKyAqICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZp
ZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiQmFja2luZ1N0b3JlQmFja2VuZENhaXJvSW1wbC5oIgorCisj
aWYgVVNFKENBSVJPKQorCisjaW5jbHVkZSAiQ2Fpcm9VdGlsaXRpZXMuaCIKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitCYWNraW5nU3RvcmVCYWNrZW5kQ2Fpcm9JbXBsOjpCYWNraW5nU3RvcmVC
YWNrZW5kQ2Fpcm9JbXBsKGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSwgY29uc3QgSW50U2l6ZSYg
c2l6ZSkKKyAgICA6IEJhY2tpbmdTdG9yZUJhY2tlbmRDYWlybyhzaXplKQoreworICAgIG1fc3Vy
ZmFjZSA9IHN1cmZhY2U7CisKKyAgICAvLyBXZSBrZWVwIHR3byBjb3BpZXMgb2YgdGhlIHN1cmZh
Y2UgaGVyZSwgd2hpY2ggd2lsbCBkb3VibGUgdGhlIG1lbW9yeSB1c2FnZSwgYnV0IGluY3JlYXNl
CisgICAgLy8gc2Nyb2xsaW5nIHBlcmZvcm1hbmNlIHNpbmNlIHdlIGRvIG5vdCBoYXZlIHRvIGtl
ZXAgcmVhbGxvY2F0aW5nIGEgbWVtb3J5IHJlZ2lvbiBkdXJpbmcKKyAgICAvLyBxdWljayBzY3Jv
bGxpbmcgcmVxdWVzdHMuCisgICAgZG91YmxlIHhTY2FsZSwgeVNjYWxlOworICAgIGNhaXJvU3Vy
ZmFjZUdldERldmljZVNjYWxlKG1fc3VyZmFjZS5nZXQoKSwgeFNjYWxlLCB5U2NhbGUpOworICAg
IEludFNpemUgc2NhbGVkU2l6ZSA9IHNpemU7CisgICAgc2NhbGVkU2l6ZS5zY2FsZSh4U2NhbGUs
IHlTY2FsZSk7CisgICAgbV9zY3JvbGxTdXJmYWNlID0gYWRvcHRSZWYoY2Fpcm9fc3VyZmFjZV9j
cmVhdGVfc2ltaWxhcihzdXJmYWNlLCBDQUlST19DT05URU5UX0NPTE9SX0FMUEhBLCBzY2FsZWRT
aXplLndpZHRoKCksIHNjYWxlZFNpemUuaGVpZ2h0KCkpKTsKK30KKworQmFja2luZ1N0b3JlQmFj
a2VuZENhaXJvSW1wbDo6fkJhY2tpbmdTdG9yZUJhY2tlbmRDYWlyb0ltcGwoKQoreworfQorCit2
b2lkIEJhY2tpbmdTdG9yZUJhY2tlbmRDYWlyb0ltcGw6OnNjcm9sbChjb25zdCBJbnRSZWN0JiBz
Y3JvbGxSZWN0LCBjb25zdCBJbnRTaXplJiBzY3JvbGxPZmZzZXQpCit7CisgICAgSW50UmVjdCB0
YXJnZXRSZWN0ID0gc2Nyb2xsUmVjdDsKKyAgICB0YXJnZXRSZWN0Lm1vdmUoc2Nyb2xsT2Zmc2V0
KTsKKyAgICB0YXJnZXRSZWN0LnNoaWZ0TWF4WEVkZ2VUbyh0YXJnZXRSZWN0Lm1heFgoKSAtIHNj
cm9sbE9mZnNldC53aWR0aCgpKTsKKyAgICB0YXJnZXRSZWN0LnNoaWZ0TWF4WUVkZ2VUbyh0YXJn
ZXRSZWN0Lm1heFkoKSAtIHNjcm9sbE9mZnNldC5oZWlnaHQoKSk7CisgICAgaWYgKHRhcmdldFJl
Y3QuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBjb3B5UmVjdEZyb21PbmVTdXJm
YWNlVG9Bbm90aGVyKG1fc3VyZmFjZS5nZXQoKSwgbV9zY3JvbGxTdXJmYWNlLmdldCgpLCBzY3Jv
bGxPZmZzZXQsIHRhcmdldFJlY3QpOworICAgIGNvcHlSZWN0RnJvbU9uZVN1cmZhY2VUb0Fub3Ro
ZXIobV9zY3JvbGxTdXJmYWNlLmdldCgpLCBtX3N1cmZhY2UuZ2V0KCksIEludFNpemUoKSwgdGFy
Z2V0UmVjdCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFVTRShD
QUlSTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L0JhY2tpbmdTdG9yZUJhY2tlbmRDYWlyb0ltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0JhY2tpbmdTdG9yZUJhY2tlbmRDYWlyb0ltcGwuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMWEwMTQ5YgotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0JhY2tpbmdTdG9yZUJhY2tlbmRD
YWlyb0ltcGwuaApAQCAtMCwwICsxLDQzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzLDIw
MTQgSWdhbGlhIFMuTC4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFzIHB1Ymxp
c2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqICB2ZXJzaW9u
IDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u
CisgKgorICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0
IHdpbGwgYmUgdXNlZnVsLAorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl
dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqICBMZXNzZXIgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZb3Ugc2hvdWxk
IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisg
KiAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUg
RnJlZSBTb2Z0d2FyZQorICogIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwg
RmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQorICovCisKKyNpZm5kZWYg
QmFja2luZ1N0b3JlQmFja2VuZENhaXJvSW1wbF9oCisjZGVmaW5lIEJhY2tpbmdTdG9yZUJhY2tl
bmRDYWlyb0ltcGxfaAorCisjaW5jbHVkZSAiQmFja2luZ1N0b3JlQmFja2VuZENhaXJvLmgiCisK
KyNpZiBVU0UoQ0FJUk8pCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQmFja2luZ1N0
b3JlQmFja2VuZENhaXJvSW1wbCBmaW5hbCA6IHB1YmxpYyBCYWNraW5nU3RvcmVCYWNrZW5kQ2Fp
cm8geworcHVibGljOgorICAgIEJhY2tpbmdTdG9yZUJhY2tlbmRDYWlyb0ltcGwoY2Fpcm9fc3Vy
ZmFjZV90KiwgY29uc3QgSW50U2l6ZSYpOworICAgIHZpcnR1YWwgfkJhY2tpbmdTdG9yZUJhY2tl
bmRDYWlyb0ltcGwoKTsKKworICAgIHZvaWQgc2Nyb2xsKGNvbnN0IEludFJlY3QmLCBjb25zdCBJ
bnRTaXplJikgb3ZlcnJpZGU7CisKK3ByaXZhdGU6CisgICAgUmVmUHRyPGNhaXJvX3N1cmZhY2Vf
dD4gbV9zY3JvbGxTdXJmYWNlOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5k
aWYgLy8gVVNFKENBSVJPKQorCisjZW5kaWYgLy8gQmFja2luZ1N0b3JlQmFja2VuZENhaXJvSW1w
bF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9C
YWNraW5nU3RvcmVCYWNrZW5kQ2Fpcm9YMTEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vQmFja2luZ1N0b3JlQmFja2VuZENhaXJvWDExLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YzA4NzJmCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQmFja2luZ1N0b3JlQmFja2VuZENh
aXJvWDExLmNwcApAQCAtMCwwICsxLDc2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExLDIw
MTQgSWdhbGlhIFMuTC4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFzIHB1Ymxp
c2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqICB2ZXJzaW9u
IDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u
CisgKgorICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0
IHdpbGwgYmUgdXNlZnVsLAorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl
dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqICBMZXNzZXIgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZb3Ugc2hvdWxk
IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisg
KiAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUg
RnJlZSBTb2Z0d2FyZQorICogIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwg
RmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJCYWNraW5nU3RvcmVCYWNrZW5kQ2Fpcm9YMTEuaCIKKwor
I2lmIFVTRShDQUlSTykgJiYgUExBVEZPUk0oWDExKQorCisjaW5jbHVkZSAiQ2Fpcm9VdGlsaXRp
ZXMuaCIKKyNpbmNsdWRlIDxjYWlyby14bGliLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
QmFja2luZ1N0b3JlQmFja2VuZENhaXJvWDExOjpCYWNraW5nU3RvcmVCYWNrZW5kQ2Fpcm9YMTEo
RGlzcGxheSogZGlzcGxheSwgdW5zaWduZWQgbG9uZyByb290V2luZG93SUQsIFZpc3VhbCogdmlz
dWFsLCBpbnQgZGVwdGgsIGNvbnN0IEludFNpemUmIHNpemUsIGZsb2F0IGRldmljZVNjYWxlRmFj
dG9yKQorICAgIDogQmFja2luZ1N0b3JlQmFja2VuZENhaXJvKHNpemUpCisgICAgLCBtX2Rpc3Bs
YXkoZGlzcGxheSkKK3sKKyAgICBJbnRTaXplIHNjYWxlZFNpemUgPSBzaXplOworICAgIHNjYWxl
ZFNpemUuc2NhbGUoZGV2aWNlU2NhbGVGYWN0b3IpOworCisgICAgbV9waXhtYXAgPSBYQ3JlYXRl
UGl4bWFwKG1fZGlzcGxheSwgcm9vdFdpbmRvd0lELCBzY2FsZWRTaXplLndpZHRoKCksIHNjYWxl
ZFNpemUuaGVpZ2h0KCksIGRlcHRoKTsKKyAgICBtX2djID0gWENyZWF0ZUdDKG1fZGlzcGxheSwg
bV9waXhtYXAsIDAsIG51bGxwdHIpOworCisgICAgbV9zdXJmYWNlID0gYWRvcHRSZWYoY2Fpcm9f
eGxpYl9zdXJmYWNlX2NyZWF0ZShtX2Rpc3BsYXksIG1fcGl4bWFwLCB2aXN1YWwsIHNjYWxlZFNp
emUud2lkdGgoKSwgc2NhbGVkU2l6ZS5oZWlnaHQoKSkpOworICAgIGNhaXJvU3VyZmFjZVNldERl
dmljZVNjYWxlKG1fc3VyZmFjZS5nZXQoKSwgZGV2aWNlU2NhbGVGYWN0b3IsIGRldmljZVNjYWxl
RmFjdG9yKTsKK30KKworQmFja2luZ1N0b3JlQmFja2VuZENhaXJvWDExOjp+QmFja2luZ1N0b3Jl
QmFja2VuZENhaXJvWDExKCkKK3sKKyAgICAvLyBUaGUgcGl4bWFwIG5lZWRzIHRvIGV4aXN0IHdo
ZW4gdGhlIHN1cmZhY2UgaXMgZGVzdHJveWVkLCBzbyBiZWdpbiBieSBjbGVhcmluZyBpdC4KKyAg
ICBtX3N1cmZhY2UuY2xlYXIoKTsKKyAgICBYRnJlZVBpeG1hcChtX2Rpc3BsYXksIG1fcGl4bWFw
KTsKKyAgICBYRnJlZUdDKG1fZGlzcGxheSwgbV9nYyk7Cit9CisKK3ZvaWQgQmFja2luZ1N0b3Jl
QmFja2VuZENhaXJvWDExOjpzY3JvbGwoY29uc3QgSW50UmVjdCYgc2Nyb2xsUmVjdCwgY29uc3Qg
SW50U2l6ZSYgc2Nyb2xsT2Zmc2V0KQoreworICAgIEludFJlY3QgdGFyZ2V0UmVjdCA9IHNjcm9s
bFJlY3Q7CisgICAgdGFyZ2V0UmVjdC5tb3ZlKHNjcm9sbE9mZnNldCk7CisgICAgdGFyZ2V0UmVj
dC5pbnRlcnNlY3Qoc2Nyb2xsUmVjdCk7CisgICAgaWYgKHRhcmdldFJlY3QuaXNFbXB0eSgpKQor
ICAgICAgICByZXR1cm47CisKKyAgICBkb3VibGUgeFNjYWxlLCB5U2NhbGU7CisgICAgY2Fpcm9T
dXJmYWNlR2V0RGV2aWNlU2NhbGUobV9zdXJmYWNlLmdldCgpLCB4U2NhbGUsIHlTY2FsZSk7Cisg
ICAgQVNTRVJUKHhTY2FsZSA9PSB5U2NhbGUpOworCisgICAgSW50U2l6ZSBzY2FsZWRTY3JvbGxP
ZmZzZXQgPSBzY3JvbGxPZmZzZXQ7CisgICAgdGFyZ2V0UmVjdC5zY2FsZSh4U2NhbGUpOworICAg
IHNjYWxlZFNjcm9sbE9mZnNldC5zY2FsZSh4U2NhbGUsIHlTY2FsZSk7CisKKyAgICBjYWlyb19z
dXJmYWNlX2ZsdXNoKG1fc3VyZmFjZS5nZXQoKSk7CisgICAgWENvcHlBcmVhKG1fZGlzcGxheSwg
bV9waXhtYXAsIG1fcGl4bWFwLCBtX2djLAorICAgICAgICB0YXJnZXRSZWN0LngoKSAtIHNjYWxl
ZFNjcm9sbE9mZnNldC53aWR0aCgpLCB0YXJnZXRSZWN0LnkoKSAtIHNjYWxlZFNjcm9sbE9mZnNl
dC5oZWlnaHQoKSwKKyAgICAgICAgdGFyZ2V0UmVjdC53aWR0aCgpLCB0YXJnZXRSZWN0LmhlaWdo
dCgpLCB0YXJnZXRSZWN0LngoKSwgdGFyZ2V0UmVjdC55KCkpOworICAgIGNhaXJvX3N1cmZhY2Vf
bWFya19kaXJ0eV9yZWN0YW5nbGUobV9zdXJmYWNlLmdldCgpLCB0YXJnZXRSZWN0LngoKSwgdGFy
Z2V0UmVjdC55KCksIHRhcmdldFJlY3Qud2lkdGgoKSwgdGFyZ2V0UmVjdC5oZWlnaHQoKSk7Cit9
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFVTRShDQUlSTykgJiYgUExB
VEZPUk0oWDExKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vQmFja2luZ1N0b3JlQmFja2VuZENhaXJvWDExLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9CYWNraW5nU3RvcmVCYWNrZW5kQ2Fpcm9YMTEuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZGUwZDg0Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQmFja2luZ1N0b3JlQmFja2Vu
ZENhaXJvWDExLmgKQEAgLTAsMCArMSw0NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMywy
MDE0IElnYWxpYSBTLkwuCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhcyBwdWJs
aXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiAgdmVyc2lv
biAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u
LgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp
dCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg
ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiAgTGVzc2VyIEdl
bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiAgWW91IHNob3Vs
ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwor
ICogIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhl
IEZyZWUgU29mdHdhcmUKKyAqICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQs
IEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKKyAqLworCisjaWZuZGVm
IEJhY2tpbmdTdG9yZUJhY2tlbmRDYWlyb1gxMV9oCisjZGVmaW5lIEJhY2tpbmdTdG9yZUJhY2tl
bmRDYWlyb1gxMV9oCisKKyNpbmNsdWRlICJCYWNraW5nU3RvcmVCYWNrZW5kQ2Fpcm8uaCIKKwor
I2lmIFVTRShDQUlSTykgJiYgUExBVEZPUk0oWDExKQorI2luY2x1ZGUgPFgxMS9YbGliLmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQmFja2luZ1N0b3JlQmFja2VuZENhaXJvWDEx
IGZpbmFsIDogcHVibGljIEJhY2tpbmdTdG9yZUJhY2tlbmRDYWlybyB7CitwdWJsaWM6CisgICAg
QmFja2luZ1N0b3JlQmFja2VuZENhaXJvWDExKERpc3BsYXkqLCB1bnNpZ25lZCBsb25nIHJvb3RX
aW5kb3dJRCwgVmlzdWFsKiwgaW50IGRlcHRoLCBjb25zdCBJbnRTaXplJiwgZmxvYXQgZGV2aWNl
U2NhbGVGYWN0b3IpOworICAgIHZpcnR1YWwgfkJhY2tpbmdTdG9yZUJhY2tlbmRDYWlyb1gxMSgp
OworCisgICAgdm9pZCBzY3JvbGwoY29uc3QgSW50UmVjdCYgc2Nyb2xsUmVjdCwgY29uc3QgSW50
U2l6ZSYgc2Nyb2xsT2Zmc2V0KSBvdmVycmlkZTsKKworcHJpdmF0ZToKKyAgICBEaXNwbGF5KiBt
X2Rpc3BsYXk7CisgICAgUGl4bWFwIG1fcGl4bWFwOworICAgIEdDIG1fZ2M7Cit9OworCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBVU0UoQ0FJUk8pICYmIFBMQVRGT1JNKFgx
MSkKKworI2VuZGlmIC8vIEd0a1dpZGdldEJhY2tpbmdTdG9yZVgxMV9oCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb1V0aWxpdGllcy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb1V0aWxpdGllcy5j
cHAKaW5kZXggZmE0YzJhMS4uMTBlNTlkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9VdGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvVXRpbGl0aWVzLmNwcApAQCAtMjk0LDQg
KzI5NCwxNiBAQCB2b2lkIGNhaXJvU3VyZmFjZVNldERldmljZVNjYWxlKGNhaXJvX3N1cmZhY2Vf
dCogc3VyZmFjZSwgZG91YmxlIHhTY2FsZSwgZG91YmxlCiAgICAgQVNTRVJUX1VOVVNFRCh5U2Nh
bGUsIDEgPT0geVNjYWxlKTsKICNlbmRpZgogfQorCit2b2lkIGNhaXJvU3VyZmFjZUdldERldmlj
ZVNjYWxlKGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSwgZG91YmxlJiB4U2NhbGUsIGRvdWJsZSYg
eVNjYWxlKQoreworI2lmIEhBVkUoQ0FJUk9fU1VSRkFDRV9TRVRfREVWSUNFX1NDQUxFKQorICAg
IGNhaXJvX3N1cmZhY2VfZ2V0X2RldmljZV9zY2FsZShzdXJmYWNlLCAmeFNjYWxlLCAmeVNjYWxl
KTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHN1cmZhY2UpOworICAgIHhTY2FsZSA9IDE7Cisg
ICAgeVNjYWxlID0gMTsKKyNlbmRpZgorfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb1V0aWxp
dGllcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9VdGls
aXRpZXMuaAppbmRleCBiMjE5MDJhLi4yNzljNWJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb1V0aWxpdGllcy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvVXRpbGl0aWVzLmgKQEAgLTYxLDYg
KzYxLDcgQEAgdm9pZCBjb3B5UmVjdEZyb21PbmVTdXJmYWNlVG9Bbm90aGVyKGNhaXJvX3N1cmZh
Y2VfdCogZnJvbSwgY2Fpcm9fc3VyZmFjZV90KiB0bywKIEludFNpemUgY2Fpcm9TdXJmYWNlU2l6
ZShjYWlyb19zdXJmYWNlX3QqKTsKIHZvaWQgZmxpcEltYWdlU3VyZmFjZVZlcnRpY2FsbHkoY2Fp
cm9fc3VyZmFjZV90Kik7CiB2b2lkIGNhaXJvU3VyZmFjZVNldERldmljZVNjYWxlKGNhaXJvX3N1
cmZhY2VfdCosIGRvdWJsZSB4U2NhbGUsIGRvdWJsZSB5U2NhbGUpOwordm9pZCBjYWlyb1N1cmZh
Y2VHZXREZXZpY2VTY2FsZShjYWlyb19zdXJmYWNlX3QqLCBkb3VibGUmIHhTY2FsZSwgZG91Ymxl
JiB5U2NhbGUpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9XaWRnZXRCYWNraW5nU3RvcmVHdGtYMTEuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1dpZGdldEJhY2tpbmdTdG9yZUd0a1gxMS5jcHAKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZkODNjYTkuLjAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1dpZGdldEJhY2tpbmdTdG9yZUd0a1gxMS5jcHAKKysrIC9k
ZXYvbnVsbApAQCAtMSw5MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExLCBJZ2Fs
aWEgUy5MLgotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogIHZlcnNpb24gMiBvZiB0
aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0g
KiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi
ZSB1c2VmdWwsCi0gKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl
IGltcGxpZWQgd2FycmFudHkgb2YKLSAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogIExlc3NlciBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogIFlvdSBzaG91bGQgaGF2ZSBy
ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSAqICBMaWNl
bnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNv
ZnR3YXJlCi0gKiAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBG
bG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCi0gKi8KLQotI2luY2x1ZGUgImNvbmZp
Zy5oIgotI2luY2x1ZGUgIldpZGdldEJhY2tpbmdTdG9yZUd0a1gxMS5oIgotCi0jaWYgUExBVEZP
Uk0oR1RLKSAmJiBQTEFURk9STShYMTEpICYmIGRlZmluZWQoR0RLX1dJTkRPV0lOR19YMTEpCi0K
LSNpbmNsdWRlICJDYWlyb1V0aWxpdGllcy5oIgotI2luY2x1ZGUgIkd0a1ZlcnNpb25pbmcuaCIK
LSNpbmNsdWRlICJSZWZQdHJDYWlyby5oIgotI2luY2x1ZGUgPGNhaXJvLXhsaWIuaD4KLSNpbmNs
dWRlIDxjYWlyby5oPgotI2luY2x1ZGUgPGdkay9nZGt4Lmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKLQotV2lkZ2V0QmFja2luZ1N0b3JlR3RrWDExOjpXaWRnZXRCYWNraW5nU3RvcmVHdGtYMTEo
R3RrV2lkZ2V0KiB3aWRnZXQsIGNvbnN0IEludFNpemUmIHNpemUsIGZsb2F0IGRldmljZVNjYWxl
RmFjdG9yKQotICAgIDogV2lkZ2V0QmFja2luZ1N0b3JlKHNpemUsIGRldmljZVNjYWxlRmFjdG9y
KQotewotICAgIEludFNpemUgc2NhbGVkU2l6ZSA9IHNpemU7Ci0gICAgc2NhbGVkU2l6ZS5zY2Fs
ZShkZXZpY2VTY2FsZUZhY3Rvcik7Ci0KLSAgICBHZGtWaXN1YWwqIHZpc3VhbCA9IGd0a193aWRn
ZXRfZ2V0X3Zpc3VhbCh3aWRnZXQpOwotICAgIEdka1NjcmVlbiogc2NyZWVuID0gZ2RrX3Zpc3Vh
bF9nZXRfc2NyZWVuKHZpc3VhbCk7Ci0gICAgbV9kaXNwbGF5ID0gR0RLX1NDUkVFTl9YRElTUExB
WShzY3JlZW4pOwotICAgIG1fcGl4bWFwID0gWENyZWF0ZVBpeG1hcChtX2Rpc3BsYXksIEdES19X
SU5ET1dfWElEKGdka19zY3JlZW5fZ2V0X3Jvb3Rfd2luZG93KHNjcmVlbikpLAotICAgICAgICBz
Y2FsZWRTaXplLndpZHRoKCksIHNjYWxlZFNpemUuaGVpZ2h0KCksIGdka192aXN1YWxfZ2V0X2Rl
cHRoKHZpc3VhbCkpOwotICAgIG1fZ2MgPSBYQ3JlYXRlR0MobV9kaXNwbGF5LCBtX3BpeG1hcCwg
MCwgMCk7Ci0KLSAgICBtX3N1cmZhY2UgPSBhZG9wdFJlZihjYWlyb194bGliX3N1cmZhY2VfY3Jl
YXRlKG1fZGlzcGxheSwgbV9waXhtYXAsCi0gICAgICAgIEdES19WSVNVQUxfWFZJU1VBTCh2aXN1
YWwpLCBzY2FsZWRTaXplLndpZHRoKCksIHNjYWxlZFNpemUuaGVpZ2h0KCkpKTsKLQotICAgIGNh
aXJvU3VyZmFjZVNldERldmljZVNjYWxlKG1fc3VyZmFjZS5nZXQoKSwgZGV2aWNlU2NhbGVGYWN0
b3IsIGRldmljZVNjYWxlRmFjdG9yKTsKLX0KLQotV2lkZ2V0QmFja2luZ1N0b3JlR3RrWDExOjp+
V2lkZ2V0QmFja2luZ1N0b3JlR3RrWDExKCkKLXsKLSAgICAvLyBUaGUgcGl4bWFwIG5lZWRzIHRv
IGV4aXN0IHdoZW4gdGhlIHN1cmZhY2UgaXMgZGVzdHJveWVkLCBzbyBiZWdpbiBieSBjbGVhcmlu
ZyBpdC4KLSAgICBtX3N1cmZhY2UuY2xlYXIoKTsKLSAgICBYRnJlZVBpeG1hcChtX2Rpc3BsYXks
IG1fcGl4bWFwKTsKLSAgICBYRnJlZUdDKG1fZGlzcGxheSwgbV9nYyk7Ci19Ci0KLWNhaXJvX3N1
cmZhY2VfdCogV2lkZ2V0QmFja2luZ1N0b3JlR3RrWDExOjpjYWlyb1N1cmZhY2UoKQotewotICAg
IHJldHVybiBtX3N1cmZhY2UuZ2V0KCk7Ci19Ci0KLXZvaWQgV2lkZ2V0QmFja2luZ1N0b3JlR3Rr
WDExOjpzY3JvbGwoY29uc3QgSW50UmVjdCYgc2Nyb2xsUmVjdCwgY29uc3QgSW50U2l6ZSYgc2Ny
b2xsT2Zmc2V0KQotewotICAgIEludFJlY3QgdGFyZ2V0UmVjdChzY3JvbGxSZWN0KTsKLSAgICB0
YXJnZXRSZWN0Lm1vdmUoc2Nyb2xsT2Zmc2V0KTsKLSAgICB0YXJnZXRSZWN0LmludGVyc2VjdChz
Y3JvbGxSZWN0KTsKLSAgICBpZiAodGFyZ2V0UmVjdC5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIHRhcmdldFJlY3Quc2NhbGUobV9kZXZpY2VTY2FsZUZhY3Rvcik7Ci0KLSAgICBJ
bnRTaXplIHNjYWxlZFNjcm9sbE9mZnNldCA9IHNjcm9sbE9mZnNldDsKLSAgICBzY2FsZWRTY3Jv
bGxPZmZzZXQuc2NhbGUobV9kZXZpY2VTY2FsZUZhY3Rvcik7Ci0KLSAgICBjYWlyb19zdXJmYWNl
X2ZsdXNoKG1fc3VyZmFjZS5nZXQoKSk7Ci0gICAgWENvcHlBcmVhKG1fZGlzcGxheSwgbV9waXht
YXAsIG1fcGl4bWFwLCBtX2djLCAKLSAgICAgICAgdGFyZ2V0UmVjdC54KCkgLSBzY2FsZWRTY3Jv
bGxPZmZzZXQud2lkdGgoKSwgdGFyZ2V0UmVjdC55KCkgLSBzY2FsZWRTY3JvbGxPZmZzZXQuaGVp
Z2h0KCksCi0gICAgICAgIHRhcmdldFJlY3Qud2lkdGgoKSwgdGFyZ2V0UmVjdC5oZWlnaHQoKSwK
LSAgICAgICAgdGFyZ2V0UmVjdC54KCksIHRhcmdldFJlY3QueSgpKTsKLSAgICBjYWlyb19zdXJm
YWNlX21hcmtfZGlydHlfcmVjdGFuZ2xlKG1fc3VyZmFjZS5nZXQoKSwKLSAgICAgICAgdGFyZ2V0
UmVjdC54KCksIHRhcmdldFJlY3QueSgpLAotICAgICAgICB0YXJnZXRSZWN0LndpZHRoKCksIHRh
cmdldFJlY3QuaGVpZ2h0KCkpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRp
ZiAvLyBQTEFURk9STShHVEspICYmIFBMQVRGT1JNKFgxMSkgJiYgZGVmaW5lZChHREtfV0lORE9X
SU5HX1gxMSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9XaWRnZXRC
YWNraW5nU3RvcmVHdGtYMTEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9XaWRnZXRC
YWNraW5nU3RvcmVHdGtYMTEuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTg0MjUx
MC4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvV2lkZ2V0QmFja2lu
Z1N0b3JlR3RrWDExLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDEzLCBJZ2FsaWEgUy5MLgotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZnJl
ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiAgbW9kaWZ5IGl0
IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotICogIExp
Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhl
cgotICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkg
bGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRo
ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJB
TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqICBNRVJDSEFOVEFC
SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQot
ICogIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgot
ICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2Vu
ZXJhbCBQdWJsaWMKLSAqICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3Qs
IHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0gKiAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJh
bmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCi0g
Ki8KLQotI2lmbmRlZiBXaWRnZXRCYWNraW5nU3RvcmVHdGtYMTFfaAotI2RlZmluZSBXaWRnZXRC
YWNraW5nU3RvcmVHdGtYMTFfaAotCi0jaW5jbHVkZSAiV2lkZ2V0QmFja2luZ1N0b3JlLmgiCi0j
aW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotCi0jaWYgUExBVEZPUk0oR1RLKSAmJiBQTEFURk9STShY
MTEpICYmIGRlZmluZWQoR0RLX1dJTkRPV0lOR19YMTEpCi0jaW5jbHVkZSA8WDExL1hsaWIuaD4K
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBXaWRnZXRCYWNraW5nU3RvcmVHdGtYMTEg
OiBwdWJsaWMgV2lkZ2V0QmFja2luZ1N0b3JlIHsKLQotcHVibGljOgotICAgIFdpZGdldEJhY2tp
bmdTdG9yZUd0a1gxMShHdGtXaWRnZXQqLCBjb25zdCBJbnRTaXplJiwgZmxvYXQgZGV2aWNlU2Nh
bGVGYWN0b3IpOwotICAgIH5XaWRnZXRCYWNraW5nU3RvcmVHdGtYMTEoKTsKLSAgICBjYWlyb19z
dXJmYWNlX3QqIGNhaXJvU3VyZmFjZSgpOwotICAgIHZvaWQgc2Nyb2xsKGNvbnN0IEludFJlY3Qm
IHNjcm9sbFJlY3QsIGNvbnN0IEludFNpemUmIHNjcm9sbE9mZnNldCk7Ci0KLXByaXZhdGU6Ci0g
ICAgRGlzcGxheSogbV9kaXNwbGF5OwotICAgIFBpeG1hcCBtX3BpeG1hcDsKLSAgICBHQyBtX2dj
OwotICAgIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IG1fc3VyZmFjZTsKLX07Ci0KLX0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIFBMQVRGT1JNKEdUSykgJiYgUExBVEZPUk0oWDEx
KSAmJiBkZWZpbmVkKEdES19XSU5ET1dJTkdfWDExKQotCi0jZW5kaWYgLy8gR3RrV2lkZ2V0QmFj
a2luZ1N0b3JlWDExX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBmNjY3MzNkLi42MjA2ZDZiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMjIgQEAKKzIwMTQtMTAtMjMgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dh
cmNpYUBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdW0NhaXJvXSBSZW1vdmUgR1RLIGRlcGVu
ZGVuY3kgb2YgV2lkZ2V0QmFja2luZ1N0b3JlR3RrWDExCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzgwMDQKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9CYWNraW5nU3RvcmUuaDogUmVu
YW1lIG1fYmFja2luZ1N0b3JlIGFzIG1fYmFja2VuZCwKKyAgICAgICAgc2luY2UgaXQncyBhIGJp
dCBjb25mdXNpbmcgdGhhdCBhIEJhY2tpbmdTdG9yZSBjbGFzcyBoYXMgYQorICAgICAgICBtX2Jh
Y2tpbmdTdG9yZSBtZW1iZXIgYW5kIFdpZGdldEJhY2tpbmdTdG9yZSBoYXMgYmVlbiByZW5hbWVk
IGFzCisgICAgICAgIEJhY2tpbmdTdG9yZUJhY2tlbmRDYWlyby4KKyAgICAgICAgKiBVSVByb2Nl
c3MvY2Fpcm8vQmFja2luZ1N0b3JlQ2Fpcm8uY3BwOgorICAgICAgICAoV2ViS2l0OjpCYWNraW5n
U3RvcmU6OmNyZWF0ZUJhY2tlbmQpOiBIZWxwZXIgZnVuY3Rpb24gdG8gY3JlYXRlCisgICAgICAg
IHRoZSBCYWNraW5nU3RvcmUgYmFja2VuZCBkZXBlbmRpbmcgb24gdGhlIHBsYXRmb3JtLgorICAg
ICAgICAoV2ViS2l0OjpCYWNraW5nU3RvcmU6OnBhaW50KTogVXNlIG1fYmFja2VuZCBpbnN0ZWFk
IG9mIG1fYmFja2luZ1N0b3JlLgorICAgICAgICAoV2ViS2l0OjpCYWNraW5nU3RvcmU6OmluY29y
cG9yYXRlVXBkYXRlKTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6OkJhY2tpbmdTdG9yZTo6c2Ny
b2xsKTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6OmNyZWF0ZUJhY2tpbmdTdG9yZUZvckdUSyk6
IERlbGV0ZWQuCisKIDIwMTQtMTAtMjIgIEJlbmphbWluIFBvdWxhaW4gIDxicG91bGFpbkBhcHBs
ZS5jb20+CiAKICAgICAgICAgW2lPUyBXSzJdIFByb3RlY3QgV0tXZWJWaWV3IGR5bmFtaWMgdmll
d3BvcnQgY2hhbmdlIGFnYWluc3QgZW1wdHkgc2l6ZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9CYWNraW5nU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9C
YWNraW5nU3RvcmUuaAppbmRleCBjNGZkMDhjLi4xNGRlMWY0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQmFja2luZ1N0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0JhY2tpbmdTdG9yZS5oCkBAIC0zMCw4ICszMCw3IEBACiAjaW5jbHVkZSA8d3RmL05v
bmNvcHlhYmxlLmg+CiAKICNpZiBVU0UoQ0FJUk8pCi0jaW5jbHVkZSA8UmVmUHRyQ2Fpcm8uaD4K
LSNpbmNsdWRlIDxXZWJDb3JlL1dpZGdldEJhY2tpbmdTdG9yZS5oPgorI2luY2x1ZGUgPFdlYkNv
cmUvQmFja2luZ1N0b3JlQmFja2VuZENhaXJvLmg+CiAjZW5kaWYKIAogbmFtZXNwYWNlIFdlYktp
dCB7CkBAIC02MSwxMiArNjAsMTUgQEAgcHJpdmF0ZToKICAgICB2b2lkIGluY29ycG9yYXRlVXBk
YXRlKFNoYXJlYWJsZUJpdG1hcCosIGNvbnN0IFVwZGF0ZUluZm8mKTsKICAgICB2b2lkIHNjcm9s
bChjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBzY3JvbGxSZWN0LCBjb25zdCBXZWJDb3JlOjpJbnRT
aXplJiBzY3JvbGxPZmZzZXQpOwogCisjaWYgVVNFKENBSVJPKQorICAgIHN0ZDo6dW5pcXVlX3B0
cjxXZWJDb3JlOjpCYWNraW5nU3RvcmVCYWNrZW5kQ2Fpcm8+IGNyZWF0ZUJhY2tlbmQoKTsKKyNl
bmRpZgorCiAgICAgV2ViQ29yZTo6SW50U2l6ZSBtX3NpemU7CiAgICAgZmxvYXQgbV9kZXZpY2VT
Y2FsZUZhY3RvcjsKICAgICBXZWJQYWdlUHJveHkmIG1fd2ViUGFnZVByb3h5OwotCiAjaWYgVVNF
KENBSVJPKQotICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpXaWRnZXRCYWNraW5nU3RvcmU+
IG1fYmFja2luZ1N0b3JlOworICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpCYWNraW5nU3Rv
cmVCYWNrZW5kQ2Fpcm8+IG1fYmFja2VuZDsKICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL2NhaXJvL0JhY2tpbmdTdG9yZUNhaXJvLmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9jYWlyby9CYWNraW5nU3RvcmVDYWlyby5jcHAKaW5kZXggNTU2
NzczYi4uYjQ0YTI5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2NhaXJv
L0JhY2tpbmdTdG9yZUNhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvY2Fp
cm8vQmFja2luZ1N0b3JlQ2Fpcm8uY3BwCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdo
dCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTEgSWdhbGlhIFMuTC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSwyMDE0IElnYWxpYSBT
LkwuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMwLDYyICszMCw2OSBAQAog
I2luY2x1ZGUgIlNoYXJlYWJsZUJpdG1hcC5oIgogI2luY2x1ZGUgIlVwZGF0ZUluZm8uaCIKICNp
bmNsdWRlICJXZWJQYWdlUHJveHkuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0JhY2tpbmdTdG9yZUJh
Y2tlbmRDYWlyb0ltcGwuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0NhaXJvVXRpbGl0aWVzLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHQuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1dp
ZGdldEJhY2tpbmdTdG9yZUNhaXJvLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9SZWZQdHJDYWlyby5o
PgogI2luY2x1ZGUgPGNhaXJvLmg+CiAKICNpZiBQTEFURk9STShHVEspICYmIFBMQVRGT1JNKFgx
MSkgJiYgZGVmaW5lZChHREtfV0lORE9XSU5HX1gxMSkKLSNpbmNsdWRlIDxXZWJDb3JlL1dpZGdl
dEJhY2tpbmdTdG9yZUd0a1gxMS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvQmFja2luZ1N0b3JlQmFj
a2VuZENhaXJvWDExLmg+CiAjaW5jbHVkZSA8Z2RrL2dka3guaD4KICNlbmRpZgogCi0jaWYgUExB
VEZPUk0oRUZMKQotI2luY2x1ZGUgIkV3a1ZpZXcuaCIKLSNlbmRpZgotCiB1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLSNpZiBQTEFURk9STShHVEspCi1z
dGF0aWMgc3RkOjp1bmlxdWVfcHRyPFdpZGdldEJhY2tpbmdTdG9yZT4gY3JlYXRlQmFja2luZ1N0
b3JlRm9yR1RLKEd0a1dpZGdldCogd2lkZ2V0LCBjb25zdCBJbnRTaXplJiBzaXplLCBmbG9hdCBk
ZXZpY2VTY2FsZUZhY3RvcikKK3N0ZDo6dW5pcXVlX3B0cjxCYWNraW5nU3RvcmVCYWNrZW5kQ2Fp
cm8+IEJhY2tpbmdTdG9yZTo6Y3JlYXRlQmFja2VuZCgpCiB7Ci0jaWYgUExBVEZPUk0oWDExKSAm
JiBkZWZpbmVkKEdES19XSU5ET1dJTkdfWDExKQorI2lmIFBMQVRGT1JNKEdUSykgJiYgZGVmaW5l
ZChHREtfV0lORE9XSU5HX1gxMSkKICAgICBHZGtEaXNwbGF5KiBkaXNwbGF5ID0gZ2RrX2Rpc3Bs
YXlfbWFuYWdlcl9nZXRfZGVmYXVsdF9kaXNwbGF5KGdka19kaXNwbGF5X21hbmFnZXJfZ2V0KCkp
OwotICAgIGlmIChHREtfSVNfWDExX0RJU1BMQVkoZGlzcGxheSkpCi0gICAgICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPFdpZGdldEJhY2tpbmdTdG9yZUd0a1gxMT4od2lkZ2V0LCBzaXplLCBk
ZXZpY2VTY2FsZUZhY3Rvcik7CisgICAgaWYgKEdES19JU19YMTFfRElTUExBWShkaXNwbGF5KSkg
eworICAgICAgICBHZGtWaXN1YWwqIHZpc3VhbCA9IGd0a193aWRnZXRfZ2V0X3Zpc3VhbChtX3dl
YlBhZ2VQcm94eS52aWV3V2lkZ2V0KCkpOworICAgICAgICBHZGtTY3JlZW4qIHNjcmVlbiA9IGdk
a192aXN1YWxfZ2V0X3NjcmVlbih2aXN1YWwpOworICAgICAgICByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxCYWNraW5nU3RvcmVCYWNrZW5kQ2Fpcm9YMTE+KEdES19TQ1JFRU5fWERJU1BMQVkoc2Ny
ZWVuKSwgR0RLX1dJTkRPV19YSUQoZ2RrX3NjcmVlbl9nZXRfcm9vdF93aW5kb3coc2NyZWVuKSks
CisgICAgICAgICAgICBHREtfVklTVUFMX1hWSVNVQUwodmlzdWFsKSwgZ2RrX3Zpc3VhbF9nZXRf
ZGVwdGgodmlzdWFsKSwgbV9zaXplLCBtX2RldmljZVNjYWxlRmFjdG9yKTsKKyAgICB9CiAjZW5k
aWYKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxXaWRnZXRCYWNraW5nU3RvcmVDYWlybz4o
d2lkZ2V0LCBzaXplLCBkZXZpY2VTY2FsZUZhY3Rvcik7Ci19CisKKyAgICBJbnRTaXplIHNjYWxl
ZFNpemUgPSBtX3NpemU7CisgICAgc2NhbGVkU2l6ZS5zY2FsZShtX2RldmljZVNjYWxlRmFjdG9y
KTsKKworI2lmIFBMQVRGT1JNKEdUSykKKyAgICBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBzdXJm
YWNlID0gYWRvcHRSZWYoZ2RrX3dpbmRvd19jcmVhdGVfc2ltaWxhcl9zdXJmYWNlKGd0a193aWRn
ZXRfZ2V0X3dpbmRvdyhtX3dlYlBhZ2VQcm94eS52aWV3V2lkZ2V0KCkpLAorICAgICAgICBDQUlS
T19DT05URU5UX0NPTE9SX0FMUEhBLCBzY2FsZWRTaXplLndpZHRoKCksIHNjYWxlZFNpemUuaGVp
Z2h0KCkpKTsKKyNlbHNlCisgICAgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gc3VyZmFjZSA9IGFk
b3B0UmVmKGNhaXJvX2ltYWdlX3N1cmZhY2VfY3JlYXRlKENBSVJPX0ZPUk1BVF9BUkdCMzIsIHNj
YWxlZFNpemUud2lkdGgoKSwgc2NhbGVkU2l6ZS5oZWlnaHQoKSkpOwogI2VuZGlmCiAKKyAgICBj
YWlyb1N1cmZhY2VTZXREZXZpY2VTY2FsZShzdXJmYWNlLmdldCgpLCBtX2RldmljZVNjYWxlRmFj
dG9yLCBtX2RldmljZVNjYWxlRmFjdG9yKTsKKyAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxC
YWNraW5nU3RvcmVCYWNrZW5kQ2Fpcm9JbXBsPihzdXJmYWNlLmdldCgpLCBtX3NpemUpOworfQor
CiB2b2lkIEJhY2tpbmdTdG9yZTo6cGFpbnQoY2Fpcm9fdCogY29udGV4dCwgY29uc3QgSW50UmVj
dCYgcmVjdCkKIHsKLSAgICBBU1NFUlQobV9iYWNraW5nU3RvcmUpOworICAgIEFTU0VSVChtX2Jh
Y2tlbmQpOwogCiAgICAgY2Fpcm9fc2V0X29wZXJhdG9yKGNvbnRleHQsIENBSVJPX09QRVJBVE9S
X1NPVVJDRSk7Ci0gICAgY2Fpcm9fc2V0X3NvdXJjZV9zdXJmYWNlKGNvbnRleHQsIG1fYmFja2lu
Z1N0b3JlLT5jYWlyb1N1cmZhY2UoKSwgMCwgMCk7CisgICAgY2Fpcm9fc2V0X3NvdXJjZV9zdXJm
YWNlKGNvbnRleHQsIG1fYmFja2VuZC0+c3VyZmFjZSgpLCAwLCAwKTsKICAgICBjYWlyb19yZWN0
YW5nbGUoY29udGV4dCwgcmVjdC54KCksIHJlY3QueSgpLCByZWN0LndpZHRoKCksIHJlY3QuaGVp
Z2h0KCkpOwogICAgIGNhaXJvX2ZpbGwoY29udGV4dCk7CiB9CiAKIHZvaWQgQmFja2luZ1N0b3Jl
OjppbmNvcnBvcmF0ZVVwZGF0ZShTaGFyZWFibGVCaXRtYXAqIGJpdG1hcCwgY29uc3QgVXBkYXRl
SW5mbyYgdXBkYXRlSW5mbykKIHsKLSAgICBpZiAoIW1fYmFja2luZ1N0b3JlKQotI2lmIFBMQVRG
T1JNKEVGTCkKLSAgICAgICAgbV9iYWNraW5nU3RvcmUgPSBzdGQ6Om1ha2VfdW5pcXVlPFdpZGdl
dEJhY2tpbmdTdG9yZUNhaXJvPihFd2tWaWV3Ojp0b0V2YXNPYmplY3QodG9BUEkoJm1fd2ViUGFn
ZVByb3h5KSksIHNpemUoKSwgZGV2aWNlU2NhbGVGYWN0b3IoKSk7Ci0jZWxzZQotICAgICAgICBt
X2JhY2tpbmdTdG9yZSA9IGNyZWF0ZUJhY2tpbmdTdG9yZUZvckdUSyhtX3dlYlBhZ2VQcm94eS52
aWV3V2lkZ2V0KCksIHNpemUoKSwgZGV2aWNlU2NhbGVGYWN0b3IoKSk7Ci0jZW5kaWYKKyAgICBp
ZiAoIW1fYmFja2VuZCkKKyAgICAgICAgbV9iYWNrZW5kID0gY3JlYXRlQmFja2VuZCgpOwogCiAg
ICAgc2Nyb2xsKHVwZGF0ZUluZm8uc2Nyb2xsUmVjdCwgdXBkYXRlSW5mby5zY3JvbGxPZmZzZXQp
OwogCiAgICAgLy8gUGFpbnQgYWxsIHVwZGF0ZSByZWN0cy4KICAgICBJbnRQb2ludCB1cGRhdGVS
ZWN0TG9jYXRpb24gPSB1cGRhdGVJbmZvLnVwZGF0ZVJlY3RCb3VuZHMubG9jYXRpb24oKTsKLSAg
ICBSZWZQdHI8Y2Fpcm9fdD4gY29udGV4dChhZG9wdFJlZihjYWlyb19jcmVhdGUobV9iYWNraW5n
U3RvcmUtPmNhaXJvU3VyZmFjZSgpKSkpOworICAgIFJlZlB0cjxjYWlyb190PiBjb250ZXh0ID0g
YWRvcHRSZWYoY2Fpcm9fY3JlYXRlKG1fYmFja2VuZC0+c3VyZmFjZSgpKSk7CiAgICAgR3JhcGhp
Y3NDb250ZXh0IGdyYXBoaWNzQ29udGV4dChjb250ZXh0LmdldCgpKTsKLSAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IHVwZGF0ZUluZm8udXBkYXRlUmVjdHMuc2l6ZSgpOyArK2kpIHsKLSAgICAg
ICAgSW50UmVjdCB1cGRhdGVSZWN0ID0gdXBkYXRlSW5mby51cGRhdGVSZWN0c1tpXTsKKyAgICBm
b3IgKGNvbnN0IGF1dG8mIHVwZGF0ZVJlY3QgOiB1cGRhdGVJbmZvLnVwZGF0ZVJlY3RzKSB7CiAg
ICAgICAgIEludFJlY3Qgc3JjUmVjdCA9IHVwZGF0ZVJlY3Q7CiAgICAgICAgIHNyY1JlY3QubW92
ZSgtdXBkYXRlUmVjdExvY2F0aW9uLngoKSwgLXVwZGF0ZVJlY3RMb2NhdGlvbi55KCkpOwogICAg
ICAgICBiaXRtYXAtPnBhaW50KGdyYXBoaWNzQ29udGV4dCwgZGV2aWNlU2NhbGVGYWN0b3IoKSwg
dXBkYXRlUmVjdC5sb2NhdGlvbigpLCBzcmNSZWN0KTsKQEAgLTk3LDggKzEwNCw4IEBAIHZvaWQg
QmFja2luZ1N0b3JlOjpzY3JvbGwoY29uc3QgSW50UmVjdCYgc2Nyb2xsUmVjdCwgY29uc3QgSW50
U2l6ZSYgc2Nyb2xsT2Zmc2V0CiAgICAgaWYgKHNjcm9sbE9mZnNldC5pc1plcm8oKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgQVNTRVJUKG1fYmFja2luZ1N0b3JlKTsKLSAgICBtX2JhY2tpbmdT
dG9yZS0+c2Nyb2xsKHNjcm9sbFJlY3QsIHNjcm9sbE9mZnNldCk7CisgICAgQVNTRVJUKG1fYmFj
a2VuZCk7CisgICAgbV9iYWNrZW5kLT5zY3JvbGwoc2Nyb2xsUmVjdCwgc2Nyb2xsT2Zmc2V0KTsK
IH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Cg==
</data>
<flag name="review"
          id="265122"
          type_id="1"
          status="+"
          setter="gustavo"
    />
          </attachment>
      

    </bug>

</bugzilla>