<?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>92518</bug_id>
          
          <creation_ts>2012-07-27 11:08:01 -0700</creation_ts>
          <short_desc>use createUninitialized when creating TypedArray from another array</short_desc>
          <delta_ts>2014-04-24 16:45:52 -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>JavaScriptCore</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="arno.">a.renevier</reporter>
          <assigned_to name="arno.">a.renevier</assigned_to>
          <cc>kbr</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>680827</commentid>
    <comment_count>0</comment_count>
    <who name="arno.">a.renevier</who>
    <bug_when>2012-07-27 11:08:01 -0700</bug_when>
    <thetext>Hi,
since bug #90838 has landed, we can make Typed Array construction still faster by using ::createUninitialized instead of ::create
Actually, we will fill the array before sending it, so it&apos;s safe to do so.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>680918</commentid>
    <comment_count>1</comment_count>
      <attachid>155010</attachid>
    <who name="arno.">a.renevier</who>
    <bug_when>2012-07-27 12:08:11 -0700</bug_when>
    <thetext>Created attachment 155010
patch proposal

With this patch, performance test for construction with same typed array improves from 40ms to 25ms; construction from different typed array improves from 430ms to 270ms. construction from regular Array does not improve (and does not decrease)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>681092</commentid>
    <comment_count>2</comment_count>
      <attachid>155010</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2012-07-27 14:32:58 -0700</bug_when>
    <thetext>Comment on attachment 155010
patch proposal

Arno: this looks fine, but would you please implement the same optimizations as in Bug 90838 and here for the V8 port? If not, would you please at least file a bug about doing so and CC me on it? r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>681231</commentid>
    <comment_count>3</comment_count>
      <attachid>155010</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-27 16:32:36 -0700</bug_when>
    <thetext>Comment on attachment 155010
patch proposal

Clearing flags on attachment: 155010

Committed r123935: &lt;http://trac.webkit.org/changeset/123935&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>681232</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-27 16:32:38 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1003870</commentid>
    <comment_count>5</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-04-24 16:45:52 -0700</bug_when>
    <thetext>Moving all JavaScriptGlue bugs to JavaScriptCore. The JavaScriptGlue framework itself is long gone. And most of the more recent bugs put in this component were put there by people who thought this was for some other aspect of “JavaScript glue” and have nothing to do with the actual original reason for the existence of this component, which was an OS-X-only framework named JavaScriptGlue.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>155010</attachid>
            <date>2012-07-27 12:08:11 -0700</date>
            <delta_ts>2012-07-27 16:32:35 -0700</delta_ts>
            <desc>patch proposal</desc>
            <filename>bug-92518-20120727120758.patch</filename>
            <type>text/plain</type>
            <size>21248</size>
            <attacher name="arno.">a.renevier</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIzNjMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDY2NjhiZTA1ZWJhZjFmYjczZGYxNWI3
OWY2MGEzZDhiMmNhZTVmOTUuLjgzYWVhZTQ2MmI4ZjZmYTVhNzc2YzU1MzhmNmFhZmQyNGZjODMw
ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNDcgQEAKKzIwMTItMDctMjcgIEFybmF1ZCBSZW5ldmllciAgPGEu
cmVuZXZpZXJAc2lzYS5zYW1zdW5nLmNvbT4KKworICAgICAgICB1c2UgY3JlYXRlVW5pbml0aWFs
aXplZCB3aGVuIGNyZWF0aW5nIFR5cGVkQXJyYXkgZnJvbSBhbm90aGVyIGFycmF5CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MjUxOAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEV4cG9zZSBhIGNyZWF0ZVVu
aW5pdGlhbGl6ZWQgc3RhdGljIG1ldGhvZCBvbiBUeXBlZEFycmF5IGNsYXNzZXMuCisKKyAgICAg
ICAgKiB3dGYvRmxvYXQzMkFycmF5Lmg6CisgICAgICAgIChGbG9hdDMyQXJyYXkpOgorICAgICAg
ICAoV1RGOjpGbG9hdDMyQXJyYXk6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQpOgorICAgICAgICAoV1RG
KToKKyAgICAgICAgKiB3dGYvRmxvYXQ2NEFycmF5Lmg6CisgICAgICAgIChGbG9hdDY0QXJyYXkp
OgorICAgICAgICAoV1RGOjpGbG9hdDY0QXJyYXk6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQpOgorICAg
ICAgICAoV1RGKToKKyAgICAgICAgKiB3dGYvSW50MTZBcnJheS5oOgorICAgICAgICAoSW50MTZB
cnJheSk6CisgICAgICAgIChXVEY6OkludDE2QXJyYXk6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQpOgor
ICAgICAgICAoV1RGKToKKyAgICAgICAgKiB3dGYvSW50MzJBcnJheS5oOgorICAgICAgICAoSW50
MzJBcnJheSk6CisgICAgICAgIChXVEY6OkludDMyQXJyYXk6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQp
OgorICAgICAgICAoV1RGKToKKyAgICAgICAgKiB3dGYvSW50OEFycmF5Lmg6CisgICAgICAgIChJ
bnQ4QXJyYXkpOgorICAgICAgICAoV1RGOjpJbnQ4QXJyYXk6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQp
OgorICAgICAgICAoV1RGKToKKyAgICAgICAgKiB3dGYvVWludDE2QXJyYXkuaDoKKyAgICAgICAg
KFVpbnQxNkFycmF5KToKKyAgICAgICAgKFdURjo6VWludDE2QXJyYXk6OmNyZWF0ZVVuaW5pdGlh
bGl6ZWQpOgorICAgICAgICAoV1RGKToKKyAgICAgICAgKiB3dGYvVWludDMyQXJyYXkuaDoKKyAg
ICAgICAgKFVpbnQzMkFycmF5KToKKyAgICAgICAgKFdURjo6VWludDMyQXJyYXk6OmNyZWF0ZVVu
aW5pdGlhbGl6ZWQpOgorICAgICAgICAoV1RGKToKKyAgICAgICAgKiB3dGYvVWludDhBcnJheS5o
OgorICAgICAgICAoVWludDhBcnJheSk6CisgICAgICAgIChXVEY6OlVpbnQ4QXJyYXk6OmNyZWF0
ZVVuaW5pdGlhbGl6ZWQpOgorICAgICAgICAoV1RGKToKKyAgICAgICAgKiB3dGYvVWludDhDbGFt
cGVkQXJyYXkuaDoKKyAgICAgICAgKFVpbnQ4Q2xhbXBlZEFycmF5KToKKwogMjAxMi0wNy0yNSAg
QXJuYXVkIFJlbmV2aWVyICA8YS5yZW5ldmllckBzaXNhLnNhbXN1bmcuY29tPgogCiAgICAgICAg
IGNvbnN0cnVjdGluZyBUeXBlZEFycmF5IGZyb20gYW5vdGhlciBUeXBlZEFycmF5IGlzIHNsb3cK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBiMTIwOTE1ZWQzMjJmZjg5YTc3NmM5OWE5ZDgzN2UxMWM3YzIxY2RjLi4w
MzBlZjc2YzM4YTczOTcxN2Q5NTY5M2ZhYThmZWQyZGE2ZDc5ZTJiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjEgQEAKKzIwMTItMDctMjcgIEFybmF1ZCBSZW5ldmllciAgPGEucmVuZXZpZXJAc2lz
YS5zYW1zdW5nLmNvbT4KKworICAgICAgICB1c2UgY3JlYXRlVW5pbml0aWFsaXplZCB3aGVuIGNy
ZWF0aW5nIFR5cGVkQXJyYXkgZnJvbSBhbm90aGVyIGFycmF5CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MjUxOAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdoZW4gY3JlYXRpbmcgYSBUeXBlZCBBcnJheSBm
cm9tIGFub3RoZXIgYXJyYXksIHdlIGZpbGwgaXQgd2l0aCB2YWx1ZXMKKyAgICAgICAgZnJvbSB0
aGUgc291cmNlIGFycmF5LiBTbywgd2UgY2FuIGNyZWF0ZSBpdCB1bmluaXRpYWxpemVkLiBUaGlz
IGlzCisgICAgICAgIG1ha2UgY29uc3RydWN0b3IgYWJvdXQgMzUlIGZhc3RlciB3aGVuIGNvbnN0
cnVjdGVkIHdpdGggYW5vdGhlciB0eXBlZAorICAgICAgICBhcnJheS4KKworICAgICAgICBUZXN0
OiBmYXN0L2NhbnZhcy93ZWJnbC9hcnJheS1jb25zdHJ1Y3Rvci5odG1sCisKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9KU0FycmF5QnVmZmVyVmlld0hlbHBlci5oOgorICAgICAgICAoV2ViQ29yZTo6
Y29uc3RydWN0QXJyYXlCdWZmZXJWaWV3V2l0aFR5cGVkQXJyYXlBcmd1bWVudCk6CisgICAgICAg
IChXZWJDb3JlOjpjb25zdHJ1Y3RBcnJheUJ1ZmZlclZpZXcpOgorCiAyMDEyLTA3LTI1ICBBcm5h
dWQgUmVuZXZpZXIgIDxhLnJlbmV2aWVyQHNpc2Euc2Ftc3VuZy5jb20+CiAKICAgICAgICAgY29u
c3RydWN0aW5nIFR5cGVkQXJyYXkgZnJvbSBhbm90aGVyIFR5cGVkQXJyYXkgaXMgc2xvdwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi93dGYvRmxvYXQzMkFycmF5LmggYi9Tb3VyY2UvV1RGL3d0Zi9G
bG9hdDMyQXJyYXkuaAppbmRleCBlYmY3OWFlOGE3ZDYwODVjOTZmOWUwMTIyY2Y1OTBmODM5NWZm
MTlhLi40NzIwNGVjNzg3ZTcwYjQzNzkwY2VhMGQxMDk0YmVjZDUwOTY2ZjIwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL3d0Zi9GbG9hdDMyQXJyYXkuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9GbG9h
dDMyQXJyYXkuaApAQCAtMzgsNiArMzgsMTAgQEAgcHVibGljOgogICAgIHN0YXRpYyBpbmxpbmUg
UGFzc1JlZlB0cjxGbG9hdDMyQXJyYXk+IGNyZWF0ZShjb25zdCBmbG9hdCogYXJyYXksIHVuc2ln
bmVkIGxlbmd0aCk7CiAgICAgc3RhdGljIGlubGluZSBQYXNzUmVmUHRyPEZsb2F0MzJBcnJheT4g
Y3JlYXRlKFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+LCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNp
Z25lZCBsZW5ndGgpOwogCisgICAgLy8gU2hvdWxkIG9ubHkgYmUgdXNlZCB3aGVuIGl0IGlzIGtu
b3duIHRoZSBlbnRpcmUgYXJyYXkgd2lsbCBiZSBmaWxsZWQuIERvCisgICAgLy8gbm90IHJldHVy
biB0aGVzZSByZXN1bHRzIGRpcmVjdGx5IHRvIEphdmFTY3JpcHQgd2l0aG91dCBmaWxsaW5nIGZp
cnN0LgorICAgIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxGbG9hdDMyQXJyYXk+IGNyZWF0ZVVu
aW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoKTsKKwogICAgIC8vIENhbuKAmXQgdXNlICJ1c2lu
ZyIgaGVyZSBkdWUgdG8gYSBidWcgaW4gdGhlIFJWQ1QgY29tcGlsZXIuCiAgICAgYm9vbCBzZXQo
VHlwZWRBcnJheUJhc2U8ZmxvYXQ+KiBhcnJheSwgdW5zaWduZWQgb2Zmc2V0KSB7IHJldHVybiBU
eXBlZEFycmF5QmFzZTxmbG9hdD46OnNldChhcnJheSwgb2Zmc2V0KTsgfQogCkBAIC03OSw2ICs4
MywxMSBAQCBQYXNzUmVmUHRyPEZsb2F0MzJBcnJheT4gRmxvYXQzMkFycmF5OjpjcmVhdGUoUGFz
c1JlZlB0cjxBcnJheUJ1ZmZlcj4gYnVmZmVyLCB1bgogICAgIHJldHVybiBUeXBlZEFycmF5QmFz
ZTxmbG9hdD46OmNyZWF0ZTxGbG9hdDMyQXJyYXk+KGJ1ZmZlciwgYnl0ZU9mZnNldCwgbGVuZ3Ro
KTsKIH0KIAorUGFzc1JlZlB0cjxGbG9hdDMyQXJyYXk+IEZsb2F0MzJBcnJheTo6Y3JlYXRlVW5p
bml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgpCit7CisgICAgcmV0dXJuIFR5cGVkQXJyYXlCYXNl
PGZsb2F0Pjo6Y3JlYXRlVW5pbml0aWFsaXplZDxGbG9hdDMyQXJyYXk+KGxlbmd0aCk7Cit9CisK
IEZsb2F0MzJBcnJheTo6RmxvYXQzMkFycmF5KFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZmZl
ciwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQogICAgIDogVHlwZWRBcnJh
eUJhc2U8ZmxvYXQ+KGJ1ZmZlciwgYnl0ZU9mZnNldCwgbGVuZ3RoKQogewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvRmxvYXQ2NEFycmF5LmggYi9Tb3VyY2UvV1RGL3d0Zi9GbG9hdDY0QXJy
YXkuaAppbmRleCAxNWFmMTYxMjMxYjQwMmFiMGVjMWE0ZDczNTc2NTYxOGYzMmQ1ZTBhLi4xZDlh
OWM4MmU0ZWJhNzg2YzI0N2YzOTYzN2Y5ZTA4ODM3OTliZGVlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL3d0Zi9GbG9hdDY0QXJyYXkuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9GbG9hdDY0QXJyYXku
aApAQCAtMzgsNiArMzgsMTAgQEAgcHVibGljOgogICAgIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0
cjxGbG9hdDY0QXJyYXk+IGNyZWF0ZShjb25zdCBkb3VibGUqIGFycmF5LCB1bnNpZ25lZCBsZW5n
dGgpOwogICAgIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxGbG9hdDY0QXJyYXk+IGNyZWF0ZShQ
YXNzUmVmUHRyPEFycmF5QnVmZmVyPiwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVu
Z3RoKTsKIAorICAgIC8vIFNob3VsZCBvbmx5IGJlIHVzZWQgd2hlbiBpdCBpcyBrbm93biB0aGUg
ZW50aXJlIGFycmF5IHdpbGwgYmUgZmlsbGVkLiBEbworICAgIC8vIG5vdCByZXR1cm4gdGhlc2Ug
cmVzdWx0cyBkaXJlY3RseSB0byBKYXZhU2NyaXB0IHdpdGhvdXQgZmlsbGluZyBmaXJzdC4KKyAg
ICBzdGF0aWMgaW5saW5lIFBhc3NSZWZQdHI8RmxvYXQ2NEFycmF5PiBjcmVhdGVVbmluaXRpYWxp
emVkKHVuc2lnbmVkIGxlbmd0aCk7CisKICAgICAvLyBDYW7igJl0IHVzZSAidXNpbmciIGhlcmUg
ZHVlIHRvIGEgYnVnIGluIHRoZSBSVkNUIGNvbXBpbGVyLgogICAgIGJvb2wgc2V0KFR5cGVkQXJy
YXlCYXNlPGRvdWJsZT4qIGFycmF5LCB1bnNpZ25lZCBvZmZzZXQpIHsgcmV0dXJuIFR5cGVkQXJy
YXlCYXNlPGRvdWJsZT46OnNldChhcnJheSwgb2Zmc2V0KTsgfQogCkBAIC03OSw2ICs4MywxMSBA
QCBQYXNzUmVmUHRyPEZsb2F0NjRBcnJheT4gRmxvYXQ2NEFycmF5OjpjcmVhdGUoUGFzc1JlZlB0
cjxBcnJheUJ1ZmZlcj4gYnVmZmVyLCB1bgogICAgIHJldHVybiBUeXBlZEFycmF5QmFzZTxkb3Vi
bGU+OjpjcmVhdGU8RmxvYXQ2NEFycmF5PihidWZmZXIsIGJ5dGVPZmZzZXQsIGxlbmd0aCk7CiB9
CiAKK1Bhc3NSZWZQdHI8RmxvYXQ2NEFycmF5PiBGbG9hdDY0QXJyYXk6OmNyZWF0ZVVuaW5pdGlh
bGl6ZWQodW5zaWduZWQgbGVuZ3RoKQoreworICAgIHJldHVybiBUeXBlZEFycmF5QmFzZTxkb3Vi
bGU+OjpjcmVhdGVVbmluaXRpYWxpemVkPEZsb2F0NjRBcnJheT4obGVuZ3RoKTsKK30KKwogRmxv
YXQ2NEFycmF5OjpGbG9hdDY0QXJyYXkoUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gYnVmZmVyLCB1
bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpCiAgICAgOiBUeXBlZEFycmF5QmFz
ZTxkb3VibGU+KGJ1ZmZlciwgYnl0ZU9mZnNldCwgbGVuZ3RoKQogewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvSW50MTZBcnJheS5oIGIvU291cmNlL1dURi93dGYvSW50MTZBcnJheS5oCmlu
ZGV4IDUwZTlhYTNhMjA2YzhkMDRjNTViMWM2NzBmNjUxMDEwOTYwNTEwNmUuLmJlOTg1ODM4ODUz
ZTM2YWRlOTc2YTM3MWYzMzQzMDM0OTdmOWIwN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3Rm
L0ludDE2QXJyYXkuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9JbnQxNkFycmF5LmgKQEAgLTM4LDYg
KzM4LDEwIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgaW5saW5lIFBhc3NSZWZQdHI8SW50MTZBcnJh
eT4gY3JlYXRlKGNvbnN0IHNob3J0KiBhcnJheSwgdW5zaWduZWQgbGVuZ3RoKTsKICAgICBzdGF0
aWMgaW5saW5lIFBhc3NSZWZQdHI8SW50MTZBcnJheT4gY3JlYXRlKFBhc3NSZWZQdHI8QXJyYXlC
dWZmZXI+LCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOwogCisgICAgLy8g
U2hvdWxkIG9ubHkgYmUgdXNlZCB3aGVuIGl0IGlzIGtub3duIHRoZSBlbnRpcmUgYXJyYXkgd2ls
bCBiZSBmaWxsZWQuIERvCisgICAgLy8gbm90IHJldHVybiB0aGVzZSByZXN1bHRzIGRpcmVjdGx5
IHRvIEphdmFTY3JpcHQgd2l0aG91dCBmaWxsaW5nIGZpcnN0LgorICAgIHN0YXRpYyBpbmxpbmUg
UGFzc1JlZlB0cjxJbnQxNkFycmF5PiBjcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0
aCk7CisKICAgICAvLyBDYW7igJl0IHVzZSAidXNpbmciIGhlcmUgZHVlIHRvIGEgYnVnIGluIHRo
ZSBSVkNUIGNvbXBpbGVyLgogICAgIGJvb2wgc2V0KFR5cGVkQXJyYXlCYXNlPHNob3J0PiogYXJy
YXksIHVuc2lnbmVkIG9mZnNldCkgeyByZXR1cm4gVHlwZWRBcnJheUJhc2U8c2hvcnQ+OjpzZXQo
YXJyYXksIG9mZnNldCk7IH0KICAgICB2b2lkIHNldCh1bnNpZ25lZCBpbmRleCwgZG91YmxlIHZh
bHVlKSB7IEludGVncmFsVHlwZWRBcnJheUJhc2U8c2hvcnQ+OjpzZXQoaW5kZXgsIHZhbHVlKTsg
fQpAQCAtNzMsNiArNzcsMTEgQEAgUGFzc1JlZlB0cjxJbnQxNkFycmF5PiBJbnQxNkFycmF5Ojpj
cmVhdGUoUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gYnVmZmVyLCB1bnNpZ24KICAgICByZXR1cm4g
VHlwZWRBcnJheUJhc2U8c2hvcnQ+OjpjcmVhdGU8SW50MTZBcnJheT4oYnVmZmVyLCBieXRlT2Zm
c2V0LCBsZW5ndGgpOwogfQogCitQYXNzUmVmUHRyPEludDE2QXJyYXk+IEludDE2QXJyYXk6OmNy
ZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoKQoreworICAgIHJldHVybiBUeXBlZEFy
cmF5QmFzZTxzaG9ydD46OmNyZWF0ZVVuaW5pdGlhbGl6ZWQ8SW50MTZBcnJheT4obGVuZ3RoKTsK
K30KKwogSW50MTZBcnJheTo6SW50MTZBcnJheShQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBidWZm
ZXIsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKICAgICA6IEludGVncmFs
VHlwZWRBcnJheUJhc2U8c2hvcnQ+KGJ1ZmZlciwgYnl0ZU9mZnNldCwgbGVuZ3RoKQogewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi93dGYvSW50MzJBcnJheS5oIGIvU291cmNlL1dURi93dGYvSW50
MzJBcnJheS5oCmluZGV4IGMyNjI0YzhjYTg4YTM3MzgxZTAwNTI3ZGYzMGI1YzFmNjgzY2JmNzQu
Ljk5YmNlMWFkMjI3NmYyN2ZhODZmZmZmMDdjZGI5MjBlMGE1MGYxZTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XVEYvd3RmL0ludDMyQXJyYXkuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9JbnQzMkFycmF5
LmgKQEAgLTM3LDYgKzM3LDEwIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgaW5saW5lIFBhc3NSZWZQ
dHI8SW50MzJBcnJheT4gY3JlYXRlKGNvbnN0IGludCogYXJyYXksIHVuc2lnbmVkIGxlbmd0aCk7
CiAgICAgc3RhdGljIGlubGluZSBQYXNzUmVmUHRyPEludDMyQXJyYXk+IGNyZWF0ZShQYXNzUmVm
UHRyPEFycmF5QnVmZmVyPiwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKTsK
IAorICAgIC8vIFNob3VsZCBvbmx5IGJlIHVzZWQgd2hlbiBpdCBpcyBrbm93biB0aGUgZW50aXJl
IGFycmF5IHdpbGwgYmUgZmlsbGVkLiBEbworICAgIC8vIG5vdCByZXR1cm4gdGhlc2UgcmVzdWx0
cyBkaXJlY3RseSB0byBKYXZhU2NyaXB0IHdpdGhvdXQgZmlsbGluZyBmaXJzdC4KKyAgICBzdGF0
aWMgaW5saW5lIFBhc3NSZWZQdHI8SW50MzJBcnJheT4gY3JlYXRlVW5pbml0aWFsaXplZCh1bnNp
Z25lZCBsZW5ndGgpOworCiAgICAgLy8gQ2Fu4oCZdCB1c2UgInVzaW5nIiBoZXJlIGR1ZSB0byBh
IGJ1ZyBpbiB0aGUgUlZDVCBjb21waWxlci4KICAgICBib29sIHNldChUeXBlZEFycmF5QmFzZTxp
bnQ+KiBhcnJheSwgdW5zaWduZWQgb2Zmc2V0KSB7IHJldHVybiBUeXBlZEFycmF5QmFzZTxpbnQ+
OjpzZXQoYXJyYXksIG9mZnNldCk7IH0KICAgICB2b2lkIHNldCh1bnNpZ25lZCBpbmRleCwgZG91
YmxlIHZhbHVlKSB7IEludGVncmFsVHlwZWRBcnJheUJhc2U8aW50Pjo6c2V0KGluZGV4LCB2YWx1
ZSk7IH0KQEAgLTcyLDYgKzc2LDExIEBAIFBhc3NSZWZQdHI8SW50MzJBcnJheT4gSW50MzJBcnJh
eTo6Y3JlYXRlKFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZmZlciwgdW5zaWduCiAgICAgcmV0
dXJuIFR5cGVkQXJyYXlCYXNlPGludD46OmNyZWF0ZTxJbnQzMkFycmF5PihidWZmZXIsIGJ5dGVP
ZmZzZXQsIGxlbmd0aCk7CiB9CiAKK1Bhc3NSZWZQdHI8SW50MzJBcnJheT4gSW50MzJBcnJheTo6
Y3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgpCit7CisgICAgcmV0dXJuIFR5cGVk
QXJyYXlCYXNlPGludD46OmNyZWF0ZVVuaW5pdGlhbGl6ZWQ8SW50MzJBcnJheT4obGVuZ3RoKTsK
K30KKwogSW50MzJBcnJheTo6SW50MzJBcnJheShQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBidWZm
ZXIsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKICAgICA6IEludGVncmFs
VHlwZWRBcnJheUJhc2U8aW50PihidWZmZXIsIGJ5dGVPZmZzZXQsIGxlbmd0aCkKIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvd3RmL0ludDhBcnJheS5oIGIvU291cmNlL1dURi93dGYvSW50OEFy
cmF5LmgKaW5kZXggZWQ4YmE2ZjVlM2Q3ZmJkY2ViNTNiZDZmY2RmOTAyNjRkMjllMjAzOC4uYmIz
ZTM3ZTM1YmI3Y2Y4OGRkYWJjNDZjOWU2MGYwMmU3OWU0NTI0NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi93dGYvSW50OEFycmF5LmgKKysrIGIvU291cmNlL1dURi93dGYvSW50OEFycmF5LmgKQEAg
LTM5LDYgKzM5LDEwIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgaW5saW5lIFBhc3NSZWZQdHI8SW50
OEFycmF5PiBjcmVhdGUoY29uc3Qgc2lnbmVkIGNoYXIqIGFycmF5LCB1bnNpZ25lZCBsZW5ndGgp
OwogICAgIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxJbnQ4QXJyYXk+IGNyZWF0ZShQYXNzUmVm
UHRyPEFycmF5QnVmZmVyPiwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKTsK
IAorICAgIC8vIFNob3VsZCBvbmx5IGJlIHVzZWQgd2hlbiBpdCBpcyBrbm93biB0aGUgZW50aXJl
IGFycmF5IHdpbGwgYmUgZmlsbGVkLiBEbworICAgIC8vIG5vdCByZXR1cm4gdGhlc2UgcmVzdWx0
cyBkaXJlY3RseSB0byBKYXZhU2NyaXB0IHdpdGhvdXQgZmlsbGluZyBmaXJzdC4KKyAgICBzdGF0
aWMgaW5saW5lIFBhc3NSZWZQdHI8SW50OEFycmF5PiBjcmVhdGVVbmluaXRpYWxpemVkKHVuc2ln
bmVkIGxlbmd0aCk7CisKICAgICAvLyBDYW7igJl0IHVzZSAidXNpbmciIGhlcmUgZHVlIHRvIGEg
YnVnIGluIHRoZSBSVkNUIGNvbXBpbGVyLgogICAgIGJvb2wgc2V0KFR5cGVkQXJyYXlCYXNlPHNp
Z25lZCBjaGFyPiogYXJyYXksIHVuc2lnbmVkIG9mZnNldCkgeyByZXR1cm4gVHlwZWRBcnJheUJh
c2U8c2lnbmVkIGNoYXI+OjpzZXQoYXJyYXksIG9mZnNldCk7IH0KICAgICB2b2lkIHNldCh1bnNp
Z25lZCBpbmRleCwgZG91YmxlIHZhbHVlKSB7IEludGVncmFsVHlwZWRBcnJheUJhc2U8c2lnbmVk
IGNoYXI+OjpzZXQoaW5kZXgsIHZhbHVlKTsgfQpAQCAtNzQsNiArNzgsMTEgQEAgUGFzc1JlZlB0
cjxJbnQ4QXJyYXk+IEludDhBcnJheTo6Y3JlYXRlKFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IGJ1
ZmZlciwgdW5zaWduZWQKICAgICByZXR1cm4gVHlwZWRBcnJheUJhc2U8c2lnbmVkIGNoYXI+Ojpj
cmVhdGU8SW50OEFycmF5PihidWZmZXIsIGJ5dGVPZmZzZXQsIGxlbmd0aCk7CiB9CiAKK1Bhc3NS
ZWZQdHI8SW50OEFycmF5PiBJbnQ4QXJyYXk6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQg
bGVuZ3RoKQoreworICAgIHJldHVybiBUeXBlZEFycmF5QmFzZTxzaWduZWQgY2hhcj46OmNyZWF0
ZVVuaW5pdGlhbGl6ZWQ8SW50OEFycmF5PihsZW5ndGgpOworfQorCiBJbnQ4QXJyYXk6OkludDhB
cnJheShQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXIsIHVuc2lnbmVkIGJ5dGVPZmZzZXQs
IHVuc2lnbmVkIGxlbmd0aCkKICAgICA6IEludGVncmFsVHlwZWRBcnJheUJhc2U8c2lnbmVkIGNo
YXI+KGJ1ZmZlciwgYnl0ZU9mZnNldCwgbGVuZ3RoKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvVWludDE2QXJyYXkuaCBiL1NvdXJjZS9XVEYvd3RmL1VpbnQxNkFycmF5LmgKaW5kZXgg
ZjAwNDRmNjc3NWU0YjI0YzZmM2Y0Y2I0Njk1NzQ2NDM5NWU1ZjkyNy4uMTQ0NDY5Mzg2ZGU2OGI3
N2Q5NWMwNjYzNmEzNjlkOTkyYjI0OGY3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvVWlu
dDE2QXJyYXkuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9VaW50MTZBcnJheS5oCkBAIC0zOSw2ICsz
OSwxMCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGlubGluZSBQYXNzUmVmUHRyPFVpbnQxNkFycmF5
PiBjcmVhdGUoY29uc3QgdW5zaWduZWQgc2hvcnQqIGFycmF5LCB1bnNpZ25lZCBsZW5ndGgpOwog
ICAgIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxVaW50MTZBcnJheT4gY3JlYXRlKFBhc3NSZWZQ
dHI8QXJyYXlCdWZmZXI+LCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOwog
CisgICAgLy8gU2hvdWxkIG9ubHkgYmUgdXNlZCB3aGVuIGl0IGlzIGtub3duIHRoZSBlbnRpcmUg
YXJyYXkgd2lsbCBiZSBmaWxsZWQuIERvCisgICAgLy8gbm90IHJldHVybiB0aGVzZSByZXN1bHRz
IGRpcmVjdGx5IHRvIEphdmFTY3JpcHQgd2l0aG91dCBmaWxsaW5nIGZpcnN0LgorICAgIHN0YXRp
YyBpbmxpbmUgUGFzc1JlZlB0cjxVaW50MTZBcnJheT4gY3JlYXRlVW5pbml0aWFsaXplZCh1bnNp
Z25lZCBsZW5ndGgpOworCiAgICAgLy8gQ2Fu4oCZdCB1c2UgInVzaW5nIiBoZXJlIGR1ZSB0byBh
IGJ1ZyBpbiB0aGUgUlZDVCBjb21waWxlci4KICAgICBib29sIHNldChUeXBlZEFycmF5QmFzZTx1
bnNpZ25lZCBzaG9ydD4qIGFycmF5LCB1bnNpZ25lZCBvZmZzZXQpIHsgcmV0dXJuIFR5cGVkQXJy
YXlCYXNlPHVuc2lnbmVkIHNob3J0Pjo6c2V0KGFycmF5LCBvZmZzZXQpOyB9CiAgICAgdm9pZCBz
ZXQodW5zaWduZWQgaW5kZXgsIGRvdWJsZSB2YWx1ZSkgeyBJbnRlZ3JhbFR5cGVkQXJyYXlCYXNl
PHVuc2lnbmVkIHNob3J0Pjo6c2V0KGluZGV4LCB2YWx1ZSk7IH0KQEAgLTc0LDYgKzc4LDExIEBA
IFBhc3NSZWZQdHI8VWludDE2QXJyYXk+IFVpbnQxNkFycmF5OjpjcmVhdGUoUGFzc1JlZlB0cjxB
cnJheUJ1ZmZlcj4gYnVmZmVyLCB1bnNpCiAgICAgcmV0dXJuIFR5cGVkQXJyYXlCYXNlPHVuc2ln
bmVkIHNob3J0Pjo6Y3JlYXRlPFVpbnQxNkFycmF5PihidWZmZXIsIGJ5dGVPZmZzZXQsIGxlbmd0
aCk7CiB9CiAKK1Bhc3NSZWZQdHI8VWludDE2QXJyYXk+IFVpbnQxNkFycmF5OjpjcmVhdGVVbmlu
aXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCkKK3sKKyAgICByZXR1cm4gVHlwZWRBcnJheUJhc2U8
dW5zaWduZWQgc2hvcnQ+OjpjcmVhdGVVbmluaXRpYWxpemVkPFVpbnQxNkFycmF5PihsZW5ndGgp
OworfQorCiBVaW50MTZBcnJheTo6VWludDE2QXJyYXkoUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4g
YnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpCiAgICAgOiBJbnRl
Z3JhbFR5cGVkQXJyYXlCYXNlPHVuc2lnbmVkIHNob3J0PihidWZmZXIsIGJ5dGVPZmZzZXQsIGxl
bmd0aCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1VpbnQzMkFycmF5LmggYi9Tb3Vy
Y2UvV1RGL3d0Zi9VaW50MzJBcnJheS5oCmluZGV4IDBlMzU1NDZlMjY5ODBlMGUwZmNjYzA4MWYz
N2Y0MWMxZjY2ZDY4NTIuLjFlNWIwMjgyMzQ3OTg3MGYwZjMyYzc2N2JjODQ4N2E5NDExMTBiZjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1VpbnQzMkFycmF5LmgKKysrIGIvU291cmNlL1dU
Ri93dGYvVWludDMyQXJyYXkuaApAQCAtMzksNiArMzksMTAgQEAgcHVibGljOgogICAgIHN0YXRp
YyBpbmxpbmUgUGFzc1JlZlB0cjxVaW50MzJBcnJheT4gY3JlYXRlKGNvbnN0IHVuc2lnbmVkIGlu
dCogYXJyYXksIHVuc2lnbmVkIGxlbmd0aCk7CiAgICAgc3RhdGljIGlubGluZSBQYXNzUmVmUHRy
PFVpbnQzMkFycmF5PiBjcmVhdGUoUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4sIHVuc2lnbmVkIGJ5
dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCk7CiAKKyAgICAvLyBTaG91bGQgb25seSBiZSB1c2Vk
IHdoZW4gaXQgaXMga25vd24gdGhlIGVudGlyZSBhcnJheSB3aWxsIGJlIGZpbGxlZC4gRG8KKyAg
ICAvLyBub3QgcmV0dXJuIHRoZXNlIHJlc3VsdHMgZGlyZWN0bHkgdG8gSmF2YVNjcmlwdCB3aXRo
b3V0IGZpbGxpbmcgZmlyc3QuCisgICAgc3RhdGljIGlubGluZSBQYXNzUmVmUHRyPFVpbnQzMkFy
cmF5PiBjcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCk7CisKICAgICAvLyBDYW7i
gJl0IHVzZSAidXNpbmciIGhlcmUgZHVlIHRvIGEgYnVnIGluIHRoZSBSVkNUIGNvbXBpbGVyLgog
ICAgIGJvb2wgc2V0KFR5cGVkQXJyYXlCYXNlPHVuc2lnbmVkIGludD4qIGFycmF5LCB1bnNpZ25l
ZCBvZmZzZXQpIHsgcmV0dXJuIFR5cGVkQXJyYXlCYXNlPHVuc2lnbmVkIGludD46OnNldChhcnJh
eSwgb2Zmc2V0KTsgfQogICAgIHZvaWQgc2V0KHVuc2lnbmVkIGluZGV4LCBkb3VibGUgdmFsdWUp
IHsgSW50ZWdyYWxUeXBlZEFycmF5QmFzZTx1bnNpZ25lZCBpbnQ+OjpzZXQoaW5kZXgsIHZhbHVl
KTsgfQpAQCAtNzQsNiArNzgsMTEgQEAgUGFzc1JlZlB0cjxVaW50MzJBcnJheT4gVWludDMyQXJy
YXk6OmNyZWF0ZShQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXIsIHVuc2kKICAgICByZXR1
cm4gVHlwZWRBcnJheUJhc2U8dW5zaWduZWQgaW50Pjo6Y3JlYXRlPFVpbnQzMkFycmF5PihidWZm
ZXIsIGJ5dGVPZmZzZXQsIGxlbmd0aCk7CiB9CiAKK1Bhc3NSZWZQdHI8VWludDMyQXJyYXk+IFVp
bnQzMkFycmF5OjpjcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCkKK3sKKyAgICBy
ZXR1cm4gVHlwZWRBcnJheUJhc2U8dW5zaWduZWQgaW50Pjo6Y3JlYXRlVW5pbml0aWFsaXplZDxV
aW50MzJBcnJheT4obGVuZ3RoKTsKK30KKwogVWludDMyQXJyYXk6OlVpbnQzMkFycmF5KFBhc3NS
ZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQg
bGVuZ3RoKQogICAgIDogSW50ZWdyYWxUeXBlZEFycmF5QmFzZTx1bnNpZ25lZCBpbnQ+KGJ1ZmZl
ciwgYnl0ZU9mZnNldCwgbGVuZ3RoKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVWlu
dDhBcnJheS5oIGIvU291cmNlL1dURi93dGYvVWludDhBcnJheS5oCmluZGV4IGZjNDQxN2Q5ODNh
ZmNkNTA1ZGMyZTQzN2Y0ODVmNGY3MmQ4NGQyYzcuLmEyM2QxZWI1MDgxZTY1ODJjMTUyZDU1Y2Y0
ZDFhMWMzZTFjYzk4ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1VpbnQ4QXJyYXkuaAor
KysgYi9Tb3VyY2UvV1RGL3d0Zi9VaW50OEFycmF5LmgKQEAgLTM5LDYgKzM5LDEwIEBAIHB1Ymxp
YzoKICAgICBzdGF0aWMgaW5saW5lIFBhc3NSZWZQdHI8VWludDhBcnJheT4gY3JlYXRlKGNvbnN0
IHVuc2lnbmVkIGNoYXIqIGFycmF5LCB1bnNpZ25lZCBsZW5ndGgpOwogICAgIHN0YXRpYyBpbmxp
bmUgUGFzc1JlZlB0cjxVaW50OEFycmF5PiBjcmVhdGUoUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4s
IHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCk7CiAKKyAgICAvLyBTaG91bGQg
b25seSBiZSB1c2VkIHdoZW4gaXQgaXMga25vd24gdGhlIGVudGlyZSBhcnJheSB3aWxsIGJlIGZp
bGxlZC4gRG8KKyAgICAvLyBub3QgcmV0dXJuIHRoZXNlIHJlc3VsdHMgZGlyZWN0bHkgdG8gSmF2
YVNjcmlwdCB3aXRob3V0IGZpbGxpbmcgZmlyc3QuCisgICAgc3RhdGljIGlubGluZSBQYXNzUmVm
UHRyPFVpbnQ4QXJyYXk+IGNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoKTsKKwog
ICAgIC8vIENhbuKAmXQgdXNlICJ1c2luZyIgaGVyZSBkdWUgdG8gYSBidWcgaW4gdGhlIFJWQ1Qg
Y29tcGlsZXIuCiAgICAgYm9vbCBzZXQoVHlwZWRBcnJheUJhc2U8dW5zaWduZWQgY2hhcj4qIGFy
cmF5LCB1bnNpZ25lZCBvZmZzZXQpIHsgcmV0dXJuIFR5cGVkQXJyYXlCYXNlPHVuc2lnbmVkIGNo
YXI+OjpzZXQoYXJyYXksIG9mZnNldCk7IH0KICAgICB2b2lkIHNldCh1bnNpZ25lZCBpbmRleCwg
ZG91YmxlIHZhbHVlKSB7IEludGVncmFsVHlwZWRBcnJheUJhc2U8dW5zaWduZWQgY2hhcj46OnNl
dChpbmRleCwgdmFsdWUpOyB9CkBAIC03NCw2ICs3OCwxMSBAQCBQYXNzUmVmUHRyPFVpbnQ4QXJy
YXk+IFVpbnQ4QXJyYXk6OmNyZWF0ZShQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXIsIHVu
c2lnbgogICAgIHJldHVybiBUeXBlZEFycmF5QmFzZTx1bnNpZ25lZCBjaGFyPjo6Y3JlYXRlPFVp
bnQ4QXJyYXk+KGJ1ZmZlciwgYnl0ZU9mZnNldCwgbGVuZ3RoKTsKIH0KIAorUGFzc1JlZlB0cjxV
aW50OEFycmF5PiBVaW50OEFycmF5OjpjcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0
aCkKK3sKKyAgICByZXR1cm4gVHlwZWRBcnJheUJhc2U8dW5zaWduZWQgY2hhcj46OmNyZWF0ZVVu
aW5pdGlhbGl6ZWQ8VWludDhBcnJheT4obGVuZ3RoKTsKK30KKwogVWludDhBcnJheTo6VWludDhB
cnJheShQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXIsIHVuc2lnbmVkIGJ5dGVPZmZzZXQs
IHVuc2lnbmVkIGxlbmd0aCkKIDogSW50ZWdyYWxUeXBlZEFycmF5QmFzZTx1bnNpZ25lZCBjaGFy
PihidWZmZXIsIGJ5dGVPZmZzZXQsIGxlbmd0aCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
d3RmL1VpbnQ4Q2xhbXBlZEFycmF5LmggYi9Tb3VyY2UvV1RGL3d0Zi9VaW50OENsYW1wZWRBcnJh
eS5oCmluZGV4IDlhYzE1NjQ5MjQ0N2IxMGU0OTA3ZGMwZGYxNDcxN2ZkNWVhYjcwNGIuLmQ2M2E0
ZTZmNTE5Zjk1MGIxMWJkNDRjMjAyYmY4MjY0NGUwNzIzMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvd3RmL1VpbnQ4Q2xhbXBlZEFycmF5LmgKKysrIGIvU291cmNlL1dURi93dGYvVWludDhDbGFt
cGVkQXJyYXkuaApAQCAtMzgsOSArMzgsOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGlubGluZSBQ
YXNzUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBjcmVhdGUoY29uc3QgdW5zaWduZWQgY2hhciog
YXJyYXksIHVuc2lnbmVkIGxlbmd0aCk7CiAgICAgc3RhdGljIGlubGluZSBQYXNzUmVmUHRyPFVp
bnQ4Q2xhbXBlZEFycmF5PiBjcmVhdGUoUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4sIHVuc2lnbmVk
IGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCk7CiAKLSAgICAvLyBTaG91bGQgb25seSBiZSB1
c2VkIGZvciBXZWJDb3JlLWludGVybmFsIHVzZSAobGlrZSBmaWx0ZXJzIGFuZAotICAgIC8vIGdl
dEltYWdlRGF0YSkgd2hlbiBpdCBpcyBrbm93biB0aGUgZW50aXJlIGFycmF5IHdpbGwgYmUgZmls
bGVkLgotICAgIC8vIERvIG5vdCByZXR1cm4gdGhlc2UgcmVzdWx0cyBkaXJlY3RseSB0byBKYXZh
U2NyaXB0LgorICAgIC8vIFNob3VsZCBvbmx5IGJlIHVzZWQgd2hlbiBpdCBpcyBrbm93biB0aGUg
ZW50aXJlIGFycmF5IHdpbGwgYmUgZmlsbGVkLiBEbworICAgIC8vIG5vdCByZXR1cm4gdGhlc2Ug
cmVzdWx0cyBkaXJlY3RseSB0byBKYXZhU2NyaXB0IHdpdGhvdXQgZmlsbGluZyBmaXJzdC4KICAg
ICBzdGF0aWMgaW5saW5lIFBhc3NSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IGNyZWF0ZVVuaW5p
dGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoKTsKIAogICAgIC8vIEl0J3Mgb25seSBuZWVkZWQgdG8g
cG90ZW50aWFsbHkgY2FsbCB0aGlzIG1ldGhvZCBpZiB0aGUgYXJyYXkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXJyYXlCdWZmZXJWaWV3SGVscGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0FycmF5QnVmZmVyVmlld0hlbHBlci5oCmluZGV4IDc2
ZTYxMTY2YzUxOTVkYTg4NGM1ODdhN2ExMjhlMDFjNDJjNGQ0ODcuLjhjNmY0MjY3NzdhZjdiODIw
ZTkxMWM2ODIzMzI0MjU3NDAzYzcwZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTQXJyYXlCdWZmZXJWaWV3SGVscGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNBcnJheUJ1ZmZlclZpZXdIZWxwZXIuaApAQCAtOTksNyArOTksNyBAQCBQYXNz
UmVmUHRyPEM+IGNvbnN0cnVjdEFycmF5QnVmZmVyVmlld1dpdGhUeXBlZEFycmF5QXJndW1lbnQo
SlNDOjpFeGVjU3RhdGUqIGV4ZQogICAgICAgICByZXR1cm4gMDsKIAogICAgIHVpbnQzMl90IGxl
bmd0aCA9IGFzT2JqZWN0KGV4ZWMtPmFyZ3VtZW50KDApKS0+Z2V0KGV4ZWMsIEpTQzo6SWRlbnRp
ZmllcihleGVjLCAibGVuZ3RoIikpLnRvVUludDMyKGV4ZWMpOwotICAgIFJlZlB0cjxDPiBhcnJh
eSA9IEM6OmNyZWF0ZShsZW5ndGgpOworICAgIFJlZlB0cjxDPiBhcnJheSA9IEM6OmNyZWF0ZVVu
aW5pdGlhbGl6ZWQobGVuZ3RoKTsKICAgICBpZiAoIWFycmF5KSB7CiAgICAgICAgIHNldERPTUV4
Y2VwdGlvbihleGVjLCBJTkRFWF9TSVpFX0VSUik7CiAgICAgICAgIHJldHVybiBhcnJheTsKQEAg
LTIxMiw3ICsyMTIsNyBAQCBQYXNzUmVmUHRyPEM+IGNvbnN0cnVjdEFycmF5QnVmZmVyVmlldyhK
U0M6OkV4ZWNTdGF0ZSogZXhlYykKIAogICAgICAgICBKU0M6OkpTT2JqZWN0KiBzcmNBcnJheSA9
IGFzT2JqZWN0KGV4ZWMtPmFyZ3VtZW50KDApKTsKICAgICAgICAgdWludDMyX3QgbGVuZ3RoID0g
c3JjQXJyYXktPmdldChleGVjLCBKU0M6OklkZW50aWZpZXIoZXhlYywgImxlbmd0aCIpKS50b1VJ
bnQzMihleGVjKTsKLSAgICAgICAgUmVmUHRyPEM+IGFycmF5ID0gQzo6Y3JlYXRlKGxlbmd0aCk7
CisgICAgICAgIFJlZlB0cjxDPiBhcnJheSA9IEM6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQobGVuZ3Ro
KTsKICAgICAgICAgaWYgKCFhcnJheSkgewogICAgICAgICAgICAgc2V0RE9NRXhjZXB0aW9uKGV4
ZWMsIElOREVYX1NJWkVfRVJSKTsKICAgICAgICAgICAgIHJldHVybiBhcnJheTsKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBl
MThiOTJhOTJiNmE5MDVhMTkyMjFjZjRhM2FkMWQ2MjE5M2E4NGY2Li4wZjlmNDU5YzNjNTg0ZDNk
Y2I3OWY5NmU4Mjc4NTZkNTZmOTVkYmQ1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTItMDct
MjcgIEFybmF1ZCBSZW5ldmllciAgPGEucmVuZXZpZXJAc2lzYS5zYW1zdW5nLmNvbT4KKworICAg
ICAgICB1c2UgY3JlYXRlVW5pbml0aWFsaXplZCB3aGVuIGNyZWF0aW5nIFR5cGVkQXJyYXkgZnJv
bSBhbm90aGVyIGFycmF5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD05MjUxOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEFkZCB0ZXN0IHRvIGNoZWNrIHRoYXQgY29uc3RydWN0aW5nIGEgVHlwZWQgQXJyYXkg
d2l0aCBuYW4gdmFsdWVzIGRvZXMKKyAgICAgICAgbm90IHJlc3VsdCBpbiByYW5kb20gdmFsdWVz
LgorCisgICAgICAgICogZmFzdC9jYW52YXMvd2ViZ2wvYXJyYXktY29uc3RydWN0b3ItZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2NhbnZhcy93ZWJnbC9hcnJheS1jb25zdHJ1
Y3Rvci5odG1sOiBBZGRlZC4KKwogMjAxMi0wNy0yNSAgVG9tbXkgV2lkZW5mbHljaHQgIDx0b21t
eXdAZ29vZ2xlLmNvbT4KIAogICAgICAgICBNZWRpYVN0cmVhbSBBUEk6IFVwZGF0ZSBNZWRpYVN0
cmVhbVRyYWNrIHRvIG1hdGNoIHRoZSBzcGVjaWZpY2F0aW9uCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9hcnJheS1jb25zdHJ1Y3Rvci1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9hcnJheS1jb25zdHJ1Y3Rvci1leHBlY3RlZC50
eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNDdkYjkxNTJjMGQzYTdjMzk2MjQ3YmUwMDhkZTkwNjk0MDJmYzZhYwot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2FycmF5LWNv
bnN0cnVjdG9yLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMwIEBACitWZXJpZmllcyB0aGF0IHdo
ZW4gY29uc3RydWN0aW5nIFdlYkdMQXJyYXkgd2l0aCBuYW4gdmFsdWVzLCBpdCByZXN1bHRzIGlu
IGEgMAorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3Nh
Z2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKK1BBU1MgMTAgaXMgMTAKK1BBU1Mg
MCBpcyAwCitQQVNTIDAgaXMgMAorUEFTUyAwIGlzIDAKK1BBU1MgMCBpcyAwCitQQVNTIDAgaXMg
MAorUEFTUyAwIGlzIDAKK1BBU1MgMCBpcyAwCitQQVNTIDAgaXMgMAorUEFTUyAwIGlzIDAKK1BB
U1MgMCBpcyAwCitQQVNTIDEwIGlzIDEwCitQQVNTIDAgaXMgMAorUEFTUyAwIGlzIDAKK1BBU1Mg
MCBpcyAwCitQQVNTIDAgaXMgMAorUEFTUyAwIGlzIDAKK1BBU1MgMCBpcyAwCitQQVNTIDAgaXMg
MAorUEFTUyAwIGlzIDAKK1BBU1MgMCBpcyAwCitQQVNTIDAgaXMgMAorUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3QvY2FudmFzL3dlYmdsL2FycmF5LWNvbnN0cnVjdG9yLmh0bWwgYi9MYXlvdXRUZXN0
cy9mYXN0L2NhbnZhcy93ZWJnbC9hcnJheS1jb25zdHJ1Y3Rvci5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYz
NzllNjQ3OGIzMjY0YzFkNzU2Njc3ZDZlZDc2MDdlMWNlNWFmNjMKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9hcnJheS1jb25zdHJ1Y3Rvci5odG1sCkBA
IC0wLDAgKzEsMzYgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVz
b3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMv
d2ViZ2wtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2Ny
aXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorCis8c2NyaXB0PgorCitk
ZXNjcmlwdGlvbigiVmVyaWZpZXMgdGhhdCB3aGVuIGNvbnN0cnVjdGluZyBXZWJHTEFycmF5IHdp
dGggbmFuIHZhbHVlcywgaXQgcmVzdWx0cyBpbiBhIDAiKTsKKwordmFyIHNvdXJjZSwgdGFyZ2V0
LCBpZHg7CisKK3NvdXJjZSA9IG5ldyBBcnJheSgxMCk7CisKK3RhcmdldCA9IG5ldyBVaW50OEFy
cmF5KHNvdXJjZSk7CitzaG91bGRCZSh0YXJnZXQubGVuZ3RoLnRvU3RyaW5nKCksIHNvdXJjZS5s
ZW5ndGgudG9TdHJpbmcoKSkKK2ZvciAoaWR4ID0gMDsgaWR4IDwgdGFyZ2V0Lmxlbmd0aDsgaWR4
KyspIHsKKyAgICBzaG91bGRCZVplcm8odGFyZ2V0W2lkeF0udG9TdHJpbmcoKSk7Cit9CisKK3Nv
dXJjZSA9IHtsZW5ndGg6IDEwfTsKK3RhcmdldCA9IG5ldyBVaW50OEFycmF5KHNvdXJjZSk7Citz
aG91bGRCZSh0YXJnZXQubGVuZ3RoLnRvU3RyaW5nKCksIHNvdXJjZS5sZW5ndGgudG9TdHJpbmco
KSkKK2ZvciAoaWR4ID0gMDsgaWR4IDwgdGFyZ2V0Lmxlbmd0aDsgaWR4KyspIHsKKyAgICBzaG91
bGRCZVplcm8odGFyZ2V0W2lkeF0udG9TdHJpbmcoKSk7Cit9CisKKzwvc2NyaXB0PgorCis8c2Ny
aXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8
L2JvZHk+Cis8L2h0bWw+CisKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQmluZGluZ3Mv
dHlwZWQtYXJyYXktY29uc3RydWN0LWZyb20tYXJyYXkuaHRtbCBiL1BlcmZvcm1hbmNlVGVzdHMv
QmluZGluZ3MvdHlwZWQtYXJyYXktY29uc3RydWN0LWZyb20tYXJyYXkuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40YThlODkzZGRjODUwNDZjZjYwZmM0NTUwNjQ3Yjk2NzdlYjkzYThiCi0tLSAvZGV2L251bGwK
KysrIGIvUGVyZm9ybWFuY2VUZXN0cy9CaW5kaW5ncy90eXBlZC1hcnJheS1jb25zdHJ1Y3QtZnJv
bS1hcnJheS5odG1sCkBAIC0wLDAgKzEsMTcgQEAKKzwhRE9DVFlQRSBodG1sPgorPGJvZHk+Cis8
c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3J1bm5lci5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pgor
Cit2YXIgbGVuZ3RoID0gMTAwMDAwMDA7Cit2YXIgc291cmNlID0gbmV3IEFycmF5KGxlbmd0aCk7
Citmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CisgICAgc291cmNlW2ldID0gaTsK
K30KKworUGVyZlRlc3RSdW5uZXIucnVuKGZ1bmN0aW9uKCkgeworICAgIHZhciB0YXJnZXQgPSBu
ZXcgVWludDhBcnJheShzb3VyY2UpOworfSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKwpkaWZmIC0t
Z2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9DaGFuZ2VMb2cgYi9QZXJmb3JtYW5jZVRlc3RzL0NoYW5n
ZUxvZwppbmRleCAwOGVjM2Y5ZWI4ZDJjZmJlOTE3MDZjYTI1M2U2ODM2YzNkYjY4ZGYxLi4yNTBk
ZWQ3ZmQ1NDEyZWJhOTk4MzYzZGY1MmViZDI4Y2UzNDhjNGI5IDEwMDY0NAotLS0gYS9QZXJmb3Jt
YW5jZVRlc3RzL0NoYW5nZUxvZworKysgYi9QZXJmb3JtYW5jZVRlc3RzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDEyIEBACisyMDEyLTA3LTI3ICBBcm5hdWQgUmVuZXZpZXIgIDxhLnJlbmV2aWVyQHNp
c2Euc2Ftc3VuZy5jb20+CisKKyAgICAgICAgdXNlIGNyZWF0ZVVuaW5pdGlhbGl6ZWQgd2hlbiBj
cmVhdGluZyBUeXBlZEFycmF5IGZyb20gYW5vdGhlciBhcnJheQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTI1MTgKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEJpbmRpbmdzL3R5cGVkLWFycmF5LWNvbnN0
cnVjdC1mcm9tLWFycmF5Lmh0bWw6IEFkZGVkLgorCiAyMDEyLTA3LTI1ICBBcm5hdWQgUmVuZXZp
ZXIgIDxhLnJlbmV2aWVyQHNpc2Euc2Ftc3VuZy5jb20+CiAKICAgICAgICAgY29uc3RydWN0aW5n
IFR5cGVkQXJyYXkgZnJvbSBhbm90aGVyIFR5cGVkQXJyYXkgaXMgc2xvdwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>