<?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>31187</bug_id>
          
          <creation_ts>2009-11-05 14:25:25 -0800</creation_ts>
          <short_desc>Get rid of phase argument to Image::drawPattern</short_desc>
          <delta_ts>2017-04-14 04:07:46 -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>Platform</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>LATER</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>0</everconfirmed>
          <reporter name="Benjamin Otte">otte</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>eric</cc>
    
    <cc>krit</cc>
    
    <cc>mrobinson</cc>
    
    <cc>oliver</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>160954</commentid>
    <comment_count>0</comment_count>
      <attachid>42597</attachid>
    <who name="Benjamin Otte">otte</who>
    <bug_when>2009-11-05 14:25:25 -0800</bug_when>
    <thetext>Created attachment 42597
patch

The attach patch removes the phase argument from Image::dawPattern(). The argument can be expressed equally well as part of the patternTransform. 
In fact, all backends but the Qt one did exactly that manually anyway.

I only compiled and tested this patch on Linux/gtk. I did the work on all other backends too (it was just deleting code after all), but I won&apos;t wouch for it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>169076</commentid>
    <comment_count>1</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2009-12-05 23:48:13 -0800</bug_when>
    <thetext>The changes look reasonable to me. I would like to know, why phase was introduced? Oliver, do you know more about this?

&gt; +    TransformationMatrix patternTransform = TransformationMatrix().translate(oneTileRect.x(), oneTileRect.y()).scaleNonUniform(scale.width(), scale.height());

I would like to see the transformations in two lines. Makes reading the code easier.
The ChangeLog needs the link to the bug report too.

Also did you check canvas examples like http://yuiblog.com/assets/slicing/slicing_test.html , or duke 3d? I had to check phase for NaN, otherwise the Cairo port crashed, or stop further rendering (I guess it&apos;s a problem of Cairo and handling not invertible matrices).

I&apos;ll run pixeltests on Mac, if there are no reasons for phase.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>169244</commentid>
    <comment_count>2</comment_count>
    <who name="Benjamin Otte">otte</who>
    <bug_when>2009-12-07 04:13:13 -0800</bug_when>
    <thetext>(disclaimer: the patch doesn&apos;t apply anymore since the colorspace stuff landed)

And yeah, we should probably do a cairo_pattern_status() before doing the cairo_set_source() to avoid bad matrices putting the cairo_t into an error state. The current check is not very good, because it just catches one special case.
Although that won&apos;t protect us when only the context&apos;s tansform plus the pattern&apos;s transform ens up being bad.
Solving that problem correctly requires work in Cairo.
And a testcase exposing it. :/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>169447</commentid>
    <comment_count>3</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2009-12-07 13:16:17 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (disclaimer: the patch doesn&apos;t apply anymore since the colorspace stuff landed)
&gt; 
&gt; And yeah, we should probably do a cairo_pattern_status() before doing the
&gt; cairo_set_source() to avoid bad matrices putting the cairo_t into an error
&gt; state. The current check is not very good, because it just catches one special
&gt; case.
&gt; Although that won&apos;t protect us when only the context&apos;s tansform plus the
&gt; pattern&apos;s transform ens up being bad.
&gt; Solving that problem correctly requires work in Cairo.
&gt; And a testcase exposing it. :/

One possibiliy is, to make every transformation to TransformationMatrix&amp; patternTransform and check if it is invertible (.isInvertible()) before we transform the pattern. Nevertheless, I would like to see this with this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>172301</commentid>
    <comment_count>4</comment_count>
      <attachid>44979</attachid>
    <who name="Benjamin Otte">otte</who>
    <bug_when>2009-12-16 08:28:31 -0800</bug_when>
    <thetext>Created attachment 44979
patch v2

Updated to trunk with Dirk&apos;s comments.

The example page you linked to had other bugs, but it isn&apos;t using drawPattern at all, so doesn&apos;t apply to this bug. And I can&apos;t find the Duke one on Google, got a link for that?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>172302</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2009-12-16 08:29:25 -0800</bug_when>
    <thetext>Attachment 44979 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebCore/platform/graphics/cairo/ImageCairo.cpp:200:  phase_matrix is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
WebCore/platform/graphics/cairo/ImageCairo.cpp:205:  Extra space before ( in function call  [whitespace/parens] [4]
WebCore/platform/graphics/cairo/ImageCairo.cpp:206:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>172338</commentid>
    <comment_count>6</comment_count>
      <attachid>44979</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-12-16 09:41:17 -0800</bug_when>
    <thetext>Comment on attachment 44979
patch v2

This looks like a good idea to me.

&gt; +    TransformationMatrix patternTransform = TransformationMatrix();
&gt; +    patternTransform.translate(oneTileRect.x(), oneTileRect.y());
&gt; +    patternTransform.scaleNonUniform(scale.width(), scale.height());

&gt; +    TransformationMatrix patternTransform = TransformationMatrix().translate(dstRect.x() - hPhase, dstRect.y() - vPhase).scaleNonUniform(scale.width(), scale.height());

Why the different idiom at these two call sites? I think you should choose one style or the other.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>172390</commentid>
    <comment_count>7</comment_count>
      <attachid>44991</attachid>
    <who name="Benjamin Otte">otte</who>
    <bug_when>2009-12-16 10:43:27 -0800</bug_when>
    <thetext>Created attachment 44991
patch v3

That might be because I didn&apos;t notice there&apos;s two occurances. Fixed this and the style issues now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>172393</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2009-12-16 10:44:08 -0800</bug_when>
    <thetext>style-queue ran check-webkit-style on attachment 44991 without any errors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>172411</commentid>
    <comment_count>9</comment_count>
      <attachid>44991</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-12-16 11:00:34 -0800</bug_when>
    <thetext>Comment on attachment 44991
patch v3

Clearing flags on attachment: 44991

Committed r52206: &lt;http://trac.webkit.org/changeset/52206&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>172412</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-12-16 11:00:42 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>172561</commentid>
    <comment_count>11</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-12-16 16:08:53 -0800</bug_when>
    <thetext>Looks like this caused a bunch of pixel test failures.  I recommend we roll this out.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>172562</commentid>
    <comment_count>12</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-12-16 16:12:42 -0800</bug_when>
    <thetext>Specifically the pixel tests fail on Mac Leopard and can be seen in the Chromium Mac build bots:
http://build.chromium.org/buildbot/layout_test_results/webkit-rel-mac-webkit-org/34759/

The failures can also be seen when running locally on a mac machine running Apple&apos;s mac webkit build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>172564</commentid>
    <comment_count>13</comment_count>
    <who name="Benjamin Otte">otte</who>
    <bug_when>2009-12-16 16:20:42 -0800</bug_when>
    <thetext>Yeah, if it breaks stuff in some builds, they should be fixed, so back it out. (Just don&apos;t expect me to fix it, please, I don&apos;t have anything but Linux).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>172577</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-12-16 16:41:15 -0800</bug_when>
    <thetext>Committed r52229: &lt;http://trac.webkit.org/changeset/52229&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>172580</commentid>
    <comment_count>15</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-12-16 16:42:08 -0800</bug_when>
    <thetext>Rolled out, see above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1297378</commentid>
    <comment_count>16</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2017-04-14 04:07:46 -0700</bug_when>
    <thetext>Going to close this one for the moment, since it hasn&apos;t seen activity for 8 years or so.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>42597</attachid>
            <date>2009-11-05 14:25:25 -0800</date>
            <delta_ts>2009-12-16 08:28:31 -0800</delta_ts>
            <desc>patch</desc>
            <filename>0001-Get-rid-of-the-phase-argument-to-Image-drawPattern.patch</filename>
            <type>text/plain</type>
            <size>19703</size>
            <attacher name="Benjamin Otte">otte</attacher>
            
              <data encoding="base64">RnJvbSAyMjVjYmZjMjM4YjI4ZTZlZjYwZTU2NTI1ZDU5MTM2ZmZlNmZhZjQ4IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBCZW5qYW1pbiBPdHRlIDxvdHRlQGdub21lLm9yZz4KRGF0ZTog
VGh1LCA1IE5vdiAyMDA5IDIzOjE4OjQzICswMTAwClN1YmplY3Q6IFtQQVRDSF0gR2V0IHJpZCBv
ZiB0aGUgcGhhc2UgYXJndW1lbnQgdG8gSW1hZ2U6OmRyYXdQYXR0ZXJuLgoKVGhlIGFyZ3VtZW50
IGNhbiBiZSBleHByZXNzZWQgZXF1YWxseSB3ZWxsIGFzIHBhcnQgb2YgdGhlCnBhdHRlcm5UcmFu
c2Zvcm0uIEFsbCBiYWNrZW5kcyBidXQgdGhlIFF0IG9uZSBkaWQgZXhhY3RseSB0aGF0Cm1hbnVh
bGx5IGFueXdheS4KLS0tCiBXZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB8ICAgMzYgKysrKysrKysrKysrKysrKysrKysKIFdlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvQml0bWFwSW1hZ2UuaCAgICAgICAgICAgIHwgICAgMiArLQogV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HZW5lcmF0ZWRJbWFnZS5jcHAgICAgICAgfCAgICA0ICstCiBXZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dlbmVyYXRlZEltYWdlLmggICAgICAgICB8ICAgIDIgKy0KIFdl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwICAgICAgICAgICAgICAgIHwgICAgOSAr
Ky0tLQogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oICAgICAgICAgICAgICAgICAg
fCAgICAyICstCiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQ2Fpcm8uY3Bw
ICAgICB8ICAgIDggKy0tLQogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUNHLmNw
cCAgICAgICAgICAgfCAgICA2ICsrLS0KIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaGFpa3Uv
SW1hZ2VIYWlrdS5jcHAgICAgIHwgICAgMyArLQogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9x
dC9JbWFnZVF0LmNwcCAgICAgICAgICAgfCAgICAzICstCiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3NraWEvSW1hZ2VTa2lhLmNwcCAgICAgICB8ICAgIDUgKy0tCiAuLi4vZ3JhcGhpY3Mvd2lu
Y2UvR3JhcGhpY3NDb250ZXh0V2luY2UuY3BwICAgICAgICB8ICAgIDQgKy0KIC4uLi9wbGF0Zm9y
bS9ncmFwaGljcy93aW5jZS9JbWFnZUJ1ZmZlcldpbmNlLmNwcCAgIHwgICAgNiArKy0tCiBXZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3d4L0ltYWdlV3guY3BwICAgICAgICAgICB8ICAgMTAgKyst
LS0KIDE0IGZpbGVzIGNoYW5nZWQsIDYzIGluc2VydGlvbnMoKyksIDM3IGRlbGV0aW9ucygtKQoK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MWNkNTJmYy4uNzQyMjM4YiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzOSBAQAorMjAwOS0xMS0wNSAgQmVuamFtaW4gT3R0
ZSAgPG90dGVAZ25vbWUub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEdldCByaWQgb2YgdGhlIHBoYXNlIGFyZ3VtZW50IHRvIEltYWdlOjpkcmF3
UGF0dGVybi4KKworICAgICAgICBUaGUgYXJndW1lbnQgY2FuIGJlIGV4cHJlc3NlZCBlcXVhbGx5
IHdlbGwgYXMgcGFydCBvZiB0aGUKKyAgICAgICAgcGF0dGVyblRyYW5zZm9ybS4gQWxsIGJhY2tl
bmRzIGJ1dCB0aGUgUXQgb25lIGRpZCBleGFjdGx5IHRoYXQKKyAgICAgICAgbWFudWFsbHkgYW55
d2F5LgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HZW5lcmF0ZWRJbWFnZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpHZW5lcmF0ZWRJbWFnZTo6ZHJhd1BhdHRlcm4pOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0dlbmVyYXRlZEltYWdlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2U6OmRyYXdUaWxlZCk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9JbWFnZUNhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpkcmF3UGF0dGVy
bik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VDRy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZTo6ZHJhd1BhdHRlcm4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2hhaWt1L0ltYWdlSGFpa3UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2U6OmRyYXdQ
YXR0ZXJuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9xdC9JbWFnZVF0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkltYWdlOjpkcmF3UGF0dGVybik6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3Mvc2tpYS9JbWFnZVNraWEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2U6OmRy
YXdQYXR0ZXJuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW5jZS9HcmFwaGljc0Nv
bnRleHRXaW5jZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdC
aXRtYXBQYXR0ZXJuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW5jZS9JbWFnZUJ1
ZmZlcldpbmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oik6CisgICAgICAgIChXZWJDb3JlOjpC
dWZmZXJlZEltYWdlOjpkcmF3UGF0dGVybik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
d3gvSW1hZ2VXeC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHJhd1BhdHRl
cm4pOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2U6OmRyYXdQYXR0ZXJuKToKKwogMjAwOS0xMS0w
NSAgQmVuamFtaW4gT3R0ZSAgPG90dGVAZ25vbWUub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9C
aXRtYXBJbWFnZS5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oCmlu
ZGV4IDdlOGYyYjAuLjM0YzdiMGMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvQml0bWFwSW1hZ2UuaAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcElt
YWdlLmgKQEAgLTE3MSw3ICsxNzEsNyBAQCBwcm90ZWN0ZWQ6CiAKICNpZiBQTEFURk9STShXWCkg
fHwgKFBMQVRGT1JNKFdJTkNFKSAmJiAhUExBVEZPUk0oUVQpKQogICAgIHZpcnR1YWwgdm9pZCBk
cmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNv
bnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBwYXR0ZXJuVHJhbnNmb3JtLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgQ29tcG9zaXRlT3BlcmF0
b3IsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QpOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBDb21wb3NpdGVPcGVyYXRvciwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCk7CiAjZW5k
aWYKIAogI2lmIFBMQVRGT1JNKEhBSUtVKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HZW5lcmF0ZWRJbWFnZS5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dl
bmVyYXRlZEltYWdlLmNwcAppbmRleCBiYWM5ZGEwLi4xYWQxMmIzIDEwMDY0NAotLS0gYS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dlbmVyYXRlZEltYWdlLmNwcAorKysgYi9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dlbmVyYXRlZEltYWdlLmNwcApAQCAtNDgsNyArNDgsNyBAQCB2b2lk
IEdlbmVyYXRlZEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxv
YXRSZWN0JiBkc3RSZWN0LCBjbwogfQogCiB2b2lkIEdlbmVyYXRlZEltYWdlOjpkcmF3UGF0dGVy
bihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29u
c3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHBhdHRlcm5UcmFuc2Zvcm0sCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgQ29tcG9zaXRlT3Bl
cmF0b3IgY29tcG9zaXRlT3AsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QpCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCwgY29u
c3QgRmxvYXRSZWN0JiBkZXN0UmVjdCkKIHsKICAgICAvLyBDcmVhdGUgYSBCaXRtYXBJbWFnZSBh
bmQgY2FsbCBkcmF3UGF0dGVybiBvbiBpdC4KICAgICBPd25QdHI8SW1hZ2VCdWZmZXI+IGltYWdl
QnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShtX3NpemUpOwpAQCAtNjIsNyArNjIsNyBAQCB2
b2lkIEdlbmVyYXRlZEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQs
IGNvbnN0IEZsb2F0UmVjdCYgc3JjUgogICAgIEltYWdlKiBiaXRtYXAgPSBpbWFnZUJ1ZmZlci0+
aW1hZ2UoKTsKICAgICAKICAgICAvLyBOb3cganVzdCBjYWxsIGRyYXdUaWxlZCBvbiB0aGF0IGlt
YWdlLgotICAgIGJpdG1hcC0+ZHJhd1BhdHRlcm4oY29udGV4dCwgc3JjUmVjdCwgcGF0dGVyblRy
YW5zZm9ybSwgcGhhc2UsIGNvbXBvc2l0ZU9wLCBkZXN0UmVjdCk7CisgICAgYml0bWFwLT5kcmF3
UGF0dGVybihjb250ZXh0LCBzcmNSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBjb21wb3NpdGVPcCwg
ZGVzdFJlY3QpOwogfQogCiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dlbmVyYXRlZEltYWdlLmggYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dlbmVyYXRlZElt
YWdlLmgKaW5kZXggZGVhMGM1NC4uZmJkYzMyNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HZW5lcmF0ZWRJbWFnZS5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR2VuZXJhdGVkSW1hZ2UuaApAQCAtNTksNyArNTksNyBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6
CiAgICAgdmlydHVhbCB2b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0
JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yKTsK
ICAgICB2aXJ0dWFsIHZvaWQgZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxv
YXRSZWN0JiBzcmNSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgcGF0dGVyblRyYW5z
Zm9ybSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRmxvYXRQb2ludCYgcGhh
c2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0KTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgQ29tcG9zaXRlT3BlcmF0b3IsIGNvbnN0IEZsb2F0UmVj
dCYgZGVzdFJlY3QpOwogICAgIAogICAgIEdlbmVyYXRlZEltYWdlKFBhc3NSZWZQdHI8R2VuZXJh
dG9yPiBnZW5lcmF0b3IsIGNvbnN0IEludFNpemUmIHNpemUpCiAgICAgICAgIDogbV9nZW5lcmF0
b3IoZ2VuZXJhdG9yKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZS5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcAppbmRleCA0ZTNlNzNi
Li5hMjg1M2Y5IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNw
cAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcApAQCAtMTQxLDkgKzE0
MSw5IEBAIHZvaWQgSW1hZ2U6OmRyYXdUaWxlZChHcmFwaGljc0NvbnRleHQqIGN0eHQsIGNvbnN0
IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsCiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
LSAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBwYXR0ZXJuVHJhbnNmb3JtID0gVHJhbnNmb3JtYXRp
b25NYXRyaXgoKS5zY2FsZU5vblVuaWZvcm0oc2NhbGUud2lkdGgoKSwgc2NhbGUuaGVpZ2h0KCkp
OworICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHBhdHRlcm5UcmFuc2Zvcm0gPSBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCgpLnRyYW5zbGF0ZShvbmVUaWxlUmVjdC54KCksIG9uZVRpbGVSZWN0LnkoKSku
c2NhbGVOb25Vbmlmb3JtKHNjYWxlLndpZHRoKCksIHNjYWxlLmhlaWdodCgpKTsKICAgICBGbG9h
dFJlY3QgdGlsZVJlY3QoRmxvYXRQb2ludCgpLCBpbnRyaW5zaWNUaWxlU2l6ZSk7ICAgIAotICAg
IGRyYXdQYXR0ZXJuKGN0eHQsIHRpbGVSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBvbmVUaWxlUmVj
dC5sb2NhdGlvbigpLCBvcCwgZGVzdFJlY3QpOworICAgIGRyYXdQYXR0ZXJuKGN0eHQsIHRpbGVS
ZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBvcCwgZGVzdFJlY3QpOwogICAgIAogICAgIHN0YXJ0QW5p
bWF0aW9uKCk7CiB9CkBAIC0xNTcsNyArMTU3LDYgQEAgdm9pZCBJbWFnZTo6ZHJhd1RpbGVkKEdy
YXBoaWNzQ29udGV4dCogY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG8K
ICAgICB9CiAgICAgCiAgICAgRmxvYXRTaXplIHNjYWxlID0gY2FsY3VsYXRlUGF0dGVyblNjYWxl
KGRzdFJlY3QsIHNyY1JlY3QsIGhSdWxlLCB2UnVsZSk7Ci0gICAgVHJhbnNmb3JtYXRpb25NYXRy
aXggcGF0dGVyblRyYW5zZm9ybSA9IFRyYW5zZm9ybWF0aW9uTWF0cml4KCkuc2NhbGVOb25Vbmlm
b3JtKHNjYWxlLndpZHRoKCksIHNjYWxlLmhlaWdodCgpKTsKIAogICAgIC8vIFdlIHdhbnQgdG8g
Y29uc3RydWN0IHRoZSBwaGFzZSBzdWNoIHRoYXQgdGhlIHBhdHRlcm4gaXMgY2VudGVyZWQgKHdo
ZW4gc3RyZXRjaCBpcyBub3QKICAgICAvLyBzZXQgZm9yIGEgcGFydGljdWxhciBydWxlKS4KQEAg
LTE2Nyw5ICsxNjYsOSBAQCB2b2lkIEltYWdlOjpkcmF3VGlsZWQoR3JhcGhpY3NDb250ZXh0KiBj
dHh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsbwogICAgICAgICBoUGhhc2Ug
LT0gZm1vZGYoZHN0UmVjdC53aWR0aCgpLCBzY2FsZS53aWR0aCgpICogc3JjUmVjdC53aWR0aCgp
KSAvIDIuMGY7CiAgICAgaWYgKHZSdWxlID09IEltYWdlOjpSZXBlYXRUaWxlKQogICAgICAgICB2
UGhhc2UgLT0gZm1vZGYoZHN0UmVjdC5oZWlnaHQoKSwgc2NhbGUuaGVpZ2h0KCkgKiBzcmNSZWN0
LmhlaWdodCgpKSAvIDIuMGY7Ci0gICAgRmxvYXRQb2ludCBwYXR0ZXJuUGhhc2UoZHN0UmVjdC54
KCkgLSBoUGhhc2UsIGRzdFJlY3QueSgpIC0gdlBoYXNlKTsKKyAgICBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCBwYXR0ZXJuVHJhbnNmb3JtID0gVHJhbnNmb3JtYXRpb25NYXRyaXgoKS50cmFuc2xhdGUo
ZHN0UmVjdC54KCkgLSBoUGhhc2UsIGRzdFJlY3QueSgpIC0gdlBoYXNlKS5zY2FsZU5vblVuaWZv
cm0oc2NhbGUud2lkdGgoKSwgc2NhbGUuaGVpZ2h0KCkpOwogICAgIAotICAgIGRyYXdQYXR0ZXJu
KGN0eHQsIHNyY1JlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBhdHRlcm5QaGFzZSwgb3AsIGRzdFJl
Y3QpOworICAgIGRyYXdQYXR0ZXJuKGN0eHQsIHNyY1JlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIG9w
LCBkc3RSZWN0KTsKIAogICAgIHN0YXJ0QW5pbWF0aW9uKCk7CiB9CmRpZmYgLS1naXQgYS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmggYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlLmgKaW5kZXggYzBkMDdjOS4uYzAwYTg2OSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZS5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2UuaApAQCAtMTY4LDcgKzE2OCw3IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIENvbG9yIHNv
bGlkQ29sb3IoKSBjb25zdCB7IHJldHVybiBDb2xvcigpOyB9CiAgICAgCiAgICAgdmlydHVhbCB2
b2lkIGRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVj
dCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHBhdHRlcm5UcmFuc2Zvcm0sCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBDb21wb3NpdGVP
cGVyYXRvciwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCk7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIENvbXBvc2l0ZU9wZXJhdG9yLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0KTsK
IAogcHJpdmF0ZToKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2RhdGE7IC8vIFRoZSBlbmNv
ZGVkIHJhdyBkYXRhIGZvciB0aGUgaW1hZ2UuIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9JbWFnZUNhaXJvLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vSW1hZ2VDYWlyby5jcHAKaW5kZXggNzg3ODZlZC4uNGQ3NWViNCAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUNhaXJvLmNwcAorKysgYi9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQ2Fpcm8uY3BwCkBAIC0xNDcsMTYg
KzE0NywxMiBAQCB2b2lkIEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCogY29udGV4
dCwgY29uc3QgRmxvYXRSZWN0JiBkc3QsIGNvbnN0IEZsbwogfQogCiB2b2lkIEltYWdlOjpkcmF3
UGF0dGVybihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJl
Y3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBwYXR0ZXJuVHJhbnNmb3JtLAotICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIENvbXBvc2l0ZU9wZXJh
dG9yIG9wLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0KQorICAgICAgICAgICAgICAgICAgICAg
ICAgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QpCiB7CiAg
ICAgY2Fpcm9fc3VyZmFjZV90KiBpbWFnZSA9IG5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7
CiAgICAgaWYgKCFpbWFnZSkgLy8gSWYgaXQncyB0b28gZWFybHkgd2Ugd29uJ3QgaGF2ZSBhbiBp
bWFnZSB5ZXQuCiAgICAgICAgIHJldHVybjsKIAotICAgIC8vIEF2b2lkIE5hTgotICAgIGlmICgh
aXNmaW5pdGUocGhhc2UueCgpKSB8fCAhaXNmaW5pdGUocGhhc2UueSgpKSkKLSAgICAgICByZXR1
cm47Ci0KICAgICBjYWlyb190KiBjciA9IGNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpOwogICAg
IGNvbnRleHQtPnNhdmUoKTsKIApAQCAtMTc3LDcgKzE3Myw3IEBAIHZvaWQgSW1hZ2U6OmRyYXdQ
YXR0ZXJuKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVj
dCwgY29uCiAgICAgY2Fpcm9fcGF0dGVybl9zZXRfZXh0ZW5kKHBhdHRlcm4sIENBSVJPX0VYVEVO
RF9SRVBFQVQpOwogCiAgICAgY2Fpcm9fbWF0cml4X3QgcGF0dGVybl9tYXRyaXggPSBjYWlyb19t
YXRyaXhfdChwYXR0ZXJuVHJhbnNmb3JtKTsKLSAgICBjYWlyb19tYXRyaXhfdCBwaGFzZV9tYXRy
aXggPSB7MSwgMCwgMCwgMSwgcGhhc2UueCgpICsgdGlsZVJlY3QueCgpICogcGF0dGVyblRyYW5z
Zm9ybS5hKCksIHBoYXNlLnkoKSArIHRpbGVSZWN0LnkoKSAqIHBhdHRlcm5UcmFuc2Zvcm0uZCgp
fTsKKyAgICBjYWlyb19tYXRyaXhfdCBwaGFzZV9tYXRyaXggPSB7MSwgMCwgMCwgMSwgdGlsZVJl
Y3QueCgpICogcGF0dGVyblRyYW5zZm9ybS5hKCksIHRpbGVSZWN0LnkoKSAqIHBhdHRlcm5UcmFu
c2Zvcm0uZCgpfTsKICAgICBjYWlyb19tYXRyaXhfdCBjb21iaW5lZDsKICAgICBjYWlyb19tYXRy
aXhfbXVsdGlwbHkoJmNvbWJpbmVkLCAmcGF0dGVybl9tYXRyaXgsICZwaGFzZV9tYXRyaXgpOwog
ICAgIGNhaXJvX21hdHJpeF9pbnZlcnQoJmNvbWJpbmVkKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VDRy5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL0ltYWdlQ0cuY3BwCmluZGV4IDRkYTcwMTguLjIzZGQ4Y2QgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VDRy5jcHAKKysrIGIvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUNHLmNwcApAQCAtMjIzLDcgKzIyMyw3IEBAIHN0YXRpYyB2
b2lkIGRyYXdQYXR0ZXJuQ2FsbGJhY2sodm9pZCogaW5mbywgQ0dDb250ZXh0UmVmIGNvbnRleHQp
CiB9CiAKIHZvaWQgSW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCogY3R4dCwgY29u
c3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHBhdHRl
cm5UcmFuc2Zvcm0sCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBGbG9hdFBvaW50JiBw
aGFzZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QpCisg
ICAgICAgICAgICAgICAgICAgICAgICBDb21wb3NpdGVPcGVyYXRvciBvcCwgY29uc3QgRmxvYXRS
ZWN0JiBkZXN0UmVjdCkKIHsKICAgICBpZiAoIW5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkp
CiAgICAgICAgIHJldHVybjsKQEAgLTI0NSw4ICsyNDUsOCBAQCB2b2lkIEltYWdlOjpkcmF3UGF0
dGVybihHcmFwaGljc0NvbnRleHQqIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNv
bnN0CiAgICAgCiAgICAgLy8gV2UgaGF2ZSB0byBhZGp1c3QgdGhlIHBoYXNlIHRvIGRlYWwgd2l0
aCB0aGUgZmFjdCB3ZSdyZSBpbiBDYXJ0ZXNpYW4gc3BhY2Ugbm93ICh3aXRoIHRoZSBib3R0b20g
bGVmdCBjb3JuZXIgb2YgZGVzdFJlY3QgYmVpbmcKICAgICAvLyB0aGUgb3JpZ2luKS4KLSAgICBm
bG9hdCBhZGp1c3RlZFggPSBwaGFzZS54KCkgLSBkZXN0UmVjdC54KCkgKyB0aWxlUmVjdC54KCkg
KiBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHBhdHRlcm5UcmFuc2Zvcm0uYSgpKTsgLy8gV2UgdHJh
bnNsYXRlZCB0aGUgY29udGV4dCBzbyB0aGF0IGRlc3RSZWN0LngoKSBpcyB0aGUgb3JpZ2luLCBz
byBzdWJ0cmFjdCBpdCBvdXQuCi0gICAgZmxvYXQgYWRqdXN0ZWRZID0gZGVzdFJlY3QuaGVpZ2h0
KCkgLSAocGhhc2UueSgpIC0gZGVzdFJlY3QueSgpICsgdGlsZVJlY3QueSgpICogbmFycm93UHJl
Y2lzaW9uVG9GbG9hdChwYXR0ZXJuVHJhbnNmb3JtLmQoKSkgKyBzY2FsZWRUaWxlSGVpZ2h0KTsK
KyAgICBmbG9hdCBhZGp1c3RlZFggPSAtIGRlc3RSZWN0LngoKSArIHRpbGVSZWN0LngoKSAqIG5h
cnJvd1ByZWNpc2lvblRvRmxvYXQocGF0dGVyblRyYW5zZm9ybS5hKCkpOyAvLyBXZSB0cmFuc2xh
dGVkIHRoZSBjb250ZXh0IHNvIHRoYXQgZGVzdFJlY3QueCgpIGlzIHRoZSBvcmlnaW4sIHNvIHN1
YnRyYWN0IGl0IG91dC4KKyAgICBmbG9hdCBhZGp1c3RlZFkgPSBkZXN0UmVjdC5oZWlnaHQoKSAr
IGRlc3RSZWN0LnkoKSAtIHRpbGVSZWN0LnkoKSAqIG5hcnJvd1ByZWNpc2lvblRvRmxvYXQocGF0
dGVyblRyYW5zZm9ybS5kKCkpIC0gc2NhbGVkVGlsZUhlaWdodDsKIAogICAgIENHSW1hZ2VSZWYg
dGlsZUltYWdlID0gbmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKICAgICBmbG9hdCBoID0g
Q0dJbWFnZUdldEhlaWdodCh0aWxlSW1hZ2UpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9oYWlrdS9JbWFnZUhhaWt1LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvaGFpa3UvSW1hZ2VIYWlrdS5jcHAKaW5kZXggMzIzZDZhYi4uNWNhZjAwNSAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9oYWlrdS9JbWFnZUhhaWt1LmNwcAorKysgYi9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hhaWt1L0ltYWdlSGFpa3UuY3BwCkBAIC0xMDksOSAr
MTA5LDggQEAgdm9pZCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGN0eHQsIGNv
bnN0IEZsb2F0UmVjdCYgZHN0LCBjb25zdCBGbG9hdFIKICAgICBjdHh0LT5yZXN0b3JlKCk7CiB9
CiAKLXZvaWQgSW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29u
c3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHBhdHRl
cm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHNyY1BvaW50LCBDb21wb3NpdGVPcGVyYXRv
ciBvcCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0KQordm9pZCBJbWFnZTo6ZHJhd1BhdHRlcm4o
R3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25z
dCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgcGF0dGVyblRyYW5zZm9ybSwgQ29tcG9zaXRlT3BlcmF0
b3Igb3AsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCkKIHsKLSAgICAvLyBGSVhNRTogZmluaXNo
IHRoaXMgdG8gc3VwcG9ydCBhbHNvIHBoYXNlZCBwb3NpdGlvbiAoc3JjUG9pbnQpCiAgICAgc3Rh
cnRBbmltYXRpb24oKTsKIAogICAgIEJCaXRtYXAqIGltYWdlID0gbmF0aXZlSW1hZ2VGb3JDdXJy
ZW50RnJhbWUoKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW1h
Z2VRdC5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdlUXQuY3BwCmluZGV4
IGI2NzExMDcuLmU0YjE0MzggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
cXQvSW1hZ2VRdC5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9JbWFnZVF0
LmNwcApAQCAtOTQsNyArOTQsNyBAQCBQYXNzUmVmUHRyPEltYWdlPiBJbWFnZTo6bG9hZFBsYXRm
b3JtUmVzb3VyY2UoY29uc3QgY2hhciogbmFtZSkKIH0KIAogdm9pZCBJbWFnZTo6ZHJhd1BhdHRl
cm4oR3JhcGhpY3NDb250ZXh0KiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25z
dCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgcGF0dGVyblRyYW5zZm9ybSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBDb21wb3NpdGVPcGVyYXRvciBvcCwg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCkKKyAgICAgICAgICAgICAgICAgICAgICAgIENvbXBv
c2l0ZU9wZXJhdG9yIG9wLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0KQogewogICAgIFFQaXht
YXAqIGZyYW1lUGl4bWFwID0gbmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKICAgICBpZiAo
IWZyYW1lUGl4bWFwKSAvLyBJZiBpdCdzIHRvbyBlYXJseSB3ZSB3b24ndCBoYXZlIGFuIGltYWdl
IHlldC4KQEAgLTExMiw3ICsxMTIsNiBAQCB2b2lkIEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGlj
c0NvbnRleHQqIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0CiAgICAgUVBh
aW50ZXIqIHAgPSBjdHh0LT5wbGF0Zm9ybUNvbnRleHQoKTsKICAgICBpZiAoIXBpeG1hcC5oYXNB
bHBoYSgpICYmIHAtPmNvbXBvc2l0aW9uTW9kZSgpID09IFFQYWludGVyOjpDb21wb3NpdGlvbk1v
ZGVfU291cmNlT3ZlcikKICAgICAgICAgcC0+c2V0Q29tcG9zaXRpb25Nb2RlKFFQYWludGVyOjpD
b21wb3NpdGlvbk1vZGVfU291cmNlKTsKLSAgICBwLT5zZXRCcnVzaE9yaWdpbihwaGFzZSk7CiAg
ICAgcC0+ZmlsbFJlY3QoZGVzdFJlY3QsIGIpOwogICAgIGN0eHQtPnJlc3RvcmUoKTsKIApkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL0ltYWdlU2tpYS5jcHAgYi9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvSW1hZ2VTa2lhLmNwcAppbmRleCBlY2FiMzY0
Li40YjA5MGUxIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvSW1h
Z2VTa2lhLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvSW1hZ2VTa2lh
LmNwcApAQCAtMzAxLDcgKzMwMSw2IEBAIFBhc3NSZWZQdHI8SW1hZ2U+IEltYWdlOjpsb2FkUGxh
dGZvcm1SZXNvdXJjZShjb25zdCBjaGFyICpuYW1lKQogdm9pZCBJbWFnZTo6ZHJhd1BhdHRlcm4o
R3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
RmxvYXRSZWN0JiBmbG9hdFNyY1JlY3QsCiAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCYgcGF0dGVyblRyYW5zZm9ybSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLAogICAgICAgICAgICAgICAgICAgICAgICAg
Q29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AsCiAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0KQogewpAQCAtMzY0LDkgKzM2Myw5IEBAIHZvaWQgSW1h
Z2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwKICAgICAvLyBvcmlnaW4g
b2YgdGhlIGRlc3RpbmF0aW9uIHJlY3QsIHdoaWNoIGlzIHdoYXQgV2ViS2l0IGV4cGVjdHMuIFNr
aWEgdXNlcwogICAgIC8vIHRoZSBjb29yZGluYXRlIHN5c3RlbSBvcmlnaW4gYXMgdGhlIGJhc2Ug
Zm9yIHRoZSBwYXR0ZXIuIElmIFdlYktpdCB3YW50cwogICAgIC8vIGEgc2hpZnRlZCBpbWFnZSwg
aXQgd2lsbCBzaGlmdCBpdCBmcm9tIHRoZXJlIHVzaW5nIHRoZSBwYXR0ZXJuVHJhbnNmb3JtLgot
ICAgIGZsb2F0IGFkanVzdGVkWCA9IHBoYXNlLngoKSArIG5vcm1TcmNSZWN0LngoKSAqCisgICAg
ZmxvYXQgYWRqdXN0ZWRYID0gbm9ybVNyY1JlY3QueCgpICoKICAgICAgICAgICAgICAgICAgICAg
ICBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHBhdHRlcm5UcmFuc2Zvcm0uYSgpKTsKLSAgICBmbG9h
dCBhZGp1c3RlZFkgPSBwaGFzZS55KCkgKyBub3JtU3JjUmVjdC55KCkgKgorICAgIGZsb2F0IGFk
anVzdGVkWSA9IG5vcm1TcmNSZWN0LnkoKSAqCiAgICAgICAgICAgICAgICAgICAgICAgbmFycm93
UHJlY2lzaW9uVG9GbG9hdChwYXR0ZXJuVHJhbnNmb3JtLmQoKSk7CiAgICAgbWF0cml4LnBvc3RU
cmFuc2xhdGUoU2tGbG9hdFRvU2NhbGFyKGFkanVzdGVkWCksCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgU2tGbG9hdFRvU2NhbGFyKGFkanVzdGVkWSkpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW5jZS9HcmFwaGljc0NvbnRleHRXaW5jZS5jcHAgYi9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3dpbmNlL0dyYXBoaWNzQ29udGV4dFdpbmNlLmNwcAppbmRleCBm
MzA4ODQwLi5mYzc4ODU1IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dp
bmNlL0dyYXBoaWNzQ29udGV4dFdpbmNlLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3dpbmNlL0dyYXBoaWNzQ29udGV4dFdpbmNlLmNwcApAQCAtMTg3MSw3ICsxODcxLDcgQEAg
dm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdCaXRtYXAoU2hhcmVkQml0bWFwKiBibXAsIGNvbnN0
IEludFJlY3QmIGRzdFJlY3RJbiwgY28KIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdC
aXRtYXBQYXR0ZXJuKFNoYXJlZEJpdG1hcCogYm1wLCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0
SW4sIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBwYXR0ZXJuVHJhbnNmb3JtLAotICAgICAg
ICAgICAgICAgIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBDb21wb3NpdGVPcGVyYXRvciBvcCwg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdEluLCBjb25zdCBJbnRTaXplJiBvcmlnU291cmNlU2l6
ZSkKKyAgICAgICAgICAgICAgICBDb21wb3NpdGVPcGVyYXRvciBvcCwgY29uc3QgRmxvYXRSZWN0
JiBkZXN0UmVjdEluLCBjb25zdCBJbnRTaXplJiBvcmlnU291cmNlU2l6ZSkKIHsKICAgICBpZiAo
IW1fZGF0YS0+bV9vcGFjaXR5KQogICAgICAgICByZXR1cm47CkBAIC0xODkyLDcgKzE4OTIsNyBA
QCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0JpdG1hcFBhdHRlcm4oU2hhcmVkQml0bWFwKiBi
bXAsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZQogICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHRyYW5z
Zm9ybSA9IG1fZGF0YS0+bV90cmFuc2Zvcm07CiAgICAgdHJhbnNmb3JtLnRyYW5zbGF0ZShtb3Zl
ZC53aWR0aCgpLCBtb3ZlZC5oZWlnaHQoKSk7CiAKLSAgICBibXAtPmRyYXdQYXR0ZXJuKGRjLCB0
cmFuc2Zvcm0sIHRpbGVSZWN0SW4sIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBvcCwgZGVzdFJl
Y3RJbiwgb3JpZ1NvdXJjZVNpemUpOworICAgIGJtcC0+ZHJhd1BhdHRlcm4oZGMsIHRyYW5zZm9y
bSwgdGlsZVJlY3RJbiwgcGF0dGVyblRyYW5zZm9ybSwgb3AsIGRlc3RSZWN0SW4sIG9yaWdTb3Vy
Y2VTaXplKTsKIAogICAgIGlmICghYm1wLT5oYXNBbHBoYSgpKQogICAgICAgICB0cmFuc3BhcmVu
dERDLmZpbGxBbHBoYUNoYW5uZWwoKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luY2UvSW1hZ2VCdWZmZXJXaW5jZS5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3dpbmNlL0ltYWdlQnVmZmVyV2luY2UuY3BwCmluZGV4IDM0MTdmNWYuLjVmNzhmZDggMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luY2UvSW1hZ2VCdWZmZXJXaW5j
ZS5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW5jZS9JbWFnZUJ1ZmZlcldp
bmNlLmNwcApAQCAtNDMsNyArNDMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB1bnNpZ25lZCBk
ZWNvZGVkU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIDA7IH0KICAgICB2aXJ0dWFsIHZvaWQgZHJhdyhH
cmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVj
dCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IpOwogICAgIHZpcnR1YWwgdm9pZCBkcmF3UGF0
dGVybihHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IFRy
YW5zZm9ybWF0aW9uTWF0cml4JiBwYXR0ZXJuVHJhbnNmb3JtLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgQ29tcG9zaXRlT3BlcmF0b3IsIGNv
bnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBD
b21wb3NpdGVPcGVyYXRvciwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCk7CiAKICAgICBjb25z
dCBJbWFnZUJ1ZmZlckRhdGEqIG1fZGF0YTsKIH07CkBAIC01Niw5ICs1Niw5IEBAIHZvaWQgQnVm
ZmVyZWRJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYg
ZHN0UmVjdCwgY29uc3QKIH0KIAogdm9pZCBCdWZmZXJlZEltYWdlOjpkcmF3UGF0dGVybihHcmFw
aGljc0NvbnRleHQqIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3RJbiwgY29uc3QgVHJh
bnNmb3JtYXRpb25NYXRyaXgmIHBhdHRlcm5UcmFuc2Zvcm0sCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBDb21wb3NpdGVPcGVyYXRvciBvcCwg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Q29tcG9zaXRlT3BlcmF0b3Igb3AsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QpCiB7Ci0gICAg
bV9kYXRhLT5tX2JpdG1hcC0+ZHJhd1BhdHRlcm4oY3R4dCwgdGlsZVJlY3RJbiwgcGF0dGVyblRy
YW5zZm9ybSwgcGhhc2UsIG9wLCBkZXN0UmVjdCwgc2l6ZSgpKTsKKyAgICBtX2RhdGEtPm1fYml0
bWFwLT5kcmF3UGF0dGVybihjdHh0LCB0aWxlUmVjdEluLCBwYXR0ZXJuVHJhbnNmb3JtLCBvcCwg
ZGVzdFJlY3QsIHNpemUoKSk7CiB9CiAKIEltYWdlQnVmZmVyRGF0YTo6SW1hZ2VCdWZmZXJEYXRh
KGNvbnN0IEludFNpemUmIHNpemUpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3d4L0ltYWdlV3guY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93eC9JbWFnZVd4
LmNwcAppbmRleCBiZDEyOWNmLi4zYzNjY2NhIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3d4L0ltYWdlV3guY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d3gvSW1hZ2VXeC5jcHAKQEAgLTE3Niw3ICsxNzYsNyBAQCB2b2lkIEJpdG1hcEltYWdlOjpkcmF3
KEdyYXBoaWNzQ29udGV4dCogY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3QsIGNvbnN0IEZsb2F0
UgogICAgICAgICBvYnNlcnZlci0+ZGlkRHJhdyh0aGlzKTsKIH0KIAotdm9pZCBCaXRtYXBJbWFn
ZTo6ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0KiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIHNy
Y1JlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25z
dCBGbG9hdFBvaW50JiBwaGFzZSwgQ29tcG9zaXRlT3BlcmF0b3IsIGNvbnN0IEZsb2F0UmVjdCYg
ZHN0UmVjdCkKK3ZvaWQgQml0bWFwSW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCog
Y3R4dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJp
eCYgcGF0dGVyblRyYW5zZm9ybSwgQ29tcG9zaXRlT3BlcmF0b3IsIGNvbnN0IEZsb2F0UmVjdCYg
ZHN0UmVjdCkKIHsKICAgICBpZiAoIW1fc291cmNlLmluaXRpYWxpemVkKCkpCiAgICAgICAgIHJl
dHVybjsKQEAgLTIwMSwxMCArMjAxLDggQEAgdm9pZCBCaXRtYXBJbWFnZTo6ZHJhd1BhdHRlcm4o
R3JhcGhpY3NDb250ZXh0KiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGMKICNpZiBV
U0UoV1hHQykKICAgICB3eEdyYXBoaWNzQ29udGV4dCogZ2MgPSBjb250ZXh0LT5HZXRHcmFwaGlj
c0NvbnRleHQoKTsKIAotICAgIGZsb2F0IGFkanVzdGVkWCA9IHBoYXNlLngoKSArIHNyY1JlY3Qu
eCgpICoKLSAgICAgICAgICAgICAgICAgICAgICBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHBhdHRl
cm5UcmFuc2Zvcm0uYSgpKTsKLSAgICBmbG9hdCBhZGp1c3RlZFkgPSBwaGFzZS55KCkgKyBzcmNS
ZWN0LnkoKSAqCi0gICAgICAgICAgICAgICAgICAgICAgbmFycm93UHJlY2lzaW9uVG9GbG9hdChw
YXR0ZXJuVHJhbnNmb3JtLmQoKSk7CisgICAgZmxvYXQgYWRqdXN0ZWRYID0gc3JjUmVjdC54KCkg
KiBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHBhdHRlcm5UcmFuc2Zvcm0uYSgpKTsKKyAgICBmbG9h
dCBhZGp1c3RlZFkgPSBzcmNSZWN0LnkoKSAqIG5hcnJvd1ByZWNpc2lvblRvRmxvYXQocGF0dGVy
blRyYW5zZm9ybS5kKCkpOwogICAgICAgICAgICAgICAgICAgICAgIAogICAgIGdjLT5Db25jYXRU
cmFuc2Zvcm0ocGF0dGVyblRyYW5zZm9ybSk7CiAjZWxzZQpAQCAtMjYxLDcgKzI1OSw3IEBAIHZv
aWQgQml0bWFwSW1hZ2U6OmludmFsaWRhdGVQbGF0Zm9ybURhdGEoKQogCiB9CiAKLXZvaWQgSW1h
Z2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVj
dCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZs
b2F0UG9pbnQmIHBoYXNlLCBDb21wb3NpdGVPcGVyYXRvciwgY29uc3QgRmxvYXRSZWN0JiBkZXN0
UmVjdCkKK3ZvaWQgSW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHBhdHRlcm5UcmFu
c2Zvcm0sIENvbXBvc2l0ZU9wZXJhdG9yLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0KQogewog
ICAgIG5vdEltcGxlbWVudGVkKCk7CiB9Ci0tIAoxLjYuMy4zCgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>44979</attachid>
            <date>2009-12-16 08:28:31 -0800</date>
            <delta_ts>2009-12-16 10:43:27 -0800</delta_ts>
            <desc>patch v2</desc>
            <filename>diff</filename>
            <type>text/plain</type>
            <size>19716</size>
            <attacher name="Benjamin Otte">otte</attacher>
            
              <data encoding="base64">Y29tbWl0IDFlZGIwNWIyNzE0NTJjNzg4ZGYzMjY4OWZhYjMyYTZhMDAwMDEyNmIKQXV0aG9yOiBC
ZW5qYW1pbiBPdHRlIDxvdHRlQGdub21lLm9yZz4KRGF0ZTogICBUaHUgTm92IDUgMjM6MTg6NDMg
MjAwOSArMDEwMAoKICAgIEdldCByaWQgb2YgdGhlIHBoYXNlIGFyZ3VtZW50IHRvIEltYWdlOjpk
cmF3UGF0dGVybi4KICAgIAogICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTMxMTg3CiAgICAKICAgIFRoZSBhcmd1bWVudCBjYW4gYmUgZXhwcmVzc2VkIGVxdWFsbHkg
d2VsbCBhcyBwYXJ0IG9mIHRoZQogICAgcGF0dGVyblRyYW5zZm9ybS4gQWxsIGJhY2tlbmRzIGJ1
dCB0aGUgUXQgb25lIGRpZCBleGFjdGx5IHRoYXQKICAgIG1hbnVhbGx5IGFueXdheS4KCmRpZmYg
LS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDkyMWJh
MjIuLjYzMmE4OGUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsNDAgQEAKKzIwMDktMTEtMDUgIEJlbmphbWluIE90dGUgIDxv
dHRlQGdub21lLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBHZXQgcmlkIG9mIHRoZSBwaGFzZSBhcmd1bWVudCB0byBJbWFnZTo6ZHJhd1BhdHRl
cm4uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMTE4
NworCisgICAgICAgIFRoZSBhcmd1bWVudCBjYW4gYmUgZXhwcmVzc2VkIGVxdWFsbHkgd2VsbCBh
cyBwYXJ0IG9mIHRoZQorICAgICAgICBwYXR0ZXJuVHJhbnNmb3JtLiBBbGwgYmFja2VuZHMgYnV0
IHRoZSBRdCBvbmUgZGlkIGV4YWN0bHkgdGhhdAorICAgICAgICBtYW51YWxseSBhbnl3YXkuCisK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0dlbmVyYXRlZEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okdl
bmVyYXRlZEltYWdlOjpkcmF3UGF0dGVybik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
R2VuZXJhdGVkSW1hZ2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZTo6ZHJhd1RpbGVkKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0lt
YWdlQ2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2U6OmRyYXdQYXR0ZXJuKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUNHLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlOjpkcmF3UGF0dGVybik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvaGFp
a3UvSW1hZ2VIYWlrdS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZTo6ZHJhd1BhdHRlcm4p
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdlUXQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2U6OmRyYXdQYXR0ZXJuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9za2lhL0ltYWdlU2tpYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZTo6ZHJhd1BhdHRl
cm4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbmNlL0dyYXBoaWNzQ29udGV4dFdp
bmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd0JpdG1hcFBh
dHRlcm4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbmNlL0ltYWdlQnVmZmVyV2lu
Y2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6KToKKyAgICAgICAgKFdlYkNvcmU6OkJ1ZmZlcmVk
SW1hZ2U6OmRyYXdQYXR0ZXJuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93eC9JbWFn
ZVd4LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkcmF3UGF0dGVybik6Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZTo6ZHJhd1BhdHRlcm4pOgorCiAyMDA5LTExLTA0ICBCZW5q
YW1pbiBPdHRlICA8b3R0ZUBnbm9tZS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcElt
YWdlLmggYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmgKaW5kZXggNjE0
ZWJhZi4uMzI4MzU0OSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRt
YXBJbWFnZS5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaApA
QCAtMTcxLDcgKzE3MSw3IEBAIHByb3RlY3RlZDoKIAogI2lmIFBMQVRGT1JNKFdYKSB8fCAoUExB
VEZPUk0oV0lOQ0UpICYmICFQTEFURk9STShRVCkpCiAgICAgdmlydHVhbCB2b2lkIGRyYXdQYXR0
ZXJuKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgVHJh
bnNmb3JtYXRpb25NYXRyaXgmIHBhdHRlcm5UcmFuc2Zvcm0sCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JT
cGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QpOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29t
cG9zaXRlT3BlcmF0b3IsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QpOwogI2VuZGlmCiAKICNp
ZiBQTEFURk9STShIQUlLVSkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R2VuZXJhdGVkSW1hZ2UuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HZW5lcmF0ZWRJ
bWFnZS5jcHAKaW5kZXggZWVjN2ZmYi4uYjcwMWM2MiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HZW5lcmF0ZWRJbWFnZS5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HZW5lcmF0ZWRJbWFnZS5jcHAKQEAgLTQ4LDcgKzQ4LDcgQEAgdm9pZCBHZW5lcmF0
ZWRJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYg
ZHN0UmVjdCwgY28KIH0KIAogdm9pZCBHZW5lcmF0ZWRJbWFnZTo6ZHJhd1BhdHRlcm4oR3JhcGhp
Y3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IFRyYW5z
Zm9ybWF0aW9uTWF0cml4JiBwYXR0ZXJuVHJhbnNmb3JtLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIENvbG9yU3BhY2Ugc3R5bGVDb2xv
clNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCwgY29uc3QgRmxvYXRSZWN0JiBk
ZXN0UmVjdCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbG9yU3BhY2Ugc3R5
bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCwgY29uc3QgRmxvYXRS
ZWN0JiBkZXN0UmVjdCkKIHsKICAgICAvLyBDcmVhdGUgYSBCaXRtYXBJbWFnZSBhbmQgY2FsbCBk
cmF3UGF0dGVybiBvbiBpdC4KICAgICBPd25QdHI8SW1hZ2VCdWZmZXI+IGltYWdlQnVmZmVyID0g
SW1hZ2VCdWZmZXI6OmNyZWF0ZShtX3NpemUpOwpAQCAtNjIsNyArNjIsNyBAQCB2b2lkIEdlbmVy
YXRlZEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUgogICAgIEltYWdlKiBiaXRtYXAgPSBpbWFnZUJ1ZmZlci0+aW1hZ2UoKTsK
ICAgICAKICAgICAvLyBOb3cganVzdCBjYWxsIGRyYXdUaWxlZCBvbiB0aGF0IGltYWdlLgotICAg
IGJpdG1hcC0+ZHJhd1BhdHRlcm4oY29udGV4dCwgc3JjUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwg
cGhhc2UsIHN0eWxlQ29sb3JTcGFjZSwgY29tcG9zaXRlT3AsIGRlc3RSZWN0KTsKKyAgICBiaXRt
YXAtPmRyYXdQYXR0ZXJuKGNvbnRleHQsIHNyY1JlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHN0eWxl
Q29sb3JTcGFjZSwgY29tcG9zaXRlT3AsIGRlc3RSZWN0KTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HZW5lcmF0ZWRJbWFnZS5oIGIvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HZW5lcmF0ZWRJbWFnZS5oCmluZGV4IGE0NTgzZTMuLjlkMzE0NDggMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2VuZXJhdGVkSW1hZ2UuaAorKysg
Yi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dlbmVyYXRlZEltYWdlLmgKQEAgLTU5LDcgKzU5
LDcgQEAgcHVibGljOgogcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNz
Q29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNS
ZWN0LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IpOwogICAg
IHZpcnR1YWwgdm9pZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJl
Y3QmIHNyY1JlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBwYXR0ZXJuVHJhbnNmb3Jt
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwg
Q29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBjb25zdCBGbG9h
dFJlY3QmIGRlc3RSZWN0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sb3JTcGFj
ZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBjb25zdCBGbG9hdFJlY3QmIGRl
c3RSZWN0KTsKICAgICAKICAgICBHZW5lcmF0ZWRJbWFnZShQYXNzUmVmUHRyPEdlbmVyYXRvcj4g
Z2VuZXJhdG9yLCBjb25zdCBJbnRTaXplJiBzaXplKQogICAgICAgICA6IG1fZ2VuZXJhdG9yKGdl
bmVyYXRvcikKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3Bw
IGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAKaW5kZXggNjExMjE2YS4uZTA2
YWNkMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAKKysr
IGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAKQEAgLTEzNiw5ICsxMzYsMTIg
QEAgdm9pZCBJbWFnZTo6ZHJhd1RpbGVkKEdyYXBoaWNzQ29udGV4dCogY3R4dCwgY29uc3QgRmxv
YXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmwKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAg
IFRyYW5zZm9ybWF0aW9uTWF0cml4IHBhdHRlcm5UcmFuc2Zvcm0gPSBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCgpLnNjYWxlTm9uVW5pZm9ybShzY2FsZS53aWR0aCgpLCBzY2FsZS5oZWlnaHQoKSk7Cisg
ICAgVHJhbnNmb3JtYXRpb25NYXRyaXggcGF0dGVyblRyYW5zZm9ybSA9IFRyYW5zZm9ybWF0aW9u
TWF0cml4KCk7CisgICAgcGF0dGVyblRyYW5zZm9ybS50cmFuc2xhdGUob25lVGlsZVJlY3QueCgp
LCBvbmVUaWxlUmVjdC55KCkpOworICAgIHBhdHRlcm5UcmFuc2Zvcm0uc2NhbGVOb25Vbmlmb3Jt
KHNjYWxlLndpZHRoKCksIHNjYWxlLmhlaWdodCgpKTsKKwogICAgIEZsb2F0UmVjdCB0aWxlUmVj
dChGbG9hdFBvaW50KCksIGludHJpbnNpY1RpbGVTaXplKTsgICAgCi0gICAgZHJhd1BhdHRlcm4o
Y3R4dCwgdGlsZVJlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIG9uZVRpbGVSZWN0LmxvY2F0aW9uKCks
IHN0eWxlQ29sb3JTcGFjZSwgb3AsIGRlc3RSZWN0KTsKKyAgICBkcmF3UGF0dGVybihjdHh0LCB0
aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgc3R5bGVDb2xvclNwYWNlLCBvcCwgZGVzdFJlY3Qp
OwogICAgIAogICAgIHN0YXJ0QW5pbWF0aW9uKCk7CiB9CkBAIC0xNTgsNyArMTYxLDYgQEAgdm9p
ZCBJbWFnZTo6ZHJhd1RpbGVkKEdyYXBoaWNzQ29udGV4dCogY3R4dCwgY29uc3QgRmxvYXRSZWN0
JiBkc3RSZWN0LCBjb25zdCBGbG8KICAgICAgICAgdlJ1bGUgPSBSZXBlYXRUaWxlOwogCiAgICAg
RmxvYXRTaXplIHNjYWxlID0gY2FsY3VsYXRlUGF0dGVyblNjYWxlKGRzdFJlY3QsIHNyY1JlY3Qs
IGhSdWxlLCB2UnVsZSk7Ci0gICAgVHJhbnNmb3JtYXRpb25NYXRyaXggcGF0dGVyblRyYW5zZm9y
bSA9IFRyYW5zZm9ybWF0aW9uTWF0cml4KCkuc2NhbGVOb25Vbmlmb3JtKHNjYWxlLndpZHRoKCks
IHNjYWxlLmhlaWdodCgpKTsKIAogICAgIC8vIFdlIHdhbnQgdG8gY29uc3RydWN0IHRoZSBwaGFz
ZSBzdWNoIHRoYXQgdGhlIHBhdHRlcm4gaXMgY2VudGVyZWQgKHdoZW4gc3RyZXRjaCBpcyBub3QK
ICAgICAvLyBzZXQgZm9yIGEgcGFydGljdWxhciBydWxlKS4KQEAgLTE2OCw5ICsxNzAsOSBAQCB2
b2lkIEltYWdlOjpkcmF3VGlsZWQoR3JhcGhpY3NDb250ZXh0KiBjdHh0LCBjb25zdCBGbG9hdFJl
Y3QmIGRzdFJlY3QsIGNvbnN0IEZsbwogICAgICAgICBoUGhhc2UgLT0gZm1vZGYoZHN0UmVjdC53
aWR0aCgpLCBzY2FsZS53aWR0aCgpICogc3JjUmVjdC53aWR0aCgpKSAvIDIuMGY7CiAgICAgaWYg
KHZSdWxlID09IEltYWdlOjpSZXBlYXRUaWxlKQogICAgICAgICB2UGhhc2UgLT0gZm1vZGYoZHN0
UmVjdC5oZWlnaHQoKSwgc2NhbGUuaGVpZ2h0KCkgKiBzcmNSZWN0LmhlaWdodCgpKSAvIDIuMGY7
Ci0gICAgRmxvYXRQb2ludCBwYXR0ZXJuUGhhc2UoZHN0UmVjdC54KCkgLSBoUGhhc2UsIGRzdFJl
Y3QueSgpIC0gdlBoYXNlKTsKKyAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBwYXR0ZXJuVHJhbnNm
b3JtID0gVHJhbnNmb3JtYXRpb25NYXRyaXgoKS50cmFuc2xhdGUoZHN0UmVjdC54KCkgLSBoUGhh
c2UsIGRzdFJlY3QueSgpIC0gdlBoYXNlKS5zY2FsZU5vblVuaWZvcm0oc2NhbGUud2lkdGgoKSwg
c2NhbGUuaGVpZ2h0KCkpOwogICAgIAotICAgIGRyYXdQYXR0ZXJuKGN0eHQsIHNyY1JlY3QsIHBh
dHRlcm5UcmFuc2Zvcm0sIHBhdHRlcm5QaGFzZSwgc3R5bGVDb2xvclNwYWNlLCBvcCwgZHN0UmVj
dCk7CisgICAgZHJhd1BhdHRlcm4oY3R4dCwgc3JjUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgc3R5
bGVDb2xvclNwYWNlLCBvcCwgZHN0UmVjdCk7CiAKICAgICBzdGFydEFuaW1hdGlvbigpOwogfQpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oIGIvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCmluZGV4IDkwZWJlNGQuLjIzOTkyYjEgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaAorKysgYi9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ltYWdlLmgKQEAgLTE3MCw3ICsxNzAsNyBAQCBwcm90ZWN0ZWQ6CiAgICAg
dmlydHVhbCBDb2xvciBzb2xpZENvbG9yKCkgY29uc3QgeyByZXR1cm4gQ29sb3IoKTsgfQogICAg
IAogICAgIHZpcnR1YWwgdm9pZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQqLCBjb25zdCBG
bG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBwYXR0ZXJuVHJh
bnNmb3JtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBGbG9hdFBvaW50JiBw
aGFzZSwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBjb25z
dCBGbG9hdFJlY3QmIGRlc3RSZWN0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29s
b3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0KTsKIAogcHJpdmF0ZToKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2Rh
dGE7IC8vIFRoZSBlbmNvZGVkIHJhdyBkYXRhIGZvciB0aGUgaW1hZ2UuIApkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUNhaXJvLmNwcCBiL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VDYWlyby5jcHAKaW5kZXggMDg4MDRiNC4uYmVi
ZDc4ZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUNh
aXJvLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQ2Fpcm8u
Y3BwCkBAIC0xNzEsMTYgKzE3MSwxMiBAQCB2b2lkIEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNz
Q29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3QsIGNvbnN0IEZsbwogfQogCiB2
b2lkIEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZs
b2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBwYXR0ZXJuVHJh
bnNmb3JtLAotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRmxvYXRQb2ludCYgcGhhc2Us
IENvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RS
ZWN0KQorICAgICAgICAgICAgICAgICAgICAgICAgQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0
b3Igb3AsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QpCiB7CiAgICAgY2Fpcm9fc3VyZmFjZV90
KiBpbWFnZSA9IG5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CiAgICAgaWYgKCFpbWFnZSkg
Ly8gSWYgaXQncyB0b28gZWFybHkgd2Ugd29uJ3QgaGF2ZSBhbiBpbWFnZSB5ZXQuCiAgICAgICAg
IHJldHVybjsKIAotICAgIC8vIEF2b2lkIE5hTgotICAgIGlmICghaXNmaW5pdGUocGhhc2UueCgp
KSB8fCAhaXNmaW5pdGUocGhhc2UueSgpKSkKLSAgICAgICByZXR1cm47Ci0KICAgICBjYWlyb190
KiBjciA9IGNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpOwogICAgIGNvbnRleHQtPnNhdmUoKTsK
IApAQCAtMjAxLDExICsxOTcsMTUgQEAgdm9pZCBJbWFnZTo6ZHJhd1BhdHRlcm4oR3JhcGhpY3ND
b250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb24KICAgICBjYWly
b19wYXR0ZXJuX3NldF9leHRlbmQocGF0dGVybiwgQ0FJUk9fRVhURU5EX1JFUEVBVCk7CiAKICAg
ICBjYWlyb19tYXRyaXhfdCBwYXR0ZXJuX21hdHJpeCA9IGNhaXJvX21hdHJpeF90KHBhdHRlcm5U
cmFuc2Zvcm0pOwotICAgIGNhaXJvX21hdHJpeF90IHBoYXNlX21hdHJpeCA9IHsxLCAwLCAwLCAx
LCBwaGFzZS54KCkgKyB0aWxlUmVjdC54KCkgKiBwYXR0ZXJuVHJhbnNmb3JtLmEoKSwgcGhhc2Uu
eSgpICsgdGlsZVJlY3QueSgpICogcGF0dGVyblRyYW5zZm9ybS5kKCl9OworICAgIGNhaXJvX21h
dHJpeF90IHBoYXNlX21hdHJpeCA9IHsxLCAwLCAwLCAxLCB0aWxlUmVjdC54KCkgKiBwYXR0ZXJu
VHJhbnNmb3JtLmEoKSwgdGlsZVJlY3QueSgpICogcGF0dGVyblRyYW5zZm9ybS5kKCl9OwogICAg
IGNhaXJvX21hdHJpeF90IGNvbWJpbmVkOwogICAgIGNhaXJvX21hdHJpeF9tdWx0aXBseSgmY29t
YmluZWQsICZwYXR0ZXJuX21hdHJpeCwgJnBoYXNlX21hdHJpeCk7CiAgICAgY2Fpcm9fbWF0cml4
X2ludmVydCgmY29tYmluZWQpOwogICAgIGNhaXJvX3BhdHRlcm5fc2V0X21hdHJpeChwYXR0ZXJu
LCAmY29tYmluZWQpOworICAgIGlmIChjYWlyb19wYXR0ZXJuX3N0YXR1cyAocGF0dGVybikpIHsK
KyAgICAgICAgY2Fpcm9fcGF0dGVybl9kZXN0cm95IChwYXR0ZXJuKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KIAogICAgIGNvbnRleHQtPnNldENvbXBvc2l0ZU9wZXJhdGlvbihvcCk7CiAgICAg
Y2Fpcm9fc2V0X3NvdXJjZShjciwgcGF0dGVybik7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0ltYWdlQ0cuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9JbWFnZUNHLmNwcAppbmRleCAyZTM3MmUyLi5mOThmMjQ3IDEwMDY0NAotLS0gYS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQ0cuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvSW1hZ2VDRy5jcHAKQEAgLTI0NSw3ICsyNDUsNyBAQCBzdGF0aWMgdm9pZCBk
cmF3UGF0dGVybkNhbGxiYWNrKHZvaWQqIGluZm8sIENHQ29udGV4dFJlZiBjb250ZXh0KQogfQog
CiB2b2lkIEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQqIGN0eHQsIGNvbnN0IEZs
b2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBwYXR0ZXJuVHJh
bnNmb3JtLAotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRmxvYXRQb2ludCYgcGhhc2Us
IENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciBvcCwgY29uc3Qg
RmxvYXRSZWN0JiBkZXN0UmVjdCkKKyAgICAgICAgICAgICAgICAgICAgICAgIENvbG9yU3BhY2Ug
c3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciBvcCwgY29uc3QgRmxvYXRSZWN0JiBk
ZXN0UmVjdCkKIHsKICAgICBpZiAoIW5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkpCiAgICAg
ICAgIHJldHVybjsKQEAgLTI2Nyw4ICsyNjcsOCBAQCB2b2lkIEltYWdlOjpkcmF3UGF0dGVybihH
cmFwaGljc0NvbnRleHQqIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0CiAg
ICAgCiAgICAgLy8gV2UgaGF2ZSB0byBhZGp1c3QgdGhlIHBoYXNlIHRvIGRlYWwgd2l0aCB0aGUg
ZmFjdCB3ZSdyZSBpbiBDYXJ0ZXNpYW4gc3BhY2Ugbm93ICh3aXRoIHRoZSBib3R0b20gbGVmdCBj
b3JuZXIgb2YgZGVzdFJlY3QgYmVpbmcKICAgICAvLyB0aGUgb3JpZ2luKS4KLSAgICBmbG9hdCBh
ZGp1c3RlZFggPSBwaGFzZS54KCkgLSBkZXN0UmVjdC54KCkgKyB0aWxlUmVjdC54KCkgKiBuYXJy
b3dQcmVjaXNpb25Ub0Zsb2F0KHBhdHRlcm5UcmFuc2Zvcm0uYSgpKTsgLy8gV2UgdHJhbnNsYXRl
ZCB0aGUgY29udGV4dCBzbyB0aGF0IGRlc3RSZWN0LngoKSBpcyB0aGUgb3JpZ2luLCBzbyBzdWJ0
cmFjdCBpdCBvdXQuCi0gICAgZmxvYXQgYWRqdXN0ZWRZID0gZGVzdFJlY3QuaGVpZ2h0KCkgLSAo
cGhhc2UueSgpIC0gZGVzdFJlY3QueSgpICsgdGlsZVJlY3QueSgpICogbmFycm93UHJlY2lzaW9u
VG9GbG9hdChwYXR0ZXJuVHJhbnNmb3JtLmQoKSkgKyBzY2FsZWRUaWxlSGVpZ2h0KTsKKyAgICBm
bG9hdCBhZGp1c3RlZFggPSAtIGRlc3RSZWN0LngoKSArIHRpbGVSZWN0LngoKSAqIG5hcnJvd1By
ZWNpc2lvblRvRmxvYXQocGF0dGVyblRyYW5zZm9ybS5hKCkpOyAvLyBXZSB0cmFuc2xhdGVkIHRo
ZSBjb250ZXh0IHNvIHRoYXQgZGVzdFJlY3QueCgpIGlzIHRoZSBvcmlnaW4sIHNvIHN1YnRyYWN0
IGl0IG91dC4KKyAgICBmbG9hdCBhZGp1c3RlZFkgPSBkZXN0UmVjdC5oZWlnaHQoKSArIGRlc3RS
ZWN0LnkoKSAtIHRpbGVSZWN0LnkoKSAqIG5hcnJvd1ByZWNpc2lvblRvRmxvYXQocGF0dGVyblRy
YW5zZm9ybS5kKCkpIC0gc2NhbGVkVGlsZUhlaWdodDsKIAogICAgIENHSW1hZ2VSZWYgdGlsZUlt
YWdlID0gbmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKICAgICBmbG9hdCBoID0gQ0dJbWFn
ZUdldEhlaWdodCh0aWxlSW1hZ2UpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9oYWlrdS9JbWFnZUhhaWt1LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaGFp
a3UvSW1hZ2VIYWlrdS5jcHAKaW5kZXggZGYwODgyMi4uOTg4OTAxMyAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9oYWlrdS9JbWFnZUhhaWt1LmNwcAorKysgYi9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2hhaWt1L0ltYWdlSGFpa3UuY3BwCkBAIC0xMDksOSArMTA5LDgg
QEAgdm9pZCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGN0eHQsIGNvbnN0IEZs
b2F0UmVjdCYgZHN0LCBjb25zdCBGbG9hdFIKICAgICBjdHh0LT5yZXN0b3JlKCk7CiB9CiAKLXZv
aWQgSW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxv
YXRSZWN0JiB0aWxlUmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHBhdHRlcm5UcmFu
c2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHNyY1BvaW50LCBDb2xvclNwYWNlLCBDb21wb3NpdGVP
cGVyYXRvciBvcCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0KQordm9pZCBJbWFnZTo6ZHJhd1Bh
dHRlcm4oR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0
LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgcGF0dGVyblRyYW5zZm9ybSwgQ29sb3JTcGFj
ZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCkKIHsKLSAg
ICAvLyBGSVhNRTogZmluaXNoIHRoaXMgdG8gc3VwcG9ydCBhbHNvIHBoYXNlZCBwb3NpdGlvbiAo
c3JjUG9pbnQpCiAgICAgc3RhcnRBbmltYXRpb24oKTsKIAogICAgIEJCaXRtYXAqIGltYWdlID0g
bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvcXQvSW1hZ2VRdC5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0
L0ltYWdlUXQuY3BwCmluZGV4IDlhODI5MTEuLjdiN2E2NWUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VRdC5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9xdC9JbWFnZVF0LmNwcApAQCAtOTQsNyArOTQsNyBAQCBQYXNzUmVmUHRyPEltYWdl
PiBJbWFnZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2UoY29uc3QgY2hhciogbmFtZSkKIH0KIAogdm9p
ZCBJbWFnZTo6ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0KiBjdHh0LCBjb25zdCBGbG9hdFJl
Y3QmIHRpbGVSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgcGF0dGVyblRyYW5zZm9y
bSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBDb2xv
clNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciBvcCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCkK
KyAgICAgICAgICAgICAgICAgICAgICAgIENvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIG9w
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0KQogewogICAgIFFQaXhtYXAqIGZyYW1lUGl4bWFw
ID0gbmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKICAgICBpZiAoIWZyYW1lUGl4bWFwKSAv
LyBJZiBpdCdzIHRvbyBlYXJseSB3ZSB3b24ndCBoYXZlIGFuIGltYWdlIHlldC4KQEAgLTExMiw3
ICsxMTIsNiBAQCB2b2lkIEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQqIGN0eHQs
IGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0CiAgICAgUVBhaW50ZXIqIHAgPSBjdHh0
LT5wbGF0Zm9ybUNvbnRleHQoKTsKICAgICBpZiAoIXBpeG1hcC5oYXNBbHBoYSgpICYmIHAtPmNv
bXBvc2l0aW9uTW9kZSgpID09IFFQYWludGVyOjpDb21wb3NpdGlvbk1vZGVfU291cmNlT3ZlcikK
ICAgICAgICAgcC0+c2V0Q29tcG9zaXRpb25Nb2RlKFFQYWludGVyOjpDb21wb3NpdGlvbk1vZGVf
U291cmNlKTsKLSAgICBwLT5zZXRCcnVzaE9yaWdpbihwaGFzZSk7CiAgICAgcC0+ZmlsbFJlY3Qo
ZGVzdFJlY3QsIGIpOwogICAgIGN0eHQtPnJlc3RvcmUoKTsKIApkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL0ltYWdlU2tpYS5jcHAgYi9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3NraWEvSW1hZ2VTa2lhLmNwcAppbmRleCA2ZDhlZDIyLi5lMzliZjVmIDEwMDY0
NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvSW1hZ2VTa2lhLmNwcAorKysg
Yi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvSW1hZ2VTa2lhLmNwcApAQCAtMzAxLDcg
KzMwMSw2IEBAIFBhc3NSZWZQdHI8SW1hZ2U+IEltYWdlOjpsb2FkUGxhdGZvcm1SZXNvdXJjZShj
b25zdCBjaGFyICpuYW1lKQogdm9pZCBJbWFnZTo6ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0
KiBjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRmxvYXRSZWN0JiBmbG9h
dFNyY1JlY3QsCiAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCYgcGF0dGVyblRyYW5zZm9ybSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEZs
b2F0UG9pbnQmIHBoYXNlLAogICAgICAgICAgICAgICAgICAgICAgICAgQ29sb3JTcGFjZSBzdHls
ZUNvbG9yU3BhY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICBDb21wb3NpdGVPcGVyYXRvciBj
b21wb3NpdGVPcCwKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dFJlY3QpCkBAIC0zNjUsOSArMzY0LDkgQEAgdm9pZCBJbWFnZTo6ZHJhd1BhdHRlcm4oR3JhcGhp
Y3NDb250ZXh0KiBjb250ZXh0LAogICAgIC8vIG9yaWdpbiBvZiB0aGUgZGVzdGluYXRpb24gcmVj
dCwgd2hpY2ggaXMgd2hhdCBXZWJLaXQgZXhwZWN0cy4gU2tpYSB1c2VzCiAgICAgLy8gdGhlIGNv
b3JkaW5hdGUgc3lzdGVtIG9yaWdpbiBhcyB0aGUgYmFzZSBmb3IgdGhlIHBhdHRlci4gSWYgV2Vi
S2l0IHdhbnRzCiAgICAgLy8gYSBzaGlmdGVkIGltYWdlLCBpdCB3aWxsIHNoaWZ0IGl0IGZyb20g
dGhlcmUgdXNpbmcgdGhlIHBhdHRlcm5UcmFuc2Zvcm0uCi0gICAgZmxvYXQgYWRqdXN0ZWRYID0g
cGhhc2UueCgpICsgbm9ybVNyY1JlY3QueCgpICoKKyAgICBmbG9hdCBhZGp1c3RlZFggPSBub3Jt
U3JjUmVjdC54KCkgKgogICAgICAgICAgICAgICAgICAgICAgIG5hcnJvd1ByZWNpc2lvblRvRmxv
YXQocGF0dGVyblRyYW5zZm9ybS5hKCkpOwotICAgIGZsb2F0IGFkanVzdGVkWSA9IHBoYXNlLnko
KSArIG5vcm1TcmNSZWN0LnkoKSAqCisgICAgZmxvYXQgYWRqdXN0ZWRZID0gbm9ybVNyY1JlY3Qu
eSgpICoKICAgICAgICAgICAgICAgICAgICAgICBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHBhdHRl
cm5UcmFuc2Zvcm0uZCgpKTsKICAgICBtYXRyaXgucG9zdFRyYW5zbGF0ZShTa0Zsb2F0VG9TY2Fs
YXIoYWRqdXN0ZWRYKSwKICAgICAgICAgICAgICAgICAgICAgICAgICBTa0Zsb2F0VG9TY2FsYXIo
YWRqdXN0ZWRZKSk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbmNl
L0dyYXBoaWNzQ29udGV4dFdpbmNlLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
Y2UvR3JhcGhpY3NDb250ZXh0V2luY2UuY3BwCmluZGV4IGYyMmU2YzkuLmIzZDJlODYgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luY2UvR3JhcGhpY3NDb250ZXh0V2lu
Y2UuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luY2UvR3JhcGhpY3NDb250
ZXh0V2luY2UuY3BwCkBAIC0xODcxLDcgKzE4NzEsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6
ZHJhd0JpdG1hcChTaGFyZWRCaXRtYXAqIGJtcCwgY29uc3QgSW50UmVjdCYgZHN0UmVjdEluLCBj
bwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0JpdG1hcFBhdHRlcm4oU2hhcmVkQml0
bWFwKiBibXAsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3RJbiwgY29uc3QgVHJhbnNmb3JtYXRp
b25NYXRyaXgmIHBhdHRlcm5UcmFuc2Zvcm0sCi0gICAgICAgICAgICAgICAgY29uc3QgRmxvYXRQ
b2ludCYgcGhhc2UsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RS
ZWN0SW4sIGNvbnN0IEludFNpemUmIG9yaWdTb3VyY2VTaXplKQorICAgICAgICAgICAgICAgIENv
bXBvc2l0ZU9wZXJhdG9yIG9wLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0SW4sIGNvbnN0IElu
dFNpemUmIG9yaWdTb3VyY2VTaXplKQogewogICAgIGlmICghbV9kYXRhLT5tX29wYWNpdHkpCiAg
ICAgICAgIHJldHVybjsKQEAgLTE4OTIsNyArMTg5Miw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0
OjpkcmF3Qml0bWFwUGF0dGVybihTaGFyZWRCaXRtYXAqIGJtcCwgY29uc3QgRmxvYXRSZWN0JiB0
aWxlCiAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggdHJhbnNmb3JtID0gbV9kYXRhLT5tX3RyYW5z
Zm9ybTsKICAgICB0cmFuc2Zvcm0udHJhbnNsYXRlKG1vdmVkLndpZHRoKCksIG1vdmVkLmhlaWdo
dCgpKTsKIAotICAgIGJtcC0+ZHJhd1BhdHRlcm4oZGMsIHRyYW5zZm9ybSwgdGlsZVJlY3RJbiwg
cGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIG9wLCBkZXN0UmVjdEluLCBvcmlnU291cmNlU2l6ZSk7
CisgICAgYm1wLT5kcmF3UGF0dGVybihkYywgdHJhbnNmb3JtLCB0aWxlUmVjdEluLCBwYXR0ZXJu
VHJhbnNmb3JtLCBvcCwgZGVzdFJlY3RJbiwgb3JpZ1NvdXJjZVNpemUpOwogCiAgICAgaWYgKCFi
bXAtPmhhc0FscGhhKCkpCiAgICAgICAgIHRyYW5zcGFyZW50REMuZmlsbEFscGhhQ2hhbm5lbCgp
OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW5jZS9JbWFnZUJ1ZmZl
cldpbmNlLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luY2UvSW1hZ2VCdWZmZXJX
aW5jZS5jcHAKaW5kZXggMzQxN2Y1Zi4uNWY3OGZkOCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW5jZS9JbWFnZUJ1ZmZlcldpbmNlLmNwcAorKysgYi9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbmNlL0ltYWdlQnVmZmVyV2luY2UuY3BwCkBAIC00Myw3ICs0Myw3
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHVuc2lnbmVkIGRlY29kZWRTaXplKCkgY29uc3QgeyBy
ZXR1cm4gMDsgfQogICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0
IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVP
cGVyYXRvcik7CiAgICAgdmlydHVhbCB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCos
IGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHBh
dHRlcm5UcmFuc2Zvcm0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEZsb2F0
UG9pbnQmIHBoYXNlLCBDb21wb3NpdGVPcGVyYXRvciwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVj
dCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbXBvc2l0ZU9wZXJhdG9yLCBjb25z
dCBGbG9hdFJlY3QmIGRlc3RSZWN0KTsKIAogICAgIGNvbnN0IEltYWdlQnVmZmVyRGF0YSogbV9k
YXRhOwogfTsKQEAgLTU2LDkgKzU2LDkgQEAgdm9pZCBCdWZmZXJlZEltYWdlOjpkcmF3KEdyYXBo
aWNzQ29udGV4dCogY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdAogfQogCiB2
b2lkIEJ1ZmZlcmVkSW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCogY3R4dCwgY29u
c3QgRmxvYXRSZWN0JiB0aWxlUmVjdEluLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgcGF0
dGVyblRyYW5zZm9ybSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRmxvYXRQ
b2ludCYgcGhhc2UsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RS
ZWN0KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb21wb3NpdGVPcGVyYXRvciBvcCwg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCkKIHsKLSAgICBtX2RhdGEtPm1fYml0bWFwLT5kcmF3
UGF0dGVybihjdHh0LCB0aWxlUmVjdEluLCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgb3AsIGRl
c3RSZWN0LCBzaXplKCkpOworICAgIG1fZGF0YS0+bV9iaXRtYXAtPmRyYXdQYXR0ZXJuKGN0eHQs
IHRpbGVSZWN0SW4sIHBhdHRlcm5UcmFuc2Zvcm0sIG9wLCBkZXN0UmVjdCwgc2l6ZSgpKTsKIH0K
IAogSW1hZ2VCdWZmZXJEYXRhOjpJbWFnZUJ1ZmZlckRhdGEoY29uc3QgSW50U2l6ZSYgc2l6ZSkK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd3gvSW1hZ2VXeC5jcHAgYi9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3d4L0ltYWdlV3guY3BwCmluZGV4IGZmNjBkNmYuLjRj
ZDcxZTAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd3gvSW1hZ2VXeC5j
cHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93eC9JbWFnZVd4LmNwcApAQCAtMTc2
LDcgKzE3Niw3IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0KiBjdHh0
LCBjb25zdCBGbG9hdFJlY3QmIGRzdCwgY29uc3QgRmxvYXRSCiAgICAgICAgIG9ic2VydmVyLT5k
aWREcmF3KHRoaXMpOwogfQogCi12b2lkIEJpdG1hcEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGlj
c0NvbnRleHQqIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgVHJhbnNmb3Jt
YXRpb25NYXRyaXgmIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBD
b2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0KQor
dm9pZCBCaXRtYXBJbWFnZTo6ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0KiBjdHh0LCBjb25z
dCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBwYXR0ZXJu
VHJhbnNmb3JtLCBDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciwgY29uc3QgRmxvYXRSZWN0
JiBkc3RSZWN0KQogewogICAgIGlmICghbV9zb3VyY2UuaW5pdGlhbGl6ZWQoKSkKICAgICAgICAg
cmV0dXJuOwpAQCAtMjAxLDEwICsyMDEsOCBAQCB2b2lkIEJpdG1hcEltYWdlOjpkcmF3UGF0dGVy
bihHcmFwaGljc0NvbnRleHQqIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgYwogI2lm
IFVTRShXWEdDKQogICAgIHd4R3JhcGhpY3NDb250ZXh0KiBnYyA9IGNvbnRleHQtPkdldEdyYXBo
aWNzQ29udGV4dCgpOwogCi0gICAgZmxvYXQgYWRqdXN0ZWRYID0gcGhhc2UueCgpICsgc3JjUmVj
dC54KCkgKgotICAgICAgICAgICAgICAgICAgICAgIG5hcnJvd1ByZWNpc2lvblRvRmxvYXQocGF0
dGVyblRyYW5zZm9ybS5hKCkpOwotICAgIGZsb2F0IGFkanVzdGVkWSA9IHBoYXNlLnkoKSArIHNy
Y1JlY3QueSgpICoKLSAgICAgICAgICAgICAgICAgICAgICBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0
KHBhdHRlcm5UcmFuc2Zvcm0uZCgpKTsKKyAgICBmbG9hdCBhZGp1c3RlZFggPSBzcmNSZWN0Lngo
KSAqIG5hcnJvd1ByZWNpc2lvblRvRmxvYXQocGF0dGVyblRyYW5zZm9ybS5hKCkpOworICAgIGZs
b2F0IGFkanVzdGVkWSA9IHNyY1JlY3QueSgpICogbmFycm93UHJlY2lzaW9uVG9GbG9hdChwYXR0
ZXJuVHJhbnNmb3JtLmQoKSk7CiAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgZ2MtPkNvbmNh
dFRyYW5zZm9ybShwYXR0ZXJuVHJhbnNmb3JtKTsKICNlbHNlCkBAIC0yNjEsNyArMjU5LDcgQEAg
dm9pZCBCaXRtYXBJbWFnZTo6aW52YWxpZGF0ZVBsYXRmb3JtRGF0YSgpCiAKIH0KIAotdm9pZCBJ
bWFnZTo6ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiBzcmNS
ZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3Qg
RmxvYXRQb2ludCYgcGhhc2UsIENvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RSZWN0KQordm9pZCBJbWFnZTo6ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250
ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJp
eCYgcGF0dGVyblRyYW5zZm9ybSwgQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIGNvbnN0
IEZsb2F0UmVjdCYgZGVzdFJlY3QpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>44991</attachid>
            <date>2009-12-16 10:43:27 -0800</date>
            <delta_ts>2010-06-10 19:50:37 -0700</delta_ts>
            <desc>patch v3</desc>
            <filename>diff</filename>
            <type>text/plain</type>
            <size>20114</size>
            <attacher name="Benjamin Otte">otte</attacher>
            
              <data encoding="base64">Y29tbWl0IDNiODNkMDA0OTViYjM4YzBlODI3MDZjZjE4NmU4MzNhZDMxZjgzM2MKQXV0aG9yOiBC
ZW5qYW1pbiBPdHRlIDxvdHRlQGdub21lLm9yZz4KRGF0ZTogICBUaHUgTm92IDUgMjM6MTg6NDMg
MjAwOSArMDEwMAoKICAgIEdldCByaWQgb2YgdGhlIHBoYXNlIGFyZ3VtZW50IHRvIEltYWdlOjpk
cmF3UGF0dGVybi4KICAgIAogICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTMxMTg3CiAgICAKICAgIFRoZSBhcmd1bWVudCBjYW4gYmUgZXhwcmVzc2VkIGVxdWFsbHkg
d2VsbCBhcyBwYXJ0IG9mIHRoZQogICAgcGF0dGVyblRyYW5zZm9ybS4gQWxsIGJhY2tlbmRzIGJ1
dCB0aGUgUXQgb25lIGRpZCBleGFjdGx5IHRoYXQKICAgIG1hbnVhbGx5IGFueXdheS4KCmRpZmYg
LS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDkyMWJh
MjIuLjYzMmE4OGUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsNDAgQEAKKzIwMDktMTEtMDUgIEJlbmphbWluIE90dGUgIDxv
dHRlQGdub21lLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBHZXQgcmlkIG9mIHRoZSBwaGFzZSBhcmd1bWVudCB0byBJbWFnZTo6ZHJhd1BhdHRl
cm4uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMTE4
NworCisgICAgICAgIFRoZSBhcmd1bWVudCBjYW4gYmUgZXhwcmVzc2VkIGVxdWFsbHkgd2VsbCBh
cyBwYXJ0IG9mIHRoZQorICAgICAgICBwYXR0ZXJuVHJhbnNmb3JtLiBBbGwgYmFja2VuZHMgYnV0
IHRoZSBRdCBvbmUgZGlkIGV4YWN0bHkgdGhhdAorICAgICAgICBtYW51YWxseSBhbnl3YXkuCisK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0dlbmVyYXRlZEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okdl
bmVyYXRlZEltYWdlOjpkcmF3UGF0dGVybik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
R2VuZXJhdGVkSW1hZ2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZTo6ZHJhd1RpbGVkKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0lt
YWdlQ2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2U6OmRyYXdQYXR0ZXJuKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUNHLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlOjpkcmF3UGF0dGVybik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvaGFp
a3UvSW1hZ2VIYWlrdS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZTo6ZHJhd1BhdHRlcm4p
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdlUXQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2U6OmRyYXdQYXR0ZXJuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9za2lhL0ltYWdlU2tpYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZTo6ZHJhd1BhdHRl
cm4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbmNlL0dyYXBoaWNzQ29udGV4dFdp
bmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd0JpdG1hcFBh
dHRlcm4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbmNlL0ltYWdlQnVmZmVyV2lu
Y2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6KToKKyAgICAgICAgKFdlYkNvcmU6OkJ1ZmZlcmVk
SW1hZ2U6OmRyYXdQYXR0ZXJuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93eC9JbWFn
ZVd4LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkcmF3UGF0dGVybik6Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZTo6ZHJhd1BhdHRlcm4pOgorCiAyMDA5LTExLTA0ICBCZW5q
YW1pbiBPdHRlICA8b3R0ZUBnbm9tZS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcElt
YWdlLmggYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmgKaW5kZXggNjE0
ZWJhZi4uMzI4MzU0OSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRt
YXBJbWFnZS5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaApA
QCAtMTcxLDcgKzE3MSw3IEBAIHByb3RlY3RlZDoKIAogI2lmIFBMQVRGT1JNKFdYKSB8fCAoUExB
VEZPUk0oV0lOQ0UpICYmICFQTEFURk9STShRVCkpCiAgICAgdmlydHVhbCB2b2lkIGRyYXdQYXR0
ZXJuKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgVHJh
bnNmb3JtYXRpb25NYXRyaXgmIHBhdHRlcm5UcmFuc2Zvcm0sCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JT
cGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QpOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29t
cG9zaXRlT3BlcmF0b3IsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QpOwogI2VuZGlmCiAKICNp
ZiBQTEFURk9STShIQUlLVSkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R2VuZXJhdGVkSW1hZ2UuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HZW5lcmF0ZWRJ
bWFnZS5jcHAKaW5kZXggZWVjN2ZmYi4uYjcwMWM2MiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HZW5lcmF0ZWRJbWFnZS5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HZW5lcmF0ZWRJbWFnZS5jcHAKQEAgLTQ4LDcgKzQ4LDcgQEAgdm9pZCBHZW5lcmF0
ZWRJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYg
ZHN0UmVjdCwgY28KIH0KIAogdm9pZCBHZW5lcmF0ZWRJbWFnZTo6ZHJhd1BhdHRlcm4oR3JhcGhp
Y3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IFRyYW5z
Zm9ybWF0aW9uTWF0cml4JiBwYXR0ZXJuVHJhbnNmb3JtLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIENvbG9yU3BhY2Ugc3R5bGVDb2xv
clNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCwgY29uc3QgRmxvYXRSZWN0JiBk
ZXN0UmVjdCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbG9yU3BhY2Ugc3R5
bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCwgY29uc3QgRmxvYXRS
ZWN0JiBkZXN0UmVjdCkKIHsKICAgICAvLyBDcmVhdGUgYSBCaXRtYXBJbWFnZSBhbmQgY2FsbCBk
cmF3UGF0dGVybiBvbiBpdC4KICAgICBPd25QdHI8SW1hZ2VCdWZmZXI+IGltYWdlQnVmZmVyID0g
SW1hZ2VCdWZmZXI6OmNyZWF0ZShtX3NpemUpOwpAQCAtNjIsNyArNjIsNyBAQCB2b2lkIEdlbmVy
YXRlZEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUgogICAgIEltYWdlKiBiaXRtYXAgPSBpbWFnZUJ1ZmZlci0+aW1hZ2UoKTsK
ICAgICAKICAgICAvLyBOb3cganVzdCBjYWxsIGRyYXdUaWxlZCBvbiB0aGF0IGltYWdlLgotICAg
IGJpdG1hcC0+ZHJhd1BhdHRlcm4oY29udGV4dCwgc3JjUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwg
cGhhc2UsIHN0eWxlQ29sb3JTcGFjZSwgY29tcG9zaXRlT3AsIGRlc3RSZWN0KTsKKyAgICBiaXRt
YXAtPmRyYXdQYXR0ZXJuKGNvbnRleHQsIHNyY1JlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHN0eWxl
Q29sb3JTcGFjZSwgY29tcG9zaXRlT3AsIGRlc3RSZWN0KTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HZW5lcmF0ZWRJbWFnZS5oIGIvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HZW5lcmF0ZWRJbWFnZS5oCmluZGV4IGE0NTgzZTMuLjlkMzE0NDggMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2VuZXJhdGVkSW1hZ2UuaAorKysg
Yi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dlbmVyYXRlZEltYWdlLmgKQEAgLTU5LDcgKzU5
LDcgQEAgcHVibGljOgogcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNz
Q29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNS
ZWN0LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IpOwogICAg
IHZpcnR1YWwgdm9pZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJl
Y3QmIHNyY1JlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBwYXR0ZXJuVHJhbnNmb3Jt
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwg
Q29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBjb25zdCBGbG9h
dFJlY3QmIGRlc3RSZWN0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sb3JTcGFj
ZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBjb25zdCBGbG9hdFJlY3QmIGRl
c3RSZWN0KTsKICAgICAKICAgICBHZW5lcmF0ZWRJbWFnZShQYXNzUmVmUHRyPEdlbmVyYXRvcj4g
Z2VuZXJhdG9yLCBjb25zdCBJbnRTaXplJiBzaXplKQogICAgICAgICA6IG1fZ2VuZXJhdG9yKGdl
bmVyYXRvcikKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3Bw
IGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAKaW5kZXggNjExMjE2YS4uNjEw
OTNkMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAKKysr
IGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAKQEAgLTEzNiw5ICsxMzYsMTIg
QEAgdm9pZCBJbWFnZTo6ZHJhd1RpbGVkKEdyYXBoaWNzQ29udGV4dCogY3R4dCwgY29uc3QgRmxv
YXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmwKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAg
IFRyYW5zZm9ybWF0aW9uTWF0cml4IHBhdHRlcm5UcmFuc2Zvcm0gPSBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCgpLnNjYWxlTm9uVW5pZm9ybShzY2FsZS53aWR0aCgpLCBzY2FsZS5oZWlnaHQoKSk7Cisg
ICAgVHJhbnNmb3JtYXRpb25NYXRyaXggcGF0dGVyblRyYW5zZm9ybSA9IFRyYW5zZm9ybWF0aW9u
TWF0cml4KCk7CisgICAgcGF0dGVyblRyYW5zZm9ybS50cmFuc2xhdGUob25lVGlsZVJlY3QueCgp
LCBvbmVUaWxlUmVjdC55KCkpOworICAgIHBhdHRlcm5UcmFuc2Zvcm0uc2NhbGVOb25Vbmlmb3Jt
KHNjYWxlLndpZHRoKCksIHNjYWxlLmhlaWdodCgpKTsKKwogICAgIEZsb2F0UmVjdCB0aWxlUmVj
dChGbG9hdFBvaW50KCksIGludHJpbnNpY1RpbGVTaXplKTsgICAgCi0gICAgZHJhd1BhdHRlcm4o
Y3R4dCwgdGlsZVJlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIG9uZVRpbGVSZWN0LmxvY2F0aW9uKCks
IHN0eWxlQ29sb3JTcGFjZSwgb3AsIGRlc3RSZWN0KTsKKyAgICBkcmF3UGF0dGVybihjdHh0LCB0
aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgc3R5bGVDb2xvclNwYWNlLCBvcCwgZGVzdFJlY3Qp
OwogICAgIAogICAgIHN0YXJ0QW5pbWF0aW9uKCk7CiB9CkBAIC0xNTgsNyArMTYxLDYgQEAgdm9p
ZCBJbWFnZTo6ZHJhd1RpbGVkKEdyYXBoaWNzQ29udGV4dCogY3R4dCwgY29uc3QgRmxvYXRSZWN0
JiBkc3RSZWN0LCBjb25zdCBGbG8KICAgICAgICAgdlJ1bGUgPSBSZXBlYXRUaWxlOwogCiAgICAg
RmxvYXRTaXplIHNjYWxlID0gY2FsY3VsYXRlUGF0dGVyblNjYWxlKGRzdFJlY3QsIHNyY1JlY3Qs
IGhSdWxlLCB2UnVsZSk7Ci0gICAgVHJhbnNmb3JtYXRpb25NYXRyaXggcGF0dGVyblRyYW5zZm9y
bSA9IFRyYW5zZm9ybWF0aW9uTWF0cml4KCkuc2NhbGVOb25Vbmlmb3JtKHNjYWxlLndpZHRoKCks
IHNjYWxlLmhlaWdodCgpKTsKIAogICAgIC8vIFdlIHdhbnQgdG8gY29uc3RydWN0IHRoZSBwaGFz
ZSBzdWNoIHRoYXQgdGhlIHBhdHRlcm4gaXMgY2VudGVyZWQgKHdoZW4gc3RyZXRjaCBpcyBub3QK
ICAgICAvLyBzZXQgZm9yIGEgcGFydGljdWxhciBydWxlKS4KQEAgLTE2OCw5ICsxNzAsMTEgQEAg
dm9pZCBJbWFnZTo6ZHJhd1RpbGVkKEdyYXBoaWNzQ29udGV4dCogY3R4dCwgY29uc3QgRmxvYXRS
ZWN0JiBkc3RSZWN0LCBjb25zdCBGbG8KICAgICAgICAgaFBoYXNlIC09IGZtb2RmKGRzdFJlY3Qu
d2lkdGgoKSwgc2NhbGUud2lkdGgoKSAqIHNyY1JlY3Qud2lkdGgoKSkgLyAyLjBmOwogICAgIGlm
ICh2UnVsZSA9PSBJbWFnZTo6UmVwZWF0VGlsZSkKICAgICAgICAgdlBoYXNlIC09IGZtb2RmKGRz
dFJlY3QuaGVpZ2h0KCksIHNjYWxlLmhlaWdodCgpICogc3JjUmVjdC5oZWlnaHQoKSkgLyAyLjBm
OwotICAgIEZsb2F0UG9pbnQgcGF0dGVyblBoYXNlKGRzdFJlY3QueCgpIC0gaFBoYXNlLCBkc3RS
ZWN0LnkoKSAtIHZQaGFzZSk7CisgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggcGF0dGVyblRyYW5z
Zm9ybSA9IFRyYW5zZm9ybWF0aW9uTWF0cml4KCk7CisgICAgcGF0dGVyblRyYW5zZm9ybS50cmFu
c2xhdGUoZHN0UmVjdC54KCkgLSBoUGhhc2UsIGRzdFJlY3QueSgpIC0gdlBoYXNlKTsKKyAgICBw
YXR0ZXJuVHJhbnNmb3JtLnNjYWxlTm9uVW5pZm9ybShzY2FsZS53aWR0aCgpLCBzY2FsZS5oZWln
aHQoKSk7CiAgICAgCi0gICAgZHJhd1BhdHRlcm4oY3R4dCwgc3JjUmVjdCwgcGF0dGVyblRyYW5z
Zm9ybSwgcGF0dGVyblBoYXNlLCBzdHlsZUNvbG9yU3BhY2UsIG9wLCBkc3RSZWN0KTsKKyAgICBk
cmF3UGF0dGVybihjdHh0LCBzcmNSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBzdHlsZUNvbG9yU3Bh
Y2UsIG9wLCBkc3RSZWN0KTsKIAogICAgIHN0YXJ0QW5pbWF0aW9uKCk7CiB9CmRpZmYgLS1naXQg
YS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmggYi9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlLmgKaW5kZXggOTBlYmU0ZC4uMjM5OTJiMSAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2UuaApAQCAtMTcwLDcgKzE3MCw3IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIENv
bG9yIHNvbGlkQ29sb3IoKSBjb25zdCB7IHJldHVybiBDb2xvcigpOyB9CiAgICAgCiAgICAgdmly
dHVhbCB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYg
c3JjUmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHBhdHRlcm5UcmFuc2Zvcm0sCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBDb2xv
clNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIGNvbnN0IEZsb2F0UmVj
dCYgZGVzdFJlY3QpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2xvclNwYWNlIHN0
eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJl
Y3QpOwogCiBwcml2YXRlOgogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fZGF0YTsgLy8gVGhl
IGVuY29kZWQgcmF3IGRhdGEgZm9yIHRoZSBpbWFnZS4gCmRpZmYgLS1naXQgYS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQ2Fpcm8uY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9JbWFnZUNhaXJvLmNwcAppbmRleCAwODgwNGI0Li44NTRhOTRhIDEwMDY0
NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQ2Fpcm8uY3BwCisr
KyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VDYWlyby5jcHAKQEAgLTE3
MSwxNiArMTcxLDEyIEBAIHZvaWQgQml0bWFwSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0KiBj
b250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdCwgY29uc3QgRmxvCiB9CiAKIHZvaWQgSW1hZ2U6
OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiB0
aWxlUmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHBhdHRlcm5UcmFuc2Zvcm0sCi0g
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgQ29sb3JTcGFj
ZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QpCisgICAg
ICAgICAgICAgICAgICAgICAgICBDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciBvcCwgY29u
c3QgRmxvYXRSZWN0JiBkZXN0UmVjdCkKIHsKICAgICBjYWlyb19zdXJmYWNlX3QqIGltYWdlID0g
bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKICAgICBpZiAoIWltYWdlKSAvLyBJZiBpdCdz
IHRvbyBlYXJseSB3ZSB3b24ndCBoYXZlIGFuIGltYWdlIHlldC4KICAgICAgICAgcmV0dXJuOwog
Ci0gICAgLy8gQXZvaWQgTmFOCi0gICAgaWYgKCFpc2Zpbml0ZShwaGFzZS54KCkpIHx8ICFpc2Zp
bml0ZShwaGFzZS55KCkpKQotICAgICAgIHJldHVybjsKLQogICAgIGNhaXJvX3QqIGNyID0gY29u
dGV4dC0+cGxhdGZvcm1Db250ZXh0KCk7CiAgICAgY29udGV4dC0+c2F2ZSgpOwogCkBAIC0yMDAs
MTIgKzE5NiwxNiBAQCB2b2lkIEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQqIGNv
bnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNvbgogICAgIGNhaXJvX3BhdHRlcm5f
dCogcGF0dGVybiA9IGNhaXJvX3BhdHRlcm5fY3JlYXRlX2Zvcl9zdXJmYWNlKGltYWdlKTsKICAg
ICBjYWlyb19wYXR0ZXJuX3NldF9leHRlbmQocGF0dGVybiwgQ0FJUk9fRVhURU5EX1JFUEVBVCk7
CiAKLSAgICBjYWlyb19tYXRyaXhfdCBwYXR0ZXJuX21hdHJpeCA9IGNhaXJvX21hdHJpeF90KHBh
dHRlcm5UcmFuc2Zvcm0pOwotICAgIGNhaXJvX21hdHJpeF90IHBoYXNlX21hdHJpeCA9IHsxLCAw
LCAwLCAxLCBwaGFzZS54KCkgKyB0aWxlUmVjdC54KCkgKiBwYXR0ZXJuVHJhbnNmb3JtLmEoKSwg
cGhhc2UueSgpICsgdGlsZVJlY3QueSgpICogcGF0dGVyblRyYW5zZm9ybS5kKCl9OwotICAgIGNh
aXJvX21hdHJpeF90IGNvbWJpbmVkOwotICAgIGNhaXJvX21hdHJpeF9tdWx0aXBseSgmY29tYmlu
ZWQsICZwYXR0ZXJuX21hdHJpeCwgJnBoYXNlX21hdHJpeCk7Ci0gICAgY2Fpcm9fbWF0cml4X2lu
dmVydCgmY29tYmluZWQpOwotICAgIGNhaXJvX3BhdHRlcm5fc2V0X21hdHJpeChwYXR0ZXJuLCAm
Y29tYmluZWQpOworICAgIGNhaXJvX21hdHJpeF90IHBhdHRlcm5NYXRyaXggPSBjYWlyb19tYXRy
aXhfdChwYXR0ZXJuVHJhbnNmb3JtKTsKKyAgICBjYWlyb19tYXRyaXhfdCBwaGFzZU1hdHJpeCA9
IHsxLCAwLCAwLCAxLCB0aWxlUmVjdC54KCkgKiBwYXR0ZXJuVHJhbnNmb3JtLmEoKSwgdGlsZVJl
Y3QueSgpICogcGF0dGVyblRyYW5zZm9ybS5kKCl9OworICAgIGNhaXJvX21hdHJpeF90IGNvbWJp
bmVkTWF0cml4OworICAgIGNhaXJvX21hdHJpeF9tdWx0aXBseSgmY29tYmluZWRNYXRyaXgsICZw
YXR0ZXJuTWF0cml4LCAmcGhhc2VNYXRyaXgpOworICAgIGNhaXJvX21hdHJpeF9pbnZlcnQoJmNv
bWJpbmVkTWF0cml4KTsKKyAgICBjYWlyb19wYXR0ZXJuX3NldF9tYXRyaXgocGF0dGVybiwgJmNv
bWJpbmVkTWF0cml4KTsKKyAgICBpZiAoY2Fpcm9fcGF0dGVybl9zdGF0dXMocGF0dGVybikpIHsK
KyAgICAgICAgY2Fpcm9fcGF0dGVybl9kZXN0cm95KHBhdHRlcm4pOworICAgICAgICByZXR1cm47
CisgICAgfQogCiAgICAgY29udGV4dC0+c2V0Q29tcG9zaXRlT3BlcmF0aW9uKG9wKTsKICAgICBj
YWlyb19zZXRfc291cmNlKGNyLCBwYXR0ZXJuKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvSW1hZ2VDRy5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0ltYWdlQ0cuY3BwCmluZGV4IDJlMzcyZTIuLmY5OGYyNDcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VDRy5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9JbWFnZUNHLmNwcApAQCAtMjQ1LDcgKzI0NSw3IEBAIHN0YXRpYyB2b2lkIGRy
YXdQYXR0ZXJuQ2FsbGJhY2sodm9pZCogaW5mbywgQ0dDb250ZXh0UmVmIGNvbnRleHQpCiB9CiAK
IHZvaWQgSW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCogY3R4dCwgY29uc3QgRmxv
YXRSZWN0JiB0aWxlUmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHBhdHRlcm5UcmFu
c2Zvcm0sCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwg
Q29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RSZWN0KQorICAgICAgICAgICAgICAgICAgICAgICAgQ29sb3JTcGFjZSBz
dHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBjb25zdCBGbG9hdFJlY3QmIGRl
c3RSZWN0KQogewogICAgIGlmICghbmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKSkKICAgICAg
ICAgcmV0dXJuOwpAQCAtMjY3LDggKzI2Nyw4IEBAIHZvaWQgSW1hZ2U6OmRyYXdQYXR0ZXJuKEdy
YXBoaWNzQ29udGV4dCogY3R4dCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29uc3QKICAg
ICAKICAgICAvLyBXZSBoYXZlIHRvIGFkanVzdCB0aGUgcGhhc2UgdG8gZGVhbCB3aXRoIHRoZSBm
YWN0IHdlJ3JlIGluIENhcnRlc2lhbiBzcGFjZSBub3cgKHdpdGggdGhlIGJvdHRvbSBsZWZ0IGNv
cm5lciBvZiBkZXN0UmVjdCBiZWluZwogICAgIC8vIHRoZSBvcmlnaW4pLgotICAgIGZsb2F0IGFk
anVzdGVkWCA9IHBoYXNlLngoKSAtIGRlc3RSZWN0LngoKSArIHRpbGVSZWN0LngoKSAqIG5hcnJv
d1ByZWNpc2lvblRvRmxvYXQocGF0dGVyblRyYW5zZm9ybS5hKCkpOyAvLyBXZSB0cmFuc2xhdGVk
IHRoZSBjb250ZXh0IHNvIHRoYXQgZGVzdFJlY3QueCgpIGlzIHRoZSBvcmlnaW4sIHNvIHN1YnRy
YWN0IGl0IG91dC4KLSAgICBmbG9hdCBhZGp1c3RlZFkgPSBkZXN0UmVjdC5oZWlnaHQoKSAtIChw
aGFzZS55KCkgLSBkZXN0UmVjdC55KCkgKyB0aWxlUmVjdC55KCkgKiBuYXJyb3dQcmVjaXNpb25U
b0Zsb2F0KHBhdHRlcm5UcmFuc2Zvcm0uZCgpKSArIHNjYWxlZFRpbGVIZWlnaHQpOworICAgIGZs
b2F0IGFkanVzdGVkWCA9IC0gZGVzdFJlY3QueCgpICsgdGlsZVJlY3QueCgpICogbmFycm93UHJl
Y2lzaW9uVG9GbG9hdChwYXR0ZXJuVHJhbnNmb3JtLmEoKSk7IC8vIFdlIHRyYW5zbGF0ZWQgdGhl
IGNvbnRleHQgc28gdGhhdCBkZXN0UmVjdC54KCkgaXMgdGhlIG9yaWdpbiwgc28gc3VidHJhY3Qg
aXQgb3V0LgorICAgIGZsb2F0IGFkanVzdGVkWSA9IGRlc3RSZWN0LmhlaWdodCgpICsgZGVzdFJl
Y3QueSgpIC0gdGlsZVJlY3QueSgpICogbmFycm93UHJlY2lzaW9uVG9GbG9hdChwYXR0ZXJuVHJh
bnNmb3JtLmQoKSkgLSBzY2FsZWRUaWxlSGVpZ2h0OwogCiAgICAgQ0dJbWFnZVJlZiB0aWxlSW1h
Z2UgPSBuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOwogICAgIGZsb2F0IGggPSBDR0ltYWdl
R2V0SGVpZ2h0KHRpbGVJbWFnZSk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2hhaWt1L0ltYWdlSGFpa3UuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9oYWlr
dS9JbWFnZUhhaWt1LmNwcAppbmRleCBkZjA4ODIyLi45ODg5MDEzIDEwMDY0NAotLS0gYS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hhaWt1L0ltYWdlSGFpa3UuY3BwCisrKyBiL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvaGFpa3UvSW1hZ2VIYWlrdS5jcHAKQEAgLTEwOSw5ICsxMDksOCBA
QCB2b2lkIEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCogY3R4dCwgY29uc3QgRmxv
YXRSZWN0JiBkc3QsIGNvbnN0IEZsb2F0UgogICAgIGN0eHQtPnJlc3RvcmUoKTsKIH0KIAotdm9p
ZCBJbWFnZTo6ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9h
dFJlY3QmIHRpbGVSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgcGF0dGVyblRyYW5z
Zm9ybSwgY29uc3QgRmxvYXRQb2ludCYgc3JjUG9pbnQsIENvbG9yU3BhY2UsIENvbXBvc2l0ZU9w
ZXJhdG9yIG9wLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QpCit2b2lkIEltYWdlOjpkcmF3UGF0
dGVybihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3Qs
IGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBwYXR0ZXJuVHJhbnNmb3JtLCBDb2xvclNwYWNl
LCBDb21wb3NpdGVPcGVyYXRvciBvcCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0KQogewotICAg
IC8vIEZJWE1FOiBmaW5pc2ggdGhpcyB0byBzdXBwb3J0IGFsc28gcGhhc2VkIHBvc2l0aW9uIChz
cmNQb2ludCkKICAgICBzdGFydEFuaW1hdGlvbigpOwogCiAgICAgQkJpdG1hcCogaW1hZ2UgPSBu
YXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9xdC9JbWFnZVF0LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQv
SW1hZ2VRdC5jcHAKaW5kZXggOWE4MjkxMS4uN2I3YTY1ZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9xdC9JbWFnZVF0LmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3F0L0ltYWdlUXQuY3BwCkBAIC05NCw3ICs5NCw3IEBAIFBhc3NSZWZQdHI8SW1hZ2U+
IEltYWdlOjpsb2FkUGxhdGZvcm1SZXNvdXJjZShjb25zdCBjaGFyKiBuYW1lKQogfQogCiB2b2lk
IEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQqIGN0eHQsIGNvbnN0IEZsb2F0UmVj
dCYgdGlsZVJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBwYXR0ZXJuVHJhbnNmb3Jt
LAotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIENvbG9y
U3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0KQor
ICAgICAgICAgICAgICAgICAgICAgICAgQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3As
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QpCiB7CiAgICAgUVBpeG1hcCogZnJhbWVQaXhtYXAg
PSBuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOwogICAgIGlmICghZnJhbWVQaXhtYXApIC8v
IElmIGl0J3MgdG9vIGVhcmx5IHdlIHdvbid0IGhhdmUgYW4gaW1hZ2UgeWV0LgpAQCAtMTEyLDcg
KzExMiw2IEBAIHZvaWQgSW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCogY3R4dCwg
Y29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29uc3QKICAgICBRUGFpbnRlciogcCA9IGN0eHQt
PnBsYXRmb3JtQ29udGV4dCgpOwogICAgIGlmICghcGl4bWFwLmhhc0FscGhhKCkgJiYgcC0+Y29t
cG9zaXRpb25Nb2RlKCkgPT0gUVBhaW50ZXI6OkNvbXBvc2l0aW9uTW9kZV9Tb3VyY2VPdmVyKQog
ICAgICAgICBwLT5zZXRDb21wb3NpdGlvbk1vZGUoUVBhaW50ZXI6OkNvbXBvc2l0aW9uTW9kZV9T
b3VyY2UpOwotICAgIHAtPnNldEJydXNoT3JpZ2luKHBoYXNlKTsKICAgICBwLT5maWxsUmVjdChk
ZXN0UmVjdCwgYik7CiAgICAgY3R4dC0+cmVzdG9yZSgpOwogCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvSW1hZ2VTa2lhLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvc2tpYS9JbWFnZVNraWEuY3BwCmluZGV4IDZkOGVkMjIuLmUzOWJmNWYgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9JbWFnZVNraWEuY3BwCisrKyBi
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9JbWFnZVNraWEuY3BwCkBAIC0zMDEsNyAr
MzAxLDYgQEAgUGFzc1JlZlB0cjxJbWFnZT4gSW1hZ2U6OmxvYWRQbGF0Zm9ybVJlc291cmNlKGNv
bnN0IGNoYXIgKm5hbWUpCiB2b2lkIEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQq
IGNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBGbG9hdFJlY3QmIGZsb2F0
U3JjUmVjdCwKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0
cml4JiBwYXR0ZXJuVHJhbnNmb3JtLAotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRmxv
YXRQb2ludCYgcGhhc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICBDb2xvclNwYWNlIHN0eWxl
Q29sb3JTcGFjZSwKICAgICAgICAgICAgICAgICAgICAgICAgIENvbXBvc2l0ZU9wZXJhdG9yIGNv
bXBvc2l0ZU9wLAogICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRmxvYXRSZWN0JiBkZXN0
UmVjdCkKQEAgLTM2NSw5ICszNjQsOSBAQCB2b2lkIEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGlj
c0NvbnRleHQqIGNvbnRleHQsCiAgICAgLy8gb3JpZ2luIG9mIHRoZSBkZXN0aW5hdGlvbiByZWN0
LCB3aGljaCBpcyB3aGF0IFdlYktpdCBleHBlY3RzLiBTa2lhIHVzZXMKICAgICAvLyB0aGUgY29v
cmRpbmF0ZSBzeXN0ZW0gb3JpZ2luIGFzIHRoZSBiYXNlIGZvciB0aGUgcGF0dGVyLiBJZiBXZWJL
aXQgd2FudHMKICAgICAvLyBhIHNoaWZ0ZWQgaW1hZ2UsIGl0IHdpbGwgc2hpZnQgaXQgZnJvbSB0
aGVyZSB1c2luZyB0aGUgcGF0dGVyblRyYW5zZm9ybS4KLSAgICBmbG9hdCBhZGp1c3RlZFggPSBw
aGFzZS54KCkgKyBub3JtU3JjUmVjdC54KCkgKgorICAgIGZsb2F0IGFkanVzdGVkWCA9IG5vcm1T
cmNSZWN0LngoKSAqCiAgICAgICAgICAgICAgICAgICAgICAgbmFycm93UHJlY2lzaW9uVG9GbG9h
dChwYXR0ZXJuVHJhbnNmb3JtLmEoKSk7Ci0gICAgZmxvYXQgYWRqdXN0ZWRZID0gcGhhc2UueSgp
ICsgbm9ybVNyY1JlY3QueSgpICoKKyAgICBmbG9hdCBhZGp1c3RlZFkgPSBub3JtU3JjUmVjdC55
KCkgKgogICAgICAgICAgICAgICAgICAgICAgIG5hcnJvd1ByZWNpc2lvblRvRmxvYXQocGF0dGVy
blRyYW5zZm9ybS5kKCkpOwogICAgIG1hdHJpeC5wb3N0VHJhbnNsYXRlKFNrRmxvYXRUb1NjYWxh
cihhZGp1c3RlZFgpLAogICAgICAgICAgICAgICAgICAgICAgICAgIFNrRmxvYXRUb1NjYWxhcihh
ZGp1c3RlZFkpKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luY2Uv
R3JhcGhpY3NDb250ZXh0V2luY2UuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW5j
ZS9HcmFwaGljc0NvbnRleHRXaW5jZS5jcHAKaW5kZXggZjIyZTZjOS4uYjNkMmU4NiAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW5jZS9HcmFwaGljc0NvbnRleHRXaW5j
ZS5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW5jZS9HcmFwaGljc0NvbnRl
eHRXaW5jZS5jcHAKQEAgLTE4NzEsNyArMTg3MSw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Ojpk
cmF3Qml0bWFwKFNoYXJlZEJpdG1hcCogYm1wLCBjb25zdCBJbnRSZWN0JiBkc3RSZWN0SW4sIGNv
CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3Qml0bWFwUGF0dGVybihTaGFyZWRCaXRt
YXAqIGJtcCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdEluLCBjb25zdCBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCYgcGF0dGVyblRyYW5zZm9ybSwKLSAgICAgICAgICAgICAgICBjb25zdCBGbG9hdFBv
aW50JiBwaGFzZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJl
Y3RJbiwgY29uc3QgSW50U2l6ZSYgb3JpZ1NvdXJjZVNpemUpCisgICAgICAgICAgICAgICAgQ29t
cG9zaXRlT3BlcmF0b3Igb3AsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3RJbiwgY29uc3QgSW50
U2l6ZSYgb3JpZ1NvdXJjZVNpemUpCiB7CiAgICAgaWYgKCFtX2RhdGEtPm1fb3BhY2l0eSkKICAg
ICAgICAgcmV0dXJuOwpAQCAtMTg5Miw3ICsxODkyLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6
OmRyYXdCaXRtYXBQYXR0ZXJuKFNoYXJlZEJpdG1hcCogYm1wLCBjb25zdCBGbG9hdFJlY3QmIHRp
bGUKICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCB0cmFuc2Zvcm0gPSBtX2RhdGEtPm1fdHJhbnNm
b3JtOwogICAgIHRyYW5zZm9ybS50cmFuc2xhdGUobW92ZWQud2lkdGgoKSwgbW92ZWQuaGVpZ2h0
KCkpOwogCi0gICAgYm1wLT5kcmF3UGF0dGVybihkYywgdHJhbnNmb3JtLCB0aWxlUmVjdEluLCBw
YXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgb3AsIGRlc3RSZWN0SW4sIG9yaWdTb3VyY2VTaXplKTsK
KyAgICBibXAtPmRyYXdQYXR0ZXJuKGRjLCB0cmFuc2Zvcm0sIHRpbGVSZWN0SW4sIHBhdHRlcm5U
cmFuc2Zvcm0sIG9wLCBkZXN0UmVjdEluLCBvcmlnU291cmNlU2l6ZSk7CiAKICAgICBpZiAoIWJt
cC0+aGFzQWxwaGEoKSkKICAgICAgICAgdHJhbnNwYXJlbnREQy5maWxsQWxwaGFDaGFubmVsKCk7
CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbmNlL0ltYWdlQnVmZmVy
V2luY2UuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW5jZS9JbWFnZUJ1ZmZlcldp
bmNlLmNwcAppbmRleCAzNDE3ZjVmLi41Zjc4ZmQ4IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbmNlL0ltYWdlQnVmZmVyV2luY2UuY3BwCisrKyBiL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luY2UvSW1hZ2VCdWZmZXJXaW5jZS5jcHAKQEAgLTQzLDcgKzQzLDcg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdW5zaWduZWQgZGVjb2RlZFNpemUoKSBjb25zdCB7IHJl
dHVybiAwOyB9CiAgICAgdmlydHVhbCB2b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0KiwgY29uc3Qg
RmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9w
ZXJhdG9yKTsKICAgICB2aXJ0dWFsIHZvaWQgZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0Kiwg
Y29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgcGF0
dGVyblRyYW5zZm9ybSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRmxvYXRQ
b2ludCYgcGhhc2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29tcG9zaXRlT3BlcmF0b3IsIGNvbnN0
IEZsb2F0UmVjdCYgZGVzdFJlY3QpOwogCiAgICAgY29uc3QgSW1hZ2VCdWZmZXJEYXRhKiBtX2Rh
dGE7CiB9OwpAQCAtNTYsOSArNTYsOSBAQCB2b2lkIEJ1ZmZlcmVkSW1hZ2U6OmRyYXcoR3JhcGhp
Y3NDb250ZXh0KiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0CiB9CiAKIHZv
aWQgQnVmZmVyZWRJbWFnZTo6ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0KiBjdHh0LCBjb25z
dCBGbG9hdFJlY3QmIHRpbGVSZWN0SW4sIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBwYXR0
ZXJuVHJhbnNmb3JtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBGbG9hdFBv
aW50JiBwaGFzZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJl
Y3QpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBj
b25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0KQogewotICAgIG1fZGF0YS0+bV9iaXRtYXAtPmRyYXdQ
YXR0ZXJuKGN0eHQsIHRpbGVSZWN0SW4sIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBvcCwgZGVz
dFJlY3QsIHNpemUoKSk7CisgICAgbV9kYXRhLT5tX2JpdG1hcC0+ZHJhd1BhdHRlcm4oY3R4dCwg
dGlsZVJlY3RJbiwgcGF0dGVyblRyYW5zZm9ybSwgb3AsIGRlc3RSZWN0LCBzaXplKCkpOwogfQog
CiBJbWFnZUJ1ZmZlckRhdGE6OkltYWdlQnVmZmVyRGF0YShjb25zdCBJbnRTaXplJiBzaXplKQpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93eC9JbWFnZVd4LmNwcCBiL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd3gvSW1hZ2VXeC5jcHAKaW5kZXggZmY2MGQ2Zi4uNGNk
NzFlMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93eC9JbWFnZVd4LmNw
cAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3d4L0ltYWdlV3guY3BwCkBAIC0xNzYs
NyArMTc2LDcgQEAgdm9pZCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGN0eHQs
IGNvbnN0IEZsb2F0UmVjdCYgZHN0LCBjb25zdCBGbG9hdFIKICAgICAgICAgb2JzZXJ2ZXItPmRp
ZERyYXcodGhpcyk7CiB9CiAKLXZvaWQgQml0bWFwSW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNz
Q29udGV4dCogY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIENv
bG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QpCit2
b2lkIEJpdG1hcEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQqIGN0eHQsIGNvbnN0
IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHBhdHRlcm5U
cmFuc2Zvcm0sIENvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBjb25zdCBGbG9hdFJlY3Qm
IGRzdFJlY3QpCiB7CiAgICAgaWYgKCFtX3NvdXJjZS5pbml0aWFsaXplZCgpKQogICAgICAgICBy
ZXR1cm47CkBAIC0yMDEsMTAgKzIwMSw4IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmRyYXdQYXR0ZXJu
KEdyYXBoaWNzQ29udGV4dCogY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjCiAjaWYg
VVNFKFdYR0MpCiAgICAgd3hHcmFwaGljc0NvbnRleHQqIGdjID0gY29udGV4dC0+R2V0R3JhcGhp
Y3NDb250ZXh0KCk7CiAKLSAgICBmbG9hdCBhZGp1c3RlZFggPSBwaGFzZS54KCkgKyBzcmNSZWN0
LngoKSAqCi0gICAgICAgICAgICAgICAgICAgICAgbmFycm93UHJlY2lzaW9uVG9GbG9hdChwYXR0
ZXJuVHJhbnNmb3JtLmEoKSk7Ci0gICAgZmxvYXQgYWRqdXN0ZWRZID0gcGhhc2UueSgpICsgc3Jj
UmVjdC55KCkgKgotICAgICAgICAgICAgICAgICAgICAgIG5hcnJvd1ByZWNpc2lvblRvRmxvYXQo
cGF0dGVyblRyYW5zZm9ybS5kKCkpOworICAgIGZsb2F0IGFkanVzdGVkWCA9IHNyY1JlY3QueCgp
ICogbmFycm93UHJlY2lzaW9uVG9GbG9hdChwYXR0ZXJuVHJhbnNmb3JtLmEoKSk7CisgICAgZmxv
YXQgYWRqdXN0ZWRZID0gc3JjUmVjdC55KCkgKiBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHBhdHRl
cm5UcmFuc2Zvcm0uZCgpKTsKICAgICAgICAgICAgICAgICAgICAgICAKICAgICBnYy0+Q29uY2F0
VHJhbnNmb3JtKHBhdHRlcm5UcmFuc2Zvcm0pOwogI2Vsc2UKQEAgLTI2MSw3ICsyNTksNyBAQCB2
b2lkIEJpdG1hcEltYWdlOjppbnZhbGlkYXRlUGxhdGZvcm1EYXRhKCkKIAogfQogCi12b2lkIElt
YWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIHNyY1Jl
Y3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBG
bG9hdFBvaW50JiBwaGFzZSwgQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIGNvbnN0IEZs
b2F0UmVjdCYgZGVzdFJlY3QpCit2b2lkIEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRl
eHQqLCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4
JiBwYXR0ZXJuVHJhbnNmb3JtLCBDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciwgY29uc3Qg
RmxvYXRSZWN0JiBkZXN0UmVjdCkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>