<?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>187543</bug_id>
          
          <creation_ts>2018-07-10 17:34:24 -0700</creation_ts>
          <short_desc>constructArray() should always allocate the requested length.</short_desc>
          <delta_ts>2018-07-10 23:22:19 -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>WebKit 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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Lam">mark.lam</reporter>
          <assigned_to name="Mark Lam">mark.lam</assigned_to>
          <cc>fpizlo</cc>
    
    <cc>keith_miller</cc>
    
    <cc>msaboff</cc>
    
    <cc>rmorisset</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1441041</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2018-07-10 17:34:24 -0700</bug_when>
    <thetext>Currently, it does not when we&apos;re having a bad time.

&lt;rdar://problem/41947884&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1441067</commentid>
    <comment_count>1</comment_count>
      <attachid>344745</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2018-07-10 18:45:48 -0700</bug_when>
    <thetext>Created attachment 344745
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1441099</commentid>
    <comment_count>2</comment_count>
      <attachid>344745</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-07-10 22:15:17 -0700</bug_when>
    <thetext>Comment on attachment 344745
proposed patch.

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

&gt; Source/JavaScriptCore/runtime/JSArray.cpp:1384
&gt; +    // FIXME: We only need this for subclasses of Array because we might need to allocate a new structure to change
&gt; +    // indexing types while initializing. If this triggered a GC then we might scan our currently uninitialized
&gt; +    // array and crash. https://bugs.webkit.org/show_bug.cgi?id=186811

I&apos;m confused. Why don&apos;t we just select the correct indexing type from the beginning? I also don&apos;t understand why this just effects subclasses but nothing else</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1441105</commentid>
    <comment_count>3</comment_count>
      <attachid>344745</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2018-07-10 22:31:12 -0700</bug_when>
    <thetext>Comment on attachment 344745
proposed patch.

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

&gt;&gt; Source/JavaScriptCore/runtime/JSArray.cpp:1384
&gt;&gt; +    // array and crash. https://bugs.webkit.org/show_bug.cgi?id=186811
&gt; 
&gt; I&apos;m confused. Why don&apos;t we just select the correct indexing type from the beginning? I also don&apos;t understand why this just effects subclasses but nothing else

Because we don&apos;t know the final indexing type of the array up front.  For context, expand the code below and see the 2 other variants of constructArray() and a constructArrayNegativeIndexed() that calls this constructArray().  Those 3 functions will iterate some list of JSValues and initialize the butterfly with the values that come in.  In the process of doing so, the indexing type may change.  If the structure is for the original array indexing types, then the structures transitioned to are one of the other pre-allocated array structures i.e. no allocation needed, and no GC can be triggered.  If we have a subclass, then new structures will need to be allocated, and therefore GC can be triggered.  The GC can therefore see the uninitialized values in the butterfly.

BTW, this comment came from the original code above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1441112</commentid>
    <comment_count>4</comment_count>
      <attachid>344745</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-07-10 22:54:23 -0700</bug_when>
    <thetext>Comment on attachment 344745
proposed patch.

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

r=me

&gt; Source/JavaScriptCore/runtime/JSArray.cpp:109
&gt; +void JSArray::eagerlyInitializeButterfly(ObjectInitializationScope&amp; scope, JSArray* array, unsigned initialLength)

It feels like this could perhaps have an even more specific name since it&apos;s used in one super special place.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1441115</commentid>
    <comment_count>5</comment_count>
      <attachid>344745</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2018-07-10 23:06:35 -0700</bug_when>
    <thetext>Comment on attachment 344745
proposed patch.

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

Thanks for the review.

&gt;&gt; Source/JavaScriptCore/runtime/JSArray.cpp:109
&gt;&gt; +void JSArray::eagerlyInitializeButterfly(ObjectInitializationScope&amp; scope, JSArray* array, unsigned initialLength)
&gt; 
&gt; It feels like this could perhaps have an even more specific name since it&apos;s used in one super special place.

I couldn&apos;t think of a better name, and still can&apos;t yet.  I&apos;ll just keep it as is for now.  We can always rename it if we think of a better name later.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1441116</commentid>
    <comment_count>6</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2018-07-10 23:22:19 -0700</bug_when>
    <thetext>Landed in r233722: &lt;http://trac.webkit.org/r233722&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>344745</attachid>
            <date>2018-07-10 18:45:48 -0700</date>
            <delta_ts>2018-07-10 22:54:23 -0700</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-187543.patch</filename>
            <type>text/plain</type>
            <size>14075</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyMzM3MTgpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE1IEBACisyMDE4LTA3LTEwICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNv
bT4KKworICAgICAgICBjb25zdHJ1Y3RBcnJheSgpIHNob3VsZCBhbHdheXMgYWxsb2NhdGUgdGhl
IHJlcXVlc3RlZCBsZW5ndGguCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xODc1NDMKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQxOTQ3ODg0PgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3RyZXNzL3Jl
Z3Jlc3MtMTg3NTQzLTIuanM6IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9yZWdyZXNzLTE4NzU0
My0zLmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3MvcmVncmVzcy0xODc1NDMuanM6IEFkZGVk
LgorCiAyMDE4LTA3LTEwICBLZWl0aCBNaWxsZXIgIDxrZWl0aF9taWxsZXJAYXBwbGUuY29tPgog
CiAgICAgICAgIGhhc093blByb3BlcnR5IHJldHVybnMgdHJ1ZSBmb3Igb3V0IG9mIGJvdW5kcyBw
cm9wZXJ0eSBpbmRleCBvbiBUeXBlZEFycmF5CkluZGV4OiBKU1Rlc3RzL3N0cmVzcy9yZWdyZXNz
LTE4NzU0My0yLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvc3RyZXNzL3JlZ3Jlc3MtMTg3NTQz
LTIuanMJKG5vbmV4aXN0ZW50KQorKysgSlNUZXN0cy9zdHJlc3MvcmVncmVzcy0xODc1NDMtMi5q
cwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEwIEBACisvLyBUaGlzIHRlc3Qgc2hvdWxkIG5v
dCBjcmFzaC4KKworT2JqZWN0LmRlZmluZVByb3BlcnR5KE9iamVjdC5wcm90b3R5cGUsIDAsIHsg
c2V0KCkge30gfSk7CisKK3ZhciBmb28gPSBGdW5jdGlvbi5iaW5kLmNhbGwobmV3IFByb3h5KEFy
cmF5LCB7fSkpOworZm9yICh2YXIgaSA9IDEwOyBpIDwgNTA7ICsraSkgeworICAgIHZhciBhcmdz
ID0gQXJyYXkoaSkuZmlsbChpKTsKKyAgICBuZXcgZm9vKC4uLmFyZ3MpOworICAgIGdjKCkKK30K
SW5kZXg6IEpTVGVzdHMvc3RyZXNzL3JlZ3Jlc3MtMTg3NTQzLTMuanMKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
SlNUZXN0cy9zdHJlc3MvcmVncmVzcy0xODc1NDMtMy5qcwkobm9uZXhpc3RlbnQpCisrKyBKU1Rl
c3RzL3N0cmVzcy9yZWdyZXNzLTE4NzU0My0zLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
MTQgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VEb2xsYXJWTT1mYWxzZSIpCisKKy8vIFRo
aXMgdGVzdCBzaG91bGQgbm90IGNyYXNoLgorRGF0ZS5wcm90b3R5cGUudmFsdWVPZjsKK01hdGgu
YWJzOworCitPYmplY3QucHJvdG90eXBlLl9fZGVmaW5lR2V0dGVyX18oMCwgZnVuY3Rpb24gKCkg
e30pOworCitjbGFzcyBUZXN0IGV4dGVuZHMgQXJyYXkge30KKworZm9yIChsZXQgaSA9IDA7IGkg
PCAxMDA7IGkrKykKKyAgICBuZXcgVGVzdCgxLCAyLCAzLCAtNCwgNSwgNiwgNywgOCwgOSkuc3Bs
aWNlKCk7CisKK2djKCk7CkluZGV4OiBKU1Rlc3RzL3N0cmVzcy9yZWdyZXNzLTE4NzU0My5qcwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBKU1Rlc3RzL3N0cmVzcy9yZWdyZXNzLTE4NzU0My5qcwkobm9uZXhpc3Rl
bnQpCisrKyBKU1Rlc3RzL3N0cmVzcy9yZWdyZXNzLTE4NzU0My5qcwkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDcgQEAKKy8vIFRoaXMgdGVzdCBzaG91bGQgbm90IGNyYXNoLgorCitPYmplY3Qu
ZGVmaW5lUHJvcGVydHkoT2JqZWN0LnByb3RvdHlwZSwgMCwgeyBzZXQoKSB7IH0gfSk7Cit2YXIg
Zm9vID0gRnVuY3Rpb24uYmluZC5jYWxsKG5ldyBQcm94eShBcnJheSwge30pKTsKK2djKCk7Citu
ZXcgZm9vKDAsIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwg
MTUsIDE2LCAxNywgMTgsIDE5LCAyMCwgMjEsIDIyLCAyMywgMjQsIDI1KTsKK2djKCk7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzMzY1OCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw0MyBAQAorMjAx
OC0wNy0xMCAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAgY29uc3Ry
dWN0QXJyYXkoKSBzaG91bGQgYWx3YXlzIGFsbG9jYXRlIHRoZSByZXF1ZXN0ZWQgbGVuZ3RoLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg3NTQzCisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS80MTk0Nzg4ND4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDdXJyZW50bHksIGl0IGRvZXMgbm90IHdoZW4gd2Un
cmUgaGF2aW5nIGEgYmFkIHRpbWUuICBXZSBmaXggdGhpcyBieSBzd2l0Y2hpbmcKKyAgICAgICAg
YmFjayB0byB1c2luZyB0cnlDcmVhdGVVbmluaXRpYWxpemVkUmVzdHJpY3RlZCgpIGV4Y2x1c2l2
ZWx5IGluIGNvbnN0cnVjdEFycmF5KCkuCisgICAgICAgIElmIHdlIGRldGVjdCB0aGF0IGEgc3Ry
dWN0dXJlIHRyYW5zaXRpb24gaXMgcG9zc2libGUgYmVmb3JlIHdlIGNhbiBpbml0aWFsaXplCisg
ICAgICAgIHRoZSBidXR0ZXJmbHksIHdlJ2xsIGdvIGFoZWFkIGFuZCBlYWdlcmx5IGluaXRpYWxp
emUgdGhlIHJlc3Qgb2YgdGhlIGJ1dHRlcmZseS4KKyAgICAgICAgV2Ugd2lsbCBpbnRyb2R1Y2Ug
SlNBcnJheTo6ZWFnZXJseUluaXRpYWxpemVCdXR0ZXJmbHkoKSB0byBoYW5kbGUgdGhpcy4KKwor
ICAgICAgICBBbHNvIGVuaGFuY2VkIHRoZSBEaXNhbGxvd1Njb3BlIGFuZCBPYmplY3RJbml0aWFs
aXphdGlvblNjb3BlIHRvIHN1cHBvcnQgdGhpcworICAgICAgICBlYWdlciBpbml0aWFsaXphdGlv
biB3aGVuIG5lZWRlZC4KKworICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmNwcDoKKyAgICAg
ICAgLSB0aGUgY2xpZW50IG9mIG9wZXJhdGlvbk5ld0FycmF5V2l0aFNpemVBbmRIaW50KCkgKGlu
IEZUTCBnZW5lcmF0ZWQgY29kZSkgZXhwZWN0cworICAgICAgICAgIHRoZSBhcnJheSBhbGxvY2F0
aW9uIHRvIGFsd2F5cyBzdWNjZWVkLiAgQWRkaW5nIHRoaXMgUkVMRUFTRV9BU1NFUlQgaGVyZSBt
YWtlcworICAgICAgICAgIGl0IGNsZWFyZXIgdGhhdCB3ZSBlbmNvdW50ZXJlZCBhbiBPdXRPZk1l
bW9yeSBjb25kaXRpb24gaW5zdGVhZCBvZiBmYWlsaW5nIGluIEZUTAorICAgICAgICAgIGdlbmVy
YXRlZCBjb2RlLCB3aGljaCB3aWxsIGFwcGVhciBhcyBhIGdlbmVyaWMgbnVsbCBwb2ludGVyIGRl
cmVmZXJlbmNlLgorCisgICAgICAgICogcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHA6CisgICAg
ICAgIChKU0M6OmNvbmNhdEFwcGVuZE9uZSk6CisgICAgICAgIC0gdGhlIGNvZGUgaGVyZSBjbGVh
cmx5IHdhbnRzIHRvIGNoZWNrIGZvciBhbiBhbGxvY2F0aW9uIGZhaWx1cmUuICBTd2l0Y2hlZCB0
bworICAgICAgICAgIHVzaW5nIEpTQXJyYXk6OnRyeUNyZWF0ZSgpIGluc3RlYWQgb2YgSlNBcnJh
eTo6Y3JlYXRlKCkuCisKKyAgICAgICAgKiBydW50aW1lL0Rpc2FsbG93U2NvcGUuaDoKKyAgICAg
ICAgKEpTQzo6RGlzYWxsb3dTY29wZTo6ZGlzYWJsZSk6CisgICAgICAgICogcnVudGltZS9KU0Fy
cmF5LmNwcDoKKyAgICAgICAgKEpTQzo6SlNBcnJheTo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZFJl
c3RyaWN0ZWQpOgorICAgICAgICAoSlNDOjpKU0FycmF5OjplYWdlcmx5SW5pdGlhbGl6ZUJ1dHRl
cmZseSk6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEFycmF5KToKKyAgICAgICAgKiBydW50aW1l
L0pTQXJyYXkuaDoKKyAgICAgICAgKiBydW50aW1lL09iamVjdEluaXRpYWxpemF0aW9uU2NvcGUu
Y3BwOgorICAgICAgICAoSlNDOjpPYmplY3RJbml0aWFsaXphdGlvblNjb3BlOjpub3RpZnlJbml0
aWFsaXplZCk6CisgICAgICAgICogcnVudGltZS9PYmplY3RJbml0aWFsaXphdGlvblNjb3BlLmg6
CisgICAgICAgIChKU0M6Ok9iamVjdEluaXRpYWxpemF0aW9uU2NvcGU6Om5vdGlmeUluaXRpYWxp
emVkKToKKwogMjAxOC0wNy0wOSAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CiAKICAg
ICAgICAgQWRkIC0tdHJhY2VMTEludEV4ZWN1dGlvbiBhbmQgLS10cmFjZUxMSW50U2xvd1BhdGgg
b3B0aW9ucy4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25z
LmNwcAkocmV2aXNpb24gMjMzNjU3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
cGVyYXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUzMiw3ICsxNTMyLDcgQEAgY2hhciog
SklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdBcnJheVdpdAogICAgICAgICByZXN1bHQgPSBKU0Fy
cmF5OjpjcmVhdGVXaXRoQnV0dGVyZmx5KHZtLCBudWxscHRyLCBhcnJheVN0cnVjdHVyZSwgYnV0
dGVyZmx5KTsKICAgICBlbHNlIHsKICAgICAgICAgcmVzdWx0ID0gSlNBcnJheTo6dHJ5Q3JlYXRl
KHZtLCBhcnJheVN0cnVjdHVyZSwgc2l6ZSwgdmVjdG9yTGVuZ3RoSGludCk7Ci0gICAgICAgIEFT
U0VSVChyZXN1bHQpOworICAgICAgICBSRUxFQVNFX0FTU0VSVChyZXN1bHQpOwogICAgIH0KICAg
ICByZXR1cm4gYml0d2lzZV9jYXN0PGNoYXIqPihyZXN1bHQpOwogfQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcAkocmV2aXNpb24g
MjMzNjU3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjY5LDcgKzEyNjksNyBAQCBzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgY29uY2F0QXBwZW5kT25lKEV4CiAgICAgICAgIHR5cGUgPSBmaXJzdC0+aW5kZXhpbmdU
eXBlKCk7CiAKICAgICBTdHJ1Y3R1cmUqIHJlc3VsdFN0cnVjdHVyZSA9IGV4ZWMtPmxleGljYWxH
bG9iYWxPYmplY3QoKS0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0
aW9uKHR5cGUpOwotICAgIEpTQXJyYXkqIHJlc3VsdCA9IEpTQXJyYXk6OmNyZWF0ZSh2bSwgcmVz
dWx0U3RydWN0dXJlLCByZXN1bHRTaXplKTsKKyAgICBKU0FycmF5KiByZXN1bHQgPSBKU0FycmF5
Ojp0cnlDcmVhdGUodm0sIHJlc3VsdFN0cnVjdHVyZSwgcmVzdWx0U2l6ZSk7CiAgICAgaWYgKFVO
TElLRUxZKCFyZXN1bHQpKSB7CiAgICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjLCBz
Y29wZSk7CiAgICAgICAgIHJldHVybiBlbmNvZGVkSlNWYWx1ZSgpOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRGlzYWxsb3dTY29wZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Rpc2FsbG93U2NvcGUuaAkocmV2aXNpb24gMjMzNjU3
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGlzYWxsb3dTY29wZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAxOCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTY2LDYgKzY2LDEyIEBAIHB1YmxpYzoKICAgICAgICAgZW50ZXJTY29wZSgpOwog
ICAgIH0KIAorICAgIHZvaWQgZGlzYWJsZSgpCisgICAgeworICAgICAgICBtX2lzRW5hYmxlZCA9
IGZhbHNlOworICAgICAgICBleGl0U2NvcGUoKTsKKyAgICB9CisKIHByaXZhdGU6CiAgICAgdm9p
ZCBlbnRlclNjb3BlKCkKICAgICB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0FycmF5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0FycmF5LmNwcAkocmV2aXNpb24gMjMzNjU3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNBcnJheS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDcgKzQ4LDcgQEAgSlNB
cnJheSogSlNBcnJheTo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZAogICAgIFZNJiB2bSA9IHNjb3Bl
LnZtKCk7CiAKICAgICBpZiAoVU5MSUtFTFkoaW5pdGlhbExlbmd0aCA+IE1BWF9TVE9SQUdFX1ZF
Q1RPUl9MRU5HVEgpKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKICAgICB1bnNpZ25lZCBvdXRPZkxpbmVTdG9yYWdlID0gc3RydWN0dXJlLT5vdXRPZkxpbmVD
YXBhY2l0eSgpOwogICAgIEJ1dHRlcmZseSogYnV0dGVyZmx5OwpAQCAtNzgsNiArNzgsOSBAQCBK
U0FycmF5KiBKU0FycmF5Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkCiAgICAgICAgICAgICAgICAg
YnV0dGVyZmx5LT5jb250aWd1b3VzKCkuYXRVbnNhZmUoaSkuY2xlYXIoKTsKICAgICAgICAgfQog
ICAgIH0gZWxzZSB7CisgICAgICAgIEFTU0VSVCgKKyAgICAgICAgICAgIGluZGV4aW5nVHlwZSA9
PSBBcnJheVdpdGhTbG93UHV0QXJyYXlTdG9yYWdlCisgICAgICAgICAgICB8fCBpbmRleGluZ1R5
cGUgPT0gQXJyYXlXaXRoQXJyYXlTdG9yYWdlKTsKICAgICAgICAgc3RhdGljIGNvbnN0IHVuc2ln
bmVkIGluZGV4QmlhcyA9IDA7CiAgICAgICAgIHVuc2lnbmVkIHZlY3Rvckxlbmd0aCA9IEFycmF5
U3RvcmFnZTo6b3B0aW1hbFZlY3Rvckxlbmd0aChpbmRleEJpYXMsIHN0cnVjdHVyZSwgaW5pdGlh
bExlbmd0aCk7CiAgICAgICAgIHZvaWQqIHRlbXAgPSB2bS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlh
cnlTcGFjZS5hbGxvY2F0ZU5vblZpcnR1YWwoCkBAIC0xMDMsNiArMTA2LDM0IEBAIEpTQXJyYXkq
IEpTQXJyYXk6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQKICAgICByZXR1cm4gcmVzdWx0OwogfQog
Cit2b2lkIEpTQXJyYXk6OmVhZ2VybHlJbml0aWFsaXplQnV0dGVyZmx5KE9iamVjdEluaXRpYWxp
emF0aW9uU2NvcGUmIHNjb3BlLCBKU0FycmF5KiBhcnJheSwgdW5zaWduZWQgaW5pdGlhbExlbmd0
aCkKK3sKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGFycmF5LT5zdHJ1Y3R1cmUoc2NvcGUu
dm0oKSk7CisgICAgSW5kZXhpbmdUeXBlIGluZGV4aW5nVHlwZSA9IHN0cnVjdHVyZS0+aW5kZXhp
bmdUeXBlKCk7CisgICAgQnV0dGVyZmx5KiBidXR0ZXJmbHkgPSBhcnJheS0+YnV0dGVyZmx5KCk7
CisKKyAgICAvLyBUaGlzIGZ1bmN0aW9uIG9ubHkgc2VydmVzIGFzIGEgY29tcGFuaW9uIHRvIHRy
eUNyZWF0ZVVuaW5pdGlhbGl6ZWRSZXN0cmljdGVkKCkKKyAgICAvLyBpbiB0aGUgZXZlbnQgdGhh
dCB3ZSByZWFsbHkgY2FuJ3QgZGVmZXIgaW5pdGlhbGl6YXRpb24gb2YgdGhlIGJ1dHRlcmZseSBh
ZnRlciBhbGwuCisgICAgLy8gdHJ5Q3JlYXRlVW5pbml0aWFsaXplZFJlc3RyaWN0ZWQoKSBhbHJl
YWR5IGluaXRpYWxpemVkIHRoZSBlbGVtZW50cyBiZXR3ZWVuCisgICAgLy8gaW5pdGlhbExlbmd0
aCBhbmQgdmVjdG9yIGxlbmd0aC4gV2UganVzdCBuZWVkIHRvIGRvIDAgLSBpbml0aWFsTGVuZ3Ro
LgorICAgIC8vIE9iamVjdEluaXRpYWxpemF0aW9uU2NvcGU6Om5vdGlmeUluaXRpYWxpemVkKCkg
d2lsbCB2ZXJpZnkgdGhhdCBhbGwgZWxlbWVudHMgYXJlCisgICAgLy8gaW5pdGlhbGl6ZWQuCisg
ICAgaWYgKExJS0VMWSghaGFzQW55QXJyYXlTdG9yYWdlKGluZGV4aW5nVHlwZSkpKSB7CisgICAg
ICAgIGlmIChoYXNEb3VibGUoaW5kZXhpbmdUeXBlKSkgeworICAgICAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IGluaXRpYWxMZW5ndGg7ICsraSkKKyAgICAgICAgICAgICAgICBidXR0
ZXJmbHktPmNvbnRpZ3VvdXNEb3VibGUoKS5hdFVuc2FmZShpKSA9IFBOYU47CisgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgaW5pdGlhbExlbmd0
aDsgKytpKQorICAgICAgICAgICAgICAgIGJ1dHRlcmZseS0+Y29udGlndW91cygpLmF0VW5zYWZl
KGkpLmNsZWFyKCk7CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBBcnJheVN0b3Jh
Z2UqIHN0b3JhZ2UgPSBidXR0ZXJmbHktPmFycmF5U3RvcmFnZSgpOworICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgaW5pdGlhbExlbmd0aDsgKytpKQorICAgICAgICAgICAgc3RvcmFn
ZS0+bV92ZWN0b3JbaV0uY2xlYXIoKTsKKyAgICB9CisgICAgc2NvcGUubm90aWZ5SW5pdGlhbGl6
ZWQoYXJyYXkpOworfQorCiB2b2lkIEpTQXJyYXk6OnNldExlbmd0aFdyaXRhYmxlKEV4ZWNTdGF0
ZSogZXhlYywgYm9vbCB3cml0YWJsZSkKIHsKICAgICBBU1NFUlQoaXNMZW5ndGhXcml0YWJsZSgp
IHx8ICF3cml0YWJsZSk7CkBAIC0xMzQwLDI4ICsxMzcxLDIwIEBAIGJvb2wgSlNBcnJheTo6aXNJ
dGVyYXRvclByb3RvY29sRmFzdEFuZE4KIAogaW5saW5lIEpTQXJyYXkqIGNvbnN0cnVjdEFycmF5
KE9iamVjdEluaXRpYWxpemF0aW9uU2NvcGUmIHNjb3BlLCBTdHJ1Y3R1cmUqIGFycmF5U3RydWN0
dXJlLCB1bnNpZ25lZCBsZW5ndGgpCiB7Ci0gICAgLy8gRklYTUU6IFdlIG9ubHkgbmVlZCB0aGlz
IGZvciBzdWJjbGFzc2VzIG9mIEFycmF5IGJlY2F1c2Ugd2UgbWlnaHQgbmVlZCB0byBhbGxvY2F0
ZSBhIG5ldyBzdHJ1Y3R1cmUgdG8gY2hhbmdlCi0gICAgLy8gaW5kZXhpbmcgdHlwZXMgd2hpbGUg
aW5pdGlhbGl6aW5nLiBJZiB0aGlzIHRyaWdnZXJlZCBhIEdDIHRoZW4gd2UgbWlnaHQgc2NhbiBv
dXIgY3VycmVudGx5IHVuaW5pdGlhbGl6ZWQKLSAgICAvLyBhcnJheSBhbmQgY3Jhc2guIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODY4MTEKLSAgICBKU0FycmF5KiBh
cnJheTsKLSAgICBpZiAoYXJyYXlTdHJ1Y3R1cmUtPmdsb2JhbE9iamVjdCgpLT5pc09yaWdpbmFs
QXJyYXlTdHJ1Y3R1cmUoYXJyYXlTdHJ1Y3R1cmUpKQotICAgICAgICBhcnJheSA9IEpTQXJyYXk6
OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWRSZXN0cmljdGVkKHNjb3BlLCBhcnJheVN0cnVjdHVyZSwg
bGVuZ3RoKTsKLSAgICBlbHNlIHsKLSAgICAgICAgYXJyYXkgPSBKU0FycmF5OjpjcmVhdGUoc2Nv
cGUudm0oKSwgYXJyYXlTdHJ1Y3R1cmUsIGxlbmd0aCk7Ci0KLSAgICAgICAgLy8gT3VyIGNsaWVu
dCB3aWxsIGluaXRpYWxpemUgdGhlIHN0b3JhZ2UgdXNpbmcgaW5pdGlhbGl6ZUluZGV4KCkgdXAg
dG8KLSAgICAgICAgLy8gbGVuZ3RoIHZhbHVlcywgYW5kIGV4cGVjdHMgdGhhdCB3ZSd2ZSBhbHJl
YWR5IHNldCBtX251bVZhbHVlc0luVmVjdG9yCi0gICAgICAgIC8vIHRvIGxlbmd0aC4gVGhpcyBt
YXRjaGVzIHRoZSBiZWhhdmlvciBvZiB0cnlDcmVhdGVVbmluaXRpYWxpemVkUmVzdHJpY3RlZCgp
LgotICAgICAgICBJbmRleGluZ1R5cGUgaW5kZXhpbmdUeXBlID0gYXJyYXlTdHJ1Y3R1cmUtPmlu
ZGV4aW5nVHlwZSgpOwotICAgICAgICBpZiAoVU5MSUtFTFkoaGFzQW55QXJyYXlTdG9yYWdlKGlu
ZGV4aW5nVHlwZSkpKQotICAgICAgICAgICAgYXJyYXktPmJ1dHRlcmZseSgpLT5hcnJheVN0b3Jh
Z2UoKS0+bV9udW1WYWx1ZXNJblZlY3RvciA9IGxlbmd0aDsKLSAgICB9CisgICAgSlNBcnJheSog
YXJyYXkgPSBKU0FycmF5Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkUmVzdHJpY3RlZChzY29wZSwg
YXJyYXlTdHJ1Y3R1cmUsIGxlbmd0aCk7CiAKICAgICAvLyBGSVhNRTogd2Ugc2hvdWxkIHByb2Jh
Ymx5IHRocm93IGFuIG91dCBvZiBtZW1vcnkgZXJyb3IgaGVyZSwgYnV0CiAgICAgLy8gd2hlbiBt
YWtpbmcgdGhpcyBjaGFuZ2Ugd2Ugc2hvdWxkIGNoZWNrIHRoYXQgYWxsIGNsaWVudHMgb2YgdGhp
cwogICAgIC8vIGZ1bmN0aW9uIHdpbGwgY29ycmVjdGx5IGhhbmRsZSBhbiBleGNlcHRpb24gYmVp
bmcgdGhyb3duIGZyb20gaGVyZS4KICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTY5Nzg2CiAgICAgUkVMRUFTRV9BU1NFUlQoYXJyYXkpOworCisgICAgLy8g
RklYTUU6IFdlIG9ubHkgbmVlZCB0aGlzIGZvciBzdWJjbGFzc2VzIG9mIEFycmF5IGJlY2F1c2Ug
d2UgbWlnaHQgbmVlZCB0byBhbGxvY2F0ZSBhIG5ldyBzdHJ1Y3R1cmUgdG8gY2hhbmdlCisgICAg
Ly8gaW5kZXhpbmcgdHlwZXMgd2hpbGUgaW5pdGlhbGl6aW5nLiBJZiB0aGlzIHRyaWdnZXJlZCBh
IEdDIHRoZW4gd2UgbWlnaHQgc2NhbiBvdXIgY3VycmVudGx5IHVuaW5pdGlhbGl6ZWQKKyAgICAv
LyBhcnJheSBhbmQgY3Jhc2guIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xODY4MTEKKyAgICBpZiAoIWFycmF5U3RydWN0dXJlLT5nbG9iYWxPYmplY3QoKS0+aXNPcmln
aW5hbEFycmF5U3RydWN0dXJlKGFycmF5U3RydWN0dXJlKSkKKyAgICAgICAgSlNBcnJheTo6ZWFn
ZXJseUluaXRpYWxpemVCdXR0ZXJmbHkoc2NvcGUsIGFycmF5LCBsZW5ndGgpOworCiAgICAgcmV0
dXJuIGFycmF5OwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Fy
cmF5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJh
eS5oCShyZXZpc2lvbiAyMzM2NTcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0FycmF5LmgJKHdvcmtpbmcgY29weSkKQEAgLTgwLDYgKzgwLDggQEAgcHVibGljOgogICAgICAg
ICByZXR1cm4gdHJ5Q3JlYXRlVW5pbml0aWFsaXplZFJlc3RyaWN0ZWQoc2NvcGUsIG51bGxwdHIs
IHN0cnVjdHVyZSwgaW5pdGlhbExlbmd0aCk7CiAgICAgfQogCisgICAgc3RhdGljIHZvaWQgZWFn
ZXJseUluaXRpYWxpemVCdXR0ZXJmbHkoT2JqZWN0SW5pdGlhbGl6YXRpb25TY29wZSYsIEpTQXJy
YXkqLCB1bnNpZ25lZCBpbml0aWFsTGVuZ3RoKTsKKwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0
YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVy
dHlOYW1lLCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHRocm93RXhjZXB0aW9uKTsK
IAogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChK
U09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RJbml0aWFsaXphdGlvblNjb3Bl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RJ
bml0aWFsaXphdGlvblNjb3BlLmNwcAkocmV2aXNpb24gMjMzNjU3KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0SW5pdGlhbGl6YXRpb25TY29wZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNy0yMDE4IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtNTcsNiArNTcsMTYgQEAgdm9pZCBPYmplY3RJbml0aWFsaXphdGlvblNjb3BlOjpub3Rp
ZnlBbAogICAgICAgICB2ZXJpZnlQcm9wZXJ0aWVzQXJlSW5pdGlhbGl6ZWQob2JqZWN0KTsKIH0K
IAordm9pZCBPYmplY3RJbml0aWFsaXphdGlvblNjb3BlOjpub3RpZnlJbml0aWFsaXplZChKU09i
amVjdCogb2JqZWN0KQoreworICAgIGlmIChtX29iamVjdCkgeworICAgICAgICBtX2Rpc2FsbG93
R0MuZGlzYWJsZSgpOworICAgICAgICBtX2Rpc2FsbG93Vk1SZWVudHJ5LmRpc2FibGUoKTsKKyAg
ICAgICAgbV9vYmplY3QgPSBudWxscHRyOworICAgIH0KKyAgICB2ZXJpZnlQcm9wZXJ0aWVzQXJl
SW5pdGlhbGl6ZWQob2JqZWN0KTsKK30KKwogdm9pZCBPYmplY3RJbml0aWFsaXphdGlvblNjb3Bl
Ojp2ZXJpZnlQcm9wZXJ0aWVzQXJlSW5pdGlhbGl6ZWQoSlNPYmplY3QqIG9iamVjdCkKIHsKICAg
ICBCdXR0ZXJmbHkqIGJ1dHRlcmZseSA9IG9iamVjdC0+YnV0dGVyZmx5KCk7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RJbml0aWFsaXphdGlvblNjb3BlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0SW5pdGlhbGl6
YXRpb25TY29wZS5oCShyZXZpc2lvbiAyMzM2NTcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9PYmplY3RJbml0aWFsaXphdGlvblNjb3BlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNy0yMDE4IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDMsNiAr
NDMsNyBAQCBwdWJsaWM6CiAKICAgICBBTFdBWVNfSU5MSU5FIFZNJiB2bSgpIGNvbnN0IHsgcmV0
dXJuIG1fdm07IH0KICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgbm90aWZ5QWxsb2NhdGVkKEpTT2Jq
ZWN0KiwgYm9vbCkgeyB9CisgICAgQUxXQVlTX0lOTElORSB2b2lkIG5vdGlmeUluaXRpYWxpemVk
KEpTT2JqZWN0KikgeyB9CiAKIHByaXZhdGU6CiAgICAgVk0mIG1fdm07CkBAIC01Nyw2ICs1OCw3
IEBAIHB1YmxpYzoKIAogICAgIFZNJiB2bSgpIGNvbnN0IHsgcmV0dXJuIG1fdm07IH0KICAgICB2
b2lkIG5vdGlmeUFsbG9jYXRlZChKU09iamVjdCosIGJvb2wgd2FzQ3JlYXRlZFVuaW5pdGlhbGl6
ZWQpOworICAgIHZvaWQgbm90aWZ5SW5pdGlhbGl6ZWQoSlNPYmplY3QqKTsKIAogcHJpdmF0ZToK
ICAgICB2b2lkIHZlcmlmeVByb3BlcnRpZXNBcmVJbml0aWFsaXplZChKU09iamVjdCopOwo=
</data>
<flag name="review"
          id="362768"
          type_id="1"
          status="+"
          setter="saam"
    />
          </attachment>
      

    </bug>

</bugzilla>