<?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>78968</bug_id>
          
          <creation_ts>2012-02-18 12:15:30 -0800</creation_ts>
          <short_desc>[GTK] [AC] Connect WebGL to the TextureMapperGL code</short_desc>
          <delta_ts>2012-03-02 13:37:21 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKitGTK</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>78969</dependson>
    
    <dependson>78970</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Martin Robinson">mrobinson</reporter>
          <assigned_to name="Martin Robinson">mrobinson</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>559804</commentid>
    <comment_count>0</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-02-18 12:15:30 -0800</bug_when>
    <thetext>Right now TextureMapperGL cannot render WebGL on GTK+.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>569779</commentid>
    <comment_count>1</comment_count>
      <attachid>129926</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-03-02 11:18:54 -0800</bug_when>
    <thetext>Created attachment 129926
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>569822</commentid>
    <comment_count>2</comment_count>
      <attachid>129926</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2012-03-02 11:57:18 -0800</bug_when>
    <thetext>Comment on attachment 129926
Patch

Looks sane.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>569892</commentid>
    <comment_count>3</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-03-02 13:37:21 -0800</bug_when>
    <thetext>Committed r109609: &lt;http://trac.webkit.org/changeset/109609&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>129926</attachid>
            <date>2012-03-02 11:18:54 -0800</date>
            <delta_ts>2012-03-02 11:57:17 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-78968-20120302111853.patch</filename>
            <type>text/plain</type>
            <size>27326</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA5NDU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWZiMTgwNDViOWE3MTcy
ZjExNGQzMWIxOTk3YjdhY2MyZjNiNWEwNi4uNTExNDZjODg4NjVmMzVkYzc3ZWYyNGFjZmZjN2Ew
MmM1YTc2MzNjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDEyLTAzLTAyICBNYXJ0
aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXSBbQUNd
IENvbm5lY3QgV2ViR0wgdG8gdGhlIFRleHR1cmVNYXBwZXJHTCBjb2RlCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03ODk2OAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gVGhpcyBpcyBj
b3ZlcmVkIGJ5IGV4aXN0aW5nIGFjY2VsZXJhdGVkIGNvbXBvc2l0aW5nIGFuZAorICAgICAgICBX
ZWJHTCB0ZXN0cy4KKworICAgICAgICBSZWx5IG9uIHRoZSBzaGFyZWQgdmVyc2lvbiBvZiBHTCBh
Y3F1aXNpdGlvbiBmcm9tIEdMQ29udGV4dC4gVGhpcyByZWR1Y2VzCisgICAgICAgIGEgbG90IG9m
IGNvZGUgYW5kIG5vdyBhbGxvd3MgdXMgdG8gY29ubmVjdCBXZWJHTCBpbnRvIHRoZSBhY2NlbGVy
YXRlZCBjb21wb3NpdGluZworICAgICAgICByZW5kZXJpbmcgcGF0aC4KKworICAgICAgICAqIEdO
VW1ha2VmaWxlLmxpc3QuYW06IEdMQ29udGV4dCBzaG91bGQgYmUgaW5jbHVkZWQgZm9yIGFsbCBY
MTEgYnVpbGRzIG5vdy4KKyAgICAgICAgVGhlcmUgYXJlIG5vIGxvbmdlciBHVEsrIHNwZWNpZmlj
IHZlcnNpb25zIG9mIEdyYXBoaWNzQ29udGV4dDNELgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dDNELmg6IEFkZCBhIGRlZmF1bHQgYXJndW1lbnQgZm9yCisgICAg
ICAgIHJlc29sdmVNdWx0aXNhbXBsaW5nSWZOZWNlc3NhcnkuIFRoaXMgd2lsbCByZXNvbHZlIHRo
ZSBlbnRpcmUgdGV4dHVyZS4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFw
aGljc0NvbnRleHQzRENhaXJvLmNwcDogR3JhcGhpY3NDb250ZXh0M0QgaXMKKyAgICAgICAgbm93
IHJlc3BvbnNpYmxlIGZvciBjcmVhdGluZyBHcmFwaGljc0NvbnRleHQzRFByaXZhdGUgaW4gdGhl
IGNvbnN0cnVjdG9yLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnBsYXRm
b3JtTGF5ZXIpOiBOb3cgcmV0dXJuIG1fcHJpdmF0ZS4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUuY3BwOiBBZGRlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUuaDogUmVu
YW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dseC9HcmFwaGljc0Nv
bnRleHQzRFByaXZhdGUuaC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nbHgvR3JhcGhp
Y3NDb250ZXh0M0RQcml2YXRlLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0wuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnJlc29sdmVNdWx0aXNhbXBsaW5nSWZOZWNlc3NhcnkpOiBQ
cm9wZXJseQorICAgICAgICBoYW5kbGUgdGhlIGRlZmF1bHQgYXJndW1lbnQuCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMQ29tbW9uLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpwcmVwYXJlVGV4dHVyZSk6
IFVzZSB0aGUgbmV3IGRlZmF1bHQgYXJndW1lbnQgbm93LgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0M0Q6OnJlYWRSZW5kZXJpbmdSZXN1bHRzKTogRGl0dG8uCisKIDIwMTItMDIt
MTggIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtH
VEtdIFtBQ10gR2VuZXJhbGl6ZSBXaW5kb3dDb250ZXh0R0wKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5s
aXN0LmFtCmluZGV4IGQxOTRlNmFjMjcxYzcyMmY0NDIwNzg0ZTcwN2U4YzkzYzgzMTRmYjcuLjNi
NzNkMDIxNWVjNDljYjgzNmMyNDRlOTdhMDBjMzE2ZmMxNjg2NmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFr
ZWZpbGUubGlzdC5hbQpAQCAtNDYxOSw2ICs0NjE5LDkgQEAgd2ViY29yZWd0a19zb3VyY2VzICs9
IFwKIAogaWYgVEFSR0VUX1gxMQogd2ViY29yZWd0a19zb3VyY2VzICs9IFwKKwlTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nbHgvR0xDb250ZXh0R0xYLmNwcCBcCisJU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0dMQ29udGV4dEd0ay5jcHAgXAorCVNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dMQ29udGV4dC5oIFwKIAlTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ndGsvR3RrV2lkZ2V0QmFja2luZ1N0b3JlWDExLmNwcCBcCiAJU291cmNl
L1dlYkNvcmUvcGx1Z2lucy9ndGsvZ3RrMnh0YmluLmMgXAogCVNvdXJjZS9XZWJDb3JlL3BsdWdp
bnMvZ3RrL2d0azJ4dGJpbi5oIFwKQEAgLTU3MzMsOCArNTczNiw4IEBAIHdlYmNvcmVfc291cmNl
cyArPSBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQU5HTEVXZWJLaXRCcmlk
Z2UuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRHJhd2luZ0J1
ZmZlckNhaXJvLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
R3JhcGhpY3NDb250ZXh0M0RDYWlyby5jcHAgXAotCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dseC9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUuY3BwIFwKLQlTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nbHgvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmggXAorCVNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dDNEUHJp
dmF0ZS5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBo
aWNzQ29udGV4dDNEUHJpdmF0ZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9ncHUvRHJhd2luZ0J1ZmZlci5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dwdS9EcmF3aW5nQnVmZmVyLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dDNELmNwcCBcCkBAIC01ODEyLDggKzU4MTUsNiBAQCBlbmRpZiAg
IyBFTkQgVVNFX1RFWFRVUkVfTUFQUEVSX0NBSVJPCiAKIGlmIFVTRV9URVhUVVJFX01BUFBFUl9H
TAogd2ViY29yZV9zb3VyY2VzICs9IFwKLQlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9HTENvbnRleHQuaCBcCi0JU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z2x4L0dMQ29udGV4dEdMWC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyU2hhZGVyTWFuYWdlci5jcHAgXApAQCAt
NTgzMyw4ICs1ODM0LDYgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmNwcCBcCiAJU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5oIFwK
IAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBs
YXRmb3JtTGF5ZXIuaAotd2ViY29yZWd0a19zb3VyY2VzICs9IFwKLQlTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9ndGsvR0xDb250ZXh0R3RrLmNwcAogZW5kaWYgICMgRU5EIFVTRV9U
RVhUVVJFX01BUFBFUl9HTAogZW5kaWYgICMgVVNFX0FDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29u
dGV4dDNELmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHQzRC5oCmluZGV4IDE3YWU5ODQ1ZjAwYmNiYmQyM2M0MjZiYjU1YzQyNWJiMDkwOWY5MTIuLmM4
MzBlNjViZTliMGYwMzZmOTQzNTUxMTliMzdhNmY0ZTA1NWQ2YjMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaApAQCAtMjYs
MTAgKzI2LDEwIEBACiAjaWZuZGVmIEdyYXBoaWNzQ29udGV4dDNEX2gKICNkZWZpbmUgR3JhcGhp
Y3NDb250ZXh0M0RfaAogCisjaW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUgIkdyYXBoaWNz
TGF5ZXIuaCIKICNpbmNsdWRlICJHcmFwaGljc1R5cGVzM0QuaCIKICNpbmNsdWRlICJQbGF0Zm9y
bVN0cmluZy5oIgotCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvTGlz
dEhhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KQEAgLTkxMyw3ICs5MTMs
NyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogICAgIGJvb2wgcmVzaGFwZUZCT3MoY29uc3QgSW50U2l6
ZSYpOwotICAgIHZvaWQgcmVzb2x2ZU11bHRpc2FtcGxpbmdJZk5lY2Vzc2FyeShjb25zdCBJbnRS
ZWN0Jik7CisgICAgdm9pZCByZXNvbHZlTXVsdGlzYW1wbGluZ0lmTmVjZXNzYXJ5KGNvbnN0IElu
dFJlY3QmID0gSW50UmVjdCgpKTsKIAogICAgIGludCBtX2N1cnJlbnRXaWR0aCwgbV9jdXJyZW50
SGVpZ2h0OwogICAgIGJvb2wgaXNSZXNvdXJjZVNhZmUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dDNEQ2Fpcm8uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0
M0RDYWlyby5jcHAKaW5kZXggZjU0MmZiOWVkNjBjNTcwODg0NTdjNWUzNmEwMzU1NzA2ZmM2MGNm
Ny4uYWQ3ZGI0MWQzZGZkNTc0OGE5MTgyMzk1YzlkNTg4YmE2ZTlhYzY3NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0M0RD
YWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3Jh
cGhpY3NDb250ZXh0M0RDYWlyby5jcHAKQEAgLTI3LDcgKzI3LDYgQEAKIAogI2luY2x1ZGUgImNv
bmZpZy5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCi0jaW5jbHVkZSAiUGxhdGZv
cm1Db250ZXh0Q2Fpcm8uaCIKIAogI2lmIEVOQUJMRShXRUJHTCkKIApAQCAtMzUsOSArMzQsMTIg
QEAKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRFByaXZhdGUuaCIKICNpbmNsdWRlICJJbWFn
ZS5oIgogI2luY2x1ZGUgIk9wZW5HTFNoaW1zLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1Db250ZXh0
Q2Fpcm8uaCIKICNpbmNsdWRlICJSZWZQdHJDYWlyby5oIgogI2luY2x1ZGUgIlNoYWRlckxhbmcu
aCIKICNpbmNsdWRlIDxjYWlyby5oPgorI2luY2x1ZGUgPHd0Zi9Ob3RGb3VuZC5oPgorI2luY2x1
ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CkBAIC00OCwxNiArNTAsMjAgQEAgUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRl
eHQzRD4gR3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZShHcmFwaGljc0NvbnRleHQzRDo6QXR0cmkK
ICAgICBpZiAocmVuZGVyU3R5bGUgPT0gUmVuZGVyRGlyZWN0bHlUb0hvc3RXaW5kb3cpCiAgICAg
ICAgIHJldHVybiAwOwogCi0gICAgT3duUHRyPEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZT4gcHJp
diA9IEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Y3JlYXRlKCk7Ci0gICAgaWYgKCFwcml2KQor
ICAgIHN0YXRpYyBib29sIGluaXRpYWxpemVkID0gZmFsc2U7CisgICAgc3RhdGljIGJvb2wgc3Vj
Y2VzcyA9IHRydWU7CisgICAgaWYgKCFpbml0aWFsaXplZCkgeworICAgICAgICBzdWNjZXNzID0g
aW5pdGlhbGl6ZU9wZW5HTFNoaW1zKCk7CisgICAgICAgIGluaXRpYWxpemVkID0gdHJ1ZTsKKyAg
ICB9CisgICAgaWYgKCFzdWNjZXNzKQogICAgICAgICByZXR1cm4gMDsKIAogICAgIFJlZlB0cjxH
cmFwaGljc0NvbnRleHQzRD4gY29udGV4dCA9IGFkb3B0UmVmKG5ldyBHcmFwaGljc0NvbnRleHQz
RChhdHRyaWJ1dGVzLCBob3N0V2luZG93LCBmYWxzZSkpOwotICAgIGNvbnRleHQtPm1fcHJpdmF0
ZSA9IHByaXYucmVsZWFzZSgpOwogICAgIHJldHVybiBjb250ZXh0LnJlbGVhc2UoKTsKIH0KIAot
R3JhcGhpY3NDb250ZXh0M0Q6OkdyYXBoaWNzQ29udGV4dDNEKEdyYXBoaWNzQ29udGV4dDNEOjpB
dHRyaWJ1dGVzIGF0dHJpYnV0ZXMsIEhvc3RXaW5kb3cqLCBib29sKQorR3JhcGhpY3NDb250ZXh0
M0Q6OkdyYXBoaWNzQ29udGV4dDNEKEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzIGF0dHJp
YnV0ZXMsIEhvc3RXaW5kb3cqIGhvc3RXaW5kb3csIGJvb2wpCiAgICAgOiBtX2N1cnJlbnRXaWR0
aCgwKQogICAgICwgbV9jdXJyZW50SGVpZ2h0KDApCiAgICAgLCBtX2F0dHJzKGF0dHJpYnV0ZXMp
CkBAIC02OCw4ICs3NCw5IEBAIEdyYXBoaWNzQ29udGV4dDNEOjpHcmFwaGljc0NvbnRleHQzRChH
cmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlcyBhdHRyaWJ1dGVzLCBICiAgICAgLCBtX211bHRp
c2FtcGxlRkJPKDApCiAgICAgLCBtX211bHRpc2FtcGxlRGVwdGhTdGVuY2lsQnVmZmVyKDApCiAg
ICAgLCBtX211bHRpc2FtcGxlQ29sb3JCdWZmZXIoMCkKKyAgICAsIG1fcHJpdmF0ZShHcmFwaGlj
c0NvbnRleHQzRFByaXZhdGU6OmNyZWF0ZSh0aGlzLCBob3N0V2luZG93KSkKIHsKLSAgICBHcmFw
aGljc0NvbnRleHQzRFByaXZhdGU6OmFkZEFjdGl2ZUdyYXBoaWNzQ29udGV4dCh0aGlzKTsKKyAg
ICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKIAogICAgIHZhbGlkYXRlQXR0cmlidXRlcygpOwogCkBA
IC0xMjMsMTAgKzEzMCw2IEBAIEdyYXBoaWNzQ29udGV4dDNEOjpHcmFwaGljc0NvbnRleHQzRChH
cmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlcyBhdHRyaWJ1dGVzLCBICiAKIEdyYXBoaWNzQ29u
dGV4dDNEOjp+R3JhcGhpY3NDb250ZXh0M0QoKQogewotICAgIEdyYXBoaWNzQ29udGV4dDNEUHJp
dmF0ZTo6cmVtb3ZlQWN0aXZlR3JhcGhpY3NDb250ZXh0KHRoaXMpOwotICAgIGlmICghbV9wcml2
YXRlLT5tX2NvbnRleHQpCi0gICAgICAgIHJldHVybjsKLQogICAgIG1ha2VDb250ZXh0Q3VycmVu
dCgpOwogICAgIDo6Z2xEZWxldGVUZXh0dXJlcygxLCAmbV90ZXh0dXJlKTsKICAgICBpZiAobV9h
dHRycy5hbnRpYWxpYXMpIHsKQEAgLTIyOCwxMCArMjMxLDkgQEAgYm9vbCBHcmFwaGljc0NvbnRl
eHQzRDo6bWFrZUNvbnRleHRDdXJyZW50KCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJl
dHVybiBtX3ByaXZhdGUtPm1ha2VDb250ZXh0Q3VycmVudCgpOwogfQotCiBQbGF0Zm9ybUdyYXBo
aWNzQ29udGV4dDNEIEdyYXBoaWNzQ29udGV4dDNEOjpwbGF0Zm9ybUdyYXBoaWNzQ29udGV4dDNE
KCkKIHsKLSAgICByZXR1cm4gbV9wcml2YXRlLT5tX2NvbnRleHQ7CisgICAgcmV0dXJuIG1fcHJp
dmF0ZS0+cGxhdGZvcm1Db250ZXh0KCk7CiB9CiAKIGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6Omlz
R0xFUzJDb21wbGlhbnQoKSBjb25zdApAQCAtMjQyLDcgKzI0NCw3IEBAIGJvb2wgR3JhcGhpY3ND
b250ZXh0M0Q6OmlzR0xFUzJDb21wbGlhbnQoKSBjb25zdAogI2lmIFVTRShBQ0NFTEVSQVRFRF9D
T01QT1NJVElORykKIFBsYXRmb3JtTGF5ZXIqIEdyYXBoaWNzQ29udGV4dDNEOjpwbGF0Zm9ybUxh
eWVyKCkgY29uc3QKIHsKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gbV9wcml2YXRlLmdldCgp
OwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjY5ZWVmNmVmY2ZhNjUxMDBmNmM0M2RkZTIxMTg3ZGI0Mzk3Y2I1ZmUKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGlj
c0NvbnRleHQzRFByaXZhdGUuY3BwCkBAIC0wLDAgKzEsOTYgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTEsIDIwMTIgSWdhbGlhIFMuTC4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNl
bnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIK
KyAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxh
dGVyIHZlcnNpb24uCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUg
aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U
WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklM
SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAq
ICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAq
ICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVy
YWwgUHVibGljCisgKiAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3
cml0ZSB0byB0aGUgRnJlZQorICogIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5r
bGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiAgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQQor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRFBy
aXZhdGUuaCIKKworI2lmIEVOQUJMRShXRUJHTCkKKworI2luY2x1ZGUgIkhvc3RXaW5kb3cuaCIK
KyNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgorCisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBP
U0lUSU5HKSAmJiBVU0UoVEVYVFVSRV9NQVBQRVIpICYmIFVTRShURVhUVVJFX01BUFBFUl9HTCkK
KyNpbmNsdWRlIDx0ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmg+CisjZW5kaWYKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitQYXNzT3duUHRyPEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZT4gR3JhcGhp
Y3NDb250ZXh0M0RQcml2YXRlOjpjcmVhdGUoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIEhv
c3RXaW5kb3cqIHdpbmRvdykKK3sKKyAgICByZXR1cm4gYWRvcHRQdHIobmV3IEdyYXBoaWNzQ29u
dGV4dDNEUHJpdmF0ZShjb250ZXh0LCB3aW5kb3cpKTsKK30KKworR3JhcGhpY3NDb250ZXh0M0RQ
cml2YXRlOjpHcmFwaGljc0NvbnRleHQzRFByaXZhdGUoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRl
eHQsIEhvc3RXaW5kb3cqIHdpbmRvdykKKyAgICA6IG1fY29udGV4dChjb250ZXh0KQorICAgICwg
bV93aW5kb3cod2luZG93KQorI2lmIFBMQVRGT1JNKEdUSykKKyAgICAsIG1fZ2xDb250ZXh0KEdM
Q29udGV4dDo6Y3JlYXRlU2hhcmluZ0NvbnRleHQoR0xDb250ZXh0OjpnZXRDb250ZXh0Rm9yV2lk
Z2V0KG1fd2luZG93LT5wbGF0Zm9ybVBhZ2VDbGllbnQoKSkpKQorI2Vsc2UKKyAgICAsIG1fZ2xD
b250ZXh0KEdMQ29udGV4dDo6Y3JlYXRlQ29udGV4dCgwLCAwKSkKKyNlbmRpZgoreworfQorCitH
cmFwaGljc0NvbnRleHQzRFByaXZhdGU6On5HcmFwaGljc0NvbnRleHQzRFByaXZhdGUoKQorewor
ICAgIEdMQ29udGV4dDo6cmVtb3ZlQWN0aXZlQ29udGV4dChtX2dsQ29udGV4dCk7Cit9CisKK2Jv
b2wgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjptYWtlQ29udGV4dEN1cnJlbnQoKQoreworICAg
IHJldHVybiBtX2dsQ29udGV4dCA/IG1fZ2xDb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSA6
IGZhbHNlOworfQorCitQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dDNEIEdyYXBoaWNzQ29udGV4dDNE
UHJpdmF0ZTo6cGxhdGZvcm1Db250ZXh0KCkKK3sKKyAgICByZXR1cm4gbV9nbENvbnRleHQgPyBt
X2dsQ29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCkgOiAwOworfQorCisjaWYgVVNFKEFDQ0VMRVJB
VEVEX0NPTVBPU0lUSU5HKSAmJiBVU0UoVEVYVFVSRV9NQVBQRVIpCit2b2lkIEdyYXBoaWNzQ29u
dGV4dDNEUHJpdmF0ZTo6cGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciogdGV4dHVy
ZU1hcHBlciwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCYgbWF0cml4LCBmbG9hdCBvcGFjaXR5LCBCaXRtYXBUZXh0dXJlKiBtYXNrKQorewor
ICAgIGlmICghbV9nbENvbnRleHQpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICh0ZXh0dXJl
TWFwcGVyLT5hY2NlbGVyYXRpb25Nb2RlKCkgIT0gVGV4dHVyZU1hcHBlcjo6T3BlbkdMTW9kZSkg
eworICAgICAgICBub3RJbXBsZW1lbnRlZCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgaWYgKG1fY29udGV4dC0+bV9hdHRycy5hbnRpYWxpYXMgJiYgbV9jb250ZXh0LT5tX2JvdW5k
RkJPID09IG1fY29udGV4dC0+bV9tdWx0aXNhbXBsZUZCTykgeworICAgICAgICBHTENvbnRleHQq
IHByZXZpb3VzQWN0aXZlQ29udGV4dCA9IEdMQ29udGV4dDo6Z2V0Q3VycmVudCgpOworCisgICAg
ICAgIGlmIChwcmV2aW91c0FjdGl2ZUNvbnRleHQgIT0gbV9nbENvbnRleHQpCisgICAgICAgICAg
ICBtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpOworCisgICAgICAgIG1fY29udGV4dC0+
cmVzb2x2ZU11bHRpc2FtcGxpbmdJZk5lY2Vzc2FyeSgpOworCisgICAgICAgIGlmIChwcmV2aW91
c0FjdGl2ZUNvbnRleHQgJiYgcHJldmlvdXNBY3RpdmVDb250ZXh0ICE9IG1fZ2xDb250ZXh0KQor
ICAgICAgICAgICAgcHJldmlvdXNBY3RpdmVDb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKTsK
KyAgICB9CisKKyAgICBUZXh0dXJlTWFwcGVyR0wqIHRleG1hcEdMID0gc3RhdGljX2Nhc3Q8VGV4
dHVyZU1hcHBlckdMKj4odGV4dHVyZU1hcHBlcik7CisgICAgVGV4dHVyZU1hcHBlckdMOjpGbGFn
cyBmbGFncyA9IFRleHR1cmVNYXBwZXJHTDo6U2hvdWxkRmxpcFRleHR1cmUgfCAobV9jb250ZXh0
LT5tX2F0dHJzLmFscGhhID8gVGV4dHVyZU1hcHBlckdMOjpTdXBwb3J0c0JsZW5kaW5nIDogMCk7
CisgICAgdGV4bWFwR0wtPmRyYXdUZXh0dXJlKG1fY29udGV4dC0+bV90ZXh0dXJlLCBmbGFncywg
RmxvYXRTaXplKDEsIDEpLCB0YXJnZXRSZWN0LCBtYXRyaXgsIG9wYWNpdHksIG1hc2spOworfQor
I2VuZGlmIC8vIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFX1dFQkdMCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dDNE
UHJpdmF0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcxN2ZkMWQ4ZGM2NDExNWUwNzljMGI3MDIyYzdlYjZmYWVm
YTRjMGQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUuaApAQCAtMCwwICsxLDU4IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDExIElnYWxpYSBTLkwuCisgKgorICogIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqICBtb2Rp
ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisg
KiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg
ZWl0aGVyCisgKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24p
IGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQg
aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkg
V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNI
QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUg
R05VCisgKiAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4K
KyAqCisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3Nl
ciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlm
IG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUKKyAqICBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1
MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogIEJvc3RvbiwgTUEgMDIxMTAtMTMw
MSBVU0EKKyAqLworCisjaWZuZGVmIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZV9oCisjZGVmaW5l
IEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZV9oCisKKyNpbmNsdWRlICJHTENvbnRleHQuaCIKKyNp
bmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+
CisKKyNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpICYmIFVTRShURVhUVVJFX01BUFBF
UikKKyNpbmNsdWRlICJUZXh0dXJlTWFwcGVyLmgiCisjZW5kaWYKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitjbGFzcyBHcmFwaGljc0NvbnRleHQzRFByaXZhdGUKKyNpZiBVU0UoQUNDRUxFUkFU
RURfQ09NUE9TSVRJTkcpICYmIFVTRShURVhUVVJFX01BUFBFUikKKyAgICA6IHB1YmxpYyBUZXh0
dXJlTWFwcGVyUGxhdGZvcm1MYXllcgorI2VuZGlmCit7CitwdWJsaWM6CisgICAgc3RhdGljIFBh
c3NPd25QdHI8R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlPiBjcmVhdGUoR3JhcGhpY3NDb250ZXh0
M0QqLCBIb3N0V2luZG93Kik7CisgICAgfkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZSgpOworICAg
IGJvb2wgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgUGxhdGZvcm1HcmFwaGljc0NvbnRleHQz
RCBwbGF0Zm9ybUNvbnRleHQoKTsKKworI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykg
JiYgVVNFKFRFWFRVUkVfTUFQUEVSKQorICAgIHZpcnR1YWwgdm9pZCBwYWludFRvVGV4dHVyZU1h
cHBlcihUZXh0dXJlTWFwcGVyKiwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXQsIGNvbnN0IFRyYW5z
Zm9ybWF0aW9uTWF0cml4JiwgZmxvYXQgb3BhY2l0eSwgQml0bWFwVGV4dHVyZSogbWFzayk7Cisj
ZW5kaWYKKworcHJpdmF0ZToKKyAgICBHcmFwaGljc0NvbnRleHQzRFByaXZhdGUoR3JhcGhpY3ND
b250ZXh0M0QqLCBIb3N0V2luZG93Kik7CisKKyAgICBHcmFwaGljc0NvbnRleHQzRCogbV9jb250
ZXh0OworICAgIEhvc3RXaW5kb3cqIG1fd2luZG93OworICAgIEdMQ29udGV4dCogbV9nbENvbnRl
eHQ7Cit9OworCit9CisKKyNlbmRpZiAvLyBHcmFwaGljc0NvbnRleHQzRFByaXZhdGVfaApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ2x4L0dyYXBoaWNzQ29u
dGV4dDNEUHJpdmF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nbHgv
R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggYTYyOGE0YmQ2ZWZlYjE3YWFlZGYyMzg2NGEwY2Y2OWMzMWE0MGI3MS4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nbHgvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmNwcAorKysgL2Rldi9udWxs
CkBAIC0xLDI1MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIElnYWxpYSBTLkwu
Ci0gKgotICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IKLSAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
TGVzc2VyIEdlbmVyYWwgUHVibGljCi0gKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNl
bnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqICBUaGlz
IGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1
bCwKLSAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll
ZCB3YXJyYW50eSBvZgotICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk
IGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotICogIExpY2Vuc2UgYWxv
bmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUKLSAqICBTb2Z0
d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAot
ICogIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EKLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgi
Ci0jaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmgiCi0KLSNpZiBFTkFCTEUoV0VC
R0wpCi0KLSNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5oIgotI2luY2x1ZGUgIk9wZW5HTFNo
aW1zLmgiCi0jaW5jbHVkZSA8R0wvZ2x4Lmg+Ci0jaW5jbHVkZSA8ZGxmY24uaD4KLQotLy8gV2Ug
ZG8gbm90IHdhbnQgdG8gY2FsbCBnbFhNYWtlQ29udGV4dEN1cnJlbnQgdXNpbmcgZGlmZmVyZW50
IERpc3BsYXkgcG9pbnRlcnMsCi0vLyBiZWNhdXNlIGl0IG1pZ2h0IGxlYWQgdG8gY3Jhc2hlcyBp
biBzb21lIGRyaXZlcnMgKGZnbHJ4KS4gV2UgdXNlIGEgc2hhcmVkIGRpc3BsYXkKLS8vIHBvaW50
ZXIgaGVyZS4KLXN0YXRpYyBEaXNwbGF5KiBnU2hhcmVkRGlzcGxheSA9IDA7Ci1zdGF0aWMgRGlz
cGxheSogc2hhcmVkRGlzcGxheSgpCi17Ci0gICAgaWYgKCFnU2hhcmVkRGlzcGxheSkKLSAgICAg
ICAgZ1NoYXJlZERpc3BsYXkgPSBYT3BlbkRpc3BsYXkoMCk7Ci0gICAgcmV0dXJuIGdTaGFyZWRE
aXNwbGF5OwotfQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLS8vIEJlY2F1c2Ugb2YgZHJpdmVy
IGJ1Z3MsIGV4aXRpbmcgdGhlIHByb2dyYW0gd2hlbiB0aGVyZSBhcmUgYWN0aXZlIHBidWZmZXJz
Ci0vLyBjYW4gY3Jhc2ggdGhlIFggc2VydmVyICh0aGlzIGhhcyBiZWVuIG9ic2VydmVkIHdpdGgg
dGhlIG9mZmljaWFsIE52aWRpYSBkcml2ZXJzKS4KLS8vIFdlIG5lZWQgdG8gZW5zdXJlIHRoYXQg
d2UgY2xlYW4gZXZlcnl0aGluZyB1cCBvbiBleGl0LiBUaGVyZSBhcmUgc2V2ZXJhbCByZWFzb25z
Ci0vLyB0aGF0IEdyYXBoaWNzQ29udGV4dDNEcyB3aWxsIHN0aWxsIGJlIGFsaXZlIGF0IGV4aXQs
IGluY2x1ZGluZyB1c2VyIGVycm9yIChtZW1vcnkKLS8vIGxlYWtzKSBhbmQgdGhlIHBhZ2UgY2Fj
aGUuIEluIGFueSBjYXNlLCB3ZSBkb24ndCB3YW50IHRoZSBYIHNlcnZlciB0byBjcmFzaC4KLXN0
YXRpYyBib29sIGNsZWFuaW5nVXBBdEV4aXQgPSBmYWxzZTsKLXN0YXRpYyBWZWN0b3I8R3JhcGhp
Y3NDb250ZXh0M0QqPiYgYWN0aXZlR3JhcGhpY3NDb250ZXh0cygpCi17Ci0gICAgREVGSU5FX1NU
QVRJQ19MT0NBTChWZWN0b3I8R3JhcGhpY3NDb250ZXh0M0QqPiwgY29udGV4dHMsICgpKTsKLSAg
ICByZXR1cm4gY29udGV4dHM7Ci19Ci0KLXZvaWQgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjph
ZGRBY3RpdmVHcmFwaGljc0NvbnRleHQoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQpCi17Ci0g
ICAgc3RhdGljIGJvb2wgYWRkZWRBdEV4aXRIYW5kbGVyID0gZmFsc2U7Ci0gICAgaWYgKCFhZGRl
ZEF0RXhpdEhhbmRsZXIpIHsKLSAgICAgICAgYXRleGl0KCZHcmFwaGljc0NvbnRleHQzRFByaXZh
dGU6OmNsZWFudXBBY3RpdmVDb250ZXh0c0F0RXhpdCk7Ci0gICAgICAgIGFkZGVkQXRFeGl0SGFu
ZGxlciA9IHRydWU7Ci0gICAgfQotICAgIGFjdGl2ZUdyYXBoaWNzQ29udGV4dHMoKS5hcHBlbmQo
Y29udGV4dCk7Ci19Ci0KLXZvaWQgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpyZW1vdmVBY3Rp
dmVHcmFwaGljc0NvbnRleHQoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQpCi17Ci0gICAgaWYg
KGNsZWFuaW5nVXBBdEV4aXQpCi0gICAgICAgIHJldHVybjsKLQotICAgIFZlY3RvcjxHcmFwaGlj
c0NvbnRleHQzRCo+JiBjb250ZXh0cyA9IGFjdGl2ZUdyYXBoaWNzQ29udGV4dHMoKTsKLSAgICBz
aXplX3QgbG9jYXRpb24gPSBjb250ZXh0cy5maW5kKGNvbnRleHQpOwotICAgIGlmIChsb2NhdGlv
biAhPSBXVEY6Om5vdEZvdW5kKQotICAgICAgICBjb250ZXh0cy5yZW1vdmUobG9jYXRpb24pOwot
fQotCi12b2lkIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Y2xlYW51cEFjdGl2ZUNvbnRleHRz
QXRFeGl0KCkKLXsKLSAgICBjbGVhbmluZ1VwQXRFeGl0ID0gdHJ1ZTsKLQotICAgIFZlY3RvcjxH
cmFwaGljc0NvbnRleHQzRCo+JiBjb250ZXh0cyA9IGFjdGl2ZUdyYXBoaWNzQ29udGV4dHMoKTsK
LSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNvbnRleHRzLnNpemUoKTsgaSsrKQotICAgICAg
ICBjb250ZXh0c1tpXS0+fkdyYXBoaWNzQ29udGV4dDNEKCk7Ci0KLSAgICBpZiAoIWdTaGFyZWRE
aXNwbGF5KQotICAgICAgICByZXR1cm47Ci0gICAgWENsb3NlRGlzcGxheShnU2hhcmVkRGlzcGxh
eSk7Ci0gICAgZ1NoYXJlZERpc3BsYXkgPSAwOwotfQotCi1QYXNzT3duUHRyPEdyYXBoaWNzQ29u
dGV4dDNEUHJpdmF0ZT4gR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpjcmVhdGUoKQotewotICAg
IGlmICghc2hhcmVkRGlzcGxheSgpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIHN0
YXRpYyBib29sIGluaXRpYWxpemVkID0gZmFsc2U7Ci0gICAgc3RhdGljIGJvb2wgc3VjY2VzcyA9
IHRydWU7Ci0gICAgaWYgKCFpbml0aWFsaXplZCkgewotICAgICAgICBzdWNjZXNzID0gaW5pdGlh
bGl6ZU9wZW5HTFNoaW1zKCk7Ci0gICAgICAgIGluaXRpYWxpemVkID0gdHJ1ZTsKLSAgICB9Ci0g
ICAgaWYgKCFzdWNjZXNzKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIEdyYXBoaWNz
Q29udGV4dDNEUHJpdmF0ZSogaW50ZXJuYWwgPSBjcmVhdGVQYnVmZmVyQ29udGV4dCgpOwotICAg
IGlmICghaW50ZXJuYWwpCi0gICAgICAgIGludGVybmFsID0gY3JlYXRlUGl4bWFwQ29udGV4dCgp
OwotICAgIGlmICghaW50ZXJuYWwpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgLy8g
VGhlIEdyYXBoaWNzQ29udGV4dDNEIGNvbnN0cnVjdG9yIHJlcXVpcmVzIHRoYXQgdGhpcyBjb250
ZXh0IGlzIHRoZSBjdXJyZW50IE9wZW5HTCBjb250ZXh0LgotICAgIGludGVybmFsLT5tYWtlQ29u
dGV4dEN1cnJlbnQoKTsKLSAgICByZXR1cm4gYWRvcHRQdHIoaW50ZXJuYWwpOwotfQotCi1HcmFw
aGljc0NvbnRleHQzRFByaXZhdGUqIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Y3JlYXRlUGJ1
ZmZlckNvbnRleHQoKQotewotICAgIGludCBmYkNvbmZpZ0F0dHJpYnV0ZXNbXSA9IHsKLSAgICAg
ICAgR0xYX0RSQVdBQkxFX1RZUEUsIEdMWF9QQlVGRkVSX0JJVCwKLSAgICAgICAgR0xYX1JFTkRF
Ul9UWVBFLCBHTFhfUkdCQV9CSVQsCi0gICAgICAgIEdMWF9SRURfU0laRSwgMSwKLSAgICAgICAg
R0xYX0dSRUVOX1NJWkUsIDEsCi0gICAgICAgIEdMWF9CTFVFX1NJWkUsIDEsCi0gICAgICAgIEdM
WF9BTFBIQV9TSVpFLCAxLAotICAgICAgICBHTFhfREVQVEhfU0laRSwgMSwKLSAgICAgICAgR0xY
X1NURU5DSUxfU0laRSwgMSwKLSAgICAgICAgR0xYX1NBTVBMRV9CVUZGRVJTLCAxLAotICAgICAg
ICBHTFhfRE9VQkxFQlVGRkVSLCBHTF9GQUxTRSwKLSAgICAgICAgR0xYX1NBTVBMRVMsIDQsCi0g
ICAgICAgIDAKLSAgICB9OwotICAgIGludCByZXR1cm5lZEVsZW1lbnRzOwotICAgIEdMWEZCQ29u
ZmlnKiBjb25maWdzID0gZ2xYQ2hvb3NlRkJDb25maWcoc2hhcmVkRGlzcGxheSgpLCAwLCBmYkNv
bmZpZ0F0dHJpYnV0ZXMsICZyZXR1cm5lZEVsZW1lbnRzKTsKLSAgICBpZiAoIWNvbmZpZ3MpIHsK
LSAgICAgICAgZmJDb25maWdBdHRyaWJ1dGVzWzIwXSA9IDA7IC8vIEF0dGVtcHQgd2l0aG91dCBh
bnRpLWFsaWFzaW5nLgotICAgICAgICBjb25maWdzID0gZ2xYQ2hvb3NlRkJDb25maWcoc2hhcmVk
RGlzcGxheSgpLCAwLCBmYkNvbmZpZ0F0dHJpYnV0ZXMsICZyZXR1cm5lZEVsZW1lbnRzKTsKLSAg
ICB9Ci0gICAgaWYgKCFyZXR1cm5lZEVsZW1lbnRzKSB7Ci0gICAgICAgIFhGcmVlKGNvbmZpZ3Mp
OwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0KLSAgICAvLyBXZSB3aWxsIGJlIHJlbmRlcmlu
ZyB0byBhIHRleHR1cmUsIHNvIG91ciBwYnVmZmVyIGRvZXMgbm90IG5lZWQgdG8gYmUgbGFyZ2Uu
Ci0gICAgc3RhdGljIGNvbnN0IGludCBwYnVmZmVyQXR0cmlidXRlc1tdID0geyBHTFhfUEJVRkZF
Ul9XSURUSCwgMSwgR0xYX1BCVUZGRVJfSEVJR0hULCAxLCAwIH07Ci0gICAgR0xYUGJ1ZmZlciBw
YnVmZmVyID0gZ2xYQ3JlYXRlUGJ1ZmZlcihzaGFyZWREaXNwbGF5KCksIGNvbmZpZ3NbMF0sIHBi
dWZmZXJBdHRyaWJ1dGVzKTsKLSAgICBpZiAoIXBidWZmZXIpIHsKLSAgICAgICAgWEZyZWUoY29u
Zmlncyk7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLQotICAgIEdMWENvbnRleHQgY29udGV4
dCA9IGdsWENyZWF0ZU5ld0NvbnRleHQoc2hhcmVkRGlzcGxheSgpLCBjb25maWdzWzBdLCBHTFhf
UkdCQV9UWVBFLCAwLCBHTF9UUlVFKTsKLSAgICBYRnJlZShjb25maWdzKTsKLSAgICBpZiAoIWNv
bnRleHQpCi0gICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiBuZXcgR3JhcGhpY3NDb250ZXh0
M0RQcml2YXRlKGNvbnRleHQsIHBidWZmZXIpOwotfQotCi1HcmFwaGljc0NvbnRleHQzRFByaXZh
dGUqIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Y3JlYXRlUGl4bWFwQ29udGV4dCgpCi17Ci0g
ICAgc3RhdGljIGludCB2aXN1YWxBdHRyaWJ1dGVzW10gPSB7Ci0gICAgICAgIEdMWF9SR0JBLAot
ICAgICAgICBHTFhfUkVEX1NJWkUsIDEsCi0gICAgICAgIEdMWF9HUkVFTl9TSVpFLCAxLAotICAg
ICAgICBHTFhfQkxVRV9TSVpFLCAxLAotICAgICAgICBHTFhfQUxQSEFfU0laRSwgMSwKLSAgICAg
ICAgR0xYX0RPVUJMRUJVRkZFUiwKLSAgICAgICAgMAotICAgIH07Ci0KLSAgICBYVmlzdWFsSW5m
byogdmlzdWFsSW5mbyA9IGdsWENob29zZVZpc3VhbChzaGFyZWREaXNwbGF5KCksIERlZmF1bHRT
Y3JlZW4oc2hhcmVkRGlzcGxheSgpKSwgdmlzdWFsQXR0cmlidXRlcyk7Ci0gICAgaWYgKCF2aXN1
YWxJbmZvKQotICAgICAgICByZXR1cm4gMDsKLSAKLSAgICBHTFhDb250ZXh0IGNvbnRleHQgPSBn
bFhDcmVhdGVDb250ZXh0KHNoYXJlZERpc3BsYXkoKSwgdmlzdWFsSW5mbywgMCwgR0xfVFJVRSk7
Ci0gICAgaWYgKCFjb250ZXh0KSB7Ci0gICAgICAgIFhGcmVlKHZpc3VhbEluZm8pOwotICAgICAg
ICByZXR1cm4gMDsKLSAgICB9Ci0KLSAgICBQaXhtYXAgcGl4bWFwID0gWENyZWF0ZVBpeG1hcChz
aGFyZWREaXNwbGF5KCksIERlZmF1bHRSb290V2luZG93KHNoYXJlZERpc3BsYXkoKSksIDEsIDEs
IHZpc3VhbEluZm8tPmRlcHRoKTsKLSAgICBpZiAoIXBpeG1hcCkgewotICAgICAgICBYRnJlZSh2
aXN1YWxJbmZvKTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCi0gICAgR0xYUGl4bWFwIGds
eFBpeG1hcCA9IGdsWENyZWF0ZUdMWFBpeG1hcChzaGFyZWREaXNwbGF5KCksIHZpc3VhbEluZm8s
IHBpeG1hcCk7Ci0gICAgaWYgKCFnbHhQaXhtYXApIHsKLSAgICAgICAgWEZyZWVQaXhtYXAoc2hh
cmVkRGlzcGxheSgpLCBwaXhtYXApOwotICAgICAgICBYRnJlZSh2aXN1YWxJbmZvKTsKLSAgICAg
ICAgcmV0dXJuIDA7Ci0gICAgfQotCi0gICAgcmV0dXJuIG5ldyBHcmFwaGljc0NvbnRleHQzRFBy
aXZhdGUoY29udGV4dCwgcGl4bWFwLCBnbHhQaXhtYXApOwotfQotCi1HcmFwaGljc0NvbnRleHQz
RFByaXZhdGU6OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZShHTFhDb250ZXh0IGNvbnRleHQsIEdM
WFBidWZmZXIgcGJ1ZmZlcikKLSAgICA6IG1fY29udGV4dChjb250ZXh0KQotICAgICwgbV9wYnVm
ZmVyKHBidWZmZXIpCi0gICAgLCBtX3BpeG1hcCgwKQotICAgICwgbV9nbHhQaXhtYXAoMCkKLXsK
LX0KLQotR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpHcmFwaGljc0NvbnRleHQzRFByaXZhdGUo
R0xYQ29udGV4dCBjb250ZXh0LCBQaXhtYXAgcGl4bWFwLCBHTFhQaXhtYXAgZ2x4UGl4bWFwKQot
ICAgIDogbV9jb250ZXh0KGNvbnRleHQpCi0gICAgLCBtX3BidWZmZXIoMCkKLSAgICAsIG1fcGl4
bWFwKHBpeG1hcCkKLSAgICAsIG1fZ2x4UGl4bWFwKGdseFBpeG1hcCkKLXsKLX0KLQotR3JhcGhp
Y3NDb250ZXh0M0RQcml2YXRlOjp+R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlKCkKLXsKLSAgICBp
ZiAobV9jb250ZXh0KSB7Ci0gICAgICAgIC8vIFRoaXMgbWF5IGJlIG5lY2Vzc2FyeSB0byBwcmV2
ZW50IGNyYXNoZXMgd2l0aCBOVmlkaWEncyBjbG9zZWQgc291cmNlIGRyaXZlcnMuIE9yaWdpbmFs
bHkKLSAgICAgICAgLy8gZnJvbSBNb3ppbGxhJ3MgM0QgY2FudmFzIGltcGxlbWVudGF0aW9uIGF0
OiBodHRwOi8vYml0YnVja2V0Lm9yZy9pbG1hcmkvY2FudmFzM2QvCi0gICAgICAgIDo6Z2xCaW5k
RnJhbWVidWZmZXJFWFQoR0xfRlJBTUVCVUZGRVJfRVhULCAwKTsKLQotICAgICAgICA6OmdsWE1h
a2VDb250ZXh0Q3VycmVudChzaGFyZWREaXNwbGF5KCksIDAsIDAsIDApOwotICAgICAgICA6Omds
WERlc3Ryb3lDb250ZXh0KHNoYXJlZERpc3BsYXkoKSwgbV9jb250ZXh0KTsKLSAgICAgICAgbV9j
b250ZXh0ID0gMDsKLSAgICB9Ci0KLSAgICBpZiAobV9wYnVmZmVyKSB7Ci0gICAgICAgIDo6Z2xY
RGVzdHJveVBidWZmZXIoc2hhcmVkRGlzcGxheSgpLCBtX3BidWZmZXIpOwotICAgICAgICBtX3Bi
dWZmZXIgPSAwOwotICAgIH0KLSAgICBpZiAobV9nbHhQaXhtYXApIHsKLSAgICAgICAgZ2xYRGVz
dHJveUdMWFBpeG1hcChzaGFyZWREaXNwbGF5KCksIG1fZ2x4UGl4bWFwKTsKLSAgICAgICAgbV9n
bHhQaXhtYXAgPSAwOwotICAgIH0KLSAgICBpZiAobV9waXhtYXApIHsKLSAgICAgICAgWEZyZWVQ
aXhtYXAoc2hhcmVkRGlzcGxheSgpLCBtX3BpeG1hcCk7Ci0gICAgICAgIG1fcGl4bWFwID0gMDsK
LSAgICB9Ci19Ci0KLWJvb2wgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjptYWtlQ29udGV4dEN1
cnJlbnQoKQotewotICAgIGlmICg6OmdsWEdldEN1cnJlbnRDb250ZXh0KCkgPT0gbV9jb250ZXh0
KQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBpZiAoIW1fY29udGV4dCkKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIGlmIChtX3BidWZmZXIpCi0gICAgICAgIHJldHVybiA6OmdsWE1ha2VD
dXJyZW50KHNoYXJlZERpc3BsYXkoKSwgbV9wYnVmZmVyLCBtX2NvbnRleHQpOwotCi0gICAgQVNT
RVJUKG1fZ2x4UGl4bWFwKTsKLSAgICByZXR1cm4gOjpnbFhNYWtlQ3VycmVudChzaGFyZWREaXNw
bGF5KCksIG1fZ2x4UGl4bWFwLCBtX2NvbnRleHQpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCi0KLSNlbmRpZiAvLyBFTkFCTEVfV0VCR0wKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dseC9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dseC9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUu
aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzNhNTAwZDBhMDA3ZjZkNDBhNzg5MmQ0
MWNlN2UzOGNhMDc0YjVlMC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nbHgvR3JhcGhpY3NDb250
ZXh0M0RQcml2YXRlLmgKKysrIC9kZXYvbnVsbApAQCAtMSw2MCArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDExIElnYWxpYSBTLkwuCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqICBtb2RpZnkgaXQg
dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0gKiAgTGlj
ZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy
Ci0gKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBs
YXRlciB2ZXJzaW9uLgotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhl
IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFO
VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogIE1FUkNIQU5UQUJJ
TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0g
KiAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0g
KiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5l
cmFsIFB1YmxpYwotICogIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwg
d3JpdGUgdG8gdGhlIEZyZWUKLSAqICBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFu
a2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EK
LSAqLwotCi0jaWZuZGVmIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZV9oCi0jZGVmaW5lIEdyYXBo
aWNzQ29udGV4dDNEUHJpdmF0ZV9oCi0KLSNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgotCi10
eXBlZGVmIHN0cnVjdCBfX0dMWGNvbnRleHRSZWMgKkdMWENvbnRleHQ7Ci10eXBlZGVmIHVuc2ln
bmVkIGxvbmcgR0xYUGJ1ZmZlcjsKLXR5cGVkZWYgdW5zaWduZWQgbG9uZyBHTFhQaXhtYXA7Ci10
eXBlZGVmIHVuc2lnbmVkIGNoYXIgR0x1Ynl0ZTsKLXR5cGVkZWYgdW5zaWduZWQgbG9uZyBQaXht
YXA7Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgR3JhcGhpY3NDb250ZXh0M0Q7Ci0K
LWNsYXNzIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZSB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBh
c3NPd25QdHI8R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlPiBjcmVhdGUoKTsKLSAgICB+R3JhcGhp
Y3NDb250ZXh0M0RQcml2YXRlKCk7Ci0gICAgYm9vbCBtYWtlQ29udGV4dEN1cnJlbnQoKTsKLQot
cHJpdmF0ZToKLSAgICBmcmllbmQgY2xhc3MgR3JhcGhpY3NDb250ZXh0M0Q7Ci0gICAgc3RhdGlj
IEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZSogY3JlYXRlUGJ1ZmZlckNvbnRleHQoKTsKLSAgICBz
dGF0aWMgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlKiBjcmVhdGVQaXhtYXBDb250ZXh0KCk7Ci0g
ICAgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlKEdMWENvbnRleHQsIEdMWFBidWZmZXIpOwotICAg
IEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZShHTFhDb250ZXh0LCBQaXhtYXAsIEdMWFBpeG1hcCk7
Ci0KLSAgICBzdGF0aWMgdm9pZCBhZGRBY3RpdmVHcmFwaGljc0NvbnRleHQoR3JhcGhpY3NDb250
ZXh0M0QqKTsKLSAgICBzdGF0aWMgdm9pZCByZW1vdmVBY3RpdmVHcmFwaGljc0NvbnRleHQoR3Jh
cGhpY3NDb250ZXh0M0QqKTsKLSAgICBzdGF0aWMgdm9pZCBjbGVhbnVwQWN0aXZlQ29udGV4dHNB
dEV4aXQoKTsKLQotICAgIEdMWENvbnRleHQgbV9jb250ZXh0OwotICAgIEdMWFBidWZmZXIgbV9w
YnVmZmVyOwotICAgIFBpeG1hcCBtX3BpeG1hcDsKLSAgICBHTFhQaXhtYXAgbV9nbHhQaXhtYXA7
Ci19OwotCi19Ci0KLSNlbmRpZiAvLyBHcmFwaGljc0NvbnRleHQzRFByaXZhdGVfaApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29u
dGV4dDNET3BlbkdMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5n
bC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTC5jcHAKaW5kZXggOGMwMDJmYWNjNDE4M2I5NDgxODA3
MDUzMWFiMjgzNzRmZDZlNGUwNi4uN2M0Nzc3ODZlYzFhOWU1NDQ3MTBjYTRhNDA1ODc1Y2FhOWQ5
Yzc4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Blbmds
L0dyYXBoaWNzQ29udGV4dDNET3BlbkdMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0wuY3BwCkBAIC0xMzUsNyAr
MTM1LDEyIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnJlc29sdmVNdWx0aXNhbXBsaW5nSWZO
ZWNlc3NhcnkoY29uc3QgSW50UmVjdCYgcmVjdCkKIHsKICAgICA6OmdsQmluZEZyYW1lYnVmZmVy
RVhUKEdMX1JFQURfRlJBTUVCVUZGRVJfRVhULCBtX211bHRpc2FtcGxlRkJPKTsKICAgICA6Omds
QmluZEZyYW1lYnVmZmVyRVhUKEdMX0RSQVdfRlJBTUVCVUZGRVJfRVhULCBtX2Zibyk7Ci0gICAg
OjpnbEJsaXRGcmFtZWJ1ZmZlckVYVChyZWN0LngoKSwgcmVjdC55KCksIHJlY3QubWF4WCgpLCBy
ZWN0Lm1heFkoKSwgcmVjdC54KCksIHJlY3QueSgpLCByZWN0Lm1heFgoKSwgcmVjdC5tYXhZKCks
IEdMX0NPTE9SX0JVRkZFUl9CSVQsIEdMX0xJTkVBUik7CisKKyAgICBJbnRSZWN0IHJlc29sdmVS
ZWN0ID0gcmVjdDsKKyAgICBpZiAocmVjdC5pc0VtcHR5KCkpCisgICAgICAgIHJlc29sdmVSZWN0
ID0gSW50UmVjdCgwLCAwLCBtX2N1cnJlbnRXaWR0aCwgbV9jdXJyZW50SGVpZ2h0KTsKKworICAg
IDo6Z2xCbGl0RnJhbWVidWZmZXJFWFQocmVzb2x2ZVJlY3QueCgpLCByZXNvbHZlUmVjdC55KCks
IHJlc29sdmVSZWN0Lm1heFgoKSwgcmVzb2x2ZVJlY3QubWF4WSgpLCByZXNvbHZlUmVjdC54KCks
IHJlc29sdmVSZWN0LnkoKSwgcmVzb2x2ZVJlY3QubWF4WCgpLCByZXNvbHZlUmVjdC5tYXhZKCks
IEdMX0NPTE9SX0JVRkZFUl9CSVQsIEdMX0xJTkVBUik7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250
ZXh0M0Q6OnJlbmRlcmJ1ZmZlclN0b3JhZ2UoR0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51bSBpbnRl
cm5hbGZvcm1hdCwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0KQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4
dDNET3BlbkdMQ29tbW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTENvbW1vbi5jcHAKaW5kZXggMDNkNGEzMmNjYzMy
NjU2NDY4M2ExZGFhYjBhODE1YTEzMDdjMWIxZS4uNTM1YWEwNjI5ZmY1NjEyYzdiNjljNjVmNTc0
NDI0MjI1ZDllODg5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMQ29tbW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xD
b21tb24uY3BwCkBAIC0xNjgsNyArMTY4LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6cHJl
cGFyZVRleHR1cmUoKQogCiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgaWYgKG1fYXR0
cnMuYW50aWFsaWFzKQotICAgICAgICByZXNvbHZlTXVsdGlzYW1wbGluZ0lmTmVjZXNzYXJ5KElu
dFJlY3QoMCwgMCwgbV9jdXJyZW50V2lkdGgsIG1fY3VycmVudEhlaWdodCkpOworICAgICAgICBy
ZXNvbHZlTXVsdGlzYW1wbGluZ0lmTmVjZXNzYXJ5KCk7CiAKICAgICA6OmdsQmluZEZyYW1lYnVm
ZmVyRVhUKEdMX0ZSQU1FQlVGRkVSX0VYVCwgbV9mYm8pOwogICAgIDo6Z2xBY3RpdmVUZXh0dXJl
KEdMX1RFWFRVUkUwKTsKQEAgLTE5MSw3ICsxOTEsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNE
OjpyZWFkUmVuZGVyaW5nUmVzdWx0cyh1bnNpZ25lZCBjaGFyICpwaXhlbHMsIGludCBwaXhlbHNT
aQogCiAgICAgYm9vbCBtdXN0UmVzdG9yZUZCTyA9IGZhbHNlOwogICAgIGlmIChtX2F0dHJzLmFu
dGlhbGlhcykgewotICAgICAgICByZXNvbHZlTXVsdGlzYW1wbGluZ0lmTmVjZXNzYXJ5KEludFJl
Y3QoMCwgMCwgbV9jdXJyZW50V2lkdGgsIG1fY3VycmVudEhlaWdodCkpOworICAgICAgICByZXNv
bHZlTXVsdGlzYW1wbGluZ0lmTmVjZXNzYXJ5KCk7CiAgICAgICAgIDo6Z2xCaW5kRnJhbWVidWZm
ZXJFWFQoR0xfRlJBTUVCVUZGRVJfRVhULCBtX2Zibyk7CiAgICAgICAgIG11c3RSZXN0b3JlRkJP
ID0gdHJ1ZTsKICAgICB9IGVsc2Ugewo=
</data>
<flag name="review"
          id="132750"
          type_id="1"
          status="+"
          setter="gustavo"
    />
          </attachment>
      

    </bug>

</bugzilla>