<?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>76211</bug_id>
          
          <creation_ts>2012-01-12 14:00:47 -0800</creation_ts>
          <short_desc>[chromium] Enable tracking opaque region in Skia graphics context, return it from LayerTextureUpdater</short_desc>
          <delta_ts>2012-01-18 13:42:18 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>74352</dependson>
          <blocked>76015</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dana Jansens">danakj</reporter>
          <assigned_to name="Dana Jansens">danakj</assigned_to>
          <cc>backer</cc>
    
    <cc>cc-bugs</cc>
    
    <cc>dglazkov</cc>
    
    <cc>enne</cc>
    
    <cc>jamesr</cc>
    
    <cc>piman</cc>
    
    <cc>reveman</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>535136</commentid>
    <comment_count>0</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-01-12 14:00:47 -0800</bug_when>
    <thetext>[chromium] Enable tracking opaque region in Skia graphics context and save it in LayerTextureUpdater after paint.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>535146</commentid>
    <comment_count>1</comment_count>
      <attachid>122308</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-01-12 14:10:34 -0800</bug_when>
    <thetext>Created attachment 122308
Patch

- Compute an opaque area in the Skia graphics context when the layer isn&apos;t known to be fully opaque already.
- Save the opaque area given back by Skia&apos;s graphics context in the LayerTextureUpdater.
- Pass on the opaque() flag equally to all LayerTextureUpdaters for possible optimizations.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>535148</commentid>
    <comment_count>2</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-01-12 14:11:54 -0800</bug_when>
    <thetext>(EWS is going to fail until CQ lands #74352.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>535174</commentid>
    <comment_count>3</comment_count>
      <attachid>122308</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-12 14:35:21 -0800</bug_when>
    <thetext>Comment on attachment 122308
Patch

Attachment 122308 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/11152216</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>535193</commentid>
    <comment_count>4</comment_count>
      <attachid>122314</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-01-12 14:50:12 -0800</bug_when>
    <thetext>Created attachment 122314
Patch

rebased</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>536038</commentid>
    <comment_count>5</comment_count>
      <attachid>122314</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-01-13 15:29:55 -0800</bug_when>
    <thetext>Comment on attachment 122314
Patch

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

&gt; Source/WebCore/platform/graphics/chromium/LayerTextureUpdater.h:81
&gt; +    // A subset of the layer determined to be opaque during update. Not valid when setOpaque() has been set true,
&gt; +    // as the output is already known to be opaque in that case.
&gt; +    const IntRect&amp; opaqueRect() const { return m_opaqueRect; }

this is a little weird. the way this works seems to be that every given call to prepareToUpdate() could potentially update this rectangle to be a part of the passed in contentRect, but the opaqueRect isn&apos;t valid for any future call to prepareToUpdate(). since we could call prepareToUpdate() many times on an updater with different content rects it seems like this would be better implemented as an output parameter to prepareToUpdate(). what would you think of that?

&gt; Source/WebKit/chromium/tests/SkPictureCanvasLayerTextureUpdaterTest.cpp:68
&gt; +    updater-&gt;prepareToUpdate(IntRect(0, 0, width, height), IntSize(width, height), 0, 1.0); \

just 1, not 1.0

&gt; Source/WebKit/chromium/tests/SkPictureCanvasLayerTextureUpdaterTest.cpp:82
&gt; +        Color opaque(1.0f, 0.0f, 0.0f, 1.0f);

WK style is (1, 0, 0, 1) or just (1, 0, 0). same goes for the rest of this file</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>536179</commentid>
    <comment_count>6</comment_count>
      <attachid>122314</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-01-14 07:04:48 -0800</bug_when>
    <thetext>Comment on attachment 122314
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/chromium/LayerTextureUpdater.h:81
&gt;&gt; +    const IntRect&amp; opaqueRect() const { return m_opaqueRect; }
&gt; 
&gt; this is a little weird. the way this works seems to be that every given call to prepareToUpdate() could potentially update this rectangle to be a part of the passed in contentRect, but the opaqueRect isn&apos;t valid for any future call to prepareToUpdate(). since we could call prepareToUpdate() many times on an updater with different content rects it seems like this would be better implemented as an output parameter to prepareToUpdate(). what would you think of that?

yes absolutely. thanks. I added a rect to pass to prepareToUpdate() then, which is not used at all, as a local variable in prepareToUpdateTiles. Next CL will remove this as stated in the FIXME, just trying to keep CLs small.

&gt;&gt; Source/WebKit/chromium/tests/SkPictureCanvasLayerTextureUpdaterTest.cpp:68
&gt;&gt; +    updater-&gt;prepareToUpdate(IntRect(0, 0, width, height), IntSize(width, height), 0, 1.0); \
&gt; 
&gt; just 1, not 1.0

done.

&gt;&gt; Source/WebKit/chromium/tests/SkPictureCanvasLayerTextureUpdaterTest.cpp:82
&gt;&gt; +        Color opaque(1.0f, 0.0f, 0.0f, 1.0f);
&gt; 
&gt; WK style is (1, 0, 0, 1) or just (1, 0, 0). same goes for the rest of this file

oops, i tried 1.0 but ints (255) obviously work here, thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>536180</commentid>
    <comment_count>7</comment_count>
      <attachid>122545</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-01-14 07:07:02 -0800</bug_when>
    <thetext>Created attachment 122545
Patch

comments addressed.

- Since the opaqueRect is being returned from all texture updaters, I made BitmapCanvasLayerTextureUpdater compute the resultingOpaqueRect also.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>537255</commentid>
    <comment_count>8</comment_count>
      <attachid>122545</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-01-17 11:49:49 -0800</bug_when>
    <thetext>Comment on attachment 122545
Patch

This looks great to me.  :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>537319</commentid>
    <comment_count>9</comment_count>
      <attachid>122545</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-01-17 13:15:20 -0800</bug_when>
    <thetext>Comment on attachment 122545
Patch

R=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>538116</commentid>
    <comment_count>10</comment_count>
      <attachid>122545</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-18 13:42:08 -0800</bug_when>
    <thetext>Comment on attachment 122545
Patch

Clearing flags on attachment: 122545

Committed r105314: &lt;http://trac.webkit.org/changeset/105314&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>538117</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-18 13:42:18 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>122308</attachid>
            <date>2012-01-12 14:10:34 -0800</date>
            <delta_ts>2012-01-12 14:50:07 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76211-20120112171033.patch</filename>
            <type>text/plain</type>
            <size>12934</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA0NzQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjBiZWVhYWE3ZTQyYmUx
ZDdlZTM0ODQxM2YxNjIyM2I1MDg3NDlmZi4uYzJmNDNkZjJmOWRjMDM2ODJiMjg2MjRjY2ZmYTE5
ZWI2ZmI3MWQ4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDEyLTAxLTEyICBEYW5h
IEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gRW5h
YmxlIHRyYWNraW5nIG9wYXF1ZSByZWdpb24gaW4gU2tpYSBncmFwaGljcyBjb250ZXh0LCBzYXZl
IGl0IGluIExheWVyVGV4dHVyZVVwZGF0ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTc2MjExCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgTmV3IHVuaXQgdGVzdHMgaW4gU2tQaWN0dXJlQ2FudmFzTGF5ZXJU
ZXh0dXJlVXBkYXRlclRlc3QuY3BwLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVu
dExheWVyQ2hyb21pdW06OmNyZWF0ZVRleHR1cmVVcGRhdGVyKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRleHR1cmVVcGRhdGVyLmg6CisgICAgICAgIChXZWJD
b3JlOjpMYXllclRleHR1cmVVcGRhdGVyOjpvcGFxdWVSZWN0KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9Ta1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6
OnByZXBhcmVUb1VwZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTa1BpY3R1cmVDYW52YXNMYXll
clRleHR1cmVVcGRhdGVyOjpzZXRPcGFxdWUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL1NrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaDoKKwogMjAxMi0w
MS0xMSAgQWRhbSBUcmVhdCAgPGF0cmVhdEByaW0uY29tPgogCiAgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NjA4OApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxv
ZwppbmRleCAzNTNjNWM3NDc4ZTZlZjYwNWY0YzM0OWY4ZmUwNWRlZDE1MDhlNjUxLi5kMDA1ZDEw
MjQ2YzQ5NWQ2ZWE1Zjk0MmU3ZmIxNWQ1MmRiOWNiN2Y5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDEyLTAxLTEyICBEYW5hIEphbnNlbnMgIDxkYW5ha2pA
Y2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gRW5hYmxlIHRyYWNraW5nIG9wYXF1
ZSByZWdpb24gaW4gU2tpYSBncmFwaGljcyBjb250ZXh0LCBzYXZlIGl0IGluIExheWVyVGV4dHVy
ZVVwZGF0ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTc2MjExCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBXZWJLaXQuZ3lwaToKKyAgICAgICAgKiB0ZXN0cy9Ta1BpY3R1cmVDYW52YXNMYXllclRleHR1
cmVVcGRhdGVyVGVzdC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6VGVzdExheWVyUGFp
bnRlckNocm9taXVtOjpUZXN0TGF5ZXJQYWludGVyQ2hyb21pdW0pOgorICAgICAgICAoV2ViQ29y
ZTo6VGVzdExheWVyUGFpbnRlckNocm9taXVtOjpwYWludCk6CisgICAgICAgIChXZWJDb3JlOjpQ
YWludEZpbGxPcGFxdWU6Om9wZXJhdG9yKCkpOgorICAgICAgICAoV2ViQ29yZTo6UGFpbnRGaWxs
QWxwaGE6Om9wZXJhdG9yKCkpOgorICAgICAgICAoV2ViQ29yZTo6VEVTVCk6CisKIDIwMTItMDEt
MTAgIERtaXRyeSBMb21vdiAgPGRzbG9tb3ZAZ29vZ2xlLmNvbT4KIAogICAgICAgICBbQ2hyb21p
dW1dIFJlbW92ZSBvYnNvbGV0ZSByZWZlcmVuY2VzIHRvIFdlYldvcmtlciBjbGFzcy4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRM
YXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0NvbnRlbnRMYXllckNocm9taXVtLmNwcAppbmRleCBkN2M2MDU2MmFlY2VhNDgxOTc0YjBh
NjBiNGZkY2VlNmFkZWI3MjcwLi5mNTMzOWY4YzhiYWIzNTY0YzNlMDU3NjlmMGI4Y2NmZDE5ZDY4
ODViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uY3BwCkBAIC0xMTksMTggKzEx
OSwxMyBAQCB2b2lkIENvbnRlbnRMYXllckNocm9taXVtOjppZGxlUGFpbnRDb250ZW50c0lmRGly
dHkoKQogdm9pZCBDb250ZW50TGF5ZXJDaHJvbWl1bTo6Y3JlYXRlVGV4dHVyZVVwZGF0ZXIoY29u
c3QgQ0NMYXllclRyZWVIb3N0KiBob3N0KQogewogI2lmIFVTRShTS0lBKQotICAgIGlmIChob3N0
LT5zZXR0aW5ncygpLmFjY2VsZXJhdGVQYWludGluZykgeworICAgIGlmIChob3N0LT5zZXR0aW5n
cygpLmFjY2VsZXJhdGVQYWludGluZykKICAgICAgICAgbV90ZXh0dXJlVXBkYXRlciA9IEZyYW1l
QnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6Y3JlYXRlKENvbnRlbnRM
YXllclBhaW50ZXI6OmNyZWF0ZShtX2RlbGVnYXRlKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0KLSAgICBpZiAoaG9zdC0+c2V0dGluZ3MoKS5wZXJUaWxlUGFpbnRpbmcpIHsKKyAgICBlbHNl
IGlmIChob3N0LT5zZXR0aW5ncygpLnBlclRpbGVQYWludGluZykKICAgICAgICAgbV90ZXh0dXJl
VXBkYXRlciA9IEJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OmNyZWF0
ZShDb250ZW50TGF5ZXJQYWludGVyOjpjcmVhdGUobV9kZWxlZ2F0ZSksIGhvc3QtPmxheWVyUmVu
ZGVyZXJDYXBhYmlsaXRpZXMoKS51c2luZ01hcFN1Yik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
CisgICAgZWxzZQogI2VuZGlmIC8vIFVTRShTS0lBKQotCi0gICAgbV90ZXh0dXJlVXBkYXRlciA9
IEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OmNyZWF0ZShDb250ZW50TGF5ZXJQYWlu
dGVyOjpjcmVhdGUobV9kZWxlZ2F0ZSksIGhvc3QtPmxheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMo
KS51c2luZ01hcFN1Yik7CisgICAgICAgIG1fdGV4dHVyZVVwZGF0ZXIgPSBCaXRtYXBDYW52YXNM
YXllclRleHR1cmVVcGRhdGVyOjpjcmVhdGUoQ29udGVudExheWVyUGFpbnRlcjo6Y3JlYXRlKG1f
ZGVsZWdhdGUpLCBob3N0LT5sYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKCkudXNpbmdNYXBTdWIp
OwogICAgIG1fdGV4dHVyZVVwZGF0ZXItPnNldE9wYXF1ZShvcGFxdWUoKSk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGV4
dHVyZVVwZGF0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0xheWVyVGV4dHVyZVVwZGF0ZXIuaAppbmRleCBlZGNmN2E3YTg1YWY2YzFlN2Y2M2Q3NmIwY2U4
Y2U3YWJjYjFiMDMzLi5mM2E5NzIwYjFjMzYyY2E0NDU1N2M5NmRmNGMzMTIyODJmOTdhYjg5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXll
clRleHR1cmVVcGRhdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vTGF5ZXJUZXh0dXJlVXBkYXRlci5oCkBAIC03Myw3ICs3MywxNSBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCBTYW1wbGVkVGV4ZWxGb3JtYXQgc2FtcGxlZFRleGVsRm9ybWF0KEdDM0Rl
bnVtIHRleHR1cmVGb3JtYXQpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZVRvVXBkYXRl
KGNvbnN0IEludFJlY3QmIC8qIGNvbnRlbnRSZWN0ICovLCBjb25zdCBJbnRTaXplJiAvKiB0aWxl
U2l6ZSAqLywgaW50IC8qIGJvcmRlclRleGVscyAqLywgZmxvYXQgLyogY29udGVudHNTY2FsZSAq
LykgeyB9CiAKKyAgICAvLyBTZXQgdHJ1ZSBieSB0aGUgbGF5ZXIgd2hlbiBpdCBpcyBrbm93biB0
aGF0IHRoZSBlbnRpcmUgb3V0cHV0IGlzIGdvaW5nIHRvIGJlIG9wYXF1ZS4KICAgICB2aXJ0dWFs
IHZvaWQgc2V0T3BhcXVlKGJvb2wpIHsgfQorCisgICAgLy8gQSBzdWJzZXQgb2YgdGhlIGxheWVy
IGRldGVybWluZWQgdG8gYmUgb3BhcXVlIGR1cmluZyB1cGRhdGUuIE5vdCB2YWxpZCB3aGVuIHNl
dE9wYXF1ZSgpIGhhcyBiZWVuIHNldCB0cnVlLAorICAgIC8vIGFzIHRoZSBvdXRwdXQgaXMgYWxy
ZWFkeSBrbm93biB0byBiZSBvcGFxdWUgaW4gdGhhdCBjYXNlLgorICAgIGNvbnN0IEludFJlY3Qm
IG9wYXF1ZVJlY3QoKSBjb25zdCB7IHJldHVybiBtX29wYXF1ZVJlY3Q7IH0KKworcHJvdGVjdGVk
OgorICAgIEludFJlY3QgbV9vcGFxdWVSZWN0OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
U2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Ta1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRh
dGVyLmNwcAppbmRleCA1MzdlMTM3ZThkOGVjNTE4YjkzNGFhNWNkMmQ3MDBjNzRiMTlmZTRiLi42
MmFlNzgyYTRlNjk3NTcwZGQyNGViNDBmOTc1MmMyZTBmNzUyYWI0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Ta1BpY3R1cmVDYW52YXNMYXll
clRleHR1cmVVcGRhdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9Ta1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcApAQCAtNTMs
OSArNTMsMTUgQEAgdm9pZCBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpwcmVw
YXJlVG9VcGRhdGUoY29uc3QgSW50UmVjdCYgY29udGVudFIKICAgICBTa0NhbnZhcyogY2FudmFz
ID0gbV9waWN0dXJlLmJlZ2luUmVjb3JkaW5nKGNvbnRlbnRSZWN0LndpZHRoKCksIGNvbnRlbnRS
ZWN0LmhlaWdodCgpKTsKICAgICBQbGF0Zm9ybUNvbnRleHRTa2lhIHBsYXRmb3JtQ29udGV4dChj
YW52YXMpOwogICAgIHBsYXRmb3JtQ29udGV4dC5zZXREZWZlcnJlZCh0cnVlKTsKKyAgICBwbGF0
Zm9ybUNvbnRleHQuc2V0VHJhY2tPcGFxdWVSZWdpb24oIW1fb3V0cHV0S25vd25PcGFxdWUpOwog
ICAgIEdyYXBoaWNzQ29udGV4dCBncmFwaGljc0NvbnRleHQoJnBsYXRmb3JtQ29udGV4dCk7CiAg
ICAgcGFpbnRDb250ZW50cyhncmFwaGljc0NvbnRleHQsIGNvbnRlbnRSZWN0LCBjb250ZW50c1Nj
YWxlKTsKICAgICBtX3BpY3R1cmUuZW5kUmVjb3JkaW5nKCk7CisKKyAgICBpZiAobV9vdXRwdXRL
bm93bk9wYXF1ZSkKKyAgICAgICAgbV9vcGFxdWVSZWN0ID0gSW50UmVjdCgpOworICAgIGVsc2UK
KyAgICAgICAgbV9vcGFxdWVSZWN0ID0gcGxhdGZvcm1Db250ZXh0Lm9wYXF1ZVJlZ2lvbigpLmFz
UmVjdCgpOwogfQogCiB2b2lkIFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OmRy
YXdQaWN0dXJlKFNrQ2FudmFzKiBjYW52YXMpCkBAIC02NCw2ICs3MCwxMSBAQCB2b2lkIFNrUGlj
dHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OmRyYXdQaWN0dXJlKFNrQ2FudmFzKiBjYW52
YXMpCiAgICAgY2FudmFzLT5kcmF3UGljdHVyZShtX3BpY3R1cmUpOwogfQogCit2b2lkIFNrUGlj
dHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnNldE9wYXF1ZShib29sIG9wYXF1ZSkKK3sK
KyAgICBtX291dHB1dEtub3duT3BhcXVlID0gb3BhcXVlOworfQorCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCiAjZW5kaWYgLy8gVVNFKFNLSUEpCiAjZW5kaWYgLy8gVVNFKEFDQ0VMRVJBVEVEX0NP
TVBPU0lUSU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0
dXJlVXBkYXRlci5oCmluZGV4IDk1Yjc4YzNiOTEwNTJkZWIxMTY2Zjg2MGZkZjRjZmMwZTAyNjU3
ZDMuLjY3ZGU2OGZiZGY1ZWQ2OWRjZTQ3OTZiMzE0Y2Q1MmVmMmZkYTIyMTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NrUGljdHVyZUNhbnZh
c0xheWVyVGV4dHVyZVVwZGF0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9Ta1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgKQEAgLTU0
LDggKzU0LDEzIEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZVRvVXBkYXRl
KGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBjb25zdCBJbnRTaXplJiB0aWxlU2l6ZSwgaW50
IGJvcmRlclRleGVscywgZmxvYXQgY29udGVudHNTY2FsZSk7CiAgICAgdm9pZCBkcmF3UGljdHVy
ZShTa0NhbnZhcyopOwogCisgICAgdmlydHVhbCB2b2lkIHNldE9wYXF1ZShib29sKTsKKwogcHJp
dmF0ZToKLSAgICBTa1BpY3R1cmUgbV9waWN0dXJlOyAvLyBSZWNvcmRpbmcgY2FudmFzLgorICAg
IC8vIFJlY29yZGluZyBjYW52YXMuCisgICAgU2tQaWN0dXJlIG1fcGljdHVyZTsKKyAgICAvLyBU
cnVlIHdoZW4gaXQgaXMga25vd24gdGhhdCBhbGwgb3V0cHV0IHBpeGVscyB3aWxsIGJlIG9wYXF1
ZS4KKyAgICBib29sIG1fb3V0cHV0S25vd25PcGFxdWU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXBpIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwaQppbmRleCA0YzBjMDIzZTFmN2Q5N2Qx
NzlkNTA0NjE4MjdjOTgyZjY4MWQ1ZWJiLi5iYzhkOTBlM2EwNDg1ZTNjYTAwMGNmNzRiNzE1ZjAz
MzBiODQ0ODU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXBp
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cGkKQEAgLTk3LDYgKzk3LDcg
QEAKICAgICAgICAgICAgICd0ZXN0cy9QT0RJbnRlcnZhbFRyZWVUZXN0LmNwcCcsCiAgICAgICAg
ICAgICAndGVzdHMvUE9EUmVkQmxhY2tUcmVlVGVzdC5jcHAnLAogICAgICAgICAgICAgJ3Rlc3Rz
L1JlbmRlclRhYmxlQ2VsbFRlc3QuY3BwJywKKyAgICAgICAgICAgICd0ZXN0cy9Ta1BpY3R1cmVD
YW52YXNMYXllclRleHR1cmVVcGRhdGVyVGVzdC5jcHAnLAogICAgICAgICAgICAgJ3Rlc3RzL1Rl
eHR1cmVNYW5hZ2VyVGVzdC5jcHAnLAogICAgICAgICAgICAgJ3Rlc3RzL1RpbGVkTGF5ZXJDaHJv
bWl1bVRlc3QuY3BwJywKICAgICAgICAgICAgICd0ZXN0cy9UaWxpbmdEYXRhVGVzdC5jcHAnLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9Ta1BpY3R1cmVDYW52YXNM
YXllclRleHR1cmVVcGRhdGVyVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L1NrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXJUZXN0LmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5k
NTNkZTE3OWIzNGQ0M2RiMTdiMDFmMmU4MjU0ODQwM2IyODNiZDg3Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9Ta1BpY3R1cmVDYW52YXNMYXllclRleHR1
cmVVcGRhdGVyVGVzdC5jcHAKQEAgLTAsMCArMSwxMjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwor
ICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIlNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVw
ZGF0ZXIuaCIKKworI2luY2x1ZGUgIkJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVw
ZGF0ZXIuaCIKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKKyNpbmNsdWRlICJMYXllclBh
aW50ZXJDaHJvbWl1bS5oIgorI2luY2x1ZGUgIlBsYXRmb3JtQ29udGV4dFNraWEuaCIKKworI2lu
Y2x1ZGUgIlNrQml0bWFwLmgiCisjaW5jbHVkZSAiU2tDYW52YXMuaCIKKworI2luY2x1ZGUgPGdt
b2NrL2dtb2NrLmg+CisjaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KKwordXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CisKK25hbWVzcGFjZSB7CisKK3N0cnVjdCBQYWludENhbGxiYWNrIHsKKyAgICB2
aXJ0dWFsIHZvaWQgb3BlcmF0b3IoKShHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJbnRSZWN0Jikg
PSAwOworfTsKKworY2xhc3MgVGVzdExheWVyUGFpbnRlckNocm9taXVtIDogcHVibGljIExheWVy
UGFpbnRlckNocm9taXVtIHsKK3B1YmxpYzoKKyAgICBUZXN0TGF5ZXJQYWludGVyQ2hyb21pdW0o
UGFpbnRDYWxsYmFjayYgY2FsbGJhY2spIDogbV9jYWxsYmFjayhjYWxsYmFjaykgeyB9CisKKyAg
ICB2aXJ0dWFsIHZvaWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRS
ZWN0JiBjb250ZW50UmVjdCkKKyAgICB7CisgICAgICAgIG1fY2FsbGJhY2soY29udGV4dCwgY29u
dGVudFJlY3QpOworICAgIH0KKworICBwcml2YXRlOgorICAgIFBhaW50Q2FsbGJhY2smIG1fY2Fs
bGJhY2s7Cit9OworCisjZGVmaW5lIFBBSU5UX0NBTlZBUyhkcmF3RnVuY3Rpb24sIHdpZHRoLCBo
ZWlnaHQsIG9wYXF1ZSkgXAorICAgIFJlZlB0cjxDYW52YXNMYXllclRleHR1cmVVcGRhdGVyPiB1
cGRhdGVyID0gQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6Y3JlYXRl
KGFkb3B0UHRyKG5ldyBUZXN0TGF5ZXJQYWludGVyQ2hyb21pdW0oZHJhd0Z1bmN0aW9uKSksIGZh
bHNlKTsgXAorICAgIHVwZGF0ZXItPnNldE9wYXF1ZShvcGFxdWUpOyBcCisgICAgU2tCaXRtYXAg
Yml0bWFwOyBcCisgICAgYml0bWFwLnNldENvbmZpZyhTa0JpdG1hcDo6a0FSR0JfODg4OF9Db25m
aWcsIHdpZHRoLCBoZWlnaHQpOyBcCisgICAgYml0bWFwLmFsbG9jUGl4ZWxzKCk7IFwKKyAgICBT
a0NhbnZhcyBjYW52YXMoYml0bWFwKTsgXAorICAgIHVwZGF0ZXItPnByZXBhcmVUb1VwZGF0ZShJ
bnRSZWN0KDAsIDAsIHdpZHRoLCBoZWlnaHQpLCBJbnRTaXplKHdpZHRoLCBoZWlnaHQpLCAwLCAx
LjApOyBcCisKKyNkZWZpbmUgRVhQRUNUX0VRX1JFQ1QoYSwgYikgXAorICAgIEVYUEVDVF9FUShh
LngoKSwgYi54KCkpOyBcCisgICAgRVhQRUNUX0VRKGEubWF4WCgpLCBiLm1heFgoKSk7IFwKKyAg
ICBFWFBFQ1RfRVEoYS55KCksIGIueSgpKTsgXAorICAgIEVYUEVDVF9FUShhLm1heFkoKSwgYi5t
YXhZKCkpOworCisKKy8vIFBhaW50IGNhbGxiYWNrIGZ1bmN0b3JzCisKK3N0cnVjdCBQYWludEZp
bGxPcGFxdWUgOiBwdWJsaWMgUGFpbnRDYWxsYmFjayB7CisgICAgdmlydHVhbCB2b2lkIG9wZXJh
dG9yKCkoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBjb250ZW50UmVj
dCkKKyAgICB7CisgICAgICAgIENvbG9yIG9wYXF1ZSgxLjBmLCAwLjBmLCAwLjBmLCAxLjBmKTsK
KyAgICAgICAgSW50UmVjdCB0b3AoY29udGVudFJlY3QueCgpLCBjb250ZW50UmVjdC55KCksIGNv
bnRlbnRSZWN0LndpZHRoKCksIGNvbnRlbnRSZWN0LmhlaWdodCgpIC8gMik7CisgICAgICAgIElu
dFJlY3QgYm90dG9tKGNvbnRlbnRSZWN0LngoKSwgY29udGVudFJlY3QueSgpICsgY29udGVudFJl
Y3QuaGVpZ2h0KCkgLyAyLCBjb250ZW50UmVjdC53aWR0aCgpLCBjb250ZW50UmVjdC5oZWlnaHQo
KSAvIDIpOworICAgICAgICBjb250ZXh0LmZpbGxSZWN0KHRvcCwgb3BhcXVlLCBDb2xvclNwYWNl
RGV2aWNlUkdCKTsKKyAgICAgICAgY29udGV4dC5maWxsUmVjdChib3R0b20sIG9wYXF1ZSwgQ29s
b3JTcGFjZURldmljZVJHQik7CisgICAgfQorfTsKKworc3RydWN0IFBhaW50RmlsbEFscGhhIDog
cHVibGljIFBhaW50Q2FsbGJhY2sgeworICAgIHZpcnR1YWwgdm9pZCBvcGVyYXRvcigpKEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QpCisgICAgewor
ICAgICAgICBDb2xvciBhbHBoYSgwLjBmLCAwLjBmLCAwLjBmLCAwLjBmKTsKKyAgICAgICAgY29u
dGV4dC5maWxsUmVjdChjb250ZW50UmVjdCwgYWxwaGEsIENvbG9yU3BhY2VEZXZpY2VSR0IpOwor
ICAgIH0KK307CisKK1RFU1QoU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlclRlc3Qs
IHRlc3RPcGFxdWVSZWN0UHJlc2VudEFmdGVyT3BhcXVlUGFpbnQpCit7CisgICAgUGFpbnRGaWxs
T3BhcXVlIGZpbGxPcGFxdWU7CisgICAgUEFJTlRfQ0FOVkFTKGZpbGxPcGFxdWUsIDQwMCwgNDAw
LCBmYWxzZSk7CisgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgwLCAwLCA0MDAsIDQwMCksIHVw
ZGF0ZXItPm9wYXF1ZVJlY3QoKSk7Cit9CisKK1RFU1QoU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0
dXJlVXBkYXRlclRlc3QsIHRlc3RPcGFxdWVSZWN0Tm90UHJlc2VudEFmdGVyTm9uT3BhcXVlUGFp
bnQpCit7CisgICAgUGFpbnRGaWxsQWxwaGEgZmlsbEFscGhhOworICAgIFBBSU5UX0NBTlZBUyhm
aWxsQWxwaGEsIDQwMCwgNDAwLCBmYWxzZSk7CisgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgw
LCAwLCAwLCAwKSwgdXBkYXRlci0+b3BhcXVlUmVjdCgpKTsKK30KKworVEVTVChTa1BpY3R1cmVD
YW52YXNMYXllclRleHR1cmVVcGRhdGVyVGVzdCwgdGVzdE9wYXF1ZVJlY3ROb3RQcmVzZW50Rm9y
T3BhcXVlTGF5ZXJXaXRoT3BhcXVlUGFpbnQpCit7CisgICAgUGFpbnRGaWxsT3BhcXVlIGZpbGxP
cGFxdWU7CisgICAgUEFJTlRfQ0FOVkFTKGZpbGxPcGFxdWUsIDQwMCwgNDAwLCB0cnVlKTsKKyAg
ICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDAsIDAsIDAsIDApLCB1cGRhdGVyLT5vcGFxdWVSZWN0
KCkpOworfQorCitURVNUKFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXJUZXN0LCB0
ZXN0T3BhcXVlUmVjdE5vdFByZXNlbnRGb3JPcGFxdWVMYXllcldpdGhOb25PcGFxdWVQYWludCkK
K3sKKyAgICBQYWludEZpbGxBbHBoYSBmaWxsQWxwaGE7CisgICAgUEFJTlRfQ0FOVkFTKGZpbGxB
bHBoYSwgNDAwLCA0MDAsIHRydWUpOworICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMCwgMCwg
MCwgMCksIHVwZGF0ZXItPm9wYXF1ZVJlY3QoKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>122314</attachid>
            <date>2012-01-12 14:50:12 -0800</date>
            <delta_ts>2012-01-14 07:06:57 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76211-20120112175011.patch</filename>
            <type>text/plain</type>
            <size>13160</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA0ODYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDI0NDcwMzBmMDY3NmY3
YWQzYWYxMzFmNDcxMWMyNjcwNTY3YTYyNC4uZThlNTk1MTA0NjIxNDNjMTFlMjIzNjk1YmFmOThj
NDViNzEyNmU0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDIzIEBACiAyMDEyLTAxLTEyICBEYW5h
IEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgogCisgICAgICAgIFtjaHJvbWl1bV0gRW5h
YmxlIHRyYWNraW5nIG9wYXF1ZSByZWdpb24gaW4gU2tpYSBncmFwaGljcyBjb250ZXh0LCBzYXZl
IGl0IGluIExheWVyVGV4dHVyZVVwZGF0ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTc2MjExCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgTmV3IHVuaXQgdGVzdHMgaW4gU2tQaWN0dXJlQ2FudmFzTGF5ZXJU
ZXh0dXJlVXBkYXRlclRlc3QuY3BwLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVu
dExheWVyQ2hyb21pdW06OmNyZWF0ZVRleHR1cmVVcGRhdGVyKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRleHR1cmVVcGRhdGVyLmg6CisgICAgICAgIChXZWJD
b3JlOjpMYXllclRleHR1cmVVcGRhdGVyOjpvcGFxdWVSZWN0KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9Ta1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6
OnByZXBhcmVUb1VwZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTa1BpY3R1cmVDYW52YXNMYXll
clRleHR1cmVVcGRhdGVyOjpzZXRPcGFxdWUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL1NrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaDoKKworMjAxMi0w
MS0xMiAgRGFuYSBKYW5zZW5zICA8ZGFuYWtqQGNocm9taXVtLm9yZz4KKwogICAgICAgICBbc2tp
YV0gVHJhY2sgYSBzaW1wbGUgb3BhcXVlIGFyZWEgd2hlbiBwYWludGluZyB2aWEgUGxhdGZvcm1D
b250ZXh0U2tpYSBhbmQgc2F2ZSBpbiBMYXllclRleHR1cmVVcGRhdGVyCiAgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NDM1MgogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCmluZGV4IDRhMGRjOTdmMjkzYmU0YzM4YTM2OWZmNWQ4NDEzMjgzMWE5NjEyMmEu
LjJmYjJhYzY4YWQwMzAyNDNmODAwNzJlZTk0NzBjNWQ4MTk0ZDQ4ZGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMjAgQEAKIDIwMTItMDEtMTIgIERhbmEgSmFuc2VucyAg
PGRhbmFrakBjaHJvbWl1bS5vcmc+CiAKKyAgICAgICAgW2Nocm9taXVtXSBFbmFibGUgdHJhY2tp
bmcgb3BhcXVlIHJlZ2lvbiBpbiBTa2lhIGdyYXBoaWNzIGNvbnRleHQsIHNhdmUgaXQgaW4gTGF5
ZXJUZXh0dXJlVXBkYXRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NzYyMTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIFdlYktpdC5neXBpOgorICAgICAgICAqIHRlc3RzL1NrUGljdHVyZUNhbnZhc0xh
eWVyVGV4dHVyZVVwZGF0ZXJUZXN0LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpUZXN0
TGF5ZXJQYWludGVyQ2hyb21pdW06OlRlc3RMYXllclBhaW50ZXJDaHJvbWl1bSk6CisgICAgICAg
IChXZWJDb3JlOjpUZXN0TGF5ZXJQYWludGVyQ2hyb21pdW06OnBhaW50KToKKyAgICAgICAgKFdl
YkNvcmU6OlBhaW50RmlsbE9wYXF1ZTo6b3BlcmF0b3IoKSk6CisgICAgICAgIChXZWJDb3JlOjpQ
YWludEZpbGxBbHBoYTo6b3BlcmF0b3IoKSk6CisgICAgICAgIChXZWJDb3JlOjpURVNUKToKKwor
MjAxMi0wMS0xMiAgRGFuYSBKYW5zZW5zICA8ZGFuYWtqQGNocm9taXVtLm9yZz4KKwogICAgICAg
ICBbc2tpYV0gVHJhY2sgYSBzaW1wbGUgb3BhcXVlIGFyZWEgd2hlbiBwYWludGluZyB2aWEgUGxh
dGZvcm1Db250ZXh0U2tpYSBhbmQgc2F2ZSBpbiBMYXllclRleHR1cmVVcGRhdGVyCiAgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NDM1MgogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5
ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggZDdjNjA1NjJhZWNlYTQ4MTk3NGIwYTYw
YjRmZGNlZTZhZGViNzI3MC4uZjUzMzlmOGM4YmFiMzU2NGMzZTA1NzY5ZjBiOGNjZmQxOWQ2ODg1
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Q29udGVudExheWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmNwcApAQCAtMTE5LDE4ICsxMTks
MTMgQEAgdm9pZCBDb250ZW50TGF5ZXJDaHJvbWl1bTo6aWRsZVBhaW50Q29udGVudHNJZkRpcnR5
KCkKIHZvaWQgQ29udGVudExheWVyQ2hyb21pdW06OmNyZWF0ZVRleHR1cmVVcGRhdGVyKGNvbnN0
IENDTGF5ZXJUcmVlSG9zdCogaG9zdCkKIHsKICNpZiBVU0UoU0tJQSkKLSAgICBpZiAoaG9zdC0+
c2V0dGluZ3MoKS5hY2NlbGVyYXRlUGFpbnRpbmcpIHsKKyAgICBpZiAoaG9zdC0+c2V0dGluZ3Mo
KS5hY2NlbGVyYXRlUGFpbnRpbmcpCiAgICAgICAgIG1fdGV4dHVyZVVwZGF0ZXIgPSBGcmFtZUJ1
ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OmNyZWF0ZShDb250ZW50TGF5
ZXJQYWludGVyOjpjcmVhdGUobV9kZWxlZ2F0ZSkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
Ci0gICAgaWYgKGhvc3QtPnNldHRpbmdzKCkucGVyVGlsZVBhaW50aW5nKSB7CisgICAgZWxzZSBp
ZiAoaG9zdC0+c2V0dGluZ3MoKS5wZXJUaWxlUGFpbnRpbmcpCiAgICAgICAgIG1fdGV4dHVyZVVw
ZGF0ZXIgPSBCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpjcmVhdGUo
Q29udGVudExheWVyUGFpbnRlcjo6Y3JlYXRlKG1fZGVsZWdhdGUpLCBob3N0LT5sYXllclJlbmRl
cmVyQ2FwYWJpbGl0aWVzKCkudXNpbmdNYXBTdWIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQor
ICAgIGVsc2UKICNlbmRpZiAvLyBVU0UoU0tJQSkKLQotICAgIG1fdGV4dHVyZVVwZGF0ZXIgPSBC
aXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpjcmVhdGUoQ29udGVudExheWVyUGFpbnRl
cjo6Y3JlYXRlKG1fZGVsZWdhdGUpLCBob3N0LT5sYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKCku
dXNpbmdNYXBTdWIpOworICAgICAgICBtX3RleHR1cmVVcGRhdGVyID0gQml0bWFwQ2FudmFzTGF5
ZXJUZXh0dXJlVXBkYXRlcjo6Y3JlYXRlKENvbnRlbnRMYXllclBhaW50ZXI6OmNyZWF0ZShtX2Rl
bGVnYXRlKSwgaG9zdC0+bGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcygpLnVzaW5nTWFwU3ViKTsK
ICAgICBtX3RleHR1cmVVcGRhdGVyLT5zZXRPcGFxdWUob3BhcXVlKCkpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRleHR1
cmVVcGRhdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9M
YXllclRleHR1cmVVcGRhdGVyLmgKaW5kZXggZWRjZjdhN2E4NWFmNmMxZTdmNjNkNzZiMGNlOGNl
N2FiY2IxYjAzMy4uZjNhOTcyMGIxYzM2MmNhNDQ1NTdjOTZkZjRjMzEyMjgyZjk3YWI4OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJU
ZXh0dXJlVXBkYXRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0xheWVyVGV4dHVyZVVwZGF0ZXIuaApAQCAtNzMsNyArNzMsMTUgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgU2FtcGxlZFRleGVsRm9ybWF0IHNhbXBsZWRUZXhlbEZvcm1hdChHQzNEZW51
bSB0ZXh0dXJlRm9ybWF0KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHByZXBhcmVUb1VwZGF0ZShj
b25zdCBJbnRSZWN0JiAvKiBjb250ZW50UmVjdCAqLywgY29uc3QgSW50U2l6ZSYgLyogdGlsZVNp
emUgKi8sIGludCAvKiBib3JkZXJUZXhlbHMgKi8sIGZsb2F0IC8qIGNvbnRlbnRzU2NhbGUgKi8p
IHsgfQogCisgICAgLy8gU2V0IHRydWUgYnkgdGhlIGxheWVyIHdoZW4gaXQgaXMga25vd24gdGhh
dCB0aGUgZW50aXJlIG91dHB1dCBpcyBnb2luZyB0byBiZSBvcGFxdWUuCiAgICAgdmlydHVhbCB2
b2lkIHNldE9wYXF1ZShib29sKSB7IH0KKworICAgIC8vIEEgc3Vic2V0IG9mIHRoZSBsYXllciBk
ZXRlcm1pbmVkIHRvIGJlIG9wYXF1ZSBkdXJpbmcgdXBkYXRlLiBOb3QgdmFsaWQgd2hlbiBzZXRP
cGFxdWUoKSBoYXMgYmVlbiBzZXQgdHJ1ZSwKKyAgICAvLyBhcyB0aGUgb3V0cHV0IGlzIGFscmVh
ZHkga25vd24gdG8gYmUgb3BhcXVlIGluIHRoYXQgY2FzZS4KKyAgICBjb25zdCBJbnRSZWN0JiBv
cGFxdWVSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9vcGFxdWVSZWN0OyB9CisKK3Byb3RlY3RlZDoK
KyAgICBJbnRSZWN0IG1fb3BhcXVlUmVjdDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Nr
UGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRl
ci5jcHAKaW5kZXggNTM3ZTEzN2U4ZDhlYzUxOGI5MzRhYTVjZDJkNzAwYzc0YjE5ZmU0Yi4uNjJh
ZTc4MmE0ZTY5NzU3MGRkMjRlYjQwZjk3NTJjMmUwZjc1MmFiNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2tQaWN0dXJlQ2FudmFzTGF5ZXJU
ZXh0dXJlVXBkYXRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKQEAgLTUzLDkg
KzUzLDE1IEBAIHZvaWQgU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6cHJlcGFy
ZVRvVXBkYXRlKGNvbnN0IEludFJlY3QmIGNvbnRlbnRSCiAgICAgU2tDYW52YXMqIGNhbnZhcyA9
IG1fcGljdHVyZS5iZWdpblJlY29yZGluZyhjb250ZW50UmVjdC53aWR0aCgpLCBjb250ZW50UmVj
dC5oZWlnaHQoKSk7CiAgICAgUGxhdGZvcm1Db250ZXh0U2tpYSBwbGF0Zm9ybUNvbnRleHQoY2Fu
dmFzKTsKICAgICBwbGF0Zm9ybUNvbnRleHQuc2V0RGVmZXJyZWQodHJ1ZSk7CisgICAgcGxhdGZv
cm1Db250ZXh0LnNldFRyYWNrT3BhcXVlUmVnaW9uKCFtX291dHB1dEtub3duT3BhcXVlKTsKICAg
ICBHcmFwaGljc0NvbnRleHQgZ3JhcGhpY3NDb250ZXh0KCZwbGF0Zm9ybUNvbnRleHQpOwogICAg
IHBhaW50Q29udGVudHMoZ3JhcGhpY3NDb250ZXh0LCBjb250ZW50UmVjdCwgY29udGVudHNTY2Fs
ZSk7CiAgICAgbV9waWN0dXJlLmVuZFJlY29yZGluZygpOworCisgICAgaWYgKG1fb3V0cHV0S25v
d25PcGFxdWUpCisgICAgICAgIG1fb3BhcXVlUmVjdCA9IEludFJlY3QoKTsKKyAgICBlbHNlCisg
ICAgICAgIG1fb3BhcXVlUmVjdCA9IHBsYXRmb3JtQ29udGV4dC5vcGFxdWVSZWdpb24oKS5hc1Jl
Y3QoKTsKIH0KIAogdm9pZCBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpkcmF3
UGljdHVyZShTa0NhbnZhcyogY2FudmFzKQpAQCAtNjQsNiArNzAsMTEgQEAgdm9pZCBTa1BpY3R1
cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpkcmF3UGljdHVyZShTa0NhbnZhcyogY2FudmFz
KQogICAgIGNhbnZhcy0+ZHJhd1BpY3R1cmUobV9waWN0dXJlKTsKIH0KIAordm9pZCBTa1BpY3R1
cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpzZXRPcGFxdWUoYm9vbCBvcGFxdWUpCit7Cisg
ICAgbV9vdXRwdXRLbm93bk9wYXF1ZSA9IG9wYXF1ZTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQogI2VuZGlmIC8vIFVTRShTS0lBKQogI2VuZGlmIC8vIFVTRShBQ0NFTEVSQVRFRF9DT01Q
T1NJVElORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL1NrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVy
ZVVwZGF0ZXIuaAppbmRleCA5NWI3OGMzYjkxMDUyZGViMTE2NmY4NjBmZGY0Y2ZjMGUwMjY1N2Qz
Li42N2RlNjhmYmRmNWVkNjlkY2U0Nzk2YjMxNGNkNTJlZjJmZGEyMjE0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Ta1BpY3R1cmVDYW52YXNM
YXllclRleHR1cmVVcGRhdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oCkBAIC01NCw4
ICs1NCwxMyBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIHByZXBhcmVUb1VwZGF0ZShj
b25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgY29uc3QgSW50U2l6ZSYgdGlsZVNpemUsIGludCBi
b3JkZXJUZXhlbHMsIGZsb2F0IGNvbnRlbnRzU2NhbGUpOwogICAgIHZvaWQgZHJhd1BpY3R1cmUo
U2tDYW52YXMqKTsKIAorICAgIHZpcnR1YWwgdm9pZCBzZXRPcGFxdWUoYm9vbCk7CisKIHByaXZh
dGU6Ci0gICAgU2tQaWN0dXJlIG1fcGljdHVyZTsgLy8gUmVjb3JkaW5nIGNhbnZhcy4KKyAgICAv
LyBSZWNvcmRpbmcgY2FudmFzLgorICAgIFNrUGljdHVyZSBtX3BpY3R1cmU7CisgICAgLy8gVHJ1
ZSB3aGVuIGl0IGlzIGtub3duIHRoYXQgYWxsIG91dHB1dCBwaXhlbHMgd2lsbCBiZSBvcGFxdWUu
CisgICAgYm9vbCBtX291dHB1dEtub3duT3BhcXVlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwaSBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cGkKaW5kZXggNGMwYzAyM2UxZjdkOTdkMTc5
ZDUwNDYxODI3Yzk4MmY2ODFkNWViYi4uYmM4ZDkwZTNhMDQ4NWUzY2EwMDBjZjc0YjcxNWYwMzMw
Yjg0NDg1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwaQor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXBpCkBAIC05Nyw2ICs5Nyw3IEBA
CiAgICAgICAgICAgICAndGVzdHMvUE9ESW50ZXJ2YWxUcmVlVGVzdC5jcHAnLAogICAgICAgICAg
ICAgJ3Rlc3RzL1BPRFJlZEJsYWNrVHJlZVRlc3QuY3BwJywKICAgICAgICAgICAgICd0ZXN0cy9S
ZW5kZXJUYWJsZUNlbGxUZXN0LmNwcCcsCisgICAgICAgICAgICAndGVzdHMvU2tQaWN0dXJlQ2Fu
dmFzTGF5ZXJUZXh0dXJlVXBkYXRlclRlc3QuY3BwJywKICAgICAgICAgICAgICd0ZXN0cy9UZXh0
dXJlTWFuYWdlclRlc3QuY3BwJywKICAgICAgICAgICAgICd0ZXN0cy9UaWxlZExheWVyQ2hyb21p
dW1UZXN0LmNwcCcsCiAgICAgICAgICAgICAndGVzdHMvVGlsaW5nRGF0YVRlc3QuY3BwJywKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvU2tQaWN0dXJlQ2FudmFzTGF5
ZXJUZXh0dXJlVXBkYXRlclRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9T
a1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyVGVzdC5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDUz
ZGUxNzliMzRkNDNkYjE3YjAxZjJlODI1NDg0MDNiMjgzYmQ4NwotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJl
VXBkYXRlclRlc3QuY3BwCkBAIC0wLDAgKzEsMTI2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAq
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRh
dGVyLmgiCisKKyNpbmNsdWRlICJCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRh
dGVyLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCisjaW5jbHVkZSAiTGF5ZXJQYWlu
dGVyQ2hyb21pdW0uaCIKKyNpbmNsdWRlICJQbGF0Zm9ybUNvbnRleHRTa2lhLmgiCisKKyNpbmNs
dWRlICJTa0JpdG1hcC5oIgorI2luY2x1ZGUgIlNrQ2FudmFzLmgiCisKKyNpbmNsdWRlIDxnbW9j
ay9nbW9jay5oPgorI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisKK3VzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOworCituYW1lc3BhY2UgeworCitzdHJ1Y3QgUGFpbnRDYWxsYmFjayB7CisgICAgdmly
dHVhbCB2b2lkIG9wZXJhdG9yKCkoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50UmVjdCYpID0g
MDsKK307CisKK2NsYXNzIFRlc3RMYXllclBhaW50ZXJDaHJvbWl1bSA6IHB1YmxpYyBMYXllclBh
aW50ZXJDaHJvbWl1bSB7CitwdWJsaWM6CisgICAgVGVzdExheWVyUGFpbnRlckNocm9taXVtKFBh
aW50Q2FsbGJhY2smIGNhbGxiYWNrKSA6IG1fY2FsbGJhY2soY2FsbGJhY2spIHsgfQorCisgICAg
dmlydHVhbCB2b2lkIHBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVj
dCYgY29udGVudFJlY3QpCisgICAgeworICAgICAgICBtX2NhbGxiYWNrKGNvbnRleHQsIGNvbnRl
bnRSZWN0KTsKKyAgICB9CisKKyAgcHJpdmF0ZToKKyAgICBQYWludENhbGxiYWNrJiBtX2NhbGxi
YWNrOworfTsKKworI2RlZmluZSBQQUlOVF9DQU5WQVMoZHJhd0Z1bmN0aW9uLCB3aWR0aCwgaGVp
Z2h0LCBvcGFxdWUpIFwKKyAgICBSZWZQdHI8Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcj4gdXBk
YXRlciA9IEJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OmNyZWF0ZShh
ZG9wdFB0cihuZXcgVGVzdExheWVyUGFpbnRlckNocm9taXVtKGRyYXdGdW5jdGlvbikpLCBmYWxz
ZSk7IFwKKyAgICB1cGRhdGVyLT5zZXRPcGFxdWUob3BhcXVlKTsgXAorICAgIFNrQml0bWFwIGJp
dG1hcDsgXAorICAgIGJpdG1hcC5zZXRDb25maWcoU2tCaXRtYXA6OmtBUkdCXzg4ODhfQ29uZmln
LCB3aWR0aCwgaGVpZ2h0KTsgXAorICAgIGJpdG1hcC5hbGxvY1BpeGVscygpOyBcCisgICAgU2tD
YW52YXMgY2FudmFzKGJpdG1hcCk7IFwKKyAgICB1cGRhdGVyLT5wcmVwYXJlVG9VcGRhdGUoSW50
UmVjdCgwLCAwLCB3aWR0aCwgaGVpZ2h0KSwgSW50U2l6ZSh3aWR0aCwgaGVpZ2h0KSwgMCwgMS4w
KTsgXAorCisjZGVmaW5lIEVYUEVDVF9FUV9SRUNUKGEsIGIpIFwKKyAgICBFWFBFQ1RfRVEoYS54
KCksIGIueCgpKTsgXAorICAgIEVYUEVDVF9FUShhLm1heFgoKSwgYi5tYXhYKCkpOyBcCisgICAg
RVhQRUNUX0VRKGEueSgpLCBiLnkoKSk7IFwKKyAgICBFWFBFQ1RfRVEoYS5tYXhZKCksIGIubWF4
WSgpKTsKKworCisvLyBQYWludCBjYWxsYmFjayBmdW5jdG9ycworCitzdHJ1Y3QgUGFpbnRGaWxs
T3BhcXVlIDogcHVibGljIFBhaW50Q2FsbGJhY2sgeworICAgIHZpcnR1YWwgdm9pZCBvcGVyYXRv
cigpKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYgY29udGVudFJlY3Qp
CisgICAgeworICAgICAgICBDb2xvciBvcGFxdWUoMS4wZiwgMC4wZiwgMC4wZiwgMS4wZik7Cisg
ICAgICAgIEludFJlY3QgdG9wKGNvbnRlbnRSZWN0LngoKSwgY29udGVudFJlY3QueSgpLCBjb250
ZW50UmVjdC53aWR0aCgpLCBjb250ZW50UmVjdC5oZWlnaHQoKSAvIDIpOworICAgICAgICBJbnRS
ZWN0IGJvdHRvbShjb250ZW50UmVjdC54KCksIGNvbnRlbnRSZWN0LnkoKSArIGNvbnRlbnRSZWN0
LmhlaWdodCgpIC8gMiwgY29udGVudFJlY3Qud2lkdGgoKSwgY29udGVudFJlY3QuaGVpZ2h0KCkg
LyAyKTsKKyAgICAgICAgY29udGV4dC5maWxsUmVjdCh0b3AsIG9wYXF1ZSwgQ29sb3JTcGFjZURl
dmljZVJHQik7CisgICAgICAgIGNvbnRleHQuZmlsbFJlY3QoYm90dG9tLCBvcGFxdWUsIENvbG9y
U3BhY2VEZXZpY2VSR0IpOworICAgIH0KK307CisKK3N0cnVjdCBQYWludEZpbGxBbHBoYSA6IHB1
YmxpYyBQYWludENhbGxiYWNrIHsKKyAgICB2aXJ0dWFsIHZvaWQgb3BlcmF0b3IoKShHcmFwaGlj
c0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0KQorICAgIHsKKyAg
ICAgICAgQ29sb3IgYWxwaGEoMC4wZiwgMC4wZiwgMC4wZiwgMC4wZik7CisgICAgICAgIGNvbnRl
eHQuZmlsbFJlY3QoY29udGVudFJlY3QsIGFscGhhLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAg
ICB9Cit9OworCitURVNUKFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXJUZXN0LCB0
ZXN0T3BhcXVlUmVjdFByZXNlbnRBZnRlck9wYXF1ZVBhaW50KQoreworICAgIFBhaW50RmlsbE9w
YXF1ZSBmaWxsT3BhcXVlOworICAgIFBBSU5UX0NBTlZBUyhmaWxsT3BhcXVlLCA0MDAsIDQwMCwg
ZmFsc2UpOworICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMCwgMCwgNDAwLCA0MDApLCB1cGRh
dGVyLT5vcGFxdWVSZWN0KCkpOworfQorCitURVNUKFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVy
ZVVwZGF0ZXJUZXN0LCB0ZXN0T3BhcXVlUmVjdE5vdFByZXNlbnRBZnRlck5vbk9wYXF1ZVBhaW50
KQoreworICAgIFBhaW50RmlsbEFscGhhIGZpbGxBbHBoYTsKKyAgICBQQUlOVF9DQU5WQVMoZmls
bEFscGhhLCA0MDAsIDQwMCwgZmFsc2UpOworICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMCwg
MCwgMCwgMCksIHVwZGF0ZXItPm9wYXF1ZVJlY3QoKSk7Cit9CisKK1RFU1QoU2tQaWN0dXJlQ2Fu
dmFzTGF5ZXJUZXh0dXJlVXBkYXRlclRlc3QsIHRlc3RPcGFxdWVSZWN0Tm90UHJlc2VudEZvck9w
YXF1ZUxheWVyV2l0aE9wYXF1ZVBhaW50KQoreworICAgIFBhaW50RmlsbE9wYXF1ZSBmaWxsT3Bh
cXVlOworICAgIFBBSU5UX0NBTlZBUyhmaWxsT3BhcXVlLCA0MDAsIDQwMCwgdHJ1ZSk7CisgICAg
RVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgwLCAwLCAwLCAwKSwgdXBkYXRlci0+b3BhcXVlUmVjdCgp
KTsKK30KKworVEVTVChTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyVGVzdCwgdGVz
dE9wYXF1ZVJlY3ROb3RQcmVzZW50Rm9yT3BhcXVlTGF5ZXJXaXRoTm9uT3BhcXVlUGFpbnQpCit7
CisgICAgUGFpbnRGaWxsQWxwaGEgZmlsbEFscGhhOworICAgIFBBSU5UX0NBTlZBUyhmaWxsQWxw
aGEsIDQwMCwgNDAwLCB0cnVlKTsKKyAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDAsIDAsIDAs
IDApLCB1cGRhdGVyLT5vcGFxdWVSZWN0KCkpOworfQorCit9IC8vIG5hbWVzcGFjZQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>122545</attachid>
            <date>2012-01-14 07:07:02 -0800</date>
            <delta_ts>2012-01-18 13:42:08 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76211-20120114100700.patch</filename>
            <type>text/plain</type>
            <size>27748</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA0OTQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGMyYmEwNjAzODFmOWZh
YzUxMTMwNmI5ZDQ4Mjk4YWMwYjI4NmRhZS4uMTA1ZjMyZjQ2MGFjOGIzZjIzYTIyMjg0MWY5Y2E5
Y2JiOWE1ZjA3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDEyLTAxLTE0ICBEYW5h
IEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gRW5h
YmxlIHRyYWNraW5nIG9wYXF1ZSByZWdpb24gaW4gU2tpYSBncmFwaGljcyBjb250ZXh0LCByZXR1
cm4gaXQgZnJvbSBMYXllclRleHR1cmVVcGRhdGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NjIxMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIE5ldyB1bml0IHRlc3RzIGluIExheWVyVGV4dHVyZVVwZGF0
ZXJUZXN0LmNwcAorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFw
Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBD
YW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpwcmVwYXJlVG9VcGRhdGUpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBTa1BpY3R1cmVD
YW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcFNr
UGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnByZXBhcmVUb1VwZGF0ZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5
ZXJUZXh0dXJlVXBkYXRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0NvbnRlbnRMYXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRMYXll
ckNocm9taXVtOjpjcmVhdGVUZXh0dXJlVXBkYXRlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlVXBkYXRlci5oOgorICAgICAgICAoV2ViQ29yZTo6
TGF5ZXJUZXh0dXJlVXBkYXRlcjo6cHJlcGFyZVRvVXBkYXRlKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9QbGF0Zm9ybUNhbnZhcy5oOgorICAgICAgICAoV2ViQ29yZTo6
UGxhdGZvcm1DYW52YXM6OlBhaW50ZXI6OnNraWFDb250ZXh0KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9Ta1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6
OlNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6
U2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6cHJlcGFyZVRvVXBkYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnNldE9w
YXF1ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2tQaWN0dXJlQ2Fu
dmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUaWxlZExh
eWVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZVRpbGVzKToKKwogMjAxMi0wMS0xMyAgUmFwaGFl
bCBLdWJvIGRhIENvc3RhICA8a3Vib0Bwcm9mdXNpb24ubW9iaT4KIAogICAgICAgICBbc291cF0g
SW5pdGlhbGl6ZSBtX3NvdXBGbGFncyBpbiBhbGwgUmVzb3VyY2VSZXNwb25zZSBjb25zdHJ1Y3Rv
cnMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDkwNTg1NjliNDA4ODRlNGFjZTFlOGIw
MTJlNjBkMjY2MWI0ZTJhNjAuLjk2ODVjYmU0ZTk4NjQ2MmMzOTIxYTgzNTMyMzNjY2IwY2YyODRl
NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTItMDEt
MTQgIERhbmEgSmFuc2VucyAgPGRhbmFrakBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9t
aXVtXSBFbmFibGUgdHJhY2tpbmcgb3BhcXVlIHJlZ2lvbiBpbiBTa2lhIGdyYXBoaWNzIGNvbnRl
eHQsIHJldHVybiBpdCBmcm9tIExheWVyVGV4dHVyZVVwZGF0ZXIKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc2MjExCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJLaXQuZ3lwaToKKyAgICAgICAgKiB0
ZXN0cy9MYXllclRleHR1cmVVcGRhdGVyVGVzdC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZTo6VGVzdExheWVyUGFpbnRlckNocm9taXVtOjpUZXN0TGF5ZXJQYWludGVyQ2hyb21pdW0pOgor
ICAgICAgICAoV2ViQ29yZTo6VGVzdExheWVyUGFpbnRlckNocm9taXVtOjpwYWludCk6CisgICAg
ICAgIChXZWJDb3JlOjpQYWludEZpbGxPcGFxdWU6Om9wZXJhdG9yKCkpOgorICAgICAgICAoV2Vi
Q29yZTo6UGFpbnRGaWxsQWxwaGE6Om9wZXJhdG9yKCkpOgorICAgICAgICAoV2ViQ29yZTo6VEVT
VCk6CisgICAgICAgICogdGVzdHMvVGlsZWRMYXllckNocm9taXVtVGVzdC5jcHA6CisgICAgICAg
IChXVEY6OkZha2VMYXllclRleHR1cmVVcGRhdGVyOjpwcmVwYXJlVG9VcGRhdGUpOgorCiAyMDEy
LTAxLTEzICBEYXZpZCBMZXZpbiAgPGxldmluQGNocm9taXVtLm9yZz4KIAogICAgICAgICBIV25k
REMgaXMgYSBiZXR0ZXIgbmFtZSB0aGFuIEh3bmREQy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVw
ZGF0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0
bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKaW5kZXggYWYyZmFlYzc4MzE1M2Y0N2Zh
NjBmNWYzMDM4MDkxNWRmYzRkY2ZmMS4uMGQ5N2U1MmFlZGUwZjk4MGFkYTE1ZGUwYTE0YTFkMjhk
ODZhMWU4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJl
VXBkYXRlci5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKIAogI2luY2x1ZGUgIkxheWVyUGFpbnRlckNo
cm9taXVtLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1Db2xvci5oIgorI2luY2x1ZGUgIlBsYXRmb3Jt
Q29udGV4dFNraWEuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC03NywxMCArNzgsMTIg
QEAgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6U2FtcGxlZFRleGVsRm9ybWF0IEJpdG1hcENhbnZhc0xh
eWVyVGV4dHVyZVVwZGF0ZXI6OnNhbXBsZWQKICAgICAgICAgICAgIExheWVyVGV4dHVyZVVwZGF0
ZXI6OlNhbXBsZWRUZXhlbEZvcm1hdFJHQkEgOiBMYXllclRleHR1cmVVcGRhdGVyOjpTYW1wbGVk
VGV4ZWxGb3JtYXRCR1JBOwogfQogCi12b2lkIEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0
ZXI6OnByZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgY29uc3QgSW50
U2l6ZSYgdGlsZVNpemUsIGludCBib3JkZXJUZXhlbHMsIGZsb2F0IGNvbnRlbnRzU2NhbGUpCit2
b2lkIEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnByZXBhcmVUb1VwZGF0ZShjb25z
dCBJbnRSZWN0JiBjb250ZW50UmVjdCwgY29uc3QgSW50U2l6ZSYgdGlsZVNpemUsIGludCBib3Jk
ZXJUZXhlbHMsIGZsb2F0IGNvbnRlbnRzU2NhbGUsIEludFJlY3QqIHJlc3VsdGluZ09wYXF1ZVJl
Y3QpCiB7CiAgICAgbV90ZXhTdWJJbWFnZS5zZXRTdWJJbWFnZVNpemUodGlsZVNpemUpOwogCisg
ICAgYm9vbCBsYXllcklzT3BhcXVlID0gbV9jYW52YXMub3BhcXVlKCk7CisKICAgICBtX2NhbnZh
cy5yZXNpemUoY29udGVudFJlY3Quc2l6ZSgpKTsKICAgICAvLyBBc3N1bXB0aW9uOiBpZiBhIHRp
bGVyIGlzIHVzaW5nIGJvcmRlciB0ZXhlbHMsIHRoZW4gaXQgaXMgYmVjYXVzZSB0aGUKICAgICAv
LyBsYXllciBpcyBsaWtlbHkgdG8gYmUgZmlsdGVyZWQgb3IgdHJhbnNmb3JtZWQuIEJlY2F1c2Ug
b2YgaXQgbWlnaHQgYmUKQEAgLTg4LDcgKzkxLDExIEBAIHZvaWQgQml0bWFwQ2FudmFzTGF5ZXJU
ZXh0dXJlVXBkYXRlcjo6cHJlcGFyZVRvVXBkYXRlKGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0
CiAgICAgUGxhdGZvcm1DYW52YXM6OlBhaW50ZXI6OlRleHRPcHRpb24gdGV4dE9wdGlvbiA9CiAg
ICAgICAgIGJvcmRlclRleGVscyA/IFBsYXRmb3JtQ2FudmFzOjpQYWludGVyOjpHcmF5c2NhbGVU
ZXh0IDogUGxhdGZvcm1DYW52YXM6OlBhaW50ZXI6OlN1YnBpeGVsVGV4dDsKICAgICBQbGF0Zm9y
bUNhbnZhczo6UGFpbnRlciBjYW52YXNQYWludGVyKCZtX2NhbnZhcywgdGV4dE9wdGlvbik7Cisg
ICAgY2FudmFzUGFpbnRlci5za2lhQ29udGV4dCgpLT5zZXRUcmFja09wYXF1ZVJlZ2lvbighbGF5
ZXJJc09wYXF1ZSk7CiAgICAgcGFpbnRDb250ZW50cygqY2FudmFzUGFpbnRlci5jb250ZXh0KCks
IGNvbnRlbnRSZWN0LCBjb250ZW50c1NjYWxlKTsKKworICAgIGlmICghbGF5ZXJJc09wYXF1ZSkK
KyAgICAgICAgKnJlc3VsdGluZ09wYXF1ZVJlY3QgPSBjYW52YXNQYWludGVyLnNraWFDb250ZXh0
KCktPm9wYXF1ZVJlZ2lvbigpLmFzUmVjdCgpOwogfQogCiB2b2lkIEJpdG1hcENhbnZhc0xheWVy
VGV4dHVyZVVwZGF0ZXI6OnVwZGF0ZVRleHR1cmVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250
ZXh0LCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IsIE1hbmFnZWRUZXh0dXJlKiB0ZXh0dXJl
LCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1h
cENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0JpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaAppbmRleCA3
MGNlNmU0MmY5MmVkZDI1Y2NjOTcyYmUyNjU0NjlhNDRjZTU4YjIzLi40ZTE2MjI5NWI4NmUwMDg5
M2MzM2VmMDNkNGI2MmQyYzFlNTJiZDVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwQ2Fu
dmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oCkBAIC02MCw3ICs2MCw3IEBAIHB1YmxpYzoKIAogICAg
IHZpcnR1YWwgUGFzc093blB0cjxMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlPiBjcmVhdGVU
ZXh0dXJlKFRleHR1cmVNYW5hZ2VyKik7CiAgICAgdmlydHVhbCBTYW1wbGVkVGV4ZWxGb3JtYXQg
c2FtcGxlZFRleGVsRm9ybWF0KEdDM0RlbnVtIHRleHR1cmVGb3JtYXQpOwotICAgIHZpcnR1YWwg
dm9pZCBwcmVwYXJlVG9VcGRhdGUoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIGNvbnN0IElu
dFNpemUmIHRpbGVTaXplLCBpbnQgYm9yZGVyVGV4ZWxzLCBmbG9hdCBjb250ZW50c1NjYWxlKTsK
KyAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZVRvVXBkYXRlKGNvbnN0IEludFJlY3QmIGNvbnRlbnRS
ZWN0LCBjb25zdCBJbnRTaXplJiB0aWxlU2l6ZSwgaW50IGJvcmRlclRleGVscywgZmxvYXQgY29u
dGVudHNTY2FsZSwgSW50UmVjdCogcmVzdWx0aW5nT3BhcXVlUmVjdCk7CiAgICAgdm9pZCB1cGRh
dGVUZXh0dXJlUmVjdChHcmFwaGljc0NvbnRleHQzRCosIFRleHR1cmVBbGxvY2F0b3IqLCBNYW5h
Z2VkVGV4dHVyZSosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRl
c3RSZWN0KTsKIAogICAgIHZpcnR1YWwgdm9pZCBzZXRPcGFxdWUoYm9vbCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBTa1BpY3R1
cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0
ZXIuY3BwCmluZGV4IDgyMjFkZDJlNTIxYmQ2M2ZlMGU2ZjBmOWQ2MjI0ZTM4ZGZiMzQyOTguLmUy
YWI3OTgzODZmY2NmMDcwMTNkNjZiYjNmMjhmZTdkOGY0ZWMyN2MgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcFNrUGljdHVyZUNhbnZh
c0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0JpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIu
Y3BwCkBAIC04NiwxMCArODYsMTAgQEAgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6U2FtcGxlZFRleGVs
Rm9ybWF0IEJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIKICAgICAgICAg
ICAgIExheWVyVGV4dHVyZVVwZGF0ZXI6OlNhbXBsZWRUZXhlbEZvcm1hdFJHQkEgOiBMYXllclRl
eHR1cmVVcGRhdGVyOjpTYW1wbGVkVGV4ZWxGb3JtYXRCR1JBOwogfQogCi12b2lkIEJpdG1hcFNr
UGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnByZXBhcmVUb1VwZGF0ZShjb25zdCBJ
bnRSZWN0JiBjb250ZW50UmVjdCwgY29uc3QgSW50U2l6ZSYgdGlsZVNpemUsIGludCBib3JkZXJU
ZXhlbHMsIGZsb2F0IGNvbnRlbnRzU2NhbGUpCit2b2lkIEJpdG1hcFNrUGljdHVyZUNhbnZhc0xh
eWVyVGV4dHVyZVVwZGF0ZXI6OnByZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0JiBjb250ZW50
UmVjdCwgY29uc3QgSW50U2l6ZSYgdGlsZVNpemUsIGludCBib3JkZXJUZXhlbHMsIGZsb2F0IGNv
bnRlbnRzU2NhbGUsIEludFJlY3QqIHJlc3VsdGluZ09wYXF1ZVJlY3QpCiB7CiAgICAgbV90ZXhT
dWJJbWFnZS5zZXRTdWJJbWFnZVNpemUodGlsZVNpemUpOwotICAgIFNrUGljdHVyZUNhbnZhc0xh
eWVyVGV4dHVyZVVwZGF0ZXI6OnByZXBhcmVUb1VwZGF0ZShjb250ZW50UmVjdCwgdGlsZVNpemUs
IGJvcmRlclRleGVscywgY29udGVudHNTY2FsZSk7CisgICAgU2tQaWN0dXJlQ2FudmFzTGF5ZXJU
ZXh0dXJlVXBkYXRlcjo6cHJlcGFyZVRvVXBkYXRlKGNvbnRlbnRSZWN0LCB0aWxlU2l6ZSwgYm9y
ZGVyVGV4ZWxzLCBjb250ZW50c1NjYWxlLCByZXN1bHRpbmdPcGFxdWVSZWN0KTsKIH0KIAogdm9p
ZCBCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpwYWludENvbnRlbnRz
UmVjdChTa0NhbnZhcyogY2FudmFzLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0KQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwU2tQ
aWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBk
YXRlci5oCmluZGV4IDZmMmYxMGQ5YjMyNTcyZGVmOTBmMTgxMzYzY2VmYTJkYTkyOGFhNDMuLjFj
NTY0Y2RjMTgzZWE0OTU5MWY2OTA2ZWZlYmQzYThkOWI1ZjgwY2MgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcFNrUGljdHVyZUNhbnZh
c0xheWVyVGV4dHVyZVVwZGF0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9CaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgK
QEAgLTU5LDcgKzU5LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBQYXNzT3duUHRyPExheWVy
VGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU+IGNyZWF0ZVRleHR1cmUoVGV4dHVyZU1hbmFnZXIqKTsK
ICAgICB2aXJ0dWFsIFNhbXBsZWRUZXhlbEZvcm1hdCBzYW1wbGVkVGV4ZWxGb3JtYXQoR0MzRGVu
dW0gdGV4dHVyZUZvcm1hdCk7Ci0gICAgdmlydHVhbCB2b2lkIHByZXBhcmVUb1VwZGF0ZShjb25z
dCBJbnRSZWN0JiBjb250ZW50UmVjdCwgY29uc3QgSW50U2l6ZSYgdGlsZVNpemUsIGludCBib3Jk
ZXJUZXhlbHMsIGZsb2F0IGNvbnRlbnRzU2NhbGUpOworICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJl
VG9VcGRhdGUoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIGNvbnN0IEludFNpemUmIHRpbGVT
aXplLCBpbnQgYm9yZGVyVGV4ZWxzLCBmbG9hdCBjb250ZW50c1NjYWxlLCBJbnRSZWN0KiByZXN1
bHRpbmdPcGFxdWVSZWN0KTsKICAgICB2b2lkIHBhaW50Q29udGVudHNSZWN0KFNrQ2FudmFzKiwg
Y29uc3QgSW50UmVjdCYgc291cmNlUmVjdCk7CiAgICAgdm9pZCB1cGRhdGVUZXh0dXJlUmVjdChH
cmFwaGljc0NvbnRleHQzRCosIEdDM0RlbnVtIGZvcm1hdCwgY29uc3QgSW50UmVjdCYgZGVzdFJl
Y3QsIGNvbnN0IHVpbnQ4X3QqIHBpeGVscyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9t
aXVtLmNwcAppbmRleCBkN2M2MDU2MmFlY2VhNDgxOTc0YjBhNjBiNGZkY2VlNmFkZWI3MjcwLi5m
NTMzOWY4YzhiYWIzNTY0YzNlMDU3NjlmMGI4Y2NmZDE5ZDY4ODViIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1
bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29u
dGVudExheWVyQ2hyb21pdW0uY3BwCkBAIC0xMTksMTggKzExOSwxMyBAQCB2b2lkIENvbnRlbnRM
YXllckNocm9taXVtOjppZGxlUGFpbnRDb250ZW50c0lmRGlydHkoKQogdm9pZCBDb250ZW50TGF5
ZXJDaHJvbWl1bTo6Y3JlYXRlVGV4dHVyZVVwZGF0ZXIoY29uc3QgQ0NMYXllclRyZWVIb3N0KiBo
b3N0KQogewogI2lmIFVTRShTS0lBKQotICAgIGlmIChob3N0LT5zZXR0aW5ncygpLmFjY2VsZXJh
dGVQYWludGluZykgeworICAgIGlmIChob3N0LT5zZXR0aW5ncygpLmFjY2VsZXJhdGVQYWludGlu
ZykKICAgICAgICAgbV90ZXh0dXJlVXBkYXRlciA9IEZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFz
TGF5ZXJUZXh0dXJlVXBkYXRlcjo6Y3JlYXRlKENvbnRlbnRMYXllclBhaW50ZXI6OmNyZWF0ZSht
X2RlbGVnYXRlKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoaG9zdC0+c2V0
dGluZ3MoKS5wZXJUaWxlUGFpbnRpbmcpIHsKKyAgICBlbHNlIGlmIChob3N0LT5zZXR0aW5ncygp
LnBlclRpbGVQYWludGluZykKICAgICAgICAgbV90ZXh0dXJlVXBkYXRlciA9IEJpdG1hcFNrUGlj
dHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OmNyZWF0ZShDb250ZW50TGF5ZXJQYWludGVy
OjpjcmVhdGUobV9kZWxlZ2F0ZSksIGhvc3QtPmxheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMoKS51
c2luZ01hcFN1Yik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgZWxzZQogI2VuZGlmIC8v
IFVTRShTS0lBKQotCi0gICAgbV90ZXh0dXJlVXBkYXRlciA9IEJpdG1hcENhbnZhc0xheWVyVGV4
dHVyZVVwZGF0ZXI6OmNyZWF0ZShDb250ZW50TGF5ZXJQYWludGVyOjpjcmVhdGUobV9kZWxlZ2F0
ZSksIGhvc3QtPmxheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMoKS51c2luZ01hcFN1Yik7CisgICAg
ICAgIG1fdGV4dHVyZVVwZGF0ZXIgPSBCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpj
cmVhdGUoQ29udGVudExheWVyUGFpbnRlcjo6Y3JlYXRlKG1fZGVsZWdhdGUpLCBob3N0LT5sYXll
clJlbmRlcmVyQ2FwYWJpbGl0aWVzKCkudXNpbmdNYXBTdWIpOwogICAgIG1fdGV4dHVyZVVwZGF0
ZXItPnNldE9wYXF1ZShvcGFxdWUoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGV4dHVyZVVwZGF0ZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGV4dHVyZVVwZGF0ZXIu
aAppbmRleCBlZGNmN2E3YTg1YWY2YzFlN2Y2M2Q3NmIwY2U4Y2U3YWJjYjFiMDMzLi4xNzlmZWE2
ZTEyYmYxMDNjNWIwNzQzNWNmMjRhM2E0OGY4Y2Q5MzIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRleHR1cmVVcGRhdGVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJl
VXBkYXRlci5oCkBAIC03MSw4ICs3MSwxMiBAQCBwdWJsaWM6CiAgICAgLy8gVGhpcyBmb3JtYXQg
c3BlY2lmaWVzIHRoZSBjb21wb25lbnQgb3JkZXIgaW4gdGhlIHNhbXBsZWQgdGV4ZWwuCiAgICAg
Ly8gSWYgdGhlIGZvcm1hdCBpcyBUZXhlbEZvcm1hdEJHUkEsIHZlYzQueCBpcyBibHVlIGFuZCB2
ZWM0LnogaXMgcmVkLgogICAgIHZpcnR1YWwgU2FtcGxlZFRleGVsRm9ybWF0IHNhbXBsZWRUZXhl
bEZvcm1hdChHQzNEZW51bSB0ZXh0dXJlRm9ybWF0KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHBy
ZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0JiAvKiBjb250ZW50UmVjdCAqLywgY29uc3QgSW50
U2l6ZSYgLyogdGlsZVNpemUgKi8sIGludCAvKiBib3JkZXJUZXhlbHMgKi8sIGZsb2F0IC8qIGNv
bnRlbnRzU2NhbGUgKi8pIHsgfQorICAgIC8vIFRoZSB8cmVzdWx0aW5nT3BhcXVlUmVjdHwgZ2l2
ZXMgYmFjayBhIHJlZ2lvbiBvZiB0aGUgbGF5ZXIgdGhhdCB3YXMgcGFpbnRlZCBvcGFxdWUuIElm
IHRoZSBsYXllciBpcyBtYXJrZWQgb3BhcXVlIGluIHRoZSB1cGRhdGVyLAorICAgIC8vIHRoZW4g
dGhpcyByZWdpb24gc2hvdWxkIGJlIGlnbm9yZWQgaW4gcHJlZmVyZW5jZSBmb3IgdGhlIGVudGly
ZSBsYXllcidzIGFyZWEuCisgICAgdmlydHVhbCB2b2lkIHByZXBhcmVUb1VwZGF0ZShjb25zdCBJ
bnRSZWN0JiAvKiBjb250ZW50UmVjdCAqLywgY29uc3QgSW50U2l6ZSYgLyogdGlsZVNpemUgKi8s
IGludCAvKiBib3JkZXJUZXhlbHMgKi8sIGZsb2F0IC8qIGNvbnRlbnRzU2NhbGUgKi8sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnRSZWN0KiAvKiByZXN1bHRpbmdPcGFxdWVS
ZWN0ICovKSB7IH0KIAorICAgIC8vIFNldCB0cnVlIGJ5IHRoZSBsYXllciB3aGVuIGl0IGlzIGtu
b3duIHRoYXQgdGhlIGVudGlyZSBvdXRwdXQgaXMgZ29pbmcgdG8gYmUgb3BhcXVlLgogICAgIHZp
cnR1YWwgdm9pZCBzZXRPcGFxdWUoYm9vbCkgeyB9CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9QbGF0Zm9ybUNhbnZhcy5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUGxhdGZvcm1DYW52YXMuaApp
bmRleCAwZDIxYzJjMmFiYmVhYjc3MWJjZjM5NTY0YzE3MmU1ZjNmYTliZDc5Li5mZGVlNzFiOWY4
ZWZjOWNjNTUxZjNjZGY0MjQxZDcwMjQ3N2JmOWFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9QbGF0Zm9ybUNhbnZhcy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1BsYXRmb3JtQ2FudmFzLmgKQEAg
LTg1LDYgKzg1LDcgQEAgcHVibGljOgogICAgICAgICB+UGFpbnRlcigpOwogCiAgICAgICAgIEdy
YXBoaWNzQ29udGV4dCogY29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGV4dC5nZXQoKTsg
fQorICAgICAgICBQbGF0Zm9ybUNvbnRleHRTa2lhKiBza2lhQ29udGV4dCgpIGNvbnN0IHsgcmV0
dXJuIG1fc2tpYUNvbnRleHQuZ2V0KCk7IH0KICAgICBwcml2YXRlOgogICAgICAgICBPd25QdHI8
R3JhcGhpY3NDb250ZXh0PiBtX2NvbnRleHQ7CiAjaWYgVVNFKFNLSUEpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Ta1BpY3R1cmVDYW52YXNM
YXllclRleHR1cmVVcGRhdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL1NrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCmluZGV4IDUz
N2UxMzdlOGQ4ZWM1MThiOTM0YWE1Y2QyZDcwMGM3NGIxOWZlNGIuLjBkOTc0ZmE2M2E0NDU3ZDll
YWM3YzhiODczZjdlOTFhNGQyNjg0M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL1NrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NrUGlj
dHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCkBAIC00MSw2ICs0MSw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6U2tQ
aWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcihQYXNzT3duUHRyPExheWVyUGFpbnRlckNo
cm9taXVtPiBwYWludGVyKQogICAgIDogQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcihwYWludGVy
KQorICAgICwgbV9sYXllcklzT3BhcXVlKGZhbHNlKQogewogfQogCkBAIC00OCwxNCArNDksMTgg
QEAgU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6flNrUGljdHVyZUNhbnZhc0xh
eWVyVGV4dHVyZVVwZGF0ZXIoKQogewogfQogCi12b2lkIFNrUGljdHVyZUNhbnZhc0xheWVyVGV4
dHVyZVVwZGF0ZXI6OnByZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwg
Y29uc3QgSW50U2l6ZSYgLyogdGlsZVNpemUgKi8sIGludCAvKiBib3JkZXJUZXhlbHMgKi8sIGZs
b2F0IGNvbnRlbnRzU2NhbGUpCit2b2lkIFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0
ZXI6OnByZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgY29uc3QgSW50
U2l6ZSYgLyogdGlsZVNpemUgKi8sIGludCAvKiBib3JkZXJUZXhlbHMgKi8sIGZsb2F0IGNvbnRl
bnRzU2NhbGUsIEludFJlY3QqIHJlc3VsdGluZ09wYXF1ZVJlY3QpCiB7CiAgICAgU2tDYW52YXMq
IGNhbnZhcyA9IG1fcGljdHVyZS5iZWdpblJlY29yZGluZyhjb250ZW50UmVjdC53aWR0aCgpLCBj
b250ZW50UmVjdC5oZWlnaHQoKSk7CiAgICAgUGxhdGZvcm1Db250ZXh0U2tpYSBwbGF0Zm9ybUNv
bnRleHQoY2FudmFzKTsKICAgICBwbGF0Zm9ybUNvbnRleHQuc2V0RGVmZXJyZWQodHJ1ZSk7Cisg
ICAgcGxhdGZvcm1Db250ZXh0LnNldFRyYWNrT3BhcXVlUmVnaW9uKCFtX2xheWVySXNPcGFxdWUp
OwogICAgIEdyYXBoaWNzQ29udGV4dCBncmFwaGljc0NvbnRleHQoJnBsYXRmb3JtQ29udGV4dCk7
CiAgICAgcGFpbnRDb250ZW50cyhncmFwaGljc0NvbnRleHQsIGNvbnRlbnRSZWN0LCBjb250ZW50
c1NjYWxlKTsKICAgICBtX3BpY3R1cmUuZW5kUmVjb3JkaW5nKCk7CisKKyAgICBpZiAoIW1fbGF5
ZXJJc09wYXF1ZSkKKyAgICAgICAgKnJlc3VsdGluZ09wYXF1ZVJlY3QgPSBwbGF0Zm9ybUNvbnRl
eHQub3BhcXVlUmVnaW9uKCkuYXNSZWN0KCk7CiB9CiAKIHZvaWQgU2tQaWN0dXJlQ2FudmFzTGF5
ZXJUZXh0dXJlVXBkYXRlcjo6ZHJhd1BpY3R1cmUoU2tDYW52YXMqIGNhbnZhcykKQEAgLTY0LDYg
KzY5LDExIEBAIHZvaWQgU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6ZHJhd1Bp
Y3R1cmUoU2tDYW52YXMqIGNhbnZhcykKICAgICBjYW52YXMtPmRyYXdQaWN0dXJlKG1fcGljdHVy
ZSk7CiB9CiAKK3ZvaWQgU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6c2V0T3Bh
cXVlKGJvb2wgb3BhcXVlKQoreworICAgIG1fbGF5ZXJJc09wYXF1ZSA9IG9wYXF1ZTsKK30KKwog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogI2VuZGlmIC8vIFVTRShTS0lBKQogI2VuZGlmIC8vIFVT
RShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NrUGljdHVy
ZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaAppbmRleCA5NWI3OGMzYjkxMDUyZGViMTE2NmY4
NjBmZGY0Y2ZjMGUwMjY1N2QzLi43ZmNjNjA1OWY5MGU3ZDlkMWMzMDFiZjJhNzBmNTE1MmE0OTI3
YjAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9Ta1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJl
VXBkYXRlci5oCkBAIC01MSwxMSArNTEsMTYgQEAgcHVibGljOgogcHJvdGVjdGVkOgogICAgIGV4
cGxpY2l0IFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIoUGFzc093blB0cjxMYXll
clBhaW50ZXJDaHJvbWl1bT4pOwogCi0gICAgdmlydHVhbCB2b2lkIHByZXBhcmVUb1VwZGF0ZShj
b25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgY29uc3QgSW50U2l6ZSYgdGlsZVNpemUsIGludCBi
b3JkZXJUZXhlbHMsIGZsb2F0IGNvbnRlbnRzU2NhbGUpOworICAgIHZpcnR1YWwgdm9pZCBwcmVw
YXJlVG9VcGRhdGUoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIGNvbnN0IEludFNpemUmIHRp
bGVTaXplLCBpbnQgYm9yZGVyVGV4ZWxzLCBmbG9hdCBjb250ZW50c1NjYWxlLCBJbnRSZWN0KiBy
ZXN1bHRpbmdPcGFxdWVSZWN0KTsKICAgICB2b2lkIGRyYXdQaWN0dXJlKFNrQ2FudmFzKik7CiAK
KyAgICB2aXJ0dWFsIHZvaWQgc2V0T3BhcXVlKGJvb2wpOworCiBwcml2YXRlOgotICAgIFNrUGlj
dHVyZSBtX3BpY3R1cmU7IC8vIFJlY29yZGluZyBjYW52YXMuCisgICAgLy8gUmVjb3JkaW5nIGNh
bnZhcy4KKyAgICBTa1BpY3R1cmUgbV9waWN0dXJlOworICAgIC8vIFRydWUgd2hlbiBpdCBpcyBr
bm93biB0aGF0IGFsbCBvdXRwdXQgcGl4ZWxzIHdpbGwgYmUgb3BhcXVlLgorICAgIGJvb2wgbV9s
YXllcklzT3BhcXVlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9t
aXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVk
TGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggMjgxODdlZDEwZjUwZDAyNDE2ZTZlYWFmYTc3M2E3MDcw
NDQ5YmMzZi4uNzEzYjRlMGYyMTNiMzZkNzk2YTQzMTM0MjYyY2IwZjYwY2IwNmI4NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXll
ckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwCkBAIC00MTIsNyArNDEyLDggQEAgdm9pZCBUaWxl
ZExheWVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZVRpbGVzKGJvb2wgaWRsZSwgaW50IGxlZnQs
IGludCB0b3AsIGludAogICAgIC8vIEhvd2V2ZXIsIHdlIGNhbid0IGZyZWUgdGhlIG1lbW9yeSBi
YWNraW5nIHRoZSBHcmFwaGljc0NvbnRleHQgdW50aWwgdGhlIHBhaW50IGZpbmlzaGVzLAogICAg
IC8vIHNvIHdlIGdyYWIgYSBsb2NhbCByZWZlcmVuY2UgaGVyZSB0byBob2xkIHRoZSB1cGRhdGVy
IGFsaXZlIHVudGlsIHRoZSBwYWludCBjb21wbGV0ZXMuCiAgICAgUmVmUHRyPExheWVyVGV4dHVy
ZVVwZGF0ZXI+IHByb3RlY3Rvcih0ZXh0dXJlVXBkYXRlcigpKTsKLSAgICB0ZXh0dXJlVXBkYXRl
cigpLT5wcmVwYXJlVG9VcGRhdGUobV9wYWludFJlY3QsIG1fdGlsZXItPnRpbGVTaXplKCksIG1f
dGlsZXItPmhhc0JvcmRlclRleGVscygpLCBjb250ZW50c1NjYWxlKCkpOworICAgIEludFJlY3Qg
b3BhcXVlUmVjdDsgLy8gRklYTUU6IHVudXNlZC4gcmVtb3ZlIHRoaXMgYW5kIHN0b3JlIGluIHRo
ZSBsYXllciB0byBwYXNzIHRvIGltcGwgZm9yIGRyYXcgY3VsbGluZworICAgIHRleHR1cmVVcGRh
dGVyKCktPnByZXBhcmVUb1VwZGF0ZShtX3BhaW50UmVjdCwgbV90aWxlci0+dGlsZVNpemUoKSwg
bV90aWxlci0+aGFzQm9yZGVyVGV4ZWxzKCksIGNvbnRlbnRzU2NhbGUoKSwgJm9wYXF1ZVJlY3Qp
OwogICAgIGZvciAoaW50IGogPSB0b3A7IGogPD0gYm90dG9tOyArK2opIHsKICAgICAgICAgZm9y
IChpbnQgaSA9IGxlZnQ7IGkgPD0gcmlnaHQ7ICsraSkgewogICAgICAgICAgICAgVXBkYXRhYmxl
VGlsZSogdGlsZSA9IHRpbGVBdChpLCBqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vV2ViS2l0Lmd5cGkgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXBpCmlu
ZGV4IDRjMGMwMjNlMWY3ZDk3ZDE3OWQ1MDQ2MTgyN2M5ODJmNjgxZDVlYmIuLjBkYjQ4NDYzZTVl
ZjA1ZDE3ZWM3OWZkZWNhZWE0ZjlmYzk2YzE0OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vV2ViS2l0Lmd5cGkKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQu
Z3lwaQpAQCAtOTMsNiArOTMsNyBAQAogICAgICAgICAgICAgJ3Rlc3RzL0tleWJvYXJkVGVzdC5j
cHAnLAogICAgICAgICAgICAgJ3Rlc3RzL0tVUkxUZXN0LmNwcCcsCiAgICAgICAgICAgICAndGVz
dHMvTGF5ZXJDaHJvbWl1bVRlc3QuY3BwJywKKyAgICAgICAgICAgICd0ZXN0cy9MYXllclRleHR1
cmVVcGRhdGVyVGVzdC5jcHAnLAogICAgICAgICAgICAgJ3Rlc3RzL1BPREFyZW5hVGVzdC5jcHAn
LAogICAgICAgICAgICAgJ3Rlc3RzL1BPREludGVydmFsVHJlZVRlc3QuY3BwJywKICAgICAgICAg
ICAgICd0ZXN0cy9QT0RSZWRCbGFja1RyZWVUZXN0LmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL0xheWVyVGV4dHVyZVVwZGF0ZXJUZXN0LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvTGF5ZXJUZXh0dXJlVXBkYXRlclRlc3QuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmJkYmY3YmIwOTMwMThiZDZhNmIzMDdmZjhiZTM4MTQxNWY1OGE2NzMKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0xheWVyVGV4dHVyZVVwZGF0
ZXJUZXN0LmNwcApAQCAtMCwwICsxLDE5OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
CisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorCisjaW5jbHVkZSAiTGF5ZXJUZXh0dXJlVXBkYXRlci5oIgorCisjaW5jbHVkZSAi
Qml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oIgorI2luY2x1ZGUgIkJpdG1hcFNrUGlj
dHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaCIKKyNpbmNsdWRlICJGcmFtZUJ1ZmZlclNr
UGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaCIKKyNpbmNsdWRlICJHcmFwaGljc0Nv
bnRleHQuaCIKKyNpbmNsdWRlICJMYXllclBhaW50ZXJDaHJvbWl1bS5oIgorI2luY2x1ZGUgIlBs
YXRmb3JtQ29udGV4dFNraWEuaCIKKyNpbmNsdWRlICJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1
cmVVcGRhdGVyLmgiCisKKyNpbmNsdWRlIDxnbW9jay9nbW9jay5oPgorI2luY2x1ZGUgPGd0ZXN0
L2d0ZXN0Lmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgeworCitz
dHJ1Y3QgUGFpbnRDYWxsYmFjayB7CisgICAgdmlydHVhbCB2b2lkIG9wZXJhdG9yKCkoR3JhcGhp
Y3NDb250ZXh0JiwgY29uc3QgSW50UmVjdCYpID0gMDsKK307CisKK2NsYXNzIFRlc3RMYXllclBh
aW50ZXJDaHJvbWl1bSA6IHB1YmxpYyBMYXllclBhaW50ZXJDaHJvbWl1bSB7CitwdWJsaWM6Cisg
ICAgVGVzdExheWVyUGFpbnRlckNocm9taXVtKFBhaW50Q2FsbGJhY2smIGNhbGxiYWNrKSA6IG1f
Y2FsbGJhY2soY2FsbGJhY2spIHsgfQorCisgICAgdmlydHVhbCB2b2lkIHBhaW50KEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QpCisgICAgeworICAg
ICAgICBtX2NhbGxiYWNrKGNvbnRleHQsIGNvbnRlbnRSZWN0KTsKKyAgICB9CisKKyAgcHJpdmF0
ZToKKyAgICBQYWludENhbGxiYWNrJiBtX2NhbGxiYWNrOworfTsKKworLy8gUGFpbnQgY2FsbGJh
Y2sgZnVuY3Rpb25zCisKK3N0cnVjdCBQYWludEZpbGxPcGFxdWUgOiBwdWJsaWMgUGFpbnRDYWxs
YmFjayB7CisgICAgdmlydHVhbCB2b2lkIG9wZXJhdG9yKCkoR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0LCBjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCkKKyAgICB7CisgICAgICAgIENvbG9yIG9w
YXF1ZSgyNTUsIDAsIDAsIDI1NSk7CisgICAgICAgIEludFJlY3QgdG9wKGNvbnRlbnRSZWN0Lngo
KSwgY29udGVudFJlY3QueSgpLCBjb250ZW50UmVjdC53aWR0aCgpLCBjb250ZW50UmVjdC5oZWln
aHQoKSAvIDIpOworICAgICAgICBJbnRSZWN0IGJvdHRvbShjb250ZW50UmVjdC54KCksIGNvbnRl
bnRSZWN0LnkoKSArIGNvbnRlbnRSZWN0LmhlaWdodCgpIC8gMiwgY29udGVudFJlY3Qud2lkdGgo
KSwgY29udGVudFJlY3QuaGVpZ2h0KCkgLyAyKTsKKyAgICAgICAgY29udGV4dC5maWxsUmVjdCh0
b3AsIG9wYXF1ZSwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgICAgIGNvbnRleHQuZmlsbFJl
Y3QoYm90dG9tLCBvcGFxdWUsIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgIH0KK307CisKK3N0
cnVjdCBQYWludEZpbGxBbHBoYSA6IHB1YmxpYyBQYWludENhbGxiYWNrIHsKKyAgICB2aXJ0dWFs
IHZvaWQgb3BlcmF0b3IoKShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEludFJlY3Qm
IGNvbnRlbnRSZWN0KQorICAgIHsKKyAgICAgICAgQ29sb3IgYWxwaGEoMCwgMCwgMCwgMCk7Cisg
ICAgICAgIGNvbnRleHQuZmlsbFJlY3QoY29udGVudFJlY3QsIGFscGhhLCBDb2xvclNwYWNlRGV2
aWNlUkdCKTsKKyAgICB9Cit9OworCisjZGVmaW5lIEVYUEVDVF9FUV9SRUNUKGEsIGIpIFwKKyAg
ICBFWFBFQ1RfRVEoYS54KCksIGIueCgpKTsgXAorICAgIEVYUEVDVF9FUShhLm1heFgoKSwgYi5t
YXhYKCkpOyBcCisgICAgRVhQRUNUX0VRKGEueSgpLCBiLnkoKSk7IFwKKyAgICBFWFBFQ1RfRVEo
YS5tYXhZKCksIGIubWF4WSgpKTsKKworVEVTVChMYXllclRleHR1cmVVcGRhdGVyVGVzdCwgdGVz
dE9wYXF1ZVJlY3RQcmVzZW50QWZ0ZXJPcGFxdWVQYWludCkKK3sKKyAgICBQYWludEZpbGxPcGFx
dWUgZmlsbE9wYXF1ZTsKKyAgICBSZWZQdHI8TGF5ZXJUZXh0dXJlVXBkYXRlcj4gdXBkYXRlcjsK
KyAgICBJbnRSZWN0IG9wYXF1ZVJlY3Q7CisgICAgT3duUHRyPFRlc3RMYXllclBhaW50ZXJDaHJv
bWl1bT4gcGFpbnRlcjsKKworICAgIG9wYXF1ZVJlY3QgPSBJbnRSZWN0KCk7CisgICAgcGFpbnRl
ciA9IGFkb3B0UHRyKG5ldyBUZXN0TGF5ZXJQYWludGVyQ2hyb21pdW0oZmlsbE9wYXF1ZSkpOwor
ICAgIHVwZGF0ZXIgPSBCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpjcmVhdGUocGFp
bnRlci5yZWxlYXNlKCksIGZhbHNlKTsKKyAgICB1cGRhdGVyLT5wcmVwYXJlVG9VcGRhdGUoSW50
UmVjdCgwLCAwLCA0MDAsIDQwMCksIEludFNpemUoNDAwLCA0MDApLCAwLCAxLCAmb3BhcXVlUmVj
dCk7CisgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgwLCAwLCA0MDAsIDQwMCksIG9wYXF1ZVJl
Y3QpOworCisgICAgb3BhcXVlUmVjdCA9IEludFJlY3QoKTsKKyAgICBwYWludGVyID0gYWRvcHRQ
dHIobmV3IFRlc3RMYXllclBhaW50ZXJDaHJvbWl1bShmaWxsT3BhcXVlKSk7CisgICAgdXBkYXRl
ciA9IEJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OmNyZWF0ZShwYWlu
dGVyLnJlbGVhc2UoKSwgZmFsc2UpOworICAgIHVwZGF0ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRS
ZWN0KDAsIDAsIDQwMCwgNDAwKSwgSW50U2l6ZSg0MDAsIDQwMCksIDAsIDEsICZvcGFxdWVSZWN0
KTsKKyAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDAsIDAsIDQwMCwgNDAwKSwgb3BhcXVlUmVj
dCk7CisKKyAgICBvcGFxdWVSZWN0ID0gSW50UmVjdCgpOworICAgIHBhaW50ZXIgPSBhZG9wdFB0
cihuZXcgVGVzdExheWVyUGFpbnRlckNocm9taXVtKGZpbGxPcGFxdWUpKTsKKyAgICB1cGRhdGVy
ID0gRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpjcmVhdGUo
cGFpbnRlci5yZWxlYXNlKCkpOworICAgIHVwZGF0ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0
KDAsIDAsIDQwMCwgNDAwKSwgSW50U2l6ZSg0MDAsIDQwMCksIDAsIDEsICZvcGFxdWVSZWN0KTsK
KyAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDAsIDAsIDQwMCwgNDAwKSwgb3BhcXVlUmVjdCk7
Cit9CisKK1RFU1QoTGF5ZXJUZXh0dXJlVXBkYXRlclRlc3QsIHRlc3RPcGFxdWVSZWN0Tm90UHJl
c2VudEFmdGVyTm9uT3BhcXVlUGFpbnQpCit7CisgICAgUGFpbnRGaWxsQWxwaGEgZmlsbEFscGhh
OworICAgIFJlZlB0cjxMYXllclRleHR1cmVVcGRhdGVyPiB1cGRhdGVyOworICAgIEludFJlY3Qg
b3BhcXVlUmVjdDsKKyAgICBPd25QdHI8VGVzdExheWVyUGFpbnRlckNocm9taXVtPiBwYWludGVy
OworCisgICAgb3BhcXVlUmVjdCA9IEludFJlY3QoKTsKKyAgICBwYWludGVyID0gYWRvcHRQdHIo
bmV3IFRlc3RMYXllclBhaW50ZXJDaHJvbWl1bShmaWxsQWxwaGEpKTsKKyAgICB1cGRhdGVyID0g
Qml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6Y3JlYXRlKHBhaW50ZXIucmVsZWFzZSgp
LCBmYWxzZSk7CisgICAgdXBkYXRlci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgNDAw
LCA0MDApLCBJbnRTaXplKDQwMCwgNDAwKSwgMCwgMSwgJm9wYXF1ZVJlY3QpOworICAgIEVYUEVD
VF9FUV9SRUNUKEludFJlY3QoMCwgMCwgMCwgMCksIG9wYXF1ZVJlY3QpOworCisgICAgb3BhcXVl
UmVjdCA9IEludFJlY3QoKTsKKyAgICBwYWludGVyID0gYWRvcHRQdHIobmV3IFRlc3RMYXllclBh
aW50ZXJDaHJvbWl1bShmaWxsQWxwaGEpKTsKKyAgICB1cGRhdGVyID0gQml0bWFwU2tQaWN0dXJl
Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6Y3JlYXRlKHBhaW50ZXIucmVsZWFzZSgpLCBmYWxz
ZSk7CisgICAgdXBkYXRlci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgNDAwLCA0MDAp
LCBJbnRTaXplKDQwMCwgNDAwKSwgMCwgMSwgJm9wYXF1ZVJlY3QpOworICAgIEVYUEVDVF9FUV9S
RUNUKEludFJlY3QoMCwgMCwgMCwgMCksIG9wYXF1ZVJlY3QpOworCisgICAgb3BhcXVlUmVjdCA9
IEludFJlY3QoKTsKKyAgICBwYWludGVyID0gYWRvcHRQdHIobmV3IFRlc3RMYXllclBhaW50ZXJD
aHJvbWl1bShmaWxsQWxwaGEpKTsKKyAgICB1cGRhdGVyID0gRnJhbWVCdWZmZXJTa1BpY3R1cmVD
YW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpjcmVhdGUocGFpbnRlci5yZWxlYXNlKCkpOworICAg
IHVwZGF0ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDQwMCwgNDAwKSwgSW50U2l6
ZSg0MDAsIDQwMCksIDAsIDEsICZvcGFxdWVSZWN0KTsKKyAgICBFWFBFQ1RfRVFfUkVDVChJbnRS
ZWN0KDAsIDAsIDAsIDApLCBvcGFxdWVSZWN0KTsKK30KKworVEVTVChMYXllclRleHR1cmVVcGRh
dGVyVGVzdCwgdGVzdE9wYXF1ZVJlY3ROb3RQcmVzZW50Rm9yT3BhcXVlTGF5ZXJXaXRoT3BhcXVl
UGFpbnQpCit7CisgICAgUGFpbnRGaWxsT3BhcXVlIGZpbGxPcGFxdWU7CisgICAgUmVmUHRyPExh
eWVyVGV4dHVyZVVwZGF0ZXI+IHVwZGF0ZXI7CisgICAgSW50UmVjdCBvcGFxdWVSZWN0OworICAg
IE93blB0cjxUZXN0TGF5ZXJQYWludGVyQ2hyb21pdW0+IHBhaW50ZXI7CisKKyAgICBvcGFxdWVS
ZWN0ID0gSW50UmVjdCgpOworICAgIHBhaW50ZXIgPSBhZG9wdFB0cihuZXcgVGVzdExheWVyUGFp
bnRlckNocm9taXVtKGZpbGxPcGFxdWUpKTsKKyAgICB1cGRhdGVyID0gQml0bWFwQ2FudmFzTGF5
ZXJUZXh0dXJlVXBkYXRlcjo6Y3JlYXRlKHBhaW50ZXIucmVsZWFzZSgpLCBmYWxzZSk7CisgICAg
dXBkYXRlci0+c2V0T3BhcXVlKHRydWUpOworICAgIHVwZGF0ZXItPnByZXBhcmVUb1VwZGF0ZShJ
bnRSZWN0KDAsIDAsIDQwMCwgNDAwKSwgSW50U2l6ZSg0MDAsIDQwMCksIDAsIDEsICZvcGFxdWVS
ZWN0KTsKKyAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDAsIDAsIDAsIDApLCBvcGFxdWVSZWN0
KTsKKworICAgIG9wYXF1ZVJlY3QgPSBJbnRSZWN0KCk7CisgICAgcGFpbnRlciA9IGFkb3B0UHRy
KG5ldyBUZXN0TGF5ZXJQYWludGVyQ2hyb21pdW0oZmlsbE9wYXF1ZSkpOworICAgIHVwZGF0ZXIg
PSBCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpjcmVhdGUocGFpbnRl
ci5yZWxlYXNlKCksIGZhbHNlKTsKKyAgICB1cGRhdGVyLT5zZXRPcGFxdWUodHJ1ZSk7CisgICAg
dXBkYXRlci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgNDAwLCA0MDApLCBJbnRTaXpl
KDQwMCwgNDAwKSwgMCwgMSwgJm9wYXF1ZVJlY3QpOworICAgIEVYUEVDVF9FUV9SRUNUKEludFJl
Y3QoMCwgMCwgMCwgMCksIG9wYXF1ZVJlY3QpOworCisgICAgb3BhcXVlUmVjdCA9IEludFJlY3Qo
KTsKKyAgICBwYWludGVyID0gYWRvcHRQdHIobmV3IFRlc3RMYXllclBhaW50ZXJDaHJvbWl1bShm
aWxsT3BhcXVlKSk7CisgICAgdXBkYXRlciA9IEZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5
ZXJUZXh0dXJlVXBkYXRlcjo6Y3JlYXRlKHBhaW50ZXIucmVsZWFzZSgpKTsKKyAgICB1cGRhdGVy
LT5zZXRPcGFxdWUodHJ1ZSk7CisgICAgdXBkYXRlci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3Qo
MCwgMCwgNDAwLCA0MDApLCBJbnRTaXplKDQwMCwgNDAwKSwgMCwgMSwgJm9wYXF1ZVJlY3QpOwor
ICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMCwgMCwgMCwgMCksIG9wYXF1ZVJlY3QpOworfQor
CitURVNUKExheWVyVGV4dHVyZVVwZGF0ZXJUZXN0LCB0ZXN0T3BhcXVlUmVjdE5vdFByZXNlbnRG
b3JPcGFxdWVMYXllcldpdGhOb25PcGFxdWVQYWludCkKK3sKKyAgICBQYWludEZpbGxBbHBoYSBm
aWxsQWxwaGE7CisgICAgUmVmUHRyPExheWVyVGV4dHVyZVVwZGF0ZXI+IHVwZGF0ZXI7CisgICAg
SW50UmVjdCBvcGFxdWVSZWN0OworICAgIE93blB0cjxUZXN0TGF5ZXJQYWludGVyQ2hyb21pdW0+
IHBhaW50ZXI7CisKKyAgICBvcGFxdWVSZWN0ID0gSW50UmVjdCgpOworICAgIHBhaW50ZXIgPSBh
ZG9wdFB0cihuZXcgVGVzdExheWVyUGFpbnRlckNocm9taXVtKGZpbGxBbHBoYSkpOworICAgIHVw
ZGF0ZXIgPSBCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpjcmVhdGUocGFpbnRlci5y
ZWxlYXNlKCksIGZhbHNlKTsKKyAgICB1cGRhdGVyLT5zZXRPcGFxdWUodHJ1ZSk7CisgICAgdXBk
YXRlci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgNDAwLCA0MDApLCBJbnRTaXplKDQw
MCwgNDAwKSwgMCwgMSwgJm9wYXF1ZVJlY3QpOworICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3Qo
MCwgMCwgMCwgMCksIG9wYXF1ZVJlY3QpOworCisgICAgb3BhcXVlUmVjdCA9IEludFJlY3QoKTsK
KyAgICBwYWludGVyID0gYWRvcHRQdHIobmV3IFRlc3RMYXllclBhaW50ZXJDaHJvbWl1bShmaWxs
QWxwaGEpKTsKKyAgICB1cGRhdGVyID0gQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJl
VXBkYXRlcjo6Y3JlYXRlKHBhaW50ZXIucmVsZWFzZSgpLCBmYWxzZSk7CisgICAgdXBkYXRlci0+
c2V0T3BhcXVlKHRydWUpOworICAgIHVwZGF0ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAs
IDAsIDQwMCwgNDAwKSwgSW50U2l6ZSg0MDAsIDQwMCksIDAsIDEsICZvcGFxdWVSZWN0KTsKKyAg
ICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDAsIDAsIDAsIDApLCBvcGFxdWVSZWN0KTsKKworICAg
IG9wYXF1ZVJlY3QgPSBJbnRSZWN0KCk7CisgICAgcGFpbnRlciA9IGFkb3B0UHRyKG5ldyBUZXN0
TGF5ZXJQYWludGVyQ2hyb21pdW0oZmlsbEFscGhhKSk7CisgICAgdXBkYXRlciA9IEZyYW1lQnVm
ZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6Y3JlYXRlKHBhaW50ZXIucmVs
ZWFzZSgpKTsKKyAgICB1cGRhdGVyLT5zZXRPcGFxdWUodHJ1ZSk7CisgICAgdXBkYXRlci0+cHJl
cGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgNDAwLCA0MDApLCBJbnRTaXplKDQwMCwgNDAwKSwg
MCwgMSwgJm9wYXF1ZVJlY3QpOworICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMCwgMCwgMCwg
MCksIG9wYXF1ZVJlY3QpOworfQorCit9IC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UaWxlZExheWVyQ2hyb21pdW1UZXN0LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVGlsZWRMYXllckNocm9taXVtVGVzdC5jcHAKaW5kZXgg
ODUyNmEwYjNmNTExNWE4MmMxOTA3NjQyZDA3MDM4MzY4OWQ4ZWZhZi4uZTE3NjcwYzkwMzQxYjRi
NTUyOWUzNWFiODc5ZjEzMDM5ZDAzZDU1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9UaWxlZExheWVyQ2hyb21pdW1UZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL1RpbGVkTGF5ZXJDaHJvbWl1bVRlc3QuY3BwCkBAIC03Miw3ICs3Miw3
IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgUGFzc093blB0cjxMYXllclRleHR1cmVVcGRhdGVy
OjpUZXh0dXJlPiBjcmVhdGVUZXh0dXJlKFRleHR1cmVNYW5hZ2VyKiBtYW5hZ2VyKSB7IHJldHVy
biBhZG9wdFB0cihuZXcgVGV4dHVyZShNYW5hZ2VkVGV4dHVyZTo6Y3JlYXRlKG1hbmFnZXIpKSk7
IH0KICAgICB2aXJ0dWFsIFNhbXBsZWRUZXhlbEZvcm1hdCBzYW1wbGVkVGV4ZWxGb3JtYXQoR0Mz
RGVudW0pIHsgcmV0dXJuIFNhbXBsZWRUZXhlbEZvcm1hdFJHQkE7IH0KLSAgICB2aXJ0dWFsIHZv
aWQgcHJlcGFyZVRvVXBkYXRlKGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBjb25zdCBJbnRT
aXplJiwgaW50LCBmbG9hdCk7CisgICAgdmlydHVhbCB2b2lkIHByZXBhcmVUb1VwZGF0ZShjb25z
dCBJbnRSZWN0JiBjb250ZW50UmVjdCwgY29uc3QgSW50U2l6ZSYsIGludCwgZmxvYXQsIEludFJl
Y3QqKTsKIAogcHJpdmF0ZToKICAgICBpbnQgbV9wcmVwYXJlQ291bnQ7CkBAIC0xNDksNyArMTQ5
LDcgQEAgdm9pZCBGYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcjo6c2V0UmVjdFRvSW52YWxpZGF0ZShj
b25zdCBJbnRSZWN0JiByZWN0LCBGYWtlVGlsZWQKICAgICBtX2xheWVyID0gbGF5ZXI7CiB9CiAK
LXZvaWQgRmFrZUxheWVyVGV4dHVyZVVwZGF0ZXI6OnByZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRS
ZWN0JiBjb250ZW50UmVjdCwgY29uc3QgSW50U2l6ZSYsIGludCwgZmxvYXQpCit2b2lkIEZha2VM
YXllclRleHR1cmVVcGRhdGVyOjpwcmVwYXJlVG9VcGRhdGUoY29uc3QgSW50UmVjdCYgY29udGVu
dFJlY3QsIGNvbnN0IEludFNpemUmLCBpbnQsIGZsb2F0LCBJbnRSZWN0KiByZXN1bHRpbmdPcGFx
dWVSZWN0KQogewogICAgIG1fcHJlcGFyZUNvdW50Kys7CiAgICAgbV9sYXN0VXBkYXRlUmVjdCA9
IGNvbnRlbnRSZWN0OwpAQCAtMTU4LDYgKzE1OCw3IEBAIHZvaWQgRmFrZUxheWVyVGV4dHVyZVVw
ZGF0ZXI6OnByZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgY29uc3QK
ICAgICAgICAgbV9yZWN0VG9JbnZhbGlkYXRlID0gSW50UmVjdCgpOwogICAgICAgICBtX2xheWVy
ID0gMDsKICAgICB9CisgICAgKnJlc3VsdGluZ09wYXF1ZVJlY3QgPSBJbnRSZWN0KCk7CiB9CiAK
IFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcHVzaERpcnR5VGlsZXMpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>