<?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>96350</bug_id>
          
          <creation_ts>2012-09-10 21:36:56 -0700</creation_ts>
          <short_desc>Rename NumberLocalizer to Localizer</short_desc>
          <delta_ts>2012-09-10 22:17:38 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Forms</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>96351</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Keishi Hattori">keishi</reporter>
          <assigned_to name="Keishi Hattori">keishi</assigned_to>
          <cc>tkent</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>716824</commentid>
    <comment_count>0</comment_count>
    <who name="Keishi Hattori">keishi</who>
    <bug_when>2012-09-10 21:36:56 -0700</bug_when>
    <thetext>Rename NumberLocalizer to Localizer so we can unify our localization methods into this class.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>716833</commentid>
    <comment_count>1</comment_count>
      <attachid>163276</attachid>
    <who name="Keishi Hattori">keishi</who>
    <bug_when>2012-09-10 21:54:18 -0700</bug_when>
    <thetext>Created attachment 163276
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>716836</commentid>
    <comment_count>2</comment_count>
      <attachid>163276</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-09-10 22:01:42 -0700</bug_when>
    <thetext>Comment on attachment 163276
Patch

ok
Please check revision history of NumberLocalizer.{cp,h} is correctly inherited to Localizer.{cpp,h} after landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>716844</commentid>
    <comment_count>3</comment_count>
      <attachid>163276</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-10 22:17:35 -0700</bug_when>
    <thetext>Comment on attachment 163276
Patch

Clearing flags on attachment: 163276

Committed r128147: &lt;http://trac.webkit.org/changeset/128147&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>716845</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-10 22:17:38 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>163276</attachid>
            <date>2012-09-10 21:54:18 -0700</date>
            <delta_ts>2012-09-10 22:17:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-96350-20120911135353.patch</filename>
            <type>text/plain</type>
            <size>35734</size>
            <attacher name="Keishi Hattori">keishi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI4MTQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNThmNWY4MGI5YzA1MjE5
NzZmYTk5YWI5ZTZjMTUxNDFiOGIxYzkzMC4uNGMyOGYwYjY0YzUwYmMyMzAxOTU5OWMxYTJiN2E4
YTczOThlMTc3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDEyLTA5LTEwICBLZWlz
aGkgSGF0dG9yaSAgPGtlaXNoaUB3ZWJraXQub3JnPgorCisgICAgICAgIFJlbmFtZSBOdW1iZXJM
b2NhbGl6ZXIgdG8gTG9jYWxpemVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD05NjM1MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFJlbmFtaW5nIE51bWJlckxvY2FsaXplciB0byBMb2NhbGl6ZXIgc28gd2Ug
Y2FuIHVuaWZ5IG91ciBsb2NhbGl6YXRpb24gbWV0aG9kcyBpbnRvIHRoaXMgY2xhc3MgaW4gdGhl
IGZ1dHVyZS4KKworICAgICAgICBObyBuZXcgdGVzdHMuIE5vIGJlaGF2aW9yIGNoYW5nZS4KKwor
ICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9Mb2NhbGVJQ1UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TG9jYWxlSUNVOjppbml0aWFsaXplTG9jYWxpemVyRGF0YSk6CisgICAg
ICAgICogcGxhdGZvcm0vdGV4dC9Mb2NhbGVJQ1UuaDoKKyAgICAgICAgKExvY2FsZUlDVSk6Cisg
ICAgICAgICogcGxhdGZvcm0vdGV4dC9Mb2NhbGVXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TG9jYWxlV2luOjppbml0aWFsaXplTG9jYWxpemVyRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0v
dGV4dC9Mb2NhbGVXaW4uaDoKKyAgICAgICAgKExvY2FsZVdpbik6CisgICAgICAgICogcGxhdGZv
cm0vdGV4dC9Mb2NhbGl6ZXIuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vdGV4dC9OdW1iZXJMb2NhbGl6ZXIuY3BwLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChXZWJDb3JlOjpMb2NhbGl6ZXI6On5Mb2NhbGl6ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TG9j
YWxpemVyOjpzZXRMb2NhbGl6ZXJEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkxvY2FsaXplcjo6
Y29udmVydFRvTG9jYWxpemVkTnVtYmVyKToKKyAgICAgICAgKFdlYkNvcmU6Om1hdGNoZXMpOgor
ICAgICAgICAoV2ViQ29yZTo6TG9jYWxpemVyOjpkZXRlY3RTaWduQW5kR2V0RGlnaXRSYW5nZSk6
CisgICAgICAgIChXZWJDb3JlOjpMb2NhbGl6ZXI6Om1hdGNoZWREZWNpbWFsU3ltYm9sSW5kZXgp
OgorICAgICAgICAoV2ViQ29yZTo6TG9jYWxpemVyOjpjb252ZXJ0RnJvbUxvY2FsaXplZE51bWJl
cik6CisgICAgICAgIChXZWJDb3JlOjpMb2NhbGl6ZXI6OmxvY2FsaXplZERlY2ltYWxTZXBhcmF0
b3IpOgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvTG9jYWxpemVyLmg6IFJlbmFtZWQgZnJvbSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L051bWJlckxvY2FsaXplci5oLgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgIChMb2NhbGl6ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TG9jYWxp
emVyOjpMb2NhbGl6ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvbWFjL0xvY2FsZU1hYy5o
OgorICAgICAgICAoTG9jYWxlTWFjKToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L21hYy9Mb2Nh
bGVNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpMb2NhbGVNYWM6OmluaXRpYWxpemVMb2NhbGl6
ZXJEYXRhKToKKwogMjAxMi0wOS0xMCAgSm9hbm1hcmllIERpZ2dzICA8amRpZ2dzQGlnYWxpYS5j
b20+CiAKICAgICAgICAgUHJvcGVybHkgZXhwb3NlIDxsZWdlbmQ+IGVsZW1lbnRzIHRvIEFUcwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5neXBpCmluZGV4IGE5NjUyMDZhNzNmMTQ3YjFiY2YzZTJjNDNhZjFlNTE2ZTcxMWRk
YjIuLmQ1ZDY4NTgxZjliYzQ1ZjMwMTNkNWUxZTdjZjVmZGEzZWFjNDE0OGMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lmd5cGkKQEAgLTU2NzcsOCArNTY3Nyw4IEBACiAgICAgICAgICAgICAncGxhdGZvcm0vdGV4dC9M
b2NhbGl6ZWROdW1iZXIuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vdGV4dC9Mb2NhbGl6ZWRO
dW1iZXJJQ1UuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS90ZXh0L0xvY2FsaXplZE51bWJl
ck5vbmUuY3BwJywKLSAgICAgICAgICAgICdwbGF0Zm9ybS90ZXh0L051bWJlckxvY2FsaXplci5j
cHAnLAotICAgICAgICAgICAgJ3BsYXRmb3JtL3RleHQvTnVtYmVyTG9jYWxpemVyLmgnLAorICAg
ICAgICAgICAgJ3BsYXRmb3JtL3RleHQvTG9jYWxpemVyLmNwcCcsCisgICAgICAgICAgICAncGxh
dGZvcm0vdGV4dC9Mb2NhbGl6ZXIuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vdGV4dC9QYXJz
ZXJVdGlsaXRpZXMuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vdGV4dC9RdW90ZWRQcmludGFi
bGUuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vdGV4dC9RdW90ZWRQcmludGFibGUuY3BwJywK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpp
bmRleCAyZDI3NTc2ZTUzMGQzNGUxYTJmZDlmNzMxZjAxMGJmMTE5MDFhNDI4Li41Y2IwMWE5ZTgz
NTcyZTljMmJiZDcyMzA0YmI0OWUyMTQ1ZjhlNTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC02MjMwLDggKzYyMzAsOCBAQAog
CQlGNTEyMkM5MDE1NDdGQTFCMDAyOEE5M0IgLyogUGFnZVBvcHVwRHJpdmVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNTEyMkM4RjE1NDdGQTFCMDAy
OEE5M0IgLyogUGFnZVBvcHVwRHJpdmVyLmggKi87IH07CiAJCUY1MTQyQzY5MTIzRjEyQjAwMEY1
QkQ0QyAvKiBMb2NhbGl6ZWROdW1iZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEY1MTQyQzY4MTIzRjEyQjAwMEY1QkQ0QyAvKiBMb2NhbGl6ZWROdW1i
ZXIuaCAqLzsgfTsKIAkJRjUyQUQ1RTQxNTM0MjQ1RjAwNTlGQkU2IC8qIEVtcHR5Q2xpZW50cy5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNTJBRDVF
MzE1MzQyNDVGMDA1OUZCRTYgLyogRW1wdHlDbGllbnRzLmNwcCAqLzsgfTsKLQkJRjU0NEY3ODgx
NUNGQjJBODAwQUYzM0E4IC8qIE51bWJlckxvY2FsaXplci5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNTQ0Rjc4NjE1Q0ZCMkE4MDBBRjMzQTggLyog
TnVtYmVyTG9jYWxpemVyLmNwcCAqLzsgfTsKLQkJRjU0NEY3ODkxNUNGQjJBODAwQUYzM0E4IC8q
IE51bWJlckxvY2FsaXplci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRjU0NEY3ODcxNUNGQjJBODAwQUYzM0E4IC8qIE51bWJlckxvY2FsaXplci5oICov
OyB9OworCQlGNTQ0Rjc4ODE1Q0ZCMkE4MDBBRjMzQTggLyogTG9jYWxpemVyLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY1NDRGNzg2MTVDRkIyQTgw
MEFGMzNBOCAvKiBMb2NhbGl6ZXIuY3BwICovOyB9OworCQlGNTQ0Rjc4OTE1Q0ZCMkE4MDBBRjMz
QTggLyogTG9jYWxpemVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBGNTQ0Rjc4NzE1Q0ZCMkE4MDBBRjMzQTggLyogTG9jYWxpemVyLmggKi87IH07CiAJ
CUY1NUIzREFEMTI1MUYxMkQwMDNFRjI2OSAvKiBCYXNlVGV4dElucHV0VHlwZS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNTVCM0Q3OTEyNTFGMTJE
MDAzRUYyNjkgLyogQmFzZVRleHRJbnB1dFR5cGUuY3BwICovOyB9OwogCQlGNTVCM0RBRTEyNTFG
MTJEMDAzRUYyNjkgLyogQmFzZVRleHRJbnB1dFR5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY1NUIzRDdBMTI1MUYxMkQwMDNFRjI2OSAvKiBCYXNl
VGV4dElucHV0VHlwZS5oICovOyB9OwogCQlGNTVCM0RBRjEyNTFGMTJEMDAzRUYyNjkgLyogQnV0
dG9uSW5wdXRUeXBlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEY1NUIzRDdCMTI1MUYxMkQwMDNFRjI2OSAvKiBCdXR0b25JbnB1dFR5cGUuY3BwICov
OyB9OwpAQCAtMTM2MjUsOCArMTM2MjUsOCBAQAogCQlGNTIzRDMwMzAyREU0NDc2MDE4NjM1Q0Eg
LyogUmFuZ2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gUmFuZ2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9
IDg7IHVzZXNUYWJzID0gMDsgfTsKIAkJRjUyM0QzMDQwMkRFNDQ3NjAxODYzNUNBIC8qIFJhbmdl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVu
dFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJh
bmdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAw
OyB9OwogCQlGNTJBRDVFMzE1MzQyNDVGMDA1OUZCRTYgLyogRW1wdHlDbGllbnRzLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEVtcHR5Q2xpZW50cy5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUY1NDRGNzg2MTVDRkIyQTgwMEFGMzNBOCAvKiBOdW1i
ZXJMb2NhbGl6ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTnVt
YmVyTG9jYWxpemVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRjU0NEY3ODcx
NUNGQjJBODAwQUYzM0E4IC8qIE51bWJlckxvY2FsaXplci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBOdW1iZXJMb2NhbGl6ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJRjU0NEY3ODYxNUNGQjJBODAwQUYzM0E4IC8qIExvY2FsaXplci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBMb2NhbGl6ZXIuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlGNTQ0Rjc4NzE1Q0ZCMkE4MDBBRjMzQTggLyogTG9jYWxpemVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExvY2FsaXplci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlGNTVCM0Q3OTEyNTFGMTJEMDAzRUYyNjkgLyogQmFzZVRleHRJ
bnB1dFR5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQmFzZVRl
eHRJbnB1dFR5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNTVCM0Q3QTEy
NTFGMTJEMDAzRUYyNjkgLyogQmFzZVRleHRJbnB1dFR5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQmFzZVRleHRJbnB1dFR5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRjU1QjNEN0IxMjUxRjEyRDAwM0VGMjY5IC8qIEJ1dHRvbklucHV0VHlwZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBCdXR0b25JbnB1dFR5cGUuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjAwMTAsOCArMjAwMTAsOCBAQAogCQkJ
CUE1NzMyQjBDMTM2QTE2QzQwMDVDOEQ3QyAvKiBMb2NhbGl6ZWREYXRlLmggKi8sCiAJCQkJQTU3
MzJCMEUxMzZBMTcxNTAwNUM4RDdDIC8qIExvY2FsaXplZERhdGVOb25lLmNwcCAqLywKIAkJCQlG
NTE0MkM2ODEyM0YxMkIwMDBGNUJENEMgLyogTG9jYWxpemVkTnVtYmVyLmggKi8sCi0JCQkJRjU0
NEY3ODYxNUNGQjJBODAwQUYzM0E4IC8qIE51bWJlckxvY2FsaXplci5jcHAgKi8sCi0JCQkJRjU0
NEY3ODcxNUNGQjJBODAwQUYzM0E4IC8qIE51bWJlckxvY2FsaXplci5oICovLAorCQkJCUY1NDRG
Nzg2MTVDRkIyQTgwMEFGMzNBOCAvKiBMb2NhbGl6ZXIuY3BwICovLAorCQkJCUY1NDRGNzg3MTVD
RkIyQTgwMEFGMzNBOCAvKiBMb2NhbGl6ZXIuaCAqLywKIAkJCQlCQzc2QUMxMTBERDdBRDVDMDA0
MTVGMzQgLyogUGFyc2VyVXRpbGl0aWVzLmggKi8sCiAJCQkJMzc5RTM3MTQxMzczNkE2NjAwQjlF
OTE5IC8qIFF1b3RlZFByaW50YWJsZS5jcHAgKi8sCiAJCQkJMzc5RTM3MTUxMzczNkE2NjAwQjlF
OTE5IC8qIFF1b3RlZFByaW50YWJsZS5oICovLApAQCAtMjQzODcsNiArMjQzODcsNyBAQAogCQkJ
CUE1NzMyQjBEMTM2QTE2QzQwMDVDOEQ3QyAvKiBMb2NhbGl6ZWREYXRlLmggaW4gSGVhZGVycyAq
LywKIAkJCQlGNTE0MkM2OTEyM0YxMkIwMDBGNUJENEMgLyogTG9jYWxpemVkTnVtYmVyLmggaW4g
SGVhZGVycyAqLywKIAkJCQk5MzUyMDdCRTA5QkQ0MTBBMDBGMjAzOEQgLyogTG9jYWxpemVkU3Ry
aW5ncy5oIGluIEhlYWRlcnMgKi8sCisJCQkJRjU0NEY3ODkxNUNGQjJBODAwQUYzM0E4IC8qIExv
Y2FsaXplci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNFMUM0MUIwRDk4Mjk4MDAwM0IwMkYyIC8q
IExvY2F0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlBODIzOUUwMTA5QjNDRjhBMDBCNjA2NDEg
LyogTG9nZ2luZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjU2RDM3NDEwQURCQTVERTAwQTQ1NTRE
IC8qIE1haW5SZXNvdXJjZUxvYWRlci5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNDUwNCw3ICsyNDUw
NSw2IEBACiAJCQkJMUE5MjdGRDQxNDE2QTE1QjAwM0E4M0M4IC8qIG5wdHlwZXMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTkzNTAwRjMyMTNGREUzQkUwMDk5RUMyNCAvKiBOU1Njcm9sbGVySW1wRGV0
YWlscy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjU1QjNEQzgxMjUxRjEyRDAwM0VGMjY5IC8qIE51
bWJlcklucHV0VHlwZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJRjU0NEY3ODkxNUNGQjJBODAwQUYz
M0E4IC8qIE51bWJlckxvY2FsaXplci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE1NjlEMTIwRDdF
MkI4MjAwN0MzOTgzIC8qIG9iamNfY2xhc3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBNTY5RDE0
MEQ3RTJCODIwMDdDMzk4MyAvKiBvYmpjX2hlYWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE1
NjlEMTUwRDdFMkI4MjAwN0MzOTgzIC8qIG9iamNfaW5zdGFuY2UuaCBpbiBIZWFkZXJzICovLApA
QCAtMjc2OTQsNiArMjc2OTQsNyBAQAogCQkJCUY1Q0M0MkRDMTJGODAxQ0EwMEQ1RjdFMyAvKiBM
b2NhbGl6ZWROdW1iZXJNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQlDMDQ2RTFBQzEyMDhBOUZF
MDBCQTJDRjcgLyogTG9jYWxpemVkU3RyaW5ncy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzI1
QjUyQTEzMUM2RDM5MDAxODBFMTAgLyogTG9jYWxpemVkU3RyaW5nc01hYy5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQlGNTQ0Rjc4ODE1Q0ZCMkE4MDBBRjMzQTggLyogTG9jYWxpemVyLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUJDRTFDNDFDMEQ5ODI5ODEwMDNCMDJGMiAvKiBMb2NhdGlvbi5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlBODIzOUUwMDA5QjNDRjhBMDBCNjA2NDEgLyogTG9nZ2luZy5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDAyNjQ1RTBBRkRDMTlCMDA1OTE5RTIgLyogTG9nZ2lu
Z01hYy5tbSBpbiBTb3VyY2VzICovLApAQCAtMjc3ODgsNyArMjc3ODksNiBAQAogCQkJCTFBNTY5
RDBEMEQ3RTJCODIwMDdDMzk4MyAvKiBucHJ1bnRpbWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NTJGNTJFMTExNEEwMTM0RjAwQUNDMzk3IC8qIE5TU2Nyb2xsZXJJbXBEZXRhaWxzLm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJRjU1QjNEQzcxMjUxRjEyRDAwM0VGMjY5IC8qIE51bWJlcklucHV0VHlw
ZS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlGNTQ0Rjc4ODE1Q0ZCMkE4MDBBRjMzQTggLyogTnVt
YmVyTG9jYWxpemVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBNTY5RDEzMEQ3RTJCODIwMDdD
Mzk4MyAvKiBvYmpjX2NsYXNzLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE1NjlEMTYwRDdFMkI4
MjAwN0MzOTgzIC8qIG9iamNfaW5zdGFuY2UubW0gaW4gU291cmNlcyAqLywKIAkJCQkxQTU2OUQx
ODBEN0UyQjgyMDA3QzM5ODMgLyogb2JqY19ydW50aW1lLm1tIGluIFNvdXJjZXMgKi8sCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0xvY2FsZUlDVS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0xvY2FsZUlDVS5jcHAKaW5kZXggMGFiZTEyY2UzYmJm
YmQwM2IxZmIwNWNkNjE1MjYzOGU0NDVlYTExZC4uMjkwYjUyOGNhOTNlNDlhMjE2ZGViNjU1ZjA2
ZGVkOTY4OTM4MmFlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9M
b2NhbGVJQ1UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvTG9jYWxlSUNV
LmNwcApAQCAtMTEyLDcgKzExMiw3IEBAIFN0cmluZyBMb2NhbGVJQ1U6OmRlY2ltYWxUZXh0QXR0
cmlidXRlKFVOdW1iZXJGb3JtYXRUZXh0QXR0cmlidXRlIHRhZykKICAgICByZXR1cm4gU3RyaW5n
OjphZG9wdChidWZmZXIpOwogfQogCi12b2lkIExvY2FsZUlDVTo6aW5pdGlhbGl6ZU51bWJlckxv
Y2FsaXplckRhdGEoKQordm9pZCBMb2NhbGVJQ1U6OmluaXRpYWxpemVMb2NhbGl6ZXJEYXRhKCkK
IHsKICAgICBpZiAobV9kaWRDcmVhdGVEZWNpbWFsRm9ybWF0KQogICAgICAgICByZXR1cm47CkBA
IC0xMzYsNyArMTM2LDcgQEAgdm9pZCBMb2NhbGVJQ1U6OmluaXRpYWxpemVOdW1iZXJMb2NhbGl6
ZXJEYXRhKCkKICAgICBzeW1ib2xzLmFwcGVuZChkZWNpbWFsU3ltYm9sKFVOVU1fREVDSU1BTF9T
RVBBUkFUT1JfU1lNQk9MKSk7CiAgICAgc3ltYm9scy5hcHBlbmQoZGVjaW1hbFN5bWJvbChVTlVN
X0dST1VQSU5HX1NFUEFSQVRPUl9TWU1CT0wpKTsKICAgICBBU1NFUlQoc3ltYm9scy5zaXplKCkg
PT0gRGVjaW1hbFN5bWJvbHNTaXplKTsKLSAgICBzZXROdW1iZXJMb2NhbGl6ZXJEYXRhKHN5bWJv
bHMsIGRlY2ltYWxUZXh0QXR0cmlidXRlKFVOVU1fUE9TSVRJVkVfUFJFRklYKSwgZGVjaW1hbFRl
eHRBdHRyaWJ1dGUoVU5VTV9QT1NJVElWRV9TVUZGSVgpLCBkZWNpbWFsVGV4dEF0dHJpYnV0ZShV
TlVNX05FR0FUSVZFX1BSRUZJWCksIGRlY2ltYWxUZXh0QXR0cmlidXRlKFVOVU1fTkVHQVRJVkVf
U1VGRklYKSk7CisgICAgc2V0TG9jYWxpemVyRGF0YShzeW1ib2xzLCBkZWNpbWFsVGV4dEF0dHJp
YnV0ZShVTlVNX1BPU0lUSVZFX1BSRUZJWCksIGRlY2ltYWxUZXh0QXR0cmlidXRlKFVOVU1fUE9T
SVRJVkVfU1VGRklYKSwgZGVjaW1hbFRleHRBdHRyaWJ1dGUoVU5VTV9ORUdBVElWRV9QUkVGSVgp
LCBkZWNpbWFsVGV4dEF0dHJpYnV0ZShVTlVNX05FR0FUSVZFX1NVRkZJWCkpOwogfQogCiBib29s
IExvY2FsZUlDVTo6aW5pdGlhbGl6ZVNob3J0RGF0ZUZvcm1hdCgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0xvY2FsZUlDVS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vdGV4dC9Mb2NhbGVJQ1UuaAppbmRleCA3MGE5OWMzNTc3NDZhNDE3ODhkMDE4ODA2YmRk
YmM0MDYwN2Q0OGFiLi4wZjQwMjJhZDc4NDUyOGEwZTkyYmI0YzA3NzI5YTU1OWU3Y2ViOTY1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0xvY2FsZUlDVS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvTG9jYWxlSUNVLmgKQEAgLTMyLDcgKzMyLDcg
QEAKICNkZWZpbmUgTG9jYWxlSUNVX2gKIAogI2luY2x1ZGUgIkRhdGVDb21wb25lbnRzLmgiCi0j
aW5jbHVkZSAiTnVtYmVyTG9jYWxpemVyLmgiCisjaW5jbHVkZSAiTG9jYWxpemVyLmgiCiAjaW5j
bHVkZSA8dW5pY29kZS91ZGF0Lmg+CiAjaW5jbHVkZSA8dW5pY29kZS91bnVtLmg+CiAjaW5jbHVk
ZSA8d3RmL0ZvcndhcmQuaD4KQEAgLTQ0LDcgKzQ0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiAvLyBXZSBzaG91bGQgdXNlIHRoaXMgY2xhc3Mgb25seSBmb3IgTG9jYWxpemVkTnVtYmVySUNV
LmNwcCwgTG9jYWxpemVkRGF0ZUlDVS5jcHAsCiAvLyBhbmQgTG9jYWxpemVkTnVtYmVySUNVVGVz
dC5jcHAuCi1jbGFzcyBMb2NhbGVJQ1UgOiBwdWJsaWMgTnVtYmVyTG9jYWxpemVyIHsKK2NsYXNz
IExvY2FsZUlDVSA6IHB1YmxpYyBMb2NhbGl6ZXIgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNz
T3duUHRyPExvY2FsZUlDVT4gY3JlYXRlKGNvbnN0IGNoYXIqIGxvY2FsZVN0cmluZyk7CiAgICAg
c3RhdGljIExvY2FsZUlDVSogY3VycmVudExvY2FsZSgpOwpAQCAtNzIsNyArNzIsNyBAQCBwcml2
YXRlOgogICAgIGV4cGxpY2l0IExvY2FsZUlDVShjb25zdCBjaGFyKik7CiAgICAgU3RyaW5nIGRl
Y2ltYWxTeW1ib2woVU51bWJlckZvcm1hdFN5bWJvbCk7CiAgICAgU3RyaW5nIGRlY2ltYWxUZXh0
QXR0cmlidXRlKFVOdW1iZXJGb3JtYXRUZXh0QXR0cmlidXRlKTsKLSAgICB2aXJ0dWFsIHZvaWQg
aW5pdGlhbGl6ZU51bWJlckxvY2FsaXplckRhdGEoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZv
aWQgaW5pdGlhbGl6ZUxvY2FsaXplckRhdGEoKSBPVkVSUklERTsKIAogICAgIGJvb2wgZGV0ZWN0
U2lnbkFuZEdldERpZ2l0UmFuZ2UoY29uc3QgU3RyaW5nJiBpbnB1dCwgYm9vbCYgaXNOZWdhdGl2
ZSwgdW5zaWduZWQmIHN0YXJ0SW5kZXgsIHVuc2lnbmVkJiBlbmRJbmRleCk7CiAgICAgdW5zaWdu
ZWQgbWF0Y2hlZERlY2ltYWxTeW1ib2xJbmRleChjb25zdCBTdHJpbmcmIGlucHV0LCB1bnNpZ25l
ZCYgcG9zaXRpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9M
b2NhbGVXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9Mb2NhbGVXaW4uY3Bw
CmluZGV4IDY3ZWVkZGI3NTc5Yjk1ZDgwNzM5MjllNDM5MTVkYTZiMzg1NDYzNTUuLjAzMzMxYzA5
ZTRjZmMzZjJhYmY0NjE1ODdjN2JmY2Y0MTFlM2RhOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3RleHQvTG9jYWxlV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS90ZXh0L0xvY2FsZVdpbi5jcHAKQEAgLTcyMyw3ICs3MjMsNyBAQCBjb25zdCBWZWN0b3I8
U3RyaW5nPiYgTG9jYWxlV2luOjp0aW1lQU1QTUxhYmVscygpCiB9CiAjZW5kaWYKIAotdm9pZCBM
b2NhbGVXaW46OmluaXRpYWxpemVOdW1iZXJMb2NhbGl6ZXJEYXRhKCkKK3ZvaWQgTG9jYWxlV2lu
Ojppbml0aWFsaXplTG9jYWxpemVyRGF0YSgpCiB7CiAgICAgaWYgKG1fZGlkSW5pdGlhbGl6ZU51
bWJlckRhdGEpCiAgICAgICAgIHJldHVybjsKQEAgLTc5MSw3ICs3OTEsNyBAQCB2b2lkIExvY2Fs
ZVdpbjo6aW5pdGlhbGl6ZU51bWJlckxvY2FsaXplckRhdGEoKQogICAgICAgICBicmVhazsKICAg
ICB9CiAgICAgbV9kaWRJbml0aWFsaXplTnVtYmVyRGF0YSA9IHRydWU7Ci0gICAgc2V0TnVtYmVy
TG9jYWxpemVyRGF0YShzeW1ib2xzLCBlbXB0eVN0cmluZygpLCBlbXB0eVN0cmluZygpLCBuZWdh
dGl2ZVByZWZpeCwgbmVnYXRpdmVTdWZmaXgpOworICAgIHNldExvY2FsaXplckRhdGEoc3ltYm9s
cywgZW1wdHlTdHJpbmcoKSwgZW1wdHlTdHJpbmcoKSwgbmVnYXRpdmVQcmVmaXgsIG5lZ2F0aXZl
U3VmZml4KTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4
dC9Mb2NhbGVXaW4uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvTG9jYWxlV2luLmgK
aW5kZXggMzM2NjZiMzAxNTJiNjUwMWI5NTRiNGM4NzQwMGZiOWRjODZjYzdhMS4uZGEwYTc1ZGFk
MTczMWVlZWVkMjk5MzRiZWRmMzM4MDVjYzU3NWIwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vdGV4dC9Mb2NhbGVXaW4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS90ZXh0L0xvY2FsZVdpbi5oCkBAIC0zMSw3ICszMSw3IEBACiAjaWZuZGVmIExvY2FsZVdpbl9o
CiAjZGVmaW5lIExvY2FsZVdpbl9oCiAKLSNpbmNsdWRlICJOdW1iZXJMb2NhbGl6ZXIuaCIKKyNp
bmNsdWRlICJMb2NhbGl6ZXIuaCIKICNpbmNsdWRlIDx3aW5kb3dzLmg+CiAjaW5jbHVkZSA8d3Rm
L0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CkBAIC00Miw3ICs0Miw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIERhdGVDb21wb25lbnRzOwogc3RydWN0IERhdGVGb3Jt
YXRUb2tlbjsKIAotY2xhc3MgTG9jYWxlV2luIDogcHVibGljIE51bWJlckxvY2FsaXplciB7Citj
bGFzcyBMb2NhbGVXaW4gOiBwdWJsaWMgTG9jYWxpemVyIHsKIHB1YmxpYzoKICAgICBzdGF0aWMg
UGFzc093blB0cjxMb2NhbGVXaW4+IGNyZWF0ZShMQ0lEKTsKICAgICBzdGF0aWMgTG9jYWxlV2lu
KiBjdXJyZW50TG9jYWxlKCk7CkBAIC04NSw4ICs4NSw4IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxF
KENBTEVOREFSX1BJQ0tFUikKICAgICB2b2lkIGVuc3VyZVdlZWtEYXlTaG9ydExhYmVscygpOwog
I2VuZGlmCi0gICAgLy8gTnVtYmVyTG9jYWxpemVyIGZ1bmN0aW9uOgotICAgIHZpcnR1YWwgdm9p
ZCBpbml0aWFsaXplTnVtYmVyTG9jYWxpemVyRGF0YSgpIE9WRVJSSURFOworICAgIC8vIExvY2Fs
aXplciBmdW5jdGlvbjoKKyAgICB2aXJ0dWFsIHZvaWQgaW5pdGlhbGl6ZUxvY2FsaXplckRhdGEo
KSBPVkVSUklERTsKIAogICAgIExDSUQgbV9sY2lkOwogICAgIGludCBtX2Jhc2VZZWFyOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9Mb2NhbGl6ZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9Mb2NhbGl6ZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU0YTQ1
YjcyNzBhZGRkNzJjYTg2N2U0NDYyNDhjNzZkYzNlYzk1MmEKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0xvY2FsaXplci5jcHAKQEAgLTAsMCArMSwxOTUg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0Ogor
ICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisg
KiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdv
b2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJMb2NhbGl6ZXIuaCIKKworI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitMb2NhbGl6ZXI6On5Mb2NhbGl6ZXIoKQoreworfQorCit2b2lkIExvY2FsaXplcjo6c2V0TG9j
YWxpemVyRGF0YShjb25zdCBWZWN0b3I8U3RyaW5nLCBEZWNpbWFsU3ltYm9sc1NpemU+JiBzeW1i
b2xzLCBjb25zdCBTdHJpbmcmIHBvc2l0aXZlUHJlZml4LCBjb25zdCBTdHJpbmcmIHBvc2l0aXZl
U3VmZml4LCBjb25zdCBTdHJpbmcmIG5lZ2F0aXZlUHJlZml4LCBjb25zdCBTdHJpbmcmIG5lZ2F0
aXZlU3VmZml4KQoreworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc3ltYm9scy5zaXplKCk7
ICsraSkgeworICAgICAgICBBU1NFUlQoIXN5bWJvbHNbaV0uaXNFbXB0eSgpKTsKKyAgICAgICAg
bV9kZWNpbWFsU3ltYm9sc1tpXSA9IHN5bWJvbHNbaV07CisgICAgfQorICAgIG1fcG9zaXRpdmVQ
cmVmaXggPSBwb3NpdGl2ZVByZWZpeDsKKyAgICBtX3Bvc2l0aXZlU3VmZml4ID0gcG9zaXRpdmVT
dWZmaXg7CisgICAgbV9uZWdhdGl2ZVByZWZpeCA9IG5lZ2F0aXZlUHJlZml4OworICAgIG1fbmVn
YXRpdmVTdWZmaXggPSBuZWdhdGl2ZVN1ZmZpeDsKKyAgICBBU1NFUlQoIW1fcG9zaXRpdmVQcmVm
aXguaXNFbXB0eSgpIHx8ICFtX3Bvc2l0aXZlU3VmZml4LmlzRW1wdHkoKSB8fCAhbV9uZWdhdGl2
ZVByZWZpeC5pc0VtcHR5KCkgfHwgIW1fbmVnYXRpdmVTdWZmaXguaXNFbXB0eSgpKTsKKyAgICBt
X2hhc0xvY2FsaXplckRhdGEgPSB0cnVlOworfQorCitTdHJpbmcgTG9jYWxpemVyOjpjb252ZXJ0
VG9Mb2NhbGl6ZWROdW1iZXIoY29uc3QgU3RyaW5nJiBpbnB1dCkKK3sKKyAgICBpbml0aWFsaXpl
TG9jYWxpemVyRGF0YSgpOworICAgIGlmICghbV9oYXNMb2NhbGl6ZXJEYXRhIHx8IGlucHV0Lmlz
RW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIGlucHV0OworCisgICAgdW5zaWduZWQgaSA9IDA7Cisg
ICAgYm9vbCBpc05lZ2F0aXZlID0gZmFsc2U7CisgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwor
ICAgIGJ1aWxkZXIucmVzZXJ2ZUNhcGFjaXR5KGlucHV0Lmxlbmd0aCgpKTsKKworICAgIGlmIChp
bnB1dFswXSA9PSAnLScpIHsKKyAgICAgICAgKytpOworICAgICAgICBpc05lZ2F0aXZlID0gdHJ1
ZTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQobV9uZWdhdGl2ZVByZWZpeCk7CisgICAgfSBlbHNl
CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKG1fcG9zaXRpdmVQcmVmaXgpOworCisgICAgZm9yICg7
IGkgPCBpbnB1dC5sZW5ndGgoKTsgKytpKSB7CisgICAgICAgIHN3aXRjaCAoaW5wdXRbaV0pIHsK
KyAgICAgICAgY2FzZSAnMCc6CisgICAgICAgIGNhc2UgJzEnOgorICAgICAgICBjYXNlICcyJzoK
KyAgICAgICAgY2FzZSAnMyc6CisgICAgICAgIGNhc2UgJzQnOgorICAgICAgICBjYXNlICc1JzoK
KyAgICAgICAgY2FzZSAnNic6CisgICAgICAgIGNhc2UgJzcnOgorICAgICAgICBjYXNlICc4JzoK
KyAgICAgICAgY2FzZSAnOSc6CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChtX2RlY2ltYWxT
eW1ib2xzW2lucHV0W2ldIC0gJzAnXSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSAnLic6CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChtX2RlY2ltYWxTeW1ib2xzW0RlY2lt
YWxTZXBhcmF0b3JJbmRleF0pOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6
CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgfQorICAgIH0KKwor
ICAgIGJ1aWxkZXIuYXBwZW5kKGlzTmVnYXRpdmUgPyBtX25lZ2F0aXZlU3VmZml4IDogbV9wb3Np
dGl2ZVN1ZmZpeCk7CisKKyAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOworfQorCitzdGF0
aWMgYm9vbCBtYXRjaGVzKGNvbnN0IFN0cmluZyYgdGV4dCwgdW5zaWduZWQgcG9zaXRpb24sIGNv
bnN0IFN0cmluZyYgcGFydCkKK3sKKyAgICBpZiAocGFydC5pc0VtcHR5KCkpCisgICAgICAgIHJl
dHVybiB0cnVlOworICAgIGlmIChwb3NpdGlvbiArIHBhcnQubGVuZ3RoKCkgPiB0ZXh0Lmxlbmd0
aCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IHBhcnQubGVuZ3RoKCk7ICsraSkgeworICAgICAgICBpZiAodGV4dFtwb3NpdGlvbiArIGldICE9
IHBhcnRbaV0pCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiB0
cnVlOworfQorCitib29sIExvY2FsaXplcjo6ZGV0ZWN0U2lnbkFuZEdldERpZ2l0UmFuZ2UoY29u
c3QgU3RyaW5nJiBpbnB1dCwgYm9vbCYgaXNOZWdhdGl2ZSwgdW5zaWduZWQmIHN0YXJ0SW5kZXgs
IHVuc2lnbmVkJiBlbmRJbmRleCkKK3sKKyAgICBzdGFydEluZGV4ID0gMDsKKyAgICBlbmRJbmRl
eCA9IGlucHV0Lmxlbmd0aCgpOworICAgIGlmIChtX25lZ2F0aXZlUHJlZml4LmlzRW1wdHkoKSAm
JiBtX25lZ2F0aXZlU3VmZml4LmlzRW1wdHkoKSkgeworICAgICAgICBpZiAoaW5wdXQuc3RhcnRz
V2l0aChtX3Bvc2l0aXZlUHJlZml4KSAmJiBpbnB1dC5lbmRzV2l0aChtX3Bvc2l0aXZlU3VmZml4
KSkgeworICAgICAgICAgICAgaXNOZWdhdGl2ZSA9IGZhbHNlOworICAgICAgICAgICAgc3RhcnRJ
bmRleCA9IG1fcG9zaXRpdmVQcmVmaXgubGVuZ3RoKCk7CisgICAgICAgICAgICBlbmRJbmRleCAt
PSBtX3Bvc2l0aXZlU3VmZml4Lmxlbmd0aCgpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAg
IGlzTmVnYXRpdmUgPSB0cnVlOworICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChpbnB1dC5zdGFy
dHNXaXRoKG1fbmVnYXRpdmVQcmVmaXgpICYmIGlucHV0LmVuZHNXaXRoKG1fbmVnYXRpdmVTdWZm
aXgpKSB7CisgICAgICAgICAgICBpc05lZ2F0aXZlID0gdHJ1ZTsKKyAgICAgICAgICAgIHN0YXJ0
SW5kZXggPSBtX25lZ2F0aXZlUHJlZml4Lmxlbmd0aCgpOworICAgICAgICAgICAgZW5kSW5kZXgg
LT0gbV9uZWdhdGl2ZVN1ZmZpeC5sZW5ndGgoKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgIGlzTmVnYXRpdmUgPSBmYWxzZTsKKyAgICAgICAgICAgIGlmIChpbnB1dC5zdGFydHNXaXRo
KG1fcG9zaXRpdmVQcmVmaXgpICYmIGlucHV0LmVuZHNXaXRoKG1fcG9zaXRpdmVTdWZmaXgpKSB7
CisgICAgICAgICAgICAgICAgc3RhcnRJbmRleCA9IG1fcG9zaXRpdmVQcmVmaXgubGVuZ3RoKCk7
CisgICAgICAgICAgICAgICAgZW5kSW5kZXggLT0gbV9wb3NpdGl2ZVN1ZmZpeC5sZW5ndGgoKTsK
KyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgfQorICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordW5zaWduZWQgTG9jYWxpemVyOjpt
YXRjaGVkRGVjaW1hbFN5bWJvbEluZGV4KGNvbnN0IFN0cmluZyYgaW5wdXQsIHVuc2lnbmVkJiBw
b3NpdGlvbikKK3sKKyAgICBmb3IgKHVuc2lnbmVkIHN5bWJvbEluZGV4ID0gMDsgc3ltYm9sSW5k
ZXggPCBEZWNpbWFsU3ltYm9sc1NpemU7ICsrc3ltYm9sSW5kZXgpIHsKKyAgICAgICAgaWYgKG1f
ZGVjaW1hbFN5bWJvbHNbc3ltYm9sSW5kZXhdLmxlbmd0aCgpICYmIG1hdGNoZXMoaW5wdXQsIHBv
c2l0aW9uLCBtX2RlY2ltYWxTeW1ib2xzW3N5bWJvbEluZGV4XSkpIHsKKyAgICAgICAgICAgIHBv
c2l0aW9uICs9IG1fZGVjaW1hbFN5bWJvbHNbc3ltYm9sSW5kZXhdLmxlbmd0aCgpOworICAgICAg
ICAgICAgcmV0dXJuIHN5bWJvbEluZGV4OworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBE
ZWNpbWFsU3ltYm9sc1NpemU7Cit9CisKK1N0cmluZyBMb2NhbGl6ZXI6OmNvbnZlcnRGcm9tTG9j
YWxpemVkTnVtYmVyKGNvbnN0IFN0cmluZyYgbG9jYWxpemVkKQoreworICAgIGluaXRpYWxpemVM
b2NhbGl6ZXJEYXRhKCk7CisgICAgU3RyaW5nIGlucHV0ID0gbG9jYWxpemVkLnN0cmlwV2hpdGVT
cGFjZSgpOworICAgIGlmICghbV9oYXNMb2NhbGl6ZXJEYXRhIHx8IGlucHV0LmlzRW1wdHkoKSkK
KyAgICAgICAgcmV0dXJuIGlucHV0OworCisgICAgYm9vbCBpc05lZ2F0aXZlOworICAgIHVuc2ln
bmVkIHN0YXJ0SW5kZXg7CisgICAgdW5zaWduZWQgZW5kSW5kZXg7CisgICAgaWYgKCFkZXRlY3RT
aWduQW5kR2V0RGlnaXRSYW5nZShpbnB1dCwgaXNOZWdhdGl2ZSwgc3RhcnRJbmRleCwgZW5kSW5k
ZXgpKSB7CisgICAgICAgIC8vIElucHV0IGlzIGJyb2tlbi4gUmV0dXJuaW5nIGFuIGludmFsaWQg
bnVtYmVyIHN0cmluZy4KKyAgICAgICAgcmV0dXJuICIqIjsKKyAgICB9CisKKyAgICBTdHJpbmdC
dWlsZGVyIGJ1aWxkZXI7CisgICAgYnVpbGRlci5yZXNlcnZlQ2FwYWNpdHkoaW5wdXQubGVuZ3Ro
KCkpOworICAgIGlmIChpc05lZ2F0aXZlKQorICAgICAgICBidWlsZGVyLmFwcGVuZCgiLSIpOwor
ICAgIGZvciAodW5zaWduZWQgaSA9IHN0YXJ0SW5kZXg7IGkgPCBlbmRJbmRleDspIHsKKyAgICAg
ICAgdW5zaWduZWQgc3ltYm9sSW5kZXggPSBtYXRjaGVkRGVjaW1hbFN5bWJvbEluZGV4KGlucHV0
LCBpKTsKKyAgICAgICAgaWYgKHN5bWJvbEluZGV4ID49IERlY2ltYWxTeW1ib2xzU2l6ZSkKKyAg
ICAgICAgICAgIHJldHVybiAiKiI7CisgICAgICAgIGlmIChzeW1ib2xJbmRleCA9PSBEZWNpbWFs
U2VwYXJhdG9ySW5kZXgpCisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnLicpOworICAgICAg
ICBlbHNlIGlmIChzeW1ib2xJbmRleCA9PSBHcm91cFNlcGFyYXRvckluZGV4KSB7CisgICAgICAg
ICAgICAvLyBJZ25vcmUgZ3JvdXAgc2VwYXJhdG9ycy4KKworICAgICAgICB9IGVsc2UKKyAgICAg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKHN0YXRpY19jYXN0PFVDaGFyPignMCcgKyBzeW1ib2xJbmRl
eCkpOworICAgIH0KKyAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOworfQorCisjaWYgRU5B
QkxFKElOUFVUX1RZUEVfVElNRV9NVUxUSVBMRV9GSUVMRFMpCitTdHJpbmcgTG9jYWxpemVyOjps
b2NhbGl6ZWREZWNpbWFsU2VwYXJhdG9yKCkKK3sKKyAgICBpbml0aWFsaXplTG9jYWxpemVyRGF0
YSgpOworICAgIHJldHVybiBtX2RlY2ltYWxTeW1ib2xzW0RlY2ltYWxTZXBhcmF0b3JJbmRleF07
Cit9CisjZW5kaWYKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4
dC9Mb2NhbGl6ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvTG9jYWxpemVyLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNTU4MTRkZmE1MmYxMTgyY2M3NjI2NGZjNjUxNTNlMTdkMDhhYmJkMAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvTG9jYWxpemVyLmgK
QEAgLTAsMCArMSw2NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBB
TkQKKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUg
TElBQkxFCisgKiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyAqIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSCisgKiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKKyAqIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKKyAqIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSAorICogREFNQUdFLgorICovCisKKyNpZm5kZWYgTG9jYWxpemVyX2gK
KyNkZWZpbmUgTG9jYWxpemVyX2gKKworI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIExvY2FsaXplciB7CitwdWJsaWM6CisgICAg
U3RyaW5nIGNvbnZlcnRUb0xvY2FsaXplZE51bWJlcihjb25zdCBTdHJpbmcmKTsKKyAgICBTdHJp
bmcgY29udmVydEZyb21Mb2NhbGl6ZWROdW1iZXIoY29uc3QgU3RyaW5nJik7CisjaWYgRU5BQkxF
KElOUFVUX1RZUEVfVElNRV9NVUxUSVBMRV9GSUVMRFMpCisgICAgU3RyaW5nIGxvY2FsaXplZERl
Y2ltYWxTZXBhcmF0b3IoKTsKKyNlbmRpZgorICAgIHZpcnR1YWwgfkxvY2FsaXplcigpOworCitw
cm90ZWN0ZWQ6CisgICAgZW51bSB7CisgICAgICAgIC8vIDAtOSBmb3IgZGlnaXRzLgorICAgICAg
ICBEZWNpbWFsU2VwYXJhdG9ySW5kZXggPSAxMCwKKyAgICAgICAgR3JvdXBTZXBhcmF0b3JJbmRl
eCA9IDExLAorICAgICAgICBEZWNpbWFsU3ltYm9sc1NpemUKKyAgICB9OworCisgICAgTG9jYWxp
emVyKCkgOiBtX2hhc0xvY2FsaXplckRhdGEoZmFsc2UpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBp
bml0aWFsaXplTG9jYWxpemVyRGF0YSgpID0gMDsKKyAgICB2b2lkIHNldExvY2FsaXplckRhdGEo
Y29uc3QgVmVjdG9yPFN0cmluZywgRGVjaW1hbFN5bWJvbHNTaXplPiYsIGNvbnN0IFN0cmluZyYg
cG9zaXRpdmVQcmVmaXgsIGNvbnN0IFN0cmluZyYgcG9zaXRpdmVTdWZmaXgsIGNvbnN0IFN0cmlu
ZyYgbmVnYXRpdmVQcmVmaXgsIGNvbnN0IFN0cmluZyYgbmVnYXRpdmVTdWZmaXgpOworCitwcml2
YXRlOgorICAgIGJvb2wgZGV0ZWN0U2lnbkFuZEdldERpZ2l0UmFuZ2UoY29uc3QgU3RyaW5nJiBp
bnB1dCwgYm9vbCYgaXNOZWdhdGl2ZSwgdW5zaWduZWQmIHN0YXJ0SW5kZXgsIHVuc2lnbmVkJiBl
bmRJbmRleCk7CisgICAgdW5zaWduZWQgbWF0Y2hlZERlY2ltYWxTeW1ib2xJbmRleChjb25zdCBT
dHJpbmcmIGlucHV0LCB1bnNpZ25lZCYgcG9zaXRpb24pOworCisgICAgU3RyaW5nIG1fZGVjaW1h
bFN5bWJvbHNbRGVjaW1hbFN5bWJvbHNTaXplXTsKKyAgICBTdHJpbmcgbV9wb3NpdGl2ZVByZWZp
eDsKKyAgICBTdHJpbmcgbV9wb3NpdGl2ZVN1ZmZpeDsKKyAgICBTdHJpbmcgbV9uZWdhdGl2ZVBy
ZWZpeDsKKyAgICBTdHJpbmcgbV9uZWdhdGl2ZVN1ZmZpeDsKKyAgICBib29sIG1faGFzTG9jYWxp
emVyRGF0YTsKK307CisKK30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vdGV4dC9OdW1iZXJMb2NhbGl6ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
dGV4dC9OdW1iZXJMb2NhbGl6ZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2
NjFkOWI0MTRmNDI2MDQyZTk4M2FiNjU5ZmRhNTYzYmQ4N2Q0ZGU0Li4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Rl
eHQvTnVtYmVyTG9jYWxpemVyLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDE5NSArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDExLDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0g
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAq
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiTnVtYmVyTG9jYWxpemVyLmgiCi0KLSNp
bmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsK
LQotTnVtYmVyTG9jYWxpemVyOjp+TnVtYmVyTG9jYWxpemVyKCkKLXsKLX0KLQotdm9pZCBOdW1i
ZXJMb2NhbGl6ZXI6OnNldE51bWJlckxvY2FsaXplckRhdGEoY29uc3QgVmVjdG9yPFN0cmluZywg
RGVjaW1hbFN5bWJvbHNTaXplPiYgc3ltYm9scywgY29uc3QgU3RyaW5nJiBwb3NpdGl2ZVByZWZp
eCwgY29uc3QgU3RyaW5nJiBwb3NpdGl2ZVN1ZmZpeCwgY29uc3QgU3RyaW5nJiBuZWdhdGl2ZVBy
ZWZpeCwgY29uc3QgU3RyaW5nJiBuZWdhdGl2ZVN1ZmZpeCkKLXsKLSAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IHN5bWJvbHMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgQVNTRVJUKCFzeW1ib2xz
W2ldLmlzRW1wdHkoKSk7Ci0gICAgICAgIG1fZGVjaW1hbFN5bWJvbHNbaV0gPSBzeW1ib2xzW2ld
OwotICAgIH0KLSAgICBtX3Bvc2l0aXZlUHJlZml4ID0gcG9zaXRpdmVQcmVmaXg7Ci0gICAgbV9w
b3NpdGl2ZVN1ZmZpeCA9IHBvc2l0aXZlU3VmZml4OwotICAgIG1fbmVnYXRpdmVQcmVmaXggPSBu
ZWdhdGl2ZVByZWZpeDsKLSAgICBtX25lZ2F0aXZlU3VmZml4ID0gbmVnYXRpdmVTdWZmaXg7Ci0g
ICAgQVNTRVJUKCFtX3Bvc2l0aXZlUHJlZml4LmlzRW1wdHkoKSB8fCAhbV9wb3NpdGl2ZVN1ZmZp
eC5pc0VtcHR5KCkgfHwgIW1fbmVnYXRpdmVQcmVmaXguaXNFbXB0eSgpIHx8ICFtX25lZ2F0aXZl
U3VmZml4LmlzRW1wdHkoKSk7Ci0gICAgbV9oYXNOdW1iZXJMb2NhbGl6ZXJEYXRhID0gdHJ1ZTsK
LX0KLQotU3RyaW5nIE51bWJlckxvY2FsaXplcjo6Y29udmVydFRvTG9jYWxpemVkTnVtYmVyKGNv
bnN0IFN0cmluZyYgaW5wdXQpCi17Ci0gICAgaW5pdGlhbGl6ZU51bWJlckxvY2FsaXplckRhdGEo
KTsKLSAgICBpZiAoIW1faGFzTnVtYmVyTG9jYWxpemVyRGF0YSB8fCBpbnB1dC5pc0VtcHR5KCkp
Ci0gICAgICAgIHJldHVybiBpbnB1dDsKLQotICAgIHVuc2lnbmVkIGkgPSAwOwotICAgIGJvb2wg
aXNOZWdhdGl2ZSA9IGZhbHNlOwotICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKLSAgICBidWls
ZGVyLnJlc2VydmVDYXBhY2l0eShpbnB1dC5sZW5ndGgoKSk7Ci0KLSAgICBpZiAoaW5wdXRbMF0g
PT0gJy0nKSB7Ci0gICAgICAgICsraTsKLSAgICAgICAgaXNOZWdhdGl2ZSA9IHRydWU7Ci0gICAg
ICAgIGJ1aWxkZXIuYXBwZW5kKG1fbmVnYXRpdmVQcmVmaXgpOwotICAgIH0gZWxzZQotICAgICAg
ICBidWlsZGVyLmFwcGVuZChtX3Bvc2l0aXZlUHJlZml4KTsKLQotICAgIGZvciAoOyBpIDwgaW5w
dXQubGVuZ3RoKCk7ICsraSkgewotICAgICAgICBzd2l0Y2ggKGlucHV0W2ldKSB7Ci0gICAgICAg
IGNhc2UgJzAnOgotICAgICAgICBjYXNlICcxJzoKLSAgICAgICAgY2FzZSAnMic6Ci0gICAgICAg
IGNhc2UgJzMnOgotICAgICAgICBjYXNlICc0JzoKLSAgICAgICAgY2FzZSAnNSc6Ci0gICAgICAg
IGNhc2UgJzYnOgotICAgICAgICBjYXNlICc3JzoKLSAgICAgICAgY2FzZSAnOCc6Ci0gICAgICAg
IGNhc2UgJzknOgotICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQobV9kZWNpbWFsU3ltYm9sc1tp
bnB1dFtpXSAtICcwJ10pOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgJy4nOgot
ICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQobV9kZWNpbWFsU3ltYm9sc1tEZWNpbWFsU2VwYXJh
dG9ySW5kZXhdKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBkZWZhdWx0OgotICAgICAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBidWls
ZGVyLmFwcGVuZChpc05lZ2F0aXZlID8gbV9uZWdhdGl2ZVN1ZmZpeCA6IG1fcG9zaXRpdmVTdWZm
aXgpOwotCi0gICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKLX0KLQotc3RhdGljIGJvb2wg
bWF0Y2hlcyhjb25zdCBTdHJpbmcmIHRleHQsIHVuc2lnbmVkIHBvc2l0aW9uLCBjb25zdCBTdHJp
bmcmIHBhcnQpCi17Ci0gICAgaWYgKHBhcnQuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gdHJ1
ZTsKLSAgICBpZiAocG9zaXRpb24gKyBwYXJ0Lmxlbmd0aCgpID4gdGV4dC5sZW5ndGgoKSkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwYXJ0Lmxl
bmd0aCgpOyArK2kpIHsKLSAgICAgICAgaWYgKHRleHRbcG9zaXRpb24gKyBpXSAhPSBwYXJ0W2ld
KQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICByZXR1cm4gdHJ1ZTsKLX0K
LQotYm9vbCBOdW1iZXJMb2NhbGl6ZXI6OmRldGVjdFNpZ25BbmRHZXREaWdpdFJhbmdlKGNvbnN0
IFN0cmluZyYgaW5wdXQsIGJvb2wmIGlzTmVnYXRpdmUsIHVuc2lnbmVkJiBzdGFydEluZGV4LCB1
bnNpZ25lZCYgZW5kSW5kZXgpCi17Ci0gICAgc3RhcnRJbmRleCA9IDA7Ci0gICAgZW5kSW5kZXgg
PSBpbnB1dC5sZW5ndGgoKTsKLSAgICBpZiAobV9uZWdhdGl2ZVByZWZpeC5pc0VtcHR5KCkgJiYg
bV9uZWdhdGl2ZVN1ZmZpeC5pc0VtcHR5KCkpIHsKLSAgICAgICAgaWYgKGlucHV0LnN0YXJ0c1dp
dGgobV9wb3NpdGl2ZVByZWZpeCkgJiYgaW5wdXQuZW5kc1dpdGgobV9wb3NpdGl2ZVN1ZmZpeCkp
IHsKLSAgICAgICAgICAgIGlzTmVnYXRpdmUgPSBmYWxzZTsKLSAgICAgICAgICAgIHN0YXJ0SW5k
ZXggPSBtX3Bvc2l0aXZlUHJlZml4Lmxlbmd0aCgpOwotICAgICAgICAgICAgZW5kSW5kZXggLT0g
bV9wb3NpdGl2ZVN1ZmZpeC5sZW5ndGgoKTsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBp
c05lZ2F0aXZlID0gdHJ1ZTsKLSAgICB9IGVsc2UgewotICAgICAgICBpZiAoaW5wdXQuc3RhcnRz
V2l0aChtX25lZ2F0aXZlUHJlZml4KSAmJiBpbnB1dC5lbmRzV2l0aChtX25lZ2F0aXZlU3VmZml4
KSkgewotICAgICAgICAgICAgaXNOZWdhdGl2ZSA9IHRydWU7Ci0gICAgICAgICAgICBzdGFydElu
ZGV4ID0gbV9uZWdhdGl2ZVByZWZpeC5sZW5ndGgoKTsKLSAgICAgICAgICAgIGVuZEluZGV4IC09
IG1fbmVnYXRpdmVTdWZmaXgubGVuZ3RoKCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAg
ICBpc05lZ2F0aXZlID0gZmFsc2U7Ci0gICAgICAgICAgICBpZiAoaW5wdXQuc3RhcnRzV2l0aCht
X3Bvc2l0aXZlUHJlZml4KSAmJiBpbnB1dC5lbmRzV2l0aChtX3Bvc2l0aXZlU3VmZml4KSkgewot
ICAgICAgICAgICAgICAgIHN0YXJ0SW5kZXggPSBtX3Bvc2l0aXZlUHJlZml4Lmxlbmd0aCgpOwot
ICAgICAgICAgICAgICAgIGVuZEluZGV4IC09IG1fcG9zaXRpdmVTdWZmaXgubGVuZ3RoKCk7Ci0g
ICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAg
IH0KLSAgICB9Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLXVuc2lnbmVkIE51bWJlckxvY2FsaXpl
cjo6bWF0Y2hlZERlY2ltYWxTeW1ib2xJbmRleChjb25zdCBTdHJpbmcmIGlucHV0LCB1bnNpZ25l
ZCYgcG9zaXRpb24pCi17Ci0gICAgZm9yICh1bnNpZ25lZCBzeW1ib2xJbmRleCA9IDA7IHN5bWJv
bEluZGV4IDwgRGVjaW1hbFN5bWJvbHNTaXplOyArK3N5bWJvbEluZGV4KSB7Ci0gICAgICAgIGlm
IChtX2RlY2ltYWxTeW1ib2xzW3N5bWJvbEluZGV4XS5sZW5ndGgoKSAmJiBtYXRjaGVzKGlucHV0
LCBwb3NpdGlvbiwgbV9kZWNpbWFsU3ltYm9sc1tzeW1ib2xJbmRleF0pKSB7Ci0gICAgICAgICAg
ICBwb3NpdGlvbiArPSBtX2RlY2ltYWxTeW1ib2xzW3N5bWJvbEluZGV4XS5sZW5ndGgoKTsKLSAg
ICAgICAgICAgIHJldHVybiBzeW1ib2xJbmRleDsKLSAgICAgICAgfQotICAgIH0KLSAgICByZXR1
cm4gRGVjaW1hbFN5bWJvbHNTaXplOwotfQotCi1TdHJpbmcgTnVtYmVyTG9jYWxpemVyOjpjb252
ZXJ0RnJvbUxvY2FsaXplZE51bWJlcihjb25zdCBTdHJpbmcmIGxvY2FsaXplZCkKLXsKLSAgICBp
bml0aWFsaXplTnVtYmVyTG9jYWxpemVyRGF0YSgpOwotICAgIFN0cmluZyBpbnB1dCA9IGxvY2Fs
aXplZC5zdHJpcFdoaXRlU3BhY2UoKTsKLSAgICBpZiAoIW1faGFzTnVtYmVyTG9jYWxpemVyRGF0
YSB8fCBpbnB1dC5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBpbnB1dDsKLQotICAgIGJvb2wg
aXNOZWdhdGl2ZTsKLSAgICB1bnNpZ25lZCBzdGFydEluZGV4OwotICAgIHVuc2lnbmVkIGVuZElu
ZGV4OwotICAgIGlmICghZGV0ZWN0U2lnbkFuZEdldERpZ2l0UmFuZ2UoaW5wdXQsIGlzTmVnYXRp
dmUsIHN0YXJ0SW5kZXgsIGVuZEluZGV4KSkgewotICAgICAgICAvLyBJbnB1dCBpcyBicm9rZW4u
IFJldHVybmluZyBhbiBpbnZhbGlkIG51bWJlciBzdHJpbmcuCi0gICAgICAgIHJldHVybiAiKiI7
Ci0gICAgfQotCi0gICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwotICAgIGJ1aWxkZXIucmVzZXJ2
ZUNhcGFjaXR5KGlucHV0Lmxlbmd0aCgpKTsKLSAgICBpZiAoaXNOZWdhdGl2ZSkKLSAgICAgICAg
YnVpbGRlci5hcHBlbmQoIi0iKTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSBzdGFydEluZGV4OyBp
IDwgZW5kSW5kZXg7KSB7Ci0gICAgICAgIHVuc2lnbmVkIHN5bWJvbEluZGV4ID0gbWF0Y2hlZERl
Y2ltYWxTeW1ib2xJbmRleChpbnB1dCwgaSk7Ci0gICAgICAgIGlmIChzeW1ib2xJbmRleCA+PSBE
ZWNpbWFsU3ltYm9sc1NpemUpCi0gICAgICAgICAgICByZXR1cm4gIioiOwotICAgICAgICBpZiAo
c3ltYm9sSW5kZXggPT0gRGVjaW1hbFNlcGFyYXRvckluZGV4KQotICAgICAgICAgICAgYnVpbGRl
ci5hcHBlbmQoJy4nKTsKLSAgICAgICAgZWxzZSBpZiAoc3ltYm9sSW5kZXggPT0gR3JvdXBTZXBh
cmF0b3JJbmRleCkgewotICAgICAgICAgICAgLy8gSWdub3JlIGdyb3VwIHNlcGFyYXRvcnMuCi0K
LSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBidWlsZGVyLmFwcGVuZChzdGF0aWNfY2FzdDxV
Q2hhcj4oJzAnICsgc3ltYm9sSW5kZXgpKTsKLSAgICB9Ci0gICAgcmV0dXJuIGJ1aWxkZXIudG9T
dHJpbmcoKTsKLX0KLQotI2lmIEVOQUJMRShJTlBVVF9UWVBFX1RJTUVfTVVMVElQTEVfRklFTERT
KQotU3RyaW5nIE51bWJlckxvY2FsaXplcjo6bG9jYWxpemVkRGVjaW1hbFNlcGFyYXRvcigpCi17
Ci0gICAgaW5pdGlhbGl6ZU51bWJlckxvY2FsaXplckRhdGEoKTsKLSAgICByZXR1cm4gbV9kZWNp
bWFsU3ltYm9sc1tEZWNpbWFsU2VwYXJhdG9ySW5kZXhdOwotfQotI2VuZGlmCi0KLX0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvTnVtYmVyTG9jYWxpemVyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L051bWJlckxvY2FsaXplci5oCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAyMTgzMWIyYWVlNDcwNTEzNmI0NzljZWM1NWI1OTY1ZmZhNmNi
ZjdiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvTnVtYmVyTG9jYWxpemVyLmgKKysrIC9kZXYvbnVsbApA
QCAtMSw2NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFO
RAotICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQotICogQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUKLSAqIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0gKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgotICogU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIKLSAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAotICogTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQotICogT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNICi0gKiBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBOdW1iZXJMb2NhbGl6
ZXJfaAotI2RlZmluZSBOdW1iZXJMb2NhbGl6ZXJfaAotCi0jaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgTnVtYmVyTG9jYWxpemVy
IHsKLXB1YmxpYzoKLSAgICBTdHJpbmcgY29udmVydFRvTG9jYWxpemVkTnVtYmVyKGNvbnN0IFN0
cmluZyYpOwotICAgIFN0cmluZyBjb252ZXJ0RnJvbUxvY2FsaXplZE51bWJlcihjb25zdCBTdHJp
bmcmKTsKLSNpZiBFTkFCTEUoSU5QVVRfVFlQRV9USU1FX01VTFRJUExFX0ZJRUxEUykKLSAgICBT
dHJpbmcgbG9jYWxpemVkRGVjaW1hbFNlcGFyYXRvcigpOwotI2VuZGlmCi0gICAgdmlydHVhbCB+
TnVtYmVyTG9jYWxpemVyKCk7Ci0KLXByb3RlY3RlZDoKLSAgICBlbnVtIHsKLSAgICAgICAgLy8g
MC05IGZvciBkaWdpdHMuCi0gICAgICAgIERlY2ltYWxTZXBhcmF0b3JJbmRleCA9IDEwLAotICAg
ICAgICBHcm91cFNlcGFyYXRvckluZGV4ID0gMTEsCi0gICAgICAgIERlY2ltYWxTeW1ib2xzU2l6
ZQotICAgIH07Ci0KLSAgICBOdW1iZXJMb2NhbGl6ZXIoKSA6IG1faGFzTnVtYmVyTG9jYWxpemVy
RGF0YShmYWxzZSkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGluaXRpYWxpemVOdW1iZXJMb2NhbGl6
ZXJEYXRhKCkgPSAwOwotICAgIHZvaWQgc2V0TnVtYmVyTG9jYWxpemVyRGF0YShjb25zdCBWZWN0
b3I8U3RyaW5nLCBEZWNpbWFsU3ltYm9sc1NpemU+JiwgY29uc3QgU3RyaW5nJiBwb3NpdGl2ZVBy
ZWZpeCwgY29uc3QgU3RyaW5nJiBwb3NpdGl2ZVN1ZmZpeCwgY29uc3QgU3RyaW5nJiBuZWdhdGl2
ZVByZWZpeCwgY29uc3QgU3RyaW5nJiBuZWdhdGl2ZVN1ZmZpeCk7Ci0KLXByaXZhdGU6Ci0gICAg
Ym9vbCBkZXRlY3RTaWduQW5kR2V0RGlnaXRSYW5nZShjb25zdCBTdHJpbmcmIGlucHV0LCBib29s
JiBpc05lZ2F0aXZlLCB1bnNpZ25lZCYgc3RhcnRJbmRleCwgdW5zaWduZWQmIGVuZEluZGV4KTsK
LSAgICB1bnNpZ25lZCBtYXRjaGVkRGVjaW1hbFN5bWJvbEluZGV4KGNvbnN0IFN0cmluZyYgaW5w
dXQsIHVuc2lnbmVkJiBwb3NpdGlvbik7Ci0KLSAgICBTdHJpbmcgbV9kZWNpbWFsU3ltYm9sc1tE
ZWNpbWFsU3ltYm9sc1NpemVdOwotICAgIFN0cmluZyBtX3Bvc2l0aXZlUHJlZml4OwotICAgIFN0
cmluZyBtX3Bvc2l0aXZlU3VmZml4OwotICAgIFN0cmluZyBtX25lZ2F0aXZlUHJlZml4OwotICAg
IFN0cmluZyBtX25lZ2F0aXZlU3VmZml4OwotICAgIGJvb2wgbV9oYXNOdW1iZXJMb2NhbGl6ZXJE
YXRhOwotfTsKLQotfQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS90ZXh0L21hYy9Mb2NhbGVNYWMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvbWFj
L0xvY2FsZU1hYy5oCmluZGV4IDFkODFjNjM3YTQ2ZTg0ODMxMmQxZWJhNmRlOWMwOWQ3ZjFkNTdj
ZTkuLjY5YzAyMDM1Yzk0Njc1YTU3MTE2Y2E1ZmU3NDZhMjhlN2UzZWI0ZmIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvbWFjL0xvY2FsZU1hYy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvbWFjL0xvY2FsZU1hYy5oCkBAIC0zMSw3ICszMSw3IEBA
CiAjaWZuZGVmIExvY2FsZU1hY19oCiAjZGVmaW5lIExvY2FsZU1hY19oCiAKLSNpbmNsdWRlICJO
dW1iZXJMb2NhbGl6ZXIuaCIKKyNpbmNsdWRlICJMb2NhbGl6ZXIuaCIKICNpbmNsdWRlIDx3dGYv
Rm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+CkBAIC00NCw3ICs0NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRGF0
ZUNvbXBvbmVudHM7CiAKLWNsYXNzIExvY2FsZU1hYyA6IHB1YmxpYyBOdW1iZXJMb2NhbGl6ZXIg
eworY2xhc3MgTG9jYWxlTWFjIDogcHVibGljIExvY2FsaXplciB7CiBwdWJsaWM6CiAgICAgc3Rh
dGljIFBhc3NPd25QdHI8TG9jYWxlTWFjPiBjcmVhdGUoY29uc3QgU3RyaW5nJik7CiAgICAgc3Rh
dGljIExvY2FsZU1hYyogY3VycmVudExvY2FsZSgpOwpAQCAtNjksNyArNjksNyBAQCBwcml2YXRl
OgogICAgIGV4cGxpY2l0IExvY2FsZU1hYyhOU0xvY2FsZSopOwogICAgIGV4cGxpY2l0IExvY2Fs
ZU1hYyhjb25zdCBTdHJpbmcmKTsKICAgICBOU0RhdGVGb3JtYXR0ZXIgKmNyZWF0ZVNob3J0RGF0
ZUZvcm1hdHRlcigpOwotICAgIHZpcnR1YWwgdm9pZCBpbml0aWFsaXplTnVtYmVyTG9jYWxpemVy
RGF0YSgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBpbml0aWFsaXplTG9jYWxpemVyRGF0
YSgpIE9WRVJSSURFOwogCiAgICAgUmV0YWluUHRyPE5TTG9jYWxlPiBtX2xvY2FsZTsKICNpZiBF
TkFCTEUoQ0FMRU5EQVJfUElDS0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vdGV4dC9tYWMvTG9jYWxlTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9t
YWMvTG9jYWxlTWFjLm1tCmluZGV4IDJlN2Y5NGM3ZjkwNjY5MDA1Mjk2MWY0MWZlMTAxYzZmNzY4
NmVlYjUuLmY5NzdkMzFlOGM5MWM4NWU5ODBhODc4MDg4MTJhNmNmZGYzNWVjZWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvbWFjL0xvY2FsZU1hYy5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L21hYy9Mb2NhbGVNYWMubW0KQEAgLTI3MCw3ICsy
NzAsNyBAQCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgTG9jYWxlTWFjOjp0aW1lQU1QTUxhYmVscygp
CiB9CiAjZW5kaWYKIAotdm9pZCBMb2NhbGVNYWM6OmluaXRpYWxpemVOdW1iZXJMb2NhbGl6ZXJE
YXRhKCkKK3ZvaWQgTG9jYWxlTWFjOjppbml0aWFsaXplTG9jYWxpemVyRGF0YSgpCiB7CiAgICAg
aWYgKG1fZGlkSW5pdGlhbGl6ZU51bWJlckRhdGEpCiAgICAgICAgIHJldHVybjsKQEAgLTI5OCw3
ICsyOTgsNyBAQCB2b2lkIExvY2FsZU1hYzo6aW5pdGlhbGl6ZU51bWJlckxvY2FsaXplckRhdGEo
KQogICAgIFN0cmluZyBwb3NpdGl2ZVN1ZmZpeChbZm9ybWF0dGVyLmdldCgpIHBvc2l0aXZlU3Vm
Zml4XSk7CiAgICAgU3RyaW5nIG5lZ2F0aXZlUHJlZml4KFtmb3JtYXR0ZXIuZ2V0KCkgbmVnYXRp
dmVQcmVmaXhdKTsKICAgICBTdHJpbmcgbmVnYXRpdmVTdWZmaXgoW2Zvcm1hdHRlci5nZXQoKSBu
ZWdhdGl2ZVN1ZmZpeF0pOwotICAgIHNldE51bWJlckxvY2FsaXplckRhdGEoc3ltYm9scywgcG9z
aXRpdmVQcmVmaXgsIHBvc2l0aXZlU3VmZml4LCBuZWdhdGl2ZVByZWZpeCwgbmVnYXRpdmVTdWZm
aXgpOworICAgIHNldExvY2FsaXplckRhdGEoc3ltYm9scywgcG9zaXRpdmVQcmVmaXgsIHBvc2l0
aXZlU3VmZml4LCBuZWdhdGl2ZVByZWZpeCwgbmVnYXRpdmVTdWZmaXgpOwogfQogCiB9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>