<?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>72830</bug_id>
          
          <creation_ts>2011-11-20 11:59:11 -0800</creation_ts>
          <short_desc>[Gtk] Regression: text-inserted events lack text inserted and current line</short_desc>
          <delta_ts>2012-01-09 02:16:34 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Accessibility</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>Gtk</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>25531</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Joanmarie Diggs">jdiggs</reporter>
          <assigned_to name="Mario Sanchez Prada">mario</assigned_to>
          <cc>cgarcia</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>mario</cc>
    
    <cc>mrobinson</cc>
    
    <cc>pnormand</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>506562</commentid>
    <comment_count>0</comment_count>
      <attachid>115991</attachid>
    <who name="Joanmarie Diggs">jdiggs</who>
    <bug_when>2011-11-20 11:59:11 -0800</bug_when>
    <thetext>Created attachment 115991
test script

Steps to reproduce:

1. Launch the attached test script in an inaccessible terminal (e.g. xterm)
2. Launch epiphany
3. Navigate to http://live.gnome.org/Orca
4. Type something in the search entry of the resulting page

Expected results: After both steps 3 and 4, the test script would output the character inserted, the current line, and all of the text.

Actual results: The test script output is correct after step 3 (Gtk+ widget). However, after step 4, only the full text is correctly output. The event.any_data (which should contain the inserted text) and current line are empty.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>509176</commentid>
    <comment_count>1</comment_count>
      <attachid>116624</attachid>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2011-11-25 08:18:11 -0800</bug_when>
    <thetext>Created attachment 116624
Patch proposal + unit test

Attaching now a patch proposal that basically updates the code to using the new &apos;text-insert&apos; and &apos;text-remove&apos; signals (instead of the old, and now deprecated, &apos;text-changed&apos; one), which allows us to emit the text being actually modified (inserted or removed) along with the signal, instead of just emitting the &apos;offset&apos; and &apos;count&apos; values and then relaying on the ATK bridge to get the right information at the right time, which is something we know does not always work fine (and one of the main reasons behind the deprecation of the &apos;text-changed&apos; signal, AFAIK).

This patch also changes the signature of the nodeTextChangeNotification() and  nodeTextChangePlatformNotification() in AXObjectCache, to allow specifying the text  being modified from the text editing commands (as we&apos;re gonna send the modified text, there&apos;s no point in not providing this information to the AXObjectCache if we already know it, right?), and so I needed to update also the signatures in the platform-specific versions of that class for the mac, win and chromium ports too, so they will keep building. Fortunately, this change shouldn&apos;t impact those ports at all since they are basically ignoring this functionality and providing an empty implementation for them.

Last, I haven&apos;t included a new test with this patch, but just updated the a11y API test we already had in place to use the new signals instead of the old ones. Also, I made the most of this change to implement more careful and detailed checks in that unit test, since it&apos;s obvious that the old version of it was not good enough, as it didn&apos;t detected that things broke heavily recently (and thus the reason for this bug to be reported).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>509179</commentid>
    <comment_count>2</comment_count>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2011-11-25 08:20:10 -0800</bug_when>
    <thetext>Adding reviewers to CC</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>510050</commentid>
    <comment_count>3</comment_count>
      <attachid>116624</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2011-11-28 12:01:29 -0800</bug_when>
    <thetext>Comment on attachment 116624
Patch proposal + unit test

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>510653</commentid>
    <comment_count>4</comment_count>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2011-11-29 03:04:58 -0800</bug_when>
    <thetext>Committed r101349: &lt;http://trac.webkit.org/changeset/101349&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>515375</commentid>
    <comment_count>5</comment_count>
    <who name="Joanmarie Diggs">jdiggs</who>
    <bug_when>2011-12-05 14:02:42 -0800</bug_when>
    <thetext>Mario, using WebKitGtk built from this morning I am seeing this bug only partially fixed: The text inserted is now correct, but the current line seems to only be a single letter which may or may not correspond with the text displayed. Could you please double-check this? Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>515394</commentid>
    <comment_count>6</comment_count>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2011-12-05 14:22:27 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; Mario, using WebKitGtk built from this morning I am seeing this bug only partially fixed: The text inserted is
&gt; now correct, but the current line seems to only be a single letter which may or may not correspond with the
&gt; text displayed. Could you please double-check this? Thanks!

Hmmm... I am not sure I understand. I&apos;ve quickly checked this in the text entries in http://www.igalia.com/contact and all the events I see in accerciser seem to be correct, both in terms of the text displayed and the offset and count values.

Perhaps I am not reproducing properly the issue. Could you please point out specific steps for it? In any case, no need to hurry much since I won&apos;t be able to work much (if at all) on this month, since I am on holidays since today and so I can&apos;t promise much before January.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>515801</commentid>
    <comment_count>7</comment_count>
    <who name="Joanmarie Diggs">jdiggs</who>
    <bug_when>2011-12-06 04:25:11 -0800</bug_when>
    <thetext>(In reply to comment #6)

&gt; Hmmm... I am not sure I understand. I&apos;ve quickly checked this in the text entries in http://www.igalia.com/contact and all the events I see in accerciser seem to be correct, both in terms of the text displayed and the offset and count values.

Yeah, but what about the current line? -- which you would have to use the ipython console for. Or alternatively, you could use my handy (and attached with the opening report) test script. ;)

When I type &apos;Acme Inc.&apos; in the Company field at http://www.igalia.com/contact, here is what my test script prints out in Epiphany:

    Current line: A  
    All text: A  
    Text inserted: &lt;c&gt;  
    Current line: A          &lt;-- WRONG  
    All text: Ac  
    Text inserted: &lt;m&gt;  
    Current line: A          &lt;-- WRONG  
    All text: Acm  
    Text inserted: &lt;e&gt;  
    Current line: A          &lt;-- WRONG  
    All text: Acme  
    Text inserted: &lt; &gt;  
    Current line: A          &lt;-- WRONG  
    All text: Acme   
    Text inserted: &lt;I&gt;  
    Current line: A          &lt;-- WRONG  
    All text: Acme I  
    Text inserted: &lt;n&gt;  
    Current line: A          &lt;-- WRONG  
    All text: Acme In  
    Text inserted: &lt;c&gt;  
    Current line: A          &lt;-- WRONG  
    All text: Acme Inc  
    Text inserted: &lt;.&gt;  
    Current line: A          &lt;-- WRONG  
    All text: Acme Inc.  

Contrast that with what is seen in Epiphany&apos;s Gtk+ widget in which you can type the URL to navigate to.

    Text inserted: &lt;A&gt;  
    Current line: A  
    All text: A  
    Text inserted: &lt;c&gt;  
    Current line: Ac         &lt;-- EXPECTED  
    All text: Ac  
    Text inserted: &lt;m&gt;  
    Current line: Acm        &lt;-- EXPECTED  
    All text: Acm  
    Text inserted: &lt;e&gt;  
    Current line: Acme       &lt;-- EXPECTED  
    All text: Acme  
    Text inserted: &lt;,&gt;  
    Current line: Acme,      &lt;-- EXPECTED  
    All text: Acme,  
    Text inserted: &lt; &gt;  
    Current line: Acme,      &lt;-- EXPECTED  
    All text: Acme,   
    Text inserted: &lt;I&gt;  
    Current line: Acme, I    &lt;-- EXPECTED  
    All text: Acme, I  
    Text inserted: &lt;n&gt;  
    Current line: Acme, In   &lt;-- EXPECTED  
    All text: Acme, In  
    Text inserted: &lt;c&gt;  
    Current line: Acme, Inc  &lt;-- EXPECTED  
    All text: Acme, Inc  
    Text inserted: &lt;.&gt;  
    Current line: Acme, Inc. &lt;-- EXPECTED  
    All text: Acme, Inc.  

Given that your response was based on what you were seeing in Accerciser (which does not spit out the current line of text automatically in the event monitor), I am going to assume that this bug is only partially fixed and REOPEN it so that it does not get forgotten.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>515802</commentid>
    <comment_count>8</comment_count>
    <who name="Joanmarie Diggs">jdiggs</who>
    <bug_when>2011-12-06 04:26:10 -0800</bug_when>
    <thetext>Argh, seems I do not have the super powers required to REOPEN bugs. :-/ So UNCONFIRMED.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>516223</commentid>
    <comment_count>9</comment_count>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2011-12-06 13:58:49 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt;[...]
&gt; Given that your response was based on what you were seeing
&gt; in Accerciser (which does not spit out the current line of text
&gt; automatically in the event monitor), I am going to assume that
&gt; this bug is only partially fixed and REOPEN it so that it does
&gt; not get forgotten.

Ok, I agree with reopening. Will try to tackle it asap then

Thanks for reporting the problem, and sorry not to have fixed it completely before (I thought I had)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>525582</commentid>
    <comment_count>10</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-12-21 14:25:15 -0800</bug_when>
    <thetext>Attachment 116624 was posted by a committer and has review+, assigning to Mario Sanchez Prada for commit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>529430</commentid>
    <comment_count>11</comment_count>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2012-01-04 03:08:42 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; [...]
&gt; Ok, I agree with reopening. Will try to tackle it asap then
&gt; 
&gt; Thanks for reporting the problem, and sorry not to have fixed it completely before (I thought I had)

JFTR, now working on this...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>530276</commentid>
    <comment_count>12</comment_count>
      <attachid>121274</attachid>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2012-01-05 07:38:25 -0800</bug_when>
    <thetext>Created attachment 121274
Patch proposal for the remaining issues + updated unit tests

This patch fixed the problem getting the current line, both for single line and multi-line text controls. It also fixes a problem getting the caret offset for text controls, which was causing trouble when retrieving the current line in multi-line text controls (so that&apos;s why it&apos;s included in this patch too, instead of a separate bug).

It also updates some caret-related unit tests in testatk.c, so we make sure we don&apos;t break this again in the future.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>530390</commentid>
    <comment_count>13</comment_count>
      <attachid>121274</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-01-05 10:24:47 -0800</bug_when>
    <thetext>Comment on attachment 121274
Patch proposal for the remaining issues + updated unit tests

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

Looks good, but consider the following changes.

&gt; Source/WebCore/accessibility/gtk/AccessibilityObjectWrapperAtk.cpp:2717
&gt; +AccessibilityObject* focusedObjectAndCaretOffsetUnignored(AccessibilityObject* objectOfReference, int&amp; offset)

You can just call objectOfReference referenceObject, if you like.

&gt; Source/WebCore/accessibility/gtk/AccessibilityObjectWrapperAtk.cpp:2739
&gt; +    AccessibilityObject* realObject = focusedObject;

I think I would prefer just continuing to use focusedObject here. After this point it seems unused and realObject is a little ambiguous.

&gt; Source/WebCore/accessibility/gtk/AccessibilityObjectWrapperAtk.h:63
&gt; +WebCore::AccessibilityObject* focusedObjectAndCaretOffsetUnignored(WebCore::AccessibilityObject* objectOfReference, int&amp; offset);

objectFocusedAndCaretOffsetUnignored might be clearer. You can just omit the parameter name here instead of calling it objectOfReference.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>530702</commentid>
    <comment_count>14</comment_count>
      <attachid>121274</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-05 15:32:04 -0800</bug_when>
    <thetext>Comment on attachment 121274
Patch proposal for the remaining issues + updated unit tests

Attachment 121274 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/11147137

New failing tests:
http/tests/inspector/network/download.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>530742</commentid>
    <comment_count>15</comment_count>
      <attachid>121274</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-01-05 16:03:59 -0800</bug_when>
    <thetext>Comment on attachment 121274
Patch proposal for the remaining issues + updated unit tests

Remove cq bit since I think there are a few style changes I&apos;d like Mario to consider before landing this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>532051</commentid>
    <comment_count>16</comment_count>
      <attachid>121274</attachid>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2012-01-09 02:13:45 -0800</bug_when>
    <thetext>Comment on attachment 121274
Patch proposal for the remaining issues + updated unit tests

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

Thanks for the review, Martin. I&apos;m applying your suggestions to the patch and committing after that.

See my comments below.

&gt;&gt; Source/WebCore/accessibility/gtk/AccessibilityObjectWrapperAtk.cpp:2717
&gt;&gt; +AccessibilityObject* focusedObjectAndCaretOffsetUnignored(AccessibilityObject* objectOfReference, int&amp; offset)
&gt; 
&gt; You can just call objectOfReference referenceObject, if you like.

Ok. Changed.

&gt;&gt; Source/WebCore/accessibility/gtk/AccessibilityObjectWrapperAtk.cpp:2739
&gt;&gt; +    AccessibilityObject* realObject = focusedObject;
&gt; 
&gt; I think I would prefer just continuing to use focusedObject here. After this point it seems unused and realObject is a little ambiguous.

Sounds fine to me. Just used realObject since it was what we had before this patch, but always using focusedObject sounds clearer to me too.

&gt;&gt; Source/WebCore/accessibility/gtk/AccessibilityObjectWrapperAtk.h:63
&gt;&gt; +WebCore::AccessibilityObject* focusedObjectAndCaretOffsetUnignored(WebCore::AccessibilityObject* objectOfReference, int&amp; offset);
&gt; 
&gt; objectFocusedAndCaretOffsetUnignored might be clearer. You can just omit the parameter name here instead of calling it objectOfReference.

Ok. Changed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>532053</commentid>
    <comment_count>17</comment_count>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2012-01-09 02:16:34 -0800</bug_when>
    <thetext>Committed r104446: &lt;http://trac.webkit.org/changeset/104446&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>115991</attachid>
            <date>2011-11-20 11:59:11 -0800</date>
            <delta_ts>2011-11-20 11:59:11 -0800</delta_ts>
            <desc>test script</desc>
            <filename>text.py</filename>
            <type>text/plain</type>
            <size>550</size>
            <attacher name="Joanmarie Diggs">jdiggs</attacher>
            
              <data encoding="base64">IyEvdXNyL2Jpbi9weXRob24KCmltcG9ydCBweWF0c3BpCgpkZWYgbGlzdGVuZXIoZXZlbnQpOgog
ICAgdHJ5OgogICAgICAgIHRleHQgPSBldmVudC5zb3VyY2UucXVlcnlUZXh0KCkKICAgIGV4Y2Vw
dCBOb3RJbXBsZW1lbnRlZEVycm9yOgogICAgICAgIHByaW50ICJib2d1cyBldmVudCIKICAgICAg
ICByZXR1cm4KCiAgICBhbGxUZXh0ID0gdGV4dC5nZXRUZXh0KDAsIC0xKQogICAgY3VycmVudExp
bmUsIHN0YXJ0LCBlbmQgPSBcCiAgICAgICAgdGV4dC5nZXRUZXh0QXRPZmZzZXQodGV4dC5jYXJl
dE9mZnNldCwgcHlhdHNwaS5URVhUX0JPVU5EQVJZX0xJTkVfU1RBUlQpCiAgICBwcmludCAiVGV4
dCBpbnNlcnRlZDogPCVzPiIgJSBldmVudC5hbnlfZGF0YQogICAgcHJpbnQgIkN1cnJlbnQgbGlu
ZTogJXNcbkFsbCB0ZXh0OiAlcyIgJSAoY3VycmVudExpbmUsIGFsbFRleHQpCgpweWF0c3BpLlJl
Z2lzdHJ5LnJlZ2lzdGVyRXZlbnRMaXN0ZW5lcihsaXN0ZW5lciwgIm9iamVjdDp0ZXh0LWNoYW5n
ZWQ6aW5zZXJ0IikKcHlhdHNwaS5SZWdpc3RyeS5zdGFydCgpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>116624</attachid>
            <date>2011-11-25 08:18:11 -0800</date>
            <delta_ts>2011-11-28 12:01:28 -0800</delta_ts>
            <desc>Patch proposal + unit test</desc>
            <filename>0001-2011-11-25-Mario-Sanchez-Prada-msanchez-igalia.com.patch</filename>
            <type>text/plain</type>
            <size>25002</size>
            <attacher name="Mario Sanchez Prada">mario</attacher>
            
              <data encoding="base64">RnJvbSAzYjRhNDliYjNjZjA2OGFlNzBmNWViODc4MzdjNzNiN2Y0NTkxZDI5IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXJpbyBTYW5jaGV6IFByYWRhIDxtc2FuY2hlekBpZ2FsaWEu
Y29tPgpEYXRlOiBGcmksIDI1IE5vdiAyMDExIDE3OjA1OjI4ICswMTAwClN1YmplY3Q6IFtQQVRD
SF0gMjAxMS0xMS0yNSAgTWFyaW8gU2FuY2hleiBQcmFkYSAgPG1zYW5jaGV6QGlnYWxpYS5jb20+
CgogICAgICAgIFtHdGtdIFJlZ3Jlc3Npb246IHRleHQtaW5zZXJ0ZWQgZXZlbnRzIGxhY2sgdGV4
dCBpbnNlcnRlZCBhbmQgY3VycmVudCBsaW5lCiAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTcyODMwCgogICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgoKICAgICAgICBSZXBsYWNlIHRoZSBlbWlzc2lvbiBvZiB0aGUgb2xkIChhbmQgbm93IGRl
cHJlY2F0ZWQpIEF0a09iamVjdCdzCiAgICAgICAgJ3RleHQtY2hhbmdlZDppbnNlcnQnIGFuZCAn
dGV4dC1jaGFuZ2VkOnJlbW92ZScgc2lnbmFscyB3aXRoIHRoZQogICAgICAgIG5ldyAndGV4dC1p
bnNlcnQnIGFuZCAndGV4dC1yZW1vdmUnIG9uZXMsIHdoaWNoIGFyZSBiZXR0ZXIgYW5kCiAgICAg
ICAgbGVzcyBmcmFnaWxlIHNpbmNlIHRoZXkgZW1pdCB0aGUgbW9kaWZpZWQgdGV4dCB0b28sIGFs
b25nIHdpdGggdGhlCiAgICAgICAgdHlwaWNhbCAnb2Zmc2V0JyBhbmQgJ2NvdW50JyB2YWx1ZXMg
YXNzb2NpYXRlZCB0byB0aGUgY2hhbmdlLgoKICAgICAgICBBbHNvLCBjaGFuZ2UgdGhlIHNpZ25h
dHVyZSBvZiB0aGUgbm9kZVRleHRDaGFuZ2VOb3RpZmljYXRpb24oKSBhbmQKICAgICAgICBub2Rl
VGV4dENoYW5nZVBsYXRmb3JtTm90aWZpY2F0aW9uKCkgdG8gYWxsb3cgc3BlY2lmeWluZyB0aGUg
dGV4dAogICAgICAgIGJlaW5nIG1vZGlmaWVkIGZyb20gdGhlIHBsYWNlIHdlIGJldHRlciBrbm93
IGFib3V0IGl0LCB0aGF0IGlzLAogICAgICAgIHRoZSB0ZXh0IGVkaXRpbmcgY29tbWFuZHMuCgog
ICAgICAgICogYWNjZXNzaWJpbGl0eS9ndGsvQVhPYmplY3RDYWNoZUF0ay5jcHA6CiAgICAgICAg
KFdlYkNvcmU6OmVtaXRUZXh0Q2hhbmdlZCk6IEVtaXQgJ3RleHQtaW5zZXJ0JyBhbmQgJ3RleHQt
cmVtb3ZlJywKICAgICAgICBpbnN0ZWFkIG9mIHRoZSBvbGQgYW5kIG5vdyBkZXByZWNhdGVkICd0
ZXh0LWNoYW5nZWQnIHNpZ25hbC4KICAgICAgICAoV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6bm9k
ZVRleHRDaGFuZ2VQbGF0Zm9ybU5vdGlmaWNhdGlvbik6CiAgICAgICAgVXBkYXRlIHRoaXMgZnVu
Y3Rpb24gdG8gcmVjZWl2ZSBhIFN0cmluZyB3aXRoIHRoZSB0ZXh0IGJlaW5nCiAgICAgICAgbW9k
aWZpZWQsIGluc3RlYWQgb2YganVzdCB0aGUgbnVtYmVyIG9mIGNoYXJhY3RlcnMuCgogICAgICAg
ICogYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcDoKICAgICAgICAoV2ViQ29yZTo6QVhP
YmplY3RDYWNoZTo6bm9kZVRleHRDaGFuZ2VOb3RpZmljYXRpb24pOiBVcGRhdGUgdGhpcwogICAg
ICAgIGZ1bmN0aW9uIHRvIHJlY2VpdmUgYSBTdHJpbmcgd2l0aCB0aGUgdGV4dCBiZWluZyBtb2Rp
ZmllZC4KICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oOgogICAgICAgIChX
ZWJDb3JlOjpBWE9iamVjdENhY2hlOjpub2RlVGV4dENoYW5nZU5vdGlmaWNhdGlvbik6IERpdHRv
LgogICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpub2RlVGV4dENoYW5nZVBsYXRmb3Jt
Tm90aWZpY2F0aW9uKTogRGl0dG8uCgogICAgICAgIEFkYXB0IHRoZSB0ZXh0IGVkaXRpbmcgY29t
bWFudHMgdG8gcGFzcyB0aGUgd2hvbGUgdGV4dCBzdHJpbmcKICAgICAgICBiZWluZyBtb2RpZmll
ZCwgaW5zdGVhZCBvZiBqdXN0IGl0cyBudW1iZXIgb2YgY2hhcmFjdGVycy4KCiAgICAgICAgKiBl
ZGl0aW5nL0FwcGVuZE5vZGVDb21tYW5kLmNwcDoKICAgICAgICAoV2ViQ29yZTo6c2VuZEFYVGV4
dENoYW5nZWRJZ25vcmluZ0xpbmVCcmVha3MpOiBBZGFwdCB0byB0aGUgbmV3CiAgICAgICAgc2ln
bmF0dXJlIG9mIG5vZGVUZXh0Q2hhbmdlTm90aWZpY2F0aW9uKCksIHNvIHBhc3MgdGhlIHdob2xl
IHRleHQuCiAgICAgICAgKiBlZGl0aW5nL0RlbGV0ZUZyb21UZXh0Tm9kZUNvbW1hbmQuY3BwOgog
ICAgICAgIChXZWJDb3JlOjpEZWxldGVGcm9tVGV4dE5vZGVDb21tYW5kOjpkb0FwcGx5KTogRGl0
dG8uCiAgICAgICAgKFdlYkNvcmU6OkRlbGV0ZUZyb21UZXh0Tm9kZUNvbW1hbmQ6OmRvVW5hcHBs
eSk6IERpdHRvLgogICAgICAgICogZWRpdGluZy9JbnNlcnRJbnRvVGV4dE5vZGVDb21tYW5kLmNw
cDoKICAgICAgICAoV2ViQ29yZTo6SW5zZXJ0SW50b1RleHROb2RlQ29tbWFuZDo6ZG9BcHBseSk6
IERpdHRvLgogICAgICAgIChXZWJDb3JlOjpJbnNlcnRJbnRvVGV4dE5vZGVDb21tYW5kOjpkb1Vu
YXBwbHkpOiBEaXR0by4KICAgICAgICAqIGVkaXRpbmcvSW5zZXJ0Tm9kZUJlZm9yZUNvbW1hbmQu
Y3BwOgogICAgICAgIChXZWJDb3JlOjpJbnNlcnROb2RlQmVmb3JlQ29tbWFuZDo6ZG9BcHBseSk6
IERpdHRvLgogICAgICAgIChXZWJDb3JlOjpJbnNlcnROb2RlQmVmb3JlQ29tbWFuZDo6ZG9VbmFw
cGx5KTogRGl0dG8uCgogICAgICAgIFVwZGF0ZSBtYWMsIHdpbiBhbmQgY2hyb21pdW0ncyBzcGVj
aWZpYyBwYXJ0cyBvZiBBWE9iamVjdENhY2hlIHRvCiAgICAgICAgbWF0Y2ggdGhlIG5ldyBzaWdu
YXR1cmUgZm9yIG5vZGVUZXh0Q2hhbmdlUGxhdGZvcm1Ob3RpZmljYXRpb24oKSwKICAgICAgICB3
aGljaCB3b24ndCBhZmZlY3QgdGhlaXIgYmVoYXZpb3VyIGFzIHRoZXkgd2VyZSBub3QgaW1wbGVt
ZW50aW5nCiAgICAgICAgdGhhdCBtZXRob2QgYW55d2F5LgoKICAgICAgICAqIGFjY2Vzc2liaWxp
dHkvY2hyb21pdW0vQVhPYmplY3RDYWNoZUNocm9taXVtLmNwcDoKICAgICAgICAoV2ViQ29yZTo6
QVhPYmplY3RDYWNoZTo6bm9kZVRleHRDaGFuZ2VQbGF0Zm9ybU5vdGlmaWNhdGlvbik6CiAgICAg
ICAgKiBhY2Nlc3NpYmlsaXR5L21hYy9BWE9iamVjdENhY2hlTWFjLm1tOgogICAgICAgIChXZWJD
b3JlOjpBWE9iamVjdENhY2hlOjpub2RlVGV4dENoYW5nZVBsYXRmb3JtTm90aWZpY2F0aW9uKToK
ICAgICAgICAqIGFjY2Vzc2liaWxpdHkvd2luL0FYT2JqZWN0Q2FjaGVXaW4uY3BwOgogICAgICAg
IChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpub2RlVGV4dENoYW5nZVBsYXRmb3JtTm90aWZpY2F0
aW9uKToKCjIwMTEtMTEtMjUgIE1hcmlvIFNhbmNoZXogUHJhZGEgIDxtc2FuY2hlekBpZ2FsaWEu
Y29tPgoKICAgICAgICBbR3RrXSBSZWdyZXNzaW9uOiB0ZXh0LWluc2VydGVkIGV2ZW50cyBsYWNr
IHRleHQgaW5zZXJ0ZWQgYW5kIGN1cnJlbnQgbGluZQogICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MjgzMAoKICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KCiAgICAgICAgVXBkYXRlZCB1bml0IHRlc3QgdG8gaGFuZGxlIHRoZSBuZXcgJ3Rl
eHQtaW5zZXJ0JyBhbmQKICAgICAgICAndGV4dC1yZW1vdmUnIHNpZ25hbHMsIGluc3RlYWQgb2Yg
dGhlICd0ZXh0LWNoYW5nZWQnIG9uZS4KCiAgICAgICAgKiB0ZXN0cy90ZXN0YXRrLmM6CiAgICAg
ICAgKHRleHRDaGFuZ2VkQ2IpOiBVcGRhdGUgYSBnbG9iYWwgdmFyaWFibGUgd2l0aCB0aGUgcmVz
dWx0IG9mIHRoZQogICAgICAgIHRleHQgY2hhbmdlLCBzbyB3ZSBjYW4gY2hlY2sgaXRzIHZhbHVl
IGxhdGVyLgogICAgICAgICh0ZXN0V2Via2l0QXRrVGV4dENoYW5nZWROb3RpZmljYXRpb25zKTog
Q29ubmVjdCB0byB0aGUKICAgICAgICAndGV4dC1pbnNlcnQnIGFuZCAndGV4dC1yZW1vdmUnIHNp
Z25hbHMgYW5kIGNoZWNrLCBpbiBhIHdheSBtb3JlCiAgICAgICAgY2FyZWZ1bGx5IHdheSB0aGFu
IGl0IHdhcyBkb25lIGJlZm9yZSwgdGhhdCB0aGUgc2lnbmFscyBhcmUgYmVpbmcKICAgICAgICBw
cm9wZXJseSBlbWl0dGVkLCBhbmQgdGhhdCB0aGUgaW5mb3JtYXRpb24gYXR0YWNoZWQgdG8gdGhl
bSBpcyB0aGUKICAgICAgICByaWdodCBvbmUgZm9yIGVhY2ggY2FzZSAoaW5zZXJ0L3JlbW92ZSwg
b2Zmc2V0LCBjb3VudCBhbmQgdGV4dCkuCi0tLQogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDYwICsrKysrKysrKysrKysrKysrKysrCiBTb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwICAgICB8ICAgIDQgKy0K
IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oICAgICAgIHwgICAg
OCArLQogLi4uL2Nocm9taXVtL0FYT2JqZWN0Q2FjaGVDaHJvbWl1bS5jcHAgICAgICAgICAgICAg
fCAgICAyICstCiAuLi4vV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2d0ay9BWE9iamVjdENhY2hlQXRr
LmNwcCB8ICAgMTUgKystLS0KIC4uLi9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL0FYT2JqZWN0
Q2FjaGVNYWMubW0gIHwgICAgMiArLQogLi4uL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS93aW4vQVhP
YmplY3RDYWNoZVdpbi5jcHAgfCAgICAyICstCiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGVu
ZE5vZGVDb21tYW5kLmNwcCAgICAgICB8ICAgIDMgKy0KIC4uLi9XZWJDb3JlL2VkaXRpbmcvRGVs
ZXRlRnJvbVRleHROb2RlQ29tbWFuZC5jcHAgIHwgICAgNCArLQogLi4uL1dlYkNvcmUvZWRpdGlu
Zy9JbnNlcnRJbnRvVGV4dE5vZGVDb21tYW5kLmNwcCAgfCAgICA0ICstCiBTb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0luc2VydE5vZGVCZWZvcmVDb21tYW5kLmNwcCB8ICAgIDQgKy0KIFNvdXJjZS9X
ZWJLaXQvZ3RrL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxOSArKysrKysK
IFNvdXJjZS9XZWJLaXQvZ3RrL3Rlc3RzL3Rlc3RhdGsuYyAgICAgICAgICAgICAgICAgIHwgICA1
MiArKysrKysrKysrLS0tLS0tLQogMTMgZmlsZXMgY2hhbmdlZCwgMTMzIGluc2VydGlvbnMoKyks
IDQ2IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA5NjI4ZWI2Li5jYjVmYjk1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsNjMgQEAKKzIwMTEtMTEtMjUgIE1hcmlvIFNhbmNoZXogUHJhZGEgIDxt
c2FuY2hlekBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHdGtdIFJlZ3Jlc3Npb246IHRleHQtaW5z
ZXJ0ZWQgZXZlbnRzIGxhY2sgdGV4dCBpbnNlcnRlZCBhbmQgY3VycmVudCBsaW5lCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MjgzMAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlcGxhY2UgdGhlIGVtaXNz
aW9uIG9mIHRoZSBvbGQgKGFuZCBub3cgZGVwcmVjYXRlZCkgQXRrT2JqZWN0J3MKKyAgICAgICAg
J3RleHQtY2hhbmdlZDppbnNlcnQnIGFuZCAndGV4dC1jaGFuZ2VkOnJlbW92ZScgc2lnbmFscyB3
aXRoIHRoZQorICAgICAgICBuZXcgJ3RleHQtaW5zZXJ0JyBhbmQgJ3RleHQtcmVtb3ZlJyBvbmVz
LCB3aGljaCBhcmUgYmV0dGVyIGFuZAorICAgICAgICBsZXNzIGZyYWdpbGUgc2luY2UgdGhleSBl
bWl0IHRoZSBtb2RpZmllZCB0ZXh0IHRvbywgYWxvbmcgd2l0aCB0aGUKKyAgICAgICAgdHlwaWNh
bCAnb2Zmc2V0JyBhbmQgJ2NvdW50JyB2YWx1ZXMgYXNzb2NpYXRlZCB0byB0aGUgY2hhbmdlLgor
CisgICAgICAgIEFsc28sIGNoYW5nZSB0aGUgc2lnbmF0dXJlIG9mIHRoZSBub2RlVGV4dENoYW5n
ZU5vdGlmaWNhdGlvbigpIGFuZAorICAgICAgICBub2RlVGV4dENoYW5nZVBsYXRmb3JtTm90aWZp
Y2F0aW9uKCkgdG8gYWxsb3cgc3BlY2lmeWluZyB0aGUgdGV4dAorICAgICAgICBiZWluZyBtb2Rp
ZmllZCBmcm9tIHRoZSBwbGFjZSB3ZSBiZXR0ZXIga25vdyBhYm91dCBpdCwgdGhhdCBpcywKKyAg
ICAgICAgdGhlIHRleHQgZWRpdGluZyBjb21tYW5kcy4KKworICAgICAgICAqIGFjY2Vzc2liaWxp
dHkvZ3RrL0FYT2JqZWN0Q2FjaGVBdGsuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZW1pdFRleHRD
aGFuZ2VkKTogRW1pdCAndGV4dC1pbnNlcnQnIGFuZCAndGV4dC1yZW1vdmUnLAorICAgICAgICBp
bnN0ZWFkIG9mIHRoZSBvbGQgYW5kIG5vdyBkZXByZWNhdGVkICd0ZXh0LWNoYW5nZWQnIHNpZ25h
bC4KKyAgICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6Om5vZGVUZXh0Q2hhbmdlUGxhdGZv
cm1Ob3RpZmljYXRpb24pOgorICAgICAgICBVcGRhdGUgdGhpcyBmdW5jdGlvbiB0byByZWNlaXZl
IGEgU3RyaW5nIHdpdGggdGhlIHRleHQgYmVpbmcKKyAgICAgICAgbW9kaWZpZWQsIGluc3RlYWQg
b2YganVzdCB0aGUgbnVtYmVyIG9mIGNoYXJhY3RlcnMuCisKKyAgICAgICAgKiBhY2Nlc3NpYmls
aXR5L0FYT2JqZWN0Q2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6
bm9kZVRleHRDaGFuZ2VOb3RpZmljYXRpb24pOiBVcGRhdGUgdGhpcworICAgICAgICBmdW5jdGlv
biB0byByZWNlaXZlIGEgU3RyaW5nIHdpdGggdGhlIHRleHQgYmVpbmcgbW9kaWZpZWQuCisgICAg
ICAgICogYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmg6CisgICAgICAgIChXZWJDb3JlOjpB
WE9iamVjdENhY2hlOjpub2RlVGV4dENoYW5nZU5vdGlmaWNhdGlvbik6IERpdHRvLgorICAgICAg
ICAoV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6bm9kZVRleHRDaGFuZ2VQbGF0Zm9ybU5vdGlmaWNh
dGlvbik6IERpdHRvLgorCisgICAgICAgIEFkYXB0IHRoZSB0ZXh0IGVkaXRpbmcgY29tbWFudHMg
dG8gcGFzcyB0aGUgd2hvbGUgdGV4dCBzdHJpbmcKKyAgICAgICAgYmVpbmcgbW9kaWZpZWQsIGlu
c3RlYWQgb2YganVzdCBpdHMgbnVtYmVyIG9mIGNoYXJhY3RlcnMuCisKKyAgICAgICAgKiBlZGl0
aW5nL0FwcGVuZE5vZGVDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNlbmRBWFRleHRD
aGFuZ2VkSWdub3JpbmdMaW5lQnJlYWtzKTogQWRhcHQgdG8gdGhlIG5ldworICAgICAgICBzaWdu
YXR1cmUgb2Ygbm9kZVRleHRDaGFuZ2VOb3RpZmljYXRpb24oKSwgc28gcGFzcyB0aGUgd2hvbGUg
dGV4dC4KKyAgICAgICAgKiBlZGl0aW5nL0RlbGV0ZUZyb21UZXh0Tm9kZUNvbW1hbmQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RGVsZXRlRnJvbVRleHROb2RlQ29tbWFuZDo6ZG9BcHBseSk6IERp
dHRvLgorICAgICAgICAoV2ViQ29yZTo6RGVsZXRlRnJvbVRleHROb2RlQ29tbWFuZDo6ZG9VbmFw
cGx5KTogRGl0dG8uCisgICAgICAgICogZWRpdGluZy9JbnNlcnRJbnRvVGV4dE5vZGVDb21tYW5k
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc2VydEludG9UZXh0Tm9kZUNvbW1hbmQ6OmRvQXBw
bHkpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6Okluc2VydEludG9UZXh0Tm9kZUNvbW1hbmQ6
OmRvVW5hcHBseSk6IERpdHRvLgorICAgICAgICAqIGVkaXRpbmcvSW5zZXJ0Tm9kZUJlZm9yZUNv
bW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zZXJ0Tm9kZUJlZm9yZUNvbW1hbmQ6OmRv
QXBwbHkpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6Okluc2VydE5vZGVCZWZvcmVDb21tYW5k
Ojpkb1VuYXBwbHkpOiBEaXR0by4KKworICAgICAgICBVcGRhdGUgbWFjLCB3aW4gYW5kIGNocm9t
aXVtJ3Mgc3BlY2lmaWMgcGFydHMgb2YgQVhPYmplY3RDYWNoZSB0bworICAgICAgICBtYXRjaCB0
aGUgbmV3IHNpZ25hdHVyZSBmb3Igbm9kZVRleHRDaGFuZ2VQbGF0Zm9ybU5vdGlmaWNhdGlvbigp
LAorICAgICAgICB3aGljaCB3b24ndCBhZmZlY3QgdGhlaXIgYmVoYXZpb3VyIGFzIHRoZXkgd2Vy
ZSBub3QgaW1wbGVtZW50aW5nCisgICAgICAgIHRoYXQgbWV0aG9kIGFueXdheS4KKworICAgICAg
ICAqIGFjY2Vzc2liaWxpdHkvY2hyb21pdW0vQVhPYmplY3RDYWNoZUNocm9taXVtLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6Om5vZGVUZXh0Q2hhbmdlUGxhdGZvcm1Ob3Rp
ZmljYXRpb24pOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvbWFjL0FYT2JqZWN0Q2FjaGVNYWMu
bW06CisgICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpub2RlVGV4dENoYW5nZVBsYXRm
b3JtTm90aWZpY2F0aW9uKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L3dpbi9BWE9iamVjdENh
Y2hlV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6Om5vZGVUZXh0Q2hh
bmdlUGxhdGZvcm1Ob3RpZmljYXRpb24pOgorCiAyMDExLTExLTIxICBEYXZpZCBCYXJyICA8ZGF2
aWRiYXJyQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSRUdSRVNTSU9OKHI5ODU0Mik6IENocm9t
aXVtOiBDU1MgdGV4dCBpcyByZW5kZXJlZCBvbiBwYWdlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcAppbmRleCBjMjRiZDNiLi5jYTE1NGE1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAKQEAgLTUz
MCwxNCArNTMwLDE0IEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6c2VsZWN0ZWRDaGlsZHJlbkNoYW5n
ZWQoUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKICAgICBwb3N0Tm90aWZpY2F0aW9uKHJlbmRlcmVy
LCBBWFNlbGVjdGVkQ2hpbGRyZW5DaGFuZ2VkLCBmYWxzZSk7CiB9CiAKLXZvaWQgQVhPYmplY3RD
YWNoZTo6bm9kZVRleHRDaGFuZ2VOb3RpZmljYXRpb24oUmVuZGVyT2JqZWN0KiByZW5kZXJlciwg
QVhUZXh0Q2hhbmdlIHRleHRDaGFuZ2UsIHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgY291bnQp
Cit2b2lkIEFYT2JqZWN0Q2FjaGU6Om5vZGVUZXh0Q2hhbmdlTm90aWZpY2F0aW9uKFJlbmRlck9i
amVjdCogcmVuZGVyZXIsIEFYVGV4dENoYW5nZSB0ZXh0Q2hhbmdlLCB1bnNpZ25lZCBvZmZzZXQs
IGNvbnN0IFN0cmluZyYgdGV4dCkKIHsKICAgICBpZiAoIXJlbmRlcmVyKQogICAgICAgICByZXR1
cm47CiAKICAgICAvLyBEZWxlZ2F0ZSBvbiB0aGUgcmlnaHQgcGxhdGZvcm0KICAgICBBY2Nlc3Np
YmlsaXR5T2JqZWN0KiBvYmogPSBnZXRPckNyZWF0ZShyZW5kZXJlcik7Ci0gICAgbm9kZVRleHRD
aGFuZ2VQbGF0Zm9ybU5vdGlmaWNhdGlvbihvYmosIHRleHRDaGFuZ2UsIG9mZnNldCwgY291bnQp
OworICAgIG5vZGVUZXh0Q2hhbmdlUGxhdGZvcm1Ob3RpZmljYXRpb24ob2JqLCB0ZXh0Q2hhbmdl
LCBvZmZzZXQsIHRleHQpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BWE9iamVjdENhY2hlLmgKaW5kZXggNWY3ZTFmMS4uZjliNDM0NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgKQEAgLTE0NiwxMyArMTQ2LDEz
IEBAIHB1YmxpYzoKICAgICAgICAgQVhUZXh0RGVsZXRlZCwKICAgICB9OwogCi0gICAgdm9pZCBu
b2RlVGV4dENoYW5nZU5vdGlmaWNhdGlvbihSZW5kZXJPYmplY3QqLCBBWFRleHRDaGFuZ2UsIHVu
c2lnbmVkIG9mZnNldCwgdW5zaWduZWQgY291bnQpOworICAgIHZvaWQgbm9kZVRleHRDaGFuZ2VO
b3RpZmljYXRpb24oUmVuZGVyT2JqZWN0KiwgQVhUZXh0Q2hhbmdlLCB1bnNpZ25lZCBvZmZzZXQs
IGNvbnN0IFN0cmluZyYpOwogCiAgICAgYm9vbCBub2RlSGFzUm9sZShOb2RlKiwgY29uc3QgQXRv
bWljU3RyaW5nJiByb2xlKTsKIAogcHJvdGVjdGVkOgogICAgIHZvaWQgcG9zdFBsYXRmb3JtTm90
aWZpY2F0aW9uKEFjY2Vzc2liaWxpdHlPYmplY3QqLCBBWE5vdGlmaWNhdGlvbik7Ci0gICAgdm9p
ZCBub2RlVGV4dENoYW5nZVBsYXRmb3JtTm90aWZpY2F0aW9uKEFjY2Vzc2liaWxpdHlPYmplY3Qq
LCBBWFRleHRDaGFuZ2UsIHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgY291bnQpOworICAgIHZv
aWQgbm9kZVRleHRDaGFuZ2VQbGF0Zm9ybU5vdGlmaWNhdGlvbihBY2Nlc3NpYmlsaXR5T2JqZWN0
KiwgQVhUZXh0Q2hhbmdlLCB1bnNpZ25lZCBvZmZzZXQsIGNvbnN0IFN0cmluZyYpOwogCiBwcml2
YXRlOgogICAgIERvY3VtZW50KiBtX2RvY3VtZW50OwpAQCAtMTg1LDggKzE4NSw4IEBAIGlubGlu
ZSB2b2lkIEFYT2JqZWN0Q2FjaGU6OnNlbGVjdGVkQ2hpbGRyZW5DaGFuZ2VkKFJlbmRlck9iamVj
dCopIHsgfQogaW5saW5lIHZvaWQgQVhPYmplY3RDYWNoZTo6cG9zdE5vdGlmaWNhdGlvbihSZW5k
ZXJPYmplY3QqLCBBWE5vdGlmaWNhdGlvbiwgYm9vbCBwb3N0VG9FbGVtZW50LCBQb3N0VHlwZSkg
eyB9CiBpbmxpbmUgdm9pZCBBWE9iamVjdENhY2hlOjpwb3N0Tm90aWZpY2F0aW9uKEFjY2Vzc2li
aWxpdHlPYmplY3QqLCBEb2N1bWVudCosIEFYTm90aWZpY2F0aW9uLCBib29sIHBvc3RUb0VsZW1l
bnQsIFBvc3RUeXBlKSB7IH0KIGlubGluZSB2b2lkIEFYT2JqZWN0Q2FjaGU6OnBvc3RQbGF0Zm9y
bU5vdGlmaWNhdGlvbihBY2Nlc3NpYmlsaXR5T2JqZWN0KiwgQVhOb3RpZmljYXRpb24pIHsgfQot
aW5saW5lIHZvaWQgQVhPYmplY3RDYWNoZTo6bm9kZVRleHRDaGFuZ2VOb3RpZmljYXRpb24oUmVu
ZGVyT2JqZWN0KiwgQVhUZXh0Q2hhbmdlLCB1bnNpZ25lZCwgdW5zaWduZWQpIHsgfQotaW5saW5l
IHZvaWQgQVhPYmplY3RDYWNoZTo6bm9kZVRleHRDaGFuZ2VQbGF0Zm9ybU5vdGlmaWNhdGlvbihB
Y2Nlc3NpYmlsaXR5T2JqZWN0KiwgQVhUZXh0Q2hhbmdlLCB1bnNpZ25lZCwgdW5zaWduZWQpIHsg
fQoraW5saW5lIHZvaWQgQVhPYmplY3RDYWNoZTo6bm9kZVRleHRDaGFuZ2VOb3RpZmljYXRpb24o
UmVuZGVyT2JqZWN0KiwgQVhUZXh0Q2hhbmdlLCB1bnNpZ25lZCwgY29uc3QgU3RyaW5nJikgeyB9
CitpbmxpbmUgdm9pZCBBWE9iamVjdENhY2hlOjpub2RlVGV4dENoYW5nZVBsYXRmb3JtTm90aWZp
Y2F0aW9uKEFjY2Vzc2liaWxpdHlPYmplY3QqLCBBWFRleHRDaGFuZ2UsIHVuc2lnbmVkLCBjb25z
dCBTdHJpbmcmKSB7IH0KIGlubGluZSB2b2lkIEFYT2JqZWN0Q2FjaGU6OmhhbmRsZUZvY3VzZWRV
SUVsZW1lbnRDaGFuZ2VkKFJlbmRlck9iamVjdCosIFJlbmRlck9iamVjdCopIHsgfQogaW5saW5l
IHZvaWQgQVhPYmplY3RDYWNoZTo6aGFuZGxlU2Nyb2xsZWRUb0FuY2hvcihjb25zdCBOb2RlKikg
eyB9CiBpbmxpbmUgdm9pZCBBWE9iamVjdENhY2hlOjpjb250ZW50Q2hhbmdlZChSZW5kZXJPYmpl
Y3QqKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvY2hyb21p
dW0vQVhPYmplY3RDYWNoZUNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvY2hyb21pdW0vQVhPYmplY3RDYWNoZUNocm9taXVtLmNwcAppbmRleCAzYmNkNjUyLi5mN2M1
MzYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2Nocm9taXVtL0FY
T2JqZWN0Q2FjaGVDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9jaHJvbWl1bS9BWE9iamVjdENhY2hlQ2hyb21pdW0uY3BwCkBAIC0xMDMsNyArMTAzLDcgQEAg
dm9pZCBBWE9iamVjdENhY2hlOjpwb3N0UGxhdGZvcm1Ob3RpZmljYXRpb24oQWNjZXNzaWJpbGl0
eU9iamVjdCogb2JqLCBBWE5vdGlmaWMKICAgICBjbGllbnQtPnBvc3RBY2Nlc3NpYmlsaXR5Tm90
aWZpY2F0aW9uKG9iaiwgbm90aWZpY2F0aW9uKTsgICAgICAgIAogfQogCi12b2lkIEFYT2JqZWN0
Q2FjaGU6Om5vZGVUZXh0Q2hhbmdlUGxhdGZvcm1Ob3RpZmljYXRpb24oQWNjZXNzaWJpbGl0eU9i
amVjdCosIEFYVGV4dENoYW5nZSwgdW5zaWduZWQsIHVuc2lnbmVkKQordm9pZCBBWE9iamVjdENh
Y2hlOjpub2RlVGV4dENoYW5nZVBsYXRmb3JtTm90aWZpY2F0aW9uKEFjY2Vzc2liaWxpdHlPYmpl
Y3QqLCBBWFRleHRDaGFuZ2UsIHVuc2lnbmVkLCBjb25zdCBTdHJpbmcmKQogewogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2d0ay9BWE9iamVjdENhY2hlQXRr
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvZ3RrL0FYT2JqZWN0Q2FjaGVBdGsu
Y3BwCmluZGV4IDlhZWM3YWEuLjEyMGQ3NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvZ3RrL0FYT2JqZWN0Q2FjaGVBdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvZ3RrL0FYT2JqZWN0Q2FjaGVBdGsuY3BwCkBAIC0xNTgsOSArMTU4LDgg
QEAgdm9pZCBBWE9iamVjdENhY2hlOjpwb3N0UGxhdGZvcm1Ob3RpZmljYXRpb24oQWNjZXNzaWJp
bGl0eU9iamVjdCogY29yZU9iamVjdCwgQVgKICAgICB9CiB9CiAKLXN0YXRpYyB2b2lkIGVtaXRU
ZXh0Q2hhbmdlZChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmplY3QsIEFYT2JqZWN0Q2FjaGU6OkFY
VGV4dENoYW5nZSB0ZXh0Q2hhbmdlLCB1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGNvdW50KQor
c3RhdGljIHZvaWQgZW1pdFRleHRDaGFuZ2VkKEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iamVjdCwg
QVhPYmplY3RDYWNoZTo6QVhUZXh0Q2hhbmdlIHRleHRDaGFuZ2UsIHVuc2lnbmVkIG9mZnNldCwg
Y29uc3QgU3RyaW5nJiB0ZXh0KQogewotICAgIC8vIEdldCB0aGUgYXhPYmplY3QgZm9yIHRoZSBw
YXJlbnQgb2JqZWN0CiAgICAgQXRrT2JqZWN0KiB3cmFwcGVyID0gb2JqZWN0LT5wYXJlbnRPYmpl
Y3RVbmlnbm9yZWQoKS0+d3JhcHBlcigpOwogICAgIGlmICghd3JhcHBlciB8fCAhQVRLX0lTX1RF
WFQod3JhcHBlcikpCiAgICAgICAgIHJldHVybjsKQEAgLTE2OSwyNiArMTY4LDI2IEBAIHN0YXRp
YyB2b2lkIGVtaXRUZXh0Q2hhbmdlZChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmplY3QsIEFYT2Jq
ZWN0Q2FjaGU6OkFYVGV4dENoCiAgICAgQ1N0cmluZyBkZXRhaWw7CiAgICAgc3dpdGNoICh0ZXh0
Q2hhbmdlKSB7CiAgICAgY2FzZSBBWE9iamVjdENhY2hlOjpBWFRleHRJbnNlcnRlZDoKLSAgICAg
ICAgZGV0YWlsID0gInRleHQtY2hhbmdlZDo6aW5zZXJ0IjsKKyAgICAgICAgZGV0YWlsID0gInRl
eHQtaW5zZXJ0IjsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBWE9iamVjdENhY2hlOjpBWFRl
eHREZWxldGVkOgotICAgICAgICBkZXRhaWwgPSAidGV4dC1jaGFuZ2VkOjpkZWxldGUiOworICAg
ICAgICBkZXRhaWwgPSAidGV4dC1yZW1vdmUiOwogICAgICAgICBicmVhazsKICAgICB9CiAKICAg
ICBpZiAoIWRldGFpbC5pc051bGwoKSkKLSAgICAgICAgZ19zaWduYWxfZW1pdF9ieV9uYW1lKHdy
YXBwZXIsIGRldGFpbC5kYXRhKCksIG9mZnNldCwgY291bnQpOworICAgICAgICBnX3NpZ25hbF9l
bWl0X2J5X25hbWUod3JhcHBlciwgZGV0YWlsLmRhdGEoKSwgb2Zmc2V0LCB0ZXh0Lmxlbmd0aCgp
LCB0ZXh0LnV0ZjgoKS5kYXRhKCkpOwogfQogCi12b2lkIEFYT2JqZWN0Q2FjaGU6Om5vZGVUZXh0
Q2hhbmdlUGxhdGZvcm1Ob3RpZmljYXRpb24oQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqZWN0LCBB
WFRleHRDaGFuZ2UgdGV4dENoYW5nZSwgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBjb3VudCkK
K3ZvaWQgQVhPYmplY3RDYWNoZTo6bm9kZVRleHRDaGFuZ2VQbGF0Zm9ybU5vdGlmaWNhdGlvbihB
Y2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmplY3QsIEFYVGV4dENoYW5nZSB0ZXh0Q2hhbmdlLCB1bnNp
Z25lZCBvZmZzZXQsIGNvbnN0IFN0cmluZyYgdGV4dCkKIHsKICAgICAvLyBTYW5pdHkgY2hlY2sK
LSAgICBpZiAoY291bnQgPCAxIHx8ICFvYmplY3QgfHwgIW9iamVjdC0+aXNBY2Nlc3NpYmlsaXR5
UmVuZGVyT2JqZWN0KCkpCisgICAgaWYgKCFvYmplY3QgfHwgIW9iamVjdC0+aXNBY2Nlc3NpYmls
aXR5UmVuZGVyT2JqZWN0KCkgfHwgdGV4dC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAog
ICAgIE5vZGUqIG5vZGUgPSBvYmplY3QtPm5vZGUoKTsKICAgICBSZWZQdHI8UmFuZ2U+IHJhbmdl
ID0gUmFuZ2U6OmNyZWF0ZShub2RlLT5kb2N1bWVudCgpLCBub2RlLT5wYXJlbnROb2RlKCksIDAs
IG5vZGUsIDApOwotICAgIGVtaXRUZXh0Q2hhbmdlZChvYmplY3QsIHRleHRDaGFuZ2UsIG9mZnNl
dCArIFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgocmFuZ2UuZ2V0KCkpLCBjb3VudCk7CisgICAg
ZW1pdFRleHRDaGFuZ2VkKG9iamVjdCwgdGV4dENoYW5nZSwgb2Zmc2V0ICsgVGV4dEl0ZXJhdG9y
OjpyYW5nZUxlbmd0aChyYW5nZS5nZXQoKSksIHRleHQpOwogfQogCiB2b2lkIEFYT2JqZWN0Q2Fj
aGU6OmhhbmRsZUZvY3VzZWRVSUVsZW1lbnRDaGFuZ2VkKFJlbmRlck9iamVjdCogb2xkRm9jdXNl
ZFJlbmRlciwgUmVuZGVyT2JqZWN0KiBuZXdGb2N1c2VkUmVuZGVyKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvQVhPYmplY3RDYWNoZU1hYy5tbSBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL0FYT2JqZWN0Q2FjaGVNYWMubW0KaW5kZXggZWNh
NTQ1Yy4uNmE4Y2ZhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9t
YWMvQVhPYmplY3RDYWNoZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L21hYy9BWE9iamVjdENhY2hlTWFjLm1tCkBAIC0xMjgsNyArMTI4LDcgQEAgdm9pZCBBWE9iamVj
dENhY2hlOjpwb3N0UGxhdGZvcm1Ob3RpZmljYXRpb24oQWNjZXNzaWJpbGl0eU9iamVjdCogb2Jq
LCBBWE5vdGlmaWMKICAgICBbb2JqLT53cmFwcGVyKCkgYWNjZXNzaWJpbGl0eVBvc3RlZE5vdGlm
aWNhdGlvbjptYWNOb3RpZmljYXRpb25dOwogfQogCi12b2lkIEFYT2JqZWN0Q2FjaGU6Om5vZGVU
ZXh0Q2hhbmdlUGxhdGZvcm1Ob3RpZmljYXRpb24oQWNjZXNzaWJpbGl0eU9iamVjdCosIEFYVGV4
dENoYW5nZSwgdW5zaWduZWQsIHVuc2lnbmVkKQordm9pZCBBWE9iamVjdENhY2hlOjpub2RlVGV4
dENoYW5nZVBsYXRmb3JtTm90aWZpY2F0aW9uKEFjY2Vzc2liaWxpdHlPYmplY3QqLCBBWFRleHRD
aGFuZ2UsIHVuc2lnbmVkLCBjb25zdCBTdHJpbmcmKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L3dpbi9BWE9iamVjdENhY2hlV2luLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvd2luL0FYT2JqZWN0Q2FjaGVXaW4uY3BwCmluZGV4IDRl
MDJjMjEuLjJkYjA4YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
d2luL0FYT2JqZWN0Q2FjaGVXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvd2luL0FYT2JqZWN0Q2FjaGVXaW4uY3BwCkBAIC0xMDcsNyArMTA3LDcgQEAgdm9pZCBBWE9i
amVjdENhY2hlOjpwb3N0UGxhdGZvcm1Ob3RpZmljYXRpb24oQWNjZXNzaWJpbGl0eU9iamVjdCog
b2JqLCBBWE5vdGlmaWMKICAgICBOb3RpZnlXaW5FdmVudChtc2FhRXZlbnQsIHBhZ2UtPmNocm9t
ZSgpLT5wbGF0Zm9ybVBhZ2VDbGllbnQoKSwgT0JKSURfQ0xJRU5ULCAtc3RhdGljX2Nhc3Q8TE9O
Rz4ob2JqLT5heE9iamVjdElEKCkpKTsKIH0KIAotdm9pZCBBWE9iamVjdENhY2hlOjpub2RlVGV4
dENoYW5nZVBsYXRmb3JtTm90aWZpY2F0aW9uKEFjY2Vzc2liaWxpdHlPYmplY3QqLCBBWFRleHRD
aGFuZ2UsIHVuc2lnbmVkLCB1bnNpZ25lZCkKK3ZvaWQgQVhPYmplY3RDYWNoZTo6bm9kZVRleHRD
aGFuZ2VQbGF0Zm9ybU5vdGlmaWNhdGlvbihBY2Nlc3NpYmlsaXR5T2JqZWN0KiwgQVhUZXh0Q2hh
bmdlLCB1bnNpZ25lZCwgY29uc3QgU3RyaW5nJikKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9BcHBlbmROb2RlQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0FwcGVuZE5vZGVDb21tYW5kLmNwcAppbmRleCBlM2YzNGUwLi5jNGM4ZGIwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGVuZE5vZGVDb21tYW5kLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGVuZE5vZGVDb21tYW5kLmNwcApAQCAtNDcsMTIg
KzQ3LDExIEBAIEFwcGVuZE5vZGVDb21tYW5kOjpBcHBlbmROb2RlQ29tbWFuZChQYXNzUmVmUHRy
PENvbnRhaW5lck5vZGU+IHBhcmVudCwgUGFzc1JlZlB0CiBzdGF0aWMgdm9pZCBzZW5kQVhUZXh0
Q2hhbmdlZElnbm9yaW5nTGluZUJyZWFrcyhOb2RlKiBub2RlLCBBWE9iamVjdENhY2hlOjpBWFRl
eHRDaGFuZ2UgdGV4dENoYW5nZSkKIHsKICAgICBTdHJpbmcgbm9kZVZhbHVlID0gbm9kZS0+bm9k
ZVZhbHVlKCk7Ci0gICAgdW5zaWduZWQgbGVuID0gbm9kZVZhbHVlLmxlbmd0aCgpOwogICAgIC8v
IERvbid0IGNvbnNpZGVyIGxpbmVicmVha3MgaW4gdGhpcyBjb21tYW5kCiAgICAgaWYgKG5vZGVW
YWx1ZSA9PSAiXG4iKQogICAgICAgcmV0dXJuOwogCi0gICAgbm9kZS0+ZG9jdW1lbnQoKS0+YXhP
YmplY3RDYWNoZSgpLT5ub2RlVGV4dENoYW5nZU5vdGlmaWNhdGlvbihub2RlLT5yZW5kZXJlcigp
LCB0ZXh0Q2hhbmdlLCAwLCBsZW4pOworICAgIG5vZGUtPmRvY3VtZW50KCktPmF4T2JqZWN0Q2Fj
aGUoKS0+bm9kZVRleHRDaGFuZ2VOb3RpZmljYXRpb24obm9kZS0+cmVuZGVyZXIoKSwgdGV4dENo
YW5nZSwgMCwgbm9kZVZhbHVlKTsKIH0KIAogdm9pZCBBcHBlbmROb2RlQ29tbWFuZDo6ZG9BcHBs
eSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZUZyb21UZXh0Tm9k
ZUNvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9EZWxldGVGcm9tVGV4dE5vZGVD
b21tYW5kLmNwcAppbmRleCAxYjRlMDlkLi44MjgyMDUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0RlbGV0ZUZyb21UZXh0Tm9kZUNvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvRGVsZXRlRnJvbVRleHROb2RlQ29tbWFuZC5jcHAKQEAgLTU3LDcgKzU3
LDcgQEAgdm9pZCBEZWxldGVGcm9tVGV4dE5vZGVDb21tYW5kOjpkb0FwcGx5KCkKICAgICAKICAg
ICAvLyBOZWVkIHRvIG5vdGlmeSB0aGlzIGJlZm9yZSBhY3R1YWxseSBkZWxldGluZyB0aGUgdGV4
dAogICAgIGlmIChBWE9iamVjdENhY2hlOjphY2Nlc3NpYmlsaXR5RW5hYmxlZCgpKQotICAgICAg
ICBkb2N1bWVudCgpLT5heE9iamVjdENhY2hlKCktPm5vZGVUZXh0Q2hhbmdlTm90aWZpY2F0aW9u
KG1fbm9kZS0+cmVuZGVyZXIoKSwgQVhPYmplY3RDYWNoZTo6QVhUZXh0RGVsZXRlZCwgbV9vZmZz
ZXQsIG1fY291bnQpOworICAgICAgICBkb2N1bWVudCgpLT5heE9iamVjdENhY2hlKCktPm5vZGVU
ZXh0Q2hhbmdlTm90aWZpY2F0aW9uKG1fbm9kZS0+cmVuZGVyZXIoKSwgQVhPYmplY3RDYWNoZTo6
QVhUZXh0RGVsZXRlZCwgbV9vZmZzZXQsIG1fdGV4dCk7CiAKICAgICBtX25vZGUtPmRlbGV0ZURh
dGEobV9vZmZzZXQsIG1fY291bnQsIGVjKTsKIH0KQEAgLTczLDcgKzczLDcgQEAgdm9pZCBEZWxl
dGVGcm9tVGV4dE5vZGVDb21tYW5kOjpkb1VuYXBwbHkoKQogICAgIG1fbm9kZS0+aW5zZXJ0RGF0
YShtX29mZnNldCwgbV90ZXh0LCBlYyk7CiAKICAgICBpZiAoQVhPYmplY3RDYWNoZTo6YWNjZXNz
aWJpbGl0eUVuYWJsZWQoKSkKLSAgICAgICAgZG9jdW1lbnQoKS0+YXhPYmplY3RDYWNoZSgpLT5u
b2RlVGV4dENoYW5nZU5vdGlmaWNhdGlvbihtX25vZGUtPnJlbmRlcmVyKCksIEFYT2JqZWN0Q2Fj
aGU6OkFYVGV4dEluc2VydGVkLCBtX29mZnNldCwgbV9jb3VudCk7CisgICAgICAgIGRvY3VtZW50
KCktPmF4T2JqZWN0Q2FjaGUoKS0+bm9kZVRleHRDaGFuZ2VOb3RpZmljYXRpb24obV9ub2RlLT5y
ZW5kZXJlcigpLCBBWE9iamVjdENhY2hlOjpBWFRleHRJbnNlcnRlZCwgbV9vZmZzZXQsIG1fdGV4
dCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvSW5zZXJ0SW50b1RleHROb2RlQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0luc2VydEludG9UZXh0Tm9kZUNvbW1hbmQuY3BwCmluZGV4IDY4ODIzYjAuLmM3
MmM4NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0SW50b1RleHRO
b2RlQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRJbnRvVGV4
dE5vZGVDb21tYW5kLmNwcApAQCAtNjAsNyArNjAsNyBAQCB2b2lkIEluc2VydEludG9UZXh0Tm9k
ZUNvbW1hbmQ6OmRvQXBwbHkoKQogICAgIG1fbm9kZS0+aW5zZXJ0RGF0YShtX29mZnNldCwgbV90
ZXh0LCBlYyk7CiAKICAgICBpZiAoQVhPYmplY3RDYWNoZTo6YWNjZXNzaWJpbGl0eUVuYWJsZWQo
KSkKLSAgICAgICAgZG9jdW1lbnQoKS0+YXhPYmplY3RDYWNoZSgpLT5ub2RlVGV4dENoYW5nZU5v
dGlmaWNhdGlvbihtX25vZGUtPnJlbmRlcmVyKCksIEFYT2JqZWN0Q2FjaGU6OkFYVGV4dEluc2Vy
dGVkLCBtX29mZnNldCwgbV90ZXh0Lmxlbmd0aCgpKTsKKyAgICAgICAgZG9jdW1lbnQoKS0+YXhP
YmplY3RDYWNoZSgpLT5ub2RlVGV4dENoYW5nZU5vdGlmaWNhdGlvbihtX25vZGUtPnJlbmRlcmVy
KCksIEFYT2JqZWN0Q2FjaGU6OkFYVGV4dEluc2VydGVkLCBtX29mZnNldCwgbV90ZXh0KTsKIH0K
IAogdm9pZCBJbnNlcnRJbnRvVGV4dE5vZGVDb21tYW5kOjpkb1VuYXBwbHkoKQpAQCAtNzAsNyAr
NzAsNyBAQCB2b2lkIEluc2VydEludG9UZXh0Tm9kZUNvbW1hbmQ6OmRvVW5hcHBseSgpCiAgICAg
ICAgIAogICAgIC8vIE5lZWQgdG8gbm90aWZ5IHRoaXMgYmVmb3JlIGFjdHVhbGx5IGRlbGV0aW5n
IHRoZSB0ZXh0CiAgICAgaWYgKEFYT2JqZWN0Q2FjaGU6OmFjY2Vzc2liaWxpdHlFbmFibGVkKCkp
Ci0gICAgICAgIGRvY3VtZW50KCktPmF4T2JqZWN0Q2FjaGUoKS0+bm9kZVRleHRDaGFuZ2VOb3Rp
ZmljYXRpb24obV9ub2RlLT5yZW5kZXJlcigpLCBBWE9iamVjdENhY2hlOjpBWFRleHREZWxldGVk
LCBtX29mZnNldCwgbV90ZXh0Lmxlbmd0aCgpKTsKKyAgICAgICAgZG9jdW1lbnQoKS0+YXhPYmpl
Y3RDYWNoZSgpLT5ub2RlVGV4dENoYW5nZU5vdGlmaWNhdGlvbihtX25vZGUtPnJlbmRlcmVyKCks
IEFYT2JqZWN0Q2FjaGU6OkFYVGV4dERlbGV0ZWQsIG1fb2Zmc2V0LCBtX3RleHQpOwogCiAgICAg
RXhjZXB0aW9uQ29kZSBlYzsKICAgICBtX25vZGUtPmRlbGV0ZURhdGEobV9vZmZzZXQsIG1fdGV4
dC5sZW5ndGgoKSwgZWMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9JbnNl
cnROb2RlQmVmb3JlQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luc2VydE5v
ZGVCZWZvcmVDb21tYW5kLmNwcAppbmRleCAzMDhlMGVkLi45ZmYyOWIyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luc2VydE5vZGVCZWZvcmVDb21tYW5kLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luc2VydE5vZGVCZWZvcmVDb21tYW5kLmNwcApAQCAtNTUs
NyArNTUsNyBAQCB2b2lkIEluc2VydE5vZGVCZWZvcmVDb21tYW5kOjpkb0FwcGx5KCkKICAgICBw
YXJlbnQtPmluc2VydEJlZm9yZShtX2luc2VydENoaWxkLmdldCgpLCBtX3JlZkNoaWxkLmdldCgp
LCBlYyk7CiAKICAgICBpZiAoQVhPYmplY3RDYWNoZTo6YWNjZXNzaWJpbGl0eUVuYWJsZWQoKSkK
LSAgICAgICAgZG9jdW1lbnQoKS0+YXhPYmplY3RDYWNoZSgpLT5ub2RlVGV4dENoYW5nZU5vdGlm
aWNhdGlvbihtX2luc2VydENoaWxkLT5yZW5kZXJlcigpLCBBWE9iamVjdENhY2hlOjpBWFRleHRJ
bnNlcnRlZCwgMCwgbV9pbnNlcnRDaGlsZC0+bm9kZVZhbHVlKCkubGVuZ3RoKCkpOworICAgICAg
ICBkb2N1bWVudCgpLT5heE9iamVjdENhY2hlKCktPm5vZGVUZXh0Q2hhbmdlTm90aWZpY2F0aW9u
KG1faW5zZXJ0Q2hpbGQtPnJlbmRlcmVyKCksIEFYT2JqZWN0Q2FjaGU6OkFYVGV4dEluc2VydGVk
LCAwLCBtX2luc2VydENoaWxkLT5ub2RlVmFsdWUoKSk7CiB9CiAKIHZvaWQgSW5zZXJ0Tm9kZUJl
Zm9yZUNvbW1hbmQ6OmRvVW5hcHBseSgpCkBAIC02NSw3ICs2NSw3IEBAIHZvaWQgSW5zZXJ0Tm9k
ZUJlZm9yZUNvbW1hbmQ6OmRvVW5hcHBseSgpCiAgICAgICAgIAogICAgIC8vIE5lZWQgdG8gbm90
aWZ5IHRoaXMgYmVmb3JlIGFjdHVhbGx5IGRlbGV0aW5nIHRoZSB0ZXh0CiAgICAgaWYgKEFYT2Jq
ZWN0Q2FjaGU6OmFjY2Vzc2liaWxpdHlFbmFibGVkKCkpCi0gICAgICAgIGRvY3VtZW50KCktPmF4
T2JqZWN0Q2FjaGUoKS0+bm9kZVRleHRDaGFuZ2VOb3RpZmljYXRpb24obV9pbnNlcnRDaGlsZC0+
cmVuZGVyZXIoKSwgQVhPYmplY3RDYWNoZTo6QVhUZXh0RGVsZXRlZCwgMCwgbV9pbnNlcnRDaGls
ZC0+bm9kZVZhbHVlKCkubGVuZ3RoKCkpOworICAgICAgICBkb2N1bWVudCgpLT5heE9iamVjdENh
Y2hlKCktPm5vZGVUZXh0Q2hhbmdlTm90aWZpY2F0aW9uKG1faW5zZXJ0Q2hpbGQtPnJlbmRlcmVy
KCksIEFYT2JqZWN0Q2FjaGU6OkFYVGV4dERlbGV0ZWQsIDAsIG1faW5zZXJ0Q2hpbGQtPm5vZGVW
YWx1ZSgpKTsKIAogICAgIEV4Y2VwdGlvbkNvZGUgZWM7CiAgICAgbV9pbnNlcnRDaGlsZC0+cmVt
b3ZlKGVjKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwppbmRleCBiZWI0NjkzLi4xZmJiOTFjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9ndGsvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTEtMTEtMjUgIE1hcmlvIFNhbmNoZXogUHJhZGEg
IDxtc2FuY2hlekBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHdGtdIFJlZ3Jlc3Npb246IHRleHQt
aW5zZXJ0ZWQgZXZlbnRzIGxhY2sgdGV4dCBpbnNlcnRlZCBhbmQgY3VycmVudCBsaW5lCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MjgzMAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZWQgdW5pdCB0
ZXN0IHRvIGhhbmRsZSB0aGUgbmV3ICd0ZXh0LWluc2VydCcgYW5kCisgICAgICAgICd0ZXh0LXJl
bW92ZScgc2lnbmFscywgaW5zdGVhZCBvZiB0aGUgJ3RleHQtY2hhbmdlZCcgb25lLgorCisgICAg
ICAgICogdGVzdHMvdGVzdGF0ay5jOgorICAgICAgICAodGV4dENoYW5nZWRDYik6IFVwZGF0ZSBh
IGdsb2JhbCB2YXJpYWJsZSB3aXRoIHRoZSByZXN1bHQgb2YgdGhlCisgICAgICAgIHRleHQgY2hh
bmdlLCBzbyB3ZSBjYW4gY2hlY2sgaXRzIHZhbHVlIGxhdGVyLgorICAgICAgICAodGVzdFdlYmtp
dEF0a1RleHRDaGFuZ2VkTm90aWZpY2F0aW9ucyk6IENvbm5lY3QgdG8gdGhlCisgICAgICAgICd0
ZXh0LWluc2VydCcgYW5kICd0ZXh0LXJlbW92ZScgc2lnbmFscyBhbmQgY2hlY2ssIGluIGEgd2F5
IG1vcmUKKyAgICAgICAgY2FyZWZ1bGx5IHdheSB0aGFuIGl0IHdhcyBkb25lIGJlZm9yZSwgdGhh
dCB0aGUgc2lnbmFscyBhcmUgYmVpbmcKKyAgICAgICAgcHJvcGVybHkgZW1pdHRlZCwgYW5kIHRo
YXQgdGhlIGluZm9ybWF0aW9uIGF0dGFjaGVkIHRvIHRoZW0gaXMgdGhlCisgICAgICAgIHJpZ2h0
IG9uZSBmb3IgZWFjaCBjYXNlIChpbnNlcnQvcmVtb3ZlLCBvZmZzZXQsIGNvdW50IGFuZCB0ZXh0
KS4KKwogMjAxMS0xMS0yMSAgWXV0YSBLaXRhbXVyYSAgPHl1dGFrQGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBbR1RLXSBFbmFibGUgV2ViU29ja2V0IGh5YmkgdGVzdHMKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvZ3RrL3Rlc3RzL3Rlc3RhdGsuYyBiL1NvdXJjZS9XZWJLaXQvZ3RrL3Rlc3Rz
L3Rlc3RhdGsuYwppbmRleCAwNTRkYzUyLi5hN2NjNzhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2d0ay90ZXN0cy90ZXN0YXRrLmMKKysrIGIvU291cmNlL1dlYktpdC9ndGsvdGVzdHMvdGVz
dGF0ay5jCkBAIC0xNTQ4LDI0ICsxNTQ4LDIwIEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJraXRBdGtM
aXN0c09mSXRlbXMoKQogICAgIGdfb2JqZWN0X3VucmVmKHdlYlZpZXcpOwogfQogCi1zdGF0aWMg
Z2Jvb2xlYW4gdGV4dEluc2VydGVkID0gRkFMU0U7Ci1zdGF0aWMgZ2Jvb2xlYW4gdGV4dERlbGV0
ZWQgPSBGQUxTRTsKK3R5cGVkZWYgZW51bSB7CisgIFRFWFRfQ0hBTkdFX0lOU0VSVCA9IDEsCisg
IFRFWFRfQ0hBTkdFX1JFTU9WRSA9IDIKK30gVGV4dENoYW5nZVR5cGU7CiAKLXN0YXRpYyB2b2lk
IHRleHRDaGFuZ2VkQ2IoQXRrVGV4dCogdGV4dCwgZ2ludCBwb3MsIGdpbnQgbGVuLCBjb25zdCBn
Y2hhciogZGV0YWlsKQorc3RhdGljIGdjaGFyKiB0ZXh0Q2hhbmdlZFJlc3VsdCA9IDA7CisKK3N0
YXRpYyB2b2lkIHRleHRDaGFuZ2VkQ2IoQXRrVGV4dCogdGV4dCwgZ2ludCBwb3MsIGdpbnQgbGVu
LCBnY2hhciogbW9kaWZpZWRUZXh0LCBncG9pbnRlciBkYXRhKQogewogICAgIGdfYXNzZXJ0KHRl
eHQgJiYgQVRLX0lTX09CSkVDVCh0ZXh0KSk7CiAKLSAgICBpZiAoIWdfc3RyY21wMChkZXRhaWws
ICJpbnNlcnQiKSkKLSAgICAgICAgdGV4dEluc2VydGVkID0gVFJVRTsKLSAgICBlbHNlIGlmICgh
Z19zdHJjbXAwKGRldGFpbCwgImRlbGV0ZSIpKQotICAgICAgICB0ZXh0RGVsZXRlZCA9IFRSVUU7
Ci19Ci0KLXN0YXRpYyBnYm9vbGVhbiBjaGVja1RleHRDaGFuZ2VzKGdwb2ludGVyIHVudXNlZCkK
LXsKLSAgICBnX2Fzc2VydF9jbXBpbnQodGV4dEluc2VydGVkLCA9PSwgVFJVRSk7Ci0gICAgZ19h
c3NlcnRfY21waW50KHRleHREZWxldGVkLCA9PSwgVFJVRSk7Ci0gICAgcmV0dXJuIEZBTFNFOwor
ICAgIFRleHRDaGFuZ2VUeXBlIHR5cGUgPSBHUE9JTlRFUl9UT19JTlQoZGF0YSk7CisgICAgZ19m
cmVlKHRleHRDaGFuZ2VkUmVzdWx0KTsKKyAgICB0ZXh0Q2hhbmdlZFJlc3VsdCA9IGdfc3RyZHVw
X3ByaW50ZigifCVkfCVkfCVkfCclcyd8IiwgdHlwZSwgcG9zLCBsZW4sIG1vZGlmaWVkVGV4dCk7
CiB9CiAKIHN0YXRpYyB2b2lkIHRlc3RXZWJraXRBdGtUZXh0Q2hhbmdlZE5vdGlmaWNhdGlvbnMo
KQpAQCAtMTU4NiwyMCArMTU4MiwzNCBAQCBzdGF0aWMgdm9pZCB0ZXN0V2Via2l0QXRrVGV4dENo
YW5nZWROb3RpZmljYXRpb25zKCkKICAgICBnX2Fzc2VydChBVEtfSVNfRURJVEFCTEVfVEVYVCh0
ZXh0RW50cnkpKTsKICAgICBnX2Fzc2VydChhdGtfb2JqZWN0X2dldF9yb2xlKEFUS19PQkpFQ1Qo
dGV4dEVudHJ5KSkgPT0gQVRLX1JPTEVfRU5UUlkpOwogCi0gICAgZ19zaWduYWxfY29ubmVjdCh0
ZXh0RW50cnksICJ0ZXh0LWNoYW5nZWQ6Omluc2VydCIsCisgICAgZ19zaWduYWxfY29ubmVjdCh0
ZXh0RW50cnksICJ0ZXh0LWluc2VydCIsCiAgICAgICAgICAgICAgICAgICAgICBHX0NBTExCQUNL
KHRleHRDaGFuZ2VkQ2IpLAotICAgICAgICAgICAgICAgICAgICAgKGdwb2ludGVyKSJpbnNlcnQi
KTsKLSAgICBnX3NpZ25hbF9jb25uZWN0KHRleHRFbnRyeSwgInRleHQtY2hhbmdlZDo6ZGVsZXRl
IiwKKyAgICAgICAgICAgICAgICAgICAgIEdJTlRfVE9fUE9JTlRFUihURVhUX0NIQU5HRV9JTlNF
UlQpKTsKKyAgICBnX3NpZ25hbF9jb25uZWN0KHRleHRFbnRyeSwgInRleHQtcmVtb3ZlIiwKICAg
ICAgICAgICAgICAgICAgICAgIEdfQ0FMTEJBQ0sodGV4dENoYW5nZWRDYiksCi0gICAgICAgICAg
ICAgICAgICAgICAoZ3BvaW50ZXIpImRlbGV0ZSIpOworICAgICAgICAgICAgICAgICAgICAgR0lO
VF9UT19QT0lOVEVSKFRFWFRfQ0hBTkdFX1JFTU9WRSkpOwogCiAgICAgZ2ludCBwb3MgPSAwOwog
ICAgIGF0a19lZGl0YWJsZV90ZXh0X2luc2VydF90ZXh0KEFUS19FRElUQUJMRV9URVhUKHRleHRF
bnRyeSksICJmb28gYmFyIGJheiIsIDExLCAmcG9zKTsKKyAgICBjaGFyKiB0ZXh0ID0gYXRrX3Rl
eHRfZ2V0X3RleHQoQVRLX1RFWFQodGV4dEVudHJ5KSwgMCwgLTEpOworICAgIGdfYXNzZXJ0X2Nt
cHN0cih0ZXh0LCA9PSwgImZvbyBiYXIgYmF6Iik7CisgICAgZ19hc3NlcnRfY21wc3RyKHRleHRD
aGFuZ2VkUmVzdWx0LCA9PSwgInwxfDB8MTF8J2ZvbyBiYXIgYmF6J3wiKTsKKyAgICBnX2ZyZWUo
dGV4dCk7CisKICAgICBhdGtfZWRpdGFibGVfdGV4dF9kZWxldGVfdGV4dChBVEtfRURJVEFCTEVf
VEVYVCh0ZXh0RW50cnkpLCA0LCA3KTsKLSAgICB0ZXh0SW5zZXJ0ZWQgPSBGQUxTRTsKLSAgICB0
ZXh0RGVsZXRlZCA9IEZBTFNFOworICAgIHRleHQgPSBhdGtfdGV4dF9nZXRfdGV4dChBVEtfVEVY
VCh0ZXh0RW50cnkpLCAwLCAtMSk7CisgICAgZ19hc3NlcnRfY21wc3RyKHRleHQsID09LCAiZm9v
ICBiYXoiKTsKKyAgICBnX2Fzc2VydF9jbXBzdHIodGV4dENoYW5nZWRSZXN1bHQsID09LCAifDJ8
NHwzfCdiYXInfCIpOworICAgIGdfZnJlZSh0ZXh0KTsKKworICAgIHBvcyA9IDQ7CisgICAgYXRr
X2VkaXRhYmxlX3RleHRfaW5zZXJ0X3RleHQoQVRLX0VESVRBQkxFX1RFWFQodGV4dEVudHJ5KSwg
InF1eCBxdXV4IiwgOCwgJnBvcyk7CisgICAgdGV4dCA9IGF0a190ZXh0X2dldF90ZXh0KEFUS19U
RVhUKHRleHRFbnRyeSksIDAsIC0xKTsKKyAgICBnX2Fzc2VydF9jbXBzdHIodGV4dCwgPT0sICJm
b28gcXV4IHF1dXggYmF6Iik7CisgICAgZ19hc3NlcnRfY21wc3RyKHRleHRDaGFuZ2VkUmVzdWx0
LCA9PSwgInwxfDR8OHwncXV4IHF1dXgnfCIpOworICAgIGdfZnJlZSh0ZXh0KTsKIAotICAgIGdf
aWRsZV9hZGQoKEdTb3VyY2VGdW5jKWNoZWNrVGV4dENoYW5nZXMsIDApOworICAgIGdfZnJlZSh0
ZXh0Q2hhbmdlZFJlc3VsdCk7CiAKICAgICBnX29iamVjdF91bnJlZihmb3JtKTsKICAgICBnX29i
amVjdF91bnJlZih0ZXh0RW50cnkpOwotLSAKMS43LjcuMwoK
</data>
<flag name="review"
          id="115832"
          type_id="1"
          status="+"
          setter="cfleizach"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>121274</attachid>
            <date>2012-01-05 07:38:25 -0800</date>
            <delta_ts>2012-01-09 02:13:45 -0800</delta_ts>
            <desc>Patch proposal for the remaining issues + updated unit tests</desc>
            <filename>0001-2012-01-05-Mario-Sanchez-Prada-msanchez-igalia.com.patch</filename>
            <type>text/plain</type>
            <size>18122</size>
            <attacher name="Mario Sanchez Prada">mario</attacher>
            
              <data encoding="base64">RnJvbSA3NjFiYWIwNGUxMjE4Y2NjN2Y5NDU5NDQyM2JhNzUxNWQ0YjgzZTRkIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXJpbyBTYW5jaGV6IFByYWRhIDxtc2FuY2hlekBpZ2FsaWEu
Y29tPgpEYXRlOiBXZWQsIDQgSmFuIDIwMTIgMTc6Mjg6MjcgKzAxMDAKU3ViamVjdDogW1BBVENI
XSAyMDEyLTAxLTA1ICBNYXJpbyBTYW5jaGV6IFByYWRhICA8bXNhbmNoZXpAaWdhbGlhLmNvbT4K
CiAgICAgICAgW0d0a10gUmVncmVzc2lvbjogdGV4dC1pbnNlcnRlZCBldmVudHMgbGFjayB0ZXh0
IGluc2VydGVkIGFuZCBjdXJyZW50IGxpbmUKICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NzI4MzAKCiAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCgogICAgICAgIEZpeCBpc3N1ZSBnZXR0aW5nIHRoZSBleHBvc2VkIHRleHQgZm9yIGFuIGFj
Y2Vzc2liaWxpdHkgb2JqZWN0IGF0LAogICAgICAgIGJlZm9yZSBvZiBhZnRlciBhIGdpdmVuIG9m
ZnNldCwgYWZ0ZXIgY2hhbmdpbmcgaXQgYXQgbGVhc3Qgb25jZS4KCiAgICAgICAgKiBhY2Nlc3Np
YmlsaXR5L2d0ay9BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckF0ay5jcHA6CiAgICAgICAgKHdl
YmtpdF9hY2Nlc3NpYmxlX2NsYXNzX2luaXQpOiBEb24ndCBpbml0aWFsaXplCiAgICAgICAgZ2Fp
bFRleHRVdGlsUXVhcmssIGl0IHdvbid0IGJlIHVzZWQgYW55bW9yZS4KICAgICAgICAoZ2V0R2Fp
bFRleHRVdGlsRm9yQXRrKTogRG9uJ3QgY2FjaGUgdGhlIEdhaWxUZXh0VXRpbCBhcyBvYmplY3QK
ICAgICAgICBkYXRhLCBidXQgY3JlYXRlIGEgbmV3IG9uZSBlYWNoIHRpbWUgdGhpcyBmdW5jdGlv
biBpcyBjYWxsZWQuCiAgICAgICAgKHdlYmtpdF9hY2Nlc3NpYmxlX3RleHRfZ2V0X2NhcmV0X29m
ZnNldCk6IFNpbXBsaWZpZWQgY29kZSBieQogICAgICAgIHVzaW5nIHRoZSBuZXcgZm9jdXNlZE9i
amVjdEFuZENhcmV0T2Zmc2V0VW5pZ25vcmVkIGZ1bmN0aW9uLAogICAgICAgIGluc3RlYWQgb2Yg
dGhlIG9sZCBvYmplY3RBbmRPZmZzZXRVbmlnbm9yZWQgZnVuY3Rpb24uCiAgICAgICAgKGZvY3Vz
ZWRPYmplY3RBbmRDYXJldE9mZnNldFVuaWdub3JlZCk6IFJld3JpdGUgb2YgdGhlIG9sZAogICAg
ICAgIG9iamVjdEFuZE9mZnNldFVuaWdub3JlZCBmdW5jdGlvbiBzbyBpdCBub3cgbmVlZHMgbGVz
cwogICAgICAgIHBhcmFtZXRlcnMgdGhhbiBiZWZvcmUgYW5kIHRha2VzIGNhcmUgb2YgY2FyZWZ1
bGx5IHNlbGVjdGluZyB0aGUKICAgICAgICBzdGFydCBhbmQgZW5kIHZpc2libGUgcG9zaXRpb25z
IHRvIGNhbGN1bGF0ZSB0aGUgcG9zaXRpb24gb2YgdGhlCiAgICAgICAgY2FyZXQgZnJvbSB0aGUg
cG9pbnQgb2YgdmlldyBvZiB0aGUgYWNjZXNzaWJpbGl0eSBvYmplY3Qgb2YKICAgICAgICByZWZl
cmVuY2UgcGFzc2VkIGFzIHRoZSBvbmx5IGlucHV0IHBhcmFtZXRlciBub3cuIFVwZGF0ZWQgY2Fs
bGVycy4KICAgICAgICAqIGFjY2Vzc2liaWxpdHkvZ3RrL0FjY2Vzc2liaWxpdHlPYmplY3RXcmFw
cGVyQXRrLmg6CgogICAgICAgICogZWRpdGluZy9ndGsvRnJhbWVTZWxlY3Rpb25HdGsuY3BwOgog
ICAgICAgIChXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6bm90aWZ5QWNjZXNzaWJpbGl0eUZvclNl
bGVjdGlvbkNoYW5nZSk6CiAgICAgICAgU2ltcGxpZmllZCBjb2RlIGJ5IGNhbGxpbmcgdG8gZm9j
dXNlZE9iamVjdEFuZENhcmV0T2Zmc2V0VW5pZ25vcmVkCiAgICAgICAgZnVuY3Rpb24sIGluc3Rl
YWQgb2YgdGhlIG9sZCBvYmplY3RBbmRPZmZzZXRVbmlnbm9yZWQgZnVuY3Rpb24uCgoyMDEyLTAx
LTA1ICBNYXJpbyBTYW5jaGV6IFByYWRhICA8bXNhbmNoZXpAaWdhbGlhLmNvbT4KCiAgICAgICAg
W0d0a10gUmVncmVzc2lvbjogdGV4dC1pbnNlcnRlZCBldmVudHMgbGFjayB0ZXh0IGluc2VydGVk
IGFuZCBjdXJyZW50IGxpbmUKICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NzI4MzAKCiAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgogICAg
ICAgIFVwZGF0ZWQgdW5pdCB0ZXN0cyB0byBjaGVjayB0aGF0IGJvdGggZ2V0dGluZyB0aGUgY3Vy
cmVudCBwb3NpdGlvbgogICAgICAgIGZvciB0aGUgY2FyZXQgYW5kIHRoZSBleHBvc2VkIHRleHQg
YXQsIGJlZm9yZSBvciBhZnRlciBhIGdpdmVuCiAgICAgICAgb2Zmc2V0IGZvciBhbiBhY2Nlc3Np
YmxlIG9iamVjdCB3b3JrcyBhcyBleHBlY3RlZC4KCiAgICAgICAgKiB0ZXN0cy90ZXN0YXRrLmM6
CiAgICAgICAgKHJ1bkdldFRleHRUZXN0cyk6IEZvciBvYmplY3RzIGltcGxlbWVudGluZyBBdGtF
ZGl0YWJsZVRleHQsIHRyeQogICAgICAgIHRvIGNoYW5nZSB0aGUgZXhwb3NlZCB0ZXh0IGFuZCBy
ZXRyaWV2ZSBpdCBhZ2FpbiBhcyBhIGZ1bGwgbGluZS4KICAgICAgICAodGVzdFdlYmtpdEF0a0Nh
cmV0T2Zmc2V0cyk6IEZvciBhIHRleHQgY29udHJvbCAoYSB0ZXh0IGVudHJ5KSwKICAgICAgICBz
ZXQgdGhlIGNhcmV0IG9mZnNldCB0byBhIHZhbHVlIGdyZWF0ZXIgdGhhbiAxIGFuZCByZXRyaWV2
ZSBpdC4KLS0tCiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAg
ICAgICB8ICAgMzEgKysrKysrKwogLi4uL2d0ay9BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckF0
ay5jcHAgICAgICAgICAgfCAgIDg1ICsrKysrKysrKysrLS0tLS0tLS0tCiAuLi4vZ3RrL0FjY2Vz
c2liaWxpdHlPYmplY3RXcmFwcGVyQXRrLmggICAgICAgICAgICB8ICAgIDIgKy0KIFNvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvZ3RrL0ZyYW1lU2VsZWN0aW9uR3RrLmNwcCAgIHwgICAxMSArLS0KIFNv
dXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxNyAr
KysrCiBTb3VyY2UvV2ViS2l0L2d0ay90ZXN0cy90ZXN0YXRrLmMgICAgICAgICAgICAgICAgICB8
ICAgMjYgKysrKysrLQogNiBmaWxlcyBjaGFuZ2VkLCAxMjQgaW5zZXJ0aW9ucygrKSwgNDggZGVs
ZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGM0MzFlNzUuLmJjMTY4N2IgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwzNCBAQAorMjAxMi0wMS0wNSAgTWFyaW8gU2FuY2hleiBQcmFkYSAgPG1zYW5jaGV6
QGlnYWxpYS5jb20+CisKKyAgICAgICAgW0d0a10gUmVncmVzc2lvbjogdGV4dC1pbnNlcnRlZCBl
dmVudHMgbGFjayB0ZXh0IGluc2VydGVkIGFuZCBjdXJyZW50IGxpbmUKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcyODMwCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRml4IGlzc3VlIGdldHRpbmcgdGhlIGV4
cG9zZWQgdGV4dCBmb3IgYW4gYWNjZXNzaWJpbGl0eSBvYmplY3QgYXQsCisgICAgICAgIGJlZm9y
ZSBvZiBhZnRlciBhIGdpdmVuIG9mZnNldCwgYWZ0ZXIgY2hhbmdpbmcgaXQgYXQgbGVhc3Qgb25j
ZS4KKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvZ3RrL0FjY2Vzc2liaWxpdHlPYmplY3RXcmFw
cGVyQXRrLmNwcDoKKyAgICAgICAgKHdlYmtpdF9hY2Nlc3NpYmxlX2NsYXNzX2luaXQpOiBEb24n
dCBpbml0aWFsaXplCisgICAgICAgIGdhaWxUZXh0VXRpbFF1YXJrLCBpdCB3b24ndCBiZSB1c2Vk
IGFueW1vcmUuCisgICAgICAgIChnZXRHYWlsVGV4dFV0aWxGb3JBdGspOiBEb24ndCBjYWNoZSB0
aGUgR2FpbFRleHRVdGlsIGFzIG9iamVjdAorICAgICAgICBkYXRhLCBidXQgY3JlYXRlIGEgbmV3
IG9uZSBlYWNoIHRpbWUgdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQuCisgICAgICAgICh3ZWJraXRf
YWNjZXNzaWJsZV90ZXh0X2dldF9jYXJldF9vZmZzZXQpOiBTaW1wbGlmaWVkIGNvZGUgYnkKKyAg
ICAgICAgdXNpbmcgdGhlIG5ldyBmb2N1c2VkT2JqZWN0QW5kQ2FyZXRPZmZzZXRVbmlnbm9yZWQg
ZnVuY3Rpb24sCisgICAgICAgIGluc3RlYWQgb2YgdGhlIG9sZCBvYmplY3RBbmRPZmZzZXRVbmln
bm9yZWQgZnVuY3Rpb24uCisgICAgICAgIChmb2N1c2VkT2JqZWN0QW5kQ2FyZXRPZmZzZXRVbmln
bm9yZWQpOiBSZXdyaXRlIG9mIHRoZSBvbGQKKyAgICAgICAgb2JqZWN0QW5kT2Zmc2V0VW5pZ25v
cmVkIGZ1bmN0aW9uIHNvIGl0IG5vdyBuZWVkcyBsZXNzCisgICAgICAgIHBhcmFtZXRlcnMgdGhh
biBiZWZvcmUgYW5kIHRha2VzIGNhcmUgb2YgY2FyZWZ1bGx5IHNlbGVjdGluZyB0aGUKKyAgICAg
ICAgc3RhcnQgYW5kIGVuZCB2aXNpYmxlIHBvc2l0aW9ucyB0byBjYWxjdWxhdGUgdGhlIHBvc2l0
aW9uIG9mIHRoZQorICAgICAgICBjYXJldCBmcm9tIHRoZSBwb2ludCBvZiB2aWV3IG9mIHRoZSBh
Y2Nlc3NpYmlsaXR5IG9iamVjdCBvZgorICAgICAgICByZWZlcmVuY2UgcGFzc2VkIGFzIHRoZSBv
bmx5IGlucHV0IHBhcmFtZXRlciBub3cuIFVwZGF0ZWQgY2FsbGVycy4KKyAgICAgICAgKiBhY2Nl
c3NpYmlsaXR5L2d0ay9BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckF0ay5oOgorCisgICAgICAg
ICogZWRpdGluZy9ndGsvRnJhbWVTZWxlY3Rpb25HdGsuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RnJhbWVTZWxlY3Rpb246Om5vdGlmeUFjY2Vzc2liaWxpdHlGb3JTZWxlY3Rpb25DaGFuZ2UpOgor
ICAgICAgICBTaW1wbGlmaWVkIGNvZGUgYnkgY2FsbGluZyB0byBmb2N1c2VkT2JqZWN0QW5kQ2Fy
ZXRPZmZzZXRVbmlnbm9yZWQKKyAgICAgICAgZnVuY3Rpb24sIGluc3RlYWQgb2YgdGhlIG9sZCBv
YmplY3RBbmRPZmZzZXRVbmlnbm9yZWQgZnVuY3Rpb24uCisKIDIwMTItMDEtMDMgIEtlbnRhcm8g
SGFyYSAgPGhhcmFrZW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQuIFJlYmFz
ZWxpbmVkIHJ1bi1iaW5kaW5ncy10ZXN0cyByZXN1bHRzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9ndGsvQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJBdGsuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9ndGsvQWNjZXNzaWJpbGl0eU9iamVjdFdy
YXBwZXJBdGsuY3BwCmluZGV4IGQ2ZTAwODIuLjNkNGMzMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvZ3RrL0FjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQXRrLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2d0ay9BY2Nlc3NpYmlsaXR5T2Jq
ZWN0V3JhcHBlckF0ay5jcHAKQEAgLTc2LDcgKzc2LDYgQEAKIAogdXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CiAKLXN0YXRpYyBHUXVhcmsgZ2FpbFRleHRVdGlsUXVhcmsgPSAwOwogc3RhdGljIEdR
dWFyayBoeXBlcmxpbmtPYmplY3RRdWFyayA9IDA7CiAKIHN0YXRpYyBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0KiBmYWxsYmFja09iamVjdCgpCkBAIC04NDYsNyArODQ1LDYgQEAgc3RhdGljIHZvaWQgd2Vi
a2l0X2FjY2Vzc2libGVfY2xhc3NfaW5pdChBdGtPYmplY3RDbGFzcyoga2xhc3MpCiAgICAga2xh
c3MtPmdldF9hdHRyaWJ1dGVzID0gd2Via2l0X2FjY2Vzc2libGVfZ2V0X2F0dHJpYnV0ZXM7CiAg
ICAga2xhc3MtPnJlZl9yZWxhdGlvbl9zZXQgPSB3ZWJraXRfYWNjZXNzaWJsZV9yZWZfcmVsYXRp
b25fc2V0OwogCi0gICAgZ2FpbFRleHRVdGlsUXVhcmsgPSBnX3F1YXJrX2Zyb21fc3RhdGljX3N0
cmluZygid2Via2l0LWFjY2Vzc2libGUtZ2FpbC10ZXh0LXV0aWwiKTsKICAgICBoeXBlcmxpbmtP
YmplY3RRdWFyayA9IGdfcXVhcmtfZnJvbV9zdGF0aWNfc3RyaW5nKCJ3ZWJraXQtYWNjZXNzaWJs
ZS1oeXBlcmxpbmstb2JqZWN0Iik7CiB9CiAKQEAgLTEyOTMsMTMgKzEyOTEsOCBAQCBzdGF0aWMg
Z2NoYXIqIHdlYmtpdF9hY2Nlc3NpYmxlX3RleHRfZ2V0X3RleHQoQXRrVGV4dCogdGV4dCwgZ2lu
dCBzdGFydE9mZnNldCwgZwogCiBzdGF0aWMgR2FpbFRleHRVdGlsKiBnZXRHYWlsVGV4dFV0aWxG
b3JBdGsoQXRrVGV4dCogdGV4dE9iamVjdCkKIHsKLSAgICBncG9pbnRlciBkYXRhID0gZ19vYmpl
Y3RfZ2V0X3FkYXRhKEdfT0JKRUNUKHRleHRPYmplY3QpLCBnYWlsVGV4dFV0aWxRdWFyayk7Ci0g
ICAgaWYgKGRhdGEpCi0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxHYWlsVGV4dFV0aWwqPihk
YXRhKTsKLQogICAgIEdhaWxUZXh0VXRpbCogZ2FpbFRleHRVdGlsID0gZ2FpbF90ZXh0X3V0aWxf
bmV3KCk7CiAgICAgZ2FpbF90ZXh0X3V0aWxfdGV4dF9zZXR1cChnYWlsVGV4dFV0aWwsIHdlYmtp
dF9hY2Nlc3NpYmxlX3RleHRfZ2V0X3RleHQodGV4dE9iamVjdCwgMCwgLTEpKTsKLSAgICBnX29i
amVjdF9zZXRfcWRhdGFfZnVsbChHX09CSkVDVCh0ZXh0T2JqZWN0KSwgZ2FpbFRleHRVdGlsUXVh
cmssIGdhaWxUZXh0VXRpbCwgZ19vYmplY3RfdW5yZWYpOwogICAgIHJldHVybiBnYWlsVGV4dFV0
aWw7CiB9CiAKQEAgLTEzNTIsMjAgKzEzNDUsOCBAQCBzdGF0aWMgZ2ludCB3ZWJraXRfYWNjZXNz
aWJsZV90ZXh0X2dldF9jYXJldF9vZmZzZXQoQXRrVGV4dCogdGV4dCkKICAgICBpZiAoIWNvcmVP
YmplY3QtPmlzQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdCgpKQogICAgICAgICByZXR1cm4gMDsK
IAotICAgIERvY3VtZW50KiBkb2N1bWVudCA9IGNvcmVPYmplY3QtPmRvY3VtZW50KCk7Ci0gICAg
aWYgKCFkb2N1bWVudCkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBOb2RlKiBmb2N1c2VkTm9k
ZSA9IGNvcmVPYmplY3QtPnNlbGVjdGlvbigpLmVuZCgpLmRlcHJlY2F0ZWROb2RlKCk7Ci0gICAg
aWYgKCFmb2N1c2VkTm9kZSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBSZW5kZXJPYmplY3Qq
IGZvY3VzZWRSZW5kZXJlciA9IGZvY3VzZWROb2RlLT5yZW5kZXJlcigpOwotICAgIEFjY2Vzc2li
aWxpdHlPYmplY3QqIGZvY3VzZWRPYmplY3QgPSBkb2N1bWVudC0+YXhPYmplY3RDYWNoZSgpLT5n
ZXRPckNyZWF0ZShmb2N1c2VkUmVuZGVyZXIpOwotCiAgICAgaW50IG9mZnNldDsKLSAgICAvLyBE
b24ndCBpZ25vcmUgbGlua3MgaWYgdGhlIG9mZnNldCBpcyBiZWluZyByZXF1ZXN0ZWQgZm9yIGEg
bGluay4KLSAgICBpZiAoIW9iamVjdEFuZE9mZnNldFVuaWdub3JlZChmb2N1c2VkT2JqZWN0LCBv
ZmZzZXQsICFjb3JlT2JqZWN0LT5pc0xpbmsoKSkpCisgICAgaWYgKCFmb2N1c2VkT2JqZWN0QW5k
Q2FyZXRPZmZzZXRVbmlnbm9yZWQoY29yZU9iamVjdCwgb2Zmc2V0KSkKICAgICAgICAgcmV0dXJu
IDA7CiAKICAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gY29yZU9iamVjdC0+cmVuZGVyZXIo
KTsKQEAgLTI3MzMsMzcgKzI3MTQsNjUgQEAgQXRrT2JqZWN0KiB3ZWJraXRfYWNjZXNzaWJsZV9n
ZXRfZm9jdXNlZF9lbGVtZW50KFdlYktpdEFjY2Vzc2libGUqIGFjY2Vzc2libGUpCiAgICAgcmV0
dXJuIGZvY3VzZWRPYmotPndyYXBwZXIoKTsKIH0KIAotQWNjZXNzaWJpbGl0eU9iamVjdCogb2Jq
ZWN0QW5kT2Zmc2V0VW5pZ25vcmVkKEFjY2Vzc2liaWxpdHlPYmplY3QqIGNvcmVPYmplY3QsIGlu
dCYgb2Zmc2V0LCBib29sIGlnbm9yZUxpbmtzKQorQWNjZXNzaWJpbGl0eU9iamVjdCogZm9jdXNl
ZE9iamVjdEFuZENhcmV0T2Zmc2V0VW5pZ25vcmVkKEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iamVj
dE9mUmVmZXJlbmNlLCBpbnQmIG9mZnNldCkKIHsKICAgICAvLyBJbmRpY2F0aW9uIHRoYXQgc29t
ZXRoaW5nIGJvZ3VzIGhhcyB0cmFuc3BpcmVkLgogICAgIG9mZnNldCA9IC0xOwogCi0gICAgQWNj
ZXNzaWJpbGl0eU9iamVjdCogcmVhbE9iamVjdCA9IGNvcmVPYmplY3Q7CisgICAgRG9jdW1lbnQq
IGRvY3VtZW50ID0gb2JqZWN0T2ZSZWZlcmVuY2UtPmRvY3VtZW50KCk7CisgICAgaWYgKCFkb2N1
bWVudCkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBOb2RlKiBmb2N1c2VkTm9kZSA9IG9iamVj
dE9mUmVmZXJlbmNlLT5zZWxlY3Rpb24oKS5lbmQoKS5jb250YWluZXJOb2RlKCk7CisgICAgaWYg
KCFmb2N1c2VkTm9kZSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBSZW5kZXJPYmplY3QqIGZv
Y3VzZWRSZW5kZXJlciA9IGZvY3VzZWROb2RlLT5yZW5kZXJlcigpOworICAgIGlmICghZm9jdXNl
ZFJlbmRlcmVyKQorICAgICAgICByZXR1cm4gMDsKKworICAgIEFjY2Vzc2liaWxpdHlPYmplY3Qq
IGZvY3VzZWRPYmplY3QgPSBkb2N1bWVudC0+YXhPYmplY3RDYWNoZSgpLT5nZXRPckNyZWF0ZShm
b2N1c2VkUmVuZGVyZXIpOworICAgIGlmICghZm9jdXNlZE9iamVjdCkKKyAgICAgICAgcmV0dXJu
IDA7CisKKyAgICAvLyBMb29rIGZvciB0aGUgYWN0dWFsIChub3QgaWdub3JpbmcgYWNjZXNzaWJp
bGl0eSkgc2VsZWN0ZWQgb2JqZWN0LgorICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHJlYWxPYmpl
Y3QgPSBmb2N1c2VkT2JqZWN0OwogICAgIGlmIChyZWFsT2JqZWN0LT5hY2Nlc3NpYmlsaXR5SXNJ
Z25vcmVkKCkpCiAgICAgICAgIHJlYWxPYmplY3QgPSByZWFsT2JqZWN0LT5wYXJlbnRPYmplY3RV
bmlnbm9yZWQoKTsKICAgICBpZiAoIXJlYWxPYmplY3QpCiAgICAgICAgIHJldHVybiAwOwogCi0g
ICAgaWYgKGlnbm9yZUxpbmtzICYmIHJlYWxPYmplY3QtPmlzTGluaygpKQorICAgIC8vIERvbid0
IGlnbm9yZSBsaW5rcyBpZiB0aGUgb2Zmc2V0IGlzIGJlaW5nIHJlcXVlc3RlZCBmb3IgYSBsaW5r
LgorICAgIGlmICghb2JqZWN0T2ZSZWZlcmVuY2UtPmlzTGluaygpICYmIHJlYWxPYmplY3QtPmlz
TGluaygpKQogICAgICAgICByZWFsT2JqZWN0ID0gcmVhbE9iamVjdC0+cGFyZW50T2JqZWN0VW5p
Z25vcmVkKCk7CiAgICAgaWYgKCFyZWFsT2JqZWN0KQogICAgICAgICByZXR1cm4gMDsKIAotICAg
IE5vZGUqIG5vZGUgPSByZWFsT2JqZWN0LT5ub2RlKCk7Ci0gICAgaWYgKG5vZGUpIHsKLSAgICAg
ICAgVmlzaWJsZVBvc2l0aW9uIHN0YXJ0UG9zaXRpb24gPSBWaXNpYmxlUG9zaXRpb24ocG9zaXRp
b25CZWZvcmVOb2RlKG5vZGUpLCBET1dOU1RSRUFNKTsKLSAgICAgICAgVmlzaWJsZVBvc2l0aW9u
IGVuZFBvc2l0aW9uID0gcmVhbE9iamVjdC0+c2VsZWN0aW9uKCkudmlzaWJsZUVuZCgpOwotCi0g
ICAgICAgIGlmIChzdGFydFBvc2l0aW9uID09IGVuZFBvc2l0aW9uKQotICAgICAgICAgICAgb2Zm
c2V0ID0gMDsKLSAgICAgICAgZWxzZSBpZiAoIWlzU3RhcnRPZkxpbmUoZW5kUG9zaXRpb24pKSB7
Ci0gICAgICAgICAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0gbWFrZVJhbmdlKHN0YXJ0UG9zaXRp
b24sIGVuZFBvc2l0aW9uLnByZXZpb3VzKCkpOwotICAgICAgICAgICAgb2Zmc2V0ID0gVGV4dEl0
ZXJhdG9yOjpyYW5nZUxlbmd0aChyYW5nZS5nZXQoKSwgdHJ1ZSkgKyAxOwotICAgICAgICB9IGVs
c2UgewotICAgICAgICAgICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IG1ha2VSYW5nZShzdGFydFBv
c2l0aW9uLCBlbmRQb3NpdGlvbik7Ci0gICAgICAgICAgICBvZmZzZXQgPSBUZXh0SXRlcmF0b3I6
OnJhbmdlTGVuZ3RoKHJhbmdlLmdldCgpLCB0cnVlKTsKLSAgICAgICAgfQotCisgICAgTm9kZSog
c3RhcnROb2RlID0gMDsKKyAgICBpZiAocmVhbE9iamVjdCAhPSBvYmplY3RPZlJlZmVyZW5jZSB8
fCByZWFsT2JqZWN0LT5pc1RleHRDb250cm9sKCkpIHsKKyAgICAgICAgLy8gV2UgbmVlZCB0byB1
c2UgdGhlIGZpcnN0IGNoaWxkJ3Mgbm9kZSBvZiB0aGUgcmVmZXJlbmNlCisgICAgICAgIC8vIG9i
amVjdCBhcyB0aGUgc3RhcnQgcG9pbnQgdG8gY2FsY3VsYXRlIHRoZSBjYXJldCBvZmZzZXQKKyAg
ICAgICAgLy8gYmVjYXVzZSB3ZSB3YW50IGl0IHRvIGJlIHJlbGF0aXZlIHRvIHRoZSBvYmplY3Qg
b2YKKyAgICAgICAgLy8gcmVmZXJlbmNlLCBub3QganVzdCB0byB0aGUgZm9jdXNlZCBvYmplY3Qg
KHdoaWNoIGNvdWxkIGhhdmUKKyAgICAgICAgLy8gcHJldmlvdXMgc2libGluZ3Mgd2hpY2ggc2hv
dWxkIGJlIHRha2VuIGludG8gYWNjb3VudCB0b28pLgorICAgICAgICBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0KiBheEZpcnN0Q2hpbGQgPSBvYmplY3RPZlJlZmVyZW5jZS0+Zmlyc3RDaGlsZCgpOworICAg
ICAgICBpZiAoYXhGaXJzdENoaWxkKQorICAgICAgICAgICAgc3RhcnROb2RlID0gYXhGaXJzdENo
aWxkLT5ub2RlKCk7CisgICAgfQorICAgIGlmICghc3RhcnROb2RlKQorICAgICAgICBzdGFydE5v
ZGUgPSByZWFsT2JqZWN0LT5ub2RlKCk7CisKKyAgICBWaXNpYmxlUG9zaXRpb24gc3RhcnRQb3Np
dGlvbiA9IFZpc2libGVQb3NpdGlvbihmaXJzdFBvc2l0aW9uSW5Ob2RlKHN0YXJ0Tm9kZSksIERP
V05TVFJFQU0pOworICAgIFZpc2libGVQb3NpdGlvbiBlbmRQb3NpdGlvbiA9IHJlYWxPYmplY3Qt
PnNlbGVjdGlvbigpLnZpc2libGVFbmQoKTsKKworICAgIGlmIChzdGFydFBvc2l0aW9uID09IGVu
ZFBvc2l0aW9uKQorICAgICAgICBvZmZzZXQgPSAwOworICAgIGVsc2UgaWYgKCFpc1N0YXJ0T2ZM
aW5lKGVuZFBvc2l0aW9uKSkgeworICAgICAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0gbWFrZVJh
bmdlKHN0YXJ0UG9zaXRpb24sIGVuZFBvc2l0aW9uLnByZXZpb3VzKCkpOworICAgICAgICBvZmZz
ZXQgPSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKHJhbmdlLmdldCgpLCB0cnVlKSArIDE7Cisg
ICAgfSBlbHNlIHsKKyAgICAgICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IG1ha2VSYW5nZShzdGFy
dFBvc2l0aW9uLCBlbmRQb3NpdGlvbik7CisgICAgICAgIG9mZnNldCA9IFRleHRJdGVyYXRvcjo6
cmFuZ2VMZW5ndGgocmFuZ2UuZ2V0KCksIHRydWUpOwogICAgIH0KIAogICAgIHJldHVybiByZWFs
T2JqZWN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9ndGsvQWNj
ZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJBdGsuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvZ3RrL0FjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQXRrLmgKaW5kZXggZThjZWMwOC4uODYx
OTM3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9ndGsvQWNjZXNz
aWJpbGl0eU9iamVjdFdyYXBwZXJBdGsuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L2d0ay9BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckF0ay5oCkBAIC02MCw3ICs2MCw3IEBA
IHZvaWQgd2Via2l0X2FjY2Vzc2libGVfZGV0YWNoIChXZWJLaXRBY2Nlc3NpYmxlKiBhY2Nlc3Np
YmxlKTsKIAogQXRrT2JqZWN0KiB3ZWJraXRfYWNjZXNzaWJsZV9nZXRfZm9jdXNlZF9lbGVtZW50
KFdlYktpdEFjY2Vzc2libGUqIGFjY2Vzc2libGUpOwogCi1XZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
T2JqZWN0KiBvYmplY3RBbmRPZmZzZXRVbmlnbm9yZWQoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9i
amVjdCogY29yZU9iamVjdCwgaW50JiBvZmZzZXQsIGJvb2wgaWdub3JlTGlua3MpOworV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eU9iamVjdCogZm9jdXNlZE9iamVjdEFuZENhcmV0T2Zmc2V0VW5pZ25v
cmVkKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3QqIG9iamVjdE9mUmVmZXJlbmNlLCBpbnQm
IG9mZnNldCk7CiAKIEdfRU5EX0RFQ0xTCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvZ3RrL0ZyYW1lU2VsZWN0aW9uR3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
Z3RrL0ZyYW1lU2VsZWN0aW9uR3RrLmNwcAppbmRleCBhMzI3ZTA2Li5iZGZmZDgwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2d0ay9GcmFtZVNlbGVjdGlvbkd0ay5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9ndGsvRnJhbWVTZWxlY3Rpb25HdGsuY3BwCkBAIC04
MCwyMCArODAsMTcgQEAgdm9pZCBGcmFtZVNlbGVjdGlvbjo6bm90aWZ5QWNjZXNzaWJpbGl0eUZv
clNlbGVjdGlvbkNoYW5nZSgpCiAgICAgaWYgKCFBWE9iamVjdENhY2hlOjphY2Nlc3NpYmlsaXR5
RW5hYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICAvLyBSZXNldCBsYXN0Rm9jdXNlTm9k
ZSBhbmQgcmV0dXJuIGZvciBubyB2YWxpZCBzZWxlY3Rpb25zLgorICAgIC8vIFJldHVybiBmb3Ig
bm8gdmFsaWQgc2VsZWN0aW9ucy4KICAgICBpZiAoIW1fc2VsZWN0aW9uLnN0YXJ0KCkuaXNOb3RO
dWxsKCkgfHwgIW1fc2VsZWN0aW9uLmVuZCgpLmlzTm90TnVsbCgpKQogICAgICAgICByZXR1cm47
CiAKLSAgICBSZW5kZXJPYmplY3QqIGZvY3VzZWROb2RlID0gbV9zZWxlY3Rpb24uZW5kKCkuZGVw
cmVjYXRlZE5vZGUoKS0+cmVuZGVyZXIoKTsKLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBhY2Nl
c3NpYmlsaXR5T2JqZWN0ID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+YXhPYmplY3RDYWNoZSgpLT5n
ZXRPckNyZWF0ZShmb2N1c2VkTm9kZSk7Ci0KLSAgICAvLyBOZWVkIHRvIGNoZWNrIHRoaXMgYXMg
Z2V0T3JDcmVhdGUgY291bGQgcmV0dXJuIDAsCisgICAgLy8gTG9vayBmb3IgdGhlIGFjY2Vzc2li
aWxpdHkgb2JqZWN0IGZvciB0aGUgRnJhbWUuCisgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogYWNj
ZXNzaWJpbGl0eU9iamVjdCA9IG1fZnJhbWUtPmRvY3VtZW50KCktPmF4T2JqZWN0Q2FjaGUoKS0+
cm9vdE9iamVjdEZvckZyYW1lKG1fZnJhbWUpOwogICAgIGlmICghYWNjZXNzaWJpbGl0eU9iamVj
dCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaW50IG9mZnNldDsKLSAgICAvLyBBbHdheXMgcmVw
b3J0IHRoZSBldmVudHMgdy5yLnQuIHRoZSBub24tbGlua2VkIHVuaWdub3JlZCBwYXJlbnQuIChp
LmUuIGlnbm9yZUxpbmtzID09IHRydWUpLgotICAgIFJlZlB0cjxBY2Nlc3NpYmlsaXR5T2JqZWN0
PiBvYmplY3QgPSBvYmplY3RBbmRPZmZzZXRVbmlnbm9yZWQoYWNjZXNzaWJpbGl0eU9iamVjdCwg
b2Zmc2V0LCB0cnVlKTsKKyAgICBSZWZQdHI8QWNjZXNzaWJpbGl0eU9iamVjdD4gb2JqZWN0ID0g
Zm9jdXNlZE9iamVjdEFuZENhcmV0T2Zmc2V0VW5pZ25vcmVkKGFjY2Vzc2liaWxpdHlPYmplY3Qs
IG9mZnNldCk7CiAgICAgaWYgKCFvYmplY3QpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdl
TG9nCmluZGV4IDYxZmNmNTUuLjI5YTk3OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3Rr
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKQEAgLTEsMyArMSwy
MCBAQAorMjAxMi0wMS0wNSAgTWFyaW8gU2FuY2hleiBQcmFkYSAgPG1zYW5jaGV6QGlnYWxpYS5j
b20+CisKKyAgICAgICAgW0d0a10gUmVncmVzc2lvbjogdGV4dC1pbnNlcnRlZCBldmVudHMgbGFj
ayB0ZXh0IGluc2VydGVkIGFuZCBjdXJyZW50IGxpbmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcyODMwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlZCB1bml0IHRlc3RzIHRvIGNoZWNrIHRoYXQg
Ym90aCBnZXR0aW5nIHRoZSBjdXJyZW50IHBvc2l0aW9uCisgICAgICAgIGZvciB0aGUgY2FyZXQg
YW5kIHRoZSBleHBvc2VkIHRleHQgYXQsIGJlZm9yZSBvciBhZnRlciBhIGdpdmVuCisgICAgICAg
IG9mZnNldCBmb3IgYW4gYWNjZXNzaWJsZSBvYmplY3Qgd29ya3MgYXMgZXhwZWN0ZWQuCisKKyAg
ICAgICAgKiB0ZXN0cy90ZXN0YXRrLmM6CisgICAgICAgIChydW5HZXRUZXh0VGVzdHMpOiBGb3Ig
b2JqZWN0cyBpbXBsZW1lbnRpbmcgQXRrRWRpdGFibGVUZXh0LCB0cnkKKyAgICAgICAgdG8gY2hh
bmdlIHRoZSBleHBvc2VkIHRleHQgYW5kIHJldHJpZXZlIGl0IGFnYWluIGFzIGEgZnVsbCBsaW5l
LgorICAgICAgICAodGVzdFdlYmtpdEF0a0NhcmV0T2Zmc2V0cyk6IEZvciBhIHRleHQgY29udHJv
bCAoYSB0ZXh0IGVudHJ5KSwKKyAgICAgICAgc2V0IHRoZSBjYXJldCBvZmZzZXQgdG8gYSB2YWx1
ZSBncmVhdGVyIHRoYW4gMSBhbmQgcmV0cmlldmUgaXQuCisKIDIwMTItMDEtMDMgIENhcmxvcyBH
YXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIFVzZSBn
ZGtfc2NyZWVuX2dldF9tb25pdG9yX3dvcmthcmVhKCkgd2hlbiBhdmFpbGFibGUgZm9yIHNjcmVl
bkF2YWlsYWJsZVJlY3QoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvdGVzdHMvdGVz
dGF0ay5jIGIvU291cmNlL1dlYktpdC9ndGsvdGVzdHMvdGVzdGF0ay5jCmluZGV4IGI0NmEyNDIu
LmU4NTJkZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL3Rlc3RzL3Rlc3RhdGsuYwor
KysgYi9Tb3VyY2UvV2ViS2l0L2d0ay90ZXN0cy90ZXN0YXRrLmMKQEAgLTYzLDcgKzYzLDcgQEAg
c3RhdGljIGNvbnN0IGNoYXIqIGxpbmtzV2l0aElubGluZUltYWdlcyA9ICI8aHRtbD48aGVhZD48
c3R5bGU+YS5odHRwOmJlZm9yZSB7Y28KIAogc3RhdGljIGNvbnN0IGNoYXIqIGxpc3RzT2ZJdGVt
cyA9ICI8aHRtbD48Ym9keT48dWw+PGxpPnRleHQgb25seTwvbGk+PGxpPjxhIGhyZWY9J2Zvbyc+
bGluayBvbmx5PC9hPjwvbGk+PGxpPnRleHQgYW5kIGEgPGEgaHJlZj0nYmFyJz5saW5rPC9hPjwv
bGk+PC91bD48b2w+PGxpPnRleHQgb25seTwvbGk+PGxpPjxhIGhyZWY9J2Zvbyc+bGluayBvbmx5
PC9hPjwvbGk+PGxpPnRleHQgYW5kIGEgPGEgaHJlZj0nYmFyJz5saW5rPC9hPjwvbGk+PC9vbD48
L2JvZHk+PC9odG1sPiI7CiAKLXN0YXRpYyBjb25zdCBjaGFyKiB0ZXh0Rm9yQ2FyZXRCcm93c2lu
ZyA9ICI8aHRtbD48Ym9keT48aDE+QSB0ZXh0IGhlYWRlcjwvaDE+PHA+QSBwYXJhZ3JhcGggPGEg
aHJlZj0naHR0cDovL2Zvby5iYXIuYmF6Lyc+d2l0aCBhIGxpbms8L2E+IGluIHRoZSBtaWRkbGU8
L3A+PG9sPjxsaT5BIGxpc3QgaXRlbTwvbGk+PC9vbD48c2VsZWN0PjxvcHRpb24gc2VsZWN0ZWQg
dmFsdWU9J2Zvbyc+QW4gb3B0aW9uIGluIGEgY29tYm8gYm94PC9vcHRpb24+PC9zZWxlY3Q+PC9i
b2R5PjwvaHRtbD4iOworc3RhdGljIGNvbnN0IGNoYXIqIHRleHRGb3JDYXJldEJyb3dzaW5nID0g
IjxodG1sPjxib2R5PjxoMT5BIHRleHQgaGVhZGVyPC9oMT48cD5BIHBhcmFncmFwaCA8YSBocmVm
PSdodHRwOi8vZm9vLmJhci5iYXovJz53aXRoIGEgbGluazwvYT4gaW4gdGhlIG1pZGRsZTwvcD48
b2w+PGxpPkEgbGlzdCBpdGVtPC9saT48L29sPjxzZWxlY3Q+PG9wdGlvbiBzZWxlY3RlZCB2YWx1
ZT0nZm9vJz5BbiBvcHRpb24gaW4gYSBjb21ibyBib3g8L29wdGlvbj48L3NlbGVjdD48aW5wdXQg
dHlwZT0ndGV4dCcnIG5hbWU9J2ZvbycnIHZhbHVlPSdmb28gYmFyIGJheicgLz48L2JvZHk+PC9o
dG1sPiI7CiAKIHN0YXRpYyBjb25zdCBjaGFyKiB0ZXh0Rm9yU2VsZWN0aW9ucyA9ICI8aHRtbD48
Ym9keT48cD5BIHBhcmFncmFwaCB3aXRoIHBsYWluIHRleHQ8L3A+PHA+QSBwYXJhZ3JhcGggd2l0
aCA8YSBocmVmPSdodHRwOi8vd2Via2l0Lm9yZyc+YSBsaW5rPC9hPiBpbiB0aGUgbWlkZGxlPC9w
PjxvbD48bGk+QSBsaXN0IGl0ZW08L2xpPjwvb2w+PHNlbGVjdD48L2JvZHk+PC9odG1sPiI7CiAK
QEAgLTIzNCw3ICsyMzQsNyBAQCBzdGF0aWMgdm9pZCBydW5HZXRUZXh0VGVzdHMoQXRrVGV4dCog
dGV4dE9iamVjdCkKICAgICB0ZXN0R2V0VGV4dEZ1bmN0aW9uKHRleHRPYmplY3QsIGF0a190ZXh0
X2dldF90ZXh0X2JlZm9yZV9vZmZzZXQsIEFUS19URVhUX0JPVU5EQVJZX1NFTlRFTkNFX0VORCwK
ICAgICAgICAgICAgICAgICAgICAgICAgIDQ0LCAiIFRoaXMgaXMgdGhlIHNlY29uZCBzZW50ZW5j
ZS4iLCAxNSwgNDQpOwogCi0gICAgLyogSXQncyB0cmljayB0byB0ZXN0IHRoZXNlIHByb3Blcmx5
IHJpZ2h0IG5vdywgc2luY2Ugb3VyIGExMXkKKyAgICAvKiBJdCdzIHRyaWNreSB0byB0ZXN0IHRo
ZXNlIHByb3Blcmx5IHJpZ2h0IG5vdywgc2luY2Ugb3VyIGExMXkKICAgICAgICBpbXBsZW1lbnRh
dGlvbiBzcGxpdHMgZGlmZmVyZW50IGxpbmVzIGluIGRpZmZlcmVudCBhMTF5IGl0ZW1zLiAqLwog
ICAgIC8qIEFUS19URVhUX0JPVU5EQVJZX0xJTkVfU1RBUlQgKi8KICAgICB0ZXN0R2V0VGV4dEZ1
bmN0aW9uKHRleHRPYmplY3QsIGF0a190ZXh0X2dldF90ZXh0X2F0X29mZnNldCwgQVRLX1RFWFRf
Qk9VTkRBUllfTElORV9TVEFSVCwKQEAgLTI0Myw2ICsyNDMsMTUgQEAgc3RhdGljIHZvaWQgcnVu
R2V0VGV4dFRlc3RzKEF0a1RleHQqIHRleHRPYmplY3QpCiAgICAgLyogQVRLX1RFWFRfQk9VTkRB
UllfTElORV9FTkQgKi8KICAgICB0ZXN0R2V0VGV4dEZ1bmN0aW9uKHRleHRPYmplY3QsIGF0a190
ZXh0X2dldF90ZXh0X2F0X29mZnNldCwgQVRLX1RFWFRfQk9VTkRBUllfTElORV9FTkQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAwLCAiVGhpcyBpcyBhIHRlc3QuIFRoaXMgaXMgdGhlIHNlY29u
ZCBzZW50ZW5jZS4gQW5kIHRoaXMgdGhlIHRoaXJkLiIsIDAsIDY0KTsKKworICAgIC8qIEZvciBv
YmplY3RzIGltcGxlbWVudGluZyBBdGtFZGl0YWJsZVRleHQsIHRyeSB0byBjaGFuZ2UgdGhlCisg
ICAgICAgZXhwb3NlZCB0ZXh0IGFuZCByZXRyaWV2ZSBpdCBhZ2FpbiBhcyBhIGZ1bGwgbGluZS4K
KyAgICAgICAoc2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03Mjgz
MCkgKi8KKyAgICBpZiAoQVRLX0lTX0VESVRBQkxFX1RFWFQodGV4dE9iamVjdCkpIHsKKyAgICAg
ICAgYXRrX2VkaXRhYmxlX3RleHRfc2V0X3RleHRfY29udGVudHMoQVRLX0VESVRBQkxFX1RFWFQo
dGV4dE9iamVjdCksICJmb28gYmFyIGJheiIpOworICAgICAgICB0ZXN0R2V0VGV4dEZ1bmN0aW9u
KHRleHRPYmplY3QsIGF0a190ZXh0X2dldF90ZXh0X2F0X29mZnNldCwgQVRLX1RFWFRfQk9VTkRB
UllfTElORV9TVEFSVCwgMCwgImZvbyBiYXIgYmF6IiwgMCwgMTEpOworICAgICAgICB0ZXN0R2V0
VGV4dEZ1bmN0aW9uKHRleHRPYmplY3QsIGF0a190ZXh0X2dldF90ZXh0X2F0X29mZnNldCwgQVRL
X1RFWFRfQk9VTkRBUllfTElORV9FTkQsIDAsICJmb28gYmFyIGJheiIsIDAsIDExKTsKKyAgICB9
CiB9CiAKIHN0YXRpYyB2b2lkIHRlc3RXZWJraXRBdGtDYXJldE9mZnNldHMoKQpAQCAtMzM0LDYg
KzM0MywxOCBAQCBzdGF0aWMgdm9pZCB0ZXN0V2Via2l0QXRrQ2FyZXRPZmZzZXRzKCkKICAgICBy
ZXN1bHQgPSBhdGtfdGV4dF9zZXRfY2FyZXRfb2Zmc2V0KEFUS19URVhUKGNvbWJvQm94T3B0aW9u
KSwgMSk7CiAgICAgZ19hc3NlcnRfY21waW50KHJlc3VsdCwgPT0sIEZBTFNFKTsKIAorICAgIEF0
a09iamVjdCogdGV4dEVudHJ5ID0gYXRrX29iamVjdF9yZWZfYWNjZXNzaWJsZV9jaGlsZChwYW5l
bCwgMSk7CisgICAgZ19hc3NlcnQoQVRLX0lTX09CSkVDVCh0ZXh0RW50cnkpKTsKKyAgICBnX2Fz
c2VydChhdGtfb2JqZWN0X2dldF9yb2xlKHRleHRFbnRyeSkgPT0gQVRLX1JPTEVfRU5UUlkpOwor
ICAgIGdfYXNzZXJ0KEFUS19JU19URVhUKHRleHRFbnRyeSkpOworICAgIHRleHQgPSBhdGtfdGV4
dF9nZXRfdGV4dChBVEtfVEVYVCh0ZXh0RW50cnkpLCAwLCAtMSk7CisgICAgZ19hc3NlcnRfY21w
c3RyKHRleHQsID09LCAiZm9vIGJhciBiYXoiKTsKKworICAgIHJlc3VsdCA9IGF0a190ZXh0X3Nl
dF9jYXJldF9vZmZzZXQoQVRLX1RFWFQodGV4dEVudHJ5KSwgNSk7CisgICAgZ19hc3NlcnRfY21w
aW50KHJlc3VsdCwgPT0sIFRSVUUpOworICAgIG9mZnNldCA9IGF0a190ZXh0X2dldF9jYXJldF9v
ZmZzZXQoQVRLX1RFWFQodGV4dEVudHJ5KSk7CisgICAgZ19hc3NlcnRfY21waW50KG9mZnNldCwg
PT0sIDUpOworCiAgICAgZ19vYmplY3RfdW5yZWYoaGVhZGVyKTsKICAgICBnX29iamVjdF91bnJl
ZihwYXJhZ3JhcGgpOwogICAgIGdfb2JqZWN0X3VucmVmKGxpc3QpOwpAQCAtMzQyLDYgKzM2Myw3
IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJraXRBdGtDYXJldE9mZnNldHMoKQogICAgIGdfb2JqZWN0
X3VucmVmKGNvbWJvQm94KTsKICAgICBnX29iamVjdF91bnJlZihtZW51UG9wdXApOwogICAgIGdf
b2JqZWN0X3VucmVmKGNvbWJvQm94T3B0aW9uKTsKKyAgICBnX29iamVjdF91bnJlZih0ZXh0RW50
cnkpOwogICAgIGdfb2JqZWN0X3VucmVmKHdlYlZpZXcpOwogfQogCi0tIAoxLjcuNy40Cgo=
</data>
<flag name="review"
          id="121721"
          type_id="1"
          status="+"
          setter="mrobinson"
    />
    <flag name="commit-queue"
          id="121821"
          type_id="3"
          status="-"
          setter="mrobinson"
    />
          </attachment>
      

    </bug>

</bugzilla>