<?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>70291</bug_id>
          
          <creation_ts>2011-10-17 17:25:54 -0700</creation_ts>
          <short_desc>[chromium] Allow CCLayerTreeHostImpl to call back to proxy via CCLayerTreeHostImplClient</short_desc>
          <delta_ts>2011-10-20 15:04:21 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Nat Duca">nduca</reporter>
          <assigned_to name="Nat Duca">nduca</assigned_to>
          <cc>jamesr</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>485659</commentid>
    <comment_count>0</comment_count>
    <who name="Nat Duca">nduca</who>
    <bug_when>2011-10-17 17:25:54 -0700</bug_when>
    <thetext>[chromium] Allow CCLayerTreeHostImpl to call back to proxy via CCLayerTreeHostImplClient</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>485661</commentid>
    <comment_count>1</comment_count>
      <attachid>111356</attachid>
    <who name="Nat Duca">nduca</who>
    <bug_when>2011-10-17 17:26:47 -0700</bug_when>
    <thetext>Created attachment 111356
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>485688</commentid>
    <comment_count>2</comment_count>
      <attachid>111360</attachid>
    <who name="Nat Duca">nduca</who>
    <bug_when>2011-10-17 18:01:48 -0700</bug_when>
    <thetext>Created attachment 111360
Make LTHI the scroll controller.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>485699</commentid>
    <comment_count>3</comment_count>
      <attachid>111360</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-10-17 18:10:18 -0700</bug_when>
    <thetext>Comment on attachment 111360
Make LTHI the scroll controller.

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

R- cos I think this loops forever and thus isn&apos;t tested very well, but it&apos;s looking great otherwise

&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostImpl.h:50
&gt; +    virtual void setNeedsRedrawOnImplThread() = 0;
&gt; +    virtual void setNeedsCommitOnImplThread() = 0;

why are these suffixed OnImplThread() instead of OnCCThread() like the functions in CCThreadProxy are? It&apos;s confusing to be similar but slightly different from the convention established there

&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostImpl.h:54
&gt; +class CCLayerTreeHostImpl : public CCScrollController {

this line makes CCLayerTreeHostImpl::scrollRootLayer() virtual and an implementation of CCScrollController. Please document this in the header (make it virtual and say what interface it&apos;s implementing)

&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostImpl.h:99
&gt; +    explicit CCLayerTreeHostImpl(const CCSettings&amp;, CCLayerTreeHostImplClient*);

nit: no need explicit any more

&gt; Source/WebCore/platform/graphics/chromium/cc/CCThreadProxy.h:68
&gt; +    virtual void setNeedsCommitOnImplThread() { setNeedsCommitOnImplThread(); }

isn&apos;t this an infinite loop?

if these were suffixed OnCCThread() then you wouldn&apos;t need these thunks, you could just make the actual functions virtual</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>485701</commentid>
    <comment_count>4</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-10-17 18:11:13 -0700</bug_when>
    <thetext>Maybe this&apos;ll be tested by landing https://bugs.webkit.org/show_bug.cgi?id=70161, will find out soon!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>485703</commentid>
    <comment_count>5</comment_count>
    <who name="Nat Duca">nduca</who>
    <bug_when>2011-10-17 18:13:44 -0700</bug_when>
    <thetext>I was trying to make the client neutral to whether it was hosted on the cc thread of the main thread... since it can be either. OnImplThread is the suffix I was going to use for cases like these --- though this is the first place where I think we&apos;ve had that case...

I&apos;ll fix up the other crap. I&apos;m surprised tests didn&apos;t catch that... do we have a BKM for running DRT with --enable-threaded-compositor? I can hack my build...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>485706</commentid>
    <comment_count>6</comment_count>
      <attachid>111361</attachid>
    <who name="Nat Duca">nduca</who>
    <bug_when>2011-10-17 18:21:53 -0700</bug_when>
    <thetext>Created attachment 111361
Fix loop and virutal</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>485708</commentid>
    <comment_count>7</comment_count>
    <who name="Nat Duca">nduca</who>
    <bug_when>2011-10-17 18:23:10 -0700</bug_when>
    <thetext>I&apos;m fine getting rid of the &quot;onImplThread&quot; suffix --- your call --- I put up fixes for the glaringly obvious stuff, will pick this up later tonight.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>485711</commentid>
    <comment_count>8</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-10-17 18:27:31 -0700</bug_when>
    <thetext>To run the layout tests in threaded mode pass &quot;--threaded-compositing&quot; to run_webkit_tests.sh / new-run-webkit-tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>486320</commentid>
    <comment_count>9</comment_count>
      <attachid>111361</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-10-18 14:45:14 -0700</bug_when>
    <thetext>Comment on attachment 111361
Fix loop and virutal

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

R=me. As we discussed I think it&apos;s not worth trying to draw a distinction between &quot;...OnImplThread&quot; and &quot;...OnCCThread&quot; suffixes - I think life would be a lot better if we used one and stuck to it.

&gt; Source/WebKit/chromium/tests/CCLayerTreeHostImplTest.cpp:71
&gt; +

nit: extra newline</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>486409</commentid>
    <comment_count>10</comment_count>
    <who name="Nat Duca">nduca</who>
    <bug_when>2011-10-18 16:17:53 -0700</bug_when>
    <thetext>Totally agreed. I&apos;ll eradicate OnCCThread variants.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>487906</commentid>
    <comment_count>11</comment_count>
    <who name="Nat Duca">nduca</who>
    <bug_when>2011-10-20 15:04:21 -0700</bug_when>
    <thetext>Committed r98025: &lt;http://trac.webkit.org/changeset/98025&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>111356</attachid>
            <date>2011-10-17 17:26:47 -0700</date>
            <delta_ts>2011-10-17 18:01:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-70291-20111017172646.patch</filename>
            <type>text/plain</type>
            <size>18975</size>
            <attacher name="Nat Duca">nduca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTczMzMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA1ZmM3MjA5ZTFjZjJkMDk1
Yzc1MzlmMTk3YWRlZjljYzVlNjVjNjM5Li5iNWFhMTg5Y2M4MGIwMGM0MzdkMjIyNjcyNTU2MGQy
MzYwZjUwYzI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzMgQEAKKzIwMTEtMTAtMTcgIE5hdCBE
dWNhICA8bmR1Y2FAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gQWxsb3cgQ0NM
YXllclRyZWVIb3N0SW1wbCB0byBjYWxsIGJhY2sgdG8gcHJveHkgdmlhIENDTGF5ZXJUcmVlSG9z
dEltcGxDbGllbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTcwMjkxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0OjpjcmVhdGVMYXllclRyZWVIb3N0SW1w
bCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVI
b3N0Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRy
ZWVIb3N0SW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3RJbXBsOjpj
cmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0SW1wbDo6Q0NMYXllclRy
ZWVIb3N0SW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3RJbXBsOjpzY3Jv
bGxSb290TGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
TGF5ZXJUcmVlSG9zdEltcGwuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1Njcm9sbENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkND
U2luZ2xlVGhyZWFkUHJveHk6OnN0YXJ0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5Lmg6CisgICAgICAgIChXZWJDb3JlOjpDQ1Np
bmdsZVRocmVhZFByb3h5OjpzZXROZWVkc1JlZHJhd09uSW1wbFRocmVhZCk6CisgICAgICAgIChX
ZWJDb3JlOjpDQ1NpbmdsZVRocmVhZFByb3h5OjpzZXROZWVkc0NvbW1pdE9uSW1wbFRocmVhZCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpzY3JvbGxSb290TGF5ZXJPbklt
cGxUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6aW5pdGlhbGl6ZUlt
cGxPbkNDVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OmluaXRpYWxp
emVMYXllclJlbmRlcmVyT25DQ1RocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFBy
b3h5OjpsYXllclRyZWVIb3N0Q2xvc2VkT25DQ1RocmVhZCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oOgorICAgICAgICAoV2ViQ29yZTo6
Q0NUaHJlYWRQcm94eTo6c2V0TmVlZHNSZWRyYXdPbkltcGxUaHJlYWQpOgorICAgICAgICAoV2Vi
Q29yZTo6Q0NUaHJlYWRQcm94eTo6c2V0TmVlZHNDb21taXRPbkltcGxUaHJlYWQpOgorCiAyMDEx
LTEwLTEyICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmVtb3Zl
IEVOQUJMRShYSFRNTE1QKSBhbmQgYXNzb2NpYXRlZCBjb2RlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRy
ZWVIb3N0LmNwcAppbmRleCAzNWM1NDM4NzkwN2JlYjAyZGQ2OWY3Mjk2Y2E4ZTI0ZGZiNmFlYjM5
Li45MGQ0Yjc3NDEzNzE4M2ZkYTBhYmI5NmM2OGNjNWM0OTk5N2IwZWJhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhv
c3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDTGF5ZXJUcmVlSG9zdC5jcHAKQEAgLTE1Myw5ICsxNTMsOSBAQCBQYXNzUmVmUHRyPEdyYXBo
aWNzQ29udGV4dDNEPiBDQ0xheWVyVHJlZUhvc3Q6OmNyZWF0ZUxheWVyVHJlZUhvc3RDb250ZXh0
M0QoKQogICAgIHJldHVybiBtX2NsaWVudC0+Y3JlYXRlTGF5ZXJUcmVlSG9zdENvbnRleHQzRCgp
OwogfQogCi1QYXNzT3duUHRyPENDTGF5ZXJUcmVlSG9zdEltcGw+IENDTGF5ZXJUcmVlSG9zdDo6
Y3JlYXRlTGF5ZXJUcmVlSG9zdEltcGwoKQorUGFzc093blB0cjxDQ0xheWVyVHJlZUhvc3RJbXBs
PiBDQ0xheWVyVHJlZUhvc3Q6OmNyZWF0ZUxheWVyVHJlZUhvc3RJbXBsKENDTGF5ZXJUcmVlSG9z
dEltcGxDbGllbnQqIGNsaWVudCkKIHsKLSAgICByZXR1cm4gQ0NMYXllclRyZWVIb3N0SW1wbDo6
Y3JlYXRlKG1fc2V0dGluZ3MpOworICAgIHJldHVybiBDQ0xheWVyVHJlZUhvc3RJbXBsOjpjcmVh
dGUobV9zZXR0aW5ncywgY2xpZW50KTsKIH0KIAogdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OmRpZFJl
Y3JlYXRlR3JhcGhpY3NDb250ZXh0KGJvb2wgc3VjY2VzcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVI
b3N0LmgKaW5kZXggNzBiNjM5NjhlOTUxNGI4ZDZiOTg1MTdiZTkzZTdkNjViMjliNzE1Yy4uYjBk
M2JiZmZlYjUwZmQ3M2Y0ODdkN2E3NjQ4MGIxODQyMjFiY2RhOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
clRyZWVIb3N0LmgKQEAgLTEwMCw3ICsxMDAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjb21taXRD
b21wbGV0ZSgpOwogICAgIHZvaWQgY29tbWl0VG9PbkNDVGhyZWFkKENDTGF5ZXJUcmVlSG9zdElt
cGwqKTsKICAgICBQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjcmVhdGVMYXllclRyZWVI
b3N0Q29udGV4dDNEKCk7Ci0gICAgdmlydHVhbCBQYXNzT3duUHRyPENDTGF5ZXJUcmVlSG9zdElt
cGw+IGNyZWF0ZUxheWVyVHJlZUhvc3RJbXBsKCk7CisgICAgdmlydHVhbCBQYXNzT3duUHRyPEND
TGF5ZXJUcmVlSG9zdEltcGw+IGNyZWF0ZUxheWVyVHJlZUhvc3RJbXBsKENDTGF5ZXJUcmVlSG9z
dEltcGxDbGllbnQqKTsKICAgICB2b2lkIGRpZFJlY3JlYXRlR3JhcGhpY3NDb250ZXh0KGJvb2wg
c3VjY2Vzcyk7CiAgICAgdm9pZCBkZWxldGVDb250ZW50c1RleHR1cmVzT25DQ1RocmVhZChUZXh0
dXJlQWxsb2NhdG9yKik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAK
aW5kZXggYTMzOTkwODE2YTk0ZTBjMjliNzljMGJlMzQ3NjU0ZDkzMGIzYjE1Yi4uMzgyNGRkZDk0
NGM3NGU3ZGExYjg1N2QyOGMxMjQ2MWRiMzE3MTdlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
clRyZWVIb3N0SW1wbC5jcHAKQEAgLTM4LDEzICszOCwxNCBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLVBhc3NPd25QdHI8Q0NMYXllclRyZWVIb3N0SW1wbD4gQ0NMYXllclRyZWVIb3N0SW1w
bDo6Y3JlYXRlKGNvbnN0IENDU2V0dGluZ3MmIHNldHRpbmdzKQorUGFzc093blB0cjxDQ0xheWVy
VHJlZUhvc3RJbXBsPiBDQ0xheWVyVHJlZUhvc3RJbXBsOjpjcmVhdGUoY29uc3QgQ0NTZXR0aW5n
cyYgc2V0dGluZ3MsIENDTGF5ZXJUcmVlSG9zdEltcGxDbGllbnQqIGNsaWVudCkKIHsKLSAgICBy
ZXR1cm4gYWRvcHRQdHIobmV3IENDTGF5ZXJUcmVlSG9zdEltcGwoc2V0dGluZ3MpKTsKKyAgICBy
ZXR1cm4gYWRvcHRQdHIobmV3IENDTGF5ZXJUcmVlSG9zdEltcGwoc2V0dGluZ3MsIGNsaWVudCkp
OwogfQogCi1DQ0xheWVyVHJlZUhvc3RJbXBsOjpDQ0xheWVyVHJlZUhvc3RJbXBsKGNvbnN0IEND
U2V0dGluZ3MmIHNldHRpbmdzKQotICAgIDogbV9zb3VyY2VGcmFtZU51bWJlcigtMSkKK0NDTGF5
ZXJUcmVlSG9zdEltcGw6OkNDTGF5ZXJUcmVlSG9zdEltcGwoY29uc3QgQ0NTZXR0aW5ncyYgc2V0
dGluZ3MsIENDTGF5ZXJUcmVlSG9zdEltcGxDbGllbnQqIGNsaWVudCkKKyAgICA6IG1fY2xpZW50
KGNsaWVudCkKKyAgICAsIG1fc291cmNlRnJhbWVOdW1iZXIoLTEpCiAgICAgLCBtX2ZyYW1lTnVt
YmVyKDApCiAgICAgLCBtX3NldHRpbmdzKHNldHRpbmdzKQogewpAQCAtMTY2LDYgKzE2Nyw4IEBA
IHZvaWQgQ0NMYXllclRyZWVIb3N0SW1wbDo6c2Nyb2xsUm9vdExheWVyKGNvbnN0IEludFNpemUm
IHNjcm9sbERlbHRhKQogICAgICAgICByZXR1cm47CiAKICAgICBtX3Jvb3RMYXllckltcGwtPnNj
cm9sbEJ5KHNjcm9sbERlbHRhKTsKKyAgICBtX2NsaWVudC0+c2V0TmVlZHNDb21taXRPbkltcGxU
aHJlYWQoKTsKKyAgICBtX2NsaWVudC0+c2V0TmVlZHNSZWRyYXdPbkltcGxUaHJlYWQoKTsKIH0K
IAogUGFzc093blB0cjxDQ1Njcm9sbFVwZGF0ZVNldD4gQ0NMYXllclRyZWVIb3N0SW1wbDo6cHJv
Y2Vzc1Njcm9sbERlbHRhcygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgKaW5k
ZXggZDBmZjhjZTg0MWJjYzkwMzc3NjVjZTVkMzYyMmZiMTE3NjRhZTBkMS4uNGY3ZWZmNzI4ZWFh
YmNmZWQyMTc3OGU1ZWRmZjY4ODFjZDM4YWEzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVl
SG9zdEltcGwuaApAQCAtNDIsMTEgKzQyLDE4IEBAIGNsYXNzIFRleHR1cmVBbGxvY2F0b3I7CiBz
dHJ1Y3QgTGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllczsKIGNsYXNzIFRyYW5zZm9ybWF0aW9uTWF0
cml4OwogCisvLyBDQ0xheWVyVHJlZUhvc3QtPkNDUHJveHkgY2FsbGJhY2sgaW50ZXJmYWNlLgor
Y2xhc3MgQ0NMYXllclRyZWVIb3N0SW1wbENsaWVudCB7CitwdWJsaWM6CisgICAgdmlydHVhbCB2
b2lkIHNldE5lZWRzUmVkcmF3T25JbXBsVGhyZWFkKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBz
ZXROZWVkc0NvbW1pdE9uSW1wbFRocmVhZCgpID0gMDsKK307CisKIC8vIENDTGF5ZXJUcmVlSG9z
dEltcGwgb3ducyB0aGUgQ0NMYXllckltcGwgdHJlZSBhcyB3ZWxsIGFzIGFzc29jaWF0ZWQgcmVu
ZGVyaW5nIHN0YXRlCiBjbGFzcyBDQ0xheWVyVHJlZUhvc3RJbXBsIHsKICAgICBXVEZfTUFLRV9O
T05DT1BZQUJMRShDQ0xheWVyVHJlZUhvc3RJbXBsKTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFz
c093blB0cjxDQ0xheWVyVHJlZUhvc3RJbXBsPiBjcmVhdGUoY29uc3QgQ0NTZXR0aW5ncyYpOwor
ICAgIHN0YXRpYyBQYXNzT3duUHRyPENDTGF5ZXJUcmVlSG9zdEltcGw+IGNyZWF0ZShjb25zdCBD
Q1NldHRpbmdzJiwgQ0NMYXllclRyZWVIb3N0SW1wbENsaWVudCopOwogICAgIHZpcnR1YWwgfkND
TGF5ZXJUcmVlSG9zdEltcGwoKTsKIAogICAgIC8vIFZpcnR1YWwgZm9yIHRlc3RpbmcKQEAgLTg4
LDcgKzk1LDggQEAgcHVibGljOgogICAgIFBhc3NPd25QdHI8Q0NTY3JvbGxVcGRhdGVTZXQ+IHBy
b2Nlc3NTY3JvbGxEZWx0YXMoKTsKIAogcHJvdGVjdGVkOgotICAgIGV4cGxpY2l0IENDTGF5ZXJU
cmVlSG9zdEltcGwoY29uc3QgQ0NTZXR0aW5ncyYpOworICAgIGV4cGxpY2l0IENDTGF5ZXJUcmVl
SG9zdEltcGwoY29uc3QgQ0NTZXR0aW5ncyYsIENDTGF5ZXJUcmVlSG9zdEltcGxDbGllbnQqKTsK
KyAgICBDQ0xheWVyVHJlZUhvc3RJbXBsQ2xpZW50KiBtX2NsaWVudDsKICAgICBpbnQgbV9zb3Vy
Y2VGcmFtZU51bWJlcjsKICAgICBpbnQgbV9mcmFtZU51bWJlcjsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY3JvbGxDb250cm9s
bGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Nj
cm9sbENvbnRyb2xsZXIuaAppbmRleCBiY2QyZjVmMjc1ZjNiN2MzZTA5MDIyNGQ1ZDYzNWRmMTQ5
ZmYxOWE1Li5hZjM3M2RmM2RiZDRhMjE4YzE1ZDhhMDZiM2QzYzY3MWEyN2M4NzM4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Njcm9s
bENvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1Njcm9sbENvbnRyb2xsZXIuaApAQCAtMzQsNyArMzQsNyBAQCBjbGFzcyBJbnRT
aXplOwogY2xhc3MgQ0NTY3JvbGxDb250cm9sbGVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJM
RShDQ1Njcm9sbENvbnRyb2xsZXIpOwogcHVibGljOgotICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxS
b290TGF5ZXIoY29uc3QgSW50U2l6ZSYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsUm9v
dExheWVyT25JbXBsVGhyZWFkKGNvbnN0IEludFNpemUmKSA9IDA7CiAKIHByb3RlY3RlZDoKICAg
ICBDQ1Njcm9sbENvbnRyb2xsZXIoKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQ
cm94eS5jcHAKaW5kZXggNjBlNDc5NTJlOGE1ZTE5ZTU2Njc4OGM0ZjFmODA0NjFkOGM2ZDdhMy4u
Nzg1YWQ2MmY1ZWVlYjEyNjQ3MjY1NTkzNmM0OTg2MWE4NTQ1N2Q3ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQ
cm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAKQEAgLTU3LDcgKzU3LDcgQEAgQ0NTaW5nbGVUaHJl
YWRQcm94eTo6Q0NTaW5nbGVUaHJlYWRQcm94eShDQ0xheWVyVHJlZUhvc3QqIGxheWVyVHJlZUhv
c3QpCiB2b2lkIENDU2luZ2xlVGhyZWFkUHJveHk6OnN0YXJ0KCkKIHsKICAgICBEZWJ1Z1Njb3Bl
ZFNldEltcGxUaHJlYWQgaW1wbDsKLSAgICBtX2xheWVyVHJlZUhvc3RJbXBsID0gbV9sYXllclRy
ZWVIb3N0LT5jcmVhdGVMYXllclRyZWVIb3N0SW1wbCgpOworICAgIG1fbGF5ZXJUcmVlSG9zdElt
cGwgPSBtX2xheWVyVHJlZUhvc3QtPmNyZWF0ZUxheWVyVHJlZUhvc3RJbXBsKHRoaXMpOwogfQog
CiBDQ1NpbmdsZVRocmVhZFByb3h5Ojp+Q0NTaW5nbGVUaHJlYWRQcm94eSgpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRo
cmVhZFByb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1NpbmdsZVRocmVhZFByb3h5LmgKaW5kZXggMjg0ZGYwNWIxYjk4NDAyOWI2NjQzMzE3MDcw
OGQxOWI1NDVkZDY0Ni4uYWM5N2VhN2IwODA5NTU4NzZkMzdlNGU1ODAwMTAyZWNhYTkyYzBiNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NTaW5nbGVUaHJlYWRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuaApAQCAtMzQsNyArMzQsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENDTGF5ZXJUcmVlSG9zdDsKIAotY2xhc3MgQ0NT
aW5nbGVUaHJlYWRQcm94eSA6IHB1YmxpYyBDQ1Byb3h5IHsKK2NsYXNzIENDU2luZ2xlVGhyZWFk
UHJveHkgOiBwdWJsaWMgQ0NQcm94eSwgQ0NMYXllclRyZWVIb3N0SW1wbENsaWVudCB7CiBwdWJs
aWM6CiAgICAgc3RhdGljIFBhc3NPd25QdHI8Q0NQcm94eT4gY3JlYXRlKENDTGF5ZXJUcmVlSG9z
dCopOwogICAgIHZpcnR1YWwgfkNDU2luZ2xlVGhyZWFkUHJveHkoKTsKQEAgLTU0LDYgKzU0LDEw
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc3RhcnQoKTsKICAgICB2aXJ0dWFsIHZvaWQg
c3RvcCgpOwogCisgICAgLy8gQ0NMYXllclRyZWVIb3N0SW1wbENsaWVudCBpbXBsZW1lbnRhdGlv
bgorICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc1JlZHJhd09uSW1wbFRocmVhZCgpIHsgbV9sYXll
clRyZWVIb3N0LT5zZXROZWVkc0NvbW1pdFRoZW5SZWRyYXcoKTsgfQorICAgIHZpcnR1YWwgdm9p
ZCBzZXROZWVkc0NvbW1pdE9uSW1wbFRocmVhZCgpIHsgbV9sYXllclRyZWVIb3N0LT5zZXROZWVk
c0NvbW1pdFRoZW5SZWRyYXcoKTsgfQorCiAgICAgLy8gQ2FsbGVkIGJ5IHRoZSBsZWdhY3kgcGF0
aCB3aGVyZSBSZW5kZXJXaWRnZXQgZG9lcyB0aGUgc2NoZWR1bGluZy4KICAgICB2b2lkIGNvbXBv
c2l0ZUltbWVkaWF0ZWx5KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAKaW5kZXggOWVl
MTY0YTVjZWYyYjVjYWJjZWUzZWNjNWY3ZDFkNDE3OWM5NzMzZi4uNDlhYTIzOTc0YmFmODczMzQ3
NDFlY2I1ZDE2NTZmODUyYWQ4NDA1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAKQEAg
LTc4LDMwICs3OCw2IEBAIHByaXZhdGU6CiAgICAgQ0NUaHJlYWRQcm94eSogbV9wcm94eTsKIH07
CiAKLWNsYXNzIENDVGhyZWFkUHJveHlTY3JvbGxDb250cm9sbGVyQWRhcHRlciA6IHB1YmxpYyBD
Q1Njcm9sbENvbnRyb2xsZXIgewotcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPENDVGhy
ZWFkUHJveHlTY3JvbGxDb250cm9sbGVyQWRhcHRlcj4gY3JlYXRlKENDVGhyZWFkUHJveHkqIHBy
b3h5KQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBDQ1RocmVhZFByb3h5U2Ny
b2xsQ29udHJvbGxlckFkYXB0ZXIocHJveHkpKTsKLSAgICB9Ci0gICAgdmlydHVhbCB+Q0NUaHJl
YWRQcm94eVNjcm9sbENvbnRyb2xsZXJBZGFwdGVyKCkgeyB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQg
c2Nyb2xsUm9vdExheWVyKGNvbnN0IEludFNpemUmIG9mZnNldCkKLSAgICB7Ci0gICAgICAgIG1f
cHJveHktPm1fbGF5ZXJUcmVlSG9zdEltcGwtPnNjcm9sbFJvb3RMYXllcihvZmZzZXQpOwotICAg
ICAgICBtX3Byb3h5LT5zZXROZWVkc1JlZHJhd09uQ0NUaHJlYWQoKTsKLSAgICAgICAgbV9wcm94
eS0+c2V0TmVlZHNDb21taXRPbkNDVGhyZWFkKCk7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIGV4
cGxpY2l0IENDVGhyZWFkUHJveHlTY3JvbGxDb250cm9sbGVyQWRhcHRlcihDQ1RocmVhZFByb3h5
KiBwcm94eSkKLSAgICB7Ci0gICAgICAgIG1fcHJveHkgPSBwcm94eTsKLSAgICB9Ci0KLSAgICBD
Q1RocmVhZFByb3h5KiBtX3Byb3h5OwotfTsKLQogUGFzc093blB0cjxDQ1Byb3h5PiBDQ1RocmVh
ZFByb3h5OjpjcmVhdGUoQ0NMYXllclRyZWVIb3N0KiBsYXllclRyZWVIb3N0KQogewogICAgIHJl
dHVybiBhZG9wdFB0cihuZXcgQ0NUaHJlYWRQcm94eShsYXllclRyZWVIb3N0KSk7CkBAIC0zMDQs
NiArMjgwLDEzIEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6c3RvcCgpCiAgICAgbV9zdGFydGVkID0g
ZmFsc2U7CiB9CiAKK3ZvaWQgQ0NUaHJlYWRQcm94eTo6c2Nyb2xsUm9vdExheWVyT25JbXBsVGhy
ZWFkKGNvbnN0IEludFNpemUmIG9mZnNldCkKK3sKKyAgICBUUkFDRV9FVkVOVCgiQ0NUaHJlYWRQ
cm94eTo6c2Nyb2xsUm9vdExheWVyT25JbXBsVGhyZWFkIiwgdGhpcywgMCk7CisgICAgQVNTRVJU
KGlzSW1wbFRocmVhZCgpKTsKKyAgICBtX2xheWVyVHJlZUhvc3RJbXBsLT5zY3JvbGxSb290TGF5
ZXIob2Zmc2V0KTsKK30KKwogdm9pZCBDQ1RocmVhZFByb3h5OjpmaW5pc2hBbGxSZW5kZXJpbmdP
bkNDVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50KiBjb21wbGV0aW9uKQogewogICAgIFRSQUNFX0VW
RU5UKCJDQ1RocmVhZFByb3h5OjpmaW5pc2hBbGxSZW5kZXJpbmdPbkNDVGhyZWFkIiwgdGhpcywg
MCk7CkBAIC00MzksNyArNDIyLDcgQEAgdm9pZCBDQ1RocmVhZFByb3h5Ojppbml0aWFsaXplSW1w
bE9uQ0NUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqIGNvbXBsZXRpb24pCiB7CiAgICAgVFJBQ0Vf
RVZFTlQoIkNDVGhyZWFkUHJveHk6OmluaXRpYWxpemVJbXBsT25DQ1RocmVhZCIsIHRoaXMsIDAp
OwogICAgIEFTU0VSVChpc0ltcGxUaHJlYWQoKSk7Ci0gICAgbV9sYXllclRyZWVIb3N0SW1wbCA9
IG1fbGF5ZXJUcmVlSG9zdC0+Y3JlYXRlTGF5ZXJUcmVlSG9zdEltcGwoKTsKKyAgICBtX2xheWVy
VHJlZUhvc3RJbXBsID0gbV9sYXllclRyZWVIb3N0LT5jcmVhdGVMYXllclRyZWVIb3N0SW1wbCh0
aGlzKTsKICAgICBtX3NjaGVkdWxlckNsaWVudE9uQ0NUaHJlYWQgPSBDQ1RocmVhZFByb3h5U2No
ZWR1bGVyQ2xpZW50OjpjcmVhdGUodGhpcyk7CiAgICAgbV9zY2hlZHVsZXJPbkNDVGhyZWFkID0g
Q0NTY2hlZHVsZXI6OmNyZWF0ZShtX3NjaGVkdWxlckNsaWVudE9uQ0NUaHJlYWQuZ2V0KCkpOwog
ICAgIGNvbXBsZXRpb24tPnNpZ25hbCgpOwpAQCAtNDU0LDggKzQzNyw3IEBAIHZvaWQgQ0NUaHJl
YWRQcm94eTo6aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXJPbkNDVGhyZWFkKEdyYXBoaWNzQ29udGV4
dDNEKiBjb250ZXh0CiAgICAgaWYgKCppbml0aWFsaXplU3VjY2VlZGVkKQogICAgICAgICAqY2Fw
YWJpbGl0aWVzID0gbV9sYXllclRyZWVIb3N0SW1wbC0+bGF5ZXJSZW5kZXJlckNhcGFiaWxpdGll
cygpOwogCi0gICAgbV9zY3JvbGxDb250cm9sbGVyQWRhcHRlck9uQ0NUaHJlYWQgPSBDQ1RocmVh
ZFByb3h5U2Nyb2xsQ29udHJvbGxlckFkYXB0ZXI6OmNyZWF0ZSh0aGlzKTsKLSAgICBtX2lucHV0
SGFuZGxlck9uQ0NUaHJlYWQgPSBDQ0lucHV0SGFuZGxlcjo6Y3JlYXRlKG1fc2Nyb2xsQ29udHJv
bGxlckFkYXB0ZXJPbkNDVGhyZWFkLmdldCgpKTsKKyAgICBtX2lucHV0SGFuZGxlck9uQ0NUaHJl
YWQgPSBDQ0lucHV0SGFuZGxlcjo6Y3JlYXRlKHRoaXMpOwogICAgICpjb21wb3NpdG9ySWRlbnRp
ZmllciA9IG1faW5wdXRIYW5kbGVyT25DQ1RocmVhZC0+aWRlbnRpZmllcigpOwogCiAgICAgY29t
cGxldGlvbi0+c2lnbmFsKCk7CkBAIC00NjgsNyArNDUwLDYgQEAgdm9pZCBDQ1RocmVhZFByb3h5
OjpsYXllclRyZWVIb3N0Q2xvc2VkT25DQ1RocmVhZChDQ0NvbXBsZXRpb25FdmVudCogY29tcGxl
dGlvbikKICAgICBtX2xheWVyVHJlZUhvc3QtPmRlbGV0ZUNvbnRlbnRzVGV4dHVyZXNPbkNDVGhy
ZWFkKG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRlbnRzVGV4dHVyZUFsbG9jYXRvcigpKTsKICAg
ICBtX2xheWVyVHJlZUhvc3RJbXBsLmNsZWFyKCk7CiAgICAgbV9pbnB1dEhhbmRsZXJPbkNDVGhy
ZWFkLmNsZWFyKCk7Ci0gICAgbV9zY3JvbGxDb250cm9sbGVyQWRhcHRlck9uQ0NUaHJlYWQuY2xl
YXIoKTsKICAgICBjb21wbGV0aW9uLT5zaWduYWwoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94
eS5oCmluZGV4IDhiZWY2ODJkZGEyYjlhYzQyYzVmMzNhNmI1MTZhMzNmMzQ5ZGEyMDAuLmE3OWQ2
MzVhMjY0NGJkMDE1YzY5NDhkOWZhOWEyMmQ3OTI1NTI5MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFBy
b3h5LmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJjYy9DQ0xheWVyVHJlZUhvc3RJbXBs
LmgiCiAjaW5jbHVkZSAiY2MvQ0NNYWluVGhyZWFkLmgiCiAjaW5jbHVkZSAiY2MvQ0NQcm94eS5o
IgorI2luY2x1ZGUgImNjL0NDU2Nyb2xsQ29udHJvbGxlci5oIgogI2luY2x1ZGUgPHd0Zi9Pd25Q
dHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDAsNyArNDEsNyBAQCBjbGFzcyBDQ1Ro
cmVhZDsKIGNsYXNzIENDVGhyZWFkUHJveHlTY2hlZHVsZXJDbGllbnQ7CiBjbGFzcyBDQ1RocmVh
ZFByb3h5U2Nyb2xsQ29udHJvbGxlckFkYXB0ZXI7CiAKLWNsYXNzIENDVGhyZWFkUHJveHkgOiBw
dWJsaWMgQ0NQcm94eSB7CitjbGFzcyBDQ1RocmVhZFByb3h5IDogcHVibGljIENDUHJveHksIEND
TGF5ZXJUcmVlSG9zdEltcGxDbGllbnQsIENDU2Nyb2xsQ29udHJvbGxlciB7CiAgICAgZnJpZW5k
IGNsYXNzIENDVGhyZWFkUHJveHlTY2hlZHVsZXJDbGllbnQ7CiAgICAgZnJpZW5kIGNsYXNzIEND
VGhyZWFkUHJveHlTY3JvbGxDb250cm9sbGVyQWRhcHRlcjsKIHB1YmxpYzoKQEAgLTY1LDYgKzY2
LDE0IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc3RhcnQoKTsKICAgICB2aXJ0dWFsIHZv
aWQgc3RvcCgpOwogCisgICAgLy8gQ0NMYXllclRyZWVIb3N0SW1wbENsaWVudCBpbXBsZW1lbnRh
dGlvbgorICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc1JlZHJhd09uSW1wbFRocmVhZCgpIHsgc2V0
TmVlZHNSZWRyYXdPbkNDVGhyZWFkKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNDb21t
aXRPbkltcGxUaHJlYWQoKSB7IHNldE5lZWRzQ29tbWl0T25JbXBsVGhyZWFkKCk7IH0KKworCisg
ICAgLy8gQ0NTY3JvbGxDb250cm9sbGVyIGltcGxlbWVudGF0aW9uCisgICAgdmlydHVhbCB2b2lk
IHNjcm9sbFJvb3RMYXllck9uSW1wbFRocmVhZChjb25zdCBJbnRTaXplJik7CisKIHByaXZhdGU6
CiAgICAgZXhwbGljaXQgQ0NUaHJlYWRQcm94eShDQ0xheWVyVHJlZUhvc3QqKTsKIApAQCAtMTAw
LDcgKzEwOSw2IEBAIHByaXZhdGU6CiAgICAgaW50IG1fbnVtQmVnaW5GcmFtZUFuZENvbW1pdHNJ
c3N1ZWRPbkNDVGhyZWFkOwogCiAgICAgT3duUHRyPENDSW5wdXRIYW5kbGVyPiBtX2lucHV0SGFu
ZGxlck9uQ0NUaHJlYWQ7Ci0gICAgT3duUHRyPENDVGhyZWFkUHJveHlTY3JvbGxDb250cm9sbGVy
QWRhcHRlcj4gbV9zY3JvbGxDb250cm9sbGVyQWRhcHRlck9uQ0NUaHJlYWQ7CiAKICAgICBPd25Q
dHI8Q0NTY2hlZHVsZXI+IG1fc2NoZWR1bGVyT25DQ1RocmVhZDsKICAgICBPd25QdHI8Q0NUaHJl
YWRQcm94eVNjaGVkdWxlckNsaWVudD4gbV9zY2hlZHVsZXJDbGllbnRPbkNDVGhyZWFkOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCA3NGNjZDllMDEwMzU5OTgzZGNiMWMyMWIwZDQzNDZl
Yjc3YTc3OTAxLi5lOWZiMWFlMWJkZjgxNDhmYjU5MzYyODkxNjFiZDk0ZTE0N2VmNGYzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDExLTEwLTE3ICBOYXQg
RHVjYSAgPG5kdWNhQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIEFsbG93IEND
TGF5ZXJUcmVlSG9zdEltcGwgdG8gY2FsbCBiYWNrIHRvIHByb3h5IHZpYSBDQ0xheWVyVHJlZUhv
c3RJbXBsQ2xpZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD03MDI5MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q0NMYXllclRyZWVIb3N0SW1wbFRlc3Q6OkNDTGF5ZXJUcmVlSG9zdEltcGxUZXN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdEltcGxUZXN0OjpzZXROZWVkc1JlZHJhd09u
SW1wbFRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdDo6
c2V0TmVlZHNDb21taXRPbkltcGxUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6VEVTVF9GKToK
KyAgICAgICAgKiB0ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcDoKKyAgICAgICAgKFdURjo6
TW9ja0xheWVyVHJlZUhvc3RJbXBsOjpjcmVhdGUpOgorICAgICAgICAoV1RGOjpNb2NrTGF5ZXJU
cmVlSG9zdEltcGw6Ok1vY2tMYXllclRyZWVIb3N0SW1wbCk6CisgICAgICAgIChXVEY6Ok1vY2tM
YXllclRyZWVIb3N0OjpjcmVhdGVMYXllclRyZWVIb3N0SW1wbCk6CisKIDIwMTEtMTAtMTIgIEFu
dG9pbmUgTGFib3VyICA8cGltYW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEZpeCBDQ1RocmVh
ZFRlc3Quc3RhcnRQb3N0QW5kV2FpdE9uQ29uZGl0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwCmluZGV4IDg4
OWM2ZTg4ZGNlNzBlOWQ0ZWM1YmM4NDE4MmVkZjVlMTJjMWVmNWQuLmU1YmYzNGU0Yjc2ZThjY2Rl
NWI1NjAzM2I5ODg5ZjEwZTA3NjU3NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwCkBAIC0zNCwxNCArMzQs
MTkgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSB7CiAKLWNsYXNzIEND
TGF5ZXJUcmVlSG9zdEltcGxUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgeworY2xhc3MgQ0NM
YXllclRyZWVIb3N0SW1wbFRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCwgQ0NMYXllclRyZWVI
b3N0SW1wbENsaWVudCB7CiBwdWJsaWM6CiAgICAgQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QoKQor
ICAgICAgICA6IG1fZGlkUmVxdWVzdENvbW1pdChmYWxzZSkKKyAgICAgICAgLCBtX2RpZFJlcXVl
c3RSZWRyYXcoZmFsc2UpCiAgICAgewogICAgICAgICBDQ1NldHRpbmdzIHNldHRpbmdzOwotICAg
ICAgICBtX2hvc3RJbXBsID0gQ0NMYXllclRyZWVIb3N0SW1wbDo6Y3JlYXRlKHNldHRpbmdzKTsK
KyAgICAgICAgbV9ob3N0SW1wbCA9IENDTGF5ZXJUcmVlSG9zdEltcGw6OmNyZWF0ZShzZXR0aW5n
cywgdGhpcyk7CiAgICAgfQogCisgICAgdmlydHVhbCB2b2lkIHNldE5lZWRzUmVkcmF3T25JbXBs
VGhyZWFkKCkgeyBtX2RpZFJlcXVlc3RSZWRyYXcgPSB0cnVlOyB9CisgICAgdmlydHVhbCB2b2lk
IHNldE5lZWRzQ29tbWl0T25JbXBsVGhyZWFkKCkgeyBtX2RpZFJlcXVlc3RDb21taXQgPSB0cnVl
OyB9CisKICAgICBzdGF0aWMgdm9pZCBleHBlY3RDbGVhcmVkU2Nyb2xsRGVsdGFzUmVjdXJzaXZl
KENDTGF5ZXJJbXBsKiBsYXllcikKICAgICB7CiAgICAgICAgIEFTU0VSVF9FUShsYXllci0+c2Ny
b2xsRGVsdGEoKSwgSW50U2l6ZSgpKTsKQEAgLTYzLDkgKzY4LDEyIEBAIHB1YmxpYzoKICAgICAg
ICAgQVNTRVJUX0VRKHRpbWVzRW5jb3VudGVyZWQsIDEpOwogICAgIH0KIAorCiBwcm90ZWN0ZWQ6
CiAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIG1fYWx3YXlzSW1wbFRocmVhZDsKICAgICBP
d25QdHI8Q0NMYXllclRyZWVIb3N0SW1wbD4gbV9ob3N0SW1wbDsKKyAgICBib29sIG1fZGlkUmVx
dWVzdENvbW1pdDsKKyAgICBib29sIG1fZGlkUmVxdWVzdFJlZHJhdzsKIH07CiAKIFRFU1RfRihD
Q0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgc2Nyb2xsRGVsdGFOb0xheWVycykKQEAgLTEzMiw0ICsx
NDAsMTUgQEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBzY3JvbGxEZWx0YVJlcGVh
dGVkU2Nyb2xscykKICAgICBleHBlY3RDbGVhcmVkU2Nyb2xsRGVsdGFzUmVjdXJzaXZlKHJvb3Qu
Z2V0KCkpOwogfQogCitURVNUX0YoQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QsIHNjcm9sbFJvb3RD
YWxsc0NvbW1pdEFuZFJlZHJhdykKK3sKKyAgICBSZWZQdHI8Q0NMYXllckltcGw+IHJvb3QgPSBD
Q0xheWVySW1wbDo6Y3JlYXRlKDApOworICAgIHJvb3QtPnNldFNjcm9sbFBvc2l0aW9uKEludFBv
aW50KDAsIDApKTsKKyAgICByb290LT5zZXRNYXhTY3JvbGxQb3NpdGlvbihJbnRTaXplKDEwMCwg
MTAwKSk7CisgICAgbV9ob3N0SW1wbC0+c2V0Um9vdExheWVyKHJvb3QpOworICAgIG1faG9zdElt
cGwtPnNjcm9sbFJvb3RMYXllcihJbnRTaXplKDAsIDEwKSk7CisgICAgQVNTRVJUKG1fZGlkUmVx
dWVzdFJlZHJhdyk7CisgICAgQVNTRVJUKG1fZGlkUmVxdWVzdENvbW1pdCk7Cit9CisKIH0gLy8g
bmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5
ZXJUcmVlSG9zdFRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVy
VHJlZUhvc3RUZXN0LmNwcAppbmRleCA2NTZkOGQ2NjRhZjhkMWFmNzFmOWE3ZTgyZTMxOWRlNjY0
YmMzYmVjLi4yMTNhMWM0NjdkZDVmMDA3ZWFiOTU0NzExMDQ1MDYxOTVmNTZjYTdhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5j
cHAKQEAgLTY0LDkgKzY0LDkgQEAgcHVibGljOgogLy8gQWRhcHRzIENDTGF5ZXJUcmVlSG9zdElt
cGwgZm9yIHRlc3QuIFJ1bnMgcmVhbCBjb2RlLCB0aGVuIGludm9rZXMgdGVzdCBob29rcy4KIGNs
YXNzIE1vY2tMYXllclRyZWVIb3N0SW1wbCA6IHB1YmxpYyBDQ0xheWVyVHJlZUhvc3RJbXBsIHsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxNb2NrTGF5ZXJUcmVlSG9zdEltcGw+IGNy
ZWF0ZShUZXN0SG9va3MqIHRlc3RIb29rcywgY29uc3QgQ0NTZXR0aW5ncyYgc2V0dGluZ3MpCisg
ICAgc3RhdGljIFBhc3NPd25QdHI8TW9ja0xheWVyVHJlZUhvc3RJbXBsPiBjcmVhdGUoVGVzdEhv
b2tzKiB0ZXN0SG9va3MsIGNvbnN0IENDU2V0dGluZ3MmIHNldHRpbmdzLCBDQ0xheWVyVHJlZUhv
c3RJbXBsQ2xpZW50KiBjbGllbnQpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3
IE1vY2tMYXllclRyZWVIb3N0SW1wbCh0ZXN0SG9va3MsIHNldHRpbmdzKSk7CisgICAgICAgIHJl
dHVybiBhZG9wdFB0cihuZXcgTW9ja0xheWVyVHJlZUhvc3RJbXBsKHRlc3RIb29rcywgc2V0dGlu
Z3MsIGNsaWVudCkpOwogICAgIH0KIAogICAgIHZpcnR1YWwgdm9pZCBiZWdpbkNvbW1pdCgpCkBA
IC04OCw4ICs4OCw4IEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgTW9ja0xheWVy
VHJlZUhvc3RJbXBsKFRlc3RIb29rcyogdGVzdEhvb2tzLCBjb25zdCBDQ1NldHRpbmdzJiBzZXR0
aW5ncykKLSAgICAgICAgOiBDQ0xheWVyVHJlZUhvc3RJbXBsKHNldHRpbmdzKQorICAgIE1vY2tM
YXllclRyZWVIb3N0SW1wbChUZXN0SG9va3MqIHRlc3RIb29rcywgY29uc3QgQ0NTZXR0aW5ncyYg
c2V0dGluZ3MsIENDTGF5ZXJUcmVlSG9zdEltcGxDbGllbnQqIGNsaWVudCkKKyAgICAgICAgOiBD
Q0xheWVyVHJlZUhvc3RJbXBsKHNldHRpbmdzLCBjbGllbnQpCiAgICAgICAgICwgbV90ZXN0SG9v
a3ModGVzdEhvb2tzKQogICAgIHsKICAgICB9CkBAIC0xMDUsOSArMTA1LDkgQEAgcHVibGljOgog
ICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1vY2tMYXllclRyZWVIb3N0KHRlc3RIb29rcywg
Y2xpZW50LCByb290TGF5ZXIsIHNldHRpbmdzKSk7CiAgICAgfQogCi0gICAgdmlydHVhbCBQYXNz
T3duUHRyPENDTGF5ZXJUcmVlSG9zdEltcGw+IGNyZWF0ZUxheWVyVHJlZUhvc3RJbXBsKCkKKyAg
ICB2aXJ0dWFsIFBhc3NPd25QdHI8Q0NMYXllclRyZWVIb3N0SW1wbD4gY3JlYXRlTGF5ZXJUcmVl
SG9zdEltcGwoQ0NMYXllclRyZWVIb3N0SW1wbENsaWVudCogY2xpZW50KQogICAgIHsKLSAgICAg
ICAgcmV0dXJuIE1vY2tMYXllclRyZWVIb3N0SW1wbDo6Y3JlYXRlKG1fdGVzdEhvb2tzLCBzZXR0
aW5ncygpKTsKKyAgICAgICAgcmV0dXJuIE1vY2tMYXllclRyZWVIb3N0SW1wbDo6Y3JlYXRlKG1f
dGVzdEhvb2tzLCBzZXR0aW5ncygpLCBjbGllbnQpOwogICAgIH0KIAogcHJpdmF0ZToK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>111360</attachid>
            <date>2011-10-17 18:01:48 -0700</date>
            <delta_ts>2011-10-17 18:21:50 -0700</delta_ts>
            <desc>Make LTHI the scroll controller.</desc>
            <filename>bug-70291-20111017180147.patch</filename>
            <type>text/plain</type>
            <size>18087</size>
            <attacher name="Nat Duca">nduca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTczMzMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA1ZmM3MjA5ZTFjZjJkMDk1
Yzc1MzlmMTk3YWRlZjljYzVlNjVjNjM5Li5iNWFhMTg5Y2M4MGIwMGM0MzdkMjIyNjcyNTU2MGQy
MzYwZjUwYzI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzMgQEAKKzIwMTEtMTAtMTcgIE5hdCBE
dWNhICA8bmR1Y2FAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gQWxsb3cgQ0NM
YXllclRyZWVIb3N0SW1wbCB0byBjYWxsIGJhY2sgdG8gcHJveHkgdmlhIENDTGF5ZXJUcmVlSG9z
dEltcGxDbGllbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTcwMjkxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0OjpjcmVhdGVMYXllclRyZWVIb3N0SW1w
bCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVI
b3N0Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRy
ZWVIb3N0SW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3RJbXBsOjpj
cmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0SW1wbDo6Q0NMYXllclRy
ZWVIb3N0SW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3RJbXBsOjpzY3Jv
bGxSb290TGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
TGF5ZXJUcmVlSG9zdEltcGwuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1Njcm9sbENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkND
U2luZ2xlVGhyZWFkUHJveHk6OnN0YXJ0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5Lmg6CisgICAgICAgIChXZWJDb3JlOjpDQ1Np
bmdsZVRocmVhZFByb3h5OjpzZXROZWVkc1JlZHJhd09uSW1wbFRocmVhZCk6CisgICAgICAgIChX
ZWJDb3JlOjpDQ1NpbmdsZVRocmVhZFByb3h5OjpzZXROZWVkc0NvbW1pdE9uSW1wbFRocmVhZCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpzY3JvbGxSb290TGF5ZXJPbklt
cGxUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6aW5pdGlhbGl6ZUlt
cGxPbkNDVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OmluaXRpYWxp
emVMYXllclJlbmRlcmVyT25DQ1RocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFBy
b3h5OjpsYXllclRyZWVIb3N0Q2xvc2VkT25DQ1RocmVhZCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oOgorICAgICAgICAoV2ViQ29yZTo6
Q0NUaHJlYWRQcm94eTo6c2V0TmVlZHNSZWRyYXdPbkltcGxUaHJlYWQpOgorICAgICAgICAoV2Vi
Q29yZTo6Q0NUaHJlYWRQcm94eTo6c2V0TmVlZHNDb21taXRPbkltcGxUaHJlYWQpOgorCiAyMDEx
LTEwLTEyICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmVtb3Zl
IEVOQUJMRShYSFRNTE1QKSBhbmQgYXNzb2NpYXRlZCBjb2RlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRy
ZWVIb3N0LmNwcAppbmRleCAzNWM1NDM4NzkwN2JlYjAyZGQ2OWY3Mjk2Y2E4ZTI0ZGZiNmFlYjM5
Li45MGQ0Yjc3NDEzNzE4M2ZkYTBhYmI5NmM2OGNjNWM0OTk5N2IwZWJhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhv
c3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDTGF5ZXJUcmVlSG9zdC5jcHAKQEAgLTE1Myw5ICsxNTMsOSBAQCBQYXNzUmVmUHRyPEdyYXBo
aWNzQ29udGV4dDNEPiBDQ0xheWVyVHJlZUhvc3Q6OmNyZWF0ZUxheWVyVHJlZUhvc3RDb250ZXh0
M0QoKQogICAgIHJldHVybiBtX2NsaWVudC0+Y3JlYXRlTGF5ZXJUcmVlSG9zdENvbnRleHQzRCgp
OwogfQogCi1QYXNzT3duUHRyPENDTGF5ZXJUcmVlSG9zdEltcGw+IENDTGF5ZXJUcmVlSG9zdDo6
Y3JlYXRlTGF5ZXJUcmVlSG9zdEltcGwoKQorUGFzc093blB0cjxDQ0xheWVyVHJlZUhvc3RJbXBs
PiBDQ0xheWVyVHJlZUhvc3Q6OmNyZWF0ZUxheWVyVHJlZUhvc3RJbXBsKENDTGF5ZXJUcmVlSG9z
dEltcGxDbGllbnQqIGNsaWVudCkKIHsKLSAgICByZXR1cm4gQ0NMYXllclRyZWVIb3N0SW1wbDo6
Y3JlYXRlKG1fc2V0dGluZ3MpOworICAgIHJldHVybiBDQ0xheWVyVHJlZUhvc3RJbXBsOjpjcmVh
dGUobV9zZXR0aW5ncywgY2xpZW50KTsKIH0KIAogdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OmRpZFJl
Y3JlYXRlR3JhcGhpY3NDb250ZXh0KGJvb2wgc3VjY2VzcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVI
b3N0LmgKaW5kZXggNzBiNjM5NjhlOTUxNGI4ZDZiOTg1MTdiZTkzZTdkNjViMjliNzE1Yy4uYjBk
M2JiZmZlYjUwZmQ3M2Y0ODdkN2E3NjQ4MGIxODQyMjFiY2RhOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
clRyZWVIb3N0LmgKQEAgLTEwMCw3ICsxMDAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjb21taXRD
b21wbGV0ZSgpOwogICAgIHZvaWQgY29tbWl0VG9PbkNDVGhyZWFkKENDTGF5ZXJUcmVlSG9zdElt
cGwqKTsKICAgICBQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjcmVhdGVMYXllclRyZWVI
b3N0Q29udGV4dDNEKCk7Ci0gICAgdmlydHVhbCBQYXNzT3duUHRyPENDTGF5ZXJUcmVlSG9zdElt
cGw+IGNyZWF0ZUxheWVyVHJlZUhvc3RJbXBsKCk7CisgICAgdmlydHVhbCBQYXNzT3duUHRyPEND
TGF5ZXJUcmVlSG9zdEltcGw+IGNyZWF0ZUxheWVyVHJlZUhvc3RJbXBsKENDTGF5ZXJUcmVlSG9z
dEltcGxDbGllbnQqKTsKICAgICB2b2lkIGRpZFJlY3JlYXRlR3JhcGhpY3NDb250ZXh0KGJvb2wg
c3VjY2Vzcyk7CiAgICAgdm9pZCBkZWxldGVDb250ZW50c1RleHR1cmVzT25DQ1RocmVhZChUZXh0
dXJlQWxsb2NhdG9yKik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAK
aW5kZXggYTMzOTkwODE2YTk0ZTBjMjliNzljMGJlMzQ3NjU0ZDkzMGIzYjE1Yi4uMzgyNGRkZDk0
NGM3NGU3ZGExYjg1N2QyOGMxMjQ2MWRiMzE3MTdlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
clRyZWVIb3N0SW1wbC5jcHAKQEAgLTM4LDEzICszOCwxNCBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLVBhc3NPd25QdHI8Q0NMYXllclRyZWVIb3N0SW1wbD4gQ0NMYXllclRyZWVIb3N0SW1w
bDo6Y3JlYXRlKGNvbnN0IENDU2V0dGluZ3MmIHNldHRpbmdzKQorUGFzc093blB0cjxDQ0xheWVy
VHJlZUhvc3RJbXBsPiBDQ0xheWVyVHJlZUhvc3RJbXBsOjpjcmVhdGUoY29uc3QgQ0NTZXR0aW5n
cyYgc2V0dGluZ3MsIENDTGF5ZXJUcmVlSG9zdEltcGxDbGllbnQqIGNsaWVudCkKIHsKLSAgICBy
ZXR1cm4gYWRvcHRQdHIobmV3IENDTGF5ZXJUcmVlSG9zdEltcGwoc2V0dGluZ3MpKTsKKyAgICBy
ZXR1cm4gYWRvcHRQdHIobmV3IENDTGF5ZXJUcmVlSG9zdEltcGwoc2V0dGluZ3MsIGNsaWVudCkp
OwogfQogCi1DQ0xheWVyVHJlZUhvc3RJbXBsOjpDQ0xheWVyVHJlZUhvc3RJbXBsKGNvbnN0IEND
U2V0dGluZ3MmIHNldHRpbmdzKQotICAgIDogbV9zb3VyY2VGcmFtZU51bWJlcigtMSkKK0NDTGF5
ZXJUcmVlSG9zdEltcGw6OkNDTGF5ZXJUcmVlSG9zdEltcGwoY29uc3QgQ0NTZXR0aW5ncyYgc2V0
dGluZ3MsIENDTGF5ZXJUcmVlSG9zdEltcGxDbGllbnQqIGNsaWVudCkKKyAgICA6IG1fY2xpZW50
KGNsaWVudCkKKyAgICAsIG1fc291cmNlRnJhbWVOdW1iZXIoLTEpCiAgICAgLCBtX2ZyYW1lTnVt
YmVyKDApCiAgICAgLCBtX3NldHRpbmdzKHNldHRpbmdzKQogewpAQCAtMTY2LDYgKzE2Nyw4IEBA
IHZvaWQgQ0NMYXllclRyZWVIb3N0SW1wbDo6c2Nyb2xsUm9vdExheWVyKGNvbnN0IEludFNpemUm
IHNjcm9sbERlbHRhKQogICAgICAgICByZXR1cm47CiAKICAgICBtX3Jvb3RMYXllckltcGwtPnNj
cm9sbEJ5KHNjcm9sbERlbHRhKTsKKyAgICBtX2NsaWVudC0+c2V0TmVlZHNDb21taXRPbkltcGxU
aHJlYWQoKTsKKyAgICBtX2NsaWVudC0+c2V0TmVlZHNSZWRyYXdPbkltcGxUaHJlYWQoKTsKIH0K
IAogUGFzc093blB0cjxDQ1Njcm9sbFVwZGF0ZVNldD4gQ0NMYXllclRyZWVIb3N0SW1wbDo6cHJv
Y2Vzc1Njcm9sbERlbHRhcygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgKaW5k
ZXggZDBmZjhjZTg0MWJjYzkwMzc3NjVjZTVkMzYyMmZiMTE3NjRhZTBkMS4uM2JhMzdjOThmMTRi
M2I0OThiNDg3ZTUxZDU0ZGIxYzFlZDg1MjdhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVl
SG9zdEltcGwuaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaW5jbHVkZSAiY2MvQ0NMYXllclRyZWVI
b3N0LmgiCiAjaW5jbHVkZSAiY2MvQ0NMYXllclRyZWVIb3N0Q29tbW9uLmgiCisjaW5jbHVkZSAi
Y2MvQ0NTY3JvbGxDb250cm9sbGVyLmgiCiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiAjaWYg
VVNFKFNLSUEpCkBAIC00MiwxMSArNDMsMTggQEAgY2xhc3MgVGV4dHVyZUFsbG9jYXRvcjsKIHN0
cnVjdCBMYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzOwogY2xhc3MgVHJhbnNmb3JtYXRpb25NYXRy
aXg7CiAKKy8vIENDTGF5ZXJUcmVlSG9zdC0+Q0NQcm94eSBjYWxsYmFjayBpbnRlcmZhY2UuCitj
bGFzcyBDQ0xheWVyVHJlZUhvc3RJbXBsQ2xpZW50IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIHZv
aWQgc2V0TmVlZHNSZWRyYXdPbkltcGxUaHJlYWQoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNl
dE5lZWRzQ29tbWl0T25JbXBsVGhyZWFkKCkgPSAwOworfTsKKwogLy8gQ0NMYXllclRyZWVIb3N0
SW1wbCBvd25zIHRoZSBDQ0xheWVySW1wbCB0cmVlIGFzIHdlbGwgYXMgYXNzb2NpYXRlZCByZW5k
ZXJpbmcgc3RhdGUKLWNsYXNzIENDTGF5ZXJUcmVlSG9zdEltcGwgeworY2xhc3MgQ0NMYXllclRy
ZWVIb3N0SW1wbCA6IHB1YmxpYyBDQ1Njcm9sbENvbnRyb2xsZXIgewogICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKENDTGF5ZXJUcmVlSG9zdEltcGwpOwogcHVibGljOgotICAgIHN0YXRpYyBQYXNz
T3duUHRyPENDTGF5ZXJUcmVlSG9zdEltcGw+IGNyZWF0ZShjb25zdCBDQ1NldHRpbmdzJik7Cisg
ICAgc3RhdGljIFBhc3NPd25QdHI8Q0NMYXllclRyZWVIb3N0SW1wbD4gY3JlYXRlKGNvbnN0IEND
U2V0dGluZ3MmLCBDQ0xheWVyVHJlZUhvc3RJbXBsQ2xpZW50Kik7CiAgICAgdmlydHVhbCB+Q0NM
YXllclRyZWVIb3N0SW1wbCgpOwogCiAgICAgLy8gVmlydHVhbCBmb3IgdGVzdGluZwpAQCAtODgs
NyArOTYsOCBAQCBwdWJsaWM6CiAgICAgUGFzc093blB0cjxDQ1Njcm9sbFVwZGF0ZVNldD4gcHJv
Y2Vzc1Njcm9sbERlbHRhcygpOwogCiBwcm90ZWN0ZWQ6Ci0gICAgZXhwbGljaXQgQ0NMYXllclRy
ZWVIb3N0SW1wbChjb25zdCBDQ1NldHRpbmdzJik7CisgICAgZXhwbGljaXQgQ0NMYXllclRyZWVI
b3N0SW1wbChjb25zdCBDQ1NldHRpbmdzJiwgQ0NMYXllclRyZWVIb3N0SW1wbENsaWVudCopOwor
ICAgIENDTGF5ZXJUcmVlSG9zdEltcGxDbGllbnQqIG1fY2xpZW50OwogICAgIGludCBtX3NvdXJj
ZUZyYW1lTnVtYmVyOwogICAgIGludCBtX2ZyYW1lTnVtYmVyOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFBy
b3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
U2luZ2xlVGhyZWFkUHJveHkuY3BwCmluZGV4IDYwZTQ3OTUyZThhNWUxOWU1NjY3ODhjNGYxZjgw
NDYxZDhjNmQ3YTMuLjc4NWFkNjJmNWVlZWIxMjY0NzI2NTU5MzZjNDk4NjFhODU0NTdkN2QgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
U2luZ2xlVGhyZWFkUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwCkBAIC01Nyw3ICs1Nyw3IEBA
IENDU2luZ2xlVGhyZWFkUHJveHk6OkNDU2luZ2xlVGhyZWFkUHJveHkoQ0NMYXllclRyZWVIb3N0
KiBsYXllclRyZWVIb3N0KQogdm9pZCBDQ1NpbmdsZVRocmVhZFByb3h5OjpzdGFydCgpCiB7CiAg
ICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGw7Ci0gICAgbV9sYXllclRyZWVIb3N0SW1w
bCA9IG1fbGF5ZXJUcmVlSG9zdC0+Y3JlYXRlTGF5ZXJUcmVlSG9zdEltcGwoKTsKKyAgICBtX2xh
eWVyVHJlZUhvc3RJbXBsID0gbV9sYXllclRyZWVIb3N0LT5jcmVhdGVMYXllclRyZWVIb3N0SW1w
bCh0aGlzKTsKIH0KIAogQ0NTaW5nbGVUaHJlYWRQcm94eTo6fkNDU2luZ2xlVGhyZWFkUHJveHko
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oCmluZGV4IDI4NGRmMDViMWI5ODQw
MjliNjY0MzMxNzA3MDhkMTliNTQ1ZGQ2NDYuLmFjOTdlYTdiMDgwOTU1ODc2ZDM3ZTRlNTgwMDEw
MmVjYWE5MmMwYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmgKQEAgLTM0
LDcgKzM0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDQ0xheWVyVHJlZUhvc3Q7
CiAKLWNsYXNzIENDU2luZ2xlVGhyZWFkUHJveHkgOiBwdWJsaWMgQ0NQcm94eSB7CitjbGFzcyBD
Q1NpbmdsZVRocmVhZFByb3h5IDogcHVibGljIENDUHJveHksIENDTGF5ZXJUcmVlSG9zdEltcGxD
bGllbnQgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzT3duUHRyPENDUHJveHk+IGNyZWF0ZShD
Q0xheWVyVHJlZUhvc3QqKTsKICAgICB2aXJ0dWFsIH5DQ1NpbmdsZVRocmVhZFByb3h5KCk7CkBA
IC01NCw2ICs1NCwxMCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHN0YXJ0KCk7CiAgICAg
dmlydHVhbCB2b2lkIHN0b3AoKTsKIAorICAgIC8vIENDTGF5ZXJUcmVlSG9zdEltcGxDbGllbnQg
aW1wbGVtZW50YXRpb24KKyAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNSZWRyYXdPbkltcGxUaHJl
YWQoKSB7IG1fbGF5ZXJUcmVlSG9zdC0+c2V0TmVlZHNDb21taXRUaGVuUmVkcmF3KCk7IH0KKyAg
ICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNDb21taXRPbkltcGxUaHJlYWQoKSB7IG1fbGF5ZXJUcmVl
SG9zdC0+c2V0TmVlZHNDb21taXRUaGVuUmVkcmF3KCk7IH0KKwogICAgIC8vIENhbGxlZCBieSB0
aGUgbGVnYWN5IHBhdGggd2hlcmUgUmVuZGVyV2lkZ2V0IGRvZXMgdGhlIHNjaGVkdWxpbmcuCiAg
ICAgdm9pZCBjb21wb3NpdGVJbW1lZGlhdGVseSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHku
Y3BwCmluZGV4IDllZTE2NGE1Y2VmMmI1Y2FiY2VlM2VjYzVmN2QxZDQxNzljOTczM2YuLjNhNWE5
NzU2NDk2NjNiNmI3YmRlYWRhZjFjZjljNDI0NDgzMTBkNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFk
UHJveHkuY3BwCkBAIC0zMiw3ICszMiw2IEBACiAjaW5jbHVkZSAiY2MvQ0NMYXllclRyZWVIb3N0
LmgiCiAjaW5jbHVkZSAiY2MvQ0NNYWluVGhyZWFkVGFzay5oIgogI2luY2x1ZGUgImNjL0NDU2No
ZWR1bGVyLmgiCi0jaW5jbHVkZSAiY2MvQ0NTY3JvbGxDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAi
Y2MvQ0NUaHJlYWRUYXNrLmgiCiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAjaW5jbHVk
ZSA8d3RmL01haW5UaHJlYWQuaD4KQEAgLTc4LDMwICs3Nyw2IEBAIHByaXZhdGU6CiAgICAgQ0NU
aHJlYWRQcm94eSogbV9wcm94eTsKIH07CiAKLWNsYXNzIENDVGhyZWFkUHJveHlTY3JvbGxDb250
cm9sbGVyQWRhcHRlciA6IHB1YmxpYyBDQ1Njcm9sbENvbnRyb2xsZXIgewotcHVibGljOgotICAg
IHN0YXRpYyBQYXNzT3duUHRyPENDVGhyZWFkUHJveHlTY3JvbGxDb250cm9sbGVyQWRhcHRlcj4g
Y3JlYXRlKENDVGhyZWFkUHJveHkqIHByb3h5KQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0
UHRyKG5ldyBDQ1RocmVhZFByb3h5U2Nyb2xsQ29udHJvbGxlckFkYXB0ZXIocHJveHkpKTsKLSAg
ICB9Ci0gICAgdmlydHVhbCB+Q0NUaHJlYWRQcm94eVNjcm9sbENvbnRyb2xsZXJBZGFwdGVyKCkg
eyB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsUm9vdExheWVyKGNvbnN0IEludFNpemUmIG9m
ZnNldCkKLSAgICB7Ci0gICAgICAgIG1fcHJveHktPm1fbGF5ZXJUcmVlSG9zdEltcGwtPnNjcm9s
bFJvb3RMYXllcihvZmZzZXQpOwotICAgICAgICBtX3Byb3h5LT5zZXROZWVkc1JlZHJhd09uQ0NU
aHJlYWQoKTsKLSAgICAgICAgbV9wcm94eS0+c2V0TmVlZHNDb21taXRPbkNDVGhyZWFkKCk7Ci0g
ICAgfQotCi1wcml2YXRlOgotICAgIGV4cGxpY2l0IENDVGhyZWFkUHJveHlTY3JvbGxDb250cm9s
bGVyQWRhcHRlcihDQ1RocmVhZFByb3h5KiBwcm94eSkKLSAgICB7Ci0gICAgICAgIG1fcHJveHkg
PSBwcm94eTsKLSAgICB9Ci0KLSAgICBDQ1RocmVhZFByb3h5KiBtX3Byb3h5OwotfTsKLQogUGFz
c093blB0cjxDQ1Byb3h5PiBDQ1RocmVhZFByb3h5OjpjcmVhdGUoQ0NMYXllclRyZWVIb3N0KiBs
YXllclRyZWVIb3N0KQogewogICAgIHJldHVybiBhZG9wdFB0cihuZXcgQ0NUaHJlYWRQcm94eShs
YXllclRyZWVIb3N0KSk7CkBAIC00MzksNyArNDE0LDcgQEAgdm9pZCBDQ1RocmVhZFByb3h5Ojpp
bml0aWFsaXplSW1wbE9uQ0NUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqIGNvbXBsZXRpb24pCiB7
CiAgICAgVFJBQ0VfRVZFTlQoIkNDVGhyZWFkUHJveHk6OmluaXRpYWxpemVJbXBsT25DQ1RocmVh
ZCIsIHRoaXMsIDApOwogICAgIEFTU0VSVChpc0ltcGxUaHJlYWQoKSk7Ci0gICAgbV9sYXllclRy
ZWVIb3N0SW1wbCA9IG1fbGF5ZXJUcmVlSG9zdC0+Y3JlYXRlTGF5ZXJUcmVlSG9zdEltcGwoKTsK
KyAgICBtX2xheWVyVHJlZUhvc3RJbXBsID0gbV9sYXllclRyZWVIb3N0LT5jcmVhdGVMYXllclRy
ZWVIb3N0SW1wbCh0aGlzKTsKICAgICBtX3NjaGVkdWxlckNsaWVudE9uQ0NUaHJlYWQgPSBDQ1Ro
cmVhZFByb3h5U2NoZWR1bGVyQ2xpZW50OjpjcmVhdGUodGhpcyk7CiAgICAgbV9zY2hlZHVsZXJP
bkNDVGhyZWFkID0gQ0NTY2hlZHVsZXI6OmNyZWF0ZShtX3NjaGVkdWxlckNsaWVudE9uQ0NUaHJl
YWQuZ2V0KCkpOwogICAgIGNvbXBsZXRpb24tPnNpZ25hbCgpOwpAQCAtNDU0LDggKzQyOSw3IEBA
IHZvaWQgQ0NUaHJlYWRQcm94eTo6aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXJPbkNDVGhyZWFkKEdy
YXBoaWNzQ29udGV4dDNEKiBjb250ZXh0CiAgICAgaWYgKCppbml0aWFsaXplU3VjY2VlZGVkKQog
ICAgICAgICAqY2FwYWJpbGl0aWVzID0gbV9sYXllclRyZWVIb3N0SW1wbC0+bGF5ZXJSZW5kZXJl
ckNhcGFiaWxpdGllcygpOwogCi0gICAgbV9zY3JvbGxDb250cm9sbGVyQWRhcHRlck9uQ0NUaHJl
YWQgPSBDQ1RocmVhZFByb3h5U2Nyb2xsQ29udHJvbGxlckFkYXB0ZXI6OmNyZWF0ZSh0aGlzKTsK
LSAgICBtX2lucHV0SGFuZGxlck9uQ0NUaHJlYWQgPSBDQ0lucHV0SGFuZGxlcjo6Y3JlYXRlKG1f
c2Nyb2xsQ29udHJvbGxlckFkYXB0ZXJPbkNDVGhyZWFkLmdldCgpKTsKKyAgICBtX2lucHV0SGFu
ZGxlck9uQ0NUaHJlYWQgPSBDQ0lucHV0SGFuZGxlcjo6Y3JlYXRlKG1fbGF5ZXJUcmVlSG9zdElt
cGwuZ2V0KCkpOwogICAgICpjb21wb3NpdG9ySWRlbnRpZmllciA9IG1faW5wdXRIYW5kbGVyT25D
Q1RocmVhZC0+aWRlbnRpZmllcigpOwogCiAgICAgY29tcGxldGlvbi0+c2lnbmFsKCk7CkBAIC00
NjgsNyArNDQyLDYgQEAgdm9pZCBDQ1RocmVhZFByb3h5OjpsYXllclRyZWVIb3N0Q2xvc2VkT25D
Q1RocmVhZChDQ0NvbXBsZXRpb25FdmVudCogY29tcGxldGlvbikKICAgICBtX2xheWVyVHJlZUhv
c3QtPmRlbGV0ZUNvbnRlbnRzVGV4dHVyZXNPbkNDVGhyZWFkKG1fbGF5ZXJUcmVlSG9zdEltcGwt
PmNvbnRlbnRzVGV4dHVyZUFsbG9jYXRvcigpKTsKICAgICBtX2xheWVyVHJlZUhvc3RJbXBsLmNs
ZWFyKCk7CiAgICAgbV9pbnB1dEhhbmRsZXJPbkNDVGhyZWFkLmNsZWFyKCk7Ci0gICAgbV9zY3Jv
bGxDb250cm9sbGVyQWRhcHRlck9uQ0NUaHJlYWQuY2xlYXIoKTsKICAgICBjb21wbGV0aW9uLT5z
aWduYWwoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oCmluZGV4IDhiZWY2ODJkZGEyYjlh
YzQyYzVmMzNhNmI1MTZhMzNmMzQ5ZGEyMDAuLjgxODgwOTk3NTM5ZGQ1ZWU2NjRjNjU3N2FlNTEw
MmRlYmEyMjI4ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmgKQEAgLTM4LDExICszOCw5IEBA
IGNsYXNzIENDTGF5ZXJUcmVlSG9zdDsKIGNsYXNzIENDU2NoZWR1bGVyOwogY2xhc3MgQ0NUaHJl
YWQ7CiBjbGFzcyBDQ1RocmVhZFByb3h5U2NoZWR1bGVyQ2xpZW50OwotY2xhc3MgQ0NUaHJlYWRQ
cm94eVNjcm9sbENvbnRyb2xsZXJBZGFwdGVyOwogCi1jbGFzcyBDQ1RocmVhZFByb3h5IDogcHVi
bGljIENDUHJveHkgeworY2xhc3MgQ0NUaHJlYWRQcm94eSA6IHB1YmxpYyBDQ1Byb3h5LCBDQ0xh
eWVyVHJlZUhvc3RJbXBsQ2xpZW50IHsKICAgICBmcmllbmQgY2xhc3MgQ0NUaHJlYWRQcm94eVNj
aGVkdWxlckNsaWVudDsKLSAgICBmcmllbmQgY2xhc3MgQ0NUaHJlYWRQcm94eVNjcm9sbENvbnRy
b2xsZXJBZGFwdGVyOwogcHVibGljOgogICAgIHN0YXRpYyB2b2lkIHNldFRocmVhZChDQ1RocmVh
ZCopOwogCkBAIC02NSw2ICs2MywxMCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHN0YXJ0
KCk7CiAgICAgdmlydHVhbCB2b2lkIHN0b3AoKTsKIAorICAgIC8vIENDTGF5ZXJUcmVlSG9zdElt
cGxDbGllbnQgaW1wbGVtZW50YXRpb24KKyAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNSZWRyYXdP
bkltcGxUaHJlYWQoKSB7IHNldE5lZWRzUmVkcmF3T25DQ1RocmVhZCgpOyB9CisgICAgdmlydHVh
bCB2b2lkIHNldE5lZWRzQ29tbWl0T25JbXBsVGhyZWFkKCkgeyBzZXROZWVkc0NvbW1pdE9uSW1w
bFRocmVhZCgpOyB9CisKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgQ0NUaHJlYWRQcm94eShDQ0xh
eWVyVHJlZUhvc3QqKTsKIApAQCAtMTAwLDcgKzEwMiw2IEBAIHByaXZhdGU6CiAgICAgaW50IG1f
bnVtQmVnaW5GcmFtZUFuZENvbW1pdHNJc3N1ZWRPbkNDVGhyZWFkOwogCiAgICAgT3duUHRyPEND
SW5wdXRIYW5kbGVyPiBtX2lucHV0SGFuZGxlck9uQ0NUaHJlYWQ7Ci0gICAgT3duUHRyPENDVGhy
ZWFkUHJveHlTY3JvbGxDb250cm9sbGVyQWRhcHRlcj4gbV9zY3JvbGxDb250cm9sbGVyQWRhcHRl
ck9uQ0NUaHJlYWQ7CiAKICAgICBPd25QdHI8Q0NTY2hlZHVsZXI+IG1fc2NoZWR1bGVyT25DQ1Ro
cmVhZDsKICAgICBPd25QdHI8Q0NUaHJlYWRQcm94eVNjaGVkdWxlckNsaWVudD4gbV9zY2hlZHVs
ZXJDbGllbnRPbkNDVGhyZWFkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCA3NGNjZDll
MDEwMzU5OTgzZGNiMWMyMWIwZDQzNDZlYjc3YTc3OTAxLi5lOWZiMWFlMWJkZjgxNDhmYjU5MzYy
ODkxNjFiZDk0ZTE0N2VmNGYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDIwIEBACisyMDExLTEwLTE3ICBOYXQgRHVjYSAgPG5kdWNhQGNocm9taXVtLm9yZz4KKworICAg
ICAgICBbY2hyb21pdW1dIEFsbG93IENDTGF5ZXJUcmVlSG9zdEltcGwgdG8gY2FsbCBiYWNrIHRv
IHByb3h5IHZpYSBDQ0xheWVyVHJlZUhvc3RJbXBsQ2xpZW50CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MDI5MQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRl
c3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0SW1wbFRlc3Q6OkNDTGF5
ZXJUcmVlSG9zdEltcGxUZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdElt
cGxUZXN0OjpzZXROZWVkc1JlZHJhd09uSW1wbFRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpD
Q0xheWVyVHJlZUhvc3RJbXBsVGVzdDo6c2V0TmVlZHNDb21taXRPbkltcGxUaHJlYWQpOgorICAg
ICAgICAoV2ViQ29yZTo6VEVTVF9GKToKKyAgICAgICAgKiB0ZXN0cy9DQ0xheWVyVHJlZUhvc3RU
ZXN0LmNwcDoKKyAgICAgICAgKFdURjo6TW9ja0xheWVyVHJlZUhvc3RJbXBsOjpjcmVhdGUpOgor
ICAgICAgICAoV1RGOjpNb2NrTGF5ZXJUcmVlSG9zdEltcGw6Ok1vY2tMYXllclRyZWVIb3N0SW1w
bCk6CisgICAgICAgIChXVEY6Ok1vY2tMYXllclRyZWVIb3N0OjpjcmVhdGVMYXllclRyZWVIb3N0
SW1wbCk6CisKIDIwMTEtMTAtMTIgIEFudG9pbmUgTGFib3VyICA8cGltYW5AY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIEZpeCBDQ1RocmVhZFRlc3Quc3RhcnRQb3N0QW5kV2FpdE9uQ29uZGl0aW9u
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9z
dEltcGxUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVI
b3N0SW1wbFRlc3QuY3BwCmluZGV4IDg4OWM2ZTg4ZGNlNzBlOWQ0ZWM1YmM4NDE4MmVkZjVlMTJj
MWVmNWQuLmU1YmYzNGU0Yjc2ZThjY2RlNWI1NjAzM2I5ODg5ZjEwZTA3NjU3NzUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1w
bFRlc3QuY3BwCkBAIC0zNCwxNCArMzQsMTkgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAK
IG5hbWVzcGFjZSB7CiAKLWNsYXNzIENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0IDogcHVibGljIHRl
c3Rpbmc6OlRlc3QgeworY2xhc3MgQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QgOiBwdWJsaWMgdGVz
dGluZzo6VGVzdCwgQ0NMYXllclRyZWVIb3N0SW1wbENsaWVudCB7CiBwdWJsaWM6CiAgICAgQ0NM
YXllclRyZWVIb3N0SW1wbFRlc3QoKQorICAgICAgICA6IG1fZGlkUmVxdWVzdENvbW1pdChmYWxz
ZSkKKyAgICAgICAgLCBtX2RpZFJlcXVlc3RSZWRyYXcoZmFsc2UpCiAgICAgewogICAgICAgICBD
Q1NldHRpbmdzIHNldHRpbmdzOwotICAgICAgICBtX2hvc3RJbXBsID0gQ0NMYXllclRyZWVIb3N0
SW1wbDo6Y3JlYXRlKHNldHRpbmdzKTsKKyAgICAgICAgbV9ob3N0SW1wbCA9IENDTGF5ZXJUcmVl
SG9zdEltcGw6OmNyZWF0ZShzZXR0aW5ncywgdGhpcyk7CiAgICAgfQogCisgICAgdmlydHVhbCB2
b2lkIHNldE5lZWRzUmVkcmF3T25JbXBsVGhyZWFkKCkgeyBtX2RpZFJlcXVlc3RSZWRyYXcgPSB0
cnVlOyB9CisgICAgdmlydHVhbCB2b2lkIHNldE5lZWRzQ29tbWl0T25JbXBsVGhyZWFkKCkgeyBt
X2RpZFJlcXVlc3RDb21taXQgPSB0cnVlOyB9CisKICAgICBzdGF0aWMgdm9pZCBleHBlY3RDbGVh
cmVkU2Nyb2xsRGVsdGFzUmVjdXJzaXZlKENDTGF5ZXJJbXBsKiBsYXllcikKICAgICB7CiAgICAg
ICAgIEFTU0VSVF9FUShsYXllci0+c2Nyb2xsRGVsdGEoKSwgSW50U2l6ZSgpKTsKQEAgLTYzLDkg
KzY4LDEyIEBAIHB1YmxpYzoKICAgICAgICAgQVNTRVJUX0VRKHRpbWVzRW5jb3VudGVyZWQsIDEp
OwogICAgIH0KIAorCiBwcm90ZWN0ZWQ6CiAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIG1f
YWx3YXlzSW1wbFRocmVhZDsKICAgICBPd25QdHI8Q0NMYXllclRyZWVIb3N0SW1wbD4gbV9ob3N0
SW1wbDsKKyAgICBib29sIG1fZGlkUmVxdWVzdENvbW1pdDsKKyAgICBib29sIG1fZGlkUmVxdWVz
dFJlZHJhdzsKIH07CiAKIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgc2Nyb2xsRGVs
dGFOb0xheWVycykKQEAgLTEzMiw0ICsxNDAsMTUgQEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9zdElt
cGxUZXN0LCBzY3JvbGxEZWx0YVJlcGVhdGVkU2Nyb2xscykKICAgICBleHBlY3RDbGVhcmVkU2Ny
b2xsRGVsdGFzUmVjdXJzaXZlKHJvb3QuZ2V0KCkpOwogfQogCitURVNUX0YoQ0NMYXllclRyZWVI
b3N0SW1wbFRlc3QsIHNjcm9sbFJvb3RDYWxsc0NvbW1pdEFuZFJlZHJhdykKK3sKKyAgICBSZWZQ
dHI8Q0NMYXllckltcGw+IHJvb3QgPSBDQ0xheWVySW1wbDo6Y3JlYXRlKDApOworICAgIHJvb3Qt
PnNldFNjcm9sbFBvc2l0aW9uKEludFBvaW50KDAsIDApKTsKKyAgICByb290LT5zZXRNYXhTY3Jv
bGxQb3NpdGlvbihJbnRTaXplKDEwMCwgMTAwKSk7CisgICAgbV9ob3N0SW1wbC0+c2V0Um9vdExh
eWVyKHJvb3QpOworICAgIG1faG9zdEltcGwtPnNjcm9sbFJvb3RMYXllcihJbnRTaXplKDAsIDEw
KSk7CisgICAgQVNTRVJUKG1fZGlkUmVxdWVzdFJlZHJhdyk7CisgICAgQVNTRVJUKG1fZGlkUmVx
dWVzdENvbW1pdCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcAppbmRleCA2NTZkOGQ2NjRh
ZjhkMWFmNzFmOWE3ZTgyZTMxOWRlNjY0YmMzYmVjLi4yMTNhMWM0NjdkZDVmMDA3ZWFiOTU0NzEx
MDQ1MDYxOTVmNTZjYTdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAKQEAgLTY0LDkgKzY0LDkgQEAgcHVibGljOgogLy8g
QWRhcHRzIENDTGF5ZXJUcmVlSG9zdEltcGwgZm9yIHRlc3QuIFJ1bnMgcmVhbCBjb2RlLCB0aGVu
IGludm9rZXMgdGVzdCBob29rcy4KIGNsYXNzIE1vY2tMYXllclRyZWVIb3N0SW1wbCA6IHB1Ymxp
YyBDQ0xheWVyVHJlZUhvc3RJbXBsIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxN
b2NrTGF5ZXJUcmVlSG9zdEltcGw+IGNyZWF0ZShUZXN0SG9va3MqIHRlc3RIb29rcywgY29uc3Qg
Q0NTZXR0aW5ncyYgc2V0dGluZ3MpCisgICAgc3RhdGljIFBhc3NPd25QdHI8TW9ja0xheWVyVHJl
ZUhvc3RJbXBsPiBjcmVhdGUoVGVzdEhvb2tzKiB0ZXN0SG9va3MsIGNvbnN0IENDU2V0dGluZ3Mm
IHNldHRpbmdzLCBDQ0xheWVyVHJlZUhvc3RJbXBsQ2xpZW50KiBjbGllbnQpCiAgICAgewotICAg
ICAgICByZXR1cm4gYWRvcHRQdHIobmV3IE1vY2tMYXllclRyZWVIb3N0SW1wbCh0ZXN0SG9va3Ms
IHNldHRpbmdzKSk7CisgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgTW9ja0xheWVyVHJlZUhv
c3RJbXBsKHRlc3RIb29rcywgc2V0dGluZ3MsIGNsaWVudCkpOwogICAgIH0KIAogICAgIHZpcnR1
YWwgdm9pZCBiZWdpbkNvbW1pdCgpCkBAIC04OCw4ICs4OCw4IEBAIHB1YmxpYzoKICAgICB9CiAK
IHByaXZhdGU6Ci0gICAgTW9ja0xheWVyVHJlZUhvc3RJbXBsKFRlc3RIb29rcyogdGVzdEhvb2tz
LCBjb25zdCBDQ1NldHRpbmdzJiBzZXR0aW5ncykKLSAgICAgICAgOiBDQ0xheWVyVHJlZUhvc3RJ
bXBsKHNldHRpbmdzKQorICAgIE1vY2tMYXllclRyZWVIb3N0SW1wbChUZXN0SG9va3MqIHRlc3RI
b29rcywgY29uc3QgQ0NTZXR0aW5ncyYgc2V0dGluZ3MsIENDTGF5ZXJUcmVlSG9zdEltcGxDbGll
bnQqIGNsaWVudCkKKyAgICAgICAgOiBDQ0xheWVyVHJlZUhvc3RJbXBsKHNldHRpbmdzLCBjbGll
bnQpCiAgICAgICAgICwgbV90ZXN0SG9va3ModGVzdEhvb2tzKQogICAgIHsKICAgICB9CkBAIC0x
MDUsOSArMTA1LDkgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1vY2tM
YXllclRyZWVIb3N0KHRlc3RIb29rcywgY2xpZW50LCByb290TGF5ZXIsIHNldHRpbmdzKSk7CiAg
ICAgfQogCi0gICAgdmlydHVhbCBQYXNzT3duUHRyPENDTGF5ZXJUcmVlSG9zdEltcGw+IGNyZWF0
ZUxheWVyVHJlZUhvc3RJbXBsKCkKKyAgICB2aXJ0dWFsIFBhc3NPd25QdHI8Q0NMYXllclRyZWVI
b3N0SW1wbD4gY3JlYXRlTGF5ZXJUcmVlSG9zdEltcGwoQ0NMYXllclRyZWVIb3N0SW1wbENsaWVu
dCogY2xpZW50KQogICAgIHsKLSAgICAgICAgcmV0dXJuIE1vY2tMYXllclRyZWVIb3N0SW1wbDo6
Y3JlYXRlKG1fdGVzdEhvb2tzLCBzZXR0aW5ncygpKTsKKyAgICAgICAgcmV0dXJuIE1vY2tMYXll
clRyZWVIb3N0SW1wbDo6Y3JlYXRlKG1fdGVzdEhvb2tzLCBzZXR0aW5ncygpLCBjbGllbnQpOwog
ICAgIH0KIAogcHJpdmF0ZToK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>111361</attachid>
            <date>2011-10-17 18:21:53 -0700</date>
            <delta_ts>2011-10-18 14:45:13 -0700</delta_ts>
            <desc>Fix loop and virutal</desc>
            <filename>bug-70291-20111017182152.patch</filename>
            <type>text/plain</type>
            <size>18354</size>
            <attacher name="Nat Duca">nduca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTczMzMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA1ZmM3MjA5ZTFjZjJkMDk1
Yzc1MzlmMTk3YWRlZjljYzVlNjVjNjM5Li5iNWFhMTg5Y2M4MGIwMGM0MzdkMjIyNjcyNTU2MGQy
MzYwZjUwYzI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzMgQEAKKzIwMTEtMTAtMTcgIE5hdCBE
dWNhICA8bmR1Y2FAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gQWxsb3cgQ0NM
YXllclRyZWVIb3N0SW1wbCB0byBjYWxsIGJhY2sgdG8gcHJveHkgdmlhIENDTGF5ZXJUcmVlSG9z
dEltcGxDbGllbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTcwMjkxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0OjpjcmVhdGVMYXllclRyZWVIb3N0SW1w
bCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVI
b3N0Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRy
ZWVIb3N0SW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3RJbXBsOjpj
cmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0SW1wbDo6Q0NMYXllclRy
ZWVIb3N0SW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3RJbXBsOjpzY3Jv
bGxSb290TGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
TGF5ZXJUcmVlSG9zdEltcGwuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1Njcm9sbENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkND
U2luZ2xlVGhyZWFkUHJveHk6OnN0YXJ0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5Lmg6CisgICAgICAgIChXZWJDb3JlOjpDQ1Np
bmdsZVRocmVhZFByb3h5OjpzZXROZWVkc1JlZHJhd09uSW1wbFRocmVhZCk6CisgICAgICAgIChX
ZWJDb3JlOjpDQ1NpbmdsZVRocmVhZFByb3h5OjpzZXROZWVkc0NvbW1pdE9uSW1wbFRocmVhZCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpzY3JvbGxSb290TGF5ZXJPbklt
cGxUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6aW5pdGlhbGl6ZUlt
cGxPbkNDVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OmluaXRpYWxp
emVMYXllclJlbmRlcmVyT25DQ1RocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFBy
b3h5OjpsYXllclRyZWVIb3N0Q2xvc2VkT25DQ1RocmVhZCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oOgorICAgICAgICAoV2ViQ29yZTo6
Q0NUaHJlYWRQcm94eTo6c2V0TmVlZHNSZWRyYXdPbkltcGxUaHJlYWQpOgorICAgICAgICAoV2Vi
Q29yZTo6Q0NUaHJlYWRQcm94eTo6c2V0TmVlZHNDb21taXRPbkltcGxUaHJlYWQpOgorCiAyMDEx
LTEwLTEyICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmVtb3Zl
IEVOQUJMRShYSFRNTE1QKSBhbmQgYXNzb2NpYXRlZCBjb2RlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRy
ZWVIb3N0LmNwcAppbmRleCAzNWM1NDM4NzkwN2JlYjAyZGQ2OWY3Mjk2Y2E4ZTI0ZGZiNmFlYjM5
Li45MGQ0Yjc3NDEzNzE4M2ZkYTBhYmI5NmM2OGNjNWM0OTk5N2IwZWJhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhv
c3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDTGF5ZXJUcmVlSG9zdC5jcHAKQEAgLTE1Myw5ICsxNTMsOSBAQCBQYXNzUmVmUHRyPEdyYXBo
aWNzQ29udGV4dDNEPiBDQ0xheWVyVHJlZUhvc3Q6OmNyZWF0ZUxheWVyVHJlZUhvc3RDb250ZXh0
M0QoKQogICAgIHJldHVybiBtX2NsaWVudC0+Y3JlYXRlTGF5ZXJUcmVlSG9zdENvbnRleHQzRCgp
OwogfQogCi1QYXNzT3duUHRyPENDTGF5ZXJUcmVlSG9zdEltcGw+IENDTGF5ZXJUcmVlSG9zdDo6
Y3JlYXRlTGF5ZXJUcmVlSG9zdEltcGwoKQorUGFzc093blB0cjxDQ0xheWVyVHJlZUhvc3RJbXBs
PiBDQ0xheWVyVHJlZUhvc3Q6OmNyZWF0ZUxheWVyVHJlZUhvc3RJbXBsKENDTGF5ZXJUcmVlSG9z
dEltcGxDbGllbnQqIGNsaWVudCkKIHsKLSAgICByZXR1cm4gQ0NMYXllclRyZWVIb3N0SW1wbDo6
Y3JlYXRlKG1fc2V0dGluZ3MpOworICAgIHJldHVybiBDQ0xheWVyVHJlZUhvc3RJbXBsOjpjcmVh
dGUobV9zZXR0aW5ncywgY2xpZW50KTsKIH0KIAogdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OmRpZFJl
Y3JlYXRlR3JhcGhpY3NDb250ZXh0KGJvb2wgc3VjY2VzcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVI
b3N0LmgKaW5kZXggNzBiNjM5NjhlOTUxNGI4ZDZiOTg1MTdiZTkzZTdkNjViMjliNzE1Yy4uYjBk
M2JiZmZlYjUwZmQ3M2Y0ODdkN2E3NjQ4MGIxODQyMjFiY2RhOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
clRyZWVIb3N0LmgKQEAgLTEwMCw3ICsxMDAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjb21taXRD
b21wbGV0ZSgpOwogICAgIHZvaWQgY29tbWl0VG9PbkNDVGhyZWFkKENDTGF5ZXJUcmVlSG9zdElt
cGwqKTsKICAgICBQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjcmVhdGVMYXllclRyZWVI
b3N0Q29udGV4dDNEKCk7Ci0gICAgdmlydHVhbCBQYXNzT3duUHRyPENDTGF5ZXJUcmVlSG9zdElt
cGw+IGNyZWF0ZUxheWVyVHJlZUhvc3RJbXBsKCk7CisgICAgdmlydHVhbCBQYXNzT3duUHRyPEND
TGF5ZXJUcmVlSG9zdEltcGw+IGNyZWF0ZUxheWVyVHJlZUhvc3RJbXBsKENDTGF5ZXJUcmVlSG9z
dEltcGxDbGllbnQqKTsKICAgICB2b2lkIGRpZFJlY3JlYXRlR3JhcGhpY3NDb250ZXh0KGJvb2wg
c3VjY2Vzcyk7CiAgICAgdm9pZCBkZWxldGVDb250ZW50c1RleHR1cmVzT25DQ1RocmVhZChUZXh0
dXJlQWxsb2NhdG9yKik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAK
aW5kZXggYTMzOTkwODE2YTk0ZTBjMjliNzljMGJlMzQ3NjU0ZDkzMGIzYjE1Yi4uMzgyNGRkZDk0
NGM3NGU3ZGExYjg1N2QyOGMxMjQ2MWRiMzE3MTdlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
clRyZWVIb3N0SW1wbC5jcHAKQEAgLTM4LDEzICszOCwxNCBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLVBhc3NPd25QdHI8Q0NMYXllclRyZWVIb3N0SW1wbD4gQ0NMYXllclRyZWVIb3N0SW1w
bDo6Y3JlYXRlKGNvbnN0IENDU2V0dGluZ3MmIHNldHRpbmdzKQorUGFzc093blB0cjxDQ0xheWVy
VHJlZUhvc3RJbXBsPiBDQ0xheWVyVHJlZUhvc3RJbXBsOjpjcmVhdGUoY29uc3QgQ0NTZXR0aW5n
cyYgc2V0dGluZ3MsIENDTGF5ZXJUcmVlSG9zdEltcGxDbGllbnQqIGNsaWVudCkKIHsKLSAgICBy
ZXR1cm4gYWRvcHRQdHIobmV3IENDTGF5ZXJUcmVlSG9zdEltcGwoc2V0dGluZ3MpKTsKKyAgICBy
ZXR1cm4gYWRvcHRQdHIobmV3IENDTGF5ZXJUcmVlSG9zdEltcGwoc2V0dGluZ3MsIGNsaWVudCkp
OwogfQogCi1DQ0xheWVyVHJlZUhvc3RJbXBsOjpDQ0xheWVyVHJlZUhvc3RJbXBsKGNvbnN0IEND
U2V0dGluZ3MmIHNldHRpbmdzKQotICAgIDogbV9zb3VyY2VGcmFtZU51bWJlcigtMSkKK0NDTGF5
ZXJUcmVlSG9zdEltcGw6OkNDTGF5ZXJUcmVlSG9zdEltcGwoY29uc3QgQ0NTZXR0aW5ncyYgc2V0
dGluZ3MsIENDTGF5ZXJUcmVlSG9zdEltcGxDbGllbnQqIGNsaWVudCkKKyAgICA6IG1fY2xpZW50
KGNsaWVudCkKKyAgICAsIG1fc291cmNlRnJhbWVOdW1iZXIoLTEpCiAgICAgLCBtX2ZyYW1lTnVt
YmVyKDApCiAgICAgLCBtX3NldHRpbmdzKHNldHRpbmdzKQogewpAQCAtMTY2LDYgKzE2Nyw4IEBA
IHZvaWQgQ0NMYXllclRyZWVIb3N0SW1wbDo6c2Nyb2xsUm9vdExheWVyKGNvbnN0IEludFNpemUm
IHNjcm9sbERlbHRhKQogICAgICAgICByZXR1cm47CiAKICAgICBtX3Jvb3RMYXllckltcGwtPnNj
cm9sbEJ5KHNjcm9sbERlbHRhKTsKKyAgICBtX2NsaWVudC0+c2V0TmVlZHNDb21taXRPbkltcGxU
aHJlYWQoKTsKKyAgICBtX2NsaWVudC0+c2V0TmVlZHNSZWRyYXdPbkltcGxUaHJlYWQoKTsKIH0K
IAogUGFzc093blB0cjxDQ1Njcm9sbFVwZGF0ZVNldD4gQ0NMYXllclRyZWVIb3N0SW1wbDo6cHJv
Y2Vzc1Njcm9sbERlbHRhcygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgKaW5k
ZXggZDBmZjhjZTg0MWJjYzkwMzc3NjVjZTVkMzYyMmZiMTE3NjRhZTBkMS4uYzdlMmY1MjFhNzBk
OGQwZWEyNzFlNjdkNWQ0MTQzZGQxNjA3MmY3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVl
SG9zdEltcGwuaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaW5jbHVkZSAiY2MvQ0NMYXllclRyZWVI
b3N0LmgiCiAjaW5jbHVkZSAiY2MvQ0NMYXllclRyZWVIb3N0Q29tbW9uLmgiCisjaW5jbHVkZSAi
Y2MvQ0NTY3JvbGxDb250cm9sbGVyLmgiCiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiAjaWYg
VVNFKFNLSUEpCkBAIC00MiwxMyArNDMsMjMgQEAgY2xhc3MgVGV4dHVyZUFsbG9jYXRvcjsKIHN0
cnVjdCBMYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzOwogY2xhc3MgVHJhbnNmb3JtYXRpb25NYXRy
aXg7CiAKKy8vIENDTGF5ZXJUcmVlSG9zdC0+Q0NQcm94eSBjYWxsYmFjayBpbnRlcmZhY2UuCitj
bGFzcyBDQ0xheWVyVHJlZUhvc3RJbXBsQ2xpZW50IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIHZv
aWQgc2V0TmVlZHNSZWRyYXdPbkltcGxUaHJlYWQoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNl
dE5lZWRzQ29tbWl0T25JbXBsVGhyZWFkKCkgPSAwOworfTsKKwogLy8gQ0NMYXllclRyZWVIb3N0
SW1wbCBvd25zIHRoZSBDQ0xheWVySW1wbCB0cmVlIGFzIHdlbGwgYXMgYXNzb2NpYXRlZCByZW5k
ZXJpbmcgc3RhdGUKLWNsYXNzIENDTGF5ZXJUcmVlSG9zdEltcGwgeworY2xhc3MgQ0NMYXllclRy
ZWVIb3N0SW1wbCA6IHB1YmxpYyBDQ1Njcm9sbENvbnRyb2xsZXIgewogICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKENDTGF5ZXJUcmVlSG9zdEltcGwpOwogcHVibGljOgotICAgIHN0YXRpYyBQYXNz
T3duUHRyPENDTGF5ZXJUcmVlSG9zdEltcGw+IGNyZWF0ZShjb25zdCBDQ1NldHRpbmdzJik7Cisg
ICAgc3RhdGljIFBhc3NPd25QdHI8Q0NMYXllclRyZWVIb3N0SW1wbD4gY3JlYXRlKGNvbnN0IEND
U2V0dGluZ3MmLCBDQ0xheWVyVHJlZUhvc3RJbXBsQ2xpZW50Kik7CiAgICAgdmlydHVhbCB+Q0NM
YXllclRyZWVIb3N0SW1wbCgpOwogCisgICAgLy8gQ0NTY3JvbGxDb250cm9sbGVyIGltcGxlbWVu
dGF0aW9uCisgICAgdmlydHVhbCB2b2lkIHNjcm9sbFJvb3RMYXllcihjb25zdCBJbnRTaXplJik7
CisKICAgICAvLyBWaXJ0dWFsIGZvciB0ZXN0aW5nCiAgICAgdmlydHVhbCB2b2lkIGJlZ2luQ29t
bWl0KCk7CiAgICAgdmlydHVhbCB2b2lkIGNvbW1pdENvbXBsZXRlKCk7CkBAIC04MywxMiArOTQs
MTEgQEAgcHVibGljOgogCiAgICAgY29uc3QgQ0NTZXR0aW5ncyYgc2V0dGluZ3MoKSBjb25zdCB7
IHJldHVybiBtX3NldHRpbmdzOyB9CiAKLSAgICB2b2lkIHNjcm9sbFJvb3RMYXllcihjb25zdCBJ
bnRTaXplJik7Ci0KICAgICBQYXNzT3duUHRyPENDU2Nyb2xsVXBkYXRlU2V0PiBwcm9jZXNzU2Ny
b2xsRGVsdGFzKCk7CiAKIHByb3RlY3RlZDoKLSAgICBleHBsaWNpdCBDQ0xheWVyVHJlZUhvc3RJ
bXBsKGNvbnN0IENDU2V0dGluZ3MmKTsKKyAgICBDQ0xheWVyVHJlZUhvc3RJbXBsKGNvbnN0IEND
U2V0dGluZ3MmLCBDQ0xheWVyVHJlZUhvc3RJbXBsQ2xpZW50Kik7CisgICAgQ0NMYXllclRyZWVI
b3N0SW1wbENsaWVudCogbV9jbGllbnQ7CiAgICAgaW50IG1fc291cmNlRnJhbWVOdW1iZXI7CiAg
ICAgaW50IG1fZnJhbWVOdW1iZXI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94
eS5jcHAKaW5kZXggNjBlNDc5NTJlOGE1ZTE5ZTU2Njc4OGM0ZjFmODA0NjFkOGM2ZDdhMy4uNzg1
YWQ2MmY1ZWVlYjEyNjQ3MjY1NTkzNmM0OTg2MWE4NTQ1N2Q3ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94
eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NTaW5nbGVUaHJlYWRQcm94eS5jcHAKQEAgLTU3LDcgKzU3LDcgQEAgQ0NTaW5nbGVUaHJlYWRQ
cm94eTo6Q0NTaW5nbGVUaHJlYWRQcm94eShDQ0xheWVyVHJlZUhvc3QqIGxheWVyVHJlZUhvc3Qp
CiB2b2lkIENDU2luZ2xlVGhyZWFkUHJveHk6OnN0YXJ0KCkKIHsKICAgICBEZWJ1Z1Njb3BlZFNl
dEltcGxUaHJlYWQgaW1wbDsKLSAgICBtX2xheWVyVHJlZUhvc3RJbXBsID0gbV9sYXllclRyZWVI
b3N0LT5jcmVhdGVMYXllclRyZWVIb3N0SW1wbCgpOworICAgIG1fbGF5ZXJUcmVlSG9zdEltcGwg
PSBtX2xheWVyVHJlZUhvc3QtPmNyZWF0ZUxheWVyVHJlZUhvc3RJbXBsKHRoaXMpOwogfQogCiBD
Q1NpbmdsZVRocmVhZFByb3h5Ojp+Q0NTaW5nbGVUaHJlYWRQcm94eSgpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVh
ZFByb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1NpbmdsZVRocmVhZFByb3h5LmgKaW5kZXggMjg0ZGYwNWIxYjk4NDAyOWI2NjQzMzE3MDcwOGQx
OWI1NDVkZDY0Ni4uYWM5N2VhN2IwODA5NTU4NzZkMzdlNGU1ODAwMTAyZWNhYTkyYzBiNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NT
aW5nbGVUaHJlYWRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuaApAQCAtMzQsNyArMzQsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENDTGF5ZXJUcmVlSG9zdDsKIAotY2xhc3MgQ0NTaW5n
bGVUaHJlYWRQcm94eSA6IHB1YmxpYyBDQ1Byb3h5IHsKK2NsYXNzIENDU2luZ2xlVGhyZWFkUHJv
eHkgOiBwdWJsaWMgQ0NQcm94eSwgQ0NMYXllclRyZWVIb3N0SW1wbENsaWVudCB7CiBwdWJsaWM6
CiAgICAgc3RhdGljIFBhc3NPd25QdHI8Q0NQcm94eT4gY3JlYXRlKENDTGF5ZXJUcmVlSG9zdCop
OwogICAgIHZpcnR1YWwgfkNDU2luZ2xlVGhyZWFkUHJveHkoKTsKQEAgLTU0LDYgKzU0LDEwIEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc3RhcnQoKTsKICAgICB2aXJ0dWFsIHZvaWQgc3Rv
cCgpOwogCisgICAgLy8gQ0NMYXllclRyZWVIb3N0SW1wbENsaWVudCBpbXBsZW1lbnRhdGlvbgor
ICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc1JlZHJhd09uSW1wbFRocmVhZCgpIHsgbV9sYXllclRy
ZWVIb3N0LT5zZXROZWVkc0NvbW1pdFRoZW5SZWRyYXcoKTsgfQorICAgIHZpcnR1YWwgdm9pZCBz
ZXROZWVkc0NvbW1pdE9uSW1wbFRocmVhZCgpIHsgbV9sYXllclRyZWVIb3N0LT5zZXROZWVkc0Nv
bW1pdFRoZW5SZWRyYXcoKTsgfQorCiAgICAgLy8gQ2FsbGVkIGJ5IHRoZSBsZWdhY3kgcGF0aCB3
aGVyZSBSZW5kZXJXaWRnZXQgZG9lcyB0aGUgc2NoZWR1bGluZy4KICAgICB2b2lkIGNvbXBvc2l0
ZUltbWVkaWF0ZWx5KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAKaW5kZXggOWVlMTY0
YTVjZWYyYjVjYWJjZWUzZWNjNWY3ZDFkNDE3OWM5NzMzZi4uM2E1YTk3NTY0OTY2M2I2YjdiZGVh
ZGFmMWNmOWM0MjQ0ODMxMGQ0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAKQEAgLTMy
LDcgKzMyLDYgQEAKICNpbmNsdWRlICJjYy9DQ0xheWVyVHJlZUhvc3QuaCIKICNpbmNsdWRlICJj
Yy9DQ01haW5UaHJlYWRUYXNrLmgiCiAjaW5jbHVkZSAiY2MvQ0NTY2hlZHVsZXIuaCIKLSNpbmNs
dWRlICJjYy9DQ1Njcm9sbENvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJjYy9DQ1RocmVhZFRhc2su
aCIKICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVh
ZC5oPgpAQCAtNzgsMzAgKzc3LDYgQEAgcHJpdmF0ZToKICAgICBDQ1RocmVhZFByb3h5KiBtX3By
b3h5OwogfTsKIAotY2xhc3MgQ0NUaHJlYWRQcm94eVNjcm9sbENvbnRyb2xsZXJBZGFwdGVyIDog
cHVibGljIENDU2Nyb2xsQ29udHJvbGxlciB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25Q
dHI8Q0NUaHJlYWRQcm94eVNjcm9sbENvbnRyb2xsZXJBZGFwdGVyPiBjcmVhdGUoQ0NUaHJlYWRQ
cm94eSogcHJveHkpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IENDVGhyZWFk
UHJveHlTY3JvbGxDb250cm9sbGVyQWRhcHRlcihwcm94eSkpOwotICAgIH0KLSAgICB2aXJ0dWFs
IH5DQ1RocmVhZFByb3h5U2Nyb2xsQ29udHJvbGxlckFkYXB0ZXIoKSB7IH0KLQotICAgIHZpcnR1
YWwgdm9pZCBzY3JvbGxSb290TGF5ZXIoY29uc3QgSW50U2l6ZSYgb2Zmc2V0KQotICAgIHsKLSAg
ICAgICAgbV9wcm94eS0+bV9sYXllclRyZWVIb3N0SW1wbC0+c2Nyb2xsUm9vdExheWVyKG9mZnNl
dCk7Ci0gICAgICAgIG1fcHJveHktPnNldE5lZWRzUmVkcmF3T25DQ1RocmVhZCgpOwotICAgICAg
ICBtX3Byb3h5LT5zZXROZWVkc0NvbW1pdE9uQ0NUaHJlYWQoKTsKLSAgICB9Ci0KLXByaXZhdGU6
Ci0gICAgZXhwbGljaXQgQ0NUaHJlYWRQcm94eVNjcm9sbENvbnRyb2xsZXJBZGFwdGVyKENDVGhy
ZWFkUHJveHkqIHByb3h5KQotICAgIHsKLSAgICAgICAgbV9wcm94eSA9IHByb3h5OwotICAgIH0K
LQotICAgIENDVGhyZWFkUHJveHkqIG1fcHJveHk7Ci19OwotCiBQYXNzT3duUHRyPENDUHJveHk+
IENDVGhyZWFkUHJveHk6OmNyZWF0ZShDQ0xheWVyVHJlZUhvc3QqIGxheWVyVHJlZUhvc3QpCiB7
CiAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBDQ1RocmVhZFByb3h5KGxheWVyVHJlZUhvc3QpKTsK
QEAgLTQzOSw3ICs0MTQsNyBAQCB2b2lkIENDVGhyZWFkUHJveHk6OmluaXRpYWxpemVJbXBsT25D
Q1RocmVhZChDQ0NvbXBsZXRpb25FdmVudCogY29tcGxldGlvbikKIHsKICAgICBUUkFDRV9FVkVO
VCgiQ0NUaHJlYWRQcm94eTo6aW5pdGlhbGl6ZUltcGxPbkNDVGhyZWFkIiwgdGhpcywgMCk7CiAg
ICAgQVNTRVJUKGlzSW1wbFRocmVhZCgpKTsKLSAgICBtX2xheWVyVHJlZUhvc3RJbXBsID0gbV9s
YXllclRyZWVIb3N0LT5jcmVhdGVMYXllclRyZWVIb3N0SW1wbCgpOworICAgIG1fbGF5ZXJUcmVl
SG9zdEltcGwgPSBtX2xheWVyVHJlZUhvc3QtPmNyZWF0ZUxheWVyVHJlZUhvc3RJbXBsKHRoaXMp
OwogICAgIG1fc2NoZWR1bGVyQ2xpZW50T25DQ1RocmVhZCA9IENDVGhyZWFkUHJveHlTY2hlZHVs
ZXJDbGllbnQ6OmNyZWF0ZSh0aGlzKTsKICAgICBtX3NjaGVkdWxlck9uQ0NUaHJlYWQgPSBDQ1Nj
aGVkdWxlcjo6Y3JlYXRlKG1fc2NoZWR1bGVyQ2xpZW50T25DQ1RocmVhZC5nZXQoKSk7CiAgICAg
Y29tcGxldGlvbi0+c2lnbmFsKCk7CkBAIC00NTQsOCArNDI5LDcgQEAgdm9pZCBDQ1RocmVhZFBy
b3h5Ojppbml0aWFsaXplTGF5ZXJSZW5kZXJlck9uQ0NUaHJlYWQoR3JhcGhpY3NDb250ZXh0M0Qq
IGNvbnRleHQKICAgICBpZiAoKmluaXRpYWxpemVTdWNjZWVkZWQpCiAgICAgICAgICpjYXBhYmls
aXRpZXMgPSBtX2xheWVyVHJlZUhvc3RJbXBsLT5sYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKCk7
CiAKLSAgICBtX3Njcm9sbENvbnRyb2xsZXJBZGFwdGVyT25DQ1RocmVhZCA9IENDVGhyZWFkUHJv
eHlTY3JvbGxDb250cm9sbGVyQWRhcHRlcjo6Y3JlYXRlKHRoaXMpOwotICAgIG1faW5wdXRIYW5k
bGVyT25DQ1RocmVhZCA9IENDSW5wdXRIYW5kbGVyOjpjcmVhdGUobV9zY3JvbGxDb250cm9sbGVy
QWRhcHRlck9uQ0NUaHJlYWQuZ2V0KCkpOworICAgIG1faW5wdXRIYW5kbGVyT25DQ1RocmVhZCA9
IENDSW5wdXRIYW5kbGVyOjpjcmVhdGUobV9sYXllclRyZWVIb3N0SW1wbC5nZXQoKSk7CiAgICAg
KmNvbXBvc2l0b3JJZGVudGlmaWVyID0gbV9pbnB1dEhhbmRsZXJPbkNDVGhyZWFkLT5pZGVudGlm
aWVyKCk7CiAKICAgICBjb21wbGV0aW9uLT5zaWduYWwoKTsKQEAgLTQ2OCw3ICs0NDIsNiBAQCB2
b2lkIENDVGhyZWFkUHJveHk6OmxheWVyVHJlZUhvc3RDbG9zZWRPbkNDVGhyZWFkKENDQ29tcGxl
dGlvbkV2ZW50KiBjb21wbGV0aW9uKQogICAgIG1fbGF5ZXJUcmVlSG9zdC0+ZGVsZXRlQ29udGVu
dHNUZXh0dXJlc09uQ0NUaHJlYWQobV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGVudHNUZXh0dXJl
QWxsb2NhdG9yKCkpOwogICAgIG1fbGF5ZXJUcmVlSG9zdEltcGwuY2xlYXIoKTsKICAgICBtX2lu
cHV0SGFuZGxlck9uQ0NUaHJlYWQuY2xlYXIoKTsKLSAgICBtX3Njcm9sbENvbnRyb2xsZXJBZGFw
dGVyT25DQ1RocmVhZC5jbGVhcigpOwogICAgIGNvbXBsZXRpb24tPnNpZ25hbCgpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1RocmVhZFByb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1RocmVhZFByb3h5LmgKaW5kZXggOGJlZjY4MmRkYTJiOWFjNDJjNWYzM2E2YjUxNmEz
M2YzNDlkYTIwMC4uZmNlMmU2YTVkZTg0NzA0ZTgwMTE5ZGYyZjY3MjhmNjA2MTRjZTc4ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NU
aHJlYWRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDVGhyZWFkUHJveHkuaApAQCAtMzgsMTEgKzM4LDkgQEAgY2xhc3MgQ0NMYXllclRy
ZWVIb3N0OwogY2xhc3MgQ0NTY2hlZHVsZXI7CiBjbGFzcyBDQ1RocmVhZDsKIGNsYXNzIENDVGhy
ZWFkUHJveHlTY2hlZHVsZXJDbGllbnQ7Ci1jbGFzcyBDQ1RocmVhZFByb3h5U2Nyb2xsQ29udHJv
bGxlckFkYXB0ZXI7CiAKLWNsYXNzIENDVGhyZWFkUHJveHkgOiBwdWJsaWMgQ0NQcm94eSB7Citj
bGFzcyBDQ1RocmVhZFByb3h5IDogcHVibGljIENDUHJveHksIENDTGF5ZXJUcmVlSG9zdEltcGxD
bGllbnQgewogICAgIGZyaWVuZCBjbGFzcyBDQ1RocmVhZFByb3h5U2NoZWR1bGVyQ2xpZW50Owot
ICAgIGZyaWVuZCBjbGFzcyBDQ1RocmVhZFByb3h5U2Nyb2xsQ29udHJvbGxlckFkYXB0ZXI7CiBw
dWJsaWM6CiAgICAgc3RhdGljIHZvaWQgc2V0VGhyZWFkKENDVGhyZWFkKik7CiAKQEAgLTY1LDYg
KzYzLDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc3RhcnQoKTsKICAgICB2aXJ0dWFs
IHZvaWQgc3RvcCgpOwogCisgICAgLy8gQ0NMYXllclRyZWVIb3N0SW1wbENsaWVudCBpbXBsZW1l
bnRhdGlvbgorICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc1JlZHJhd09uSW1wbFRocmVhZCgpIHsg
c2V0TmVlZHNSZWRyYXdPbkNDVGhyZWFkKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHND
b21taXRPbkltcGxUaHJlYWQoKSB7IHNldE5lZWRzQ29tbWl0T25DQ1RocmVhZCgpOyB9CisKIHBy
aXZhdGU6CiAgICAgZXhwbGljaXQgQ0NUaHJlYWRQcm94eShDQ0xheWVyVHJlZUhvc3QqKTsKIApA
QCAtMTAwLDcgKzEwMiw2IEBAIHByaXZhdGU6CiAgICAgaW50IG1fbnVtQmVnaW5GcmFtZUFuZENv
bW1pdHNJc3N1ZWRPbkNDVGhyZWFkOwogCiAgICAgT3duUHRyPENDSW5wdXRIYW5kbGVyPiBtX2lu
cHV0SGFuZGxlck9uQ0NUaHJlYWQ7Ci0gICAgT3duUHRyPENDVGhyZWFkUHJveHlTY3JvbGxDb250
cm9sbGVyQWRhcHRlcj4gbV9zY3JvbGxDb250cm9sbGVyQWRhcHRlck9uQ0NUaHJlYWQ7CiAKICAg
ICBPd25QdHI8Q0NTY2hlZHVsZXI+IG1fc2NoZWR1bGVyT25DQ1RocmVhZDsKICAgICBPd25QdHI8
Q0NUaHJlYWRQcm94eVNjaGVkdWxlckNsaWVudD4gbV9zY2hlZHVsZXJDbGllbnRPbkNDVGhyZWFk
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCA3NGNjZDllMDEwMzU5OTgzZGNiMWMyMWIw
ZDQzNDZlYjc3YTc3OTAxLi5lOWZiMWFlMWJkZjgxNDhmYjU5MzYyODkxNjFiZDk0ZTE0N2VmNGYz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDExLTEwLTE3
ICBOYXQgRHVjYSAgPG5kdWNhQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIEFs
bG93IENDTGF5ZXJUcmVlSG9zdEltcGwgdG8gY2FsbCBiYWNrIHRvIHByb3h5IHZpYSBDQ0xheWVy
VHJlZUhvc3RJbXBsQ2xpZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD03MDI5MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0SW1wbFRlc3Q6OkNDTGF5ZXJUcmVlSG9zdEltcGxUZXN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdEltcGxUZXN0OjpzZXROZWVkc1Jl
ZHJhd09uSW1wbFRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3RJbXBs
VGVzdDo6c2V0TmVlZHNDb21taXRPbkltcGxUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6VEVT
VF9GKToKKyAgICAgICAgKiB0ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcDoKKyAgICAgICAg
KFdURjo6TW9ja0xheWVyVHJlZUhvc3RJbXBsOjpjcmVhdGUpOgorICAgICAgICAoV1RGOjpNb2Nr
TGF5ZXJUcmVlSG9zdEltcGw6Ok1vY2tMYXllclRyZWVIb3N0SW1wbCk6CisgICAgICAgIChXVEY6
Ok1vY2tMYXllclRyZWVIb3N0OjpjcmVhdGVMYXllclRyZWVIb3N0SW1wbCk6CisKIDIwMTEtMTAt
MTIgIEFudG9pbmUgTGFib3VyICA8cGltYW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEZpeCBD
Q1RocmVhZFRlc3Quc3RhcnRQb3N0QW5kV2FpdE9uQ29uZGl0aW9uCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwCmlu
ZGV4IDg4OWM2ZTg4ZGNlNzBlOWQ0ZWM1YmM4NDE4MmVkZjVlMTJjMWVmNWQuLmU1YmYzNGU0Yjc2
ZThjY2RlNWI1NjAzM2I5ODg5ZjEwZTA3NjU3NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwCkBAIC0zNCwx
NCArMzQsMTkgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSB7CiAKLWNs
YXNzIENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgeworY2xh
c3MgQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCwgQ0NMYXll
clRyZWVIb3N0SW1wbENsaWVudCB7CiBwdWJsaWM6CiAgICAgQ0NMYXllclRyZWVIb3N0SW1wbFRl
c3QoKQorICAgICAgICA6IG1fZGlkUmVxdWVzdENvbW1pdChmYWxzZSkKKyAgICAgICAgLCBtX2Rp
ZFJlcXVlc3RSZWRyYXcoZmFsc2UpCiAgICAgewogICAgICAgICBDQ1NldHRpbmdzIHNldHRpbmdz
OwotICAgICAgICBtX2hvc3RJbXBsID0gQ0NMYXllclRyZWVIb3N0SW1wbDo6Y3JlYXRlKHNldHRp
bmdzKTsKKyAgICAgICAgbV9ob3N0SW1wbCA9IENDTGF5ZXJUcmVlSG9zdEltcGw6OmNyZWF0ZShz
ZXR0aW5ncywgdGhpcyk7CiAgICAgfQogCisgICAgdmlydHVhbCB2b2lkIHNldE5lZWRzUmVkcmF3
T25JbXBsVGhyZWFkKCkgeyBtX2RpZFJlcXVlc3RSZWRyYXcgPSB0cnVlOyB9CisgICAgdmlydHVh
bCB2b2lkIHNldE5lZWRzQ29tbWl0T25JbXBsVGhyZWFkKCkgeyBtX2RpZFJlcXVlc3RDb21taXQg
PSB0cnVlOyB9CisKICAgICBzdGF0aWMgdm9pZCBleHBlY3RDbGVhcmVkU2Nyb2xsRGVsdGFzUmVj
dXJzaXZlKENDTGF5ZXJJbXBsKiBsYXllcikKICAgICB7CiAgICAgICAgIEFTU0VSVF9FUShsYXll
ci0+c2Nyb2xsRGVsdGEoKSwgSW50U2l6ZSgpKTsKQEAgLTYzLDkgKzY4LDEyIEBAIHB1YmxpYzoK
ICAgICAgICAgQVNTRVJUX0VRKHRpbWVzRW5jb3VudGVyZWQsIDEpOwogICAgIH0KIAorCiBwcm90
ZWN0ZWQ6CiAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIG1fYWx3YXlzSW1wbFRocmVhZDsK
ICAgICBPd25QdHI8Q0NMYXllclRyZWVIb3N0SW1wbD4gbV9ob3N0SW1wbDsKKyAgICBib29sIG1f
ZGlkUmVxdWVzdENvbW1pdDsKKyAgICBib29sIG1fZGlkUmVxdWVzdFJlZHJhdzsKIH07CiAKIFRF
U1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgc2Nyb2xsRGVsdGFOb0xheWVycykKQEAgLTEz
Miw0ICsxNDAsMTUgQEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBzY3JvbGxEZWx0
YVJlcGVhdGVkU2Nyb2xscykKICAgICBleHBlY3RDbGVhcmVkU2Nyb2xsRGVsdGFzUmVjdXJzaXZl
KHJvb3QuZ2V0KCkpOwogfQogCitURVNUX0YoQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QsIHNjcm9s
bFJvb3RDYWxsc0NvbW1pdEFuZFJlZHJhdykKK3sKKyAgICBSZWZQdHI8Q0NMYXllckltcGw+IHJv
b3QgPSBDQ0xheWVySW1wbDo6Y3JlYXRlKDApOworICAgIHJvb3QtPnNldFNjcm9sbFBvc2l0aW9u
KEludFBvaW50KDAsIDApKTsKKyAgICByb290LT5zZXRNYXhTY3JvbGxQb3NpdGlvbihJbnRTaXpl
KDEwMCwgMTAwKSk7CisgICAgbV9ob3N0SW1wbC0+c2V0Um9vdExheWVyKHJvb3QpOworICAgIG1f
aG9zdEltcGwtPnNjcm9sbFJvb3RMYXllcihJbnRTaXplKDAsIDEwKSk7CisgICAgQVNTRVJUKG1f
ZGlkUmVxdWVzdFJlZHJhdyk7CisgICAgQVNTRVJUKG1fZGlkUmVxdWVzdENvbW1pdCk7Cit9CisK
IH0gLy8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9D
Q0xheWVyVHJlZUhvc3RUZXN0LmNwcAppbmRleCA2NTZkOGQ2NjRhZjhkMWFmNzFmOWE3ZTgyZTMx
OWRlNjY0YmMzYmVjLi4yMTNhMWM0NjdkZDVmMDA3ZWFiOTU0NzExMDQ1MDYxOTVmNTZjYTdhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRl
c3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0
VGVzdC5jcHAKQEAgLTY0LDkgKzY0LDkgQEAgcHVibGljOgogLy8gQWRhcHRzIENDTGF5ZXJUcmVl
SG9zdEltcGwgZm9yIHRlc3QuIFJ1bnMgcmVhbCBjb2RlLCB0aGVuIGludm9rZXMgdGVzdCBob29r
cy4KIGNsYXNzIE1vY2tMYXllclRyZWVIb3N0SW1wbCA6IHB1YmxpYyBDQ0xheWVyVHJlZUhvc3RJ
bXBsIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxNb2NrTGF5ZXJUcmVlSG9zdElt
cGw+IGNyZWF0ZShUZXN0SG9va3MqIHRlc3RIb29rcywgY29uc3QgQ0NTZXR0aW5ncyYgc2V0dGlu
Z3MpCisgICAgc3RhdGljIFBhc3NPd25QdHI8TW9ja0xheWVyVHJlZUhvc3RJbXBsPiBjcmVhdGUo
VGVzdEhvb2tzKiB0ZXN0SG9va3MsIGNvbnN0IENDU2V0dGluZ3MmIHNldHRpbmdzLCBDQ0xheWVy
VHJlZUhvc3RJbXBsQ2xpZW50KiBjbGllbnQpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRQ
dHIobmV3IE1vY2tMYXllclRyZWVIb3N0SW1wbCh0ZXN0SG9va3MsIHNldHRpbmdzKSk7CisgICAg
ICAgIHJldHVybiBhZG9wdFB0cihuZXcgTW9ja0xheWVyVHJlZUhvc3RJbXBsKHRlc3RIb29rcywg
c2V0dGluZ3MsIGNsaWVudCkpOwogICAgIH0KIAogICAgIHZpcnR1YWwgdm9pZCBiZWdpbkNvbW1p
dCgpCkBAIC04OCw4ICs4OCw4IEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgTW9j
a0xheWVyVHJlZUhvc3RJbXBsKFRlc3RIb29rcyogdGVzdEhvb2tzLCBjb25zdCBDQ1NldHRpbmdz
JiBzZXR0aW5ncykKLSAgICAgICAgOiBDQ0xheWVyVHJlZUhvc3RJbXBsKHNldHRpbmdzKQorICAg
IE1vY2tMYXllclRyZWVIb3N0SW1wbChUZXN0SG9va3MqIHRlc3RIb29rcywgY29uc3QgQ0NTZXR0
aW5ncyYgc2V0dGluZ3MsIENDTGF5ZXJUcmVlSG9zdEltcGxDbGllbnQqIGNsaWVudCkKKyAgICAg
ICAgOiBDQ0xheWVyVHJlZUhvc3RJbXBsKHNldHRpbmdzLCBjbGllbnQpCiAgICAgICAgICwgbV90
ZXN0SG9va3ModGVzdEhvb2tzKQogICAgIHsKICAgICB9CkBAIC0xMDUsOSArMTA1LDkgQEAgcHVi
bGljOgogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1vY2tMYXllclRyZWVIb3N0KHRlc3RI
b29rcywgY2xpZW50LCByb290TGF5ZXIsIHNldHRpbmdzKSk7CiAgICAgfQogCi0gICAgdmlydHVh
bCBQYXNzT3duUHRyPENDTGF5ZXJUcmVlSG9zdEltcGw+IGNyZWF0ZUxheWVyVHJlZUhvc3RJbXBs
KCkKKyAgICB2aXJ0dWFsIFBhc3NPd25QdHI8Q0NMYXllclRyZWVIb3N0SW1wbD4gY3JlYXRlTGF5
ZXJUcmVlSG9zdEltcGwoQ0NMYXllclRyZWVIb3N0SW1wbENsaWVudCogY2xpZW50KQogICAgIHsK
LSAgICAgICAgcmV0dXJuIE1vY2tMYXllclRyZWVIb3N0SW1wbDo6Y3JlYXRlKG1fdGVzdEhvb2tz
LCBzZXR0aW5ncygpKTsKKyAgICAgICAgcmV0dXJuIE1vY2tMYXllclRyZWVIb3N0SW1wbDo6Y3Jl
YXRlKG1fdGVzdEhvb2tzLCBzZXR0aW5ncygpLCBjbGllbnQpOwogICAgIH0KIAogcHJpdmF0ZToK
</data>
<flag name="review"
          id="109176"
          type_id="1"
          status="+"
          setter="jamesr"
    />
    <flag name="commit-queue"
          id="109351"
          type_id="3"
          status="-"
          setter="jamesr"
    />
          </attachment>
      

    </bug>

</bugzilla>