<?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>90338</bug_id>
          
          <creation_ts>2012-06-30 09:37:47 -0700</creation_ts>
          <short_desc>[V8Binding] Merging v8NumberArray() and v8NumberArrayToVector() to v8Array() and toNativeArray() respectively.</short_desc>
          <delta_ts>2012-07-02 01:42:50 -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>New Bugs</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="Vineet Chaudhary (vineetc)">code.vineet</reporter>
          <assigned_to name="Vineet Chaudhary (vineetc)">code.vineet</assigned_to>
          <cc>abarth</cc>
    
    <cc>haraken</cc>
    
    <cc>japhet</cc>
    
    <cc>jochen</cc>
    
    <cc>scottmg</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>661049</commentid>
    <comment_count>0</comment_count>
    <who name="Vineet Chaudhary (vineetc)">code.vineet</who>
    <bug_when>2012-06-30 09:37:47 -0700</bug_when>
    <thetext>We can remove v8NumberArray() and v8NumberArrayToVector() implementaion
merging them to current v8Array() and toNativeArray() traits.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>661050</commentid>
    <comment_count>1</comment_count>
      <attachid>150321</attachid>
    <who name="Vineet Chaudhary (vineetc)">code.vineet</who>
    <bug_when>2012-06-30 09:41:27 -0700</bug_when>
    <thetext>Created attachment 150321
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>661053</commentid>
    <comment_count>2</comment_count>
      <attachid>150321</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-06-30 09:57:03 -0700</bug_when>
    <thetext>Comment on attachment 150321
patch

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

Looks like a good refactoring.

&gt; Source/WebCore/ChangeLog:3
&gt; +        [V8Binding] Merging v8NumberArray()/v8NumberArrayToVector() to v8Array()/toNativeArray() respectively.

Shall we split this into two patches? This patch is doing two orthogonal non-trivial changes.

&gt; Source/WebCore/bindings/v8/V8Binding.h:341
&gt; -    struct Traits {
&gt; +    struct V8Traits {

I am neutral to the rename (Is there any issue with the name &apos;Traits&apos;?). At least, if you want to rename it, you might also want to rename JSC&apos;s Traits to JSTraits, and rename V8&apos;s NativeTraits to V8NativeTraits.

&gt; Source/WebCore/bindings/v8/V8Binding.h:416
&gt; +            result.append(TraitsType::arrayNativeValue(array, i));

Where is arrayNativeValue() for float and double (which will return array-&gt;Get(v8Integer(i))-&gt;NumberValue()) defined?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>661055</commentid>
    <comment_count>3</comment_count>
      <attachid>150321</attachid>
    <who name="Vineet Chaudhary (vineetc)">code.vineet</who>
    <bug_when>2012-06-30 10:20:55 -0700</bug_when>
    <thetext>Comment on attachment 150321
patch

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

&gt;&gt; Source/WebCore/ChangeLog:3
&gt;&gt; +        [V8Binding] Merging v8NumberArray()/v8NumberArrayToVector() to v8Array()/toNativeArray() respectively.
&gt; 
&gt; Shall we split this into two patches? This patch is doing two orthogonal non-trivial changes.

Sorry I couldn&apos;t got why to slipt patch?
Both are related changes isn&apos;t it..? Or you mean JSC&apos;s changes in different patch.

&gt;&gt; Source/WebCore/bindings/v8/V8Binding.h:341
&gt;&gt; +    struct V8Traits {
&gt; 
&gt; I am neutral to the rename (Is there any issue with the name &apos;Traits&apos;?). At least, if you want to rename it, you might also want to rename JSC&apos;s Traits to JSTraits, and rename V8&apos;s NativeTraits to V8NativeTraits.

Actually same name &apos;Traits&apos; could not be used for both v8Array() and toNativeArray()
I will rename JSC&apos;s Traits to JSTraits too.

&gt;&gt; Source/WebCore/bindings/v8/V8Binding.h:416
&gt;&gt; +            result.append(TraitsType::arrayNativeValue(array, i));
&gt; 
&gt; Where is arrayNativeValue() for float and double (which will return array-&gt;Get(v8Integer(i))-&gt;NumberValue()) defined?

Ohh my apologies I missed that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>661121</commentid>
    <comment_count>4</comment_count>
      <attachid>150321</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-07-01 03:29:40 -0700</bug_when>
    <thetext>Comment on attachment 150321
patch

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

&gt;&gt;&gt; Source/WebCore/ChangeLog:3
&gt;&gt;&gt; +        [V8Binding] Merging v8NumberArray()/v8NumberArrayToVector() to v8Array()/toNativeArray() respectively.
&gt;&gt; 
&gt;&gt; Shall we split this into two patches? This patch is doing two orthogonal non-trivial changes.
&gt; 
&gt; Sorry I couldn&apos;t got why to slipt patch?
&gt; Both are related changes isn&apos;t it..? Or you mean JSC&apos;s changes in different patch.

I&apos;ve thought you can split the patch to a patch for v8NumberArray() and a patch for v8NumberArrayToVector() (I was a bit confused by V8Traits and the missing arrayNativeValue&lt;float&gt;().). But now it is clear to me what you are doing. Let&apos;s keep them in one patch.

&gt;&gt;&gt; Source/WebCore/bindings/v8/V8Binding.h:341
&gt;&gt;&gt; +    struct V8Traits {
&gt;&gt; 
&gt;&gt; I am neutral to the rename (Is there any issue with the name &apos;Traits&apos;?). At least, if you want to rename it, you might also want to rename JSC&apos;s Traits to JSTraits, and rename V8&apos;s NativeTraits to V8NativeTraits.
&gt; 
&gt; Actually same name &apos;Traits&apos; could not be used for both v8Array() and toNativeArray()
&gt; I will rename JSC&apos;s Traits to JSTraits too.

Ah I got it, V8Traits for xxxV8Value() and NativeTraits for xxxNativeValue(). Then, how about V8ValueTraits and NativeValueTraits, to make it clearer?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>661293</commentid>
    <comment_count>5</comment_count>
      <attachid>150367</attachid>
    <who name="Vineet Chaudhary (vineetc)">code.vineet</who>
    <bug_when>2012-07-02 00:09:05 -0700</bug_when>
    <thetext>Created attachment 150367
updatedPatch

Thanks haraken for clarifying.
Updated patch with traits name V8ValueTraits and NativeValueTraits.
For JSC side changes I think we have custom call jsUnsignedLongArrayToVector() for &quot;unsigned long&quot;,
I think we can merge this too, so I will rename JSC&apos;s traits in another patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>661295</commentid>
    <comment_count>6</comment_count>
      <attachid>150367</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-07-02 00:11:28 -0700</bug_when>
    <thetext>Comment on attachment 150367
updatedPatch

OK!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>661296</commentid>
    <comment_count>7</comment_count>
      <attachid>150367</attachid>
    <who name="Vineet Chaudhary (vineetc)">code.vineet</who>
    <bug_when>2012-07-02 00:16:16 -0700</bug_when>
    <thetext>Comment on attachment 150367
updatedPatch

Thank you!!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>661328</commentid>
    <comment_count>8</comment_count>
      <attachid>150367</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-02 01:42:46 -0700</bug_when>
    <thetext>Comment on attachment 150367
updatedPatch

Clearing flags on attachment: 150367

Committed r121663: &lt;http://trac.webkit.org/changeset/121663&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>661329</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-02 01:42:50 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>150321</attachid>
            <date>2012-06-30 09:41:27 -0700</date>
            <delta_ts>2012-07-02 00:09:05 -0700</delta_ts>
            <desc>patch</desc>
            <filename>traits_5.diff</filename>
            <type>text/plain</type>
            <size>10276</size>
            <attacher name="Vineet Chaudhary (vineetc)">code.vineet</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyMTYyOCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI5IEBACisyMDEyLTA2LTMwICBWaW5lZXQg
Q2hhdWRoYXJ5ICA8cmdmNzQ4QG1vdG9yb2xhLmNvbT4KKworICAgICAgICBbVjhCaW5kaW5nXSBN
ZXJnaW5nIHY4TnVtYmVyQXJyYXkoKS92OE51bWJlckFycmF5VG9WZWN0b3IoKSB0byB2OEFycmF5
KCkvdG9OYXRpdmVBcnJheSgpIHJlc3BlY3RpdmVseS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkwMzM4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgV2UgY2FuIHJlbW92ZSB2OE51bWJlckFycmF5KCkgYW5k
IHY4TnVtYmVyQXJyYXlUb1ZlY3RvcigpIGltcGxlbWVudGFpb24KKyAgICAgICAgbWVyZ2luZyB0
aGVtIHRvIGN1cnJlbnQgdjhBcnJheSgpIGFuZCB0b05hdGl2ZUFycmF5KCkgdHJhaXRzLgorCisg
ICAgICAgIFRlc3RzOiBUZXN0T2JqLmlkbAorCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9yVjgucG06IFJlbW92ZWQgZmxvYXRbXS9kb3VibGVbXSBzcGVjaWZpYyBiaW5k
aW5nIGNvZGUuCisgICAgICAgIChJc1JlZlB0clR5cGUpOgorICAgICAgICAoR2V0TmF0aXZlVHlw
ZSk6CisgICAgICAgIChKU1ZhbHVlVG9OYXRpdmUpOgorICAgICAgICAoTmF0aXZlVG9KU1ZhbHVl
KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmNwcDogUmVi
YXNlZCBiaW5kaW5nIHRlc3QuCisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6
ZmxvYXRBcnJheUF0dHJHZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJu
YWw6OmZsb2F0QXJyYXlBdHRyU2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOElu
dGVybmFsOjpkb3VibGVBcnJheUF0dHJHZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9i
alY4SW50ZXJuYWw6OmRvdWJsZUFycmF5QXR0clNldHRlcik6CisgICAgICAgICogYmluZGluZ3Mv
djgvVjhCaW5kaW5nLmg6IEFkZGVkIHRlbXBsYXRlcyBmb3IgZmxvYXQgYW5kIGRvdWJsZS4KKyAg
ICAgICAgKFdlYkNvcmU6OnY4QXJyYXkpOgorICAgICAgICAoV2ViQ29yZTo6dG9OYXRpdmVBcnJh
eSk6CisKIDIwMTItMDYtMzAgIElhbiBWb2xsaWNrICA8dm9sbGlja0BjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgW2Nocm9taXVtXSBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyIG5lZWRzIHRvIGNv
bnZlcnQgb3BhcXVlIHJlY3RzIGJhY2sgdG8gY29udGVudCBzcGFjZS4KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCShyZXZp
c2lvbiAxMjE2MjcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5l
cmF0b3JWOC5wbQkod29ya2luZyBjb3B5KQpAQCAtMzUxMSw4ICszNTExLDYgQEAgc3ViIElzUmVm
UHRyVHlwZQogICAgIHJldHVybiAwIGlmICR0eXBlIGVxICJ1bnNpZ25lZCI7CiAgICAgcmV0dXJu
IDAgaWYgJHR5cGUgZXEgInVuc2lnbmVkIGxvbmciOwogICAgIHJldHVybiAwIGlmICR0eXBlIGVx
ICJ1bnNpZ25lZCBzaG9ydCI7Ci0gICAgcmV0dXJuIDAgaWYgJHR5cGUgZXEgImZsb2F0W10iOwot
ICAgIHJldHVybiAwIGlmICR0eXBlIGVxICJkb3VibGVbXSI7CiAKICAgICByZXR1cm4gMTsKIH0K
QEAgLTM1NzMsOCArMzU3MSw2IEBAIHN1YiBHZXROYXRpdmVUeXBlCiAgICAgcmV0dXJuICJSZWZQ
dHI8TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcj4iIGlmICR0eXBlIGVxICJNZWRpYVF1ZXJ5TGlzdExp
c3RlbmVyIjsKIAogICAgICMgRklYTUU6IFN1cHBvcnQgVFtdLCBUW10/LCBzZXF1ZW5jZTxUPiBn
ZW5lcmljYWxseQotICAgIHJldHVybiAiVmVjdG9yPGZsb2F0PiIgaWYgJHR5cGUgZXEgImZsb2F0
W10iOwotICAgIHJldHVybiAiVmVjdG9yPGRvdWJsZT4iIGlmICR0eXBlIGVxICJkb3VibGVbXSI7
CiAgICAgcmV0dXJuICJSZWZQdHI8RE9NU3RyaW5nTGlzdD4iIGlmICR0eXBlIGVxICJET01TdHJp
bmdMaXN0IjsKIAogICAgICMgRGVmYXVsdCwgYXNzdW1lIG5hdGl2ZSB0eXBlIGlzIGEgcG9pbnRl
ciB3aXRoIHNhbWUgdHlwZSBuYW1lIGFzIGlkbCB0eXBlCkBAIC0zNjMzLDE0ICszNjI5LDYgQEAg
c3ViIEpTVmFsdWVUb05hdGl2ZQogICAgIHJldHVybiAidjhWYWx1ZVRvV2ViQ29yZURPTVN0cmlu
Z0xpc3QoJHZhbHVlKSIgaWYgJHR5cGUgZXEgIkRPTVN0cmluZ0xpc3QiOwogICAgICMgRklYTUU6
IEFkZCBwcm9wZXIgc3VwcG9ydCBmb3IgVFtdLCBUW10/IGFuZCBzZXF1ZW5jZTxUPi4KICAgICBy
ZXR1cm4gInY4VmFsdWVUb1dlYkNvcmVET01TdHJpbmdMaXN0KCR2YWx1ZSkiIGlmICR0eXBlIGVx
ICJET01TdHJpbmdbXSI7Ci0gICAgaWYgKCR0eXBlIGVxICJmbG9hdFtdIikgewotICAgICAgICBB
ZGRUb0ltcGxJbmNsdWRlcygid3RmL1ZlY3Rvci5oIik7Ci0gICAgICAgIHJldHVybiAidjhOdW1i
ZXJBcnJheVRvVmVjdG9yPGZsb2F0PigkdmFsdWUpIjsKLSAgICB9Ci0gICAgaWYgKCR0eXBlIGVx
ICJkb3VibGVbXSIpIHsKLSAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoInd0Zi9WZWN0b3IuaCIp
OwotICAgICAgICByZXR1cm4gInY4TnVtYmVyQXJyYXlUb1ZlY3Rvcjxkb3VibGU+KCR2YWx1ZSki
OwotICAgIH0KIAogICAgIGlmICgkdHlwZSBlcSAiRE9NU3RyaW5nIiBvciAkdHlwZSBlcSAiRE9N
VXNlckRhdGEiKSB7CiAgICAgICAgIHJldHVybiAkdmFsdWU7CkBAIC0zODIwLDkgKzM4MDgsNyBA
QCBteSAlbm9uX3dyYXBwZXJfdHlwZXMgPSAoCiAgICAgJ1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZScg
PT4gMSwKICAgICAnYm9vbGVhbicgPT4gMSwKICAgICAnZG91YmxlJyA9PiAxLAotICAgICdkb3Vi
bGVbXScgPT4gMSwKICAgICAnZmxvYXQnID0+IDEsCi0gICAgJ2Zsb2F0W10nID0+IDEsCiAgICAg
J2ludCcgPT4gMSwKICAgICAnbG9uZyBsb25nJyA9PiAxLAogICAgICdsb25nJyA9PiAxLApAQCAt
MzkwOSw5ICszODk1LDYgQEAgc3ViIE5hdGl2ZVRvSlNWYWx1ZQogICAgIHJldHVybiAidjg6Ok51
bWJlcjo6TmV3KCR2YWx1ZSkiIGlmICRjb2RlR2VuZXJhdG9yLT5Jc1ByaW1pdGl2ZVR5cGUoJHR5
cGUpOwogICAgIHJldHVybiAiJHZhbHVlLnY4VmFsdWUoKSIgaWYgJG5hdGl2ZVR5cGUgZXEgIlNj
cmlwdFZhbHVlIjsKIAotICAgIHJldHVybiAidjhOdW1iZXJBcnJheSgkdmFsdWUpIiBpZiAkdHlw
ZSBlcSAiZmxvYXRbXSI7Ci0gICAgcmV0dXJuICJ2OE51bWJlckFycmF5KCR2YWx1ZSkiIGlmICR0
eXBlIGVxICJkb3VibGVbXSI7Ci0KICAgICBpZiAoJGNvZGVHZW5lcmF0b3ItPklzU3RyaW5nVHlw
ZSgkdHlwZSkpIHsKICAgICAgICAgbXkgJGNvbnYgPSAkc2lnbmF0dXJlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPnsiVHJlYXRSZXR1cm5lZE51bGxTdHJpbmdBcyJ9OwogICAgICAgICBpZiAoZGVmaW5l
ZCAkY29udikgewpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4
L1Y4VGVzdE9iai5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5jcHAJKHJldmlzaW9uIDEyMTYyNykKKysrIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPYmouY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC02MCw3ICs2MCw2IEBACiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNs
dWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1VudXNlZFBhcmFtLmg+Ci0jaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgogCiAjaWYgRU5BQkxFKENvbmRpdGlvbjEpCiAjaW5jbHVkZSAiVjhU
ZXN0T2JqZWN0QS5oIgpAQCAtODc5LDE0ICs4NzgsMTQgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiBmbG9hdEFycmF5QQogewogICAgIElOQ19TVEFUUygiRE9NLlRlc3RPYmouZmxvYXRB
cnJheS5fZ2V0Iik7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZv
LkhvbGRlcigpKTsKLSAgICByZXR1cm4gdjhOdW1iZXJBcnJheShpbXAtPmZsb2F0QXJyYXkoKSk7
CisgICAgcmV0dXJuIHY4QXJyYXkoaW1wLT5mbG9hdEFycmF5KCksIGluZm8uR2V0SXNvbGF0ZSgp
KTsKIH0KIAogc3RhdGljIHZvaWQgZmxvYXRBcnJheUF0dHJTZXR0ZXIodjg6OkxvY2FsPHY4OjpT
dHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNz
b3JJbmZvJiBpbmZvKQogewogICAgIElOQ19TVEFUUygiRE9NLlRlc3RPYmouZmxvYXRBcnJheS5f
c2V0Iik7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRl
cigpKTsKLSAgICBWZWN0b3I8ZmxvYXQ+IHYgPSB2OE51bWJlckFycmF5VG9WZWN0b3I8ZmxvYXQ+
KHZhbHVlKTsKKyAgICBWZWN0b3I8ZmxvYXQ+IHYgPSB0b05hdGl2ZUFycmF5PGZsb2F0Pih2YWx1
ZSk7CiAgICAgaW1wLT5zZXRGbG9hdEFycmF5KHYpOwogICAgIHJldHVybjsKIH0KQEAgLTg5NSwx
NCArODk0LDE0IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZG91YmxlQXJyYXkKIHsK
ICAgICBJTkNfU1RBVFMoIkRPTS5UZXN0T2JqLmRvdWJsZUFycmF5Ll9nZXQiKTsKICAgICBUZXN0
T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwotICAgIHJldHVy
biB2OE51bWJlckFycmF5KGltcC0+ZG91YmxlQXJyYXkoKSk7CisgICAgcmV0dXJuIHY4QXJyYXko
aW1wLT5kb3VibGVBcnJheSgpLCBpbmZvLkdldElzb2xhdGUoKSk7CiB9CiAKIHN0YXRpYyB2b2lk
IGRvdWJsZUFycmF5QXR0clNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6Okxv
Y2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAg
ICAgSU5DX1NUQVRTKCJET00uVGVzdE9iai5kb3VibGVBcnJheS5fc2V0Iik7CiAgICAgVGVzdE9i
aiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKLSAgICBWZWN0b3I8
ZG91YmxlPiB2ID0gdjhOdW1iZXJBcnJheVRvVmVjdG9yPGRvdWJsZT4odmFsdWUpOworICAgIFZl
Y3Rvcjxkb3VibGU+IHYgPSB0b05hdGl2ZUFycmF5PGRvdWJsZT4odmFsdWUpOwogICAgIGltcC0+
c2V0RG91YmxlQXJyYXkodik7CiAgICAgcmV0dXJuOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvVjhCaW5kaW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvVjhCaW5kaW5nLmgJKHJldmlzaW9uIDEyMTYyNykKKysrIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMzgsNyArMzM4LDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIH0KIAogICAgIHRlbXBsYXRlIDxjbGFzcyBUPgot
ICAgIHN0cnVjdCBUcmFpdHMgeworICAgIHN0cnVjdCBWOFRyYWl0cyB7CiAgICAgICAgIHN0YXRp
YyBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGFycmF5VjhWYWx1ZShjb25zdCBUJiB2YWx1
ZSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiB0
b1Y4KFdURjo6Z2V0UHRyKHZhbHVlKSwgaXNvbGF0ZSk7CkBAIC0zNDYsNyArMzQ2LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgIH07CiAKICAgICB0ZW1wbGF0ZTw+Ci0gICAgc3RydWN0IFRy
YWl0czxTdHJpbmc+IHsKKyAgICBzdHJ1Y3QgVjhUcmFpdHM8U3RyaW5nPiB7CiAgICAgICAgIHN0
YXRpYyBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGFycmF5VjhWYWx1ZShjb25zdCBTdHJp
bmcmIHZhbHVlLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKICAgICAgICAgewogICAgICAgICAgICAg
cmV0dXJuIHY4U3RyaW5nKHZhbHVlLCBpc29sYXRlKTsKQEAgLTM1NCwyMCArMzU0LDM2IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICB9OwogCiAgICAgdGVtcGxhdGU8PgotICAgIHN0cnVjdCBU
cmFpdHM8dW5zaWduZWQgbG9uZz4geworICAgIHN0cnVjdCBWOFRyYWl0czx1bnNpZ25lZCBsb25n
PiB7CiAgICAgICAgIHN0YXRpYyBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGFycmF5VjhW
YWx1ZShjb25zdCB1bnNpZ25lZCBsb25nJiB2YWx1ZSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCiAg
ICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiB2OFVuc2lnbmVkSW50ZWdlcih2YWx1ZSwgaXNv
bGF0ZSk7CiAgICAgICAgIH0KICAgICB9OwogCisgICAgdGVtcGxhdGU8PgorICAgIHN0cnVjdCBW
OFRyYWl0czxmbG9hdD4geworICAgICAgICBzdGF0aWMgaW5saW5lIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiBhcnJheVY4VmFsdWUoY29uc3QgZmxvYXQmIHZhbHVlLCB2ODo6SXNvbGF0ZSopCisgICAg
ICAgIHsKKyAgICAgICAgICAgIHJldHVybiB2ODo6TnVtYmVyOjpOZXcodmFsdWUpOworICAgICAg
ICB9CisgICAgfTsKKworICAgIHRlbXBsYXRlPD4KKyAgICBzdHJ1Y3QgVjhUcmFpdHM8ZG91Ymxl
PiB7CisgICAgICAgIHN0YXRpYyBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGFycmF5VjhW
YWx1ZShjb25zdCBkb3VibGUmIHZhbHVlLCB2ODo6SXNvbGF0ZSopCisgICAgICAgIHsKKyAgICAg
ICAgICAgIHJldHVybiB2ODo6TnVtYmVyOjpOZXcodmFsdWUpOworICAgICAgICB9CisgICAgfTsK
KwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiAgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHY4
QXJyYXkoY29uc3QgVmVjdG9yPFQ+JiBpdGVyYXRvciwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCiAg
ICAgewogICAgICAgICB2ODo6TG9jYWw8djg6OkFycmF5PiByZXN1bHQgPSB2ODo6QXJyYXk6Ok5l
dyhpdGVyYXRvci5zaXplKCkpOwogICAgICAgICBpbnQgaW5kZXggPSAwOwogICAgICAgICB0eXBl
bmFtZSBWZWN0b3I8VD46OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGl0ZXJhdG9yLmVuZCgpOwotICAg
ICAgICB0eXBlZGVmIFRyYWl0czxUPiBUcmFpdHNUeXBlOworICAgICAgICB0eXBlZGVmIFY4VHJh
aXRzPFQ+IFRyYWl0c1R5cGU7CiAgICAgICAgIGZvciAodHlwZW5hbWUgVmVjdG9yPFQ+Ojpjb25z
dF9pdGVyYXRvciBpdGVyID0gaXRlcmF0b3IuYmVnaW4oKTsgaXRlciAhPSBlbmQ7ICsraXRlcikK
ICAgICAgICAgICAgIHJlc3VsdC0+U2V0KHY4SW50ZWdlcihpbmRleCsrLCBpc29sYXRlKSwgVHJh
aXRzVHlwZTo6YXJyYXlWOFZhbHVlKCppdGVyLCBpc29sYXRlKSk7CiAgICAgICAgIHJldHVybiBy
ZXN1bHQ7CkBAIC0zNzUsNiArMzkxLDE2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiB2OEFycmF5KFBhc3NSZWZQdHI8RE9NU3RyaW5nTGlzdD4sIHY4
OjpJc29sYXRlKik7CiAKKyAgICB0ZW1wbGF0ZTxjbGFzcyBUPiBzdHJ1Y3QgTmF0aXZlVHJhaXRz
OworCisgICAgdGVtcGxhdGU8PgorICAgIHN0cnVjdCBOYXRpdmVUcmFpdHM8U3RyaW5nPiB7Cisg
ICAgICAgIHN0YXRpYyBpbmxpbmUgU3RyaW5nIGFycmF5TmF0aXZlVmFsdWUoY29uc3Qgdjg6Okxv
Y2FsPHY4OjpBcnJheT4mIGFycmF5LCBzaXplX3QgaSkKKyAgICAgICAgeworICAgICAgICAgICAg
cmV0dXJuIHY4VmFsdWVUb1dlYkNvcmVTdHJpbmcoYXJyYXktPkdldChpKSk7CisgICAgICAgIH0K
KyAgICB9OworCiAgICAgdGVtcGxhdGUgPGNsYXNzIFQ+CiAgICAgVmVjdG9yPFQ+IHRvTmF0aXZl
QXJyYXkodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlKQogICAgIHsKQEAgLTM4MiwxMiArNDA4
LDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIHJldHVybiBWZWN0b3I8VD4o
KTsKIAogICAgICAgICBWZWN0b3I8VD4gcmVzdWx0OworICAgICAgICB0eXBlZGVmIE5hdGl2ZVRy
YWl0czxUPiBUcmFpdHNUeXBlOwogICAgICAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiB2OFZhbHVl
KHY4OjpMb2NhbDx2ODo6VmFsdWU+OjpOZXcodmFsdWUpKTsKICAgICAgICAgdjg6OkxvY2FsPHY4
OjpBcnJheT4gYXJyYXkgPSB2ODo6TG9jYWw8djg6OkFycmF5Pjo6Q2FzdCh2OFZhbHVlKTsKICAg
ICAgICAgc2l6ZV90IGxlbmd0aCA9IGFycmF5LT5MZW5ndGgoKTsKLQogICAgICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICByZXN1bHQuYXBwZW5k
KHY4VmFsdWVUb1dlYkNvcmVTdHJpbmcoYXJyYXktPkdldChpKSkpOworICAgICAgICAgICAgcmVz
dWx0LmFwcGVuZChUcmFpdHNUeXBlOjphcnJheU5hdGl2ZVZhbHVlKGFycmF5LCBpKSk7CiAgICAg
ICAgIH0KICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CkBAIC01MTcsMTUgKzU0Myw2IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgcmV0dXJuIHN0ci5pc051bGwoKSA/IHY4OjpI
YW5kbGU8djg6OlZhbHVlPih2OEJvb2xlYW4oZmFsc2UpKSA6IHY4OjpIYW5kbGU8djg6OlZhbHVl
Pih2OFN0cmluZyhzdHIsIGlzb2xhdGUpKTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZSA8Y2xhc3Mg
VD4gdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHY4TnVtYmVyQXJyYXkoY29uc3QgVmVjdG9yPFQ+JiB2
YWx1ZXMpCi0gICAgewotICAgICAgICBzaXplX3Qgc2l6ZSA9IHZhbHVlcy5zaXplKCk7Ci0gICAg
ICAgIHY4OjpMb2NhbDx2ODo6QXJyYXk+IHJlc3VsdCA9IHY4OjpBcnJheTo6TmV3KHNpemUpOwot
ICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkKLSAgICAgICAgICAgIHJl
c3VsdC0+U2V0KGksIHY4OjpOdW1iZXI6Ok5ldyh2YWx1ZXNbaV0pKTsKLSAgICAgICAgcmV0dXJu
IHJlc3VsdDsKLSAgICB9Ci0KICAgICBpbmxpbmUgZG91YmxlIHRvV2ViQ29yZURhdGUodjg6Okhh
bmRsZTx2ODo6VmFsdWU+IG9iamVjdCkKICAgICB7CiAgICAgICAgIHJldHVybiAob2JqZWN0LT5J
c0RhdGUoKSB8fCBvYmplY3QtPklzTnVtYmVyKCkpID8gb2JqZWN0LT5OdW1iZXJWYWx1ZSgpIDog
c3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjpxdWlldF9OYU4oKTsKQEAgLTU1NSwyMiArNTcy
LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgU3RyaW5nIGludDMyVG9XZWJDb3JlU3Ry
aW5nKGludCB2YWx1ZSk7CiAKLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4gVmVjdG9yPFQ+IHY4TnVt
YmVyQXJyYXlUb1ZlY3Rvcih2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUpCi0gICAgewotICAg
ICAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiB2OFZhbHVlKHY4OjpMb2NhbDx2ODo6VmFsdWU+OjpO
ZXcodmFsdWUpKTsKLSAgICAgICAgaWYgKCF2OFZhbHVlLT5Jc0FycmF5KCkpCi0gICAgICAgICAg
ICByZXR1cm4gVmVjdG9yPFQ+KCk7Ci0KLSAgICAgICAgVmVjdG9yPFQ+IHJlc3VsdDsKLSAgICAg
ICAgdjg6OkxvY2FsPHY4OjpBcnJheT4gdjhBcnJheSA9IHY4OjpMb2NhbDx2ODo6QXJyYXk+OjpD
YXN0KHY4VmFsdWUpOwotICAgICAgICBzaXplX3QgbGVuZ3RoID0gdjhBcnJheS0+TGVuZ3RoKCk7
Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKLSAgICAgICAg
ICAgIHY4OjpMb2NhbDx2ODo6VmFsdWU+IGluZGV4ZWRWYWx1ZSA9IHY4QXJyYXktPkdldCh2OElu
dGVnZXIoaSkpOwotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChzdGF0aWNfY2FzdDxUPihpbmRl
eGVkVmFsdWUtPk51bWJlclZhbHVlKCkpKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gcmVz
dWx0OwotICAgIH0KLQogICAgIFBhc3NSZWZQdHI8RE9NU3RyaW5nTGlzdD4gdjhWYWx1ZVRvV2Vi
Q29yZURPTVN0cmluZ0xpc3Qodjg6OkhhbmRsZTx2ODo6VmFsdWU+KTsKIAogICAgIGNsYXNzIFY4
UGFyYW1ldGVyQmFzZSB7Cg==
</data>
<flag name="review"
          id="158554"
          type_id="1"
          status="-"
          setter="haraken"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>150367</attachid>
            <date>2012-07-02 00:09:05 -0700</date>
            <delta_ts>2012-07-02 01:42:46 -0700</delta_ts>
            <desc>updatedPatch</desc>
            <filename>traitts_05.diff</filename>
            <type>text/plain</type>
            <size>10839</size>
            <attacher name="Vineet Chaudhary (vineetc)">code.vineet</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyMTY1NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMwIEBACisyMDEyLTA3LTAxICBWaW5lZXQg
Q2hhdWRoYXJ5ICA8cmdmNzQ4QG1vdG9yb2xhLmNvbT4KKworICAgICAgICBbVjhCaW5kaW5nXSBN
ZXJnaW5nIHY4TnVtYmVyQXJyYXkoKS92OE51bWJlckFycmF5VG9WZWN0b3IoKSB0byB2OEFycmF5
KCkvdG9OYXRpdmVBcnJheSgpIHJlc3BlY3RpdmVseS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkwMzM4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgV2UgY2FuIHJlbW92ZSB2OE51bWJlckFycmF5KCkgYW5k
IHY4TnVtYmVyQXJyYXlUb1ZlY3RvcigpIGltcGxlbWVudGFpb24KKyAgICAgICAgbWVyZ2luZyB0
aGVtIHRvIGN1cnJlbnQgdjhBcnJheSgpIGFuZCB0b05hdGl2ZUFycmF5KCkgdHJhaXRzLgorCisg
ICAgICAgIFRlc3RzOiBUZXN0T2JqLmlkbAorICAgICAgICBTaG91bGRuJ3QgY2F1c2UgYW55IGJl
aGF2aW91cmFsIGNoYW5nZXMuCisKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5l
cmF0b3JWOC5wbTogUmVtb3ZlZCBmbG9hdFtdL2RvdWJsZVtdIHNwZWNpZmljIGJpbmRpbmcgY29k
ZS4KKyAgICAgICAgKElzUmVmUHRyVHlwZSk6CisgICAgICAgIChHZXROYXRpdmVUeXBlKToKKyAg
ICAgICAgKEpTVmFsdWVUb05hdGl2ZSk6CisgICAgICAgIChOYXRpdmVUb0pTVmFsdWUpOgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPYmouY3BwOiBSZWJhc2VkIGJp
bmRpbmcgdGVzdC4KKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpmbG9hdEFy
cmF5QXR0ckdldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6Zmxv
YXRBcnJheUF0dHJTZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6
OmRvdWJsZUFycmF5QXR0ckdldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRl
cm5hbDo6ZG91YmxlQXJyYXlBdHRyU2V0dGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOEJp
bmRpbmcuaDogQWRkZWQgdGVtcGxhdGVzIGZvciBmbG9hdCBhbmQgZG91YmxlLgorICAgICAgICAo
V2ViQ29yZTo6djhBcnJheSk6CisgICAgICAgIChXZWJDb3JlOjp0b05hdGl2ZUFycmF5KToKKwog
MjAxMi0wNy0wMSAgQ2hyaXN0b3BoZSBEdW1leiAgPGNocmlzdG9waGUuZHVtZXpAaW50ZWwuY29t
PgogCiAgICAgICAgIFtFRkxdIEFkZCBHYW1lcGFkIHN1cHBvcnQKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCShyZXZpc2lv
biAxMjE2NTYpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JWOC5wbQkod29ya2luZyBjb3B5KQpAQCAtMzUxMSw4ICszNTExLDYgQEAgc3ViIElzUmVmUHRy
VHlwZQogICAgIHJldHVybiAwIGlmICR0eXBlIGVxICJ1bnNpZ25lZCI7CiAgICAgcmV0dXJuIDAg
aWYgJHR5cGUgZXEgInVuc2lnbmVkIGxvbmciOwogICAgIHJldHVybiAwIGlmICR0eXBlIGVxICJ1
bnNpZ25lZCBzaG9ydCI7Ci0gICAgcmV0dXJuIDAgaWYgJHR5cGUgZXEgImZsb2F0W10iOwotICAg
IHJldHVybiAwIGlmICR0eXBlIGVxICJkb3VibGVbXSI7CiAKICAgICByZXR1cm4gMTsKIH0KQEAg
LTM1NzMsOCArMzU3MSw2IEBAIHN1YiBHZXROYXRpdmVUeXBlCiAgICAgcmV0dXJuICJSZWZQdHI8
TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcj4iIGlmICR0eXBlIGVxICJNZWRpYVF1ZXJ5TGlzdExpc3Rl
bmVyIjsKIAogICAgICMgRklYTUU6IFN1cHBvcnQgVFtdLCBUW10/LCBzZXF1ZW5jZTxUPiBnZW5l
cmljYWxseQotICAgIHJldHVybiAiVmVjdG9yPGZsb2F0PiIgaWYgJHR5cGUgZXEgImZsb2F0W10i
OwotICAgIHJldHVybiAiVmVjdG9yPGRvdWJsZT4iIGlmICR0eXBlIGVxICJkb3VibGVbXSI7CiAg
ICAgcmV0dXJuICJSZWZQdHI8RE9NU3RyaW5nTGlzdD4iIGlmICR0eXBlIGVxICJET01TdHJpbmdM
aXN0IjsKIAogICAgICMgRGVmYXVsdCwgYXNzdW1lIG5hdGl2ZSB0eXBlIGlzIGEgcG9pbnRlciB3
aXRoIHNhbWUgdHlwZSBuYW1lIGFzIGlkbCB0eXBlCkBAIC0zNjMzLDE0ICszNjI5LDYgQEAgc3Vi
IEpTVmFsdWVUb05hdGl2ZQogICAgIHJldHVybiAidjhWYWx1ZVRvV2ViQ29yZURPTVN0cmluZ0xp
c3QoJHZhbHVlKSIgaWYgJHR5cGUgZXEgIkRPTVN0cmluZ0xpc3QiOwogICAgICMgRklYTUU6IEFk
ZCBwcm9wZXIgc3VwcG9ydCBmb3IgVFtdLCBUW10/IGFuZCBzZXF1ZW5jZTxUPi4KICAgICByZXR1
cm4gInY4VmFsdWVUb1dlYkNvcmVET01TdHJpbmdMaXN0KCR2YWx1ZSkiIGlmICR0eXBlIGVxICJE
T01TdHJpbmdbXSI7Ci0gICAgaWYgKCR0eXBlIGVxICJmbG9hdFtdIikgewotICAgICAgICBBZGRU
b0ltcGxJbmNsdWRlcygid3RmL1ZlY3Rvci5oIik7Ci0gICAgICAgIHJldHVybiAidjhOdW1iZXJB
cnJheVRvVmVjdG9yPGZsb2F0PigkdmFsdWUpIjsKLSAgICB9Ci0gICAgaWYgKCR0eXBlIGVxICJk
b3VibGVbXSIpIHsKLSAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoInd0Zi9WZWN0b3IuaCIpOwot
ICAgICAgICByZXR1cm4gInY4TnVtYmVyQXJyYXlUb1ZlY3Rvcjxkb3VibGU+KCR2YWx1ZSkiOwot
ICAgIH0KIAogICAgIGlmICgkdHlwZSBlcSAiRE9NU3RyaW5nIiBvciAkdHlwZSBlcSAiRE9NVXNl
ckRhdGEiKSB7CiAgICAgICAgIHJldHVybiAkdmFsdWU7CkBAIC0zODIwLDkgKzM4MDgsNyBAQCBt
eSAlbm9uX3dyYXBwZXJfdHlwZXMgPSAoCiAgICAgJ1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZScgPT4g
MSwKICAgICAnYm9vbGVhbicgPT4gMSwKICAgICAnZG91YmxlJyA9PiAxLAotICAgICdkb3VibGVb
XScgPT4gMSwKICAgICAnZmxvYXQnID0+IDEsCi0gICAgJ2Zsb2F0W10nID0+IDEsCiAgICAgJ2lu
dCcgPT4gMSwKICAgICAnbG9uZyBsb25nJyA9PiAxLAogICAgICdsb25nJyA9PiAxLApAQCAtMzkw
OSw5ICszODk1LDYgQEAgc3ViIE5hdGl2ZVRvSlNWYWx1ZQogICAgIHJldHVybiAidjg6Ok51bWJl
cjo6TmV3KCR2YWx1ZSkiIGlmICRjb2RlR2VuZXJhdG9yLT5Jc1ByaW1pdGl2ZVR5cGUoJHR5cGUp
OwogICAgIHJldHVybiAiJHZhbHVlLnY4VmFsdWUoKSIgaWYgJG5hdGl2ZVR5cGUgZXEgIlNjcmlw
dFZhbHVlIjsKIAotICAgIHJldHVybiAidjhOdW1iZXJBcnJheSgkdmFsdWUpIiBpZiAkdHlwZSBl
cSAiZmxvYXRbXSI7Ci0gICAgcmV0dXJuICJ2OE51bWJlckFycmF5KCR2YWx1ZSkiIGlmICR0eXBl
IGVxICJkb3VibGVbXSI7Ci0KICAgICBpZiAoJGNvZGVHZW5lcmF0b3ItPklzU3RyaW5nVHlwZSgk
dHlwZSkpIHsKICAgICAgICAgbXkgJGNvbnYgPSAkc2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0
ZXMtPnsiVHJlYXRSZXR1cm5lZE51bGxTdHJpbmdBcyJ9OwogICAgICAgICBpZiAoZGVmaW5lZCAk
Y29udikgewpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4
VGVzdE9iai5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Y4L1Y4VGVzdE9iai5jcHAJKHJldmlzaW9uIDEyMTY1NikKKysrIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPYmouY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC02MCw3ICs2MCw2IEBACiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRl
IDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1VudXNlZFBhcmFtLmg+Ci0jaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgogCiAjaWYgRU5BQkxFKENvbmRpdGlvbjEpCiAjaW5jbHVkZSAiVjhUZXN0
T2JqZWN0QS5oIgpAQCAtODc5LDE0ICs4NzgsMTQgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiBmbG9hdEFycmF5QQogewogICAgIElOQ19TVEFUUygiRE9NLlRlc3RPYmouZmxvYXRBcnJh
eS5fZ2V0Iik7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhv
bGRlcigpKTsKLSAgICByZXR1cm4gdjhOdW1iZXJBcnJheShpbXAtPmZsb2F0QXJyYXkoKSk7Cisg
ICAgcmV0dXJuIHY4QXJyYXkoaW1wLT5mbG9hdEFycmF5KCksIGluZm8uR2V0SXNvbGF0ZSgpKTsK
IH0KIAogc3RhdGljIHZvaWQgZmxvYXRBcnJheUF0dHJTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJp
bmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJ
bmZvJiBpbmZvKQogewogICAgIElOQ19TVEFUUygiRE9NLlRlc3RPYmouZmxvYXRBcnJheS5fc2V0
Iik7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigp
KTsKLSAgICBWZWN0b3I8ZmxvYXQ+IHYgPSB2OE51bWJlckFycmF5VG9WZWN0b3I8ZmxvYXQ+KHZh
bHVlKTsKKyAgICBWZWN0b3I8ZmxvYXQ+IHYgPSB0b05hdGl2ZUFycmF5PGZsb2F0Pih2YWx1ZSk7
CiAgICAgaW1wLT5zZXRGbG9hdEFycmF5KHYpOwogICAgIHJldHVybjsKIH0KQEAgLTg5NSwxNCAr
ODk0LDE0IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZG91YmxlQXJyYXkKIHsKICAg
ICBJTkNfU1RBVFMoIkRPTS5UZXN0T2JqLmRvdWJsZUFycmF5Ll9nZXQiKTsKICAgICBUZXN0T2Jq
KiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwotICAgIHJldHVybiB2
OE51bWJlckFycmF5KGltcC0+ZG91YmxlQXJyYXkoKSk7CisgICAgcmV0dXJuIHY4QXJyYXkoaW1w
LT5kb3VibGVBcnJheSgpLCBpbmZvLkdldElzb2xhdGUoKSk7CiB9CiAKIHN0YXRpYyB2b2lkIGRv
dWJsZUFycmF5QXR0clNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2Fs
PHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAg
SU5DX1NUQVRTKCJET00uVGVzdE9iai5kb3VibGVBcnJheS5fc2V0Iik7CiAgICAgVGVzdE9iaiog
aW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKLSAgICBWZWN0b3I8ZG91
YmxlPiB2ID0gdjhOdW1iZXJBcnJheVRvVmVjdG9yPGRvdWJsZT4odmFsdWUpOworICAgIFZlY3Rv
cjxkb3VibGU+IHYgPSB0b05hdGl2ZUFycmF5PGRvdWJsZT4odmFsdWUpOwogICAgIGltcC0+c2V0
RG91YmxlQXJyYXkodik7CiAgICAgcmV0dXJuOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvVjhCaW5kaW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvVjhCaW5kaW5nLmgJKHJldmlzaW9uIDEyMTY1NikKKysrIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1Y4QmluZGluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMzgsNyArMzM4LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgIH0KIAogICAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAg
IHN0cnVjdCBUcmFpdHMgeworICAgIHN0cnVjdCBWOFZhbHVlVHJhaXRzIHsKICAgICAgICAgc3Rh
dGljIGlubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gYXJyYXlWOFZhbHVlKGNvbnN0IFQmIHZh
bHVlLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJu
IHRvVjgoV1RGOjpnZXRQdHIodmFsdWUpLCBpc29sYXRlKTsKQEAgLTM0Niw3ICszNDYsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgfTsKIAogICAgIHRlbXBsYXRlPD4KLSAgICBzdHJ1Y3Qg
VHJhaXRzPFN0cmluZz4geworICAgIHN0cnVjdCBWOFZhbHVlVHJhaXRzPFN0cmluZz4gewogICAg
ICAgICBzdGF0aWMgaW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBhcnJheVY4VmFsdWUoY29u
c3QgU3RyaW5nJiB2YWx1ZSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCiAgICAgICAgIHsKICAgICAg
ICAgICAgIHJldHVybiB2OFN0cmluZyh2YWx1ZSwgaXNvbGF0ZSk7CkBAIC0zNTQsMjAgKzM1NCwz
NiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgfTsKIAogICAgIHRlbXBsYXRlPD4KLSAgICBz
dHJ1Y3QgVHJhaXRzPHVuc2lnbmVkIGxvbmc+IHsKKyAgICBzdHJ1Y3QgVjhWYWx1ZVRyYWl0czx1
bnNpZ25lZCBsb25nPiB7CiAgICAgICAgIHN0YXRpYyBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IGFycmF5VjhWYWx1ZShjb25zdCB1bnNpZ25lZCBsb25nJiB2YWx1ZSwgdjg6Oklzb2xhdGUq
IGlzb2xhdGUpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiB2OFVuc2lnbmVkSW50ZWdl
cih2YWx1ZSwgaXNvbGF0ZSk7CiAgICAgICAgIH0KICAgICB9OwogCisgICAgdGVtcGxhdGU8Pgor
ICAgIHN0cnVjdCBWOFZhbHVlVHJhaXRzPGZsb2F0PiB7CisgICAgICAgIHN0YXRpYyBpbmxpbmUg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IGFycmF5VjhWYWx1ZShjb25zdCBmbG9hdCYgdmFsdWUsIHY4
OjpJc29sYXRlKikKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIHY4OjpOdW1iZXI6Ok5l
dyh2YWx1ZSk7CisgICAgICAgIH0KKyAgICB9OworCisgICAgdGVtcGxhdGU8PgorICAgIHN0cnVj
dCBWOFZhbHVlVHJhaXRzPGRvdWJsZT4geworICAgICAgICBzdGF0aWMgaW5saW5lIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiBhcnJheVY4VmFsdWUoY29uc3QgZG91YmxlJiB2YWx1ZSwgdjg6Oklzb2xh
dGUqKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gdjg6Ok51bWJlcjo6TmV3KHZhbHVl
KTsKKyAgICAgICAgfQorICAgIH07CisKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogICAgIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiB2OEFycmF5KGNvbnN0IFZlY3RvcjxUPiYgaXRlcmF0b3IsIHY4
OjpJc29sYXRlKiBpc29sYXRlKQogICAgIHsKICAgICAgICAgdjg6OkxvY2FsPHY4OjpBcnJheT4g
cmVzdWx0ID0gdjg6OkFycmF5OjpOZXcoaXRlcmF0b3Iuc2l6ZSgpKTsKICAgICAgICAgaW50IGlu
ZGV4ID0gMDsKICAgICAgICAgdHlwZW5hbWUgVmVjdG9yPFQ+Ojpjb25zdF9pdGVyYXRvciBlbmQg
PSBpdGVyYXRvci5lbmQoKTsKLSAgICAgICAgdHlwZWRlZiBUcmFpdHM8VD4gVHJhaXRzVHlwZTsK
KyAgICAgICAgdHlwZWRlZiBWOFZhbHVlVHJhaXRzPFQ+IFRyYWl0c1R5cGU7CiAgICAgICAgIGZv
ciAodHlwZW5hbWUgVmVjdG9yPFQ+Ojpjb25zdF9pdGVyYXRvciBpdGVyID0gaXRlcmF0b3IuYmVn
aW4oKTsgaXRlciAhPSBlbmQ7ICsraXRlcikKICAgICAgICAgICAgIHJlc3VsdC0+U2V0KHY4SW50
ZWdlcihpbmRleCsrLCBpc29sYXRlKSwgVHJhaXRzVHlwZTo6YXJyYXlWOFZhbHVlKCppdGVyLCBp
c29sYXRlKSk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CkBAIC0zNzUsNiArMzkxLDMyIEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2OEFycmF5KFBh
c3NSZWZQdHI8RE9NU3RyaW5nTGlzdD4sIHY4OjpJc29sYXRlKik7CiAKKyAgICB0ZW1wbGF0ZTxj
bGFzcyBUPiBzdHJ1Y3QgTmF0aXZlVmFsdWVUcmFpdHM7CisKKyAgICB0ZW1wbGF0ZTw+CisgICAg
c3RydWN0IE5hdGl2ZVZhbHVlVHJhaXRzPFN0cmluZz4geworICAgICAgICBzdGF0aWMgaW5saW5l
IFN0cmluZyBhcnJheU5hdGl2ZVZhbHVlKGNvbnN0IHY4OjpMb2NhbDx2ODo6QXJyYXk+JiBhcnJh
eSwgc2l6ZV90IGkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiB2OFZhbHVlVG9XZWJD
b3JlU3RyaW5nKGFycmF5LT5HZXQoaSkpOworICAgICAgICB9CisgICAgfTsKKworICAgIHRlbXBs
YXRlPD4KKyAgICBzdHJ1Y3QgTmF0aXZlVmFsdWVUcmFpdHM8ZmxvYXQ+IHsKKyAgICAgICAgc3Rh
dGljIGlubGluZSBmbG9hdCBhcnJheU5hdGl2ZVZhbHVlKGNvbnN0IHY4OjpMb2NhbDx2ODo6QXJy
YXk+JiBhcnJheSwgc2l6ZV90IGkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBzdGF0
aWNfY2FzdDxmbG9hdD4oYXJyYXktPkdldCh2OEludGVnZXIoaSkpLT5OdW1iZXJWYWx1ZSgpKTsK
KyAgICAgICAgfQorICAgIH07CisKKyAgICB0ZW1wbGF0ZTw+CisgICAgc3RydWN0IE5hdGl2ZVZh
bHVlVHJhaXRzPGRvdWJsZT4geworICAgICAgICBzdGF0aWMgaW5saW5lIGRvdWJsZSBhcnJheU5h
dGl2ZVZhbHVlKGNvbnN0IHY4OjpMb2NhbDx2ODo6QXJyYXk+JiBhcnJheSwgc2l6ZV90IGkpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxkb3VibGU+KGFycmF5LT5H
ZXQodjhJbnRlZ2VyKGkpKS0+TnVtYmVyVmFsdWUoKSk7CisgICAgICAgIH0KKyAgICB9OworCiAg
ICAgdGVtcGxhdGUgPGNsYXNzIFQ+CiAgICAgVmVjdG9yPFQ+IHRvTmF0aXZlQXJyYXkodjg6Okhh
bmRsZTx2ODo6VmFsdWU+IHZhbHVlKQogICAgIHsKQEAgLTM4MiwxMiArNDI0LDEyIEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIHJldHVybiBWZWN0b3I8VD4oKTsKIAogICAgICAg
ICBWZWN0b3I8VD4gcmVzdWx0OworICAgICAgICB0eXBlZGVmIE5hdGl2ZVZhbHVlVHJhaXRzPFQ+
IFRyYWl0c1R5cGU7CiAgICAgICAgIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHY4VmFsdWUodjg6Okxv
Y2FsPHY4OjpWYWx1ZT46Ok5ldyh2YWx1ZSkpOwogICAgICAgICB2ODo6TG9jYWw8djg6OkFycmF5
PiBhcnJheSA9IHY4OjpMb2NhbDx2ODo6QXJyYXk+OjpDYXN0KHY4VmFsdWUpOwogICAgICAgICBz
aXplX3QgbGVuZ3RoID0gYXJyYXktPkxlbmd0aCgpOwotCiAgICAgICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQodjhWYWx1
ZVRvV2ViQ29yZVN0cmluZyhhcnJheS0+R2V0KGkpKSk7CisgICAgICAgICAgICByZXN1bHQuYXBw
ZW5kKFRyYWl0c1R5cGU6OmFycmF5TmF0aXZlVmFsdWUoYXJyYXksIGkpKTsKICAgICAgICAgfQog
ICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KQEAgLTUxNywxNSArNTU5LDYgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgICAgICByZXR1cm4gc3RyLmlzTnVsbCgpID8gdjg6OkhhbmRsZTx2
ODo6VmFsdWU+KHY4Qm9vbGVhbihmYWxzZSkpIDogdjg6OkhhbmRsZTx2ODo6VmFsdWU+KHY4U3Ry
aW5nKHN0ciwgaXNvbGF0ZSkpOwogICAgIH0KIAotICAgIHRlbXBsYXRlIDxjbGFzcyBUPiB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gdjhOdW1iZXJBcnJheShjb25zdCBWZWN0b3I8VD4mIHZhbHVlcykK
LSAgICB7Ci0gICAgICAgIHNpemVfdCBzaXplID0gdmFsdWVzLnNpemUoKTsKLSAgICAgICAgdjg6
OkxvY2FsPHY4OjpBcnJheT4gcmVzdWx0ID0gdjg6OkFycmF5OjpOZXcoc2l6ZSk7Ci0gICAgICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKQotICAgICAgICAgICAgcmVzdWx0LT5T
ZXQoaSwgdjg6Ok51bWJlcjo6TmV3KHZhbHVlc1tpXSkpOwotICAgICAgICByZXR1cm4gcmVzdWx0
OwotICAgIH0KLQogICAgIGlubGluZSBkb3VibGUgdG9XZWJDb3JlRGF0ZSh2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gb2JqZWN0KQogICAgIHsKICAgICAgICAgcmV0dXJuIChvYmplY3QtPklzRGF0ZSgp
IHx8IG9iamVjdC0+SXNOdW1iZXIoKSkgPyBvYmplY3QtPk51bWJlclZhbHVlKCkgOiBzdGQ6Om51
bWVyaWNfbGltaXRzPGRvdWJsZT46OnF1aWV0X05hTigpOwpAQCAtNTU1LDIyICs1ODgsNiBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBTdHJpbmcgaW50MzJUb1dlYkNvcmVTdHJpbmcoaW50
IHZhbHVlKTsKIAotICAgIHRlbXBsYXRlIDxjbGFzcyBUPiBWZWN0b3I8VD4gdjhOdW1iZXJBcnJh
eVRvVmVjdG9yKHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSkKLSAgICB7Ci0gICAgICAgIHY4
OjpMb2NhbDx2ODo6VmFsdWU+IHY4VmFsdWUodjg6OkxvY2FsPHY4OjpWYWx1ZT46Ok5ldyh2YWx1
ZSkpOwotICAgICAgICBpZiAoIXY4VmFsdWUtPklzQXJyYXkoKSkKLSAgICAgICAgICAgIHJldHVy
biBWZWN0b3I8VD4oKTsKLQotICAgICAgICBWZWN0b3I8VD4gcmVzdWx0OwotICAgICAgICB2ODo6
TG9jYWw8djg6OkFycmF5PiB2OEFycmF5ID0gdjg6OkxvY2FsPHY4OjpBcnJheT46OkNhc3QodjhW
YWx1ZSk7Ci0gICAgICAgIHNpemVfdCBsZW5ndGggPSB2OEFycmF5LT5MZW5ndGgoKTsKLSAgICAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgewotICAgICAgICAgICAgdjg6
OkxvY2FsPHY4OjpWYWx1ZT4gaW5kZXhlZFZhbHVlID0gdjhBcnJheS0+R2V0KHY4SW50ZWdlcihp
KSk7Ci0gICAgICAgICAgICByZXN1bHQuYXBwZW5kKHN0YXRpY19jYXN0PFQ+KGluZGV4ZWRWYWx1
ZS0+TnVtYmVyVmFsdWUoKSkpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0g
ICAgfQotCiAgICAgUGFzc1JlZlB0cjxET01TdHJpbmdMaXN0PiB2OFZhbHVlVG9XZWJDb3JlRE9N
U3RyaW5nTGlzdCh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4pOwogCiAgICAgY2xhc3MgVjhQYXJhbWV0
ZXJCYXNlIHsK
</data>

          </attachment>
      

    </bug>

</bugzilla>