<?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>93306</bug_id>
          
          <creation_ts>2012-08-06 16:11:21 -0700</creation_ts>
          <short_desc>Convert ScrollableArea ASSERT_NOT_REACHED virtuals into pure virtuals</short_desc>
          <delta_ts>2012-08-23 11:36:30 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Platform</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>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="Adrienne Walker">enne</reporter>
          <assigned_to name="Adrienne Walker">enne</assigned_to>
          <cc>aestes</cc>
    
    <cc>andersca</cc>
    
    <cc>ap</cc>
    
    <cc>enne</cc>
    
    <cc>eric</cc>
    
    <cc>fishd</cc>
    
    <cc>jam</cc>
    
    <cc>jamesr</cc>
    
    <cc>kbr</cc>
    
    <cc>mifenton</cc>
    
    <cc>mitz</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>tkent</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>688521</commentid>
    <comment_count>0</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-08-06 16:11:21 -0700</bug_when>
    <thetext>Convert ScrollableArea ASSERT_NOT_REACHED virtuals into pure virtuals</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>688524</commentid>
    <comment_count>1</comment_count>
      <attachid>156783</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-08-06 16:16:55 -0700</bug_when>
    <thetext>Created attachment 156783
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>688528</commentid>
    <comment_count>2</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-08-06 16:19:13 -0700</bug_when>
    <thetext>This is a follow-up to bug 93297 (http://trac.webkit.org/changeset/124804), where http://trac.webkit.org/changeset/124714 added a call to ScrollableArea::scrollPosition() which broke Chromium WebKit unit tests in debug builds.

This would have been caught if scrollPosition() had an override in the Chromium unit tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>688556</commentid>
    <comment_count>3</comment_count>
      <attachid>156783</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-08-06 16:42:26 -0700</bug_when>
    <thetext>Comment on attachment 156783
Patch

Attachment 156783 did not pass win-ews (win):
Output: http://queues.webkit.org/results/13449252</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>688576</commentid>
    <comment_count>4</comment_count>
      <attachid>156800</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-08-06 16:56:49 -0700</bug_when>
    <thetext>Created attachment 156800
Fix override build errors</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>688610</commentid>
    <comment_count>5</comment_count>
      <attachid>156800</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-08-06 17:34:55 -0700</bug_when>
    <thetext>Comment on attachment 156800
Fix override build errors

Attachment 156800 did not pass win-ews (win):
Output: http://queues.webkit.org/results/13445573</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>688633</commentid>
    <comment_count>6</comment_count>
      <attachid>156816</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-08-06 18:07:05 -0700</bug_when>
    <thetext>Created attachment 156816
Fix PopupMenuWin errors</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>688653</commentid>
    <comment_count>7</comment_count>
      <attachid>156816</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-08-06 18:34:31 -0700</bug_when>
    <thetext>Comment on attachment 156816
Fix PopupMenuWin errors

Attachment 156816 did not pass win-ews (win):
Output: http://queues.webkit.org/results/13447637</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>689577</commentid>
    <comment_count>8</comment_count>
      <attachid>156816</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-08-07 16:22:10 -0700</bug_when>
    <thetext>Comment on attachment 156816
Fix PopupMenuWin errors

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

&gt; Source/WebCore/ChangeLog:9
&gt; +        ASSERT_NOT_REACHED is a bad way to make sure that a virtual function
&gt; +        gets an override, because it only fails at run-time in debug builds.

These are not exactly equivalent, but I&apos;m not sure if ASSERT_NOT_REACHED was used on purpose. There are lots of functions there that are likely only needed by some platforms, so making every platform create an override will complicate maintenance.

Perhaps someone CC&apos;ed on this bug remembers the reasons for this approach.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>689995</commentid>
    <comment_count>9</comment_count>
      <attachid>156816</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-08-08 00:08:17 -0700</bug_when>
    <thetext>Comment on attachment 156816
Fix PopupMenuWin errors

Attachment 156816 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/13461052</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>690508</commentid>
    <comment_count>10</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-08-08 10:51:10 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 156816 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=156816&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:9
&gt; &gt; +        ASSERT_NOT_REACHED is a bad way to make sure that a virtual function
&gt; &gt; +        gets an override, because it only fails at run-time in debug builds.
&gt; 
&gt; These are not exactly equivalent, but I&apos;m not sure if ASSERT_NOT_REACHED was used on purpose. There are lots of functions there that are likely only needed by some platforms, so making every platform create an override will complicate maintenance.

I&apos;m having a hard time understand what the original intent is here, as this is not a design pattern I have seen before and it looks dangerous.

I definitely agree with you that it adds some overhead to deriving from ScrollableArea.  However, both ASSERT_NOT_REACHED and a bogus return value in a base class virtual is a potential landmine for future developers who might see those functions in the interface and try to call them.  I feel that there&apos;s more overhead to knowing which functions are safe and correct to call than there is in just implementing them in the first place.

Another option might be to implement reasonable versions in ScrollableArea where possible, which would limit the amount of abstract functions that derived classes need to create.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>691011</commentid>
    <comment_count>11</comment_count>
      <attachid>157350</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-08-08 17:40:51 -0700</bug_when>
    <thetext>Created attachment 157350
Implement most funcs in ScrollableArea</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>691058</commentid>
    <comment_count>12</comment_count>
      <attachid>157350</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-08-08 18:27:44 -0700</bug_when>
    <thetext>Comment on attachment 157350
Implement most funcs in ScrollableArea

Attachment 157350 did not pass win-ews (win):
Output: http://queues.webkit.org/results/13464134</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>691108</commentid>
    <comment_count>13</comment_count>
      <attachid>157350</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-08-08 19:30:30 -0700</bug_when>
    <thetext>Comment on attachment 157350
Implement most funcs in ScrollableArea

Attachment 157350 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/13461389</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>695272</commentid>
    <comment_count>14</comment_count>
      <attachid>157350</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2012-08-14 12:48:40 -0700</bug_when>
    <thetext>Comment on attachment 157350
Implement most funcs in ScrollableArea

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

Looks good. Please don’t land without fixing Mac and Windows build. Please consider addressing my comments below as well.

&gt; Source/WebCore/platform/ScrollView.h:173
&gt; +    virtual IntSize scrollOffset() const { return visibleContentRect().location() - IntPoint(); } // Gets the scrolled position as an IntSize. Convenient for adding to other sizes.

Why does this function need to be virtual? Was it virtual before?

&gt; Source/WebCore/platform/ScrollableArea.cpp:408
&gt; +    return IntRect(scrollPosition().x(),
&gt; +                   scrollPosition().y(),
&gt; +                   std::max(0, visibleWidth() + verticalScrollbarWidth),
&gt; +                   std::max(0, visibleHeight() + horizontalScrollbarHeight));

WebKit coding style explicitly suggests avoiding lining up subsequent lines like this. Please change to match the coding style, or argume for getting that changed.

&gt; Source/WebCore/platform/chromium/FramelessScrollView.cpp:68
&gt; +    // FIXME

More detail here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>695324</commentid>
    <comment_count>15</comment_count>
      <attachid>157350</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-08-14 13:24:57 -0700</bug_when>
    <thetext>Comment on attachment 157350
Implement most funcs in ScrollableArea

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

Thanks for the review.  I&apos;ll clean up the build errors and submit this.  :)

&gt;&gt; Source/WebCore/platform/ScrollView.h:173
&gt;&gt; +    virtual IntSize scrollOffset() const { return visibleContentRect().location() - IntPoint(); } // Gets the scrolled position as an IntSize. Convenient for adding to other sizes.
&gt; 
&gt; Why does this function need to be virtual? Was it virtual before?

Oh, good catch.  Will fix.

&gt;&gt; Source/WebCore/platform/ScrollableArea.cpp:408
&gt;&gt; +                   std::max(0, visibleHeight() + horizontalScrollbarHeight));
&gt; 
&gt; WebKit coding style explicitly suggests avoiding lining up subsequent lines like this. Please change to match the coding style, or argume for getting that changed.

I borrowed this code from ScrollView::visibleContentRect, which uses this same style (but different variables) for its visibleContentRect implementation.

Where is this style explicitly suggested? The best that I can find is that http://www.webkit.org/coding/coding-style.html#braces-one-line implicitly gives an example of not vertically aligning function arguments.  However, that&apos;s a weak argument.  Am I missing something?

&gt;&gt; Source/WebCore/platform/chromium/FramelessScrollView.cpp:68
&gt;&gt; +    // FIXME
&gt; 
&gt; More detail here?

I&apos;ll just remove it.  I was mirroring the // FIXME in isActive() above to indicate that (likely) this value isn&apos;t entirely intended.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>702240</commentid>
    <comment_count>16</comment_count>
      <attachid>159994</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-08-22 13:00:36 -0700</bug_when>
    <thetext>Created attachment 159994
Fix WebKit2 / Win build errors</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>702254</commentid>
    <comment_count>17</comment_count>
      <attachid>159994</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-08-22 13:20:34 -0700</bug_when>
    <thetext>Comment on attachment 159994
Fix WebKit2 / Win build errors

Attachment 159994 did not pass win-ews (win):
Output: http://queues.webkit.org/results/13574103</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>702260</commentid>
    <comment_count>18</comment_count>
      <attachid>159998</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-08-22 13:24:11 -0700</bug_when>
    <thetext>Created attachment 159998
Fix WebPopupMenuProxyWin build error</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>702306</commentid>
    <comment_count>19</comment_count>
      <attachid>159998</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-08-22 13:57:25 -0700</bug_when>
    <thetext>Comment on attachment 159998
Fix WebPopupMenuProxyWin build error

Attachment 159998 did not pass win-ews (win):
Output: http://queues.webkit.org/results/13570369</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>702317</commentid>
    <comment_count>20</comment_count>
      <attachid>160007</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-08-22 14:01:44 -0700</bug_when>
    <thetext>Created attachment 160007
Fix WebPopupMenuProxyWin.cpp error</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>703134</commentid>
    <comment_count>21</comment_count>
      <attachid>160007</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-23 10:40:57 -0700</bug_when>
    <thetext>Comment on attachment 160007
Fix WebPopupMenuProxyWin.cpp error

Clearing flags on attachment: 160007

Committed r126444: &lt;http://trac.webkit.org/changeset/126444&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>703135</commentid>
    <comment_count>22</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-23 10:41:02 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>703190</commentid>
    <comment_count>23</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2012-08-23 11:36:30 -0700</bug_when>
    <thetext>Committed r126455: &lt;http://trac.webkit.org/changeset/126455&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>156783</attachid>
            <date>2012-08-06 16:16:55 -0700</date>
            <delta_ts>2012-08-06 16:56:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-93306-20120806161631.patch</filename>
            <type>text/plain</type>
            <size>30325</size>
            <attacher name="Adrienne Walker">enne</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI0ODA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDczYjAyODEyYzlhNDk0
NDhjMjQ1NDgwMGMwYjVmN2Q1MjQwMzFlMS4uZGQ2ZDFiYThkYjczMjhhNjE1MjdmY2ZmZTJkYzQ2
ZTQ4MTQ4MDM2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDEyLTA4LTA2ICBBZHJp
ZW5uZSBXYWxrZXIgIDxlbm5lQGdvb2dsZS5jb20+CisKKyAgICAgICAgQ29udmVydCBTY3JvbGxh
YmxlQXJlYSBBU1NFUlRfTk9UX1JFQUNIRUQgdmlydHVhbHMgaW50byBwdXJlIHZpcnR1YWxzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MzMwNgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCBpcyBhIGJhZCB3YXkgdG8gbWFrZSBzdXJlIHRoYXQgYSB2aXJ0dWFsIGZ1bmN0aW9u
CisgICAgICAgIGdldHMgYW4gb3ZlcnJpZGUsIGJlY2F1c2UgaXQgb25seSBmYWlscyBhdCBydW4t
dGltZSBpbiBkZWJ1ZyBidWlsZHMuCisKKyAgICAgICAgVG8gZml4IHRoaXMsIGNvbnZlcnQgdGhl
IHZpcnR1YWxzIGluIFNjcm9sbGFibGVBcmVhIHRoYXQgaGF2ZQorICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQgdG8gYmUgcHVyZSB2aXJ0dWFsIGFuZCBhZGQgaW1wbGVtZW50YXRpb25zIHdoZXJl
CisgICAgICAgIG5lY2Vzc2FyeSB0byBtYWtlIGRlcml2ZWQgY2xhc3NlcyBjb25jcmV0ZS4KKwor
ICAgICAgICBBZGRpdGlvbmFsbHksIGNvbnNpc3RlbnRseSBhZGQgT1ZFUlJJREUgZm9yIHZpcnR1
YWwgZnVuY3Rpb25zIGluCisgICAgICAgIGRlcml2ZWQgY2xhc3NlcyB0aGF0IG92ZXJyaWRlIFNj
cm9sbGFibGVBcmVhIG1ldGhvZHMuCisKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5oOgorICAg
ICAgICAoRnJhbWVWaWV3KToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxWaWV3Lmg6CisgICAg
ICAgIChTY3JvbGxWaWV3KToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5oOgor
ICAgICAgICAoU2Nyb2xsYWJsZUFyZWEpOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL0Zy
YW1lbGVzc1Njcm9sbFZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVsZXNzU2Nyb2xs
Vmlldzo6aXNPbkFjdGl2ZVBhZ2UpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJD
b3JlOjpGcmFtZWxlc3NTY3JvbGxWaWV3OjpzY3JvbGxhYmxlQXJlYUJvdW5kaW5nQm94KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9GcmFtZWxlc3NTY3JvbGxWaWV3Lmg6CisgICAgICAg
IChGcmFtZWxlc3NTY3JvbGxWaWV3KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGlzdEJv
eC5jcHA6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guaDoKKyAgICAgICAgKFJl
bmRlckxpc3RCb3gpOgorCiAyMDEyLTA4LTA2ICBBbm5hIENhdmVuZGVyICA8YW5uYWNjQGNocm9t
aXVtLm9yZz4KIAogICAgICAgICBNZWRpYVNvdXJjZSBzaG91bGQgdXNlIGl0J3Mgb3duIGxpc3Qg
b2Ygc291cmNlIFVSTHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggZWVkYzAyMjM4ZDNi
NzRiYjdjMDFlNzVkNzViOWQxNzc5OWQ0MTk4OC4uYzdiYWNkZmJhNjkzMGQ1ZGY3MDFmMDU5OTE0
M2YwNDBhYWIxNWE0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsNSArMSwyMyBA
QAogMjAxMi0wOC0wNiAgQWRyaWVubmUgV2Fsa2VyICA8ZW5uZUBnb29nbGUuY29tPgogCisgICAg
ICAgIENvbnZlcnQgU2Nyb2xsYWJsZUFyZWEgQVNTRVJUX05PVF9SRUFDSEVEIHZpcnR1YWxzIGlu
dG8gcHVyZSB2aXJ0dWFscworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9OTMzMDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBBZGQgaW1wbGVtZW50YXRpb25zIG9mIG1pc3NpbmcgU2Nyb2xsYWJsZUFyZWEgdmly
dHVhbHMuCisKKyAgICAgICAgKiBzcmMvU2Nyb2xsYmFyR3JvdXAuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpTY3JvbGxiYXJHcm91cDo6dmlzaWJsZUNvbnRlbnRSZWN0KToKKyAgICAgICAgKFdlYktp
dCk6CisgICAgICAgICogc3JjL1Njcm9sbGJhckdyb3VwLmg6CisgICAgICAgIChTY3JvbGxiYXJH
cm91cCk6CisgICAgICAgIChXZWJLaXQ6OlNjcm9sbGJhckdyb3VwOjpzY3JvbGxDb3JuZXJSZWN0
KToKKyAgICAgICAgKiB0ZXN0cy9TY3JvbGxBbmltYXRvck5vbmVUZXN0LmNwcDoKKyAgICAgICAg
KE1vY2tTY3JvbGxhYmxlQXJlYSk6CisKKzIwMTItMDgtMDYgIEFkcmllbm5lIFdhbGtlciAgPGVu
bmVAZ29vZ2xlLmNvbT4KKwogICAgICAgICBbY2hyb21pdW1dIFJFR1JFU1NJT04ocjEyNDcxNCk6
IHdlYmtpdF91bml0X3Rlc3RzIGFzc2VydHMgaW4gRGVidWcKICAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkzMjk3CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5o
CmluZGV4IDVkNjA5NGMzOGEyNWVlNTQxYWM5ODQzMGJkMGQxOWRjNmU1N2ZkMTUuLmY2ZTJkYjk3
MDIzMWQ5ZWY2ZGQzMDdhZGU1ZjgwY2EyMzNlOTM3MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRnJhbWVWaWV3LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcu
aApAQCAtMzc4LDIzICszNzgsMjEgQEAgcHJpdmF0ZToKIAogICAgIC8vIE92ZXJyaWRlIFNjcm9s
bFZpZXcgbWV0aG9kcyB0byBkbyBwb2ludCBjb252ZXJzaW9uIHZpYSByZW5kZXJlcnMsIGluIG9y
ZGVyIHRvCiAgICAgLy8gdGFrZSB0cmFuc2Zvcm1zIGludG8gYWNjb3VudC4KLSAgICB2aXJ0dWFs
IEludFJlY3QgY29udmVydFRvQ29udGFpbmluZ1ZpZXcoY29uc3QgSW50UmVjdCYpIGNvbnN0Owot
ICAgIHZpcnR1YWwgSW50UmVjdCBjb252ZXJ0RnJvbUNvbnRhaW5pbmdWaWV3KGNvbnN0IEludFJl
Y3QmKSBjb25zdDsKLSAgICB2aXJ0dWFsIEludFBvaW50IGNvbnZlcnRUb0NvbnRhaW5pbmdWaWV3
KGNvbnN0IEludFBvaW50JikgY29uc3Q7Ci0gICAgdmlydHVhbCBJbnRQb2ludCBjb252ZXJ0RnJv
bUNvbnRhaW5pbmdWaWV3KGNvbnN0IEludFBvaW50JikgY29uc3Q7CisgICAgdmlydHVhbCBJbnRS
ZWN0IGNvbnZlcnRUb0NvbnRhaW5pbmdWaWV3KGNvbnN0IEludFJlY3QmKSBjb25zdCBPVkVSUklE
RTsKKyAgICB2aXJ0dWFsIEludFJlY3QgY29udmVydEZyb21Db250YWluaW5nVmlldyhjb25zdCBJ
bnRSZWN0JikgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBJbnRQb2ludCBjb252ZXJ0VG9D
b250YWluaW5nVmlldyhjb25zdCBJbnRQb2ludCYpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1
YWwgSW50UG9pbnQgY29udmVydEZyb21Db250YWluaW5nVmlldyhjb25zdCBJbnRQb2ludCYpIGNv
bnN0IE9WRVJSSURFOwogCiAgICAgLy8gU2Nyb2xsYWJsZUFyZWEgaW50ZXJmYWNlCi0gICAgdmly
dHVhbCB2b2lkIGludmFsaWRhdGVTY3JvbGxiYXJSZWN0KFNjcm9sbGJhciosIGNvbnN0IEludFJl
Y3QmKTsKLSAgICB2aXJ0dWFsIGJvb2wgaXNBY3RpdmUoKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZv
aWQgZ2V0VGlja21hcmtzKFZlY3RvcjxJbnRSZWN0PiYpIGNvbnN0OwotICAgIHZpcnR1YWwgdm9p
ZCBzY3JvbGxUbyhjb25zdCBJbnRTaXplJik7Ci0gICAgdmlydHVhbCB2b2lkIHNldFZpc2libGVT
Y3JvbGxlclRodW1iUmVjdChjb25zdCBJbnRSZWN0Jik7Ci0gICAgdmlydHVhbCBib29sIGlzT25B
Y3RpdmVQYWdlKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBTY3JvbGxhYmxlQXJlYSogZW5jbG9zaW5n
U2Nyb2xsYWJsZUFyZWEoKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZVNjcm9s
bGJhclJlY3QoU2Nyb2xsYmFyKiwgY29uc3QgSW50UmVjdCYpIE9WRVJSSURFOworICAgIHZpcnR1
YWwgYm9vbCBpc0FjdGl2ZSgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBnZXRU
aWNrbWFya3MoVmVjdG9yPEludFJlY3Q+JikgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2
b2lkIHNjcm9sbFRvKGNvbnN0IEludFNpemUmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQg
c2V0VmlzaWJsZVNjcm9sbGVyVGh1bWJSZWN0KGNvbnN0IEludFJlY3QmKSBPVkVSUklERTsKKyAg
ICB2aXJ0dWFsIGJvb2wgaXNPbkFjdGl2ZVBhZ2UoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIFNjcm9sbGFibGVBcmVhKiBlbmNsb3NpbmdTY3JvbGxhYmxlQXJlYSgpIGNvbnN0IE9WRVJS
SURFOwogICAgIHZpcnR1YWwgSW50UmVjdCBzY3JvbGxhYmxlQXJlYUJvdW5kaW5nQm94KCkgY29u
c3QgT1ZFUlJJREU7Ci0KLSAgICB2b2lkIHVwZGF0ZVNjcm9sbGFibGVBcmVhU2V0KCk7Ci0KKyAg
ICB2aXJ0dWFsIGJvb2wgc2Nyb2xsQW5pbWF0b3JFbmFibGVkKCkgY29uc3QgT1ZFUlJJREU7CiAj
aWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogICAgIHZpcnR1YWwgR3JhcGhpY3NMYXll
ciogbGF5ZXJGb3JIb3Jpem9udGFsU2Nyb2xsYmFyKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmly
dHVhbCBHcmFwaGljc0xheWVyKiBsYXllckZvclZlcnRpY2FsU2Nyb2xsYmFyKCkgY29uc3QgT1ZF
UlJJREU7CkBAIC00MDQsOSArNDAyLDkgQEAgcHJpdmF0ZToKICNlbmRpZgogI2VuZGlmCiAKLSAg
ICB2aXJ0dWFsIHZvaWQgbm90aWZ5UGFnZVRoYXRDb250ZW50QXJlYVdpbGxQYWludCgpIGNvbnN0
OworICAgIHZvaWQgdXBkYXRlU2Nyb2xsYWJsZUFyZWFTZXQoKTsKIAotICAgIHZpcnR1YWwgYm9v
bCBzY3JvbGxBbmltYXRvckVuYWJsZWQoKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5
UGFnZVRoYXRDb250ZW50QXJlYVdpbGxQYWludCgpIGNvbnN0OwogCiAgICAgdm9pZCBkZWZlcnJl
ZFJlcGFpbnRUaW1lckZpcmVkKFRpbWVyPEZyYW1lVmlldz4qKTsKICAgICB2b2lkIGRvRGVmZXJy
ZWRSZXBhaW50cygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xs
Vmlldy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5oCmluZGV4IDgxYTU2
YjI1MWNlZDU0ZTA4MmE4NmU2OWIzNGI0NjZiNGQxNjliN2YuLjIwMjU5OTYzYzIyOTY1MzA5NGY0
OTAyOTVjMzE4M2ExMWJlZjIxZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Njcm9sbFZpZXcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmgK
QEAgLTUyLDEzICs1MiwxMyBAQCBjbGFzcyBTY3JvbGxWaWV3IDogcHVibGljIFdpZGdldCwgcHVi
bGljIFNjcm9sbGFibGVBcmVhIHsKIHB1YmxpYzoKICAgICB+U2Nyb2xsVmlldygpOwogCi0gICAg
Ly8gU2Nyb2xsYWJsZUFyZWEgZnVuY3Rpb25zLiAgRnJhbWVWaWV3IG92ZXJyaWRlcyB0aGUgb3Ro
ZXJzLgotICAgIHZpcnR1YWwgaW50IHNjcm9sbFNpemUoU2Nyb2xsYmFyT3JpZW50YXRpb24gb3Jp
ZW50YXRpb24pIGNvbnN0OwotICAgIHZpcnR1YWwgaW50IHNjcm9sbFBvc2l0aW9uKFNjcm9sbGJh
ciopIGNvbnN0OwotICAgIHZpcnR1YWwgdm9pZCBzZXRTY3JvbGxPZmZzZXQoY29uc3QgSW50UG9p
bnQmKTsKLSAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5UGFnZVRoYXRDb250ZW50QXJlYVdpbGxQYWlu
dCgpIGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCBpc1Njcm9sbENvcm5lclZpc2libGUoKSBjb25z
dDsKLSAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsYmFyU3R5bGVDaGFuZ2VkKGludCBuZXdTdHlsZSwg
Ym9vbCBmb3JjZVVwZGF0ZSk7CisgICAgLy8gU2Nyb2xsYWJsZUFyZWEgZnVuY3Rpb25zLgorICAg
IHZpcnR1YWwgaW50IHNjcm9sbFNpemUoU2Nyb2xsYmFyT3JpZW50YXRpb24pIGNvbnN0IE9WRVJS
SURFOworICAgIHZpcnR1YWwgaW50IHNjcm9sbFBvc2l0aW9uKFNjcm9sbGJhciopIGNvbnN0IE9W
RVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzZXRTY3JvbGxPZmZzZXQoY29uc3QgSW50UG9pbnQm
KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5UGFnZVRoYXRDb250ZW50QXJlYVdp
bGxQYWludCgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBpc1Njcm9sbENvcm5l
clZpc2libGUoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsYmFyU3R5
bGVDaGFuZ2VkKGludCBuZXdTdHlsZSwgYm9vbCBmb3JjZVVwZGF0ZSkgT1ZFUlJJREU7CiAKICAg
ICAvLyBOT1RFOiBUaGlzIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBieSB0aGUgb3ZlcnJpZGVuIHNl
dFNjcm9sbE9mZnNldCBmcm9tIFNjcm9sbGFibGVBcmVhLgogICAgIHZpcnR1YWwgdm9pZCBzY3Jv
bGxUbyhjb25zdCBJbnRTaXplJiBuZXdPZmZzZXQpOwpAQCAtNzQsMTEgKzc0LDExIEBAIHB1Ymxp
YzoKICAgICBjb25zdCBIYXNoU2V0PFJlZlB0cjxXaWRnZXQ+ID4qIGNoaWxkcmVuKCkgY29uc3Qg
eyByZXR1cm4gJm1fY2hpbGRyZW47IH0KICAgICB2aXJ0dWFsIHZvaWQgYWRkQ2hpbGQoUGFzc1Jl
ZlB0cjxXaWRnZXQ+KTsKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlQ2hpbGQoV2lkZ2V0Kik7Ci0g
ICAgCisKICAgICAvLyBJZiB0aGUgc2Nyb2xsIHZpZXcgZG9lcyBub3QgdXNlIGEgbmF0aXZlIHdp
ZGdldCwgdGhlbiBpdCB3aWxsIGhhdmUgY3Jvc3MtcGxhdGZvcm0gU2Nyb2xsYmFycy4gVGhlc2Ug
ZnVuY3Rpb25zCiAgICAgLy8gY2FuIGJlIHVzZWQgdG8gb2J0YWluIHRob3NlIHNjcm9sbGJhcnMu
Ci0gICAgdmlydHVhbCBTY3JvbGxiYXIqIGhvcml6b250YWxTY3JvbGxiYXIoKSBjb25zdCB7IHJl
dHVybiBtX2hvcml6b250YWxTY3JvbGxiYXIuZ2V0KCk7IH0KLSAgICB2aXJ0dWFsIFNjcm9sbGJh
ciogdmVydGljYWxTY3JvbGxiYXIoKSBjb25zdCB7IHJldHVybiBtX3ZlcnRpY2FsU2Nyb2xsYmFy
LmdldCgpOyB9CisgICAgdmlydHVhbCBTY3JvbGxiYXIqIGhvcml6b250YWxTY3JvbGxiYXIoKSBj
b25zdCBPVkVSUklERSB7IHJldHVybiBtX2hvcml6b250YWxTY3JvbGxiYXIuZ2V0KCk7IH0KKyAg
ICB2aXJ0dWFsIFNjcm9sbGJhciogdmVydGljYWxTY3JvbGxiYXIoKSBjb25zdCBPVkVSUklERSB7
IHJldHVybiBtX3ZlcnRpY2FsU2Nyb2xsYmFyLmdldCgpOyB9CiAgICAgYm9vbCBpc1Njcm9sbFZp
ZXdTY3JvbGxiYXIoY29uc3QgV2lkZ2V0KiBjaGlsZCkgY29uc3QgeyByZXR1cm4gaG9yaXpvbnRh
bFNjcm9sbGJhcigpID09IGNoaWxkIHx8IHZlcnRpY2FsU2Nyb2xsYmFyKCkgPT0gY2hpbGQ7IH0K
IAogICAgIHZvaWQgcG9zaXRpb25TY3JvbGxiYXJMYXllcnMoKTsKQEAgLTEwNyw3ICsxMDcsNyBA
QCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIGJvb2wgYXZvaWRTY3JvbGxiYXJDcmVhdGlvbigpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2V0U2Nyb2xsYmFyT3Zl
cmxheVN0eWxlKFNjcm9sbGJhck92ZXJsYXlTdHlsZSk7CisgICAgdmlydHVhbCB2b2lkIHNldFNj
cm9sbGJhck92ZXJsYXlTdHlsZShTY3JvbGxiYXJPdmVybGF5U3R5bGUpIE9WRVJSSURFOwogCiAg
ICAgLy8gQnkgZGVmYXVsdCB5b3Ugb25seSByZWNlaXZlIHBhaW50IGV2ZW50cyBmb3IgdGhlIGFy
ZWEgdGhhdCBpcyB2aXNpYmxlLiBJbiB0aGUgY2FzZSBvZiB1c2luZyBhCiAgICAgLy8gdGlsZWQg
YmFja2luZyBzdG9yZSwgdGhpcyBmdW5jdGlvbiBjYW4gYmUgc2V0LCBzbyB0aGF0IHRoZSB2aWV3
IHBhaW50cyB0aGUgZW50aXJlIGNvbnRlbnRzLgpAQCAtMTQzLDEyICsxNDMsMTIgQEAgcHVibGlj
OgogICAgIC8vIEluIHRoZSBzaXR1YXRpb24gdGhlIGNsaWVudCBpcyByZXNwb25zaWJsZSBmb3Ig
dGhlIHNjcm9sbGluZyAoaWUuIHdpdGggYSB0aWxlZCBiYWNraW5nIHN0b3JlKSBpdCBpcyBwb3Nz
aWJsZSB0byB1c2UKICAgICAvLyB0aGUgc2V0Rml4ZWRWaXNpYmxlQ29udGVudFJlY3QgaW5zdGVh
ZCBmb3IgdGhlIG1haW5mcmFtZSwgdGhvdWdoIHRoaXMgbXVzdCBiZSB1cGRhdGVkIG1hbnVhbGx5
LCBlLmcganVzdCBiZWZvcmUgcmVzdW1pbmcgdGhlIHBhZ2UKICAgICAvLyB3aGljaCB1c3VhbGx5
IHdpbGwgaGFwcGVuIHdoZW4gcGFubmluZywgcGluY2hpbmcgYW5kIHJvdGF0aW9uIGVuZHMsIG9y
IHdoZW4gc2NhbGUgb3IgcG9zaXRpb24gYXJlIGNoYW5nZWQgbWFudWFsbHkuCi0gICAgdmlydHVh
bCBJbnRSZWN0IHZpc2libGVDb250ZW50UmVjdChib29sIGluY2x1ZGVTY3JvbGxiYXJzID0gZmFs
c2UpIGNvbnN0OworICAgIHZpcnR1YWwgSW50UmVjdCB2aXNpYmxlQ29udGVudFJlY3QoYm9vbCBp
bmNsdWRlU2Nyb2xsYmFycyA9IGZhbHNlKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZv
aWQgc2V0Rml4ZWRWaXNpYmxlQ29udGVudFJlY3QoY29uc3QgSW50UmVjdCYgdmlzaWJsZUNvbnRl
bnRSZWN0KSB7IG1fZml4ZWRWaXNpYmxlQ29udGVudFJlY3QgPSB2aXNpYmxlQ29udGVudFJlY3Q7
IH0KICAgICBJbnRSZWN0IGZpeGVkVmlzaWJsZUNvbnRlbnRSZWN0KCkgY29uc3QgeyByZXR1cm4g
bV9maXhlZFZpc2libGVDb250ZW50UmVjdDsgfQogICAgIEludFNpemUgdmlzaWJsZVNpemUoKSBj
b25zdCB7IHJldHVybiB2aXNpYmxlQ29udGVudFJlY3QoKS5zaXplKCk7IH0KLSAgICBpbnQgdmlz
aWJsZVdpZHRoKCkgY29uc3QgeyByZXR1cm4gdmlzaWJsZUNvbnRlbnRSZWN0KCkud2lkdGgoKTsg
fQotICAgIGludCB2aXNpYmxlSGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gdmlzaWJsZUNvbnRlbnRS
ZWN0KCkuaGVpZ2h0KCk7IH0KKyAgICB2aXJ0dWFsIGludCB2aXNpYmxlV2lkdGgoKSBjb25zdCBP
VkVSUklERSB7IHJldHVybiB2aXNpYmxlQ29udGVudFJlY3QoKS53aWR0aCgpOyB9CisgICAgdmly
dHVhbCBpbnQgdmlzaWJsZUhlaWdodCgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIHZpc2libGVD
b250ZW50UmVjdCgpLmhlaWdodCgpOyB9CiAKICAgICAvLyBGdW5jdGlvbnMgZm9yIGdldHRpbmcv
c2V0dGluZyB0aGUgc2l6ZSB3ZWJraXQgc2hvdWxkIHVzZSB0byBsYXlvdXQgdGhlIGNvbnRlbnRz
LiBCeSBkZWZhdWx0IHRoaXMgaXMgdGhlIHNhbWUgYXMgdGhlIHZpc2libGUKICAgICAvLyBjb250
ZW50IHNpemUuIEV4cGxpY2l0bHkgc2V0dGluZyBhIGxheW91dCBzaXplIHZhbHVlIHdpbGwgY2F1
c2Ugd2Via2l0IHRvIGxheW91dCB0aGUgY29udGVudHMgdXNpbmcgdGhpcyBzaXplIGluc3RlYWQu
CkBAIC0xNjIsMjIgKzE2MiwyMiBAQCBwdWJsaWM6CiAgICAgCiAgICAgLy8gRnVuY3Rpb25zIGZv
ciBnZXR0aW5nL3NldHRpbmcgdGhlIHNpemUgb2YgdGhlIGRvY3VtZW50IGNvbnRhaW5lZCBpbnNp
ZGUgdGhlIFNjcm9sbFZpZXcgKGFzIGFuIEludFNpemUgb3IgYXMgaW5kaXZpZHVhbCB3aWR0aCBh
bmQgaGVpZ2h0CiAgICAgLy8gdmFsdWVzKS4KLSAgICBJbnRTaXplIGNvbnRlbnRzU2l6ZSgpIGNv
bnN0OyAvLyBBbHdheXMgYXQgbGVhc3QgYXMgYmlnIGFzIHRoZSB2aXNpYmxlV2lkdGgoKS92aXNp
YmxlSGVpZ2h0KCkuCisgICAgdmlydHVhbCBJbnRTaXplIGNvbnRlbnRzU2l6ZSgpIGNvbnN0IE9W
RVJSSURFOyAvLyBBbHdheXMgYXQgbGVhc3QgYXMgYmlnIGFzIHRoZSB2aXNpYmxlV2lkdGgoKS92
aXNpYmxlSGVpZ2h0KCkuCiAgICAgaW50IGNvbnRlbnRzV2lkdGgoKSBjb25zdCB7IHJldHVybiBj
b250ZW50c1NpemUoKS53aWR0aCgpOyB9CiAgICAgaW50IGNvbnRlbnRzSGVpZ2h0KCkgY29uc3Qg
eyByZXR1cm4gY29udGVudHNTaXplKCkuaGVpZ2h0KCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0
Q29udGVudHNTaXplKGNvbnN0IEludFNpemUmKTsKIAogICAgIC8vIEZ1bmN0aW9ucyBmb3IgcXVl
cnlpbmcgdGhlIGN1cnJlbnQgc2Nyb2xsZWQgcG9zaXRpb24gKGJvdGggYXMgYSBwb2ludCwgYSBz
aXplLCBvciBhcyBpbmRpdmlkdWFsIFggYW5kIFkgdmFsdWVzKS4KLSAgICBJbnRQb2ludCBzY3Jv
bGxQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIHZpc2libGVDb250ZW50UmVjdCgpLmxvY2F0aW9u
KCk7IH0KLSAgICBJbnRTaXplIHNjcm9sbE9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIHZpc2libGVD
b250ZW50UmVjdCgpLmxvY2F0aW9uKCkgLSBJbnRQb2ludCgpOyB9IC8vIEdldHMgdGhlIHNjcm9s
bGVkIHBvc2l0aW9uIGFzIGFuIEludFNpemUuIENvbnZlbmllbnQgZm9yIGFkZGluZyB0byBvdGhl
ciBzaXplcy4KLSAgICBJbnRQb2ludCBtYXhpbXVtU2Nyb2xsUG9zaXRpb24oKSBjb25zdDsgLy8g
VGhlIG1heGltdW0gcG9zaXRpb24gd2UgY2FuIGJlIHNjcm9sbGVkIHRvLgotICAgIEludFBvaW50
IG1pbmltdW1TY3JvbGxQb3NpdGlvbigpIGNvbnN0OyAvLyBUaGUgbWluaW11bSBwb3NpdGlvbiB3
ZSBjYW4gYmUgc2Nyb2xsZWQgdG8uCisgICAgdmlydHVhbCBJbnRQb2ludCBzY3JvbGxQb3NpdGlv
bigpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIHZpc2libGVDb250ZW50UmVjdCgpLmxvY2F0aW9u
KCk7IH0KKyAgICB2aXJ0dWFsIEludFNpemUgc2Nyb2xsT2Zmc2V0KCkgY29uc3QgT1ZFUlJJREUg
eyByZXR1cm4gdmlzaWJsZUNvbnRlbnRSZWN0KCkubG9jYXRpb24oKSAtIEludFBvaW50KCk7IH0g
Ly8gR2V0cyB0aGUgc2Nyb2xsZWQgcG9zaXRpb24gYXMgYW4gSW50U2l6ZS4gQ29udmVuaWVudCBm
b3IgYWRkaW5nIHRvIG90aGVyIHNpemVzLgorICAgIHZpcnR1YWwgSW50UG9pbnQgbWF4aW11bVNj
cm9sbFBvc2l0aW9uKCkgY29uc3QgT1ZFUlJJREU7IC8vIFRoZSBtYXhpbXVtIHBvc2l0aW9uIHdl
IGNhbiBiZSBzY3JvbGxlZCB0by4KKyAgICB2aXJ0dWFsIEludFBvaW50IG1pbmltdW1TY3JvbGxQ
b3NpdGlvbigpIGNvbnN0IE9WRVJSSURFOyAvLyBUaGUgbWluaW11bSBwb3NpdGlvbiB3ZSBjYW4g
YmUgc2Nyb2xsZWQgdG8uCiAgICAgLy8gQWRqdXN0IHRoZSBwYXNzZWQgaW4gc2Nyb2xsIHBvc2l0
aW9uIHRvIGtlZXAgaXQgYmV0d2VlbiB0aGUgbWluaW11bSBhbmQgbWF4aW11bSBwb3NpdGlvbnMu
CiAgICAgSW50UG9pbnQgYWRqdXN0U2Nyb2xsUG9zaXRpb25XaXRoaW5SYW5nZShjb25zdCBJbnRQ
b2ludCYpIGNvbnN0OyAKICAgICBpbnQgc2Nyb2xsWCgpIGNvbnN0IHsgcmV0dXJuIHNjcm9sbFBv
c2l0aW9uKCkueCgpOyB9CiAgICAgaW50IHNjcm9sbFkoKSBjb25zdCB7IHJldHVybiBzY3JvbGxQ
b3NpdGlvbigpLnkoKTsgfQogCi0gICAgSW50U2l6ZSBvdmVyaGFuZ0Ftb3VudCgpIGNvbnN0Owor
ICAgIHZpcnR1YWwgSW50U2l6ZSBvdmVyaGFuZ0Ftb3VudCgpIGNvbnN0IE9WRVJSSURFOwogCiAg
ICAgdm9pZCBjYWNoZUN1cnJlbnRTY3JvbGxQb3NpdGlvbigpIHsgbV9jYWNoZWRTY3JvbGxQb3Np
dGlvbiA9IHNjcm9sbFBvc2l0aW9uKCk7IH0KICAgICBJbnRQb2ludCBjYWNoZWRTY3JvbGxQb3Np
dGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVkU2Nyb2xsUG9zaXRpb247IH0KQEAgLTI3Nywx
MCArMjc3LDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRTY3JvbGxDb3JuZXIo
R3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYgY29ybmVyUmVjdCk7CiAgICAgdmlydHVh
bCB2b2lkIHBhaW50U2Nyb2xsYmFyKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhciosIGNvbnN0
IEludFJlY3QmKTsKIAotICAgIHZpcnR1YWwgSW50UmVjdCBjb252ZXJ0RnJvbVNjcm9sbGJhclRv
Q29udGFpbmluZ1ZpZXcoY29uc3QgU2Nyb2xsYmFyKiwgY29uc3QgSW50UmVjdCYpIGNvbnN0Owot
ICAgIHZpcnR1YWwgSW50UmVjdCBjb252ZXJ0RnJvbUNvbnRhaW5pbmdWaWV3VG9TY3JvbGxiYXIo
Y29uc3QgU2Nyb2xsYmFyKiwgY29uc3QgSW50UmVjdCYpIGNvbnN0OwotICAgIHZpcnR1YWwgSW50
UG9pbnQgY29udmVydEZyb21TY3JvbGxiYXJUb0NvbnRhaW5pbmdWaWV3KGNvbnN0IFNjcm9sbGJh
ciosIGNvbnN0IEludFBvaW50JikgY29uc3Q7Ci0gICAgdmlydHVhbCBJbnRQb2ludCBjb252ZXJ0
RnJvbUNvbnRhaW5pbmdWaWV3VG9TY3JvbGxiYXIoY29uc3QgU2Nyb2xsYmFyKiwgY29uc3QgSW50
UG9pbnQmKSBjb25zdDsKKyAgICB2aXJ0dWFsIEludFJlY3QgY29udmVydEZyb21TY3JvbGxiYXJU
b0NvbnRhaW5pbmdWaWV3KGNvbnN0IFNjcm9sbGJhciosIGNvbnN0IEludFJlY3QmKSBjb25zdCBP
VkVSUklERTsKKyAgICB2aXJ0dWFsIEludFJlY3QgY29udmVydEZyb21Db250YWluaW5nVmlld1Rv
U2Nyb2xsYmFyKGNvbnN0IFNjcm9sbGJhciosIGNvbnN0IEludFJlY3QmKSBjb25zdCBPVkVSUklE
RTsKKyAgICB2aXJ0dWFsIEludFBvaW50IGNvbnZlcnRGcm9tU2Nyb2xsYmFyVG9Db250YWluaW5n
Vmlldyhjb25zdCBTY3JvbGxiYXIqLCBjb25zdCBJbnRQb2ludCYpIGNvbnN0IE9WRVJSSURFOwor
ICAgIHZpcnR1YWwgSW50UG9pbnQgY29udmVydEZyb21Db250YWluaW5nVmlld1RvU2Nyb2xsYmFy
KGNvbnN0IFNjcm9sbGJhciosIGNvbnN0IEludFBvaW50JikgY29uc3QgT1ZFUlJJREU7CiAKICAg
ICBib29sIGNvbnRhaW5zU2Nyb2xsYWJsZUFyZWFXaXRoT3ZlcmxheVNjcm9sbGJhcnMoKSBjb25z
dCB7IHJldHVybiBtX2NvbnRhaW5zU2Nyb2xsYWJsZUFyZWFXaXRoT3ZlcmxheVNjcm9sbGJhcnM7
IH0KICAgICB2b2lkIHNldENvbnRhaW5zU2Nyb2xsYWJsZUFyZWFXaXRoT3ZlcmxheVNjcm9sbGJh
cnMoYm9vbCBjb250YWlucykgeyBtX2NvbnRhaW5zU2Nyb2xsYWJsZUFyZWFXaXRoT3ZlcmxheVNj
cm9sbGJhcnMgPSBjb250YWluczsgfQpAQCAtMzAyLDcgKzMwMiw3IEBAIHByb3RlY3RlZDoKICAg
ICB2b2lkIHNldEhhc1ZlcnRpY2FsU2Nyb2xsYmFyKGJvb2wpOwogCiAgICAgdmlydHVhbCB2b2lk
IHVwZGF0ZVNjcm9sbENvcm5lcigpOwotICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlU2Nyb2xs
Q29ybmVyUmVjdChjb25zdCBJbnRSZWN0Jik7CisgICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGVT
Y3JvbGxDb3JuZXJSZWN0KGNvbnN0IEludFJlY3QmKSBPVkVSUklERTsKIAogICAgIC8vIFNjcm9s
bCB0aGUgY29udGVudCBieSBibGl0dGluZyB0aGUgcGl4ZWxzLgogICAgIHZpcnR1YWwgYm9vbCBz
Y3JvbGxDb250ZW50c0Zhc3RQYXRoKGNvbnN0IEludFNpemUmIHNjcm9sbERlbHRhLCBjb25zdCBJ
bnRSZWN0JiByZWN0VG9TY3JvbGwsIGNvbnN0IEludFJlY3QmIGNsaXBSZWN0KTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5oCmluZGV4IDVhMjc4YTliNWI5YzdjMTg1MWE0
YzUzM2M2MGI1NDUxNTNmY2VkM2EuLjM1ZjFmZDJlNGM4MTcyN2RkYTczMzljMDgyNWMwOWE0NDg5
ZWYyZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVh
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuaApAQCAtMTMz
LDI3ICsxMzMsMjcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgU2Nyb2xsYmFyKiBob3Jpem9udGFs
U2Nyb2xsYmFyKCkgY29uc3QgeyByZXR1cm4gMDsgfQogICAgIHZpcnR1YWwgU2Nyb2xsYmFyKiB2
ZXJ0aWNhbFNjcm9sbGJhcigpIGNvbnN0IHsgcmV0dXJuIDA7IH0KIAotICAgIHZpcnR1YWwgSW50
UG9pbnQgc2Nyb2xsUG9zaXRpb24oKSBjb25zdCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1
cm4gSW50UG9pbnQoKTsgfQotICAgIHZpcnR1YWwgSW50UG9pbnQgbWluaW11bVNjcm9sbFBvc2l0
aW9uKCkgY29uc3QgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIEludFBvaW50KCk7IH0K
LSAgICB2aXJ0dWFsIEludFBvaW50IG1heGltdW1TY3JvbGxQb3NpdGlvbigpIGNvbnN0IHsgQVNT
RVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiBJbnRQb2ludCgpOyB9Ci0gICAgdmlydHVhbCBJbnRS
ZWN0IHZpc2libGVDb250ZW50UmVjdChib29sIC8qaW5jbHVkZVNjcm9sbGJhcnMqLyA9IGZhbHNl
KSBjb25zdCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gSW50UmVjdCgpOyB9Ci0gICAg
dmlydHVhbCBpbnQgdmlzaWJsZUhlaWdodCgpIGNvbnN0IHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7
IHJldHVybiAwOyB9Ci0gICAgdmlydHVhbCBpbnQgdmlzaWJsZVdpZHRoKCkgY29uc3QgeyBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIDA7IH0KLSAgICB2aXJ0dWFsIEludFNpemUgY29udGVu
dHNTaXplKCkgY29uc3QgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIEludFNpemUoKTsg
fQotICAgIHZpcnR1YWwgSW50U2l6ZSBvdmVyaGFuZ0Ftb3VudCgpIGNvbnN0IHsgQVNTRVJUX05P
VF9SRUFDSEVEKCk7IHJldHVybiBJbnRTaXplKCk7IH0KKyAgICB2aXJ0dWFsIEludFBvaW50IHNj
cm9sbFBvc2l0aW9uKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgSW50UG9pbnQgbWluaW11bVNj
cm9sbFBvc2l0aW9uKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgSW50UG9pbnQgbWF4aW11bVNj
cm9sbFBvc2l0aW9uKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgSW50UmVjdCB2aXNpYmxlQ29u
dGVudFJlY3QoYm9vbCAvKmluY2x1ZGVTY3JvbGxiYXJzKi8gPSBmYWxzZSkgY29uc3QgPSAwOwor
ICAgIHZpcnR1YWwgaW50IHZpc2libGVIZWlnaHQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBp
bnQgdmlzaWJsZVdpZHRoKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgSW50U2l6ZSBjb250ZW50
c1NpemUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBJbnRTaXplIG92ZXJoYW5nQW1vdW50KCkg
Y29uc3QgPSAwOwogICAgIHZpcnR1YWwgSW50UG9pbnQgY3VycmVudE1vdXNlUG9zaXRpb24oKSBj
b25zdCB7IHJldHVybiBJbnRQb2ludCgpOyB9CiAKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkU3Vz
cGVuZFNjcm9sbEFuaW1hdGlvbnMoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVh
bCB2b2lkIHNjcm9sbGJhclN0eWxlQ2hhbmdlZChpbnQgLypuZXdTdHlsZSovLCBib29sIC8qZm9y
Y2VVcGRhdGUqLykgeyB9CiAgICAgdmlydHVhbCB2b2lkIHNldFZpc2libGVTY3JvbGxlclRodW1i
UmVjdChjb25zdCBJbnRSZWN0JikgeyB9CiAKLSAgICB2aXJ0dWFsIGJvb2wgaXNPbkFjdGl2ZVBh
Z2UoKSBjb25zdCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gdHJ1ZTsgfQorICAgIHZp
cnR1YWwgYm9vbCBpc09uQWN0aXZlUGFnZSgpIGNvbnN0ID0gMDsKICAgICAKICAgICAvLyBOb3Rl
IHRoYXQgdGhpcyBvbmx5IHJldHVybnMgc2Nyb2xsYWJsZSBhcmVhcyB0aGF0IGNhbiBhY3R1YWxs
eSBiZSBzY3JvbGxlZC4KICAgICB2aXJ0dWFsIFNjcm9sbGFibGVBcmVhKiBlbmNsb3NpbmdTY3Jv
bGxhYmxlQXJlYSgpIGNvbnN0ID0gMDsKIAogICAgIC8vIFJldHVybnMgdGhlIGJvdW5kaW5nIGJv
eCBvZiB0aGlzIHNjcm9sbGFibGUgYXJlYSwgaW4gdGhlIGNvb3JkaW5hdGUgc3lzdGVtIG9mIHRo
ZSBlbmNsb3Npbmcgc2Nyb2xsIHZpZXcuCi0gICAgdmlydHVhbCBJbnRSZWN0IHNjcm9sbGFibGVB
cmVhQm91bmRpbmdCb3goKSBjb25zdCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gSW50
UmVjdCgpOyB9CisgICAgdmlydHVhbCBJbnRSZWN0IHNjcm9sbGFibGVBcmVhQm91bmRpbmdCb3go
KSBjb25zdCA9IDA7CiAKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkUnViYmVyQmFuZEluRGlyZWN0
aW9uKFNjcm9sbERpcmVjdGlvbikgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9GcmFtZWxlc3NTY3JvbGxWaWV3LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0ZyYW1lbGVzc1Njcm9sbFZpZXcu
Y3BwCmluZGV4IDczYmVjMGRmODYzZDk0NDE4OGMwMGI4ODVjNzNkODFhNTBlNTk3ZDEuLjgwM2I3
YzUyNDY3MjZkNmMzMTI1NDJiYWM4ZjU2NzJmOTYwYjhmZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0ZyYW1lbGVzc1Njcm9sbFZpZXcuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0ZyYW1lbGVzc1Njcm9sbFZpZXcuY3BwCkBA
IC02Myw2ICs2MywxNyBAQCBTY3JvbGxhYmxlQXJlYSogRnJhbWVsZXNzU2Nyb2xsVmlldzo6ZW5j
bG9zaW5nU2Nyb2xsYWJsZUFyZWEoKSBjb25zdAogICAgIHJldHVybiAwOwogfQogCitib29sIEZy
YW1lbGVzc1Njcm9sbFZpZXc6OmlzT25BY3RpdmVQYWdlKCkgY29uc3QKK3sKKyAgICAvLyBGSVhN
RQorICAgIHJldHVybiBpc0FjdGl2ZSgpOworfQorCitJbnRSZWN0IEZyYW1lbGVzc1Njcm9sbFZp
ZXc6OnNjcm9sbGFibGVBcmVhQm91bmRpbmdCb3goKSBjb25zdAoreworICAgIHJldHVybiB3aW5k
b3dDbGlwUmVjdChmYWxzZSk7Cit9CisKIHZvaWQgRnJhbWVsZXNzU2Nyb2xsVmlldzo6aW52YWxp
ZGF0ZVJlY3QoY29uc3QgSW50UmVjdCYgcmVjdCkKIHsKICAgICBpZiAoSG9zdFdpbmRvdyogaCA9
IGhvc3RXaW5kb3coKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9t
aXVtL0ZyYW1lbGVzc1Njcm9sbFZpZXcuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9t
aXVtL0ZyYW1lbGVzc1Njcm9sbFZpZXcuaAppbmRleCAzNDk4NDc1ZGNkZTU5MDk4NmQyZDNlYjNi
ZGU1ZTQwNTBiMjU5ZGUzLi5hYzFlZWNkMWMzYjQ4MmFlODFiNmU3YTY1MzE2NDQxZmZmZWMwMjJh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9GcmFtZWxlc3NT
Y3JvbGxWaWV3LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vRnJhbWVs
ZXNzU2Nyb2xsVmlldy5oCkBAIC03NCw5ICs3NCwxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAj
ZW5kaWYKIAogICAgICAgICAvLyBTY3JvbGxhYmxlQXJlYSBwdWJsaWMgbWV0aG9kczoKLSAgICAg
ICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGVTY3JvbGxiYXJSZWN0KFNjcm9sbGJhciosIGNvbnN0
IEludFJlY3QmKTsKLSAgICAgICAgdmlydHVhbCBib29sIGlzQWN0aXZlKCkgY29uc3Q7Ci0gICAg
ICAgIHZpcnR1YWwgU2Nyb2xsYWJsZUFyZWEqIGVuY2xvc2luZ1Njcm9sbGFibGVBcmVhKCkgY29u
c3Q7CisgICAgICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlU2Nyb2xsYmFyUmVjdChTY3JvbGxi
YXIqLCBjb25zdCBJbnRSZWN0JikgT1ZFUlJJREU7CisgICAgICAgIHZpcnR1YWwgYm9vbCBpc0Fj
dGl2ZSgpIGNvbnN0IE9WRVJSSURFOworICAgICAgICB2aXJ0dWFsIFNjcm9sbGFibGVBcmVhKiBl
bmNsb3NpbmdTY3JvbGxhYmxlQXJlYSgpIGNvbnN0IE9WRVJSSURFOworICAgICAgICB2aXJ0dWFs
IGJvb2wgaXNPbkFjdGl2ZVBhZ2UoKSBjb25zdCBPVkVSUklERTsKKyAgICAgICAgdmlydHVhbCBJ
bnRSZWN0IHNjcm9sbGFibGVBcmVhQm91bmRpbmdCb3goKSBjb25zdCBPVkVSUklERTsKIAogICAg
ICAgICAvLyBXaWRnZXQgcHVibGljIG1ldGhvZHM6CiAgICAgICAgIHZpcnR1YWwgdm9pZCBpbnZh
bGlkYXRlUmVjdChjb25zdCBJbnRSZWN0Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGlzdEJveC5jcHAKaW5kZXggMmY1YWUyYjZjNzdmYjIxNGI2YTI1ZTUxYTEzNzVmYmYyZTYz
NmJiNi4uNDBlYjM3MTViYjQyNzFlOWZjOWQ0MWMxNDYwNDFhZjNlNmM5NjNmNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcApAQCAtNjMyLDYgKzYzMiwzNCBA
QCBJbnRQb2ludCBSZW5kZXJMaXN0Qm94OjpzY3JvbGxQb3NpdGlvbigpIGNvbnN0CiAgICAgcmV0
dXJuIEludFBvaW50KDAsIG1faW5kZXhPZmZzZXQpOwogfQogCitJbnRQb2ludCBSZW5kZXJMaXN0
Qm94OjptaW5pbXVtU2Nyb2xsUG9zaXRpb24oKSBjb25zdCBPVkVSUklERQoreworICAgIHJldHVy
biBJbnRQb2ludCgpOworfQorCitJbnRQb2ludCBSZW5kZXJMaXN0Qm94OjptYXhpbXVtU2Nyb2xs
UG9zaXRpb24oKSBjb25zdCBPVkVSUklERQoreworICAgIHJldHVybiBJbnRQb2ludChzY3JvbGxT
aXplKEhvcml6b250YWxTY3JvbGxiYXIpLCBzY3JvbGxTaXplKFZlcnRpY2FsU2Nyb2xsYmFyKSk7
Cit9CisKK0ludFJlY3QgUmVuZGVyTGlzdEJveDo6dmlzaWJsZUNvbnRlbnRSZWN0KGJvb2wgaW5j
bHVkZVNjcm9sbGJhcnMpIGNvbnN0IE9WRVJSSURFCit7CisgICAgaW50IHZlcnRpY2FsU2Nyb2xs
YmFyV2lkdGggPSAwOworICAgIGludCBob3Jpem9udGFsU2Nyb2xsYmFySGVpZ2h0ID0gMDsKKwor
ICAgIGlmIChpbmNsdWRlU2Nyb2xsYmFycykgeworICAgICAgICBpZiAoU2Nyb2xsYmFyKiB2ZXJ0
aWNhbEJhciA9IHZlcnRpY2FsU2Nyb2xsYmFyKCkpCisgICAgICAgICAgICB2ZXJ0aWNhbFNjcm9s
bGJhcldpZHRoID0gIXZlcnRpY2FsQmFyLT5pc092ZXJsYXlTY3JvbGxiYXIoKSA/IHZlcnRpY2Fs
QmFyLT53aWR0aCgpIDogMDsKKyAgICAgICAgaWYgKFNjcm9sbGJhciogaG9yaXpvbnRhbEJhciA9
IGhvcml6b250YWxTY3JvbGxiYXIoKSkKKyAgICAgICAgICAgIGhvcml6b250YWxTY3JvbGxiYXJI
ZWlnaHQgPSAhaG9yaXpvbnRhbEJhci0+aXNPdmVybGF5U2Nyb2xsYmFyKCkgPyBob3Jpem9udGFs
QmFyLT5oZWlnaHQoKSA6IDA7CisgICAgfQorCisgICAgcmV0dXJuIEludFJlY3Qoc2Nyb2xsUG9z
aXRpb24oKS54KCksCisgICAgICAgICAgICAgICAgICAgc2Nyb2xsUG9zaXRpb24oKS55KCksCisg
ICAgICAgICAgICAgICAgICAgc3RkOjptYXgoMCwgdmlzaWJsZVdpZHRoKCkgKyB2ZXJ0aWNhbFNj
cm9sbGJhcldpZHRoKSwKKyAgICAgICAgICAgICAgICAgICBzdGQ6Om1heCgwLCB2aXNpYmxlSGVp
Z2h0KCkgKyBob3Jpem9udGFsU2Nyb2xsYmFySGVpZ2h0KSk7Cit9CisKIHZvaWQgUmVuZGVyTGlz
dEJveDo6c2Nyb2xsVG8oaW50IG5ld09mZnNldCkKIHsKICAgICBpZiAobmV3T2Zmc2V0ID09IG1f
aW5kZXhPZmZzZXQpCkBAIC03OTUsNiArODIzLDExIEBAIEludFNpemUgUmVuZGVyTGlzdEJveDo6
Y29udGVudHNTaXplKCkgY29uc3QKICAgICByZXR1cm4gSW50U2l6ZShzY3JvbGxXaWR0aCgpLCBz
Y3JvbGxIZWlnaHQoKSk7CiB9CiAKK0ludFNpemUgUmVuZGVyTGlzdEJveDo6b3ZlcmhhbmdBbW91
bnQoKSBjb25zdCBPVkVSUklERQoreworICAgIHJldHVybiBJbnRTaXplKCk7Cit9CisKIGludCBS
ZW5kZXJMaXN0Qm94Ojp2aXNpYmxlSGVpZ2h0KCkgY29uc3QKIHsKICAgICByZXR1cm4gaGVpZ2h0
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5o
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guaAppbmRleCA2MDM4YzQz
MTY0ZmFhNzJmYjY4ZjhmOGMyN2I4NDVlYzczNWY4YzE4Li45ZGVjNjY5ODhhM2U1ZjUyZTIyNWEy
ZDE2MDkwN2E4YzhhMDE3MzhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGlzdEJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0
Qm94LmgKQEAgLTk3LDI4ICs5NywzMiBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBub2Rl
QXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1bHQmLCBjb25zdCBIaXRU
ZXN0UG9pbnQmIHBvaW50SW5Db250YWluZXIsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRl
ZE9mZnNldCwgSGl0VGVzdEFjdGlvbikgT1ZFUlJJREU7CiAKICAgICAvLyBTY3JvbGxhYmxlQXJl
YSBpbnRlcmZhY2UuCi0gICAgdmlydHVhbCBpbnQgc2Nyb2xsU2l6ZShTY3JvbGxiYXJPcmllbnRh
dGlvbikgY29uc3Q7Ci0gICAgdmlydHVhbCBpbnQgc2Nyb2xsUG9zaXRpb24oU2Nyb2xsYmFyKikg
Y29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIHNldFNjcm9sbE9mZnNldChjb25zdCBJbnRQb2ludCYp
OworICAgIHZpcnR1YWwgaW50IHNjcm9sbFNpemUoU2Nyb2xsYmFyT3JpZW50YXRpb24pIGNvbnN0
IE9WRVJSSURFOworICAgIHZpcnR1YWwgaW50IHNjcm9sbFBvc2l0aW9uKFNjcm9sbGJhciopIGNv
bnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgSW50UG9pbnQgbWluaW11bVNjcm9sbFBvc2l0aW9u
KCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBJbnRQb2ludCBtYXhpbXVtU2Nyb2xsUG9z
aXRpb24oKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIEludFJlY3QgdmlzaWJsZUNvbnRl
bnRSZWN0KGJvb2wgLyppbmNsdWRlU2Nyb2xsYmFycyovID0gZmFsc2UpIGNvbnN0IE9WRVJSSURF
OworICAgIHZpcnR1YWwgdm9pZCBzZXRTY3JvbGxPZmZzZXQoY29uc3QgSW50UG9pbnQmKSBPVkVS
UklERTsKICAgICB2aXJ0dWFsIEludFBvaW50IHNjcm9sbFBvc2l0aW9uKCkgY29uc3QgT1ZFUlJJ
REU7Ci0gICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGVTY3JvbGxiYXJSZWN0KFNjcm9sbGJhcios
IGNvbnN0IEludFJlY3QmKTsKLSAgICB2aXJ0dWFsIGJvb2wgaXNBY3RpdmUoKSBjb25zdDsKLSAg
ICB2aXJ0dWFsIGJvb2wgaXNTY3JvbGxDb3JuZXJWaXNpYmxlKCkgY29uc3QgeyByZXR1cm4gZmFs
c2U7IH0gLy8gV2UgZG9uJ3Qgc3VwcG9ydCByZXNpemUgb24gbGlzdCBib3hlcyB5ZXQuIElmIHdl
IGRpZCB0aGVzZSB3b3VsZCBoYXZlIHRvIGNoYW5nZS4KLSAgICB2aXJ0dWFsIEludFJlY3Qgc2Ny
b2xsQ29ybmVyUmVjdCgpIGNvbnN0IHsgcmV0dXJuIEludFJlY3QoKTsgfQotICAgIHZpcnR1YWwg
dm9pZCBpbnZhbGlkYXRlU2Nyb2xsQ29ybmVyUmVjdChjb25zdCBJbnRSZWN0JikgeyB9Ci0gICAg
dmlydHVhbCBJbnRSZWN0IGNvbnZlcnRGcm9tU2Nyb2xsYmFyVG9Db250YWluaW5nVmlldyhjb25z
dCBTY3JvbGxiYXIqLCBjb25zdCBJbnRSZWN0JikgY29uc3Q7Ci0gICAgdmlydHVhbCBJbnRSZWN0
IGNvbnZlcnRGcm9tQ29udGFpbmluZ1ZpZXdUb1Njcm9sbGJhcihjb25zdCBTY3JvbGxiYXIqLCBj
b25zdCBJbnRSZWN0JikgY29uc3Q7Ci0gICAgdmlydHVhbCBJbnRQb2ludCBjb252ZXJ0RnJvbVNj
cm9sbGJhclRvQ29udGFpbmluZ1ZpZXcoY29uc3QgU2Nyb2xsYmFyKiwgY29uc3QgSW50UG9pbnQm
KSBjb25zdDsKLSAgICB2aXJ0dWFsIEludFBvaW50IGNvbnZlcnRGcm9tQ29udGFpbmluZ1ZpZXdU
b1Njcm9sbGJhcihjb25zdCBTY3JvbGxiYXIqLCBjb25zdCBJbnRQb2ludCYpIGNvbnN0OwotICAg
IHZpcnR1YWwgU2Nyb2xsYmFyKiB2ZXJ0aWNhbFNjcm9sbGJhcigpIGNvbnN0IHsgcmV0dXJuIG1f
dkJhci5nZXQoKTsgfQotICAgIHZpcnR1YWwgSW50U2l6ZSBjb250ZW50c1NpemUoKSBjb25zdDsK
LSAgICB2aXJ0dWFsIGludCB2aXNpYmxlSGVpZ2h0KCkgY29uc3Q7Ci0gICAgdmlydHVhbCBpbnQg
dmlzaWJsZVdpZHRoKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBJbnRQb2ludCBjdXJyZW50TW91c2VQ
b3NpdGlvbigpIGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCBzaG91bGRTdXNwZW5kU2Nyb2xsQW5p
bWF0aW9ucygpIGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCBpc09uQWN0aXZlUGFnZSgpIGNvbnN0
OwotCi0gICAgdmlydHVhbCBTY3JvbGxhYmxlQXJlYSogZW5jbG9zaW5nU2Nyb2xsYWJsZUFyZWEo
KSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZVNjcm9sbGJhclJlY3QoU2Nyb2xs
YmFyKiwgY29uc3QgSW50UmVjdCYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBpc0FjdGl2
ZSgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBpc1Njcm9sbENvcm5lclZpc2li
bGUoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBmYWxzZTsgfSAvLyBXZSBkb24ndCBzdXBwb3J0
IHJlc2l6ZSBvbiBsaXN0IGJveGVzIHlldC4gSWYgd2UgZGlkIHRoZXNlIHdvdWxkIGhhdmUgdG8g
Y2hhbmdlLgorICAgIHZpcnR1YWwgSW50UmVjdCBzY3JvbGxDb3JuZXJSZWN0KCkgY29uc3QgT1ZF
UlJJREUgeyByZXR1cm4gSW50UmVjdCgpOyB9CisgICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGVT
Y3JvbGxDb3JuZXJSZWN0KGNvbnN0IEludFJlY3QmKSBPVkVSUklERSB7IH0KKyAgICB2aXJ0dWFs
IEludFJlY3QgY29udmVydEZyb21TY3JvbGxiYXJUb0NvbnRhaW5pbmdWaWV3KGNvbnN0IFNjcm9s
bGJhciosIGNvbnN0IEludFJlY3QmKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIEludFJl
Y3QgY29udmVydEZyb21Db250YWluaW5nVmlld1RvU2Nyb2xsYmFyKGNvbnN0IFNjcm9sbGJhcios
IGNvbnN0IEludFJlY3QmKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIEludFBvaW50IGNv
bnZlcnRGcm9tU2Nyb2xsYmFyVG9Db250YWluaW5nVmlldyhjb25zdCBTY3JvbGxiYXIqLCBjb25z
dCBJbnRQb2ludCYpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgSW50UG9pbnQgY29udmVy
dEZyb21Db250YWluaW5nVmlld1RvU2Nyb2xsYmFyKGNvbnN0IFNjcm9sbGJhciosIGNvbnN0IElu
dFBvaW50JikgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBTY3JvbGxiYXIqIHZlcnRpY2Fs
U2Nyb2xsYmFyKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV92QmFyLmdldCgpOyB9CisgICAg
dmlydHVhbCBJbnRTaXplIGNvbnRlbnRzU2l6ZSgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1
YWwgSW50U2l6ZSBvdmVyaGFuZ0Ftb3VudCgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwg
aW50IHZpc2libGVIZWlnaHQoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGludCB2aXNp
YmxlV2lkdGgoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIEludFBvaW50IGN1cnJlbnRN
b3VzZVBvc2l0aW9uKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIHNob3VsZFN1
c3BlbmRTY3JvbGxBbmltYXRpb25zKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29s
IGlzT25BY3RpdmVQYWdlKCkgY29uc3QgT1ZFUlJJREU7CisKKyAgICB2aXJ0dWFsIFNjcm9sbGFi
bGVBcmVhKiBlbmNsb3NpbmdTY3JvbGxhYmxlQXJlYSgpIGNvbnN0IE9WRVJSSURFOwogICAgIHZp
cnR1YWwgSW50UmVjdCBzY3JvbGxhYmxlQXJlYUJvdW5kaW5nQm94KCkgY29uc3QgT1ZFUlJJREU7
CiAKICAgICAvLyBOT1RFOiBUaGlzIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBieSB0aGUgb3ZlcnJp
ZGVuIHNldFNjcm9sbE9mZnNldCBmcm9tIFNjcm9sbGFibGVBcmVhLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvU2Nyb2xsYmFyR3JvdXAuY3BwIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvU2Nyb2xsYmFyR3JvdXAuY3BwCmluZGV4IDBlNjc2Y2I1ZjViNmNiM2Uw
YjE3YTI0MDY1YTFkYTI1YWQ3NmY3ZDYuLjM1MTgyNDRmZWRmNjIwMDk0NzFhNzM2YTlmZThkZGI4
NWIwZTViNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1Njcm9sbGJh
ckdyb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9TY3JvbGxiYXJHcm91
cC5jcHAKQEAgLTE5Nyw2ICsxOTcsMjQgQEAgSW50UG9pbnQgU2Nyb2xsYmFyR3JvdXA6Om1heGlt
dW1TY3JvbGxQb3NpdGlvbigpIGNvbnN0CiAgICAgcmV0dXJuIEludFBvaW50KGNvbnRlbnRzU2l6
ZSgpLndpZHRoKCkgLSB2aXNpYmxlV2lkdGgoKSwgY29udGVudHNTaXplKCkuaGVpZ2h0KCkgLSB2
aXNpYmxlSGVpZ2h0KCkpOwogfQogCitJbnRSZWN0IFNjcm9sbGJhckdyb3VwOjp2aXNpYmxlQ29u
dGVudFJlY3QoYm9vbCBpbmNsdWRlU2Nyb2xsYmFycykgY29uc3QKK3sKKyAgICBpbnQgdmVydGlj
YWxTY3JvbGxiYXJXaWR0aCA9IDA7CisgICAgaW50IGhvcml6b250YWxTY3JvbGxiYXJIZWlnaHQg
PSAwOworCisgICAgaWYgKGluY2x1ZGVTY3JvbGxiYXJzKSB7CisgICAgICAgIGlmIChTY3JvbGxi
YXIqIHZlcnRpY2FsQmFyID0gdmVydGljYWxTY3JvbGxiYXIoKSkKKyAgICAgICAgICAgIHZlcnRp
Y2FsU2Nyb2xsYmFyV2lkdGggPSAhdmVydGljYWxCYXItPmlzT3ZlcmxheVNjcm9sbGJhcigpID8g
dmVydGljYWxCYXItPndpZHRoKCkgOiAwOworICAgICAgICBpZiAoU2Nyb2xsYmFyKiBob3Jpem9u
dGFsQmFyID0gaG9yaXpvbnRhbFNjcm9sbGJhcigpKQorICAgICAgICAgICAgaG9yaXpvbnRhbFNj
cm9sbGJhckhlaWdodCA9ICFob3Jpem9udGFsQmFyLT5pc092ZXJsYXlTY3JvbGxiYXIoKSA/IGhv
cml6b250YWxCYXItPmhlaWdodCgpIDogMDsKKyAgICB9CisKKyAgICByZXR1cm4gSW50UmVjdChz
Y3JvbGxQb3NpdGlvbigpLngoKSwKKyAgICAgICAgICAgICAgICAgICBzY3JvbGxQb3NpdGlvbigp
LnkoKSwKKyAgICAgICAgICAgICAgICAgICBzdGQ6Om1heCgwLCB2aXNpYmxlV2lkdGgoKSArIHZl
cnRpY2FsU2Nyb2xsYmFyV2lkdGgpLAorICAgICAgICAgICAgICAgICAgIHN0ZDo6bWF4KDAsIHZp
c2libGVIZWlnaHQoKSArIGhvcml6b250YWxTY3JvbGxiYXJIZWlnaHQpKTsKK30KKwogaW50IFNj
cm9sbGJhckdyb3VwOjp2aXNpYmxlSGVpZ2h0KCkgY29uc3QKIHsKICAgICBpZiAobV92ZXJ0aWNh
bFNjcm9sbGJhcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1Njcm9s
bGJhckdyb3VwLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9TY3JvbGxiYXJHcm91cC5o
CmluZGV4IGEwNDc5YzIwNjI3ZDdiZjE0NTE0NDg5MTkyZDczZDUxNjgzOGRmYjUuLmJiNzc5MDM4
M2E1YzQxODEzY2VlMzg1ZmMwYTJjNGQyZTg2YWM3MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1Njcm9sbGJhckdyb3VwLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvU2Nyb2xsYmFyR3JvdXAuaApAQCAtNDksMzEgKzQ5LDMyIEBAIHB1YmxpYzoKICAg
ICB2b2lkIHNldEZyYW1lUmVjdChjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jik7CiAKICAgICAvLyBX
ZWJDb3JlOjpTY3JvbGxhYmxlQXJlYSBtZXRob2RzCi0gICAgdmlydHVhbCBpbnQgc2Nyb2xsU2l6
ZShXZWJDb3JlOjpTY3JvbGxiYXJPcmllbnRhdGlvbikgY29uc3Q7Ci0gICAgdmlydHVhbCBpbnQg
c2Nyb2xsUG9zaXRpb24oV2ViQ29yZTo6U2Nyb2xsYmFyKikgY29uc3Q7Ci0gICAgdmlydHVhbCB2
b2lkIHNldFNjcm9sbE9mZnNldChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpOwotICAgIHZpcnR1
YWwgdm9pZCBpbnZhbGlkYXRlU2Nyb2xsYmFyUmVjdChXZWJDb3JlOjpTY3JvbGxiYXIqLCBjb25z
dCBXZWJDb3JlOjpJbnRSZWN0Jik7Ci0gICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGVTY3JvbGxD
b3JuZXJSZWN0KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKTsKLSAgICB2aXJ0dWFsIGJvb2wgaXNB
Y3RpdmUoKSBjb25zdDsKLSAgICB2aXJ0dWFsIFNjcm9sbGFibGVBcmVhKiBlbmNsb3NpbmdTY3Jv
bGxhYmxlQXJlYSgpIGNvbnN0OwotICAgIHZpcnR1YWwgV2ViQ29yZTo6SW50UmVjdCBzY3JvbGxD
b3JuZXJSZWN0KCkgY29uc3QgeyByZXR1cm4gV2ViQ29yZTo6SW50UmVjdCgpOyB9Ci0gICAgdmly
dHVhbCBib29sIGlzU2Nyb2xsQ29ybmVyVmlzaWJsZSgpIGNvbnN0OwotICAgIHZpcnR1YWwgdm9p
ZCBnZXRUaWNrbWFya3MoVmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+JikgY29uc3Q7Ci0gICAgdmly
dHVhbCBXZWJDb3JlOjpJbnRQb2ludCBjb252ZXJ0RnJvbUNvbnRhaW5pbmdWaWV3VG9TY3JvbGxi
YXIoY29uc3QgV2ViQ29yZTo6U2Nyb2xsYmFyKiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBh
cmVudFBvaW50KSBjb25zdDsKLSAgICB2aXJ0dWFsIFdlYkNvcmU6OlNjcm9sbGJhciogaG9yaXpv
bnRhbFNjcm9sbGJhcigpIGNvbnN0OwotICAgIHZpcnR1YWwgV2ViQ29yZTo6U2Nyb2xsYmFyKiB2
ZXJ0aWNhbFNjcm9sbGJhcigpIGNvbnN0OwotICAgIHZpcnR1YWwgV2ViQ29yZTo6SW50UG9pbnQg
c2Nyb2xsUG9zaXRpb24oKSBjb25zdDsKLSAgICB2aXJ0dWFsIFdlYkNvcmU6OkludFBvaW50IG1p
bmltdW1TY3JvbGxQb3NpdGlvbigpIGNvbnN0OwotICAgIHZpcnR1YWwgV2ViQ29yZTo6SW50UG9p
bnQgbWF4aW11bVNjcm9sbFBvc2l0aW9uKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBpbnQgdmlzaWJs
ZUhlaWdodCgpIGNvbnN0OwotICAgIHZpcnR1YWwgaW50IHZpc2libGVXaWR0aCgpIGNvbnN0Owot
ICAgIHZpcnR1YWwgV2ViQ29yZTo6SW50U2l6ZSBjb250ZW50c1NpemUoKSBjb25zdDsKLSAgICB2
aXJ0dWFsIFdlYkNvcmU6OkludFNpemUgb3ZlcmhhbmdBbW91bnQoKSBjb25zdDsKLSAgICB2aXJ0
dWFsIFdlYkNvcmU6OkludFBvaW50IGN1cnJlbnRNb3VzZVBvc2l0aW9uKCkgY29uc3Q7Ci0gICAg
dmlydHVhbCBib29sIHNob3VsZFN1c3BlbmRTY3JvbGxBbmltYXRpb25zKCkgY29uc3Q7Ci0gICAg
dmlydHVhbCB2b2lkIHNjcm9sbGJhclN0eWxlQ2hhbmdlZChpbnQgbmV3U3R5bGUsIGJvb2wgZm9y
Y2VVcGRhdGUpOwotICAgIHZpcnR1YWwgYm9vbCBpc09uQWN0aXZlUGFnZSgpIGNvbnN0OwotICAg
IHZpcnR1YWwgV2ViQ29yZTo6SW50UmVjdCBzY3JvbGxhYmxlQXJlYUJvdW5kaW5nQm94KCkgY29u
c3Q7CisgICAgdmlydHVhbCBpbnQgc2Nyb2xsU2l6ZShXZWJDb3JlOjpTY3JvbGxiYXJPcmllbnRh
dGlvbikgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBpbnQgc2Nyb2xsUG9zaXRpb24oV2Vi
Q29yZTo6U2Nyb2xsYmFyKikgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHNldFNj
cm9sbE9mZnNldChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpIE9WRVJSSURFOworICAgIHZpcnR1
YWwgdm9pZCBpbnZhbGlkYXRlU2Nyb2xsYmFyUmVjdChXZWJDb3JlOjpTY3JvbGxiYXIqLCBjb25z
dCBXZWJDb3JlOjpJbnRSZWN0JikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGludmFsaWRh
dGVTY3JvbGxDb3JuZXJSZWN0KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSBPVkVSUklERTsKKyAg
ICB2aXJ0dWFsIGJvb2wgaXNBY3RpdmUoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFNj
cm9sbGFibGVBcmVhKiBlbmNsb3NpbmdTY3JvbGxhYmxlQXJlYSgpIGNvbnN0IE9WRVJSSURFOwor
ICAgIHZpcnR1YWwgV2ViQ29yZTo6SW50UmVjdCBzY3JvbGxDb3JuZXJSZWN0KCkgY29uc3QgeyBy
ZXR1cm4gV2ViQ29yZTo6SW50UmVjdCgpIE9WRVJSSURFOyB9CisgICAgdmlydHVhbCBib29sIGlz
U2Nyb2xsQ29ybmVyVmlzaWJsZSgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBn
ZXRUaWNrbWFya3MoVmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+JikgY29uc3QgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCBXZWJDb3JlOjpJbnRQb2ludCBjb252ZXJ0RnJvbUNvbnRhaW5pbmdWaWV3VG9T
Y3JvbGxiYXIoY29uc3QgV2ViQ29yZTo6U2Nyb2xsYmFyKiwgY29uc3QgV2ViQ29yZTo6SW50UG9p
bnQmIHBhcmVudFBvaW50KSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OlNj
cm9sbGJhciogaG9yaXpvbnRhbFNjcm9sbGJhcigpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1
YWwgV2ViQ29yZTo6U2Nyb2xsYmFyKiB2ZXJ0aWNhbFNjcm9sbGJhcigpIGNvbnN0IE9WRVJSSURF
OworICAgIHZpcnR1YWwgV2ViQ29yZTo6SW50UG9pbnQgc2Nyb2xsUG9zaXRpb24oKSBjb25zdCBP
VkVSUklERTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OkludFBvaW50IG1pbmltdW1TY3JvbGxQb3Np
dGlvbigpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgV2ViQ29yZTo6SW50UG9pbnQgbWF4
aW11bVNjcm9sbFBvc2l0aW9uKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBXZWJDb3Jl
OjpJbnRSZWN0IHZpc2libGVDb250ZW50UmVjdChib29sIGluY2x1ZGVTY3JvbGxiYXJzID0gZmFs
c2UpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgaW50IHZpc2libGVIZWlnaHQoKSBjb25z
dCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGludCB2aXNpYmxlV2lkdGgoKSBjb25zdCBPVkVSUklE
RTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OkludFNpemUgY29udGVudHNTaXplKCkgY29uc3QgT1ZF
UlJJREU7CisgICAgdmlydHVhbCBXZWJDb3JlOjpJbnRTaXplIG92ZXJoYW5nQW1vdW50KCkgY29u
c3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBXZWJDb3JlOjpJbnRQb2ludCBjdXJyZW50TW91c2VQ
b3NpdGlvbigpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBzaG91bGRTdXNwZW5k
U2Nyb2xsQW5pbWF0aW9ucygpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzY3Jv
bGxiYXJTdHlsZUNoYW5nZWQoaW50IG5ld1N0eWxlLCBib29sIGZvcmNlVXBkYXRlKSBPVkVSUklE
RTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNPbkFjdGl2ZVBhZ2UoKSBjb25zdCBPVkVSUklERTsKKyAg
ICB2aXJ0dWFsIFdlYkNvcmU6OkludFJlY3Qgc2Nyb2xsYWJsZUFyZWFCb3VuZGluZ0JveCgpIGNv
bnN0IE9WRVJSSURFOwogCiBwcml2YXRlOgogICAgIFdlYkNvcmU6OkZyYW1lVmlldyogbV9mcmFt
ZVZpZXc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1Njcm9sbEFu
aW1hdG9yTm9uZVRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9TY3JvbGxB
bmltYXRvck5vbmVUZXN0LmNwcAppbmRleCA5MjdkNGE5YzMyZGU2OTcyOTk4NjI5ZDFmZDU2Njc1
OGI2NTU3ZDMxLi5lNzE4NDZhZGIxNTRiZjlmYjhmM2NjMmQ3Njc5NTgwYTk0NjA5YTRjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1Njcm9sbEFuaW1hdG9yTm9uZVRl
c3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvU2Nyb2xsQW5pbWF0b3JO
b25lVGVzdC5jcHAKQEAgLTYzLDEyICs2MywyMCBAQCBwdWJsaWM6CiAgICAgTU9DS19NRVRIT0Qx
KGludmFsaWRhdGVTY3JvbGxDb3JuZXJSZWN0LCB2b2lkKGNvbnN0IEludFJlY3QmKSk7CiAgICAg
TU9DS19NRVRIT0QxKHNldFNjcm9sbE9mZnNldEZyb21BbmltYXRpb24sIHZvaWQoY29uc3QgSW50
UG9pbnQmKSk7CiAgICAgTU9DS19DT05TVF9NRVRIT0QwKGVuY2xvc2luZ1Njcm9sbGFibGVBcmVh
LCBTY3JvbGxhYmxlQXJlYSooKSk7Ci0KLSAgICB2aXJ0dWFsIEludFBvaW50IHNjcm9sbFBvc2l0
aW9uKCkgY29uc3QgeyByZXR1cm4gSW50UG9pbnQoKTsgfQotICAgIHZpcnR1YWwgaW50IHZpc2li
bGVIZWlnaHQoKSBjb25zdCB7IHJldHVybiA3Njg7IH0KLSAgICB2aXJ0dWFsIGludCB2aXNpYmxl
V2lkdGgoKSBjb25zdCB7IHJldHVybiAxMDI0OyB9Ci0KLSAgICBib29sIHNjcm9sbEFuaW1hdG9y
RW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsQW5pbWF0b3JFbmFibGVkOyB9CisgICAg
TU9DS19DT05TVF9NRVRIT0QwKG1pbmltdW1TY3JvbGxQb3NpdGlvbiwgSW50UG9pbnQoKSk7Cisg
ICAgTU9DS19DT05TVF9NRVRIT0QwKG1heGltdW1TY3JvbGxQb3NpdGlvbiwgSW50UG9pbnQoKSk7
CisgICAgTU9DS19DT05TVF9NRVRIT0QxKHZpc2libGVDb250ZW50UmVjdCwgSW50UmVjdChib29s
KSk7CisgICAgTU9DS19DT05TVF9NRVRIT0QwKGNvbnRlbnRzU2l6ZSwgSW50U2l6ZSgpKTsKKyAg
ICBNT0NLX0NPTlNUX01FVEhPRDAob3ZlcmhhbmdBbW91bnQsIEludFNpemUoKSk7CisgICAgTU9D
S19DT05TVF9NRVRIT0QwKGlzT25BY3RpdmVQYWdlLCBib29sKCkpOworICAgIE1PQ0tfQ09OU1Rf
TUVUSE9EMChzY3JvbGxhYmxlQXJlYUJvdW5kaW5nQm94LCBJbnRSZWN0KCkpOworCisgICAgdmly
dHVhbCBJbnRQb2ludCBzY3JvbGxQb3NpdGlvbigpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIElu
dFBvaW50KCk7IH0KKyAgICB2aXJ0dWFsIGludCB2aXNpYmxlSGVpZ2h0KCkgY29uc3QgT1ZFUlJJ
REUgeyByZXR1cm4gNzY4OyB9CisgICAgdmlydHVhbCBpbnQgdmlzaWJsZVdpZHRoKCkgY29uc3Qg
T1ZFUlJJREUgeyByZXR1cm4gMTAyNDsgfQorICAgIHZpcnR1YWwgYm9vbCBzY3JvbGxBbmltYXRv
ckVuYWJsZWQoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBtX3Njcm9sbEFuaW1hdG9yRW5hYmxl
ZDsgfQorCitwcml2YXRlOgogICAgIGJvb2wgbV9zY3JvbGxBbmltYXRvckVuYWJsZWQ7CiB9Owog
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>156800</attachid>
            <date>2012-08-06 16:56:49 -0700</date>
            <delta_ts>2012-08-06 18:07:02 -0700</delta_ts>
            <desc>Fix override build errors</desc>
            <filename>bug-93306-20120806165626.patch</filename>
            <type>text/plain</type>
            <size>30247</size>
            <attacher name="Adrienne Walker">enne</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI0ODA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDczYjAyODEyYzlhNDk0
NDhjMjQ1NDgwMGMwYjVmN2Q1MjQwMzFlMS4uZGQ2ZDFiYThkYjczMjhhNjE1MjdmY2ZmZTJkYzQ2
ZTQ4MTQ4MDM2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDEyLTA4LTA2ICBBZHJp
ZW5uZSBXYWxrZXIgIDxlbm5lQGdvb2dsZS5jb20+CisKKyAgICAgICAgQ29udmVydCBTY3JvbGxh
YmxlQXJlYSBBU1NFUlRfTk9UX1JFQUNIRUQgdmlydHVhbHMgaW50byBwdXJlIHZpcnR1YWxzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MzMwNgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCBpcyBhIGJhZCB3YXkgdG8gbWFrZSBzdXJlIHRoYXQgYSB2aXJ0dWFsIGZ1bmN0aW9u
CisgICAgICAgIGdldHMgYW4gb3ZlcnJpZGUsIGJlY2F1c2UgaXQgb25seSBmYWlscyBhdCBydW4t
dGltZSBpbiBkZWJ1ZyBidWlsZHMuCisKKyAgICAgICAgVG8gZml4IHRoaXMsIGNvbnZlcnQgdGhl
IHZpcnR1YWxzIGluIFNjcm9sbGFibGVBcmVhIHRoYXQgaGF2ZQorICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQgdG8gYmUgcHVyZSB2aXJ0dWFsIGFuZCBhZGQgaW1wbGVtZW50YXRpb25zIHdoZXJl
CisgICAgICAgIG5lY2Vzc2FyeSB0byBtYWtlIGRlcml2ZWQgY2xhc3NlcyBjb25jcmV0ZS4KKwor
ICAgICAgICBBZGRpdGlvbmFsbHksIGNvbnNpc3RlbnRseSBhZGQgT1ZFUlJJREUgZm9yIHZpcnR1
YWwgZnVuY3Rpb25zIGluCisgICAgICAgIGRlcml2ZWQgY2xhc3NlcyB0aGF0IG92ZXJyaWRlIFNj
cm9sbGFibGVBcmVhIG1ldGhvZHMuCisKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5oOgorICAg
ICAgICAoRnJhbWVWaWV3KToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxWaWV3Lmg6CisgICAg
ICAgIChTY3JvbGxWaWV3KToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5oOgor
ICAgICAgICAoU2Nyb2xsYWJsZUFyZWEpOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL0Zy
YW1lbGVzc1Njcm9sbFZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVsZXNzU2Nyb2xs
Vmlldzo6aXNPbkFjdGl2ZVBhZ2UpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJD
b3JlOjpGcmFtZWxlc3NTY3JvbGxWaWV3OjpzY3JvbGxhYmxlQXJlYUJvdW5kaW5nQm94KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9GcmFtZWxlc3NTY3JvbGxWaWV3Lmg6CisgICAgICAg
IChGcmFtZWxlc3NTY3JvbGxWaWV3KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGlzdEJv
eC5jcHA6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guaDoKKyAgICAgICAgKFJl
bmRlckxpc3RCb3gpOgorCiAyMDEyLTA4LTA2ICBBbm5hIENhdmVuZGVyICA8YW5uYWNjQGNocm9t
aXVtLm9yZz4KIAogICAgICAgICBNZWRpYVNvdXJjZSBzaG91bGQgdXNlIGl0J3Mgb3duIGxpc3Qg
b2Ygc291cmNlIFVSTHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggZWVkYzAyMjM4ZDNi
NzRiYjdjMDFlNzVkNzViOWQxNzc5OWQ0MTk4OC4uYzdiYWNkZmJhNjkzMGQ1ZGY3MDFmMDU5OTE0
M2YwNDBhYWIxNWE0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsNSArMSwyMyBA
QAogMjAxMi0wOC0wNiAgQWRyaWVubmUgV2Fsa2VyICA8ZW5uZUBnb29nbGUuY29tPgogCisgICAg
ICAgIENvbnZlcnQgU2Nyb2xsYWJsZUFyZWEgQVNTRVJUX05PVF9SRUFDSEVEIHZpcnR1YWxzIGlu
dG8gcHVyZSB2aXJ0dWFscworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9OTMzMDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBBZGQgaW1wbGVtZW50YXRpb25zIG9mIG1pc3NpbmcgU2Nyb2xsYWJsZUFyZWEgdmly
dHVhbHMuCisKKyAgICAgICAgKiBzcmMvU2Nyb2xsYmFyR3JvdXAuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpTY3JvbGxiYXJHcm91cDo6dmlzaWJsZUNvbnRlbnRSZWN0KToKKyAgICAgICAgKFdlYktp
dCk6CisgICAgICAgICogc3JjL1Njcm9sbGJhckdyb3VwLmg6CisgICAgICAgIChTY3JvbGxiYXJH
cm91cCk6CisgICAgICAgIChXZWJLaXQ6OlNjcm9sbGJhckdyb3VwOjpzY3JvbGxDb3JuZXJSZWN0
KToKKyAgICAgICAgKiB0ZXN0cy9TY3JvbGxBbmltYXRvck5vbmVUZXN0LmNwcDoKKyAgICAgICAg
KE1vY2tTY3JvbGxhYmxlQXJlYSk6CisKKzIwMTItMDgtMDYgIEFkcmllbm5lIFdhbGtlciAgPGVu
bmVAZ29vZ2xlLmNvbT4KKwogICAgICAgICBbY2hyb21pdW1dIFJFR1JFU1NJT04ocjEyNDcxNCk6
IHdlYmtpdF91bml0X3Rlc3RzIGFzc2VydHMgaW4gRGVidWcKICAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkzMjk3CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5o
CmluZGV4IDVkNjA5NGMzOGEyNWVlNTQxYWM5ODQzMGJkMGQxOWRjNmU1N2ZkMTUuLmY2ZTJkYjk3
MDIzMWQ5ZWY2ZGQzMDdhZGU1ZjgwY2EyMzNlOTM3MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRnJhbWVWaWV3LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcu
aApAQCAtMzc4LDIzICszNzgsMjEgQEAgcHJpdmF0ZToKIAogICAgIC8vIE92ZXJyaWRlIFNjcm9s
bFZpZXcgbWV0aG9kcyB0byBkbyBwb2ludCBjb252ZXJzaW9uIHZpYSByZW5kZXJlcnMsIGluIG9y
ZGVyIHRvCiAgICAgLy8gdGFrZSB0cmFuc2Zvcm1zIGludG8gYWNjb3VudC4KLSAgICB2aXJ0dWFs
IEludFJlY3QgY29udmVydFRvQ29udGFpbmluZ1ZpZXcoY29uc3QgSW50UmVjdCYpIGNvbnN0Owot
ICAgIHZpcnR1YWwgSW50UmVjdCBjb252ZXJ0RnJvbUNvbnRhaW5pbmdWaWV3KGNvbnN0IEludFJl
Y3QmKSBjb25zdDsKLSAgICB2aXJ0dWFsIEludFBvaW50IGNvbnZlcnRUb0NvbnRhaW5pbmdWaWV3
KGNvbnN0IEludFBvaW50JikgY29uc3Q7Ci0gICAgdmlydHVhbCBJbnRQb2ludCBjb252ZXJ0RnJv
bUNvbnRhaW5pbmdWaWV3KGNvbnN0IEludFBvaW50JikgY29uc3Q7CisgICAgdmlydHVhbCBJbnRS
ZWN0IGNvbnZlcnRUb0NvbnRhaW5pbmdWaWV3KGNvbnN0IEludFJlY3QmKSBjb25zdCBPVkVSUklE
RTsKKyAgICB2aXJ0dWFsIEludFJlY3QgY29udmVydEZyb21Db250YWluaW5nVmlldyhjb25zdCBJ
bnRSZWN0JikgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBJbnRQb2ludCBjb252ZXJ0VG9D
b250YWluaW5nVmlldyhjb25zdCBJbnRQb2ludCYpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1
YWwgSW50UG9pbnQgY29udmVydEZyb21Db250YWluaW5nVmlldyhjb25zdCBJbnRQb2ludCYpIGNv
bnN0IE9WRVJSSURFOwogCiAgICAgLy8gU2Nyb2xsYWJsZUFyZWEgaW50ZXJmYWNlCi0gICAgdmly
dHVhbCB2b2lkIGludmFsaWRhdGVTY3JvbGxiYXJSZWN0KFNjcm9sbGJhciosIGNvbnN0IEludFJl
Y3QmKTsKLSAgICB2aXJ0dWFsIGJvb2wgaXNBY3RpdmUoKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZv
aWQgZ2V0VGlja21hcmtzKFZlY3RvcjxJbnRSZWN0PiYpIGNvbnN0OwotICAgIHZpcnR1YWwgdm9p
ZCBzY3JvbGxUbyhjb25zdCBJbnRTaXplJik7Ci0gICAgdmlydHVhbCB2b2lkIHNldFZpc2libGVT
Y3JvbGxlclRodW1iUmVjdChjb25zdCBJbnRSZWN0Jik7Ci0gICAgdmlydHVhbCBib29sIGlzT25B
Y3RpdmVQYWdlKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBTY3JvbGxhYmxlQXJlYSogZW5jbG9zaW5n
U2Nyb2xsYWJsZUFyZWEoKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZVNjcm9s
bGJhclJlY3QoU2Nyb2xsYmFyKiwgY29uc3QgSW50UmVjdCYpIE9WRVJSSURFOworICAgIHZpcnR1
YWwgYm9vbCBpc0FjdGl2ZSgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBnZXRU
aWNrbWFya3MoVmVjdG9yPEludFJlY3Q+JikgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2
b2lkIHNjcm9sbFRvKGNvbnN0IEludFNpemUmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQg
c2V0VmlzaWJsZVNjcm9sbGVyVGh1bWJSZWN0KGNvbnN0IEludFJlY3QmKSBPVkVSUklERTsKKyAg
ICB2aXJ0dWFsIGJvb2wgaXNPbkFjdGl2ZVBhZ2UoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIFNjcm9sbGFibGVBcmVhKiBlbmNsb3NpbmdTY3JvbGxhYmxlQXJlYSgpIGNvbnN0IE9WRVJS
SURFOwogICAgIHZpcnR1YWwgSW50UmVjdCBzY3JvbGxhYmxlQXJlYUJvdW5kaW5nQm94KCkgY29u
c3QgT1ZFUlJJREU7Ci0KLSAgICB2b2lkIHVwZGF0ZVNjcm9sbGFibGVBcmVhU2V0KCk7Ci0KKyAg
ICB2aXJ0dWFsIGJvb2wgc2Nyb2xsQW5pbWF0b3JFbmFibGVkKCkgY29uc3QgT1ZFUlJJREU7CiAj
aWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogICAgIHZpcnR1YWwgR3JhcGhpY3NMYXll
ciogbGF5ZXJGb3JIb3Jpem9udGFsU2Nyb2xsYmFyKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmly
dHVhbCBHcmFwaGljc0xheWVyKiBsYXllckZvclZlcnRpY2FsU2Nyb2xsYmFyKCkgY29uc3QgT1ZF
UlJJREU7CkBAIC00MDQsOSArNDAyLDkgQEAgcHJpdmF0ZToKICNlbmRpZgogI2VuZGlmCiAKLSAg
ICB2aXJ0dWFsIHZvaWQgbm90aWZ5UGFnZVRoYXRDb250ZW50QXJlYVdpbGxQYWludCgpIGNvbnN0
OworICAgIHZvaWQgdXBkYXRlU2Nyb2xsYWJsZUFyZWFTZXQoKTsKIAotICAgIHZpcnR1YWwgYm9v
bCBzY3JvbGxBbmltYXRvckVuYWJsZWQoKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5
UGFnZVRoYXRDb250ZW50QXJlYVdpbGxQYWludCgpIGNvbnN0OwogCiAgICAgdm9pZCBkZWZlcnJl
ZFJlcGFpbnRUaW1lckZpcmVkKFRpbWVyPEZyYW1lVmlldz4qKTsKICAgICB2b2lkIGRvRGVmZXJy
ZWRSZXBhaW50cygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xs
Vmlldy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5oCmluZGV4IDgxYTU2
YjI1MWNlZDU0ZTA4MmE4NmU2OWIzNGI0NjZiNGQxNjliN2YuLjA2NDkwZDlhODZmMGNiYWY4NzY4
MjQxM2RjMGU2NjVhOTZmYzVkOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Njcm9sbFZpZXcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmgK
QEAgLTUyLDEzICs1MiwxNCBAQCBjbGFzcyBTY3JvbGxWaWV3IDogcHVibGljIFdpZGdldCwgcHVi
bGljIFNjcm9sbGFibGVBcmVhIHsKIHB1YmxpYzoKICAgICB+U2Nyb2xsVmlldygpOwogCi0gICAg
Ly8gU2Nyb2xsYWJsZUFyZWEgZnVuY3Rpb25zLiAgRnJhbWVWaWV3IG92ZXJyaWRlcyB0aGUgb3Ro
ZXJzLgotICAgIHZpcnR1YWwgaW50IHNjcm9sbFNpemUoU2Nyb2xsYmFyT3JpZW50YXRpb24gb3Jp
ZW50YXRpb24pIGNvbnN0OwotICAgIHZpcnR1YWwgaW50IHNjcm9sbFBvc2l0aW9uKFNjcm9sbGJh
ciopIGNvbnN0OwotICAgIHZpcnR1YWwgdm9pZCBzZXRTY3JvbGxPZmZzZXQoY29uc3QgSW50UG9p
bnQmKTsKKyAgICAvLyBTY3JvbGxhYmxlQXJlYSBmdW5jdGlvbnMuCisgICAgdmlydHVhbCBpbnQg
c2Nyb2xsU2l6ZShTY3JvbGxiYXJPcmllbnRhdGlvbikgY29uc3QgT1ZFUlJJREU7CisgICAgdmly
dHVhbCBpbnQgc2Nyb2xsUG9zaXRpb24oU2Nyb2xsYmFyKikgY29uc3QgT1ZFUlJJREU7CisgICAg
dmlydHVhbCB2b2lkIHNldFNjcm9sbE9mZnNldChjb25zdCBJbnRQb2ludCYpIE9WRVJSSURFOwor
ICAgIHZpcnR1YWwgYm9vbCBpc1Njcm9sbENvcm5lclZpc2libGUoKSBjb25zdCBPVkVSUklERTsK
KyAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsYmFyU3R5bGVDaGFuZ2VkKGludCBuZXdTdHlsZSwgYm9v
bCBmb3JjZVVwZGF0ZSkgT1ZFUlJJREU7CisKICAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5UGFnZVRo
YXRDb250ZW50QXJlYVdpbGxQYWludCgpIGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCBpc1Njcm9s
bENvcm5lclZpc2libGUoKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsYmFyU3R5bGVD
aGFuZ2VkKGludCBuZXdTdHlsZSwgYm9vbCBmb3JjZVVwZGF0ZSk7CiAKICAgICAvLyBOT1RFOiBU
aGlzIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBieSB0aGUgb3ZlcnJpZGVuIHNldFNjcm9sbE9mZnNl
dCBmcm9tIFNjcm9sbGFibGVBcmVhLgogICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxUbyhjb25zdCBJ
bnRTaXplJiBuZXdPZmZzZXQpOwpAQCAtNzQsMTEgKzc1LDExIEBAIHB1YmxpYzoKICAgICBjb25z
dCBIYXNoU2V0PFJlZlB0cjxXaWRnZXQ+ID4qIGNoaWxkcmVuKCkgY29uc3QgeyByZXR1cm4gJm1f
Y2hpbGRyZW47IH0KICAgICB2aXJ0dWFsIHZvaWQgYWRkQ2hpbGQoUGFzc1JlZlB0cjxXaWRnZXQ+
KTsKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlQ2hpbGQoV2lkZ2V0Kik7Ci0gICAgCisKICAgICAv
LyBJZiB0aGUgc2Nyb2xsIHZpZXcgZG9lcyBub3QgdXNlIGEgbmF0aXZlIHdpZGdldCwgdGhlbiBp
dCB3aWxsIGhhdmUgY3Jvc3MtcGxhdGZvcm0gU2Nyb2xsYmFycy4gVGhlc2UgZnVuY3Rpb25zCiAg
ICAgLy8gY2FuIGJlIHVzZWQgdG8gb2J0YWluIHRob3NlIHNjcm9sbGJhcnMuCi0gICAgdmlydHVh
bCBTY3JvbGxiYXIqIGhvcml6b250YWxTY3JvbGxiYXIoKSBjb25zdCB7IHJldHVybiBtX2hvcml6
b250YWxTY3JvbGxiYXIuZ2V0KCk7IH0KLSAgICB2aXJ0dWFsIFNjcm9sbGJhciogdmVydGljYWxT
Y3JvbGxiYXIoKSBjb25zdCB7IHJldHVybiBtX3ZlcnRpY2FsU2Nyb2xsYmFyLmdldCgpOyB9Cisg
ICAgdmlydHVhbCBTY3JvbGxiYXIqIGhvcml6b250YWxTY3JvbGxiYXIoKSBjb25zdCBPVkVSUklE
RSB7IHJldHVybiBtX2hvcml6b250YWxTY3JvbGxiYXIuZ2V0KCk7IH0KKyAgICB2aXJ0dWFsIFNj
cm9sbGJhciogdmVydGljYWxTY3JvbGxiYXIoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBtX3Zl
cnRpY2FsU2Nyb2xsYmFyLmdldCgpOyB9CiAgICAgYm9vbCBpc1Njcm9sbFZpZXdTY3JvbGxiYXIo
Y29uc3QgV2lkZ2V0KiBjaGlsZCkgY29uc3QgeyByZXR1cm4gaG9yaXpvbnRhbFNjcm9sbGJhcigp
ID09IGNoaWxkIHx8IHZlcnRpY2FsU2Nyb2xsYmFyKCkgPT0gY2hpbGQ7IH0KIAogICAgIHZvaWQg
cG9zaXRpb25TY3JvbGxiYXJMYXllcnMoKTsKQEAgLTEwNyw3ICsxMDgsNyBAQCBwdWJsaWM6CiAK
ICAgICB2aXJ0dWFsIGJvb2wgYXZvaWRTY3JvbGxiYXJDcmVhdGlvbigpIGNvbnN0IHsgcmV0dXJu
IGZhbHNlOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2V0U2Nyb2xsYmFyT3ZlcmxheVN0eWxlKFNj
cm9sbGJhck92ZXJsYXlTdHlsZSk7CisgICAgdmlydHVhbCB2b2lkIHNldFNjcm9sbGJhck92ZXJs
YXlTdHlsZShTY3JvbGxiYXJPdmVybGF5U3R5bGUpIE9WRVJSSURFOwogCiAgICAgLy8gQnkgZGVm
YXVsdCB5b3Ugb25seSByZWNlaXZlIHBhaW50IGV2ZW50cyBmb3IgdGhlIGFyZWEgdGhhdCBpcyB2
aXNpYmxlLiBJbiB0aGUgY2FzZSBvZiB1c2luZyBhCiAgICAgLy8gdGlsZWQgYmFja2luZyBzdG9y
ZSwgdGhpcyBmdW5jdGlvbiBjYW4gYmUgc2V0LCBzbyB0aGF0IHRoZSB2aWV3IHBhaW50cyB0aGUg
ZW50aXJlIGNvbnRlbnRzLgpAQCAtMTQzLDEyICsxNDQsMTIgQEAgcHVibGljOgogICAgIC8vIElu
IHRoZSBzaXR1YXRpb24gdGhlIGNsaWVudCBpcyByZXNwb25zaWJsZSBmb3IgdGhlIHNjcm9sbGlu
ZyAoaWUuIHdpdGggYSB0aWxlZCBiYWNraW5nIHN0b3JlKSBpdCBpcyBwb3NzaWJsZSB0byB1c2UK
ICAgICAvLyB0aGUgc2V0Rml4ZWRWaXNpYmxlQ29udGVudFJlY3QgaW5zdGVhZCBmb3IgdGhlIG1h
aW5mcmFtZSwgdGhvdWdoIHRoaXMgbXVzdCBiZSB1cGRhdGVkIG1hbnVhbGx5LCBlLmcganVzdCBi
ZWZvcmUgcmVzdW1pbmcgdGhlIHBhZ2UKICAgICAvLyB3aGljaCB1c3VhbGx5IHdpbGwgaGFwcGVu
IHdoZW4gcGFubmluZywgcGluY2hpbmcgYW5kIHJvdGF0aW9uIGVuZHMsIG9yIHdoZW4gc2NhbGUg
b3IgcG9zaXRpb24gYXJlIGNoYW5nZWQgbWFudWFsbHkuCi0gICAgdmlydHVhbCBJbnRSZWN0IHZp
c2libGVDb250ZW50UmVjdChib29sIGluY2x1ZGVTY3JvbGxiYXJzID0gZmFsc2UpIGNvbnN0Owor
ICAgIHZpcnR1YWwgSW50UmVjdCB2aXNpYmxlQ29udGVudFJlY3QoYm9vbCBpbmNsdWRlU2Nyb2xs
YmFycyA9IGZhbHNlKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0Rml4ZWRW
aXNpYmxlQ29udGVudFJlY3QoY29uc3QgSW50UmVjdCYgdmlzaWJsZUNvbnRlbnRSZWN0KSB7IG1f
Zml4ZWRWaXNpYmxlQ29udGVudFJlY3QgPSB2aXNpYmxlQ29udGVudFJlY3Q7IH0KICAgICBJbnRS
ZWN0IGZpeGVkVmlzaWJsZUNvbnRlbnRSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9maXhlZFZpc2li
bGVDb250ZW50UmVjdDsgfQogICAgIEludFNpemUgdmlzaWJsZVNpemUoKSBjb25zdCB7IHJldHVy
biB2aXNpYmxlQ29udGVudFJlY3QoKS5zaXplKCk7IH0KLSAgICBpbnQgdmlzaWJsZVdpZHRoKCkg
Y29uc3QgeyByZXR1cm4gdmlzaWJsZUNvbnRlbnRSZWN0KCkud2lkdGgoKTsgfQotICAgIGludCB2
aXNpYmxlSGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gdmlzaWJsZUNvbnRlbnRSZWN0KCkuaGVpZ2h0
KCk7IH0KKyAgICB2aXJ0dWFsIGludCB2aXNpYmxlV2lkdGgoKSBjb25zdCBPVkVSUklERSB7IHJl
dHVybiB2aXNpYmxlQ29udGVudFJlY3QoKS53aWR0aCgpOyB9CisgICAgdmlydHVhbCBpbnQgdmlz
aWJsZUhlaWdodCgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIHZpc2libGVDb250ZW50UmVjdCgp
LmhlaWdodCgpOyB9CiAKICAgICAvLyBGdW5jdGlvbnMgZm9yIGdldHRpbmcvc2V0dGluZyB0aGUg
c2l6ZSB3ZWJraXQgc2hvdWxkIHVzZSB0byBsYXlvdXQgdGhlIGNvbnRlbnRzLiBCeSBkZWZhdWx0
IHRoaXMgaXMgdGhlIHNhbWUgYXMgdGhlIHZpc2libGUKICAgICAvLyBjb250ZW50IHNpemUuIEV4
cGxpY2l0bHkgc2V0dGluZyBhIGxheW91dCBzaXplIHZhbHVlIHdpbGwgY2F1c2Ugd2Via2l0IHRv
IGxheW91dCB0aGUgY29udGVudHMgdXNpbmcgdGhpcyBzaXplIGluc3RlYWQuCkBAIC0xNjIsMjIg
KzE2MywyMiBAQCBwdWJsaWM6CiAgICAgCiAgICAgLy8gRnVuY3Rpb25zIGZvciBnZXR0aW5nL3Nl
dHRpbmcgdGhlIHNpemUgb2YgdGhlIGRvY3VtZW50IGNvbnRhaW5lZCBpbnNpZGUgdGhlIFNjcm9s
bFZpZXcgKGFzIGFuIEludFNpemUgb3IgYXMgaW5kaXZpZHVhbCB3aWR0aCBhbmQgaGVpZ2h0CiAg
ICAgLy8gdmFsdWVzKS4KLSAgICBJbnRTaXplIGNvbnRlbnRzU2l6ZSgpIGNvbnN0OyAvLyBBbHdh
eXMgYXQgbGVhc3QgYXMgYmlnIGFzIHRoZSB2aXNpYmxlV2lkdGgoKS92aXNpYmxlSGVpZ2h0KCku
CisgICAgdmlydHVhbCBJbnRTaXplIGNvbnRlbnRzU2l6ZSgpIGNvbnN0IE9WRVJSSURFOyAvLyBB
bHdheXMgYXQgbGVhc3QgYXMgYmlnIGFzIHRoZSB2aXNpYmxlV2lkdGgoKS92aXNpYmxlSGVpZ2h0
KCkuCiAgICAgaW50IGNvbnRlbnRzV2lkdGgoKSBjb25zdCB7IHJldHVybiBjb250ZW50c1NpemUo
KS53aWR0aCgpOyB9CiAgICAgaW50IGNvbnRlbnRzSGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gY29u
dGVudHNTaXplKCkuaGVpZ2h0KCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVudHNTaXpl
KGNvbnN0IEludFNpemUmKTsKIAogICAgIC8vIEZ1bmN0aW9ucyBmb3IgcXVlcnlpbmcgdGhlIGN1
cnJlbnQgc2Nyb2xsZWQgcG9zaXRpb24gKGJvdGggYXMgYSBwb2ludCwgYSBzaXplLCBvciBhcyBp
bmRpdmlkdWFsIFggYW5kIFkgdmFsdWVzKS4KLSAgICBJbnRQb2ludCBzY3JvbGxQb3NpdGlvbigp
IGNvbnN0IHsgcmV0dXJuIHZpc2libGVDb250ZW50UmVjdCgpLmxvY2F0aW9uKCk7IH0KLSAgICBJ
bnRTaXplIHNjcm9sbE9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIHZpc2libGVDb250ZW50UmVjdCgp
LmxvY2F0aW9uKCkgLSBJbnRQb2ludCgpOyB9IC8vIEdldHMgdGhlIHNjcm9sbGVkIHBvc2l0aW9u
IGFzIGFuIEludFNpemUuIENvbnZlbmllbnQgZm9yIGFkZGluZyB0byBvdGhlciBzaXplcy4KLSAg
ICBJbnRQb2ludCBtYXhpbXVtU2Nyb2xsUG9zaXRpb24oKSBjb25zdDsgLy8gVGhlIG1heGltdW0g
cG9zaXRpb24gd2UgY2FuIGJlIHNjcm9sbGVkIHRvLgotICAgIEludFBvaW50IG1pbmltdW1TY3Jv
bGxQb3NpdGlvbigpIGNvbnN0OyAvLyBUaGUgbWluaW11bSBwb3NpdGlvbiB3ZSBjYW4gYmUgc2Ny
b2xsZWQgdG8uCisgICAgdmlydHVhbCBJbnRQb2ludCBzY3JvbGxQb3NpdGlvbigpIGNvbnN0IE9W
RVJSSURFIHsgcmV0dXJuIHZpc2libGVDb250ZW50UmVjdCgpLmxvY2F0aW9uKCk7IH0KKyAgICB2
aXJ0dWFsIEludFNpemUgc2Nyb2xsT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gdmlzaWJsZUNvbnRl
bnRSZWN0KCkubG9jYXRpb24oKSAtIEludFBvaW50KCk7IH0gLy8gR2V0cyB0aGUgc2Nyb2xsZWQg
cG9zaXRpb24gYXMgYW4gSW50U2l6ZS4gQ29udmVuaWVudCBmb3IgYWRkaW5nIHRvIG90aGVyIHNp
emVzLgorICAgIHZpcnR1YWwgSW50UG9pbnQgbWF4aW11bVNjcm9sbFBvc2l0aW9uKCkgY29uc3Qg
T1ZFUlJJREU7IC8vIFRoZSBtYXhpbXVtIHBvc2l0aW9uIHdlIGNhbiBiZSBzY3JvbGxlZCB0by4K
KyAgICB2aXJ0dWFsIEludFBvaW50IG1pbmltdW1TY3JvbGxQb3NpdGlvbigpIGNvbnN0IE9WRVJS
SURFOyAvLyBUaGUgbWluaW11bSBwb3NpdGlvbiB3ZSBjYW4gYmUgc2Nyb2xsZWQgdG8uCiAgICAg
Ly8gQWRqdXN0IHRoZSBwYXNzZWQgaW4gc2Nyb2xsIHBvc2l0aW9uIHRvIGtlZXAgaXQgYmV0d2Vl
biB0aGUgbWluaW11bSBhbmQgbWF4aW11bSBwb3NpdGlvbnMuCiAgICAgSW50UG9pbnQgYWRqdXN0
U2Nyb2xsUG9zaXRpb25XaXRoaW5SYW5nZShjb25zdCBJbnRQb2ludCYpIGNvbnN0OyAKICAgICBp
bnQgc2Nyb2xsWCgpIGNvbnN0IHsgcmV0dXJuIHNjcm9sbFBvc2l0aW9uKCkueCgpOyB9CiAgICAg
aW50IHNjcm9sbFkoKSBjb25zdCB7IHJldHVybiBzY3JvbGxQb3NpdGlvbigpLnkoKTsgfQogCi0g
ICAgSW50U2l6ZSBvdmVyaGFuZ0Ftb3VudCgpIGNvbnN0OworICAgIHZpcnR1YWwgSW50U2l6ZSBv
dmVyaGFuZ0Ftb3VudCgpIGNvbnN0IE9WRVJSSURFOwogCiAgICAgdm9pZCBjYWNoZUN1cnJlbnRT
Y3JvbGxQb3NpdGlvbigpIHsgbV9jYWNoZWRTY3JvbGxQb3NpdGlvbiA9IHNjcm9sbFBvc2l0aW9u
KCk7IH0KICAgICBJbnRQb2ludCBjYWNoZWRTY3JvbGxQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJu
IG1fY2FjaGVkU2Nyb2xsUG9zaXRpb247IH0KQEAgLTI3NywxMCArMjc4LDEwIEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRTY3JvbGxDb3JuZXIoR3JhcGhpY3NDb250ZXh0KiwgY29u
c3QgSW50UmVjdCYgY29ybmVyUmVjdCk7CiAgICAgdmlydHVhbCB2b2lkIHBhaW50U2Nyb2xsYmFy
KEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhciosIGNvbnN0IEludFJlY3QmKTsKIAotICAgIHZp
cnR1YWwgSW50UmVjdCBjb252ZXJ0RnJvbVNjcm9sbGJhclRvQ29udGFpbmluZ1ZpZXcoY29uc3Qg
U2Nyb2xsYmFyKiwgY29uc3QgSW50UmVjdCYpIGNvbnN0OwotICAgIHZpcnR1YWwgSW50UmVjdCBj
b252ZXJ0RnJvbUNvbnRhaW5pbmdWaWV3VG9TY3JvbGxiYXIoY29uc3QgU2Nyb2xsYmFyKiwgY29u
c3QgSW50UmVjdCYpIGNvbnN0OwotICAgIHZpcnR1YWwgSW50UG9pbnQgY29udmVydEZyb21TY3Jv
bGxiYXJUb0NvbnRhaW5pbmdWaWV3KGNvbnN0IFNjcm9sbGJhciosIGNvbnN0IEludFBvaW50Jikg
Y29uc3Q7Ci0gICAgdmlydHVhbCBJbnRQb2ludCBjb252ZXJ0RnJvbUNvbnRhaW5pbmdWaWV3VG9T
Y3JvbGxiYXIoY29uc3QgU2Nyb2xsYmFyKiwgY29uc3QgSW50UG9pbnQmKSBjb25zdDsKKyAgICB2
aXJ0dWFsIEludFJlY3QgY29udmVydEZyb21TY3JvbGxiYXJUb0NvbnRhaW5pbmdWaWV3KGNvbnN0
IFNjcm9sbGJhciosIGNvbnN0IEludFJlY3QmKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFs
IEludFJlY3QgY29udmVydEZyb21Db250YWluaW5nVmlld1RvU2Nyb2xsYmFyKGNvbnN0IFNjcm9s
bGJhciosIGNvbnN0IEludFJlY3QmKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIEludFBv
aW50IGNvbnZlcnRGcm9tU2Nyb2xsYmFyVG9Db250YWluaW5nVmlldyhjb25zdCBTY3JvbGxiYXIq
LCBjb25zdCBJbnRQb2ludCYpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgSW50UG9pbnQg
Y29udmVydEZyb21Db250YWluaW5nVmlld1RvU2Nyb2xsYmFyKGNvbnN0IFNjcm9sbGJhciosIGNv
bnN0IEludFBvaW50JikgY29uc3QgT1ZFUlJJREU7CiAKICAgICBib29sIGNvbnRhaW5zU2Nyb2xs
YWJsZUFyZWFXaXRoT3ZlcmxheVNjcm9sbGJhcnMoKSBjb25zdCB7IHJldHVybiBtX2NvbnRhaW5z
U2Nyb2xsYWJsZUFyZWFXaXRoT3ZlcmxheVNjcm9sbGJhcnM7IH0KICAgICB2b2lkIHNldENvbnRh
aW5zU2Nyb2xsYWJsZUFyZWFXaXRoT3ZlcmxheVNjcm9sbGJhcnMoYm9vbCBjb250YWlucykgeyBt
X2NvbnRhaW5zU2Nyb2xsYWJsZUFyZWFXaXRoT3ZlcmxheVNjcm9sbGJhcnMgPSBjb250YWluczsg
fQpAQCAtMzAyLDcgKzMwMyw3IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIHNldEhhc1ZlcnRpY2Fs
U2Nyb2xsYmFyKGJvb2wpOwogCiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVNjcm9sbENvcm5lcigp
OwotICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlU2Nyb2xsQ29ybmVyUmVjdChjb25zdCBJbnRS
ZWN0Jik7CisgICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGVTY3JvbGxDb3JuZXJSZWN0KGNvbnN0
IEludFJlY3QmKSBPVkVSUklERTsKIAogICAgIC8vIFNjcm9sbCB0aGUgY29udGVudCBieSBibGl0
dGluZyB0aGUgcGl4ZWxzLgogICAgIHZpcnR1YWwgYm9vbCBzY3JvbGxDb250ZW50c0Zhc3RQYXRo
KGNvbnN0IEludFNpemUmIHNjcm9sbERlbHRhLCBjb25zdCBJbnRSZWN0JiByZWN0VG9TY3JvbGws
IGNvbnN0IEludFJlY3QmIGNsaXBSZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Njcm9sbGFibGVBcmVhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxh
YmxlQXJlYS5oCmluZGV4IDVhMjc4YTliNWI5YzdjMTg1MWE0YzUzM2M2MGI1NDUxNTNmY2VkM2Eu
LjM1ZjFmZDJlNGM4MTcyN2RkYTczMzljMDgyNWMwOWE0NDg5ZWYyZGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuaApAQCAtMTMzLDI3ICsxMzMsMjcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgU2Nyb2xsYmFyKiBob3Jpem9udGFsU2Nyb2xsYmFyKCkgY29uc3QgeyBy
ZXR1cm4gMDsgfQogICAgIHZpcnR1YWwgU2Nyb2xsYmFyKiB2ZXJ0aWNhbFNjcm9sbGJhcigpIGNv
bnN0IHsgcmV0dXJuIDA7IH0KIAotICAgIHZpcnR1YWwgSW50UG9pbnQgc2Nyb2xsUG9zaXRpb24o
KSBjb25zdCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gSW50UG9pbnQoKTsgfQotICAg
IHZpcnR1YWwgSW50UG9pbnQgbWluaW11bVNjcm9sbFBvc2l0aW9uKCkgY29uc3QgeyBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsgcmV0dXJuIEludFBvaW50KCk7IH0KLSAgICB2aXJ0dWFsIEludFBvaW50
IG1heGltdW1TY3JvbGxQb3NpdGlvbigpIGNvbnN0IHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IHJl
dHVybiBJbnRQb2ludCgpOyB9Ci0gICAgdmlydHVhbCBJbnRSZWN0IHZpc2libGVDb250ZW50UmVj
dChib29sIC8qaW5jbHVkZVNjcm9sbGJhcnMqLyA9IGZhbHNlKSBjb25zdCB7IEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOyByZXR1cm4gSW50UmVjdCgpOyB9Ci0gICAgdmlydHVhbCBpbnQgdmlzaWJsZUhl
aWdodCgpIGNvbnN0IHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiAwOyB9Ci0gICAgdmly
dHVhbCBpbnQgdmlzaWJsZVdpZHRoKCkgY29uc3QgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0
dXJuIDA7IH0KLSAgICB2aXJ0dWFsIEludFNpemUgY29udGVudHNTaXplKCkgY29uc3QgeyBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIEludFNpemUoKTsgfQotICAgIHZpcnR1YWwgSW50U2l6
ZSBvdmVyaGFuZ0Ftb3VudCgpIGNvbnN0IHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiBJ
bnRTaXplKCk7IH0KKyAgICB2aXJ0dWFsIEludFBvaW50IHNjcm9sbFBvc2l0aW9uKCkgY29uc3Qg
PSAwOworICAgIHZpcnR1YWwgSW50UG9pbnQgbWluaW11bVNjcm9sbFBvc2l0aW9uKCkgY29uc3Qg
PSAwOworICAgIHZpcnR1YWwgSW50UG9pbnQgbWF4aW11bVNjcm9sbFBvc2l0aW9uKCkgY29uc3Qg
PSAwOworICAgIHZpcnR1YWwgSW50UmVjdCB2aXNpYmxlQ29udGVudFJlY3QoYm9vbCAvKmluY2x1
ZGVTY3JvbGxiYXJzKi8gPSBmYWxzZSkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgaW50IHZpc2li
bGVIZWlnaHQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBpbnQgdmlzaWJsZVdpZHRoKCkgY29u
c3QgPSAwOworICAgIHZpcnR1YWwgSW50U2l6ZSBjb250ZW50c1NpemUoKSBjb25zdCA9IDA7Cisg
ICAgdmlydHVhbCBJbnRTaXplIG92ZXJoYW5nQW1vdW50KCkgY29uc3QgPSAwOwogICAgIHZpcnR1
YWwgSW50UG9pbnQgY3VycmVudE1vdXNlUG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBJbnRQb2lu
dCgpOyB9CiAKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkU3VzcGVuZFNjcm9sbEFuaW1hdGlvbnMo
KSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCB2b2lkIHNjcm9sbGJhclN0eWxl
Q2hhbmdlZChpbnQgLypuZXdTdHlsZSovLCBib29sIC8qZm9yY2VVcGRhdGUqLykgeyB9CiAgICAg
dmlydHVhbCB2b2lkIHNldFZpc2libGVTY3JvbGxlclRodW1iUmVjdChjb25zdCBJbnRSZWN0Jikg
eyB9CiAKLSAgICB2aXJ0dWFsIGJvb2wgaXNPbkFjdGl2ZVBhZ2UoKSBjb25zdCB7IEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc09uQWN0aXZl
UGFnZSgpIGNvbnN0ID0gMDsKICAgICAKICAgICAvLyBOb3RlIHRoYXQgdGhpcyBvbmx5IHJldHVy
bnMgc2Nyb2xsYWJsZSBhcmVhcyB0aGF0IGNhbiBhY3R1YWxseSBiZSBzY3JvbGxlZC4KICAgICB2
aXJ0dWFsIFNjcm9sbGFibGVBcmVhKiBlbmNsb3NpbmdTY3JvbGxhYmxlQXJlYSgpIGNvbnN0ID0g
MDsKIAogICAgIC8vIFJldHVybnMgdGhlIGJvdW5kaW5nIGJveCBvZiB0aGlzIHNjcm9sbGFibGUg
YXJlYSwgaW4gdGhlIGNvb3JkaW5hdGUgc3lzdGVtIG9mIHRoZSBlbmNsb3Npbmcgc2Nyb2xsIHZp
ZXcuCi0gICAgdmlydHVhbCBJbnRSZWN0IHNjcm9sbGFibGVBcmVhQm91bmRpbmdCb3goKSBjb25z
dCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gSW50UmVjdCgpOyB9CisgICAgdmlydHVh
bCBJbnRSZWN0IHNjcm9sbGFibGVBcmVhQm91bmRpbmdCb3goKSBjb25zdCA9IDA7CiAKICAgICB2
aXJ0dWFsIGJvb2wgc2hvdWxkUnViYmVyQmFuZEluRGlyZWN0aW9uKFNjcm9sbERpcmVjdGlvbikg
Y29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jaHJvbWl1bS9GcmFtZWxlc3NTY3JvbGxWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2Nocm9taXVtL0ZyYW1lbGVzc1Njcm9sbFZpZXcuY3BwCmluZGV4IDczYmVjMGRmODYz
ZDk0NDE4OGMwMGI4ODVjNzNkODFhNTBlNTk3ZDEuLjgwM2I3YzUyNDY3MjZkNmMzMTI1NDJiYWM4
ZjU2NzJmOTYwYjhmZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9t
aXVtL0ZyYW1lbGVzc1Njcm9sbFZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2Nocm9taXVtL0ZyYW1lbGVzc1Njcm9sbFZpZXcuY3BwCkBAIC02Myw2ICs2MywxNyBAQCBTY3Jv
bGxhYmxlQXJlYSogRnJhbWVsZXNzU2Nyb2xsVmlldzo6ZW5jbG9zaW5nU2Nyb2xsYWJsZUFyZWEo
KSBjb25zdAogICAgIHJldHVybiAwOwogfQogCitib29sIEZyYW1lbGVzc1Njcm9sbFZpZXc6Omlz
T25BY3RpdmVQYWdlKCkgY29uc3QKK3sKKyAgICAvLyBGSVhNRQorICAgIHJldHVybiBpc0FjdGl2
ZSgpOworfQorCitJbnRSZWN0IEZyYW1lbGVzc1Njcm9sbFZpZXc6OnNjcm9sbGFibGVBcmVhQm91
bmRpbmdCb3goKSBjb25zdAoreworICAgIHJldHVybiB3aW5kb3dDbGlwUmVjdChmYWxzZSk7Cit9
CisKIHZvaWQgRnJhbWVsZXNzU2Nyb2xsVmlldzo6aW52YWxpZGF0ZVJlY3QoY29uc3QgSW50UmVj
dCYgcmVjdCkKIHsKICAgICBpZiAoSG9zdFdpbmRvdyogaCA9IGhvc3RXaW5kb3coKSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0ZyYW1lbGVzc1Njcm9sbFZp
ZXcuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0ZyYW1lbGVzc1Njcm9sbFZp
ZXcuaAppbmRleCAzNDk4NDc1ZGNkZTU5MDk4NmQyZDNlYjNiZGU1ZTQwNTBiMjU5ZGUzLi5hYzFl
ZWNkMWMzYjQ4MmFlODFiNmU3YTY1MzE2NDQxZmZmZWMwMjJhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9GcmFtZWxlc3NTY3JvbGxWaWV3LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vRnJhbWVsZXNzU2Nyb2xsVmlldy5oCkBAIC03
NCw5ICs3NCwxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjZW5kaWYKIAogICAgICAgICAvLyBT
Y3JvbGxhYmxlQXJlYSBwdWJsaWMgbWV0aG9kczoKLSAgICAgICAgdmlydHVhbCB2b2lkIGludmFs
aWRhdGVTY3JvbGxiYXJSZWN0KFNjcm9sbGJhciosIGNvbnN0IEludFJlY3QmKTsKLSAgICAgICAg
dmlydHVhbCBib29sIGlzQWN0aXZlKCkgY29uc3Q7Ci0gICAgICAgIHZpcnR1YWwgU2Nyb2xsYWJs
ZUFyZWEqIGVuY2xvc2luZ1Njcm9sbGFibGVBcmVhKCkgY29uc3Q7CisgICAgICAgIHZpcnR1YWwg
dm9pZCBpbnZhbGlkYXRlU2Nyb2xsYmFyUmVjdChTY3JvbGxiYXIqLCBjb25zdCBJbnRSZWN0Jikg
T1ZFUlJJREU7CisgICAgICAgIHZpcnR1YWwgYm9vbCBpc0FjdGl2ZSgpIGNvbnN0IE9WRVJSSURF
OworICAgICAgICB2aXJ0dWFsIFNjcm9sbGFibGVBcmVhKiBlbmNsb3NpbmdTY3JvbGxhYmxlQXJl
YSgpIGNvbnN0IE9WRVJSSURFOworICAgICAgICB2aXJ0dWFsIGJvb2wgaXNPbkFjdGl2ZVBhZ2Uo
KSBjb25zdCBPVkVSUklERTsKKyAgICAgICAgdmlydHVhbCBJbnRSZWN0IHNjcm9sbGFibGVBcmVh
Qm91bmRpbmdCb3goKSBjb25zdCBPVkVSUklERTsKIAogICAgICAgICAvLyBXaWRnZXQgcHVibGlj
IG1ldGhvZHM6CiAgICAgICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlUmVjdChjb25zdCBJbnRS
ZWN0Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJv
eC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAKaW5kZXgg
MmY1YWUyYjZjNzdmYjIxNGI2YTI1ZTUxYTEzNzVmYmYyZTYzNmJiNi4uNDBlYjM3MTViYjQyNzFl
OWZjOWQ0MWMxNDYwNDFhZjNlNmM5NjNmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMaXN0Qm94LmNwcApAQCAtNjMyLDYgKzYzMiwzNCBAQCBJbnRQb2ludCBSZW5kZXJMaXN0
Qm94OjpzY3JvbGxQb3NpdGlvbigpIGNvbnN0CiAgICAgcmV0dXJuIEludFBvaW50KDAsIG1faW5k
ZXhPZmZzZXQpOwogfQogCitJbnRQb2ludCBSZW5kZXJMaXN0Qm94OjptaW5pbXVtU2Nyb2xsUG9z
aXRpb24oKSBjb25zdCBPVkVSUklERQoreworICAgIHJldHVybiBJbnRQb2ludCgpOworfQorCitJ
bnRQb2ludCBSZW5kZXJMaXN0Qm94OjptYXhpbXVtU2Nyb2xsUG9zaXRpb24oKSBjb25zdCBPVkVS
UklERQoreworICAgIHJldHVybiBJbnRQb2ludChzY3JvbGxTaXplKEhvcml6b250YWxTY3JvbGxi
YXIpLCBzY3JvbGxTaXplKFZlcnRpY2FsU2Nyb2xsYmFyKSk7Cit9CisKK0ludFJlY3QgUmVuZGVy
TGlzdEJveDo6dmlzaWJsZUNvbnRlbnRSZWN0KGJvb2wgaW5jbHVkZVNjcm9sbGJhcnMpIGNvbnN0
IE9WRVJSSURFCit7CisgICAgaW50IHZlcnRpY2FsU2Nyb2xsYmFyV2lkdGggPSAwOworICAgIGlu
dCBob3Jpem9udGFsU2Nyb2xsYmFySGVpZ2h0ID0gMDsKKworICAgIGlmIChpbmNsdWRlU2Nyb2xs
YmFycykgeworICAgICAgICBpZiAoU2Nyb2xsYmFyKiB2ZXJ0aWNhbEJhciA9IHZlcnRpY2FsU2Ny
b2xsYmFyKCkpCisgICAgICAgICAgICB2ZXJ0aWNhbFNjcm9sbGJhcldpZHRoID0gIXZlcnRpY2Fs
QmFyLT5pc092ZXJsYXlTY3JvbGxiYXIoKSA/IHZlcnRpY2FsQmFyLT53aWR0aCgpIDogMDsKKyAg
ICAgICAgaWYgKFNjcm9sbGJhciogaG9yaXpvbnRhbEJhciA9IGhvcml6b250YWxTY3JvbGxiYXIo
KSkKKyAgICAgICAgICAgIGhvcml6b250YWxTY3JvbGxiYXJIZWlnaHQgPSAhaG9yaXpvbnRhbEJh
ci0+aXNPdmVybGF5U2Nyb2xsYmFyKCkgPyBob3Jpem9udGFsQmFyLT5oZWlnaHQoKSA6IDA7Cisg
ICAgfQorCisgICAgcmV0dXJuIEludFJlY3Qoc2Nyb2xsUG9zaXRpb24oKS54KCksCisgICAgICAg
ICAgICAgICAgICAgc2Nyb2xsUG9zaXRpb24oKS55KCksCisgICAgICAgICAgICAgICAgICAgc3Rk
OjptYXgoMCwgdmlzaWJsZVdpZHRoKCkgKyB2ZXJ0aWNhbFNjcm9sbGJhcldpZHRoKSwKKyAgICAg
ICAgICAgICAgICAgICBzdGQ6Om1heCgwLCB2aXNpYmxlSGVpZ2h0KCkgKyBob3Jpem9udGFsU2Ny
b2xsYmFySGVpZ2h0KSk7Cit9CisKIHZvaWQgUmVuZGVyTGlzdEJveDo6c2Nyb2xsVG8oaW50IG5l
d09mZnNldCkKIHsKICAgICBpZiAobmV3T2Zmc2V0ID09IG1faW5kZXhPZmZzZXQpCkBAIC03OTUs
NiArODIzLDExIEBAIEludFNpemUgUmVuZGVyTGlzdEJveDo6Y29udGVudHNTaXplKCkgY29uc3QK
ICAgICByZXR1cm4gSW50U2l6ZShzY3JvbGxXaWR0aCgpLCBzY3JvbGxIZWlnaHQoKSk7CiB9CiAK
K0ludFNpemUgUmVuZGVyTGlzdEJveDo6b3ZlcmhhbmdBbW91bnQoKSBjb25zdCBPVkVSUklERQor
eworICAgIHJldHVybiBJbnRTaXplKCk7Cit9CisKIGludCBSZW5kZXJMaXN0Qm94Ojp2aXNpYmxl
SGVpZ2h0KCkgY29uc3QKIHsKICAgICByZXR1cm4gaGVpZ2h0KCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5oIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxpc3RCb3guaAppbmRleCA2MDM4YzQzMTY0ZmFhNzJmYjY4ZjhmOGMyN2I4
NDVlYzczNWY4YzE4Li45ZGVjNjY5ODhhM2U1ZjUyZTIyNWEyZDE2MDkwN2E4YzhhMDE3MzhiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmgKQEAgLTk3LDI4ICs5Nywz
MiBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBub2RlQXRQb2ludChjb25zdCBIaXRUZXN0
UmVxdWVzdCYsIEhpdFRlc3RSZXN1bHQmLCBjb25zdCBIaXRUZXN0UG9pbnQmIHBvaW50SW5Db250
YWluZXIsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCwgSGl0VGVzdEFjdGlv
bikgT1ZFUlJJREU7CiAKICAgICAvLyBTY3JvbGxhYmxlQXJlYSBpbnRlcmZhY2UuCi0gICAgdmly
dHVhbCBpbnQgc2Nyb2xsU2l6ZShTY3JvbGxiYXJPcmllbnRhdGlvbikgY29uc3Q7Ci0gICAgdmly
dHVhbCBpbnQgc2Nyb2xsUG9zaXRpb24oU2Nyb2xsYmFyKikgY29uc3Q7Ci0gICAgdmlydHVhbCB2
b2lkIHNldFNjcm9sbE9mZnNldChjb25zdCBJbnRQb2ludCYpOworICAgIHZpcnR1YWwgaW50IHNj
cm9sbFNpemUoU2Nyb2xsYmFyT3JpZW50YXRpb24pIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1
YWwgaW50IHNjcm9sbFBvc2l0aW9uKFNjcm9sbGJhciopIGNvbnN0IE9WRVJSSURFOworICAgIHZp
cnR1YWwgSW50UG9pbnQgbWluaW11bVNjcm9sbFBvc2l0aW9uKCkgY29uc3QgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCBJbnRQb2ludCBtYXhpbXVtU2Nyb2xsUG9zaXRpb24oKSBjb25zdCBPVkVSUklE
RTsKKyAgICB2aXJ0dWFsIEludFJlY3QgdmlzaWJsZUNvbnRlbnRSZWN0KGJvb2wgLyppbmNsdWRl
U2Nyb2xsYmFycyovID0gZmFsc2UpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBz
ZXRTY3JvbGxPZmZzZXQoY29uc3QgSW50UG9pbnQmKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIElu
dFBvaW50IHNjcm9sbFBvc2l0aW9uKCkgY29uc3QgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lk
IGludmFsaWRhdGVTY3JvbGxiYXJSZWN0KFNjcm9sbGJhciosIGNvbnN0IEludFJlY3QmKTsKLSAg
ICB2aXJ0dWFsIGJvb2wgaXNBY3RpdmUoKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgaXNTY3Jv
bGxDb3JuZXJWaXNpYmxlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0gLy8gV2UgZG9uJ3Qgc3Vw
cG9ydCByZXNpemUgb24gbGlzdCBib3hlcyB5ZXQuIElmIHdlIGRpZCB0aGVzZSB3b3VsZCBoYXZl
IHRvIGNoYW5nZS4KLSAgICB2aXJ0dWFsIEludFJlY3Qgc2Nyb2xsQ29ybmVyUmVjdCgpIGNvbnN0
IHsgcmV0dXJuIEludFJlY3QoKTsgfQotICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlU2Nyb2xs
Q29ybmVyUmVjdChjb25zdCBJbnRSZWN0JikgeyB9Ci0gICAgdmlydHVhbCBJbnRSZWN0IGNvbnZl
cnRGcm9tU2Nyb2xsYmFyVG9Db250YWluaW5nVmlldyhjb25zdCBTY3JvbGxiYXIqLCBjb25zdCBJ
bnRSZWN0JikgY29uc3Q7Ci0gICAgdmlydHVhbCBJbnRSZWN0IGNvbnZlcnRGcm9tQ29udGFpbmlu
Z1ZpZXdUb1Njcm9sbGJhcihjb25zdCBTY3JvbGxiYXIqLCBjb25zdCBJbnRSZWN0JikgY29uc3Q7
Ci0gICAgdmlydHVhbCBJbnRQb2ludCBjb252ZXJ0RnJvbVNjcm9sbGJhclRvQ29udGFpbmluZ1Zp
ZXcoY29uc3QgU2Nyb2xsYmFyKiwgY29uc3QgSW50UG9pbnQmKSBjb25zdDsKLSAgICB2aXJ0dWFs
IEludFBvaW50IGNvbnZlcnRGcm9tQ29udGFpbmluZ1ZpZXdUb1Njcm9sbGJhcihjb25zdCBTY3Jv
bGxiYXIqLCBjb25zdCBJbnRQb2ludCYpIGNvbnN0OwotICAgIHZpcnR1YWwgU2Nyb2xsYmFyKiB2
ZXJ0aWNhbFNjcm9sbGJhcigpIGNvbnN0IHsgcmV0dXJuIG1fdkJhci5nZXQoKTsgfQotICAgIHZp
cnR1YWwgSW50U2l6ZSBjb250ZW50c1NpemUoKSBjb25zdDsKLSAgICB2aXJ0dWFsIGludCB2aXNp
YmxlSGVpZ2h0KCkgY29uc3Q7Ci0gICAgdmlydHVhbCBpbnQgdmlzaWJsZVdpZHRoKCkgY29uc3Q7
Ci0gICAgdmlydHVhbCBJbnRQb2ludCBjdXJyZW50TW91c2VQb3NpdGlvbigpIGNvbnN0OwotICAg
IHZpcnR1YWwgYm9vbCBzaG91bGRTdXNwZW5kU2Nyb2xsQW5pbWF0aW9ucygpIGNvbnN0OwotICAg
IHZpcnR1YWwgYm9vbCBpc09uQWN0aXZlUGFnZSgpIGNvbnN0OwotCi0gICAgdmlydHVhbCBTY3Jv
bGxhYmxlQXJlYSogZW5jbG9zaW5nU2Nyb2xsYWJsZUFyZWEoKSBjb25zdDsKKyAgICB2aXJ0dWFs
IHZvaWQgaW52YWxpZGF0ZVNjcm9sbGJhclJlY3QoU2Nyb2xsYmFyKiwgY29uc3QgSW50UmVjdCYp
IE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBpc0FjdGl2ZSgpIGNvbnN0IE9WRVJSSURFOwor
ICAgIHZpcnR1YWwgYm9vbCBpc1Njcm9sbENvcm5lclZpc2libGUoKSBjb25zdCBPVkVSUklERSB7
IHJldHVybiBmYWxzZTsgfSAvLyBXZSBkb24ndCBzdXBwb3J0IHJlc2l6ZSBvbiBsaXN0IGJveGVz
IHlldC4gSWYgd2UgZGlkIHRoZXNlIHdvdWxkIGhhdmUgdG8gY2hhbmdlLgorICAgIHZpcnR1YWwg
SW50UmVjdCBzY3JvbGxDb3JuZXJSZWN0KCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gSW50UmVj
dCgpOyB9CisgICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGVTY3JvbGxDb3JuZXJSZWN0KGNvbnN0
IEludFJlY3QmKSBPVkVSUklERSB7IH0KKyAgICB2aXJ0dWFsIEludFJlY3QgY29udmVydEZyb21T
Y3JvbGxiYXJUb0NvbnRhaW5pbmdWaWV3KGNvbnN0IFNjcm9sbGJhciosIGNvbnN0IEludFJlY3Qm
KSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIEludFJlY3QgY29udmVydEZyb21Db250YWlu
aW5nVmlld1RvU2Nyb2xsYmFyKGNvbnN0IFNjcm9sbGJhciosIGNvbnN0IEludFJlY3QmKSBjb25z
dCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIEludFBvaW50IGNvbnZlcnRGcm9tU2Nyb2xsYmFyVG9D
b250YWluaW5nVmlldyhjb25zdCBTY3JvbGxiYXIqLCBjb25zdCBJbnRQb2ludCYpIGNvbnN0IE9W
RVJSSURFOworICAgIHZpcnR1YWwgSW50UG9pbnQgY29udmVydEZyb21Db250YWluaW5nVmlld1Rv
U2Nyb2xsYmFyKGNvbnN0IFNjcm9sbGJhciosIGNvbnN0IEludFBvaW50JikgY29uc3QgT1ZFUlJJ
REU7CisgICAgdmlydHVhbCBTY3JvbGxiYXIqIHZlcnRpY2FsU2Nyb2xsYmFyKCkgY29uc3QgT1ZF
UlJJREUgeyByZXR1cm4gbV92QmFyLmdldCgpOyB9CisgICAgdmlydHVhbCBJbnRTaXplIGNvbnRl
bnRzU2l6ZSgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgSW50U2l6ZSBvdmVyaGFuZ0Ft
b3VudCgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgaW50IHZpc2libGVIZWlnaHQoKSBj
b25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGludCB2aXNpYmxlV2lkdGgoKSBjb25zdCBPVkVS
UklERTsKKyAgICB2aXJ0dWFsIEludFBvaW50IGN1cnJlbnRNb3VzZVBvc2l0aW9uKCkgY29uc3Qg
T1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIHNob3VsZFN1c3BlbmRTY3JvbGxBbmltYXRpb25z
KCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGlzT25BY3RpdmVQYWdlKCkgY29u
c3QgT1ZFUlJJREU7CisKKyAgICB2aXJ0dWFsIFNjcm9sbGFibGVBcmVhKiBlbmNsb3NpbmdTY3Jv
bGxhYmxlQXJlYSgpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgSW50UmVjdCBzY3JvbGxh
YmxlQXJlYUJvdW5kaW5nQm94KCkgY29uc3QgT1ZFUlJJREU7CiAKICAgICAvLyBOT1RFOiBUaGlz
IHNob3VsZCBvbmx5IGJlIGNhbGxlZCBieSB0aGUgb3ZlcnJpZGVuIHNldFNjcm9sbE9mZnNldCBm
cm9tIFNjcm9sbGFibGVBcmVhLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvU2Nyb2xsYmFyR3JvdXAuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvU2Nyb2xs
YmFyR3JvdXAuY3BwCmluZGV4IDBlNjc2Y2I1ZjViNmNiM2UwYjE3YTI0MDY1YTFkYTI1YWQ3NmY3
ZDYuLjM1MTgyNDRmZWRmNjIwMDk0NzFhNzM2YTlmZThkZGI4NWIwZTViNmIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1Njcm9sbGJhckdyb3VwLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9TY3JvbGxiYXJHcm91cC5jcHAKQEAgLTE5Nyw2ICsxOTcs
MjQgQEAgSW50UG9pbnQgU2Nyb2xsYmFyR3JvdXA6Om1heGltdW1TY3JvbGxQb3NpdGlvbigpIGNv
bnN0CiAgICAgcmV0dXJuIEludFBvaW50KGNvbnRlbnRzU2l6ZSgpLndpZHRoKCkgLSB2aXNpYmxl
V2lkdGgoKSwgY29udGVudHNTaXplKCkuaGVpZ2h0KCkgLSB2aXNpYmxlSGVpZ2h0KCkpOwogfQog
CitJbnRSZWN0IFNjcm9sbGJhckdyb3VwOjp2aXNpYmxlQ29udGVudFJlY3QoYm9vbCBpbmNsdWRl
U2Nyb2xsYmFycykgY29uc3QKK3sKKyAgICBpbnQgdmVydGljYWxTY3JvbGxiYXJXaWR0aCA9IDA7
CisgICAgaW50IGhvcml6b250YWxTY3JvbGxiYXJIZWlnaHQgPSAwOworCisgICAgaWYgKGluY2x1
ZGVTY3JvbGxiYXJzKSB7CisgICAgICAgIGlmIChTY3JvbGxiYXIqIHZlcnRpY2FsQmFyID0gdmVy
dGljYWxTY3JvbGxiYXIoKSkKKyAgICAgICAgICAgIHZlcnRpY2FsU2Nyb2xsYmFyV2lkdGggPSAh
dmVydGljYWxCYXItPmlzT3ZlcmxheVNjcm9sbGJhcigpID8gdmVydGljYWxCYXItPndpZHRoKCkg
OiAwOworICAgICAgICBpZiAoU2Nyb2xsYmFyKiBob3Jpem9udGFsQmFyID0gaG9yaXpvbnRhbFNj
cm9sbGJhcigpKQorICAgICAgICAgICAgaG9yaXpvbnRhbFNjcm9sbGJhckhlaWdodCA9ICFob3Jp
em9udGFsQmFyLT5pc092ZXJsYXlTY3JvbGxiYXIoKSA/IGhvcml6b250YWxCYXItPmhlaWdodCgp
IDogMDsKKyAgICB9CisKKyAgICByZXR1cm4gSW50UmVjdChzY3JvbGxQb3NpdGlvbigpLngoKSwK
KyAgICAgICAgICAgICAgICAgICBzY3JvbGxQb3NpdGlvbigpLnkoKSwKKyAgICAgICAgICAgICAg
ICAgICBzdGQ6Om1heCgwLCB2aXNpYmxlV2lkdGgoKSArIHZlcnRpY2FsU2Nyb2xsYmFyV2lkdGgp
LAorICAgICAgICAgICAgICAgICAgIHN0ZDo6bWF4KDAsIHZpc2libGVIZWlnaHQoKSArIGhvcml6
b250YWxTY3JvbGxiYXJIZWlnaHQpKTsKK30KKwogaW50IFNjcm9sbGJhckdyb3VwOjp2aXNpYmxl
SGVpZ2h0KCkgY29uc3QKIHsKICAgICBpZiAobV92ZXJ0aWNhbFNjcm9sbGJhcikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1Njcm9sbGJhckdyb3VwLmggYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9TY3JvbGxiYXJHcm91cC5oCmluZGV4IGEwNDc5YzIwNjI3ZDdi
ZjE0NTE0NDg5MTkyZDczZDUxNjgzOGRmYjUuLmJiNzc5MDM4M2E1YzQxODEzY2VlMzg1ZmMwYTJj
NGQyZTg2YWM3MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1Njcm9s
bGJhckdyb3VwLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvU2Nyb2xsYmFyR3Jv
dXAuaApAQCAtNDksMzEgKzQ5LDMyIEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEZyYW1lUmVjdChj
b25zdCBXZWJDb3JlOjpJbnRSZWN0Jik7CiAKICAgICAvLyBXZWJDb3JlOjpTY3JvbGxhYmxlQXJl
YSBtZXRob2RzCi0gICAgdmlydHVhbCBpbnQgc2Nyb2xsU2l6ZShXZWJDb3JlOjpTY3JvbGxiYXJP
cmllbnRhdGlvbikgY29uc3Q7Ci0gICAgdmlydHVhbCBpbnQgc2Nyb2xsUG9zaXRpb24oV2ViQ29y
ZTo6U2Nyb2xsYmFyKikgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIHNldFNjcm9sbE9mZnNldChj
b25zdCBXZWJDb3JlOjpJbnRQb2ludCYpOwotICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlU2Ny
b2xsYmFyUmVjdChXZWJDb3JlOjpTY3JvbGxiYXIqLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jik7
Ci0gICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGVTY3JvbGxDb3JuZXJSZWN0KGNvbnN0IFdlYkNv
cmU6OkludFJlY3QmKTsKLSAgICB2aXJ0dWFsIGJvb2wgaXNBY3RpdmUoKSBjb25zdDsKLSAgICB2
aXJ0dWFsIFNjcm9sbGFibGVBcmVhKiBlbmNsb3NpbmdTY3JvbGxhYmxlQXJlYSgpIGNvbnN0Owot
ICAgIHZpcnR1YWwgV2ViQ29yZTo6SW50UmVjdCBzY3JvbGxDb3JuZXJSZWN0KCkgY29uc3QgeyBy
ZXR1cm4gV2ViQ29yZTo6SW50UmVjdCgpOyB9Ci0gICAgdmlydHVhbCBib29sIGlzU2Nyb2xsQ29y
bmVyVmlzaWJsZSgpIGNvbnN0OwotICAgIHZpcnR1YWwgdm9pZCBnZXRUaWNrbWFya3MoVmVjdG9y
PFdlYkNvcmU6OkludFJlY3Q+JikgY29uc3Q7Ci0gICAgdmlydHVhbCBXZWJDb3JlOjpJbnRQb2lu
dCBjb252ZXJ0RnJvbUNvbnRhaW5pbmdWaWV3VG9TY3JvbGxiYXIoY29uc3QgV2ViQ29yZTo6U2Ny
b2xsYmFyKiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBhcmVudFBvaW50KSBjb25zdDsKLSAg
ICB2aXJ0dWFsIFdlYkNvcmU6OlNjcm9sbGJhciogaG9yaXpvbnRhbFNjcm9sbGJhcigpIGNvbnN0
OwotICAgIHZpcnR1YWwgV2ViQ29yZTo6U2Nyb2xsYmFyKiB2ZXJ0aWNhbFNjcm9sbGJhcigpIGNv
bnN0OwotICAgIHZpcnR1YWwgV2ViQ29yZTo6SW50UG9pbnQgc2Nyb2xsUG9zaXRpb24oKSBjb25z
dDsKLSAgICB2aXJ0dWFsIFdlYkNvcmU6OkludFBvaW50IG1pbmltdW1TY3JvbGxQb3NpdGlvbigp
IGNvbnN0OwotICAgIHZpcnR1YWwgV2ViQ29yZTo6SW50UG9pbnQgbWF4aW11bVNjcm9sbFBvc2l0
aW9uKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBpbnQgdmlzaWJsZUhlaWdodCgpIGNvbnN0OwotICAg
IHZpcnR1YWwgaW50IHZpc2libGVXaWR0aCgpIGNvbnN0OwotICAgIHZpcnR1YWwgV2ViQ29yZTo6
SW50U2l6ZSBjb250ZW50c1NpemUoKSBjb25zdDsKLSAgICB2aXJ0dWFsIFdlYkNvcmU6OkludFNp
emUgb3ZlcmhhbmdBbW91bnQoKSBjb25zdDsKLSAgICB2aXJ0dWFsIFdlYkNvcmU6OkludFBvaW50
IGN1cnJlbnRNb3VzZVBvc2l0aW9uKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBib29sIHNob3VsZFN1
c3BlbmRTY3JvbGxBbmltYXRpb25zKCkgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIHNjcm9sbGJh
clN0eWxlQ2hhbmdlZChpbnQgbmV3U3R5bGUsIGJvb2wgZm9yY2VVcGRhdGUpOwotICAgIHZpcnR1
YWwgYm9vbCBpc09uQWN0aXZlUGFnZSgpIGNvbnN0OwotICAgIHZpcnR1YWwgV2ViQ29yZTo6SW50
UmVjdCBzY3JvbGxhYmxlQXJlYUJvdW5kaW5nQm94KCkgY29uc3Q7CisgICAgdmlydHVhbCBpbnQg
c2Nyb2xsU2l6ZShXZWJDb3JlOjpTY3JvbGxiYXJPcmllbnRhdGlvbikgY29uc3QgT1ZFUlJJREU7
CisgICAgdmlydHVhbCBpbnQgc2Nyb2xsUG9zaXRpb24oV2ViQ29yZTo6U2Nyb2xsYmFyKikgY29u
c3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHNldFNjcm9sbE9mZnNldChjb25zdCBXZWJD
b3JlOjpJbnRQb2ludCYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlU2Ny
b2xsYmFyUmVjdChXZWJDb3JlOjpTY3JvbGxiYXIqLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jikg
T1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGVTY3JvbGxDb3JuZXJSZWN0KGNv
bnN0IFdlYkNvcmU6OkludFJlY3QmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNBY3Rp
dmUoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFNjcm9sbGFibGVBcmVhKiBlbmNsb3Np
bmdTY3JvbGxhYmxlQXJlYSgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgV2ViQ29yZTo6
SW50UmVjdCBzY3JvbGxDb3JuZXJSZWN0KCkgY29uc3QgeyByZXR1cm4gV2ViQ29yZTo6SW50UmVj
dCgpIE9WRVJSSURFOyB9CisgICAgdmlydHVhbCBib29sIGlzU2Nyb2xsQ29ybmVyVmlzaWJsZSgp
IGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBnZXRUaWNrbWFya3MoVmVjdG9yPFdl
YkNvcmU6OkludFJlY3Q+JikgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBXZWJDb3JlOjpJ
bnRQb2ludCBjb252ZXJ0RnJvbUNvbnRhaW5pbmdWaWV3VG9TY3JvbGxiYXIoY29uc3QgV2ViQ29y
ZTo6U2Nyb2xsYmFyKiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBhcmVudFBvaW50KSBjb25z
dCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OlNjcm9sbGJhciogaG9yaXpvbnRhbFNj
cm9sbGJhcigpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgV2ViQ29yZTo6U2Nyb2xsYmFy
KiB2ZXJ0aWNhbFNjcm9sbGJhcigpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgV2ViQ29y
ZTo6SW50UG9pbnQgc2Nyb2xsUG9zaXRpb24oKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFs
IFdlYkNvcmU6OkludFBvaW50IG1pbmltdW1TY3JvbGxQb3NpdGlvbigpIGNvbnN0IE9WRVJSSURF
OworICAgIHZpcnR1YWwgV2ViQ29yZTo6SW50UG9pbnQgbWF4aW11bVNjcm9sbFBvc2l0aW9uKCkg
Y29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBXZWJDb3JlOjpJbnRSZWN0IHZpc2libGVDb250
ZW50UmVjdChib29sIGluY2x1ZGVTY3JvbGxiYXJzID0gZmFsc2UpIGNvbnN0IE9WRVJSSURFOwor
ICAgIHZpcnR1YWwgaW50IHZpc2libGVIZWlnaHQoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIGludCB2aXNpYmxlV2lkdGgoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFdlYkNv
cmU6OkludFNpemUgY29udGVudHNTaXplKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBX
ZWJDb3JlOjpJbnRTaXplIG92ZXJoYW5nQW1vdW50KCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmly
dHVhbCBXZWJDb3JlOjpJbnRQb2ludCBjdXJyZW50TW91c2VQb3NpdGlvbigpIGNvbnN0IE9WRVJS
SURFOworICAgIHZpcnR1YWwgYm9vbCBzaG91bGRTdXNwZW5kU2Nyb2xsQW5pbWF0aW9ucygpIGNv
bnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxiYXJTdHlsZUNoYW5nZWQoaW50
IG5ld1N0eWxlLCBib29sIGZvcmNlVXBkYXRlKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wg
aXNPbkFjdGl2ZVBhZ2UoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6Oklu
dFJlY3Qgc2Nyb2xsYWJsZUFyZWFCb3VuZGluZ0JveCgpIGNvbnN0IE9WRVJSSURFOwogCiBwcml2
YXRlOgogICAgIFdlYkNvcmU6OkZyYW1lVmlldyogbV9mcmFtZVZpZXc7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1Njcm9sbEFuaW1hdG9yTm9uZVRlc3QuY3BwIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9TY3JvbGxBbmltYXRvck5vbmVUZXN0LmNwcApp
bmRleCA5MjdkNGE5YzMyZGU2OTcyOTk4NjI5ZDFmZDU2Njc1OGI2NTU3ZDMxLi5lNzE4NDZhZGIx
NTRiZjlmYjhmM2NjMmQ3Njc5NTgwYTk0NjA5YTRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL1Njcm9sbEFuaW1hdG9yTm9uZVRlc3QuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvU2Nyb2xsQW5pbWF0b3JOb25lVGVzdC5jcHAKQEAgLTYzLDEy
ICs2MywyMCBAQCBwdWJsaWM6CiAgICAgTU9DS19NRVRIT0QxKGludmFsaWRhdGVTY3JvbGxDb3Ju
ZXJSZWN0LCB2b2lkKGNvbnN0IEludFJlY3QmKSk7CiAgICAgTU9DS19NRVRIT0QxKHNldFNjcm9s
bE9mZnNldEZyb21BbmltYXRpb24sIHZvaWQoY29uc3QgSW50UG9pbnQmKSk7CiAgICAgTU9DS19D
T05TVF9NRVRIT0QwKGVuY2xvc2luZ1Njcm9sbGFibGVBcmVhLCBTY3JvbGxhYmxlQXJlYSooKSk7
Ci0KLSAgICB2aXJ0dWFsIEludFBvaW50IHNjcm9sbFBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4g
SW50UG9pbnQoKTsgfQotICAgIHZpcnR1YWwgaW50IHZpc2libGVIZWlnaHQoKSBjb25zdCB7IHJl
dHVybiA3Njg7IH0KLSAgICB2aXJ0dWFsIGludCB2aXNpYmxlV2lkdGgoKSBjb25zdCB7IHJldHVy
biAxMDI0OyB9Ci0KLSAgICBib29sIHNjcm9sbEFuaW1hdG9yRW5hYmxlZCgpIGNvbnN0IHsgcmV0
dXJuIG1fc2Nyb2xsQW5pbWF0b3JFbmFibGVkOyB9CisgICAgTU9DS19DT05TVF9NRVRIT0QwKG1p
bmltdW1TY3JvbGxQb3NpdGlvbiwgSW50UG9pbnQoKSk7CisgICAgTU9DS19DT05TVF9NRVRIT0Qw
KG1heGltdW1TY3JvbGxQb3NpdGlvbiwgSW50UG9pbnQoKSk7CisgICAgTU9DS19DT05TVF9NRVRI
T0QxKHZpc2libGVDb250ZW50UmVjdCwgSW50UmVjdChib29sKSk7CisgICAgTU9DS19DT05TVF9N
RVRIT0QwKGNvbnRlbnRzU2l6ZSwgSW50U2l6ZSgpKTsKKyAgICBNT0NLX0NPTlNUX01FVEhPRDAo
b3ZlcmhhbmdBbW91bnQsIEludFNpemUoKSk7CisgICAgTU9DS19DT05TVF9NRVRIT0QwKGlzT25B
Y3RpdmVQYWdlLCBib29sKCkpOworICAgIE1PQ0tfQ09OU1RfTUVUSE9EMChzY3JvbGxhYmxlQXJl
YUJvdW5kaW5nQm94LCBJbnRSZWN0KCkpOworCisgICAgdmlydHVhbCBJbnRQb2ludCBzY3JvbGxQ
b3NpdGlvbigpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIEludFBvaW50KCk7IH0KKyAgICB2aXJ0
dWFsIGludCB2aXNpYmxlSGVpZ2h0KCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gNzY4OyB9Cisg
ICAgdmlydHVhbCBpbnQgdmlzaWJsZVdpZHRoKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gMTAy
NDsgfQorICAgIHZpcnR1YWwgYm9vbCBzY3JvbGxBbmltYXRvckVuYWJsZWQoKSBjb25zdCBPVkVS
UklERSB7IHJldHVybiBtX3Njcm9sbEFuaW1hdG9yRW5hYmxlZDsgfQorCitwcml2YXRlOgogICAg
IGJvb2wgbV9zY3JvbGxBbmltYXRvckVuYWJsZWQ7CiB9OwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>156816</attachid>
            <date>2012-08-06 18:07:05 -0700</date>
            <delta_ts>2012-08-08 17:40:46 -0700</delta_ts>
            <desc>Fix PopupMenuWin errors</desc>
            <filename>bug-93306-20120806180641.patch</filename>
            <type>text/plain</type>
            <size>34863</size>
            <attacher name="Adrienne Walker">enne</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI0ODA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDczYjAyODEyYzlhNDk0
NDhjMjQ1NDgwMGMwYjVmN2Q1MjQwMzFlMS4uMzMwNWNlNzYyODE4ZjBkM2E3NDk0N2FhYjJiMzgx
OWJmOWFkNDhjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUwIEBACisyMDEyLTA4LTA2ICBBZHJp
ZW5uZSBXYWxrZXIgIDxlbm5lQGdvb2dsZS5jb20+CisKKyAgICAgICAgQ29udmVydCBTY3JvbGxh
YmxlQXJlYSBBU1NFUlRfTk9UX1JFQUNIRUQgdmlydHVhbHMgaW50byBwdXJlIHZpcnR1YWxzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MzMwNgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCBpcyBhIGJhZCB3YXkgdG8gbWFrZSBzdXJlIHRoYXQgYSB2aXJ0dWFsIGZ1bmN0aW9u
CisgICAgICAgIGdldHMgYW4gb3ZlcnJpZGUsIGJlY2F1c2UgaXQgb25seSBmYWlscyBhdCBydW4t
dGltZSBpbiBkZWJ1ZyBidWlsZHMuCisKKyAgICAgICAgVG8gZml4IHRoaXMsIGNvbnZlcnQgdGhl
IHZpcnR1YWxzIGluIFNjcm9sbGFibGVBcmVhIHRoYXQgaGF2ZQorICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQgdG8gYmUgcHVyZSB2aXJ0dWFsIGFuZCBhZGQgaW1wbGVtZW50YXRpb25zIHdoZXJl
CisgICAgICAgIG5lY2Vzc2FyeSB0byBtYWtlIGRlcml2ZWQgY2xhc3NlcyBjb25jcmV0ZS4KKwor
ICAgICAgICBBZGRpdGlvbmFsbHksIGNvbnNpc3RlbnRseSBhZGQgT1ZFUlJJREUgZm9yIHZpcnR1
YWwgZnVuY3Rpb25zIGluCisgICAgICAgIGRlcml2ZWQgY2xhc3NlcyB0aGF0IG92ZXJyaWRlIFNj
cm9sbGFibGVBcmVhIG1ldGhvZHMuCisKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5oOgorICAg
ICAgICAoRnJhbWVWaWV3KToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxWaWV3Lmg6CisgICAg
ICAgIChTY3JvbGxWaWV3KToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5oOgor
ICAgICAgICAoU2Nyb2xsYWJsZUFyZWEpOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL0Zy
YW1lbGVzc1Njcm9sbFZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVsZXNzU2Nyb2xs
Vmlldzo6aXNPbkFjdGl2ZVBhZ2UpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJD
b3JlOjpGcmFtZWxlc3NTY3JvbGxWaWV3OjpzY3JvbGxhYmxlQXJlYUJvdW5kaW5nQm94KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9GcmFtZWxlc3NTY3JvbGxWaWV3Lmg6CisgICAgICAg
IChGcmFtZWxlc3NTY3JvbGxWaWV3KToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vUG9wdXBNZW51
V2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBvcHVwTWVudVdpbjo6c2Nyb2xsUG9zaXRpb24p
OgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpQb3B1cE1lbnVXaW46Om1p
bmltdW1TY3JvbGxQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpQb3B1cE1lbnVXaW46Om1h
eGltdW1TY3JvbGxQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpQb3B1cE1lbnVXaW46OnZp
c2libGVDb250ZW50UmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpQb3B1cE1lbnVXaW46OnZpc2li
bGVIZWlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6UG9wdXBNZW51V2luOjp2aXNpYmxlV2lkdGgp
OgorICAgICAgICAoV2ViQ29yZTo6UG9wdXBNZW51V2luOjpjb250ZW50c1NpemUpOgorICAgICAg
ICAoV2ViQ29yZTo6UG9wdXBNZW51V2luOjpvdmVyaGFuZ0Ftb3VudCk6CisgICAgICAgIChXZWJD
b3JlOjpQb3B1cE1lbnVXaW46OmlzT25BY3RpdmVQYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlBv
cHVwTWVudVdpbjo6c2Nyb2xsYWJsZUFyZWFCb3VuZGluZ0JveCk6CisgICAgICAgICogcGxhdGZv
cm0vd2luL1BvcHVwTWVudVdpbi5oOgorICAgICAgICAoUG9wdXBNZW51V2luKToKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHA6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ckxpc3RCb3guaDoKKyAgICAgICAgKFJlbmRlckxpc3RCb3gpOgorCiAyMDEyLTA4LTA2ICBBbm5h
IENhdmVuZGVyICA8YW5uYWNjQGNocm9taXVtLm9yZz4KIAogICAgICAgICBNZWRpYVNvdXJjZSBz
aG91bGQgdXNlIGl0J3Mgb3duIGxpc3Qgb2Ygc291cmNlIFVSTHMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cKaW5kZXggZWVkYzAyMjM4ZDNiNzRiYjdjMDFlNzVkNzViOWQxNzc5OWQ0MTk4OC4uYzdi
YWNkZmJhNjkzMGQ1ZGY3MDFmMDU5OTE0M2YwNDBhYWIxNWE0NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9D
aGFuZ2VMb2cKQEAgLTEsNSArMSwyMyBAQAogMjAxMi0wOC0wNiAgQWRyaWVubmUgV2Fsa2VyICA8
ZW5uZUBnb29nbGUuY29tPgogCisgICAgICAgIENvbnZlcnQgU2Nyb2xsYWJsZUFyZWEgQVNTRVJU
X05PVF9SRUFDSEVEIHZpcnR1YWxzIGludG8gcHVyZSB2aXJ0dWFscworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTMzMDYKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgaW1wbGVtZW50YXRpb25zIG9mIG1p
c3NpbmcgU2Nyb2xsYWJsZUFyZWEgdmlydHVhbHMuCisKKyAgICAgICAgKiBzcmMvU2Nyb2xsYmFy
R3JvdXAuY3BwOgorICAgICAgICAoV2ViS2l0OjpTY3JvbGxiYXJHcm91cDo6dmlzaWJsZUNvbnRl
bnRSZWN0KToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgICogc3JjL1Njcm9sbGJhckdyb3Vw
Lmg6CisgICAgICAgIChTY3JvbGxiYXJHcm91cCk6CisgICAgICAgIChXZWJLaXQ6OlNjcm9sbGJh
ckdyb3VwOjpzY3JvbGxDb3JuZXJSZWN0KToKKyAgICAgICAgKiB0ZXN0cy9TY3JvbGxBbmltYXRv
ck5vbmVUZXN0LmNwcDoKKyAgICAgICAgKE1vY2tTY3JvbGxhYmxlQXJlYSk6CisKKzIwMTItMDgt
MDYgIEFkcmllbm5lIFdhbGtlciAgPGVubmVAZ29vZ2xlLmNvbT4KKwogICAgICAgICBbY2hyb21p
dW1dIFJFR1JFU1NJT04ocjEyNDcxNCk6IHdlYmtpdF91bml0X3Rlc3RzIGFzc2VydHMgaW4gRGVi
dWcKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkzMjk3
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmggYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCmluZGV4IDVkNjA5NGMzOGEyNWVlNTQxYWM5ODQzMGJk
MGQxOWRjNmU1N2ZkMTUuLmY2ZTJkYjk3MDIzMWQ5ZWY2ZGQzMDdhZGU1ZjgwY2EyMzNlOTM3MzEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaApAQCAtMzc4LDIzICszNzgsMjEgQEAgcHJpdmF0ZToK
IAogICAgIC8vIE92ZXJyaWRlIFNjcm9sbFZpZXcgbWV0aG9kcyB0byBkbyBwb2ludCBjb252ZXJz
aW9uIHZpYSByZW5kZXJlcnMsIGluIG9yZGVyIHRvCiAgICAgLy8gdGFrZSB0cmFuc2Zvcm1zIGlu
dG8gYWNjb3VudC4KLSAgICB2aXJ0dWFsIEludFJlY3QgY29udmVydFRvQ29udGFpbmluZ1ZpZXco
Y29uc3QgSW50UmVjdCYpIGNvbnN0OwotICAgIHZpcnR1YWwgSW50UmVjdCBjb252ZXJ0RnJvbUNv
bnRhaW5pbmdWaWV3KGNvbnN0IEludFJlY3QmKSBjb25zdDsKLSAgICB2aXJ0dWFsIEludFBvaW50
IGNvbnZlcnRUb0NvbnRhaW5pbmdWaWV3KGNvbnN0IEludFBvaW50JikgY29uc3Q7Ci0gICAgdmly
dHVhbCBJbnRQb2ludCBjb252ZXJ0RnJvbUNvbnRhaW5pbmdWaWV3KGNvbnN0IEludFBvaW50Jikg
Y29uc3Q7CisgICAgdmlydHVhbCBJbnRSZWN0IGNvbnZlcnRUb0NvbnRhaW5pbmdWaWV3KGNvbnN0
IEludFJlY3QmKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIEludFJlY3QgY29udmVydEZy
b21Db250YWluaW5nVmlldyhjb25zdCBJbnRSZWN0JikgY29uc3QgT1ZFUlJJREU7CisgICAgdmly
dHVhbCBJbnRQb2ludCBjb252ZXJ0VG9Db250YWluaW5nVmlldyhjb25zdCBJbnRQb2ludCYpIGNv
bnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgSW50UG9pbnQgY29udmVydEZyb21Db250YWluaW5n
Vmlldyhjb25zdCBJbnRQb2ludCYpIGNvbnN0IE9WRVJSSURFOwogCiAgICAgLy8gU2Nyb2xsYWJs
ZUFyZWEgaW50ZXJmYWNlCi0gICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGVTY3JvbGxiYXJSZWN0
KFNjcm9sbGJhciosIGNvbnN0IEludFJlY3QmKTsKLSAgICB2aXJ0dWFsIGJvb2wgaXNBY3RpdmUo
KSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0VGlja21hcmtzKFZlY3RvcjxJbnRSZWN0PiYp
IGNvbnN0OwotICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxUbyhjb25zdCBJbnRTaXplJik7Ci0gICAg
dmlydHVhbCB2b2lkIHNldFZpc2libGVTY3JvbGxlclRodW1iUmVjdChjb25zdCBJbnRSZWN0Jik7
Ci0gICAgdmlydHVhbCBib29sIGlzT25BY3RpdmVQYWdlKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBT
Y3JvbGxhYmxlQXJlYSogZW5jbG9zaW5nU2Nyb2xsYWJsZUFyZWEoKSBjb25zdDsKKyAgICB2aXJ0
dWFsIHZvaWQgaW52YWxpZGF0ZVNjcm9sbGJhclJlY3QoU2Nyb2xsYmFyKiwgY29uc3QgSW50UmVj
dCYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBpc0FjdGl2ZSgpIGNvbnN0IE9WRVJSSURF
OworICAgIHZpcnR1YWwgdm9pZCBnZXRUaWNrbWFya3MoVmVjdG9yPEludFJlY3Q+JikgY29uc3Qg
T1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHNjcm9sbFRvKGNvbnN0IEludFNpemUmKSBPVkVS
UklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0VmlzaWJsZVNjcm9sbGVyVGh1bWJSZWN0KGNvbnN0
IEludFJlY3QmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNPbkFjdGl2ZVBhZ2UoKSBj
b25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFNjcm9sbGFibGVBcmVhKiBlbmNsb3NpbmdTY3Jv
bGxhYmxlQXJlYSgpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgSW50UmVjdCBzY3JvbGxh
YmxlQXJlYUJvdW5kaW5nQm94KCkgY29uc3QgT1ZFUlJJREU7Ci0KLSAgICB2b2lkIHVwZGF0ZVNj
cm9sbGFibGVBcmVhU2V0KCk7Ci0KKyAgICB2aXJ0dWFsIGJvb2wgc2Nyb2xsQW5pbWF0b3JFbmFi
bGVkKCkgY29uc3QgT1ZFUlJJREU7CiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQog
ICAgIHZpcnR1YWwgR3JhcGhpY3NMYXllciogbGF5ZXJGb3JIb3Jpem9udGFsU2Nyb2xsYmFyKCkg
Y29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBHcmFwaGljc0xheWVyKiBsYXllckZvclZlcnRp
Y2FsU2Nyb2xsYmFyKCkgY29uc3QgT1ZFUlJJREU7CkBAIC00MDQsOSArNDAyLDkgQEAgcHJpdmF0
ZToKICNlbmRpZgogI2VuZGlmCiAKLSAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5UGFnZVRoYXRDb250
ZW50QXJlYVdpbGxQYWludCgpIGNvbnN0OworICAgIHZvaWQgdXBkYXRlU2Nyb2xsYWJsZUFyZWFT
ZXQoKTsKIAotICAgIHZpcnR1YWwgYm9vbCBzY3JvbGxBbmltYXRvckVuYWJsZWQoKSBjb25zdDsK
KyAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5UGFnZVRoYXRDb250ZW50QXJlYVdpbGxQYWludCgpIGNv
bnN0OwogCiAgICAgdm9pZCBkZWZlcnJlZFJlcGFpbnRUaW1lckZpcmVkKFRpbWVyPEZyYW1lVmll
dz4qKTsKICAgICB2b2lkIGRvRGVmZXJyZWRSZXBhaW50cygpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2Nyb2xsVmlldy5oCmluZGV4IDgxYTU2YjI1MWNlZDU0ZTA4MmE4NmU2OWIzNGI0NjZiNGQxNjli
N2YuLjA2NDkwZDlhODZmMGNiYWY4NzY4MjQxM2RjMGU2NjVhOTZmYzVkOWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmgKQEAgLTUyLDEzICs1MiwxNCBAQCBjbGFzcyBTY3JvbGxW
aWV3IDogcHVibGljIFdpZGdldCwgcHVibGljIFNjcm9sbGFibGVBcmVhIHsKIHB1YmxpYzoKICAg
ICB+U2Nyb2xsVmlldygpOwogCi0gICAgLy8gU2Nyb2xsYWJsZUFyZWEgZnVuY3Rpb25zLiAgRnJh
bWVWaWV3IG92ZXJyaWRlcyB0aGUgb3RoZXJzLgotICAgIHZpcnR1YWwgaW50IHNjcm9sbFNpemUo
U2Nyb2xsYmFyT3JpZW50YXRpb24gb3JpZW50YXRpb24pIGNvbnN0OwotICAgIHZpcnR1YWwgaW50
IHNjcm9sbFBvc2l0aW9uKFNjcm9sbGJhciopIGNvbnN0OwotICAgIHZpcnR1YWwgdm9pZCBzZXRT
Y3JvbGxPZmZzZXQoY29uc3QgSW50UG9pbnQmKTsKKyAgICAvLyBTY3JvbGxhYmxlQXJlYSBmdW5j
dGlvbnMuCisgICAgdmlydHVhbCBpbnQgc2Nyb2xsU2l6ZShTY3JvbGxiYXJPcmllbnRhdGlvbikg
Y29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBpbnQgc2Nyb2xsUG9zaXRpb24oU2Nyb2xsYmFy
KikgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHNldFNjcm9sbE9mZnNldChjb25z
dCBJbnRQb2ludCYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBpc1Njcm9sbENvcm5lclZp
c2libGUoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsYmFyU3R5bGVD
aGFuZ2VkKGludCBuZXdTdHlsZSwgYm9vbCBmb3JjZVVwZGF0ZSkgT1ZFUlJJREU7CisKICAgICB2
aXJ0dWFsIHZvaWQgbm90aWZ5UGFnZVRoYXRDb250ZW50QXJlYVdpbGxQYWludCgpIGNvbnN0Owot
ICAgIHZpcnR1YWwgYm9vbCBpc1Njcm9sbENvcm5lclZpc2libGUoKSBjb25zdDsKLSAgICB2aXJ0
dWFsIHZvaWQgc2Nyb2xsYmFyU3R5bGVDaGFuZ2VkKGludCBuZXdTdHlsZSwgYm9vbCBmb3JjZVVw
ZGF0ZSk7CiAKICAgICAvLyBOT1RFOiBUaGlzIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBieSB0aGUg
b3ZlcnJpZGVuIHNldFNjcm9sbE9mZnNldCBmcm9tIFNjcm9sbGFibGVBcmVhLgogICAgIHZpcnR1
YWwgdm9pZCBzY3JvbGxUbyhjb25zdCBJbnRTaXplJiBuZXdPZmZzZXQpOwpAQCAtNzQsMTEgKzc1
LDExIEBAIHB1YmxpYzoKICAgICBjb25zdCBIYXNoU2V0PFJlZlB0cjxXaWRnZXQ+ID4qIGNoaWxk
cmVuKCkgY29uc3QgeyByZXR1cm4gJm1fY2hpbGRyZW47IH0KICAgICB2aXJ0dWFsIHZvaWQgYWRk
Q2hpbGQoUGFzc1JlZlB0cjxXaWRnZXQ+KTsKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlQ2hpbGQo
V2lkZ2V0Kik7Ci0gICAgCisKICAgICAvLyBJZiB0aGUgc2Nyb2xsIHZpZXcgZG9lcyBub3QgdXNl
IGEgbmF0aXZlIHdpZGdldCwgdGhlbiBpdCB3aWxsIGhhdmUgY3Jvc3MtcGxhdGZvcm0gU2Nyb2xs
YmFycy4gVGhlc2UgZnVuY3Rpb25zCiAgICAgLy8gY2FuIGJlIHVzZWQgdG8gb2J0YWluIHRob3Nl
IHNjcm9sbGJhcnMuCi0gICAgdmlydHVhbCBTY3JvbGxiYXIqIGhvcml6b250YWxTY3JvbGxiYXIo
KSBjb25zdCB7IHJldHVybiBtX2hvcml6b250YWxTY3JvbGxiYXIuZ2V0KCk7IH0KLSAgICB2aXJ0
dWFsIFNjcm9sbGJhciogdmVydGljYWxTY3JvbGxiYXIoKSBjb25zdCB7IHJldHVybiBtX3ZlcnRp
Y2FsU2Nyb2xsYmFyLmdldCgpOyB9CisgICAgdmlydHVhbCBTY3JvbGxiYXIqIGhvcml6b250YWxT
Y3JvbGxiYXIoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBtX2hvcml6b250YWxTY3JvbGxiYXIu
Z2V0KCk7IH0KKyAgICB2aXJ0dWFsIFNjcm9sbGJhciogdmVydGljYWxTY3JvbGxiYXIoKSBjb25z
dCBPVkVSUklERSB7IHJldHVybiBtX3ZlcnRpY2FsU2Nyb2xsYmFyLmdldCgpOyB9CiAgICAgYm9v
bCBpc1Njcm9sbFZpZXdTY3JvbGxiYXIoY29uc3QgV2lkZ2V0KiBjaGlsZCkgY29uc3QgeyByZXR1
cm4gaG9yaXpvbnRhbFNjcm9sbGJhcigpID09IGNoaWxkIHx8IHZlcnRpY2FsU2Nyb2xsYmFyKCkg
PT0gY2hpbGQ7IH0KIAogICAgIHZvaWQgcG9zaXRpb25TY3JvbGxiYXJMYXllcnMoKTsKQEAgLTEw
Nyw3ICsxMDgsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIGJvb2wgYXZvaWRTY3JvbGxiYXJD
cmVhdGlvbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2V0
U2Nyb2xsYmFyT3ZlcmxheVN0eWxlKFNjcm9sbGJhck92ZXJsYXlTdHlsZSk7CisgICAgdmlydHVh
bCB2b2lkIHNldFNjcm9sbGJhck92ZXJsYXlTdHlsZShTY3JvbGxiYXJPdmVybGF5U3R5bGUpIE9W
RVJSSURFOwogCiAgICAgLy8gQnkgZGVmYXVsdCB5b3Ugb25seSByZWNlaXZlIHBhaW50IGV2ZW50
cyBmb3IgdGhlIGFyZWEgdGhhdCBpcyB2aXNpYmxlLiBJbiB0aGUgY2FzZSBvZiB1c2luZyBhCiAg
ICAgLy8gdGlsZWQgYmFja2luZyBzdG9yZSwgdGhpcyBmdW5jdGlvbiBjYW4gYmUgc2V0LCBzbyB0
aGF0IHRoZSB2aWV3IHBhaW50cyB0aGUgZW50aXJlIGNvbnRlbnRzLgpAQCAtMTQzLDEyICsxNDQs
MTIgQEAgcHVibGljOgogICAgIC8vIEluIHRoZSBzaXR1YXRpb24gdGhlIGNsaWVudCBpcyByZXNw
b25zaWJsZSBmb3IgdGhlIHNjcm9sbGluZyAoaWUuIHdpdGggYSB0aWxlZCBiYWNraW5nIHN0b3Jl
KSBpdCBpcyBwb3NzaWJsZSB0byB1c2UKICAgICAvLyB0aGUgc2V0Rml4ZWRWaXNpYmxlQ29udGVu
dFJlY3QgaW5zdGVhZCBmb3IgdGhlIG1haW5mcmFtZSwgdGhvdWdoIHRoaXMgbXVzdCBiZSB1cGRh
dGVkIG1hbnVhbGx5LCBlLmcganVzdCBiZWZvcmUgcmVzdW1pbmcgdGhlIHBhZ2UKICAgICAvLyB3
aGljaCB1c3VhbGx5IHdpbGwgaGFwcGVuIHdoZW4gcGFubmluZywgcGluY2hpbmcgYW5kIHJvdGF0
aW9uIGVuZHMsIG9yIHdoZW4gc2NhbGUgb3IgcG9zaXRpb24gYXJlIGNoYW5nZWQgbWFudWFsbHku
Ci0gICAgdmlydHVhbCBJbnRSZWN0IHZpc2libGVDb250ZW50UmVjdChib29sIGluY2x1ZGVTY3Jv
bGxiYXJzID0gZmFsc2UpIGNvbnN0OworICAgIHZpcnR1YWwgSW50UmVjdCB2aXNpYmxlQ29udGVu
dFJlY3QoYm9vbCBpbmNsdWRlU2Nyb2xsYmFycyA9IGZhbHNlKSBjb25zdCBPVkVSUklERTsKICAg
ICB2aXJ0dWFsIHZvaWQgc2V0Rml4ZWRWaXNpYmxlQ29udGVudFJlY3QoY29uc3QgSW50UmVjdCYg
dmlzaWJsZUNvbnRlbnRSZWN0KSB7IG1fZml4ZWRWaXNpYmxlQ29udGVudFJlY3QgPSB2aXNpYmxl
Q29udGVudFJlY3Q7IH0KICAgICBJbnRSZWN0IGZpeGVkVmlzaWJsZUNvbnRlbnRSZWN0KCkgY29u
c3QgeyByZXR1cm4gbV9maXhlZFZpc2libGVDb250ZW50UmVjdDsgfQogICAgIEludFNpemUgdmlz
aWJsZVNpemUoKSBjb25zdCB7IHJldHVybiB2aXNpYmxlQ29udGVudFJlY3QoKS5zaXplKCk7IH0K
LSAgICBpbnQgdmlzaWJsZVdpZHRoKCkgY29uc3QgeyByZXR1cm4gdmlzaWJsZUNvbnRlbnRSZWN0
KCkud2lkdGgoKTsgfQotICAgIGludCB2aXNpYmxlSGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gdmlz
aWJsZUNvbnRlbnRSZWN0KCkuaGVpZ2h0KCk7IH0KKyAgICB2aXJ0dWFsIGludCB2aXNpYmxlV2lk
dGgoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiB2aXNpYmxlQ29udGVudFJlY3QoKS53aWR0aCgp
OyB9CisgICAgdmlydHVhbCBpbnQgdmlzaWJsZUhlaWdodCgpIGNvbnN0IE9WRVJSSURFIHsgcmV0
dXJuIHZpc2libGVDb250ZW50UmVjdCgpLmhlaWdodCgpOyB9CiAKICAgICAvLyBGdW5jdGlvbnMg
Zm9yIGdldHRpbmcvc2V0dGluZyB0aGUgc2l6ZSB3ZWJraXQgc2hvdWxkIHVzZSB0byBsYXlvdXQg
dGhlIGNvbnRlbnRzLiBCeSBkZWZhdWx0IHRoaXMgaXMgdGhlIHNhbWUgYXMgdGhlIHZpc2libGUK
ICAgICAvLyBjb250ZW50IHNpemUuIEV4cGxpY2l0bHkgc2V0dGluZyBhIGxheW91dCBzaXplIHZh
bHVlIHdpbGwgY2F1c2Ugd2Via2l0IHRvIGxheW91dCB0aGUgY29udGVudHMgdXNpbmcgdGhpcyBz
aXplIGluc3RlYWQuCkBAIC0xNjIsMjIgKzE2MywyMiBAQCBwdWJsaWM6CiAgICAgCiAgICAgLy8g
RnVuY3Rpb25zIGZvciBnZXR0aW5nL3NldHRpbmcgdGhlIHNpemUgb2YgdGhlIGRvY3VtZW50IGNv
bnRhaW5lZCBpbnNpZGUgdGhlIFNjcm9sbFZpZXcgKGFzIGFuIEludFNpemUgb3IgYXMgaW5kaXZp
ZHVhbCB3aWR0aCBhbmQgaGVpZ2h0CiAgICAgLy8gdmFsdWVzKS4KLSAgICBJbnRTaXplIGNvbnRl
bnRzU2l6ZSgpIGNvbnN0OyAvLyBBbHdheXMgYXQgbGVhc3QgYXMgYmlnIGFzIHRoZSB2aXNpYmxl
V2lkdGgoKS92aXNpYmxlSGVpZ2h0KCkuCisgICAgdmlydHVhbCBJbnRTaXplIGNvbnRlbnRzU2l6
ZSgpIGNvbnN0IE9WRVJSSURFOyAvLyBBbHdheXMgYXQgbGVhc3QgYXMgYmlnIGFzIHRoZSB2aXNp
YmxlV2lkdGgoKS92aXNpYmxlSGVpZ2h0KCkuCiAgICAgaW50IGNvbnRlbnRzV2lkdGgoKSBjb25z
dCB7IHJldHVybiBjb250ZW50c1NpemUoKS53aWR0aCgpOyB9CiAgICAgaW50IGNvbnRlbnRzSGVp
Z2h0KCkgY29uc3QgeyByZXR1cm4gY29udGVudHNTaXplKCkuaGVpZ2h0KCk7IH0KICAgICB2aXJ0
dWFsIHZvaWQgc2V0Q29udGVudHNTaXplKGNvbnN0IEludFNpemUmKTsKIAogICAgIC8vIEZ1bmN0
aW9ucyBmb3IgcXVlcnlpbmcgdGhlIGN1cnJlbnQgc2Nyb2xsZWQgcG9zaXRpb24gKGJvdGggYXMg
YSBwb2ludCwgYSBzaXplLCBvciBhcyBpbmRpdmlkdWFsIFggYW5kIFkgdmFsdWVzKS4KLSAgICBJ
bnRQb2ludCBzY3JvbGxQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIHZpc2libGVDb250ZW50UmVj
dCgpLmxvY2F0aW9uKCk7IH0KLSAgICBJbnRTaXplIHNjcm9sbE9mZnNldCgpIGNvbnN0IHsgcmV0
dXJuIHZpc2libGVDb250ZW50UmVjdCgpLmxvY2F0aW9uKCkgLSBJbnRQb2ludCgpOyB9IC8vIEdl
dHMgdGhlIHNjcm9sbGVkIHBvc2l0aW9uIGFzIGFuIEludFNpemUuIENvbnZlbmllbnQgZm9yIGFk
ZGluZyB0byBvdGhlciBzaXplcy4KLSAgICBJbnRQb2ludCBtYXhpbXVtU2Nyb2xsUG9zaXRpb24o
KSBjb25zdDsgLy8gVGhlIG1heGltdW0gcG9zaXRpb24gd2UgY2FuIGJlIHNjcm9sbGVkIHRvLgot
ICAgIEludFBvaW50IG1pbmltdW1TY3JvbGxQb3NpdGlvbigpIGNvbnN0OyAvLyBUaGUgbWluaW11
bSBwb3NpdGlvbiB3ZSBjYW4gYmUgc2Nyb2xsZWQgdG8uCisgICAgdmlydHVhbCBJbnRQb2ludCBz
Y3JvbGxQb3NpdGlvbigpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIHZpc2libGVDb250ZW50UmVj
dCgpLmxvY2F0aW9uKCk7IH0KKyAgICB2aXJ0dWFsIEludFNpemUgc2Nyb2xsT2Zmc2V0KCkgY29u
c3QgeyByZXR1cm4gdmlzaWJsZUNvbnRlbnRSZWN0KCkubG9jYXRpb24oKSAtIEludFBvaW50KCk7
IH0gLy8gR2V0cyB0aGUgc2Nyb2xsZWQgcG9zaXRpb24gYXMgYW4gSW50U2l6ZS4gQ29udmVuaWVu
dCBmb3IgYWRkaW5nIHRvIG90aGVyIHNpemVzLgorICAgIHZpcnR1YWwgSW50UG9pbnQgbWF4aW11
bVNjcm9sbFBvc2l0aW9uKCkgY29uc3QgT1ZFUlJJREU7IC8vIFRoZSBtYXhpbXVtIHBvc2l0aW9u
IHdlIGNhbiBiZSBzY3JvbGxlZCB0by4KKyAgICB2aXJ0dWFsIEludFBvaW50IG1pbmltdW1TY3Jv
bGxQb3NpdGlvbigpIGNvbnN0IE9WRVJSSURFOyAvLyBUaGUgbWluaW11bSBwb3NpdGlvbiB3ZSBj
YW4gYmUgc2Nyb2xsZWQgdG8uCiAgICAgLy8gQWRqdXN0IHRoZSBwYXNzZWQgaW4gc2Nyb2xsIHBv
c2l0aW9uIHRvIGtlZXAgaXQgYmV0d2VlbiB0aGUgbWluaW11bSBhbmQgbWF4aW11bSBwb3NpdGlv
bnMuCiAgICAgSW50UG9pbnQgYWRqdXN0U2Nyb2xsUG9zaXRpb25XaXRoaW5SYW5nZShjb25zdCBJ
bnRQb2ludCYpIGNvbnN0OyAKICAgICBpbnQgc2Nyb2xsWCgpIGNvbnN0IHsgcmV0dXJuIHNjcm9s
bFBvc2l0aW9uKCkueCgpOyB9CiAgICAgaW50IHNjcm9sbFkoKSBjb25zdCB7IHJldHVybiBzY3Jv
bGxQb3NpdGlvbigpLnkoKTsgfQogCi0gICAgSW50U2l6ZSBvdmVyaGFuZ0Ftb3VudCgpIGNvbnN0
OworICAgIHZpcnR1YWwgSW50U2l6ZSBvdmVyaGFuZ0Ftb3VudCgpIGNvbnN0IE9WRVJSSURFOwog
CiAgICAgdm9pZCBjYWNoZUN1cnJlbnRTY3JvbGxQb3NpdGlvbigpIHsgbV9jYWNoZWRTY3JvbGxQ
b3NpdGlvbiA9IHNjcm9sbFBvc2l0aW9uKCk7IH0KICAgICBJbnRQb2ludCBjYWNoZWRTY3JvbGxQ
b3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVkU2Nyb2xsUG9zaXRpb247IH0KQEAgLTI3
NywxMCArMjc4LDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRTY3JvbGxDb3Ju
ZXIoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYgY29ybmVyUmVjdCk7CiAgICAgdmly
dHVhbCB2b2lkIHBhaW50U2Nyb2xsYmFyKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhciosIGNv
bnN0IEludFJlY3QmKTsKIAotICAgIHZpcnR1YWwgSW50UmVjdCBjb252ZXJ0RnJvbVNjcm9sbGJh
clRvQ29udGFpbmluZ1ZpZXcoY29uc3QgU2Nyb2xsYmFyKiwgY29uc3QgSW50UmVjdCYpIGNvbnN0
OwotICAgIHZpcnR1YWwgSW50UmVjdCBjb252ZXJ0RnJvbUNvbnRhaW5pbmdWaWV3VG9TY3JvbGxi
YXIoY29uc3QgU2Nyb2xsYmFyKiwgY29uc3QgSW50UmVjdCYpIGNvbnN0OwotICAgIHZpcnR1YWwg
SW50UG9pbnQgY29udmVydEZyb21TY3JvbGxiYXJUb0NvbnRhaW5pbmdWaWV3KGNvbnN0IFNjcm9s
bGJhciosIGNvbnN0IEludFBvaW50JikgY29uc3Q7Ci0gICAgdmlydHVhbCBJbnRQb2ludCBjb252
ZXJ0RnJvbUNvbnRhaW5pbmdWaWV3VG9TY3JvbGxiYXIoY29uc3QgU2Nyb2xsYmFyKiwgY29uc3Qg
SW50UG9pbnQmKSBjb25zdDsKKyAgICB2aXJ0dWFsIEludFJlY3QgY29udmVydEZyb21TY3JvbGxi
YXJUb0NvbnRhaW5pbmdWaWV3KGNvbnN0IFNjcm9sbGJhciosIGNvbnN0IEludFJlY3QmKSBjb25z
dCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIEludFJlY3QgY29udmVydEZyb21Db250YWluaW5nVmll
d1RvU2Nyb2xsYmFyKGNvbnN0IFNjcm9sbGJhciosIGNvbnN0IEludFJlY3QmKSBjb25zdCBPVkVS
UklERTsKKyAgICB2aXJ0dWFsIEludFBvaW50IGNvbnZlcnRGcm9tU2Nyb2xsYmFyVG9Db250YWlu
aW5nVmlldyhjb25zdCBTY3JvbGxiYXIqLCBjb25zdCBJbnRQb2ludCYpIGNvbnN0IE9WRVJSSURF
OworICAgIHZpcnR1YWwgSW50UG9pbnQgY29udmVydEZyb21Db250YWluaW5nVmlld1RvU2Nyb2xs
YmFyKGNvbnN0IFNjcm9sbGJhciosIGNvbnN0IEludFBvaW50JikgY29uc3QgT1ZFUlJJREU7CiAK
ICAgICBib29sIGNvbnRhaW5zU2Nyb2xsYWJsZUFyZWFXaXRoT3ZlcmxheVNjcm9sbGJhcnMoKSBj
b25zdCB7IHJldHVybiBtX2NvbnRhaW5zU2Nyb2xsYWJsZUFyZWFXaXRoT3ZlcmxheVNjcm9sbGJh
cnM7IH0KICAgICB2b2lkIHNldENvbnRhaW5zU2Nyb2xsYWJsZUFyZWFXaXRoT3ZlcmxheVNjcm9s
bGJhcnMoYm9vbCBjb250YWlucykgeyBtX2NvbnRhaW5zU2Nyb2xsYWJsZUFyZWFXaXRoT3Zlcmxh
eVNjcm9sbGJhcnMgPSBjb250YWluczsgfQpAQCAtMzAyLDcgKzMwMyw3IEBAIHByb3RlY3RlZDoK
ICAgICB2b2lkIHNldEhhc1ZlcnRpY2FsU2Nyb2xsYmFyKGJvb2wpOwogCiAgICAgdmlydHVhbCB2
b2lkIHVwZGF0ZVNjcm9sbENvcm5lcigpOwotICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlU2Ny
b2xsQ29ybmVyUmVjdChjb25zdCBJbnRSZWN0Jik7CisgICAgdmlydHVhbCB2b2lkIGludmFsaWRh
dGVTY3JvbGxDb3JuZXJSZWN0KGNvbnN0IEludFJlY3QmKSBPVkVSUklERTsKIAogICAgIC8vIFNj
cm9sbCB0aGUgY29udGVudCBieSBibGl0dGluZyB0aGUgcGl4ZWxzLgogICAgIHZpcnR1YWwgYm9v
bCBzY3JvbGxDb250ZW50c0Zhc3RQYXRoKGNvbnN0IEludFNpemUmIHNjcm9sbERlbHRhLCBjb25z
dCBJbnRSZWN0JiByZWN0VG9TY3JvbGwsIGNvbnN0IEludFJlY3QmIGNsaXBSZWN0KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5oCmluZGV4IDVhMjc4YTliNWI5YzdjMTg1
MWE0YzUzM2M2MGI1NDUxNTNmY2VkM2EuLjM1ZjFmZDJlNGM4MTcyN2RkYTczMzljMDgyNWMwOWE0
NDg5ZWYyZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVB
cmVhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuaApAQCAt
MTMzLDI3ICsxMzMsMjcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgU2Nyb2xsYmFyKiBob3Jpem9u
dGFsU2Nyb2xsYmFyKCkgY29uc3QgeyByZXR1cm4gMDsgfQogICAgIHZpcnR1YWwgU2Nyb2xsYmFy
KiB2ZXJ0aWNhbFNjcm9sbGJhcigpIGNvbnN0IHsgcmV0dXJuIDA7IH0KIAotICAgIHZpcnR1YWwg
SW50UG9pbnQgc2Nyb2xsUG9zaXRpb24oKSBjb25zdCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyBy
ZXR1cm4gSW50UG9pbnQoKTsgfQotICAgIHZpcnR1YWwgSW50UG9pbnQgbWluaW11bVNjcm9sbFBv
c2l0aW9uKCkgY29uc3QgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIEludFBvaW50KCk7
IH0KLSAgICB2aXJ0dWFsIEludFBvaW50IG1heGltdW1TY3JvbGxQb3NpdGlvbigpIGNvbnN0IHsg
QVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiBJbnRQb2ludCgpOyB9Ci0gICAgdmlydHVhbCBJ
bnRSZWN0IHZpc2libGVDb250ZW50UmVjdChib29sIC8qaW5jbHVkZVNjcm9sbGJhcnMqLyA9IGZh
bHNlKSBjb25zdCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gSW50UmVjdCgpOyB9Ci0g
ICAgdmlydHVhbCBpbnQgdmlzaWJsZUhlaWdodCgpIGNvbnN0IHsgQVNTRVJUX05PVF9SRUFDSEVE
KCk7IHJldHVybiAwOyB9Ci0gICAgdmlydHVhbCBpbnQgdmlzaWJsZVdpZHRoKCkgY29uc3QgeyBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIDA7IH0KLSAgICB2aXJ0dWFsIEludFNpemUgY29u
dGVudHNTaXplKCkgY29uc3QgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIEludFNpemUo
KTsgfQotICAgIHZpcnR1YWwgSW50U2l6ZSBvdmVyaGFuZ0Ftb3VudCgpIGNvbnN0IHsgQVNTRVJU
X05PVF9SRUFDSEVEKCk7IHJldHVybiBJbnRTaXplKCk7IH0KKyAgICB2aXJ0dWFsIEludFBvaW50
IHNjcm9sbFBvc2l0aW9uKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgSW50UG9pbnQgbWluaW11
bVNjcm9sbFBvc2l0aW9uKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgSW50UG9pbnQgbWF4aW11
bVNjcm9sbFBvc2l0aW9uKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgSW50UmVjdCB2aXNpYmxl
Q29udGVudFJlY3QoYm9vbCAvKmluY2x1ZGVTY3JvbGxiYXJzKi8gPSBmYWxzZSkgY29uc3QgPSAw
OworICAgIHZpcnR1YWwgaW50IHZpc2libGVIZWlnaHQoKSBjb25zdCA9IDA7CisgICAgdmlydHVh
bCBpbnQgdmlzaWJsZVdpZHRoKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgSW50U2l6ZSBjb250
ZW50c1NpemUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBJbnRTaXplIG92ZXJoYW5nQW1vdW50
KCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgSW50UG9pbnQgY3VycmVudE1vdXNlUG9zaXRpb24o
KSBjb25zdCB7IHJldHVybiBJbnRQb2ludCgpOyB9CiAKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxk
U3VzcGVuZFNjcm9sbEFuaW1hdGlvbnMoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAgICAgdmly
dHVhbCB2b2lkIHNjcm9sbGJhclN0eWxlQ2hhbmdlZChpbnQgLypuZXdTdHlsZSovLCBib29sIC8q
Zm9yY2VVcGRhdGUqLykgeyB9CiAgICAgdmlydHVhbCB2b2lkIHNldFZpc2libGVTY3JvbGxlclRo
dW1iUmVjdChjb25zdCBJbnRSZWN0JikgeyB9CiAKLSAgICB2aXJ0dWFsIGJvb2wgaXNPbkFjdGl2
ZVBhZ2UoKSBjb25zdCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gdHJ1ZTsgfQorICAg
IHZpcnR1YWwgYm9vbCBpc09uQWN0aXZlUGFnZSgpIGNvbnN0ID0gMDsKICAgICAKICAgICAvLyBO
b3RlIHRoYXQgdGhpcyBvbmx5IHJldHVybnMgc2Nyb2xsYWJsZSBhcmVhcyB0aGF0IGNhbiBhY3R1
YWxseSBiZSBzY3JvbGxlZC4KICAgICB2aXJ0dWFsIFNjcm9sbGFibGVBcmVhKiBlbmNsb3NpbmdT
Y3JvbGxhYmxlQXJlYSgpIGNvbnN0ID0gMDsKIAogICAgIC8vIFJldHVybnMgdGhlIGJvdW5kaW5n
IGJveCBvZiB0aGlzIHNjcm9sbGFibGUgYXJlYSwgaW4gdGhlIGNvb3JkaW5hdGUgc3lzdGVtIG9m
IHRoZSBlbmNsb3Npbmcgc2Nyb2xsIHZpZXcuCi0gICAgdmlydHVhbCBJbnRSZWN0IHNjcm9sbGFi
bGVBcmVhQm91bmRpbmdCb3goKSBjb25zdCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4g
SW50UmVjdCgpOyB9CisgICAgdmlydHVhbCBJbnRSZWN0IHNjcm9sbGFibGVBcmVhQm91bmRpbmdC
b3goKSBjb25zdCA9IDA7CiAKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkUnViYmVyQmFuZEluRGly
ZWN0aW9uKFNjcm9sbERpcmVjdGlvbikgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9GcmFtZWxlc3NTY3JvbGxWaWV3
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0ZyYW1lbGVzc1Njcm9sbFZp
ZXcuY3BwCmluZGV4IDczYmVjMGRmODYzZDk0NDE4OGMwMGI4ODVjNzNkODFhNTBlNTk3ZDEuLjgw
M2I3YzUyNDY3MjZkNmMzMTI1NDJiYWM4ZjU2NzJmOTYwYjhmZmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0ZyYW1lbGVzc1Njcm9sbFZpZXcuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0ZyYW1lbGVzc1Njcm9sbFZpZXcuY3Bw
CkBAIC02Myw2ICs2MywxNyBAQCBTY3JvbGxhYmxlQXJlYSogRnJhbWVsZXNzU2Nyb2xsVmlldzo6
ZW5jbG9zaW5nU2Nyb2xsYWJsZUFyZWEoKSBjb25zdAogICAgIHJldHVybiAwOwogfQogCitib29s
IEZyYW1lbGVzc1Njcm9sbFZpZXc6OmlzT25BY3RpdmVQYWdlKCkgY29uc3QKK3sKKyAgICAvLyBG
SVhNRQorICAgIHJldHVybiBpc0FjdGl2ZSgpOworfQorCitJbnRSZWN0IEZyYW1lbGVzc1Njcm9s
bFZpZXc6OnNjcm9sbGFibGVBcmVhQm91bmRpbmdCb3goKSBjb25zdAoreworICAgIHJldHVybiB3
aW5kb3dDbGlwUmVjdChmYWxzZSk7Cit9CisKIHZvaWQgRnJhbWVsZXNzU2Nyb2xsVmlldzo6aW52
YWxpZGF0ZVJlY3QoY29uc3QgSW50UmVjdCYgcmVjdCkKIHsKICAgICBpZiAoSG9zdFdpbmRvdyog
aCA9IGhvc3RXaW5kb3coKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2No
cm9taXVtL0ZyYW1lbGVzc1Njcm9sbFZpZXcuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2No
cm9taXVtL0ZyYW1lbGVzc1Njcm9sbFZpZXcuaAppbmRleCAzNDk4NDc1ZGNkZTU5MDk4NmQyZDNl
YjNiZGU1ZTQwNTBiMjU5ZGUzLi5hYzFlZWNkMWMzYjQ4MmFlODFiNmU3YTY1MzE2NDQxZmZmZWMw
MjJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9GcmFtZWxl
c3NTY3JvbGxWaWV3LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vRnJh
bWVsZXNzU2Nyb2xsVmlldy5oCkBAIC03NCw5ICs3NCwxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAjZW5kaWYKIAogICAgICAgICAvLyBTY3JvbGxhYmxlQXJlYSBwdWJsaWMgbWV0aG9kczoKLSAg
ICAgICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGVTY3JvbGxiYXJSZWN0KFNjcm9sbGJhciosIGNv
bnN0IEludFJlY3QmKTsKLSAgICAgICAgdmlydHVhbCBib29sIGlzQWN0aXZlKCkgY29uc3Q7Ci0g
ICAgICAgIHZpcnR1YWwgU2Nyb2xsYWJsZUFyZWEqIGVuY2xvc2luZ1Njcm9sbGFibGVBcmVhKCkg
Y29uc3Q7CisgICAgICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlU2Nyb2xsYmFyUmVjdChTY3Jv
bGxiYXIqLCBjb25zdCBJbnRSZWN0JikgT1ZFUlJJREU7CisgICAgICAgIHZpcnR1YWwgYm9vbCBp
c0FjdGl2ZSgpIGNvbnN0IE9WRVJSSURFOworICAgICAgICB2aXJ0dWFsIFNjcm9sbGFibGVBcmVh
KiBlbmNsb3NpbmdTY3JvbGxhYmxlQXJlYSgpIGNvbnN0IE9WRVJSSURFOworICAgICAgICB2aXJ0
dWFsIGJvb2wgaXNPbkFjdGl2ZVBhZ2UoKSBjb25zdCBPVkVSUklERTsKKyAgICAgICAgdmlydHVh
bCBJbnRSZWN0IHNjcm9sbGFibGVBcmVhQm91bmRpbmdCb3goKSBjb25zdCBPVkVSUklERTsKIAog
ICAgICAgICAvLyBXaWRnZXQgcHVibGljIG1ldGhvZHM6CiAgICAgICAgIHZpcnR1YWwgdm9pZCBp
bnZhbGlkYXRlUmVjdChjb25zdCBJbnRSZWN0Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS93aW4vUG9wdXBNZW51V2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3dpbi9Qb3B1cE1lbnVXaW4uY3BwCmluZGV4IGViNWM1YjFhMDkyMGZkMjEzM2Y3NDYzMmFmNmM5
ZTAxMmI5MGFlZWQuLjNkZGY0OTJiNDg0MDEyODRmYTk0OWIxYzEyOWFlMTE3YWQ3YTliZTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9Qb3B1cE1lbnVXaW4uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9Qb3B1cE1lbnVXaW4uY3BwCkBAIC03MjYs
NiArNzI2LDU2IEBAIHZvaWQgUG9wdXBNZW51V2luOjppbnZhbGlkYXRlU2Nyb2xsYmFyUmVjdChT
Y3JvbGxiYXIqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYKICAgICA6OkludmFsaWRhdGVSZWN0
KG1fcG9wdXAsICZyLCBmYWxzZSk7CiB9CiAKK0ludFBvaW50IFBvcHVwTWVudVdpbjo6c2Nyb2xs
UG9zaXRpb24oKSBjb25zdAoreworICAgIHJldHVybiBJbnRQb2ludCgwLCBtX3Njcm9sbE9mZnNl
dCk7Cit9CisKK0ludFBvaW50IFBvcHVwTWVudVdpbjo6bWluaW11bVNjcm9sbFBvc2l0aW9uKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gSW50UG9pbnQoKTsKK30KKworSW50UG9pbnQgUG9wdXBNZW51
V2luOjptYXhpbXVtU2Nyb2xsUG9zaXRpb24oKSBjb25zdAoreworICAgIHJldHVybiBJbnRQb2lu
dCgwLCBzY3JvbGxTaXplKFZlcnRpY2FsU2Nyb2xsYmFyKSk7Cit9CisKK0ludFJlY3QgUG9wdXBN
ZW51V2luOjp2aXNpYmxlQ29udGVudFJlY3QoYm9vbCkgY29uc3QKK3sKKyAgICByZXR1cm4gSW50
UmVjdCgwLCBtX3Njcm9sbE9mZnNldCwgdmlzaWJsZVdpZHRoKCksIHZpc2libGVIZWlnaHQoKSk7
Cit9CisKK2ludCBQb3B1cE1lbnVXaW46OnZpc2libGVIZWlnaHQoKSBjb25zdAoreworICAgIHJl
dHVybiBtX3Njcm9sbGJhciA/IG1fc2Nyb2xsYmFyLT52aXNpYmxlU2l6ZSgpIDogMDsKK30KKwor
aW50IFBvcHVwTWVudVdpbjo6dmlzaWJsZVdpZHRoKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV93
aW5kb3dSZWN0LndpZHRoKCk7Cit9CisKK0ludFNpemUgUG9wdXBNZW51V2luOjpjb250ZW50c1Np
emUoKSBjb25zdAoreworICAgIHJldHVybiBtX3dpbmRvd1JlY3Quc2l6ZSgpOworfQorCitJbnRT
aXplIFBvcHVwTWVudVdpbjo6b3ZlcmhhbmdBbW91bnQoKSBjb25zdAoreworICAgIHJldHVybiBJ
bnRTaXplKCk7Cit9CisKK2Jvb2wgUG9wdXBNZW51V2luOjppc09uQWN0aXZlUGFnZSgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIG1fc2hvd1BvcHVwOworfQorCitJbnRSZWN0IFBvcHVwTWVudVdpbjo6
c2Nyb2xsYWJsZUFyZWFCb3VuZGluZ0JveCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fd2luZG93
UmVjdDsKK30KKwogdm9pZCBQb3B1cE1lbnVXaW46OnJlZ2lzdGVyQ2xhc3MoKQogewogICAgIHN0
YXRpYyBib29sIGhhdmVSZWdpc3RlcmVkV2luZG93Q2xhc3MgPSBmYWxzZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9Qb3B1cE1lbnVXaW4uaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3dpbi9Qb3B1cE1lbnVXaW4uaAppbmRleCAzYWVlNTFjYjljNjRmZjZkMzQ1
ZjU4MjEwYjFmZjBiODA4ZDU2ZWJiLi4zOGQ4NjJlM2VlMjAzNzQwYmQ0NWRhYjc4M2Y5Yzk2Yjdi
ZDg4OGYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUG9wdXBNZW51
V2luLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1BvcHVwTWVudVdpbi5oCkBA
IC05MSwxNiArOTEsMjYgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldFNjcm9sbGJhckNhcHR1cmlu
Z01vdXNlKGJvb2wgYikgeyBtX3Njcm9sbGJhckNhcHR1cmluZ01vdXNlID0gYjsgfQogCiAgICAg
Ly8gU2Nyb2xsYWJsZUFyZWEKLSAgICB2aXJ0dWFsIGludCBzY3JvbGxTaXplKFNjcm9sbGJhck9y
aWVudGF0aW9uIG9yaWVudGF0aW9uKSBjb25zdDsKLSAgICB2aXJ0dWFsIGludCBzY3JvbGxQb3Np
dGlvbihTY3JvbGxiYXIqKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0U2Nyb2xsT2Zmc2V0
KGNvbnN0IEludFBvaW50Jik7Ci0gICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGVTY3JvbGxiYXJS
ZWN0KFNjcm9sbGJhciosIGNvbnN0IEludFJlY3QmKTsKLSAgICB2aXJ0dWFsIHZvaWQgaW52YWxp
ZGF0ZVNjcm9sbENvcm5lclJlY3QoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpIHsgfQotICAgIHZp
cnR1YWwgYm9vbCBpc0FjdGl2ZSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KLSAgICBTY3JvbGxh
YmxlQXJlYSogZW5jbG9zaW5nU2Nyb2xsYWJsZUFyZWEoKSBjb25zdCB7IHJldHVybiAwOyB9Ci0g
ICAgdmlydHVhbCBib29sIGlzU2Nyb2xsQ29ybmVyVmlzaWJsZSgpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9Ci0gICAgdmlydHVhbCBXZWJDb3JlOjpJbnRSZWN0IHNjcm9sbENvcm5lclJlY3QoKSBj
b25zdCB7IHJldHVybiBXZWJDb3JlOjpJbnRSZWN0KCk7IH0KLSAgICB2aXJ0dWFsIFNjcm9sbGJh
ciogdmVydGljYWxTY3JvbGxiYXIoKSBjb25zdCB7IHJldHVybiBtX3Njcm9sbGJhci5nZXQoKTsg
fQorICAgIHZpcnR1YWwgaW50IHNjcm9sbFNpemUoU2Nyb2xsYmFyT3JpZW50YXRpb24pIGNvbnN0
IE9WRVJSSURFOworICAgIHZpcnR1YWwgaW50IHNjcm9sbFBvc2l0aW9uKFNjcm9sbGJhciopIGNv
bnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzZXRTY3JvbGxPZmZzZXQoY29uc3QgSW50
UG9pbnQmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZVNjcm9sbGJhclJl
Y3QoU2Nyb2xsYmFyKiwgY29uc3QgSW50UmVjdCYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9p
ZCBpbnZhbGlkYXRlU2Nyb2xsQ29ybmVyUmVjdChjb25zdCBJbnRSZWN0JikgT1ZFUlJJREUgeyB9
CisgICAgdmlydHVhbCBib29sIGlzQWN0aXZlKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gdHJ1
ZTsgfQorICAgIFNjcm9sbGFibGVBcmVhKiBlbmNsb3NpbmdTY3JvbGxhYmxlQXJlYSgpIGNvbnN0
IE9WRVJSSURFIHsgcmV0dXJuIDA7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNTY3JvbGxDb3JuZXJW
aXNpYmxlKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIElu
dFJlY3Qgc2Nyb2xsQ29ybmVyUmVjdCgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIEludFJlY3Qo
KTsgfQorICAgIHZpcnR1YWwgU2Nyb2xsYmFyKiB2ZXJ0aWNhbFNjcm9sbGJhcigpIGNvbnN0IE9W
RVJSSURFIHsgcmV0dXJuIG1fc2Nyb2xsYmFyLmdldCgpOyB9CisgICAgdmlydHVhbCBJbnRQb2lu
dCBzY3JvbGxQb3NpdGlvbigpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgSW50UG9pbnQg
bWluaW11bVNjcm9sbFBvc2l0aW9uKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBJbnRQ
b2ludCBtYXhpbXVtU2Nyb2xsUG9zaXRpb24oKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFs
IEludFJlY3QgdmlzaWJsZUNvbnRlbnRSZWN0KGJvb2wpIGNvbnN0IE9WRVJSSURFOworICAgIHZp
cnR1YWwgaW50IHZpc2libGVIZWlnaHQoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGlu
dCB2aXNpYmxlV2lkdGgoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIEludFNpemUgY29u
dGVudHNTaXplKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBJbnRTaXplIG92ZXJoYW5n
QW1vdW50KCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGlzT25BY3RpdmVQYWdl
KCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBJbnRSZWN0IHNjcm9sbGFibGVBcmVhQm91
bmRpbmdCb3goKSBjb25zdCBPVkVSUklERTsKIAogICAgIC8vIE5PVEU6IFRoaXMgc2hvdWxkIG9u
bHkgYmUgY2FsbGVkIGJ5IHRoZSBvdmVycmlkZW4gc2V0U2Nyb2xsT2Zmc2V0IGZyb20gU2Nyb2xs
YWJsZUFyZWEuCiAgICAgdm9pZCBzY3JvbGxUbyhpbnQgb2Zmc2V0KTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcAppbmRleCAyZjVhZTJiNmM3N2ZiMjE0YjZhMjVl
NTFhMTM3NWZiZjJlNjM2YmI2Li45YTBhNGM4OWM4NmYwZGNhMmVhNmQ0YTU5MTVlMmRhYWE4NjFm
ZDA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwCkBAIC02
MzIsNiArNjMyLDM0IEBAIEludFBvaW50IFJlbmRlckxpc3RCb3g6OnNjcm9sbFBvc2l0aW9uKCkg
Y29uc3QKICAgICByZXR1cm4gSW50UG9pbnQoMCwgbV9pbmRleE9mZnNldCk7CiB9CiAKK0ludFBv
aW50IFJlbmRlckxpc3RCb3g6Om1pbmltdW1TY3JvbGxQb3NpdGlvbigpIGNvbnN0Cit7CisgICAg
cmV0dXJuIEludFBvaW50KCk7Cit9CisKK0ludFBvaW50IFJlbmRlckxpc3RCb3g6Om1heGltdW1T
Y3JvbGxQb3NpdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIEludFBvaW50KHNjcm9sbFNpemUo
SG9yaXpvbnRhbFNjcm9sbGJhciksIHNjcm9sbFNpemUoVmVydGljYWxTY3JvbGxiYXIpKTsKK30K
KworSW50UmVjdCBSZW5kZXJMaXN0Qm94Ojp2aXNpYmxlQ29udGVudFJlY3QoYm9vbCBpbmNsdWRl
U2Nyb2xsYmFycykgY29uc3QKK3sKKyAgICBpbnQgdmVydGljYWxTY3JvbGxiYXJXaWR0aCA9IDA7
CisgICAgaW50IGhvcml6b250YWxTY3JvbGxiYXJIZWlnaHQgPSAwOworCisgICAgaWYgKGluY2x1
ZGVTY3JvbGxiYXJzKSB7CisgICAgICAgIGlmIChTY3JvbGxiYXIqIHZlcnRpY2FsQmFyID0gdmVy
dGljYWxTY3JvbGxiYXIoKSkKKyAgICAgICAgICAgIHZlcnRpY2FsU2Nyb2xsYmFyV2lkdGggPSAh
dmVydGljYWxCYXItPmlzT3ZlcmxheVNjcm9sbGJhcigpID8gdmVydGljYWxCYXItPndpZHRoKCkg
OiAwOworICAgICAgICBpZiAoU2Nyb2xsYmFyKiBob3Jpem9udGFsQmFyID0gaG9yaXpvbnRhbFNj
cm9sbGJhcigpKQorICAgICAgICAgICAgaG9yaXpvbnRhbFNjcm9sbGJhckhlaWdodCA9ICFob3Jp
em9udGFsQmFyLT5pc092ZXJsYXlTY3JvbGxiYXIoKSA/IGhvcml6b250YWxCYXItPmhlaWdodCgp
IDogMDsKKyAgICB9CisKKyAgICByZXR1cm4gSW50UmVjdChzY3JvbGxQb3NpdGlvbigpLngoKSwK
KyAgICAgICAgICAgICAgICAgICBzY3JvbGxQb3NpdGlvbigpLnkoKSwKKyAgICAgICAgICAgICAg
ICAgICBzdGQ6Om1heCgwLCB2aXNpYmxlV2lkdGgoKSArIHZlcnRpY2FsU2Nyb2xsYmFyV2lkdGgp
LAorICAgICAgICAgICAgICAgICAgIHN0ZDo6bWF4KDAsIHZpc2libGVIZWlnaHQoKSArIGhvcml6
b250YWxTY3JvbGxiYXJIZWlnaHQpKTsKK30KKwogdm9pZCBSZW5kZXJMaXN0Qm94OjpzY3JvbGxU
byhpbnQgbmV3T2Zmc2V0KQogewogICAgIGlmIChuZXdPZmZzZXQgPT0gbV9pbmRleE9mZnNldCkK
QEAgLTc5NSw2ICs4MjMsMTEgQEAgSW50U2l6ZSBSZW5kZXJMaXN0Qm94Ojpjb250ZW50c1NpemUo
KSBjb25zdAogICAgIHJldHVybiBJbnRTaXplKHNjcm9sbFdpZHRoKCksIHNjcm9sbEhlaWdodCgp
KTsKIH0KIAorSW50U2l6ZSBSZW5kZXJMaXN0Qm94OjpvdmVyaGFuZ0Ftb3VudCgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIEludFNpemUoKTsKK30KKwogaW50IFJlbmRlckxpc3RCb3g6OnZpc2libGVI
ZWlnaHQoKSBjb25zdAogewogICAgIHJldHVybiBoZWlnaHQoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGlzdEJveC5oCmluZGV4IDYwMzhjNDMxNjRmYWE3MmZiNjhmOGY4YzI3Yjg0
NWVjNzM1ZjhjMTguLjlkZWM2Njk4OGEzZTVmNTJlMjI1YTJkMTYwOTA3YThjOGEwMTczOGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guaApAQCAtOTcsMjggKzk3LDMy
IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIG5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RS
ZXF1ZXN0JiwgSGl0VGVzdFJlc3VsdCYsIGNvbnN0IEhpdFRlc3RQb2ludCYgcG9pbnRJbkNvbnRh
aW5lciwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0LCBIaXRUZXN0QWN0aW9u
KSBPVkVSUklERTsKIAogICAgIC8vIFNjcm9sbGFibGVBcmVhIGludGVyZmFjZS4KLSAgICB2aXJ0
dWFsIGludCBzY3JvbGxTaXplKFNjcm9sbGJhck9yaWVudGF0aW9uKSBjb25zdDsKLSAgICB2aXJ0
dWFsIGludCBzY3JvbGxQb3NpdGlvbihTY3JvbGxiYXIqKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZv
aWQgc2V0U2Nyb2xsT2Zmc2V0KGNvbnN0IEludFBvaW50Jik7CisgICAgdmlydHVhbCBpbnQgc2Ny
b2xsU2l6ZShTY3JvbGxiYXJPcmllbnRhdGlvbikgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVh
bCBpbnQgc2Nyb2xsUG9zaXRpb24oU2Nyb2xsYmFyKikgY29uc3QgT1ZFUlJJREU7CisgICAgdmly
dHVhbCBJbnRQb2ludCBtaW5pbXVtU2Nyb2xsUG9zaXRpb24oKSBjb25zdCBPVkVSUklERTsKKyAg
ICB2aXJ0dWFsIEludFBvaW50IG1heGltdW1TY3JvbGxQb3NpdGlvbigpIGNvbnN0IE9WRVJSSURF
OworICAgIHZpcnR1YWwgSW50UmVjdCB2aXNpYmxlQ29udGVudFJlY3QoYm9vbCAvKmluY2x1ZGVT
Y3JvbGxiYXJzKi8gPSBmYWxzZSkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHNl
dFNjcm9sbE9mZnNldChjb25zdCBJbnRQb2ludCYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgSW50
UG9pbnQgc2Nyb2xsUG9zaXRpb24oKSBjb25zdCBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQg
aW52YWxpZGF0ZVNjcm9sbGJhclJlY3QoU2Nyb2xsYmFyKiwgY29uc3QgSW50UmVjdCYpOwotICAg
IHZpcnR1YWwgYm9vbCBpc0FjdGl2ZSgpIGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCBpc1Njcm9s
bENvcm5lclZpc2libGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfSAvLyBXZSBkb24ndCBzdXBw
b3J0IHJlc2l6ZSBvbiBsaXN0IGJveGVzIHlldC4gSWYgd2UgZGlkIHRoZXNlIHdvdWxkIGhhdmUg
dG8gY2hhbmdlLgotICAgIHZpcnR1YWwgSW50UmVjdCBzY3JvbGxDb3JuZXJSZWN0KCkgY29uc3Qg
eyByZXR1cm4gSW50UmVjdCgpOyB9Ci0gICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGVTY3JvbGxD
b3JuZXJSZWN0KGNvbnN0IEludFJlY3QmKSB7IH0KLSAgICB2aXJ0dWFsIEludFJlY3QgY29udmVy
dEZyb21TY3JvbGxiYXJUb0NvbnRhaW5pbmdWaWV3KGNvbnN0IFNjcm9sbGJhciosIGNvbnN0IElu
dFJlY3QmKSBjb25zdDsKLSAgICB2aXJ0dWFsIEludFJlY3QgY29udmVydEZyb21Db250YWluaW5n
Vmlld1RvU2Nyb2xsYmFyKGNvbnN0IFNjcm9sbGJhciosIGNvbnN0IEludFJlY3QmKSBjb25zdDsK
LSAgICB2aXJ0dWFsIEludFBvaW50IGNvbnZlcnRGcm9tU2Nyb2xsYmFyVG9Db250YWluaW5nVmll
dyhjb25zdCBTY3JvbGxiYXIqLCBjb25zdCBJbnRQb2ludCYpIGNvbnN0OwotICAgIHZpcnR1YWwg
SW50UG9pbnQgY29udmVydEZyb21Db250YWluaW5nVmlld1RvU2Nyb2xsYmFyKGNvbnN0IFNjcm9s
bGJhciosIGNvbnN0IEludFBvaW50JikgY29uc3Q7Ci0gICAgdmlydHVhbCBTY3JvbGxiYXIqIHZl
cnRpY2FsU2Nyb2xsYmFyKCkgY29uc3QgeyByZXR1cm4gbV92QmFyLmdldCgpOyB9Ci0gICAgdmly
dHVhbCBJbnRTaXplIGNvbnRlbnRzU2l6ZSgpIGNvbnN0OwotICAgIHZpcnR1YWwgaW50IHZpc2li
bGVIZWlnaHQoKSBjb25zdDsKLSAgICB2aXJ0dWFsIGludCB2aXNpYmxlV2lkdGgoKSBjb25zdDsK
LSAgICB2aXJ0dWFsIEludFBvaW50IGN1cnJlbnRNb3VzZVBvc2l0aW9uKCkgY29uc3Q7Ci0gICAg
dmlydHVhbCBib29sIHNob3VsZFN1c3BlbmRTY3JvbGxBbmltYXRpb25zKCkgY29uc3Q7Ci0gICAg
dmlydHVhbCBib29sIGlzT25BY3RpdmVQYWdlKCkgY29uc3Q7Ci0KLSAgICB2aXJ0dWFsIFNjcm9s
bGFibGVBcmVhKiBlbmNsb3NpbmdTY3JvbGxhYmxlQXJlYSgpIGNvbnN0OworICAgIHZpcnR1YWwg
dm9pZCBpbnZhbGlkYXRlU2Nyb2xsYmFyUmVjdChTY3JvbGxiYXIqLCBjb25zdCBJbnRSZWN0Jikg
T1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGlzQWN0aXZlKCkgY29uc3QgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCBib29sIGlzU2Nyb2xsQ29ybmVyVmlzaWJsZSgpIGNvbnN0IE9WRVJSSURFIHsg
cmV0dXJuIGZhbHNlOyB9IC8vIFdlIGRvbid0IHN1cHBvcnQgcmVzaXplIG9uIGxpc3QgYm94ZXMg
eWV0LiBJZiB3ZSBkaWQgdGhlc2Ugd291bGQgaGF2ZSB0byBjaGFuZ2UuCisgICAgdmlydHVhbCBJ
bnRSZWN0IHNjcm9sbENvcm5lclJlY3QoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBJbnRSZWN0
KCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZVNjcm9sbENvcm5lclJlY3QoY29uc3Qg
SW50UmVjdCYpIE9WRVJSSURFIHsgfQorICAgIHZpcnR1YWwgSW50UmVjdCBjb252ZXJ0RnJvbVNj
cm9sbGJhclRvQ29udGFpbmluZ1ZpZXcoY29uc3QgU2Nyb2xsYmFyKiwgY29uc3QgSW50UmVjdCYp
IGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgSW50UmVjdCBjb252ZXJ0RnJvbUNvbnRhaW5p
bmdWaWV3VG9TY3JvbGxiYXIoY29uc3QgU2Nyb2xsYmFyKiwgY29uc3QgSW50UmVjdCYpIGNvbnN0
IE9WRVJSSURFOworICAgIHZpcnR1YWwgSW50UG9pbnQgY29udmVydEZyb21TY3JvbGxiYXJUb0Nv
bnRhaW5pbmdWaWV3KGNvbnN0IFNjcm9sbGJhciosIGNvbnN0IEludFBvaW50JikgY29uc3QgT1ZF
UlJJREU7CisgICAgdmlydHVhbCBJbnRQb2ludCBjb252ZXJ0RnJvbUNvbnRhaW5pbmdWaWV3VG9T
Y3JvbGxiYXIoY29uc3QgU2Nyb2xsYmFyKiwgY29uc3QgSW50UG9pbnQmKSBjb25zdCBPVkVSUklE
RTsKKyAgICB2aXJ0dWFsIFNjcm9sbGJhciogdmVydGljYWxTY3JvbGxiYXIoKSBjb25zdCBPVkVS
UklERSB7IHJldHVybiBtX3ZCYXIuZ2V0KCk7IH0KKyAgICB2aXJ0dWFsIEludFNpemUgY29udGVu
dHNTaXplKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBJbnRTaXplIG92ZXJoYW5nQW1v
dW50KCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBpbnQgdmlzaWJsZUhlaWdodCgpIGNv
bnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgaW50IHZpc2libGVXaWR0aCgpIGNvbnN0IE9WRVJS
SURFOworICAgIHZpcnR1YWwgSW50UG9pbnQgY3VycmVudE1vdXNlUG9zaXRpb24oKSBjb25zdCBP
VkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkU3VzcGVuZFNjcm9sbEFuaW1hdGlvbnMo
KSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNPbkFjdGl2ZVBhZ2UoKSBjb25z
dCBPVkVSUklERTsKKworICAgIHZpcnR1YWwgU2Nyb2xsYWJsZUFyZWEqIGVuY2xvc2luZ1Njcm9s
bGFibGVBcmVhKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBJbnRSZWN0IHNjcm9sbGFi
bGVBcmVhQm91bmRpbmdCb3goKSBjb25zdCBPVkVSUklERTsKIAogICAgIC8vIE5PVEU6IFRoaXMg
c2hvdWxkIG9ubHkgYmUgY2FsbGVkIGJ5IHRoZSBvdmVycmlkZW4gc2V0U2Nyb2xsT2Zmc2V0IGZy
b20gU2Nyb2xsYWJsZUFyZWEuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9TY3JvbGxiYXJHcm91cC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9TY3JvbGxi
YXJHcm91cC5jcHAKaW5kZXggMGU2NzZjYjVmNWI2Y2IzZTBiMTdhMjQwNjVhMWRhMjVhZDc2Zjdk
Ni4uMzUxODI0NGZlZGY2MjAwOTQ3MWE3MzZhOWZlOGRkYjg1YjBlNWI2YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvU2Nyb2xsYmFyR3JvdXAuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1Njcm9sbGJhckdyb3VwLmNwcApAQCAtMTk3LDYgKzE5Nywy
NCBAQCBJbnRQb2ludCBTY3JvbGxiYXJHcm91cDo6bWF4aW11bVNjcm9sbFBvc2l0aW9uKCkgY29u
c3QKICAgICByZXR1cm4gSW50UG9pbnQoY29udGVudHNTaXplKCkud2lkdGgoKSAtIHZpc2libGVX
aWR0aCgpLCBjb250ZW50c1NpemUoKS5oZWlnaHQoKSAtIHZpc2libGVIZWlnaHQoKSk7CiB9CiAK
K0ludFJlY3QgU2Nyb2xsYmFyR3JvdXA6OnZpc2libGVDb250ZW50UmVjdChib29sIGluY2x1ZGVT
Y3JvbGxiYXJzKSBjb25zdAoreworICAgIGludCB2ZXJ0aWNhbFNjcm9sbGJhcldpZHRoID0gMDsK
KyAgICBpbnQgaG9yaXpvbnRhbFNjcm9sbGJhckhlaWdodCA9IDA7CisKKyAgICBpZiAoaW5jbHVk
ZVNjcm9sbGJhcnMpIHsKKyAgICAgICAgaWYgKFNjcm9sbGJhciogdmVydGljYWxCYXIgPSB2ZXJ0
aWNhbFNjcm9sbGJhcigpKQorICAgICAgICAgICAgdmVydGljYWxTY3JvbGxiYXJXaWR0aCA9ICF2
ZXJ0aWNhbEJhci0+aXNPdmVybGF5U2Nyb2xsYmFyKCkgPyB2ZXJ0aWNhbEJhci0+d2lkdGgoKSA6
IDA7CisgICAgICAgIGlmIChTY3JvbGxiYXIqIGhvcml6b250YWxCYXIgPSBob3Jpem9udGFsU2Ny
b2xsYmFyKCkpCisgICAgICAgICAgICBob3Jpem9udGFsU2Nyb2xsYmFySGVpZ2h0ID0gIWhvcml6
b250YWxCYXItPmlzT3ZlcmxheVNjcm9sbGJhcigpID8gaG9yaXpvbnRhbEJhci0+aGVpZ2h0KCkg
OiAwOworICAgIH0KKworICAgIHJldHVybiBJbnRSZWN0KHNjcm9sbFBvc2l0aW9uKCkueCgpLAor
ICAgICAgICAgICAgICAgICAgIHNjcm9sbFBvc2l0aW9uKCkueSgpLAorICAgICAgICAgICAgICAg
ICAgIHN0ZDo6bWF4KDAsIHZpc2libGVXaWR0aCgpICsgdmVydGljYWxTY3JvbGxiYXJXaWR0aCks
CisgICAgICAgICAgICAgICAgICAgc3RkOjptYXgoMCwgdmlzaWJsZUhlaWdodCgpICsgaG9yaXpv
bnRhbFNjcm9sbGJhckhlaWdodCkpOworfQorCiBpbnQgU2Nyb2xsYmFyR3JvdXA6OnZpc2libGVI
ZWlnaHQoKSBjb25zdAogewogICAgIGlmIChtX3ZlcnRpY2FsU2Nyb2xsYmFyKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvU2Nyb2xsYmFyR3JvdXAuaCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1Njcm9sbGJhckdyb3VwLmgKaW5kZXggYTA0NzljMjA2MjdkN2Jm
MTQ1MTQ0ODkxOTJkNzNkNTE2ODM4ZGZiNS4uYmI3NzkwMzgzYTVjNDE4MTNjZWUzODVmYzBhMmM0
ZDJlODZhYzczNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvU2Nyb2xs
YmFyR3JvdXAuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9TY3JvbGxiYXJHcm91
cC5oCkBAIC00OSwzMSArNDksMzIgQEAgcHVibGljOgogICAgIHZvaWQgc2V0RnJhbWVSZWN0KGNv
bnN0IFdlYkNvcmU6OkludFJlY3QmKTsKIAogICAgIC8vIFdlYkNvcmU6OlNjcm9sbGFibGVBcmVh
IG1ldGhvZHMKLSAgICB2aXJ0dWFsIGludCBzY3JvbGxTaXplKFdlYkNvcmU6OlNjcm9sbGJhck9y
aWVudGF0aW9uKSBjb25zdDsKLSAgICB2aXJ0dWFsIGludCBzY3JvbGxQb3NpdGlvbihXZWJDb3Jl
OjpTY3JvbGxiYXIqKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0U2Nyb2xsT2Zmc2V0KGNv
bnN0IFdlYkNvcmU6OkludFBvaW50Jik7Ci0gICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGVTY3Jv
bGxiYXJSZWN0KFdlYkNvcmU6OlNjcm9sbGJhciosIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKTsK
LSAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZVNjcm9sbENvcm5lclJlY3QoY29uc3QgV2ViQ29y
ZTo6SW50UmVjdCYpOwotICAgIHZpcnR1YWwgYm9vbCBpc0FjdGl2ZSgpIGNvbnN0OwotICAgIHZp
cnR1YWwgU2Nyb2xsYWJsZUFyZWEqIGVuY2xvc2luZ1Njcm9sbGFibGVBcmVhKCkgY29uc3Q7Ci0g
ICAgdmlydHVhbCBXZWJDb3JlOjpJbnRSZWN0IHNjcm9sbENvcm5lclJlY3QoKSBjb25zdCB7IHJl
dHVybiBXZWJDb3JlOjpJbnRSZWN0KCk7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNTY3JvbGxDb3Ju
ZXJWaXNpYmxlKCkgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIGdldFRpY2ttYXJrcyhWZWN0b3I8
V2ViQ29yZTo6SW50UmVjdD4mKSBjb25zdDsKLSAgICB2aXJ0dWFsIFdlYkNvcmU6OkludFBvaW50
IGNvbnZlcnRGcm9tQ29udGFpbmluZ1ZpZXdUb1Njcm9sbGJhcihjb25zdCBXZWJDb3JlOjpTY3Jv
bGxiYXIqLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcGFyZW50UG9pbnQpIGNvbnN0OwotICAg
IHZpcnR1YWwgV2ViQ29yZTo6U2Nyb2xsYmFyKiBob3Jpem9udGFsU2Nyb2xsYmFyKCkgY29uc3Q7
Ci0gICAgdmlydHVhbCBXZWJDb3JlOjpTY3JvbGxiYXIqIHZlcnRpY2FsU2Nyb2xsYmFyKCkgY29u
c3Q7Ci0gICAgdmlydHVhbCBXZWJDb3JlOjpJbnRQb2ludCBzY3JvbGxQb3NpdGlvbigpIGNvbnN0
OwotICAgIHZpcnR1YWwgV2ViQ29yZTo6SW50UG9pbnQgbWluaW11bVNjcm9sbFBvc2l0aW9uKCkg
Y29uc3Q7Ci0gICAgdmlydHVhbCBXZWJDb3JlOjpJbnRQb2ludCBtYXhpbXVtU2Nyb2xsUG9zaXRp
b24oKSBjb25zdDsKLSAgICB2aXJ0dWFsIGludCB2aXNpYmxlSGVpZ2h0KCkgY29uc3Q7Ci0gICAg
dmlydHVhbCBpbnQgdmlzaWJsZVdpZHRoKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBXZWJDb3JlOjpJ
bnRTaXplIGNvbnRlbnRzU2l6ZSgpIGNvbnN0OwotICAgIHZpcnR1YWwgV2ViQ29yZTo6SW50U2l6
ZSBvdmVyaGFuZ0Ftb3VudCgpIGNvbnN0OwotICAgIHZpcnR1YWwgV2ViQ29yZTo6SW50UG9pbnQg
Y3VycmVudE1vdXNlUG9zaXRpb24oKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkU3Vz
cGVuZFNjcm9sbEFuaW1hdGlvbnMoKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsYmFy
U3R5bGVDaGFuZ2VkKGludCBuZXdTdHlsZSwgYm9vbCBmb3JjZVVwZGF0ZSk7Ci0gICAgdmlydHVh
bCBib29sIGlzT25BY3RpdmVQYWdlKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBXZWJDb3JlOjpJbnRS
ZWN0IHNjcm9sbGFibGVBcmVhQm91bmRpbmdCb3goKSBjb25zdDsKKyAgICB2aXJ0dWFsIGludCBz
Y3JvbGxTaXplKFdlYkNvcmU6OlNjcm9sbGJhck9yaWVudGF0aW9uKSBjb25zdCBPVkVSUklERTsK
KyAgICB2aXJ0dWFsIGludCBzY3JvbGxQb3NpdGlvbihXZWJDb3JlOjpTY3JvbGxiYXIqKSBjb25z
dCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0U2Nyb2xsT2Zmc2V0KGNvbnN0IFdlYkNv
cmU6OkludFBvaW50JikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGVTY3Jv
bGxiYXJSZWN0KFdlYkNvcmU6OlNjcm9sbGJhciosIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSBP
VkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZVNjcm9sbENvcm5lclJlY3QoY29u
c3QgV2ViQ29yZTo6SW50UmVjdCYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBpc0FjdGl2
ZSgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgU2Nyb2xsYWJsZUFyZWEqIGVuY2xvc2lu
Z1Njcm9sbGFibGVBcmVhKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBXZWJDb3JlOjpJ
bnRSZWN0IHNjcm9sbENvcm5lclJlY3QoKSBjb25zdCB7IHJldHVybiBXZWJDb3JlOjpJbnRSZWN0
KCkgT1ZFUlJJREU7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNTY3JvbGxDb3JuZXJWaXNpYmxlKCkg
Y29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGdldFRpY2ttYXJrcyhWZWN0b3I8V2Vi
Q29yZTo6SW50UmVjdD4mKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6Oklu
dFBvaW50IGNvbnZlcnRGcm9tQ29udGFpbmluZ1ZpZXdUb1Njcm9sbGJhcihjb25zdCBXZWJDb3Jl
OjpTY3JvbGxiYXIqLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcGFyZW50UG9pbnQpIGNvbnN0
IE9WRVJSSURFOworICAgIHZpcnR1YWwgV2ViQ29yZTo6U2Nyb2xsYmFyKiBob3Jpem9udGFsU2Ny
b2xsYmFyKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBXZWJDb3JlOjpTY3JvbGxiYXIq
IHZlcnRpY2FsU2Nyb2xsYmFyKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBXZWJDb3Jl
OjpJbnRQb2ludCBzY3JvbGxQb3NpdGlvbigpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwg
V2ViQ29yZTo6SW50UG9pbnQgbWluaW11bVNjcm9sbFBvc2l0aW9uKCkgY29uc3QgT1ZFUlJJREU7
CisgICAgdmlydHVhbCBXZWJDb3JlOjpJbnRQb2ludCBtYXhpbXVtU2Nyb2xsUG9zaXRpb24oKSBj
b25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OkludFJlY3QgdmlzaWJsZUNvbnRl
bnRSZWN0KGJvb2wgaW5jbHVkZVNjcm9sbGJhcnMgPSBmYWxzZSkgY29uc3QgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCBpbnQgdmlzaWJsZUhlaWdodCgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1
YWwgaW50IHZpc2libGVXaWR0aCgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgV2ViQ29y
ZTo6SW50U2l6ZSBjb250ZW50c1NpemUoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFdl
YkNvcmU6OkludFNpemUgb3ZlcmhhbmdBbW91bnQoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIFdlYkNvcmU6OkludFBvaW50IGN1cnJlbnRNb3VzZVBvc2l0aW9uKCkgY29uc3QgT1ZFUlJJ
REU7CisgICAgdmlydHVhbCBib29sIHNob3VsZFN1c3BlbmRTY3JvbGxBbmltYXRpb25zKCkgY29u
c3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHNjcm9sbGJhclN0eWxlQ2hhbmdlZChpbnQg
bmV3U3R5bGUsIGJvb2wgZm9yY2VVcGRhdGUpIE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBp
c09uQWN0aXZlUGFnZSgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgV2ViQ29yZTo6SW50
UmVjdCBzY3JvbGxhYmxlQXJlYUJvdW5kaW5nQm94KCkgY29uc3QgT1ZFUlJJREU7CiAKIHByaXZh
dGU6CiAgICAgV2ViQ29yZTo6RnJhbWVWaWV3KiBtX2ZyYW1lVmlldzsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvU2Nyb2xsQW5pbWF0b3JOb25lVGVzdC5jcHAgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1Njcm9sbEFuaW1hdG9yTm9uZVRlc3QuY3BwCmlu
ZGV4IDkyN2Q0YTljMzJkZTY5NzI5OTg2MjlkMWZkNTY2NzU4YjY1NTdkMzEuLmU3MTg0NmFkYjE1
NGJmOWZiOGYzY2MyZDc2Nzk1ODBhOTQ2MDlhNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvU2Nyb2xsQW5pbWF0b3JOb25lVGVzdC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9TY3JvbGxBbmltYXRvck5vbmVUZXN0LmNwcApAQCAtNjMsMTIg
KzYzLDIwIEBAIHB1YmxpYzoKICAgICBNT0NLX01FVEhPRDEoaW52YWxpZGF0ZVNjcm9sbENvcm5l
clJlY3QsIHZvaWQoY29uc3QgSW50UmVjdCYpKTsKICAgICBNT0NLX01FVEhPRDEoc2V0U2Nyb2xs
T2Zmc2V0RnJvbUFuaW1hdGlvbiwgdm9pZChjb25zdCBJbnRQb2ludCYpKTsKICAgICBNT0NLX0NP
TlNUX01FVEhPRDAoZW5jbG9zaW5nU2Nyb2xsYWJsZUFyZWEsIFNjcm9sbGFibGVBcmVhKigpKTsK
LQotICAgIHZpcnR1YWwgSW50UG9pbnQgc2Nyb2xsUG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBJ
bnRQb2ludCgpOyB9Ci0gICAgdmlydHVhbCBpbnQgdmlzaWJsZUhlaWdodCgpIGNvbnN0IHsgcmV0
dXJuIDc2ODsgfQotICAgIHZpcnR1YWwgaW50IHZpc2libGVXaWR0aCgpIGNvbnN0IHsgcmV0dXJu
IDEwMjQ7IH0KLQotICAgIGJvb2wgc2Nyb2xsQW5pbWF0b3JFbmFibGVkKCkgY29uc3QgeyByZXR1
cm4gbV9zY3JvbGxBbmltYXRvckVuYWJsZWQ7IH0KKyAgICBNT0NLX0NPTlNUX01FVEhPRDAobWlu
aW11bVNjcm9sbFBvc2l0aW9uLCBJbnRQb2ludCgpKTsKKyAgICBNT0NLX0NPTlNUX01FVEhPRDAo
bWF4aW11bVNjcm9sbFBvc2l0aW9uLCBJbnRQb2ludCgpKTsKKyAgICBNT0NLX0NPTlNUX01FVEhP
RDEodmlzaWJsZUNvbnRlbnRSZWN0LCBJbnRSZWN0KGJvb2wpKTsKKyAgICBNT0NLX0NPTlNUX01F
VEhPRDAoY29udGVudHNTaXplLCBJbnRTaXplKCkpOworICAgIE1PQ0tfQ09OU1RfTUVUSE9EMChv
dmVyaGFuZ0Ftb3VudCwgSW50U2l6ZSgpKTsKKyAgICBNT0NLX0NPTlNUX01FVEhPRDAoaXNPbkFj
dGl2ZVBhZ2UsIGJvb2woKSk7CisgICAgTU9DS19DT05TVF9NRVRIT0QwKHNjcm9sbGFibGVBcmVh
Qm91bmRpbmdCb3gsIEludFJlY3QoKSk7CisKKyAgICB2aXJ0dWFsIEludFBvaW50IHNjcm9sbFBv
c2l0aW9uKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gSW50UG9pbnQoKTsgfQorICAgIHZpcnR1
YWwgaW50IHZpc2libGVIZWlnaHQoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiA3Njg7IH0KKyAg
ICB2aXJ0dWFsIGludCB2aXNpYmxlV2lkdGgoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiAxMDI0
OyB9CisgICAgdmlydHVhbCBib29sIHNjcm9sbEFuaW1hdG9yRW5hYmxlZCgpIGNvbnN0IE9WRVJS
SURFIHsgcmV0dXJuIG1fc2Nyb2xsQW5pbWF0b3JFbmFibGVkOyB9CisKK3ByaXZhdGU6CiAgICAg
Ym9vbCBtX3Njcm9sbEFuaW1hdG9yRW5hYmxlZDsKIH07CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>157350</attachid>
            <date>2012-08-08 17:40:51 -0700</date>
            <delta_ts>2012-08-22 13:00:33 -0700</delta_ts>
            <desc>Implement most funcs in ScrollableArea</desc>
            <filename>bug-93306-20120808174025.patch</filename>
            <type>text/plain</type>
            <size>34699</size>
            <attacher name="Adrienne Walker">enne</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI1MTI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjc2YzYyNjFkMGFkMDVi
YmQ3OWUzNmNiMjg1NjhjY2VjOWJiZTY4Zi4uMTU4ZTM0Njk5NDVmZGM5Y2RmZjY5OTkzOTJhYTBm
MTRkZGM0MjVhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDEyLTA4LTA2ICBBZHJp
ZW5uZSBXYWxrZXIgIDxlbm5lQGdvb2dsZS5jb20+CisKKyAgICAgICAgQ29udmVydCBTY3JvbGxh
YmxlQXJlYSBBU1NFUlRfTk9UX1JFQUNIRUQgdmlydHVhbHMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkzMzA2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEIGlzIGEgYmFkIHdh
eSB0byBtYWtlIHN1cmUgdGhhdCBhIHZpcnR1YWwgZnVuY3Rpb24KKyAgICAgICAgZ2V0cyBhbiBv
dmVycmlkZSwgYmVjYXVzZSBpdCBvbmx5IGZhaWxzIGF0IHJ1bi10aW1lIGluIGRlYnVnIGJ1aWxk
cy4KKworICAgICAgICBUbyBmaXggdGhpcywgY29udmVydCB0aGUgdmlydHVhbHMgaW4gU2Nyb2xs
YWJsZUFyZWEgdGhhdCBoYXZlCisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCB0byBiZSBlaXRo
ZXIgcHVyZSB2aXJ0dWFsIG9yIGltcGxlbWVudGVkIGRpcmVjdGx5CisgICAgICAgIGluIFNjcm9s
bGFibGVBcmVhIGFuZCBhZGQgaW1wbGVtZW50YXRpb25zIHdoZXJlIG5lY2Vzc2FyeSB0byBtYWtl
CisgICAgICAgIGRlcml2ZWQgY2xhc3NlcyBjb25jcmV0ZS4KKworICAgICAgICBBZGRpdGlvbmFs
bHksIGNvbnNpc3RlbnRseSBhZGQgT1ZFUlJJREUgZm9yIHZpcnR1YWwgZnVuY3Rpb25zIGluCisg
ICAgICAgIGRlcml2ZWQgY2xhc3NlcyB0aGF0IG92ZXJyaWRlIFNjcm9sbGFibGVBcmVhIG1ldGhv
ZHMuCisKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5oOgorICAgICAgICAoRnJhbWVWaWV3KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxWaWV3Lmg6CisgICAgICAgIChTY3JvbGxWaWV3KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5oOgorICAgICAgICAoU2Nyb2xsYWJs
ZUFyZWEpOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL0ZyYW1lbGVzc1Njcm9sbFZpZXcu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVsZXNzU2Nyb2xsVmlldzo6aXNPbkFjdGl2ZVBh
Z2UpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZWxlc3NTY3Jv
bGxWaWV3OjpzY3JvbGxhYmxlQXJlYUJvdW5kaW5nQm94KToKKyAgICAgICAgKiBwbGF0Zm9ybS9j
aHJvbWl1bS9GcmFtZWxlc3NTY3JvbGxWaWV3Lmg6CisgICAgICAgIChGcmFtZWxlc3NTY3JvbGxW
aWV3KToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vUG9wdXBNZW51V2luLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlBvcHVwTWVudVdpbjo6c2Nyb2xsUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgIChXZWJDb3JlOjpQb3B1cE1lbnVXaW46Om1pbmltdW1TY3JvbGxQb3NpdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpQb3B1cE1lbnVXaW46Om1heGltdW1TY3JvbGxQb3NpdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpQb3B1cE1lbnVXaW46OnZpc2libGVDb250ZW50UmVjdCk6
CisgICAgICAgIChXZWJDb3JlOjpQb3B1cE1lbnVXaW46OnZpc2libGVIZWlnaHQpOgorICAgICAg
ICAoV2ViQ29yZTo6UG9wdXBNZW51V2luOjp2aXNpYmxlV2lkdGgpOgorICAgICAgICAoV2ViQ29y
ZTo6UG9wdXBNZW51V2luOjpjb250ZW50c1NpemUpOgorICAgICAgICAoV2ViQ29yZTo6UG9wdXBN
ZW51V2luOjpvdmVyaGFuZ0Ftb3VudCk6CisgICAgICAgIChXZWJDb3JlOjpQb3B1cE1lbnVXaW46
OmlzT25BY3RpdmVQYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlBvcHVwTWVudVdpbjo6c2Nyb2xs
YWJsZUFyZWFCb3VuZGluZ0JveCk6CisgICAgICAgICogcGxhdGZvcm0vd2luL1BvcHVwTWVudVdp
bi5oOgorICAgICAgICAoUG9wdXBNZW51V2luKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
TGlzdEJveC5jcHA6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guaDoKKyAgICAg
ICAgKFJlbmRlckxpc3RCb3gpOgorCiAyMDEyLTA4LTA4ICBCcmFkeSBFaWRzb24gIDxiZWlkc29u
QGFwcGxlLmNvbT4KIAogICAgICAgICBHb29nbGUgc2VhcmNoIHF1ZXJ5IHRleHQgcmV2ZXJ0cyB0
byBvcmlnaW5hbCBzZWFyY2ggcXVlcnkgYWZ0ZXIgbXVsdGlwbGUgc2VhcmNoZXMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKaW5kZXggNGE0NzAwMTdkY2FjMzZjOTY1ZjM2NTE3NGZlOTQzMTc3MjA4
ZmQ1NS4uMGFhMDljMmVjODM1ZmQ1ZjY2Zjg2OTJjNGQ0MzFkM2QwNzQ4MzU1NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAxMi0wOC0wNiAgQWRyaWVubmUg
V2Fsa2VyICA8ZW5uZUBnb29nbGUuY29tPgorCisgICAgICAgIENvbnZlcnQgU2Nyb2xsYWJsZUFy
ZWEgQVNTRVJUX05PVF9SRUFDSEVEIHZpcnR1YWxzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MzMwNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFkZCBpbXBsZW1lbnRhdGlvbnMgb2YgbWlzc2luZyBTY3Jv
bGxhYmxlQXJlYSB2aXJ0dWFscy4KKworICAgICAgICAqIHNyYy9TY3JvbGxiYXJHcm91cC5jcHA6
CisgICAgICAgIChXZWJLaXQ6OlNjcm9sbGJhckdyb3VwOjp2aXNpYmxlQ29udGVudFJlY3QpOgor
ICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKiBzcmMvU2Nyb2xsYmFyR3JvdXAuaDoKKyAgICAg
ICAgKFNjcm9sbGJhckdyb3VwKToKKyAgICAgICAgKFdlYktpdDo6U2Nyb2xsYmFyR3JvdXA6OnNj
cm9sbENvcm5lclJlY3QpOgorICAgICAgICAqIHRlc3RzL1Njcm9sbEFuaW1hdG9yTm9uZVRlc3Qu
Y3BwOgorICAgICAgICAoTW9ja1Njcm9sbGFibGVBcmVhKToKKwogMjAxMi0wOC0wOCAgSmFtZXMg
Um9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gRml4
IHVwIGluY2x1ZGVzIGFuZCB0eXBlcyBpbiBjaHJvbWl1bSBjb21wb3NpdG9yIHVuaXQgdGVzdHMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmggYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0ZyYW1lVmlldy5oCmluZGV4IDg5OWIwNzE2ZmM0NDY2ZTMzMjUxMjJkODc1Y2Mw
Mjc4NzY1NDU0YmYuLjQzN2MzZWFlYmFkZWQ3Y2VkODRkYzY4MGFiNjczMGJmZDQ5NmQ1YTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9GcmFtZVZpZXcuaApAQCAtMzgxLDIzICszODEsMjEgQEAgcHJpdmF0ZToKIAog
ICAgIC8vIE92ZXJyaWRlIFNjcm9sbFZpZXcgbWV0aG9kcyB0byBkbyBwb2ludCBjb252ZXJzaW9u
IHZpYSByZW5kZXJlcnMsIGluIG9yZGVyIHRvCiAgICAgLy8gdGFrZSB0cmFuc2Zvcm1zIGludG8g
YWNjb3VudC4KLSAgICB2aXJ0dWFsIEludFJlY3QgY29udmVydFRvQ29udGFpbmluZ1ZpZXcoY29u
c3QgSW50UmVjdCYpIGNvbnN0OwotICAgIHZpcnR1YWwgSW50UmVjdCBjb252ZXJ0RnJvbUNvbnRh
aW5pbmdWaWV3KGNvbnN0IEludFJlY3QmKSBjb25zdDsKLSAgICB2aXJ0dWFsIEludFBvaW50IGNv
bnZlcnRUb0NvbnRhaW5pbmdWaWV3KGNvbnN0IEludFBvaW50JikgY29uc3Q7Ci0gICAgdmlydHVh
bCBJbnRQb2ludCBjb252ZXJ0RnJvbUNvbnRhaW5pbmdWaWV3KGNvbnN0IEludFBvaW50JikgY29u
c3Q7CisgICAgdmlydHVhbCBJbnRSZWN0IGNvbnZlcnRUb0NvbnRhaW5pbmdWaWV3KGNvbnN0IElu
dFJlY3QmKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIEludFJlY3QgY29udmVydEZyb21D
b250YWluaW5nVmlldyhjb25zdCBJbnRSZWN0JikgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVh
bCBJbnRQb2ludCBjb252ZXJ0VG9Db250YWluaW5nVmlldyhjb25zdCBJbnRQb2ludCYpIGNvbnN0
IE9WRVJSSURFOworICAgIHZpcnR1YWwgSW50UG9pbnQgY29udmVydEZyb21Db250YWluaW5nVmll
dyhjb25zdCBJbnRQb2ludCYpIGNvbnN0IE9WRVJSSURFOwogCiAgICAgLy8gU2Nyb2xsYWJsZUFy
ZWEgaW50ZXJmYWNlCi0gICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGVTY3JvbGxiYXJSZWN0KFNj
cm9sbGJhciosIGNvbnN0IEludFJlY3QmKTsKLSAgICB2aXJ0dWFsIGJvb2wgaXNBY3RpdmUoKSBj
b25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0VGlja21hcmtzKFZlY3RvcjxJbnRSZWN0PiYpIGNv
bnN0OwotICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxUbyhjb25zdCBJbnRTaXplJik7Ci0gICAgdmly
dHVhbCB2b2lkIHNldFZpc2libGVTY3JvbGxlclRodW1iUmVjdChjb25zdCBJbnRSZWN0Jik7Ci0g
ICAgdmlydHVhbCBib29sIGlzT25BY3RpdmVQYWdlKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBTY3Jv
bGxhYmxlQXJlYSogZW5jbG9zaW5nU2Nyb2xsYWJsZUFyZWEoKSBjb25zdDsKKyAgICB2aXJ0dWFs
IHZvaWQgaW52YWxpZGF0ZVNjcm9sbGJhclJlY3QoU2Nyb2xsYmFyKiwgY29uc3QgSW50UmVjdCYp
IE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBpc0FjdGl2ZSgpIGNvbnN0IE9WRVJSSURFOwor
ICAgIHZpcnR1YWwgdm9pZCBnZXRUaWNrbWFya3MoVmVjdG9yPEludFJlY3Q+JikgY29uc3QgT1ZF
UlJJREU7CisgICAgdmlydHVhbCB2b2lkIHNjcm9sbFRvKGNvbnN0IEludFNpemUmKSBPVkVSUklE
RTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0VmlzaWJsZVNjcm9sbGVyVGh1bWJSZWN0KGNvbnN0IElu
dFJlY3QmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNPbkFjdGl2ZVBhZ2UoKSBjb25z
dCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFNjcm9sbGFibGVBcmVhKiBlbmNsb3NpbmdTY3JvbGxh
YmxlQXJlYSgpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgSW50UmVjdCBzY3JvbGxhYmxl
QXJlYUJvdW5kaW5nQm94KCkgY29uc3QgT1ZFUlJJREU7Ci0KLSAgICB2b2lkIHVwZGF0ZVNjcm9s
bGFibGVBcmVhU2V0KCk7Ci0KKyAgICB2aXJ0dWFsIGJvb2wgc2Nyb2xsQW5pbWF0b3JFbmFibGVk
KCkgY29uc3QgT1ZFUlJJREU7CiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogICAg
IHZpcnR1YWwgR3JhcGhpY3NMYXllciogbGF5ZXJGb3JIb3Jpem9udGFsU2Nyb2xsYmFyKCkgY29u
c3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBHcmFwaGljc0xheWVyKiBsYXllckZvclZlcnRpY2Fs
U2Nyb2xsYmFyKCkgY29uc3QgT1ZFUlJJREU7CkBAIC00MDcsOSArNDA1LDkgQEAgcHJpdmF0ZToK
ICNlbmRpZgogI2VuZGlmCiAKLSAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5UGFnZVRoYXRDb250ZW50
QXJlYVdpbGxQYWludCgpIGNvbnN0OworICAgIHZvaWQgdXBkYXRlU2Nyb2xsYWJsZUFyZWFTZXQo
KTsKIAotICAgIHZpcnR1YWwgYm9vbCBzY3JvbGxBbmltYXRvckVuYWJsZWQoKSBjb25zdDsKKyAg
ICB2aXJ0dWFsIHZvaWQgbm90aWZ5UGFnZVRoYXRDb250ZW50QXJlYVdpbGxQYWludCgpIGNvbnN0
OwogCiAgICAgdm9pZCBkZWZlcnJlZFJlcGFpbnRUaW1lckZpcmVkKFRpbWVyPEZyYW1lVmlldz4q
KTsKICAgICB2b2lkIGRvRGVmZXJyZWRSZXBhaW50cygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Ny
b2xsVmlldy5oCmluZGV4IDgxYTU2YjI1MWNlZDU0ZTA4MmE4NmU2OWIzNGI0NjZiNGQxNjliN2Yu
LjA2NDkwZDlhODZmMGNiYWY4NzY4MjQxM2RjMGU2NjVhOTZmYzVkOWMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TY3JvbGxWaWV3LmgKQEAgLTUyLDEzICs1MiwxNCBAQCBjbGFzcyBTY3JvbGxWaWV3
IDogcHVibGljIFdpZGdldCwgcHVibGljIFNjcm9sbGFibGVBcmVhIHsKIHB1YmxpYzoKICAgICB+
U2Nyb2xsVmlldygpOwogCi0gICAgLy8gU2Nyb2xsYWJsZUFyZWEgZnVuY3Rpb25zLiAgRnJhbWVW
aWV3IG92ZXJyaWRlcyB0aGUgb3RoZXJzLgotICAgIHZpcnR1YWwgaW50IHNjcm9sbFNpemUoU2Ny
b2xsYmFyT3JpZW50YXRpb24gb3JpZW50YXRpb24pIGNvbnN0OwotICAgIHZpcnR1YWwgaW50IHNj
cm9sbFBvc2l0aW9uKFNjcm9sbGJhciopIGNvbnN0OwotICAgIHZpcnR1YWwgdm9pZCBzZXRTY3Jv
bGxPZmZzZXQoY29uc3QgSW50UG9pbnQmKTsKKyAgICAvLyBTY3JvbGxhYmxlQXJlYSBmdW5jdGlv
bnMuCisgICAgdmlydHVhbCBpbnQgc2Nyb2xsU2l6ZShTY3JvbGxiYXJPcmllbnRhdGlvbikgY29u
c3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBpbnQgc2Nyb2xsUG9zaXRpb24oU2Nyb2xsYmFyKikg
Y29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHNldFNjcm9sbE9mZnNldChjb25zdCBJ
bnRQb2ludCYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBpc1Njcm9sbENvcm5lclZpc2li
bGUoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsYmFyU3R5bGVDaGFu
Z2VkKGludCBuZXdTdHlsZSwgYm9vbCBmb3JjZVVwZGF0ZSkgT1ZFUlJJREU7CisKICAgICB2aXJ0
dWFsIHZvaWQgbm90aWZ5UGFnZVRoYXRDb250ZW50QXJlYVdpbGxQYWludCgpIGNvbnN0OwotICAg
IHZpcnR1YWwgYm9vbCBpc1Njcm9sbENvcm5lclZpc2libGUoKSBjb25zdDsKLSAgICB2aXJ0dWFs
IHZvaWQgc2Nyb2xsYmFyU3R5bGVDaGFuZ2VkKGludCBuZXdTdHlsZSwgYm9vbCBmb3JjZVVwZGF0
ZSk7CiAKICAgICAvLyBOT1RFOiBUaGlzIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBieSB0aGUgb3Zl
cnJpZGVuIHNldFNjcm9sbE9mZnNldCBmcm9tIFNjcm9sbGFibGVBcmVhLgogICAgIHZpcnR1YWwg
dm9pZCBzY3JvbGxUbyhjb25zdCBJbnRTaXplJiBuZXdPZmZzZXQpOwpAQCAtNzQsMTEgKzc1LDEx
IEBAIHB1YmxpYzoKICAgICBjb25zdCBIYXNoU2V0PFJlZlB0cjxXaWRnZXQ+ID4qIGNoaWxkcmVu
KCkgY29uc3QgeyByZXR1cm4gJm1fY2hpbGRyZW47IH0KICAgICB2aXJ0dWFsIHZvaWQgYWRkQ2hp
bGQoUGFzc1JlZlB0cjxXaWRnZXQ+KTsKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlQ2hpbGQoV2lk
Z2V0Kik7Ci0gICAgCisKICAgICAvLyBJZiB0aGUgc2Nyb2xsIHZpZXcgZG9lcyBub3QgdXNlIGEg
bmF0aXZlIHdpZGdldCwgdGhlbiBpdCB3aWxsIGhhdmUgY3Jvc3MtcGxhdGZvcm0gU2Nyb2xsYmFy
cy4gVGhlc2UgZnVuY3Rpb25zCiAgICAgLy8gY2FuIGJlIHVzZWQgdG8gb2J0YWluIHRob3NlIHNj
cm9sbGJhcnMuCi0gICAgdmlydHVhbCBTY3JvbGxiYXIqIGhvcml6b250YWxTY3JvbGxiYXIoKSBj
b25zdCB7IHJldHVybiBtX2hvcml6b250YWxTY3JvbGxiYXIuZ2V0KCk7IH0KLSAgICB2aXJ0dWFs
IFNjcm9sbGJhciogdmVydGljYWxTY3JvbGxiYXIoKSBjb25zdCB7IHJldHVybiBtX3ZlcnRpY2Fs
U2Nyb2xsYmFyLmdldCgpOyB9CisgICAgdmlydHVhbCBTY3JvbGxiYXIqIGhvcml6b250YWxTY3Jv
bGxiYXIoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBtX2hvcml6b250YWxTY3JvbGxiYXIuZ2V0
KCk7IH0KKyAgICB2aXJ0dWFsIFNjcm9sbGJhciogdmVydGljYWxTY3JvbGxiYXIoKSBjb25zdCBP
VkVSUklERSB7IHJldHVybiBtX3ZlcnRpY2FsU2Nyb2xsYmFyLmdldCgpOyB9CiAgICAgYm9vbCBp
c1Njcm9sbFZpZXdTY3JvbGxiYXIoY29uc3QgV2lkZ2V0KiBjaGlsZCkgY29uc3QgeyByZXR1cm4g
aG9yaXpvbnRhbFNjcm9sbGJhcigpID09IGNoaWxkIHx8IHZlcnRpY2FsU2Nyb2xsYmFyKCkgPT0g
Y2hpbGQ7IH0KIAogICAgIHZvaWQgcG9zaXRpb25TY3JvbGxiYXJMYXllcnMoKTsKQEAgLTEwNyw3
ICsxMDgsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIGJvb2wgYXZvaWRTY3JvbGxiYXJDcmVh
dGlvbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2V0U2Ny
b2xsYmFyT3ZlcmxheVN0eWxlKFNjcm9sbGJhck92ZXJsYXlTdHlsZSk7CisgICAgdmlydHVhbCB2
b2lkIHNldFNjcm9sbGJhck92ZXJsYXlTdHlsZShTY3JvbGxiYXJPdmVybGF5U3R5bGUpIE9WRVJS
SURFOwogCiAgICAgLy8gQnkgZGVmYXVsdCB5b3Ugb25seSByZWNlaXZlIHBhaW50IGV2ZW50cyBm
b3IgdGhlIGFyZWEgdGhhdCBpcyB2aXNpYmxlLiBJbiB0aGUgY2FzZSBvZiB1c2luZyBhCiAgICAg
Ly8gdGlsZWQgYmFja2luZyBzdG9yZSwgdGhpcyBmdW5jdGlvbiBjYW4gYmUgc2V0LCBzbyB0aGF0
IHRoZSB2aWV3IHBhaW50cyB0aGUgZW50aXJlIGNvbnRlbnRzLgpAQCAtMTQzLDEyICsxNDQsMTIg
QEAgcHVibGljOgogICAgIC8vIEluIHRoZSBzaXR1YXRpb24gdGhlIGNsaWVudCBpcyByZXNwb25z
aWJsZSBmb3IgdGhlIHNjcm9sbGluZyAoaWUuIHdpdGggYSB0aWxlZCBiYWNraW5nIHN0b3JlKSBp
dCBpcyBwb3NzaWJsZSB0byB1c2UKICAgICAvLyB0aGUgc2V0Rml4ZWRWaXNpYmxlQ29udGVudFJl
Y3QgaW5zdGVhZCBmb3IgdGhlIG1haW5mcmFtZSwgdGhvdWdoIHRoaXMgbXVzdCBiZSB1cGRhdGVk
IG1hbnVhbGx5LCBlLmcganVzdCBiZWZvcmUgcmVzdW1pbmcgdGhlIHBhZ2UKICAgICAvLyB3aGlj
aCB1c3VhbGx5IHdpbGwgaGFwcGVuIHdoZW4gcGFubmluZywgcGluY2hpbmcgYW5kIHJvdGF0aW9u
IGVuZHMsIG9yIHdoZW4gc2NhbGUgb3IgcG9zaXRpb24gYXJlIGNoYW5nZWQgbWFudWFsbHkuCi0g
ICAgdmlydHVhbCBJbnRSZWN0IHZpc2libGVDb250ZW50UmVjdChib29sIGluY2x1ZGVTY3JvbGxi
YXJzID0gZmFsc2UpIGNvbnN0OworICAgIHZpcnR1YWwgSW50UmVjdCB2aXNpYmxlQ29udGVudFJl
Y3QoYm9vbCBpbmNsdWRlU2Nyb2xsYmFycyA9IGZhbHNlKSBjb25zdCBPVkVSUklERTsKICAgICB2
aXJ0dWFsIHZvaWQgc2V0Rml4ZWRWaXNpYmxlQ29udGVudFJlY3QoY29uc3QgSW50UmVjdCYgdmlz
aWJsZUNvbnRlbnRSZWN0KSB7IG1fZml4ZWRWaXNpYmxlQ29udGVudFJlY3QgPSB2aXNpYmxlQ29u
dGVudFJlY3Q7IH0KICAgICBJbnRSZWN0IGZpeGVkVmlzaWJsZUNvbnRlbnRSZWN0KCkgY29uc3Qg
eyByZXR1cm4gbV9maXhlZFZpc2libGVDb250ZW50UmVjdDsgfQogICAgIEludFNpemUgdmlzaWJs
ZVNpemUoKSBjb25zdCB7IHJldHVybiB2aXNpYmxlQ29udGVudFJlY3QoKS5zaXplKCk7IH0KLSAg
ICBpbnQgdmlzaWJsZVdpZHRoKCkgY29uc3QgeyByZXR1cm4gdmlzaWJsZUNvbnRlbnRSZWN0KCku
d2lkdGgoKTsgfQotICAgIGludCB2aXNpYmxlSGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gdmlzaWJs
ZUNvbnRlbnRSZWN0KCkuaGVpZ2h0KCk7IH0KKyAgICB2aXJ0dWFsIGludCB2aXNpYmxlV2lkdGgo
KSBjb25zdCBPVkVSUklERSB7IHJldHVybiB2aXNpYmxlQ29udGVudFJlY3QoKS53aWR0aCgpOyB9
CisgICAgdmlydHVhbCBpbnQgdmlzaWJsZUhlaWdodCgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJu
IHZpc2libGVDb250ZW50UmVjdCgpLmhlaWdodCgpOyB9CiAKICAgICAvLyBGdW5jdGlvbnMgZm9y
IGdldHRpbmcvc2V0dGluZyB0aGUgc2l6ZSB3ZWJraXQgc2hvdWxkIHVzZSB0byBsYXlvdXQgdGhl
IGNvbnRlbnRzLiBCeSBkZWZhdWx0IHRoaXMgaXMgdGhlIHNhbWUgYXMgdGhlIHZpc2libGUKICAg
ICAvLyBjb250ZW50IHNpemUuIEV4cGxpY2l0bHkgc2V0dGluZyBhIGxheW91dCBzaXplIHZhbHVl
IHdpbGwgY2F1c2Ugd2Via2l0IHRvIGxheW91dCB0aGUgY29udGVudHMgdXNpbmcgdGhpcyBzaXpl
IGluc3RlYWQuCkBAIC0xNjIsMjIgKzE2MywyMiBAQCBwdWJsaWM6CiAgICAgCiAgICAgLy8gRnVu
Y3Rpb25zIGZvciBnZXR0aW5nL3NldHRpbmcgdGhlIHNpemUgb2YgdGhlIGRvY3VtZW50IGNvbnRh
aW5lZCBpbnNpZGUgdGhlIFNjcm9sbFZpZXcgKGFzIGFuIEludFNpemUgb3IgYXMgaW5kaXZpZHVh
bCB3aWR0aCBhbmQgaGVpZ2h0CiAgICAgLy8gdmFsdWVzKS4KLSAgICBJbnRTaXplIGNvbnRlbnRz
U2l6ZSgpIGNvbnN0OyAvLyBBbHdheXMgYXQgbGVhc3QgYXMgYmlnIGFzIHRoZSB2aXNpYmxlV2lk
dGgoKS92aXNpYmxlSGVpZ2h0KCkuCisgICAgdmlydHVhbCBJbnRTaXplIGNvbnRlbnRzU2l6ZSgp
IGNvbnN0IE9WRVJSSURFOyAvLyBBbHdheXMgYXQgbGVhc3QgYXMgYmlnIGFzIHRoZSB2aXNpYmxl
V2lkdGgoKS92aXNpYmxlSGVpZ2h0KCkuCiAgICAgaW50IGNvbnRlbnRzV2lkdGgoKSBjb25zdCB7
IHJldHVybiBjb250ZW50c1NpemUoKS53aWR0aCgpOyB9CiAgICAgaW50IGNvbnRlbnRzSGVpZ2h0
KCkgY29uc3QgeyByZXR1cm4gY29udGVudHNTaXplKCkuaGVpZ2h0KCk7IH0KICAgICB2aXJ0dWFs
IHZvaWQgc2V0Q29udGVudHNTaXplKGNvbnN0IEludFNpemUmKTsKIAogICAgIC8vIEZ1bmN0aW9u
cyBmb3IgcXVlcnlpbmcgdGhlIGN1cnJlbnQgc2Nyb2xsZWQgcG9zaXRpb24gKGJvdGggYXMgYSBw
b2ludCwgYSBzaXplLCBvciBhcyBpbmRpdmlkdWFsIFggYW5kIFkgdmFsdWVzKS4KLSAgICBJbnRQ
b2ludCBzY3JvbGxQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIHZpc2libGVDb250ZW50UmVjdCgp
LmxvY2F0aW9uKCk7IH0KLSAgICBJbnRTaXplIHNjcm9sbE9mZnNldCgpIGNvbnN0IHsgcmV0dXJu
IHZpc2libGVDb250ZW50UmVjdCgpLmxvY2F0aW9uKCkgLSBJbnRQb2ludCgpOyB9IC8vIEdldHMg
dGhlIHNjcm9sbGVkIHBvc2l0aW9uIGFzIGFuIEludFNpemUuIENvbnZlbmllbnQgZm9yIGFkZGlu
ZyB0byBvdGhlciBzaXplcy4KLSAgICBJbnRQb2ludCBtYXhpbXVtU2Nyb2xsUG9zaXRpb24oKSBj
b25zdDsgLy8gVGhlIG1heGltdW0gcG9zaXRpb24gd2UgY2FuIGJlIHNjcm9sbGVkIHRvLgotICAg
IEludFBvaW50IG1pbmltdW1TY3JvbGxQb3NpdGlvbigpIGNvbnN0OyAvLyBUaGUgbWluaW11bSBw
b3NpdGlvbiB3ZSBjYW4gYmUgc2Nyb2xsZWQgdG8uCisgICAgdmlydHVhbCBJbnRQb2ludCBzY3Jv
bGxQb3NpdGlvbigpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIHZpc2libGVDb250ZW50UmVjdCgp
LmxvY2F0aW9uKCk7IH0KKyAgICB2aXJ0dWFsIEludFNpemUgc2Nyb2xsT2Zmc2V0KCkgY29uc3Qg
eyByZXR1cm4gdmlzaWJsZUNvbnRlbnRSZWN0KCkubG9jYXRpb24oKSAtIEludFBvaW50KCk7IH0g
Ly8gR2V0cyB0aGUgc2Nyb2xsZWQgcG9zaXRpb24gYXMgYW4gSW50U2l6ZS4gQ29udmVuaWVudCBm
b3IgYWRkaW5nIHRvIG90aGVyIHNpemVzLgorICAgIHZpcnR1YWwgSW50UG9pbnQgbWF4aW11bVNj
cm9sbFBvc2l0aW9uKCkgY29uc3QgT1ZFUlJJREU7IC8vIFRoZSBtYXhpbXVtIHBvc2l0aW9uIHdl
IGNhbiBiZSBzY3JvbGxlZCB0by4KKyAgICB2aXJ0dWFsIEludFBvaW50IG1pbmltdW1TY3JvbGxQ
b3NpdGlvbigpIGNvbnN0IE9WRVJSSURFOyAvLyBUaGUgbWluaW11bSBwb3NpdGlvbiB3ZSBjYW4g
YmUgc2Nyb2xsZWQgdG8uCiAgICAgLy8gQWRqdXN0IHRoZSBwYXNzZWQgaW4gc2Nyb2xsIHBvc2l0
aW9uIHRvIGtlZXAgaXQgYmV0d2VlbiB0aGUgbWluaW11bSBhbmQgbWF4aW11bSBwb3NpdGlvbnMu
CiAgICAgSW50UG9pbnQgYWRqdXN0U2Nyb2xsUG9zaXRpb25XaXRoaW5SYW5nZShjb25zdCBJbnRQ
b2ludCYpIGNvbnN0OyAKICAgICBpbnQgc2Nyb2xsWCgpIGNvbnN0IHsgcmV0dXJuIHNjcm9sbFBv
c2l0aW9uKCkueCgpOyB9CiAgICAgaW50IHNjcm9sbFkoKSBjb25zdCB7IHJldHVybiBzY3JvbGxQ
b3NpdGlvbigpLnkoKTsgfQogCi0gICAgSW50U2l6ZSBvdmVyaGFuZ0Ftb3VudCgpIGNvbnN0Owor
ICAgIHZpcnR1YWwgSW50U2l6ZSBvdmVyaGFuZ0Ftb3VudCgpIGNvbnN0IE9WRVJSSURFOwogCiAg
ICAgdm9pZCBjYWNoZUN1cnJlbnRTY3JvbGxQb3NpdGlvbigpIHsgbV9jYWNoZWRTY3JvbGxQb3Np
dGlvbiA9IHNjcm9sbFBvc2l0aW9uKCk7IH0KICAgICBJbnRQb2ludCBjYWNoZWRTY3JvbGxQb3Np
dGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVkU2Nyb2xsUG9zaXRpb247IH0KQEAgLTI3Nywx
MCArMjc4LDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRTY3JvbGxDb3JuZXIo
R3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYgY29ybmVyUmVjdCk7CiAgICAgdmlydHVh
bCB2b2lkIHBhaW50U2Nyb2xsYmFyKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhciosIGNvbnN0
IEludFJlY3QmKTsKIAotICAgIHZpcnR1YWwgSW50UmVjdCBjb252ZXJ0RnJvbVNjcm9sbGJhclRv
Q29udGFpbmluZ1ZpZXcoY29uc3QgU2Nyb2xsYmFyKiwgY29uc3QgSW50UmVjdCYpIGNvbnN0Owot
ICAgIHZpcnR1YWwgSW50UmVjdCBjb252ZXJ0RnJvbUNvbnRhaW5pbmdWaWV3VG9TY3JvbGxiYXIo
Y29uc3QgU2Nyb2xsYmFyKiwgY29uc3QgSW50UmVjdCYpIGNvbnN0OwotICAgIHZpcnR1YWwgSW50
UG9pbnQgY29udmVydEZyb21TY3JvbGxiYXJUb0NvbnRhaW5pbmdWaWV3KGNvbnN0IFNjcm9sbGJh
ciosIGNvbnN0IEludFBvaW50JikgY29uc3Q7Ci0gICAgdmlydHVhbCBJbnRQb2ludCBjb252ZXJ0
RnJvbUNvbnRhaW5pbmdWaWV3VG9TY3JvbGxiYXIoY29uc3QgU2Nyb2xsYmFyKiwgY29uc3QgSW50
UG9pbnQmKSBjb25zdDsKKyAgICB2aXJ0dWFsIEludFJlY3QgY29udmVydEZyb21TY3JvbGxiYXJU
b0NvbnRhaW5pbmdWaWV3KGNvbnN0IFNjcm9sbGJhciosIGNvbnN0IEludFJlY3QmKSBjb25zdCBP
VkVSUklERTsKKyAgICB2aXJ0dWFsIEludFJlY3QgY29udmVydEZyb21Db250YWluaW5nVmlld1Rv
U2Nyb2xsYmFyKGNvbnN0IFNjcm9sbGJhciosIGNvbnN0IEludFJlY3QmKSBjb25zdCBPVkVSUklE
RTsKKyAgICB2aXJ0dWFsIEludFBvaW50IGNvbnZlcnRGcm9tU2Nyb2xsYmFyVG9Db250YWluaW5n
Vmlldyhjb25zdCBTY3JvbGxiYXIqLCBjb25zdCBJbnRQb2ludCYpIGNvbnN0IE9WRVJSSURFOwor
ICAgIHZpcnR1YWwgSW50UG9pbnQgY29udmVydEZyb21Db250YWluaW5nVmlld1RvU2Nyb2xsYmFy
KGNvbnN0IFNjcm9sbGJhciosIGNvbnN0IEludFBvaW50JikgY29uc3QgT1ZFUlJJREU7CiAKICAg
ICBib29sIGNvbnRhaW5zU2Nyb2xsYWJsZUFyZWFXaXRoT3ZlcmxheVNjcm9sbGJhcnMoKSBjb25z
dCB7IHJldHVybiBtX2NvbnRhaW5zU2Nyb2xsYWJsZUFyZWFXaXRoT3ZlcmxheVNjcm9sbGJhcnM7
IH0KICAgICB2b2lkIHNldENvbnRhaW5zU2Nyb2xsYWJsZUFyZWFXaXRoT3ZlcmxheVNjcm9sbGJh
cnMoYm9vbCBjb250YWlucykgeyBtX2NvbnRhaW5zU2Nyb2xsYWJsZUFyZWFXaXRoT3ZlcmxheVNj
cm9sbGJhcnMgPSBjb250YWluczsgfQpAQCAtMzAyLDcgKzMwMyw3IEBAIHByb3RlY3RlZDoKICAg
ICB2b2lkIHNldEhhc1ZlcnRpY2FsU2Nyb2xsYmFyKGJvb2wpOwogCiAgICAgdmlydHVhbCB2b2lk
IHVwZGF0ZVNjcm9sbENvcm5lcigpOwotICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlU2Nyb2xs
Q29ybmVyUmVjdChjb25zdCBJbnRSZWN0Jik7CisgICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGVT
Y3JvbGxDb3JuZXJSZWN0KGNvbnN0IEludFJlY3QmKSBPVkVSUklERTsKIAogICAgIC8vIFNjcm9s
bCB0aGUgY29udGVudCBieSBibGl0dGluZyB0aGUgcGl4ZWxzLgogICAgIHZpcnR1YWwgYm9vbCBz
Y3JvbGxDb250ZW50c0Zhc3RQYXRoKGNvbnN0IEludFNpemUmIHNjcm9sbERlbHRhLCBjb25zdCBJ
bnRSZWN0JiByZWN0VG9TY3JvbGwsIGNvbnN0IEludFJlY3QmIGNsaXBSZWN0KTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcAppbmRleCAxMDNlMDM4OTk2YmEyMzRl
MjAzNTg2MzU1MWVjMWRmYzFjMTM0OWZjLi5iNGU3ZTU1OTEzZDA3ZTA0OWY2MDA4M2Q1NDBkMTAx
NDJmNjE1Y2I4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxl
QXJlYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuY3Bw
CkBAIC0zNzMsNCArMzczLDM5IEBAIHZvaWQgU2Nyb2xsYWJsZUFyZWE6OnNlcnZpY2VTY3JvbGxB
bmltYXRpb25zKCkKICAgICAgICAgc2Nyb2xsQW5pbWF0b3ItPnNlcnZpY2VTY3JvbGxBbmltYXRp
b25zKCk7CiB9CiAKK0ludFBvaW50IFNjcm9sbGFibGVBcmVhOjpzY3JvbGxQb3NpdGlvbigpIGNv
bnN0Cit7CisgICAgaW50IHggPSBob3Jpem9udGFsU2Nyb2xsYmFyKCkgPyBob3Jpem9udGFsU2Ny
b2xsYmFyKCktPnZhbHVlKCkgOiAwOworICAgIGludCB5ID0gdmVydGljYWxTY3JvbGxiYXIoKSA/
IHZlcnRpY2FsU2Nyb2xsYmFyKCktPnZhbHVlKCkgOiAwOworICAgIHJldHVybiBJbnRQb2ludCh4
LCB5KTsKK30KKworSW50UG9pbnQgU2Nyb2xsYWJsZUFyZWE6Om1pbmltdW1TY3JvbGxQb3NpdGlv
bigpIGNvbnN0Cit7CisgICAgcmV0dXJuIEludFBvaW50KCk7Cit9CisKK0ludFBvaW50IFNjcm9s
bGFibGVBcmVhOjptYXhpbXVtU2Nyb2xsUG9zaXRpb24oKSBjb25zdAoreworICAgIHJldHVybiBJ
bnRQb2ludChjb250ZW50c1NpemUoKS53aWR0aCgpIC0gdmlzaWJsZVdpZHRoKCksIGNvbnRlbnRz
U2l6ZSgpLmhlaWdodCgpIC0gdmlzaWJsZUhlaWdodCgpKTsKK30KKworSW50UmVjdCBTY3JvbGxh
YmxlQXJlYTo6dmlzaWJsZUNvbnRlbnRSZWN0KGJvb2wgaW5jbHVkZVNjcm9sbGJhcnMpIGNvbnN0
Cit7CisgICAgaW50IHZlcnRpY2FsU2Nyb2xsYmFyV2lkdGggPSAwOworICAgIGludCBob3Jpem9u
dGFsU2Nyb2xsYmFySGVpZ2h0ID0gMDsKKworICAgIGlmIChpbmNsdWRlU2Nyb2xsYmFycykgewor
ICAgICAgICBpZiAoU2Nyb2xsYmFyKiB2ZXJ0aWNhbEJhciA9IHZlcnRpY2FsU2Nyb2xsYmFyKCkp
CisgICAgICAgICAgICB2ZXJ0aWNhbFNjcm9sbGJhcldpZHRoID0gIXZlcnRpY2FsQmFyLT5pc092
ZXJsYXlTY3JvbGxiYXIoKSA/IHZlcnRpY2FsQmFyLT53aWR0aCgpIDogMDsKKyAgICAgICAgaWYg
KFNjcm9sbGJhciogaG9yaXpvbnRhbEJhciA9IGhvcml6b250YWxTY3JvbGxiYXIoKSkKKyAgICAg
ICAgICAgIGhvcml6b250YWxTY3JvbGxiYXJIZWlnaHQgPSAhaG9yaXpvbnRhbEJhci0+aXNPdmVy
bGF5U2Nyb2xsYmFyKCkgPyBob3Jpem9udGFsQmFyLT5oZWlnaHQoKSA6IDA7CisgICAgfQorCisg
ICAgcmV0dXJuIEludFJlY3Qoc2Nyb2xsUG9zaXRpb24oKS54KCksCisgICAgICAgICAgICAgICAg
ICAgc2Nyb2xsUG9zaXRpb24oKS55KCksCisgICAgICAgICAgICAgICAgICAgc3RkOjptYXgoMCwg
dmlzaWJsZVdpZHRoKCkgKyB2ZXJ0aWNhbFNjcm9sbGJhcldpZHRoKSwKKyAgICAgICAgICAgICAg
ICAgICBzdGQ6Om1heCgwLCB2aXNpYmxlSGVpZ2h0KCkgKyBob3Jpem9udGFsU2Nyb2xsYmFySGVp
Z2h0KSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TY3JvbGxhYmxlQXJlYS5oCmluZGV4IDVhMjc4YTliNWI5YzdjMTg1MWE0YzUzM2M2MGI1NDUx
NTNmY2VkM2EuLjcyMWVjMzJlYzhiMzliYTBlMzFmMGJiNTA5ZGUzNjlmNWMyZWZlMTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuaApAQCAtMTMzLDI3ICsxMzMsMjcg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgU2Nyb2xsYmFyKiBob3Jpem9udGFsU2Nyb2xsYmFyKCkg
Y29uc3QgeyByZXR1cm4gMDsgfQogICAgIHZpcnR1YWwgU2Nyb2xsYmFyKiB2ZXJ0aWNhbFNjcm9s
bGJhcigpIGNvbnN0IHsgcmV0dXJuIDA7IH0KIAotICAgIHZpcnR1YWwgSW50UG9pbnQgc2Nyb2xs
UG9zaXRpb24oKSBjb25zdCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gSW50UG9pbnQo
KTsgfQotICAgIHZpcnR1YWwgSW50UG9pbnQgbWluaW11bVNjcm9sbFBvc2l0aW9uKCkgY29uc3Qg
eyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIEludFBvaW50KCk7IH0KLSAgICB2aXJ0dWFs
IEludFBvaW50IG1heGltdW1TY3JvbGxQb3NpdGlvbigpIGNvbnN0IHsgQVNTRVJUX05PVF9SRUFD
SEVEKCk7IHJldHVybiBJbnRQb2ludCgpOyB9Ci0gICAgdmlydHVhbCBJbnRSZWN0IHZpc2libGVD
b250ZW50UmVjdChib29sIC8qaW5jbHVkZVNjcm9sbGJhcnMqLyA9IGZhbHNlKSBjb25zdCB7IEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gSW50UmVjdCgpOyB9Ci0gICAgdmlydHVhbCBpbnQg
dmlzaWJsZUhlaWdodCgpIGNvbnN0IHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiAwOyB9
Ci0gICAgdmlydHVhbCBpbnQgdmlzaWJsZVdpZHRoKCkgY29uc3QgeyBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsgcmV0dXJuIDA7IH0KLSAgICB2aXJ0dWFsIEludFNpemUgY29udGVudHNTaXplKCkgY29u
c3QgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIEludFNpemUoKTsgfQotICAgIHZpcnR1
YWwgSW50U2l6ZSBvdmVyaGFuZ0Ftb3VudCgpIGNvbnN0IHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7
IHJldHVybiBJbnRTaXplKCk7IH0KKyAgICB2aXJ0dWFsIEludFBvaW50IHNjcm9sbFBvc2l0aW9u
KCkgY29uc3Q7CisgICAgdmlydHVhbCBJbnRQb2ludCBtaW5pbXVtU2Nyb2xsUG9zaXRpb24oKSBj
b25zdDsKKyAgICB2aXJ0dWFsIEludFBvaW50IG1heGltdW1TY3JvbGxQb3NpdGlvbigpIGNvbnN0
OworICAgIHZpcnR1YWwgSW50UmVjdCB2aXNpYmxlQ29udGVudFJlY3QoYm9vbCAvKmluY2x1ZGVT
Y3JvbGxiYXJzKi8gPSBmYWxzZSkgY29uc3Q7CisgICAgdmlydHVhbCBpbnQgdmlzaWJsZUhlaWdo
dCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGludCB2aXNpYmxlV2lkdGgoKSBjb25zdCA9IDA7
CisgICAgdmlydHVhbCBJbnRTaXplIGNvbnRlbnRzU2l6ZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0
dWFsIEludFNpemUgb3ZlcmhhbmdBbW91bnQoKSBjb25zdCB7IHJldHVybiBJbnRTaXplKCk7IH0K
ICAgICB2aXJ0dWFsIEludFBvaW50IGN1cnJlbnRNb3VzZVBvc2l0aW9uKCkgY29uc3QgeyByZXR1
cm4gSW50UG9pbnQoKTsgfQogCiAgICAgdmlydHVhbCBib29sIHNob3VsZFN1c3BlbmRTY3JvbGxB
bmltYXRpb25zKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgdm9pZCBzY3Jv
bGxiYXJTdHlsZUNoYW5nZWQoaW50IC8qbmV3U3R5bGUqLywgYm9vbCAvKmZvcmNlVXBkYXRlKi8p
IHsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRWaXNpYmxlU2Nyb2xsZXJUaHVtYlJlY3QoY29uc3Qg
SW50UmVjdCYpIHsgfQogCi0gICAgdmlydHVhbCBib29sIGlzT25BY3RpdmVQYWdlKCkgY29uc3Qg
eyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIGJvb2wg
aXNPbkFjdGl2ZVBhZ2UoKSBjb25zdCA9IDA7CiAgICAgCiAgICAgLy8gTm90ZSB0aGF0IHRoaXMg
b25seSByZXR1cm5zIHNjcm9sbGFibGUgYXJlYXMgdGhhdCBjYW4gYWN0dWFsbHkgYmUgc2Nyb2xs
ZWQuCiAgICAgdmlydHVhbCBTY3JvbGxhYmxlQXJlYSogZW5jbG9zaW5nU2Nyb2xsYWJsZUFyZWEo
KSBjb25zdCA9IDA7CiAKICAgICAvLyBSZXR1cm5zIHRoZSBib3VuZGluZyBib3ggb2YgdGhpcyBz
Y3JvbGxhYmxlIGFyZWEsIGluIHRoZSBjb29yZGluYXRlIHN5c3RlbSBvZiB0aGUgZW5jbG9zaW5n
IHNjcm9sbCB2aWV3LgotICAgIHZpcnR1YWwgSW50UmVjdCBzY3JvbGxhYmxlQXJlYUJvdW5kaW5n
Qm94KCkgY29uc3QgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIEludFJlY3QoKTsgfQor
ICAgIHZpcnR1YWwgSW50UmVjdCBzY3JvbGxhYmxlQXJlYUJvdW5kaW5nQm94KCkgY29uc3QgPSAw
OwogCiAgICAgdmlydHVhbCBib29sIHNob3VsZFJ1YmJlckJhbmRJbkRpcmVjdGlvbihTY3JvbGxE
aXJlY3Rpb24pIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vRnJhbWVsZXNzU2Nyb2xsVmlldy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9GcmFtZWxlc3NTY3JvbGxWaWV3LmNwcAppbmRleCA3
M2JlYzBkZjg2M2Q5NDQxODhjMDBiODg1YzczZDgxYTUwZTU5N2QxLi44MDNiN2M1MjQ2NzI2ZDZj
MzEyNTQyYmFjOGY1NjcyZjk2MGI4ZmZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jaHJvbWl1bS9GcmFtZWxlc3NTY3JvbGxWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jaHJvbWl1bS9GcmFtZWxlc3NTY3JvbGxWaWV3LmNwcApAQCAtNjMsNiArNjMs
MTcgQEAgU2Nyb2xsYWJsZUFyZWEqIEZyYW1lbGVzc1Njcm9sbFZpZXc6OmVuY2xvc2luZ1Njcm9s
bGFibGVBcmVhKCkgY29uc3QKICAgICByZXR1cm4gMDsKIH0KIAorYm9vbCBGcmFtZWxlc3NTY3Jv
bGxWaWV3Ojppc09uQWN0aXZlUGFnZSgpIGNvbnN0Cit7CisgICAgLy8gRklYTUUKKyAgICByZXR1
cm4gaXNBY3RpdmUoKTsKK30KKworSW50UmVjdCBGcmFtZWxlc3NTY3JvbGxWaWV3OjpzY3JvbGxh
YmxlQXJlYUJvdW5kaW5nQm94KCkgY29uc3QKK3sKKyAgICByZXR1cm4gd2luZG93Q2xpcFJlY3Qo
ZmFsc2UpOworfQorCiB2b2lkIEZyYW1lbGVzc1Njcm9sbFZpZXc6OmludmFsaWRhdGVSZWN0KGNv
bnN0IEludFJlY3QmIHJlY3QpCiB7CiAgICAgaWYgKEhvc3RXaW5kb3cqIGggPSBob3N0V2luZG93
KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9GcmFtZWxl
c3NTY3JvbGxWaWV3LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9GcmFtZWxl
c3NTY3JvbGxWaWV3LmgKaW5kZXggMzQ5ODQ3NWRjZGU1OTA5ODZkMmQzZWIzYmRlNWU0MDUwYjI1
OWRlMy4uYWMxZWVjZDFjM2I0ODJhZTgxYjZlN2E2NTMxNjQ0MWZmZmVjMDIyYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vRnJhbWVsZXNzU2Nyb2xsVmlldy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0ZyYW1lbGVzc1Njcm9sbFZp
ZXcuaApAQCAtNzQsOSArNzQsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI2VuZGlmCiAKICAg
ICAgICAgLy8gU2Nyb2xsYWJsZUFyZWEgcHVibGljIG1ldGhvZHM6Ci0gICAgICAgIHZpcnR1YWwg
dm9pZCBpbnZhbGlkYXRlU2Nyb2xsYmFyUmVjdChTY3JvbGxiYXIqLCBjb25zdCBJbnRSZWN0Jik7
Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBpc0FjdGl2ZSgpIGNvbnN0OwotICAgICAgICB2aXJ0dWFs
IFNjcm9sbGFibGVBcmVhKiBlbmNsb3NpbmdTY3JvbGxhYmxlQXJlYSgpIGNvbnN0OworICAgICAg
ICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZVNjcm9sbGJhclJlY3QoU2Nyb2xsYmFyKiwgY29uc3Qg
SW50UmVjdCYpIE9WRVJSSURFOworICAgICAgICB2aXJ0dWFsIGJvb2wgaXNBY3RpdmUoKSBjb25z
dCBPVkVSUklERTsKKyAgICAgICAgdmlydHVhbCBTY3JvbGxhYmxlQXJlYSogZW5jbG9zaW5nU2Ny
b2xsYWJsZUFyZWEoKSBjb25zdCBPVkVSUklERTsKKyAgICAgICAgdmlydHVhbCBib29sIGlzT25B
Y3RpdmVQYWdlKCkgY29uc3QgT1ZFUlJJREU7CisgICAgICAgIHZpcnR1YWwgSW50UmVjdCBzY3Jv
bGxhYmxlQXJlYUJvdW5kaW5nQm94KCkgY29uc3QgT1ZFUlJJREU7CiAKICAgICAgICAgLy8gV2lk
Z2V0IHB1YmxpYyBtZXRob2RzOgogICAgICAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZVJlY3Qo
Y29uc3QgSW50UmVjdCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2lu
L1BvcHVwTWVudVdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUG9wdXBNZW51
V2luLmNwcAppbmRleCBlYjVjNWIxYTA5MjBmZDIxMzNmNzQ2MzJhZjZjOWUwMTJiOTBhZWVkLi5h
ODY4NDdkZGZmNjJjNWFhM2YwMDUwYWMxOTljOWZiMWU5NGFjMDBiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUG9wdXBNZW51V2luLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS93aW4vUG9wdXBNZW51V2luLmNwcApAQCAtNzI2LDYgKzcyNiwzMSBAQCB2
b2lkIFBvcHVwTWVudVdpbjo6aW52YWxpZGF0ZVNjcm9sbGJhclJlY3QoU2Nyb2xsYmFyKiBzY3Jv
bGxiYXIsIGNvbnN0IEludFJlY3QmCiAgICAgOjpJbnZhbGlkYXRlUmVjdChtX3BvcHVwLCAmciwg
ZmFsc2UpOwogfQogCitpbnQgUG9wdXBNZW51V2luOjp2aXNpYmxlSGVpZ2h0KCkgY29uc3QKK3sK
KyAgICByZXR1cm4gbV9zY3JvbGxiYXIgPyBtX3Njcm9sbGJhci0+dmlzaWJsZVNpemUoKSA6IG1f
d2luZG93UmVjdC5oZWlnaHQoKTsKK30KKworaW50IFBvcHVwTWVudVdpbjo6dmlzaWJsZVdpZHRo
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV93aW5kb3dSZWN0LndpZHRoKCk7Cit9CisKK0ludFNp
emUgUG9wdXBNZW51V2luOjpjb250ZW50c1NpemUoKSBjb25zdAoreworICAgIHJldHVybiBtX3dp
bmRvd1JlY3Quc2l6ZSgpOworfQorCitib29sIFBvcHVwTWVudVdpbjo6aXNPbkFjdGl2ZVBhZ2Uo
KSBjb25zdAoreworICAgIHJldHVybiBtX3Nob3dQb3B1cDsKK30KKworSW50UmVjdCBQb3B1cE1l
bnVXaW46OnNjcm9sbGFibGVBcmVhQm91bmRpbmdCb3goKSBjb25zdAoreworICAgIHJldHVybiBt
X3dpbmRvd1JlY3Q7Cit9CisKIHZvaWQgUG9wdXBNZW51V2luOjpyZWdpc3RlckNsYXNzKCkKIHsK
ICAgICBzdGF0aWMgYm9vbCBoYXZlUmVnaXN0ZXJlZFdpbmRvd0NsYXNzID0gZmFsc2U7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUG9wdXBNZW51V2luLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUG9wdXBNZW51V2luLmgKaW5kZXggM2FlZTUxY2I5YzY0
ZmY2ZDM0NWY1ODIxMGIxZmYwYjgwOGQ1NmViYi4uOWI2ZmZhN2QzYmM4M2Q4ZjNiMzExYmIwODdm
OGRjOWEyNWQ5ZDA4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bv
cHVwTWVudVdpbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9Qb3B1cE1lbnVX
aW4uaApAQCAtOTEsMTYgKzkxLDIxIEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRTY3JvbGxiYXJD
YXB0dXJpbmdNb3VzZShib29sIGIpIHsgbV9zY3JvbGxiYXJDYXB0dXJpbmdNb3VzZSA9IGI7IH0K
IAogICAgIC8vIFNjcm9sbGFibGVBcmVhCi0gICAgdmlydHVhbCBpbnQgc2Nyb2xsU2l6ZShTY3Jv
bGxiYXJPcmllbnRhdGlvbiBvcmllbnRhdGlvbikgY29uc3Q7Ci0gICAgdmlydHVhbCBpbnQgc2Ny
b2xsUG9zaXRpb24oU2Nyb2xsYmFyKikgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIHNldFNjcm9s
bE9mZnNldChjb25zdCBJbnRQb2ludCYpOwotICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlU2Ny
b2xsYmFyUmVjdChTY3JvbGxiYXIqLCBjb25zdCBJbnRSZWN0Jik7Ci0gICAgdmlydHVhbCB2b2lk
IGludmFsaWRhdGVTY3JvbGxDb3JuZXJSZWN0KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSB7IH0K
LSAgICB2aXJ0dWFsIGJvb2wgaXNBY3RpdmUoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9Ci0gICAg
U2Nyb2xsYWJsZUFyZWEqIGVuY2xvc2luZ1Njcm9sbGFibGVBcmVhKCkgY29uc3QgeyByZXR1cm4g
MDsgfQotICAgIHZpcnR1YWwgYm9vbCBpc1Njcm9sbENvcm5lclZpc2libGUoKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgV2ViQ29yZTo6SW50UmVjdCBzY3JvbGxDb3JuZXJS
ZWN0KCkgY29uc3QgeyByZXR1cm4gV2ViQ29yZTo6SW50UmVjdCgpOyB9Ci0gICAgdmlydHVhbCBT
Y3JvbGxiYXIqIHZlcnRpY2FsU2Nyb2xsYmFyKCkgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxiYXIu
Z2V0KCk7IH0KKyAgICB2aXJ0dWFsIGludCBzY3JvbGxTaXplKFNjcm9sbGJhck9yaWVudGF0aW9u
KSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGludCBzY3JvbGxQb3NpdGlvbihTY3JvbGxi
YXIqKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0U2Nyb2xsT2Zmc2V0KGNv
bnN0IEludFBvaW50JikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGVTY3Jv
bGxiYXJSZWN0KFNjcm9sbGJhciosIGNvbnN0IEludFJlY3QmKSBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIHZvaWQgaW52YWxpZGF0ZVNjcm9sbENvcm5lclJlY3QoY29uc3QgSW50UmVjdCYpIE9WRVJS
SURFIHsgfQorICAgIHZpcnR1YWwgYm9vbCBpc0FjdGl2ZSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0
dXJuIHRydWU7IH0KKyAgICBTY3JvbGxhYmxlQXJlYSogZW5jbG9zaW5nU2Nyb2xsYWJsZUFyZWEo
KSBjb25zdCBPVkVSUklERSB7IHJldHVybiAwOyB9CisgICAgdmlydHVhbCBib29sIGlzU2Nyb2xs
Q29ybmVyVmlzaWJsZSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmly
dHVhbCBJbnRSZWN0IHNjcm9sbENvcm5lclJlY3QoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBJ
bnRSZWN0KCk7IH0KKyAgICB2aXJ0dWFsIFNjcm9sbGJhciogdmVydGljYWxTY3JvbGxiYXIoKSBj
b25zdCBPVkVSUklERSB7IHJldHVybiBtX3Njcm9sbGJhci5nZXQoKTsgfQorICAgIHZpcnR1YWwg
aW50IHZpc2libGVIZWlnaHQoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGludCB2aXNp
YmxlV2lkdGgoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIEludFNpemUgY29udGVudHNT
aXplKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGlzT25BY3RpdmVQYWdlKCkg
Y29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBJbnRSZWN0IHNjcm9sbGFibGVBcmVhQm91bmRp
bmdCb3goKSBjb25zdCBPVkVSUklERTsKIAogICAgIC8vIE5PVEU6IFRoaXMgc2hvdWxkIG9ubHkg
YmUgY2FsbGVkIGJ5IHRoZSBvdmVycmlkZW4gc2V0U2Nyb2xsT2Zmc2V0IGZyb20gU2Nyb2xsYWJs
ZUFyZWEuCiAgICAgdm9pZCBzY3JvbGxUbyhpbnQgb2Zmc2V0KTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcAppbmRleCAyZjVhZTJiNmM3N2ZiMjE0YjZhMjVlNTFh
MTM3NWZiZjJlNjM2YmI2Li5kZmZiOGQ5N2ZkN2ZlYWI0OTVmMDNiYzI2MDU1YzYwNGYzYjRlYzM5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwCkBAIC02Mjcs
MTEgKzYyNyw2IEBAIHZvaWQgUmVuZGVyTGlzdEJveDo6c2V0U2Nyb2xsT2Zmc2V0KGNvbnN0IElu
dFBvaW50JiBvZmZzZXQpCiAgICAgc2Nyb2xsVG8ob2Zmc2V0LnkoKSk7CiB9CiAKLUludFBvaW50
IFJlbmRlckxpc3RCb3g6OnNjcm9sbFBvc2l0aW9uKCkgY29uc3QKLXsKLSAgICByZXR1cm4gSW50
UG9pbnQoMCwgbV9pbmRleE9mZnNldCk7Ci19Ci0KIHZvaWQgUmVuZGVyTGlzdEJveDo6c2Nyb2xs
VG8oaW50IG5ld09mZnNldCkKIHsKICAgICBpZiAobmV3T2Zmc2V0ID09IG1faW5kZXhPZmZzZXQp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5oIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guaAppbmRleCA2MDM4YzQzMTY0
ZmFhNzJmYjY4ZjhmOGMyN2I4NDVlYzczNWY4YzE4Li5hZTZhMzA3MTRlMjc4NzdlN2RlMzg3N2Zh
MTRmMDI3Yjg2MjVkODNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGlzdEJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94
LmgKQEAgLTk3LDI4ICs5NywyNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBub2RlQXRQ
b2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1bHQmLCBjb25zdCBIaXRUZXN0
UG9pbnQmIHBvaW50SW5Db250YWluZXIsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9m
ZnNldCwgSGl0VGVzdEFjdGlvbikgT1ZFUlJJREU7CiAKICAgICAvLyBTY3JvbGxhYmxlQXJlYSBp
bnRlcmZhY2UuCi0gICAgdmlydHVhbCBpbnQgc2Nyb2xsU2l6ZShTY3JvbGxiYXJPcmllbnRhdGlv
bikgY29uc3Q7Ci0gICAgdmlydHVhbCBpbnQgc2Nyb2xsUG9zaXRpb24oU2Nyb2xsYmFyKikgY29u
c3Q7Ci0gICAgdmlydHVhbCB2b2lkIHNldFNjcm9sbE9mZnNldChjb25zdCBJbnRQb2ludCYpOwot
ICAgIHZpcnR1YWwgSW50UG9pbnQgc2Nyb2xsUG9zaXRpb24oKSBjb25zdCBPVkVSUklERTsKLSAg
ICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZVNjcm9sbGJhclJlY3QoU2Nyb2xsYmFyKiwgY29uc3Qg
SW50UmVjdCYpOwotICAgIHZpcnR1YWwgYm9vbCBpc0FjdGl2ZSgpIGNvbnN0OwotICAgIHZpcnR1
YWwgYm9vbCBpc1Njcm9sbENvcm5lclZpc2libGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfSAv
LyBXZSBkb24ndCBzdXBwb3J0IHJlc2l6ZSBvbiBsaXN0IGJveGVzIHlldC4gSWYgd2UgZGlkIHRo
ZXNlIHdvdWxkIGhhdmUgdG8gY2hhbmdlLgotICAgIHZpcnR1YWwgSW50UmVjdCBzY3JvbGxDb3Ju
ZXJSZWN0KCkgY29uc3QgeyByZXR1cm4gSW50UmVjdCgpOyB9Ci0gICAgdmlydHVhbCB2b2lkIGlu
dmFsaWRhdGVTY3JvbGxDb3JuZXJSZWN0KGNvbnN0IEludFJlY3QmKSB7IH0KLSAgICB2aXJ0dWFs
IEludFJlY3QgY29udmVydEZyb21TY3JvbGxiYXJUb0NvbnRhaW5pbmdWaWV3KGNvbnN0IFNjcm9s
bGJhciosIGNvbnN0IEludFJlY3QmKSBjb25zdDsKLSAgICB2aXJ0dWFsIEludFJlY3QgY29udmVy
dEZyb21Db250YWluaW5nVmlld1RvU2Nyb2xsYmFyKGNvbnN0IFNjcm9sbGJhciosIGNvbnN0IElu
dFJlY3QmKSBjb25zdDsKLSAgICB2aXJ0dWFsIEludFBvaW50IGNvbnZlcnRGcm9tU2Nyb2xsYmFy
VG9Db250YWluaW5nVmlldyhjb25zdCBTY3JvbGxiYXIqLCBjb25zdCBJbnRQb2ludCYpIGNvbnN0
OwotICAgIHZpcnR1YWwgSW50UG9pbnQgY29udmVydEZyb21Db250YWluaW5nVmlld1RvU2Nyb2xs
YmFyKGNvbnN0IFNjcm9sbGJhciosIGNvbnN0IEludFBvaW50JikgY29uc3Q7Ci0gICAgdmlydHVh
bCBTY3JvbGxiYXIqIHZlcnRpY2FsU2Nyb2xsYmFyKCkgY29uc3QgeyByZXR1cm4gbV92QmFyLmdl
dCgpOyB9Ci0gICAgdmlydHVhbCBJbnRTaXplIGNvbnRlbnRzU2l6ZSgpIGNvbnN0OwotICAgIHZp
cnR1YWwgaW50IHZpc2libGVIZWlnaHQoKSBjb25zdDsKLSAgICB2aXJ0dWFsIGludCB2aXNpYmxl
V2lkdGgoKSBjb25zdDsKLSAgICB2aXJ0dWFsIEludFBvaW50IGN1cnJlbnRNb3VzZVBvc2l0aW9u
KCkgY29uc3Q7Ci0gICAgdmlydHVhbCBib29sIHNob3VsZFN1c3BlbmRTY3JvbGxBbmltYXRpb25z
KCkgY29uc3Q7Ci0gICAgdmlydHVhbCBib29sIGlzT25BY3RpdmVQYWdlKCkgY29uc3Q7Ci0KLSAg
ICB2aXJ0dWFsIFNjcm9sbGFibGVBcmVhKiBlbmNsb3NpbmdTY3JvbGxhYmxlQXJlYSgpIGNvbnN0
OworICAgIHZpcnR1YWwgaW50IHNjcm9sbFNpemUoU2Nyb2xsYmFyT3JpZW50YXRpb24pIGNvbnN0
IE9WRVJSSURFOworICAgIHZpcnR1YWwgaW50IHNjcm9sbFBvc2l0aW9uKFNjcm9sbGJhciopIGNv
bnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzZXRTY3JvbGxPZmZzZXQoY29uc3QgSW50
UG9pbnQmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZVNjcm9sbGJhclJl
Y3QoU2Nyb2xsYmFyKiwgY29uc3QgSW50UmVjdCYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9v
bCBpc0FjdGl2ZSgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBpc1Njcm9sbENv
cm5lclZpc2libGUoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBmYWxzZTsgfSAvLyBXZSBkb24n
dCBzdXBwb3J0IHJlc2l6ZSBvbiBsaXN0IGJveGVzIHlldC4gSWYgd2UgZGlkIHRoZXNlIHdvdWxk
IGhhdmUgdG8gY2hhbmdlLgorICAgIHZpcnR1YWwgSW50UmVjdCBzY3JvbGxDb3JuZXJSZWN0KCkg
Y29uc3QgT1ZFUlJJREUgeyByZXR1cm4gSW50UmVjdCgpOyB9CisgICAgdmlydHVhbCB2b2lkIGlu
dmFsaWRhdGVTY3JvbGxDb3JuZXJSZWN0KGNvbnN0IEludFJlY3QmKSBPVkVSUklERSB7IH0KKyAg
ICB2aXJ0dWFsIEludFJlY3QgY29udmVydEZyb21TY3JvbGxiYXJUb0NvbnRhaW5pbmdWaWV3KGNv
bnN0IFNjcm9sbGJhciosIGNvbnN0IEludFJlY3QmKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIEludFJlY3QgY29udmVydEZyb21Db250YWluaW5nVmlld1RvU2Nyb2xsYmFyKGNvbnN0IFNj
cm9sbGJhciosIGNvbnN0IEludFJlY3QmKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIElu
dFBvaW50IGNvbnZlcnRGcm9tU2Nyb2xsYmFyVG9Db250YWluaW5nVmlldyhjb25zdCBTY3JvbGxi
YXIqLCBjb25zdCBJbnRQb2ludCYpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgSW50UG9p
bnQgY29udmVydEZyb21Db250YWluaW5nVmlld1RvU2Nyb2xsYmFyKGNvbnN0IFNjcm9sbGJhcios
IGNvbnN0IEludFBvaW50JikgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBTY3JvbGxiYXIq
IHZlcnRpY2FsU2Nyb2xsYmFyKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV92QmFyLmdldCgp
OyB9CisgICAgdmlydHVhbCBJbnRTaXplIGNvbnRlbnRzU2l6ZSgpIGNvbnN0IE9WRVJSSURFOwor
ICAgIHZpcnR1YWwgaW50IHZpc2libGVIZWlnaHQoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIGludCB2aXNpYmxlV2lkdGgoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIEludFBv
aW50IGN1cnJlbnRNb3VzZVBvc2l0aW9uKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBi
b29sIHNob3VsZFN1c3BlbmRTY3JvbGxBbmltYXRpb25zKCkgY29uc3QgT1ZFUlJJREU7CisgICAg
dmlydHVhbCBib29sIGlzT25BY3RpdmVQYWdlKCkgY29uc3QgT1ZFUlJJREU7CisKKyAgICB2aXJ0
dWFsIFNjcm9sbGFibGVBcmVhKiBlbmNsb3NpbmdTY3JvbGxhYmxlQXJlYSgpIGNvbnN0IE9WRVJS
SURFOwogICAgIHZpcnR1YWwgSW50UmVjdCBzY3JvbGxhYmxlQXJlYUJvdW5kaW5nQm94KCkgY29u
c3QgT1ZFUlJJREU7CiAKICAgICAvLyBOT1RFOiBUaGlzIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBi
eSB0aGUgb3ZlcnJpZGVuIHNldFNjcm9sbE9mZnNldCBmcm9tIFNjcm9sbGFibGVBcmVhLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvU2Nyb2xsYmFyR3JvdXAuaCBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1Njcm9sbGJhckdyb3VwLmgKaW5kZXggYTA0NzljMjA2
MjdkN2JmMTQ1MTQ0ODkxOTJkNzNkNTE2ODM4ZGZiNS4uM2NjY2ZkZjg3NTc3MTI0NjI1NDIzOGM2
NjBiZGRmNDdmMzlmYWVlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
U2Nyb2xsYmFyR3JvdXAuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9TY3JvbGxi
YXJHcm91cC5oCkBAIC00OSwzMSArNDksMzEgQEAgcHVibGljOgogICAgIHZvaWQgc2V0RnJhbWVS
ZWN0KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKTsKIAogICAgIC8vIFdlYkNvcmU6OlNjcm9sbGFi
bGVBcmVhIG1ldGhvZHMKLSAgICB2aXJ0dWFsIGludCBzY3JvbGxTaXplKFdlYkNvcmU6OlNjcm9s
bGJhck9yaWVudGF0aW9uKSBjb25zdDsKLSAgICB2aXJ0dWFsIGludCBzY3JvbGxQb3NpdGlvbihX
ZWJDb3JlOjpTY3JvbGxiYXIqKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0U2Nyb2xsT2Zm
c2V0KGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jik7Ci0gICAgdmlydHVhbCB2b2lkIGludmFsaWRh
dGVTY3JvbGxiYXJSZWN0KFdlYkNvcmU6OlNjcm9sbGJhciosIGNvbnN0IFdlYkNvcmU6OkludFJl
Y3QmKTsKLSAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZVNjcm9sbENvcm5lclJlY3QoY29uc3Qg
V2ViQ29yZTo6SW50UmVjdCYpOwotICAgIHZpcnR1YWwgYm9vbCBpc0FjdGl2ZSgpIGNvbnN0Owot
ICAgIHZpcnR1YWwgU2Nyb2xsYWJsZUFyZWEqIGVuY2xvc2luZ1Njcm9sbGFibGVBcmVhKCkgY29u
c3Q7Ci0gICAgdmlydHVhbCBXZWJDb3JlOjpJbnRSZWN0IHNjcm9sbENvcm5lclJlY3QoKSBjb25z
dCB7IHJldHVybiBXZWJDb3JlOjpJbnRSZWN0KCk7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNTY3Jv
bGxDb3JuZXJWaXNpYmxlKCkgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIGdldFRpY2ttYXJrcyhW
ZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4mKSBjb25zdDsKLSAgICB2aXJ0dWFsIFdlYkNvcmU6Oklu
dFBvaW50IGNvbnZlcnRGcm9tQ29udGFpbmluZ1ZpZXdUb1Njcm9sbGJhcihjb25zdCBXZWJDb3Jl
OjpTY3JvbGxiYXIqLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcGFyZW50UG9pbnQpIGNvbnN0
OwotICAgIHZpcnR1YWwgV2ViQ29yZTo6U2Nyb2xsYmFyKiBob3Jpem9udGFsU2Nyb2xsYmFyKCkg
Y29uc3Q7Ci0gICAgdmlydHVhbCBXZWJDb3JlOjpTY3JvbGxiYXIqIHZlcnRpY2FsU2Nyb2xsYmFy
KCkgY29uc3Q7Ci0gICAgdmlydHVhbCBXZWJDb3JlOjpJbnRQb2ludCBzY3JvbGxQb3NpdGlvbigp
IGNvbnN0OwotICAgIHZpcnR1YWwgV2ViQ29yZTo6SW50UG9pbnQgbWluaW11bVNjcm9sbFBvc2l0
aW9uKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBXZWJDb3JlOjpJbnRQb2ludCBtYXhpbXVtU2Nyb2xs
UG9zaXRpb24oKSBjb25zdDsKLSAgICB2aXJ0dWFsIGludCB2aXNpYmxlSGVpZ2h0KCkgY29uc3Q7
Ci0gICAgdmlydHVhbCBpbnQgdmlzaWJsZVdpZHRoKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBXZWJD
b3JlOjpJbnRTaXplIGNvbnRlbnRzU2l6ZSgpIGNvbnN0OwotICAgIHZpcnR1YWwgV2ViQ29yZTo6
SW50U2l6ZSBvdmVyaGFuZ0Ftb3VudCgpIGNvbnN0OwotICAgIHZpcnR1YWwgV2ViQ29yZTo6SW50
UG9pbnQgY3VycmVudE1vdXNlUG9zaXRpb24oKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgc2hv
dWxkU3VzcGVuZFNjcm9sbEFuaW1hdGlvbnMoKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgc2Ny
b2xsYmFyU3R5bGVDaGFuZ2VkKGludCBuZXdTdHlsZSwgYm9vbCBmb3JjZVVwZGF0ZSk7Ci0gICAg
dmlydHVhbCBib29sIGlzT25BY3RpdmVQYWdlKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBXZWJDb3Jl
OjpJbnRSZWN0IHNjcm9sbGFibGVBcmVhQm91bmRpbmdCb3goKSBjb25zdDsKKyAgICB2aXJ0dWFs
IGludCBzY3JvbGxTaXplKFdlYkNvcmU6OlNjcm9sbGJhck9yaWVudGF0aW9uKSBjb25zdCBPVkVS
UklERTsKKyAgICB2aXJ0dWFsIGludCBzY3JvbGxQb3NpdGlvbihXZWJDb3JlOjpTY3JvbGxiYXIq
KSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0U2Nyb2xsT2Zmc2V0KGNvbnN0
IFdlYkNvcmU6OkludFBvaW50JikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGludmFsaWRh
dGVTY3JvbGxiYXJSZWN0KFdlYkNvcmU6OlNjcm9sbGJhciosIGNvbnN0IFdlYkNvcmU6OkludFJl
Y3QmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZVNjcm9sbENvcm5lclJl
Y3QoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBp
c0FjdGl2ZSgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgU2Nyb2xsYWJsZUFyZWEqIGVu
Y2xvc2luZ1Njcm9sbGFibGVBcmVhKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBXZWJD
b3JlOjpJbnRSZWN0IHNjcm9sbENvcm5lclJlY3QoKSBjb25zdCB7IHJldHVybiBXZWJDb3JlOjpJ
bnRSZWN0KCkgT1ZFUlJJREU7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNTY3JvbGxDb3JuZXJWaXNp
YmxlKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGdldFRpY2ttYXJrcyhWZWN0
b3I8V2ViQ29yZTo6SW50UmVjdD4mKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFdlYkNv
cmU6OkludFBvaW50IGNvbnZlcnRGcm9tQ29udGFpbmluZ1ZpZXdUb1Njcm9sbGJhcihjb25zdCBX
ZWJDb3JlOjpTY3JvbGxiYXIqLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcGFyZW50UG9pbnQp
IGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgV2ViQ29yZTo6U2Nyb2xsYmFyKiBob3Jpem9u
dGFsU2Nyb2xsYmFyKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBXZWJDb3JlOjpTY3Jv
bGxiYXIqIHZlcnRpY2FsU2Nyb2xsYmFyKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBX
ZWJDb3JlOjpJbnRQb2ludCBzY3JvbGxQb3NpdGlvbigpIGNvbnN0IE9WRVJSSURFOworICAgIHZp
cnR1YWwgV2ViQ29yZTo6SW50UG9pbnQgbWluaW11bVNjcm9sbFBvc2l0aW9uKCkgY29uc3QgT1ZF
UlJJREU7CisgICAgdmlydHVhbCBXZWJDb3JlOjpJbnRQb2ludCBtYXhpbXVtU2Nyb2xsUG9zaXRp
b24oKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGludCB2aXNpYmxlSGVpZ2h0KCkgY29u
c3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBpbnQgdmlzaWJsZVdpZHRoKCkgY29uc3QgT1ZFUlJJ
REU7CisgICAgdmlydHVhbCBXZWJDb3JlOjpJbnRTaXplIGNvbnRlbnRzU2l6ZSgpIGNvbnN0IE9W
RVJSSURFOworICAgIHZpcnR1YWwgV2ViQ29yZTo6SW50U2l6ZSBvdmVyaGFuZ0Ftb3VudCgpIGNv
bnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgV2ViQ29yZTo6SW50UG9pbnQgY3VycmVudE1vdXNl
UG9zaXRpb24oKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkU3VzcGVu
ZFNjcm9sbEFuaW1hdGlvbnMoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2Ny
b2xsYmFyU3R5bGVDaGFuZ2VkKGludCBuZXdTdHlsZSwgYm9vbCBmb3JjZVVwZGF0ZSkgT1ZFUlJJ
REU7CisgICAgdmlydHVhbCBib29sIGlzT25BY3RpdmVQYWdlKCkgY29uc3QgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCBXZWJDb3JlOjpJbnRSZWN0IHNjcm9sbGFibGVBcmVhQm91bmRpbmdCb3goKSBj
b25zdCBPVkVSUklERTsKIAogcHJpdmF0ZToKICAgICBXZWJDb3JlOjpGcmFtZVZpZXcqIG1fZnJh
bWVWaWV3OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9TY3JvbGxB
bmltYXRvck5vbmVUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvU2Nyb2xs
QW5pbWF0b3JOb25lVGVzdC5jcHAKaW5kZXggOTI3ZDRhOWMzMmRlNjk3Mjk5ODYyOWQxZmQ1NjY3
NThiNjU1N2QzMS4uZTcxODQ2YWRiMTU0YmY5ZmI4ZjNjYzJkNzY3OTU4MGE5NDYwOWE0YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9TY3JvbGxBbmltYXRvck5vbmVU
ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1Njcm9sbEFuaW1hdG9y
Tm9uZVRlc3QuY3BwCkBAIC02MywxMiArNjMsMjAgQEAgcHVibGljOgogICAgIE1PQ0tfTUVUSE9E
MShpbnZhbGlkYXRlU2Nyb2xsQ29ybmVyUmVjdCwgdm9pZChjb25zdCBJbnRSZWN0JikpOwogICAg
IE1PQ0tfTUVUSE9EMShzZXRTY3JvbGxPZmZzZXRGcm9tQW5pbWF0aW9uLCB2b2lkKGNvbnN0IElu
dFBvaW50JikpOwogICAgIE1PQ0tfQ09OU1RfTUVUSE9EMChlbmNsb3NpbmdTY3JvbGxhYmxlQXJl
YSwgU2Nyb2xsYWJsZUFyZWEqKCkpOwotCi0gICAgdmlydHVhbCBJbnRQb2ludCBzY3JvbGxQb3Np
dGlvbigpIGNvbnN0IHsgcmV0dXJuIEludFBvaW50KCk7IH0KLSAgICB2aXJ0dWFsIGludCB2aXNp
YmxlSGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gNzY4OyB9Ci0gICAgdmlydHVhbCBpbnQgdmlzaWJs
ZVdpZHRoKCkgY29uc3QgeyByZXR1cm4gMTAyNDsgfQotCi0gICAgYm9vbCBzY3JvbGxBbmltYXRv
ckVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX3Njcm9sbEFuaW1hdG9yRW5hYmxlZDsgfQorICAg
IE1PQ0tfQ09OU1RfTUVUSE9EMChtaW5pbXVtU2Nyb2xsUG9zaXRpb24sIEludFBvaW50KCkpOwor
ICAgIE1PQ0tfQ09OU1RfTUVUSE9EMChtYXhpbXVtU2Nyb2xsUG9zaXRpb24sIEludFBvaW50KCkp
OworICAgIE1PQ0tfQ09OU1RfTUVUSE9EMSh2aXNpYmxlQ29udGVudFJlY3QsIEludFJlY3QoYm9v
bCkpOworICAgIE1PQ0tfQ09OU1RfTUVUSE9EMChjb250ZW50c1NpemUsIEludFNpemUoKSk7Cisg
ICAgTU9DS19DT05TVF9NRVRIT0QwKG92ZXJoYW5nQW1vdW50LCBJbnRTaXplKCkpOworICAgIE1P
Q0tfQ09OU1RfTUVUSE9EMChpc09uQWN0aXZlUGFnZSwgYm9vbCgpKTsKKyAgICBNT0NLX0NPTlNU
X01FVEhPRDAoc2Nyb2xsYWJsZUFyZWFCb3VuZGluZ0JveCwgSW50UmVjdCgpKTsKKworICAgIHZp
cnR1YWwgSW50UG9pbnQgc2Nyb2xsUG9zaXRpb24oKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBJ
bnRQb2ludCgpOyB9CisgICAgdmlydHVhbCBpbnQgdmlzaWJsZUhlaWdodCgpIGNvbnN0IE9WRVJS
SURFIHsgcmV0dXJuIDc2ODsgfQorICAgIHZpcnR1YWwgaW50IHZpc2libGVXaWR0aCgpIGNvbnN0
IE9WRVJSSURFIHsgcmV0dXJuIDEwMjQ7IH0KKyAgICB2aXJ0dWFsIGJvb2wgc2Nyb2xsQW5pbWF0
b3JFbmFibGVkKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV9zY3JvbGxBbmltYXRvckVuYWJs
ZWQ7IH0KKworcHJpdmF0ZToKICAgICBib29sIG1fc2Nyb2xsQW5pbWF0b3JFbmFibGVkOwogfTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vV2ViU2Nyb2xsQmFyLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvd2luL1dlYlNjcm9sbEJhci5jcHAKaW5kZXggZDMzODhjM2Q5NjE0ZmNmNjQ3ODkw
MWYwZTA4YTYxNzU1Y2QxNTljNS4uZjE3MjE5NmIzMWE2OGQ5NDY5OWRkZGY0MWVlZjNiMDYwZmZj
MjJiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViU2Nyb2xsQmFyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJTY3JvbGxCYXIuY3BwCkBAIC0yODQsMyArMjg0LDI4IEBA
IFNjcm9sbGJhciogV2ViU2Nyb2xsQmFyOjp2ZXJ0aWNhbFNjcm9sbGJhcigpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIG1fc2Nyb2xsQmFyLT5vcmllbnRhdGlvbigpID09IFZlcnRpY2FsU2Nyb2xsYmFy
ID8gbV9zY3JvbGxCYXIuZ2V0KCkgOiAwOwogfQorCitpbnQgV2ViU2Nyb2xsQmFyOjp2aXNpYmxl
SGVpZ2h0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9zY3JvbGxCYXItPmhlaWdodCgpOworfQor
CitpbnQgV2ViU2Nyb2xsQmFyOjp2aXNpYmxlV2lkdGgoKSBjb25zdAoreworICAgIHJldHVybiBt
X3Njcm9sbEJhci0+d2lkdGgoKTsKK30KKworV2ViQ29yZTo6SW50U2l6ZSBXZWJTY3JvbGxCYXI6
OmNvbnRlbnRzU2l6ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc2Nyb2xsQmFyLT5mcmFtZVJl
Y3QoKS5zaXplKCk7Cit9CisKK2Jvb2wgV2ViU2Nyb2xsQmFyOjppc09uQWN0aXZlUGFnZSgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK1dlYkNvcmU6OkludFJlY3QgV2ViU2Nyb2xs
QmFyOjpzY3JvbGxhYmxlQXJlYUJvdW5kaW5nQm94KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9z
Y3JvbGxCYXItPmZyYW1lUmVjdCgpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4v
V2ViU2Nyb2xsQmFyLmggYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJTY3JvbGxCYXIuaAppbmRleCBj
OTdkMGQ3MDExOGMzYWRlZDk3NGJlOTNhMzY2MTFmMWY4MGU3MWY3Li5kZmQxZWYwNDA3YmU3ZTg0
NTUyYTQxMDk2ODgzNzA1ZThkOGExN2NhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9X
ZWJTY3JvbGxCYXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJTY3JvbGxCYXIuaApAQCAt
MTE3LDYgKzExNywxMSBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGVT
Y3JvbGxiYXJSZWN0KFdlYkNvcmU6OlNjcm9sbGJhciosIGNvbnN0IFdlYkNvcmU6OkludFJlY3Qm
KTsKICAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZVNjcm9sbENvcm5lclJlY3QoY29uc3QgV2Vi
Q29yZTo6SW50UmVjdCYpIHsgfQogICAgIHZpcnR1YWwgV2ViQ29yZTo6U2Nyb2xsYWJsZUFyZWEq
IGVuY2xvc2luZ1Njcm9sbGFibGVBcmVhKCkgY29uc3QgeyByZXR1cm4gMDsgfQorICAgIHZpcnR1
YWwgaW50IHZpc2libGVIZWlnaHQoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGludCB2
aXNpYmxlV2lkdGgoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OkludFNp
emUgY29udGVudHNTaXplKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGlzT25B
Y3RpdmVQYWdlKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBXZWJDb3JlOjpJbnRSZWN0
IHNjcm9sbGFibGVBcmVhQm91bmRpbmdCb3goKSBjb25zdCBPVkVSUklERTsKIAogICAgIC8vIEZJ
WE1FOiBXZSBzaG91bGQgcHJvdmlkZSBhIHdheSB0byBzZXQgdGhpcyB2YWx1ZS4KICAgICB2aXJ0
dWFsIGJvb2wgaXNBY3RpdmUoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>159994</attachid>
            <date>2012-08-22 13:00:36 -0700</date>
            <delta_ts>2012-08-22 13:24:08 -0700</delta_ts>
            <desc>Fix WebKit2 / Win build errors</desc>
            <filename>bug-93306-20120822130034.patch</filename>
            <type>text/plain</type>
            <size>44816</size>
            <attacher name="Adrienne Walker">enne</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI2MzIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOThlYTUyNjMyYjFlYTZk
N2MyYTAxYmExYjI5ZDk0MDdiZjZmMWYzOS4uNDhkOWE4ZDFjZmRkNGNlZTE2OTI1MDY1MjI1Mjc0
ODFkNTc2ZTE3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU0IEBACisyMDEyLTA4LTIyICBBZHJp
ZW5uZSBXYWxrZXIgIDxlbm5lQGdvb2dsZS5jb20+CisKKyAgICAgICAgQ29udmVydCBTY3JvbGxh
YmxlQXJlYSBBU1NFUlRfTk9UX1JFQUNIRUQgdmlydHVhbHMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkzMzA2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
RGFyaW4gQWRsZXIuCisKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEIGlzIGEgYmFkIHdheSB0
byBtYWtlIHN1cmUgdGhhdCBhIHZpcnR1YWwgZnVuY3Rpb24KKyAgICAgICAgZ2V0cyBhbiBvdmVy
cmlkZSwgYmVjYXVzZSBpdCBvbmx5IGZhaWxzIGF0IHJ1bi10aW1lIGluIGRlYnVnIGJ1aWxkcy4K
KworICAgICAgICBUbyBmaXggdGhpcywgY29udmVydCB0aGUgdmlydHVhbHMgaW4gU2Nyb2xsYWJs
ZUFyZWEgdGhhdCBoYXZlCisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCB0byBiZSBlaXRoZXIg
cHVyZSB2aXJ0dWFsIG9yIGltcGxlbWVudGVkIGRpcmVjdGx5CisgICAgICAgIGluIFNjcm9sbGFi
bGVBcmVhLiBBZGQgaW1wbGVtZW50YXRpb25zIHdoZXJlIG5lY2Vzc2FyeSB0byBtYWtlIGRlcml2
ZWQKKyAgICAgICAgY2xhc3NlcyBjb25jcmV0ZS4KKworICAgICAgICBBZGRpdGlvbmFsbHksIGNv
bnNpc3RlbnRseSBhZGQgT1ZFUlJJREUgZm9yIHZpcnR1YWwgZnVuY3Rpb25zIGluCisgICAgICAg
IGRlcml2ZWQgY2xhc3NlcyB0aGF0IG92ZXJyaWRlIFNjcm9sbGFibGVBcmVhIG1ldGhvZHMuCisK
KyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5oOgor
ICAgICAgICAoRnJhbWVWaWV3KToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxWaWV3Lmg6Cisg
ICAgICAgIChTY3JvbGxWaWV3KToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxhYmxlQXJlYTo6c2Nyb2xsUG9zaXRpb24pOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxhYmxlQXJlYTo6bWlu
aW11bVNjcm9sbFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGFibGVBcmVhOjpt
YXhpbXVtU2Nyb2xsUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYWJsZUFyZWE6
OnZpc2libGVDb250ZW50UmVjdCk6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEu
aDoKKyAgICAgICAgKFNjcm9sbGFibGVBcmVhKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGFi
bGVBcmVhOjpvdmVyaGFuZ0Ftb3VudCk6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vRnJh
bWVsZXNzU2Nyb2xsVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZWxlc3NTY3JvbGxW
aWV3Ojppc09uQWN0aXZlUGFnZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lbGVzc1Njcm9sbFZpZXc6OnNjcm9sbGFibGVBcmVhQm91bmRpbmdCb3gpOgorICAg
ICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL0ZyYW1lbGVzc1Njcm9sbFZpZXcuaDoKKyAgICAgICAg
KEZyYW1lbGVzc1Njcm9sbFZpZXcpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9Qb3B1cE1lbnVX
aW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UG9wdXBNZW51V2luOjp2aXNpYmxlSGVpZ2h0KToK
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6UG9wdXBNZW51V2luOjp2aXNp
YmxlV2lkdGgpOgorICAgICAgICAoV2ViQ29yZTo6UG9wdXBNZW51V2luOjpjb250ZW50c1NpemUp
OgorICAgICAgICAoV2ViQ29yZTo6UG9wdXBNZW51V2luOjppc09uQWN0aXZlUGFnZSk6CisgICAg
ICAgIChXZWJDb3JlOjpQb3B1cE1lbnVXaW46OnNjcm9sbGFibGVBcmVhQm91bmRpbmdCb3gpOgor
ICAgICAgICAqIHBsYXRmb3JtL3dpbi9Qb3B1cE1lbnVXaW4uaDoKKyAgICAgICAgKFBvcHVwTWVu
dVdpbik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJMaXN0Qm94Lmg6CisgICAgICAgIChSZW5kZXJMaXN0Qm94KToKKwog
MjAxMi0wOC0yMiAgS2VubmV0aCBSdXNzZWxsICA8a2JyQGdvb2dsZS5jb20+CiAKICAgICAgICAg
VW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjEyNjMxOS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cK
aW5kZXggZDU4MzA3NGNlNjI5MGNhN2NhMzc3Y2JjMDkzNzgwNDFhOTE1MTIxNy4uZDRmNWI1ZDRm
OWY1M2RiNjFmODlkN2FhNDIyOWQwZmJmZTI2MDZlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxOSBAQAorMjAxMi0wOC0yMiAgQWRyaWVubmUgV2Fsa2VyICA8ZW5uZUBn
b29nbGUuY29tPgorCisgICAgICAgIENvbnZlcnQgU2Nyb2xsYWJsZUFyZWEgQVNTRVJUX05PVF9S
RUFDSEVEIHZpcnR1YWxzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD05MzMwNgorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAg
ICAgIEFkZCBpbXBsZW1lbnRhdGlvbnMgd2hlcmUgbmVjZXNzYXJ5IHRvIG1ha2UgZGVyaXZlZCBj
bGFzc2VzIGNvbmNyZXRlLgorICAgICAgICBBZGQgT1ZFUlJJREUgZm9yIFNjcm9sbGFibGVBcmVh
IGZ1bmN0aW9ucy4KKworICAgICAgICAqIHNyYy9TY3JvbGxiYXJHcm91cC5oOgorICAgICAgICAo
U2Nyb2xsYmFyR3JvdXApOgorICAgICAgICAoV2ViS2l0OjpTY3JvbGxiYXJHcm91cDo6c2Nyb2xs
Q29ybmVyUmVjdCk6CisgICAgICAgICogdGVzdHMvU2Nyb2xsQW5pbWF0b3JOb25lVGVzdC5jcHA6
CisgICAgICAgIChNb2NrU2Nyb2xsYWJsZUFyZWEpOgorCiAyMDEyLTA4LTIyICBLZW5uZXRoIFJ1
c3NlbGwgIDxrYnJAZ29vZ2xlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91
dCByMTI2MzE5LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCmluZGV4IGVkNzZmYWY5MDVmNDEyM2ViZjE4ODQ1NGZl
NjQzMTczOWVmNGM5MGQuLjhlZjJjNjVjNmE5MjAyNmM1YjQ4ZjNjOTM3ZDg1OWZlNDY0ODAzNGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAxMi0wOC0yMiAgQWRyaWVubmUg
V2Fsa2VyICA8ZW5uZUBnb29nbGUuY29tPgorCisgICAgICAgIENvbnZlcnQgU2Nyb2xsYWJsZUFy
ZWEgQVNTRVJUX05PVF9SRUFDSEVEIHZpcnR1YWxzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MzMwNgorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmlu
IEFkbGVyLgorCisgICAgICAgIEFkZCBpbXBsZW1lbnRhdGlvbnMgd2hlcmUgbmVjZXNzYXJ5IHRv
IG1ha2UgZGVyaXZlZCBjbGFzc2VzIGNvbmNyZXRlLgorICAgICAgICBBZGQgT1ZFUlJJREUgZm9y
IFNjcm9sbGFibGVBcmVhIGZ1bmN0aW9ucy4KKworICAgICAgICAqIFdlYlNjcm9sbEJhci5jcHA6
CisgICAgICAgIChXZWJTY3JvbGxCYXI6OnZpc2libGVIZWlnaHQpOgorICAgICAgICAoV2ViU2Ny
b2xsQmFyOjp2aXNpYmxlV2lkdGgpOgorICAgICAgICAoV2ViU2Nyb2xsQmFyOjpjb250ZW50c1Np
emUpOgorICAgICAgICAoV2ViU2Nyb2xsQmFyOjppc09uQWN0aXZlUGFnZSk6CisgICAgICAgIChX
ZWJTY3JvbGxCYXI6OnNjcm9sbGFibGVBcmVhQm91bmRpbmdCb3gpOgorICAgICAgICAqIFdlYlNj
cm9sbEJhci5oOgorICAgICAgICAoV2ViU2Nyb2xsQmFyKToKKwogMjAxMi0wOC0xNSAgUnlvc3Vr
ZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBVcGRhdGUgbWFudWFsIHRlc3Rz
IGFuZCBjb21tZW50cyB0byByZWZlciB0byBUZXN0UnVubmVyIGluc3RlYWQgb2YgTGF5b3V0VGVz
dENvbnRyb2xsZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA4NmUzY2UyZWI1YmY5N2RmMmZkMjZiYzE5MzE3M2Y5
YzI2ODAyMDcxLi4yMWI4OGIxNWJlZmIxYjg3MzZkNjM5YTRlYWMxMzUwMTcwNGZjYTU4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTItMDgtMjIgIEFkcmllbm5lIFdhbGtlciAgPGVu
bmVAZ29vZ2xlLmNvbT4KKworICAgICAgICBDb252ZXJ0IFNjcm9sbGFibGVBcmVhIEFTU0VSVF9O
T1RfUkVBQ0hFRCB2aXJ0dWFscworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9OTMzMDYKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKwor
ICAgICAgICBBZGQgaW1wbGVtZW50YXRpb25zIHdoZXJlIG5lY2Vzc2FyeSB0byBtYWtlIGRlcml2
ZWQgY2xhc3NlcyBjb25jcmV0ZS4KKyAgICAgICAgQWRkIE9WRVJSSURFIGZvciBTY3JvbGxhYmxl
QXJlYSBmdW5jdGlvbnMuCisKKyAgICAgICAgKiBVSVByb2Nlc3Mvd2luL1dlYlBvcHVwTWVudVBy
b3h5V2luLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUG9wdXBNZW51UHJveHlXaW46OnZpc2li
bGVIZWlnaHQpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUG9wdXBN
ZW51UHJveHlXaW46OnZpc2libGVXaWR0aCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBvcHVwTWVu
dVByb3h5V2luOjpjb250ZW50c1NpemUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQb3B1cE1lbnVQ
cm94eVdpbjo6c2Nyb2xsYWJsZUFyZWFCb3VuZGluZ0JveCk6CisgICAgICAgICogVUlQcm9jZXNz
L3dpbi9XZWJQb3B1cE1lbnVQcm94eVdpbi5oOgorICAgICAgICAoV2ViUG9wdXBNZW51UHJveHlX
aW4pOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvQnVpbHRJblBERlZpZXcuaDoK
KwogMjAxMi0wOC0yMiAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAg
ICBCcm93c2VyIG1lbnUgdmlzaWJsZSB3aGVuIGNhbGxpbmcgd2Via2l0UmVxdWVzdEZ1bGxzY3Jl
ZW4gYWZ0ZXIgdXNlciBtYW51YWxseSBlbnRlcnMgZnVsbCBzY3JlZW4gbW9kZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LmV4cC5pbgppbmRleCAxNmQwNGEzODBiMTRlZjQ4YjE2MGJiZGJjZDMyODVjOWRjMDVmNWFkLi5l
ZTY1Yjc3ZjQ4MGZiNDA1ZTljMjFlNjYyMjNmMTVkNmNjYzEyZTY4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4
cC5pbgpAQCAtMTYxOSw2ICsxNjE5LDcgQEAgX19aTjdXZWJDb3JlN25zQ29sb3JFUktOU181Q29s
b3JFCiBfX1pON1dlYkNvcmU4SW50UG9pbnRDMUVSSzhfTlNQb2ludAogX19aTjdXZWJDb3JlOUZs
b2F0UmVjdEMxRVJLN19OU1JlY3QKIF9fWk5LN1dlYkNvcmUxMEZsb2F0UG9pbnRjdjhfTlNQb2lu
dEV2CitfX1pOSzdXZWJDb3JlMTRTY3JvbGxhYmxlQXJlYTE4dmlzaWJsZUNvbnRlbnRSZWN0RWIK
IF9fWk5LN1dlYkNvcmU2Q3Vyc29yMTRwbGF0Zm9ybUN1cnNvckV2CiBfX1pOSzdXZWJDb3JlN0lu
dFJlY3RjdjdfTlNSZWN0RXYKIF9fWk5LN1dlYkNvcmU3SW50U2l6ZWN2NkNHU2l6ZUV2CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9GcmFtZVZpZXcuaAppbmRleCA4N2MxMDhiNDhhYzg3NDFmMjgzZDkxNjU2ZGYxNDY3NDI0
YWQ4OTg1Li43MTMzZTJmMjcwMjk4M2EyZDIyMTk4MTIzMzI4ZGU2YWFkYjMxZGU1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRnJhbWVWaWV3LmgKQEAgLTM4NiwyMyArMzg2LDIxIEBAIHByaXZhdGU6CiAKICAgICAv
LyBPdmVycmlkZSBTY3JvbGxWaWV3IG1ldGhvZHMgdG8gZG8gcG9pbnQgY29udmVyc2lvbiB2aWEg
cmVuZGVyZXJzLCBpbiBvcmRlciB0bwogICAgIC8vIHRha2UgdHJhbnNmb3JtcyBpbnRvIGFjY291
bnQuCi0gICAgdmlydHVhbCBJbnRSZWN0IGNvbnZlcnRUb0NvbnRhaW5pbmdWaWV3KGNvbnN0IElu
dFJlY3QmKSBjb25zdDsKLSAgICB2aXJ0dWFsIEludFJlY3QgY29udmVydEZyb21Db250YWluaW5n
Vmlldyhjb25zdCBJbnRSZWN0JikgY29uc3Q7Ci0gICAgdmlydHVhbCBJbnRQb2ludCBjb252ZXJ0
VG9Db250YWluaW5nVmlldyhjb25zdCBJbnRQb2ludCYpIGNvbnN0OwotICAgIHZpcnR1YWwgSW50
UG9pbnQgY29udmVydEZyb21Db250YWluaW5nVmlldyhjb25zdCBJbnRQb2ludCYpIGNvbnN0Owor
ICAgIHZpcnR1YWwgSW50UmVjdCBjb252ZXJ0VG9Db250YWluaW5nVmlldyhjb25zdCBJbnRSZWN0
JikgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBJbnRSZWN0IGNvbnZlcnRGcm9tQ29udGFp
bmluZ1ZpZXcoY29uc3QgSW50UmVjdCYpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgSW50
UG9pbnQgY29udmVydFRvQ29udGFpbmluZ1ZpZXcoY29uc3QgSW50UG9pbnQmKSBjb25zdCBPVkVS
UklERTsKKyAgICB2aXJ0dWFsIEludFBvaW50IGNvbnZlcnRGcm9tQ29udGFpbmluZ1ZpZXcoY29u
c3QgSW50UG9pbnQmKSBjb25zdCBPVkVSUklERTsKIAogICAgIC8vIFNjcm9sbGFibGVBcmVhIGlu
dGVyZmFjZQotICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlU2Nyb2xsYmFyUmVjdChTY3JvbGxi
YXIqLCBjb25zdCBJbnRSZWN0Jik7Ci0gICAgdmlydHVhbCBib29sIGlzQWN0aXZlKCkgY29uc3Q7
Ci0gICAgdmlydHVhbCB2b2lkIGdldFRpY2ttYXJrcyhWZWN0b3I8SW50UmVjdD4mKSBjb25zdDsK
LSAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsVG8oY29uc3QgSW50U2l6ZSYpOwotICAgIHZpcnR1YWwg
dm9pZCBzZXRWaXNpYmxlU2Nyb2xsZXJUaHVtYlJlY3QoY29uc3QgSW50UmVjdCYpOwotICAgIHZp
cnR1YWwgYm9vbCBpc09uQWN0aXZlUGFnZSgpIGNvbnN0OwotICAgIHZpcnR1YWwgU2Nyb2xsYWJs
ZUFyZWEqIGVuY2xvc2luZ1Njcm9sbGFibGVBcmVhKCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lk
IGludmFsaWRhdGVTY3JvbGxiYXJSZWN0KFNjcm9sbGJhciosIGNvbnN0IEludFJlY3QmKSBPVkVS
UklERTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNBY3RpdmUoKSBjb25zdCBPVkVSUklERTsKKyAgICB2
aXJ0dWFsIHZvaWQgZ2V0VGlja21hcmtzKFZlY3RvcjxJbnRSZWN0PiYpIGNvbnN0IE9WRVJSSURF
OworICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxUbyhjb25zdCBJbnRTaXplJikgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCB2b2lkIHNldFZpc2libGVTY3JvbGxlclRodW1iUmVjdChjb25zdCBJbnRSZWN0
JikgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGlzT25BY3RpdmVQYWdlKCkgY29uc3QgT1ZF
UlJJREU7CisgICAgdmlydHVhbCBTY3JvbGxhYmxlQXJlYSogZW5jbG9zaW5nU2Nyb2xsYWJsZUFy
ZWEoKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIEludFJlY3Qgc2Nyb2xsYWJsZUFyZWFC
b3VuZGluZ0JveCgpIGNvbnN0IE9WRVJSSURFOwotCi0gICAgdm9pZCB1cGRhdGVTY3JvbGxhYmxl
QXJlYVNldCgpOwotCisgICAgdmlydHVhbCBib29sIHNjcm9sbEFuaW1hdG9yRW5hYmxlZCgpIGNv
bnN0IE9WRVJSSURFOwogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKICAgICB2aXJ0
dWFsIEdyYXBoaWNzTGF5ZXIqIGxheWVyRm9ySG9yaXpvbnRhbFNjcm9sbGJhcigpIGNvbnN0IE9W
RVJSSURFOwogICAgIHZpcnR1YWwgR3JhcGhpY3NMYXllciogbGF5ZXJGb3JWZXJ0aWNhbFNjcm9s
bGJhcigpIGNvbnN0IE9WRVJSSURFOwpAQCAtNDEyLDkgKzQxMCw5IEBAIHByaXZhdGU6CiAjZW5k
aWYKICNlbmRpZgogCi0gICAgdmlydHVhbCB2b2lkIG5vdGlmeVBhZ2VUaGF0Q29udGVudEFyZWFX
aWxsUGFpbnQoKSBjb25zdDsKKyAgICB2b2lkIHVwZGF0ZVNjcm9sbGFibGVBcmVhU2V0KCk7CiAK
LSAgICB2aXJ0dWFsIGJvb2wgc2Nyb2xsQW5pbWF0b3JFbmFibGVkKCkgY29uc3Q7CisgICAgdmly
dHVhbCB2b2lkIG5vdGlmeVBhZ2VUaGF0Q29udGVudEFyZWFXaWxsUGFpbnQoKSBjb25zdDsKIAog
ICAgIHZvaWQgZGVmZXJyZWRSZXBhaW50VGltZXJGaXJlZChUaW1lcjxGcmFtZVZpZXc+Kik7CiAg
ICAgdm9pZCBkb0RlZmVycmVkUmVwYWludHMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Njcm9sbFZpZXcuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZp
ZXcuaAppbmRleCA4MWE1NmIyNTFjZWQ1NGUwODJhODZlNjliMzRiNDY2YjRkMTY5YjdmLi4yY2Jj
YzI3MGU5NjFkNTU3YjYyYjA1NjZmM2U1YzIzOTRhZTQ1NjRiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2Nyb2xsVmlldy5oCkBAIC01MiwxMyArNTIsMTQgQEAgY2xhc3MgU2Nyb2xsVmlldyA6IHB1
YmxpYyBXaWRnZXQsIHB1YmxpYyBTY3JvbGxhYmxlQXJlYSB7CiBwdWJsaWM6CiAgICAgflNjcm9s
bFZpZXcoKTsKIAotICAgIC8vIFNjcm9sbGFibGVBcmVhIGZ1bmN0aW9ucy4gIEZyYW1lVmlldyBv
dmVycmlkZXMgdGhlIG90aGVycy4KLSAgICB2aXJ0dWFsIGludCBzY3JvbGxTaXplKFNjcm9sbGJh
ck9yaWVudGF0aW9uIG9yaWVudGF0aW9uKSBjb25zdDsKLSAgICB2aXJ0dWFsIGludCBzY3JvbGxQ
b3NpdGlvbihTY3JvbGxiYXIqKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0U2Nyb2xsT2Zm
c2V0KGNvbnN0IEludFBvaW50Jik7CisgICAgLy8gU2Nyb2xsYWJsZUFyZWEgZnVuY3Rpb25zLgor
ICAgIHZpcnR1YWwgaW50IHNjcm9sbFNpemUoU2Nyb2xsYmFyT3JpZW50YXRpb24pIGNvbnN0IE9W
RVJSSURFOworICAgIHZpcnR1YWwgaW50IHNjcm9sbFBvc2l0aW9uKFNjcm9sbGJhciopIGNvbnN0
IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzZXRTY3JvbGxPZmZzZXQoY29uc3QgSW50UG9p
bnQmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNTY3JvbGxDb3JuZXJWaXNpYmxlKCkg
Y29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHNjcm9sbGJhclN0eWxlQ2hhbmdlZChp
bnQgbmV3U3R5bGUsIGJvb2wgZm9yY2VVcGRhdGUpIE9WRVJSSURFOworCiAgICAgdmlydHVhbCB2
b2lkIG5vdGlmeVBhZ2VUaGF0Q29udGVudEFyZWFXaWxsUGFpbnQoKSBjb25zdDsKLSAgICB2aXJ0
dWFsIGJvb2wgaXNTY3JvbGxDb3JuZXJWaXNpYmxlKCkgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lk
IHNjcm9sbGJhclN0eWxlQ2hhbmdlZChpbnQgbmV3U3R5bGUsIGJvb2wgZm9yY2VVcGRhdGUpOwog
CiAgICAgLy8gTk9URTogVGhpcyBzaG91bGQgb25seSBiZSBjYWxsZWQgYnkgdGhlIG92ZXJyaWRl
biBzZXRTY3JvbGxPZmZzZXQgZnJvbSBTY3JvbGxhYmxlQXJlYS4KICAgICB2aXJ0dWFsIHZvaWQg
c2Nyb2xsVG8oY29uc3QgSW50U2l6ZSYgbmV3T2Zmc2V0KTsKQEAgLTc0LDExICs3NSwxMSBAQCBw
dWJsaWM6CiAgICAgY29uc3QgSGFzaFNldDxSZWZQdHI8V2lkZ2V0PiA+KiBjaGlsZHJlbigpIGNv
bnN0IHsgcmV0dXJuICZtX2NoaWxkcmVuOyB9CiAgICAgdmlydHVhbCB2b2lkIGFkZENoaWxkKFBh
c3NSZWZQdHI8V2lkZ2V0Pik7CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZUNoaWxkKFdpZGdldCop
OwotICAgIAorCiAgICAgLy8gSWYgdGhlIHNjcm9sbCB2aWV3IGRvZXMgbm90IHVzZSBhIG5hdGl2
ZSB3aWRnZXQsIHRoZW4gaXQgd2lsbCBoYXZlIGNyb3NzLXBsYXRmb3JtIFNjcm9sbGJhcnMuIFRo
ZXNlIGZ1bmN0aW9ucwogICAgIC8vIGNhbiBiZSB1c2VkIHRvIG9idGFpbiB0aG9zZSBzY3JvbGxi
YXJzLgotICAgIHZpcnR1YWwgU2Nyb2xsYmFyKiBob3Jpem9udGFsU2Nyb2xsYmFyKCkgY29uc3Qg
eyByZXR1cm4gbV9ob3Jpem9udGFsU2Nyb2xsYmFyLmdldCgpOyB9Ci0gICAgdmlydHVhbCBTY3Jv
bGxiYXIqIHZlcnRpY2FsU2Nyb2xsYmFyKCkgY29uc3QgeyByZXR1cm4gbV92ZXJ0aWNhbFNjcm9s
bGJhci5nZXQoKTsgfQorICAgIHZpcnR1YWwgU2Nyb2xsYmFyKiBob3Jpem9udGFsU2Nyb2xsYmFy
KCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV9ob3Jpem9udGFsU2Nyb2xsYmFyLmdldCgpOyB9
CisgICAgdmlydHVhbCBTY3JvbGxiYXIqIHZlcnRpY2FsU2Nyb2xsYmFyKCkgY29uc3QgT1ZFUlJJ
REUgeyByZXR1cm4gbV92ZXJ0aWNhbFNjcm9sbGJhci5nZXQoKTsgfQogICAgIGJvb2wgaXNTY3Jv
bGxWaWV3U2Nyb2xsYmFyKGNvbnN0IFdpZGdldCogY2hpbGQpIGNvbnN0IHsgcmV0dXJuIGhvcml6
b250YWxTY3JvbGxiYXIoKSA9PSBjaGlsZCB8fCB2ZXJ0aWNhbFNjcm9sbGJhcigpID09IGNoaWxk
OyB9CiAKICAgICB2b2lkIHBvc2l0aW9uU2Nyb2xsYmFyTGF5ZXJzKCk7CkBAIC0xMDcsNyArMTA4
LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29sIGF2b2lkU2Nyb2xsYmFyQ3JlYXRpb24o
KSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCi0gICAgdmlydHVhbCB2b2lkIHNldFNjcm9sbGJh
ck92ZXJsYXlTdHlsZShTY3JvbGxiYXJPdmVybGF5U3R5bGUpOworICAgIHZpcnR1YWwgdm9pZCBz
ZXRTY3JvbGxiYXJPdmVybGF5U3R5bGUoU2Nyb2xsYmFyT3ZlcmxheVN0eWxlKSBPVkVSUklERTsK
IAogICAgIC8vIEJ5IGRlZmF1bHQgeW91IG9ubHkgcmVjZWl2ZSBwYWludCBldmVudHMgZm9yIHRo
ZSBhcmVhIHRoYXQgaXMgdmlzaWJsZS4gSW4gdGhlIGNhc2Ugb2YgdXNpbmcgYQogICAgIC8vIHRp
bGVkIGJhY2tpbmcgc3RvcmUsIHRoaXMgZnVuY3Rpb24gY2FuIGJlIHNldCwgc28gdGhhdCB0aGUg
dmlldyBwYWludHMgdGhlIGVudGlyZSBjb250ZW50cy4KQEAgLTE0MywxMiArMTQ0LDEyIEBAIHB1
YmxpYzoKICAgICAvLyBJbiB0aGUgc2l0dWF0aW9uIHRoZSBjbGllbnQgaXMgcmVzcG9uc2libGUg
Zm9yIHRoZSBzY3JvbGxpbmcgKGllLiB3aXRoIGEgdGlsZWQgYmFja2luZyBzdG9yZSkgaXQgaXMg
cG9zc2libGUgdG8gdXNlCiAgICAgLy8gdGhlIHNldEZpeGVkVmlzaWJsZUNvbnRlbnRSZWN0IGlu
c3RlYWQgZm9yIHRoZSBtYWluZnJhbWUsIHRob3VnaCB0aGlzIG11c3QgYmUgdXBkYXRlZCBtYW51
YWxseSwgZS5nIGp1c3QgYmVmb3JlIHJlc3VtaW5nIHRoZSBwYWdlCiAgICAgLy8gd2hpY2ggdXN1
YWxseSB3aWxsIGhhcHBlbiB3aGVuIHBhbm5pbmcsIHBpbmNoaW5nIGFuZCByb3RhdGlvbiBlbmRz
LCBvciB3aGVuIHNjYWxlIG9yIHBvc2l0aW9uIGFyZSBjaGFuZ2VkIG1hbnVhbGx5LgotICAgIHZp
cnR1YWwgSW50UmVjdCB2aXNpYmxlQ29udGVudFJlY3QoYm9vbCBpbmNsdWRlU2Nyb2xsYmFycyA9
IGZhbHNlKSBjb25zdDsKKyAgICB2aXJ0dWFsIEludFJlY3QgdmlzaWJsZUNvbnRlbnRSZWN0KGJv
b2wgaW5jbHVkZVNjcm9sbGJhcnMgPSBmYWxzZSkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVh
bCB2b2lkIHNldEZpeGVkVmlzaWJsZUNvbnRlbnRSZWN0KGNvbnN0IEludFJlY3QmIHZpc2libGVD
b250ZW50UmVjdCkgeyBtX2ZpeGVkVmlzaWJsZUNvbnRlbnRSZWN0ID0gdmlzaWJsZUNvbnRlbnRS
ZWN0OyB9CiAgICAgSW50UmVjdCBmaXhlZFZpc2libGVDb250ZW50UmVjdCgpIGNvbnN0IHsgcmV0
dXJuIG1fZml4ZWRWaXNpYmxlQ29udGVudFJlY3Q7IH0KICAgICBJbnRTaXplIHZpc2libGVTaXpl
KCkgY29uc3QgeyByZXR1cm4gdmlzaWJsZUNvbnRlbnRSZWN0KCkuc2l6ZSgpOyB9Ci0gICAgaW50
IHZpc2libGVXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIHZpc2libGVDb250ZW50UmVjdCgpLndpZHRo
KCk7IH0KLSAgICBpbnQgdmlzaWJsZUhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIHZpc2libGVDb250
ZW50UmVjdCgpLmhlaWdodCgpOyB9CisgICAgdmlydHVhbCBpbnQgdmlzaWJsZVdpZHRoKCkgY29u
c3QgT1ZFUlJJREUgeyByZXR1cm4gdmlzaWJsZUNvbnRlbnRSZWN0KCkud2lkdGgoKTsgfQorICAg
IHZpcnR1YWwgaW50IHZpc2libGVIZWlnaHQoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiB2aXNp
YmxlQ29udGVudFJlY3QoKS5oZWlnaHQoKTsgfQogCiAgICAgLy8gRnVuY3Rpb25zIGZvciBnZXR0
aW5nL3NldHRpbmcgdGhlIHNpemUgd2Via2l0IHNob3VsZCB1c2UgdG8gbGF5b3V0IHRoZSBjb250
ZW50cy4gQnkgZGVmYXVsdCB0aGlzIGlzIHRoZSBzYW1lIGFzIHRoZSB2aXNpYmxlCiAgICAgLy8g
Y29udGVudCBzaXplLiBFeHBsaWNpdGx5IHNldHRpbmcgYSBsYXlvdXQgc2l6ZSB2YWx1ZSB3aWxs
IGNhdXNlIHdlYmtpdCB0byBsYXlvdXQgdGhlIGNvbnRlbnRzIHVzaW5nIHRoaXMgc2l6ZSBpbnN0
ZWFkLgpAQCAtMTYyLDIyICsxNjMsMjIgQEAgcHVibGljOgogICAgIAogICAgIC8vIEZ1bmN0aW9u
cyBmb3IgZ2V0dGluZy9zZXR0aW5nIHRoZSBzaXplIG9mIHRoZSBkb2N1bWVudCBjb250YWluZWQg
aW5zaWRlIHRoZSBTY3JvbGxWaWV3IChhcyBhbiBJbnRTaXplIG9yIGFzIGluZGl2aWR1YWwgd2lk
dGggYW5kIGhlaWdodAogICAgIC8vIHZhbHVlcykuCi0gICAgSW50U2l6ZSBjb250ZW50c1NpemUo
KSBjb25zdDsgLy8gQWx3YXlzIGF0IGxlYXN0IGFzIGJpZyBhcyB0aGUgdmlzaWJsZVdpZHRoKCkv
dmlzaWJsZUhlaWdodCgpLgorICAgIHZpcnR1YWwgSW50U2l6ZSBjb250ZW50c1NpemUoKSBjb25z
dCBPVkVSUklERTsgLy8gQWx3YXlzIGF0IGxlYXN0IGFzIGJpZyBhcyB0aGUgdmlzaWJsZVdpZHRo
KCkvdmlzaWJsZUhlaWdodCgpLgogICAgIGludCBjb250ZW50c1dpZHRoKCkgY29uc3QgeyByZXR1
cm4gY29udGVudHNTaXplKCkud2lkdGgoKTsgfQogICAgIGludCBjb250ZW50c0hlaWdodCgpIGNv
bnN0IHsgcmV0dXJuIGNvbnRlbnRzU2l6ZSgpLmhlaWdodCgpOyB9CiAgICAgdmlydHVhbCB2b2lk
IHNldENvbnRlbnRzU2l6ZShjb25zdCBJbnRTaXplJik7CiAKICAgICAvLyBGdW5jdGlvbnMgZm9y
IHF1ZXJ5aW5nIHRoZSBjdXJyZW50IHNjcm9sbGVkIHBvc2l0aW9uIChib3RoIGFzIGEgcG9pbnQs
IGEgc2l6ZSwgb3IgYXMgaW5kaXZpZHVhbCBYIGFuZCBZIHZhbHVlcykuCi0gICAgSW50UG9pbnQg
c2Nyb2xsUG9zaXRpb24oKSBjb25zdCB7IHJldHVybiB2aXNpYmxlQ29udGVudFJlY3QoKS5sb2Nh
dGlvbigpOyB9CisgICAgdmlydHVhbCBJbnRQb2ludCBzY3JvbGxQb3NpdGlvbigpIGNvbnN0IE9W
RVJSSURFIHsgcmV0dXJuIHZpc2libGVDb250ZW50UmVjdCgpLmxvY2F0aW9uKCk7IH0KICAgICBJ
bnRTaXplIHNjcm9sbE9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIHZpc2libGVDb250ZW50UmVjdCgp
LmxvY2F0aW9uKCkgLSBJbnRQb2ludCgpOyB9IC8vIEdldHMgdGhlIHNjcm9sbGVkIHBvc2l0aW9u
IGFzIGFuIEludFNpemUuIENvbnZlbmllbnQgZm9yIGFkZGluZyB0byBvdGhlciBzaXplcy4KLSAg
ICBJbnRQb2ludCBtYXhpbXVtU2Nyb2xsUG9zaXRpb24oKSBjb25zdDsgLy8gVGhlIG1heGltdW0g
cG9zaXRpb24gd2UgY2FuIGJlIHNjcm9sbGVkIHRvLgotICAgIEludFBvaW50IG1pbmltdW1TY3Jv
bGxQb3NpdGlvbigpIGNvbnN0OyAvLyBUaGUgbWluaW11bSBwb3NpdGlvbiB3ZSBjYW4gYmUgc2Ny
b2xsZWQgdG8uCisgICAgdmlydHVhbCBJbnRQb2ludCBtYXhpbXVtU2Nyb2xsUG9zaXRpb24oKSBj
b25zdCBPVkVSUklERTsgLy8gVGhlIG1heGltdW0gcG9zaXRpb24gd2UgY2FuIGJlIHNjcm9sbGVk
IHRvLgorICAgIHZpcnR1YWwgSW50UG9pbnQgbWluaW11bVNjcm9sbFBvc2l0aW9uKCkgY29uc3Qg
T1ZFUlJJREU7IC8vIFRoZSBtaW5pbXVtIHBvc2l0aW9uIHdlIGNhbiBiZSBzY3JvbGxlZCB0by4K
ICAgICAvLyBBZGp1c3QgdGhlIHBhc3NlZCBpbiBzY3JvbGwgcG9zaXRpb24gdG8ga2VlcCBpdCBi
ZXR3ZWVuIHRoZSBtaW5pbXVtIGFuZCBtYXhpbXVtIHBvc2l0aW9ucy4KICAgICBJbnRQb2ludCBh
ZGp1c3RTY3JvbGxQb3NpdGlvbldpdGhpblJhbmdlKGNvbnN0IEludFBvaW50JikgY29uc3Q7IAog
ICAgIGludCBzY3JvbGxYKCkgY29uc3QgeyByZXR1cm4gc2Nyb2xsUG9zaXRpb24oKS54KCk7IH0K
ICAgICBpbnQgc2Nyb2xsWSgpIGNvbnN0IHsgcmV0dXJuIHNjcm9sbFBvc2l0aW9uKCkueSgpOyB9
CiAKLSAgICBJbnRTaXplIG92ZXJoYW5nQW1vdW50KCkgY29uc3Q7CisgICAgdmlydHVhbCBJbnRT
aXplIG92ZXJoYW5nQW1vdW50KCkgY29uc3QgT1ZFUlJJREU7CiAKICAgICB2b2lkIGNhY2hlQ3Vy
cmVudFNjcm9sbFBvc2l0aW9uKCkgeyBtX2NhY2hlZFNjcm9sbFBvc2l0aW9uID0gc2Nyb2xsUG9z
aXRpb24oKTsgfQogICAgIEludFBvaW50IGNhY2hlZFNjcm9sbFBvc2l0aW9uKCkgY29uc3QgeyBy
ZXR1cm4gbV9jYWNoZWRTY3JvbGxQb3NpdGlvbjsgfQpAQCAtMjc3LDEwICsyNzgsMTAgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgdm9pZCBwYWludFNjcm9sbENvcm5lcihHcmFwaGljc0NvbnRleHQq
LCBjb25zdCBJbnRSZWN0JiBjb3JuZXJSZWN0KTsKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRTY3Jv
bGxiYXIoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyKiwgY29uc3QgSW50UmVjdCYpOwogCi0g
ICAgdmlydHVhbCBJbnRSZWN0IGNvbnZlcnRGcm9tU2Nyb2xsYmFyVG9Db250YWluaW5nVmlldyhj
b25zdCBTY3JvbGxiYXIqLCBjb25zdCBJbnRSZWN0JikgY29uc3Q7Ci0gICAgdmlydHVhbCBJbnRS
ZWN0IGNvbnZlcnRGcm9tQ29udGFpbmluZ1ZpZXdUb1Njcm9sbGJhcihjb25zdCBTY3JvbGxiYXIq
LCBjb25zdCBJbnRSZWN0JikgY29uc3Q7Ci0gICAgdmlydHVhbCBJbnRQb2ludCBjb252ZXJ0RnJv
bVNjcm9sbGJhclRvQ29udGFpbmluZ1ZpZXcoY29uc3QgU2Nyb2xsYmFyKiwgY29uc3QgSW50UG9p
bnQmKSBjb25zdDsKLSAgICB2aXJ0dWFsIEludFBvaW50IGNvbnZlcnRGcm9tQ29udGFpbmluZ1Zp
ZXdUb1Njcm9sbGJhcihjb25zdCBTY3JvbGxiYXIqLCBjb25zdCBJbnRQb2ludCYpIGNvbnN0Owor
ICAgIHZpcnR1YWwgSW50UmVjdCBjb252ZXJ0RnJvbVNjcm9sbGJhclRvQ29udGFpbmluZ1ZpZXco
Y29uc3QgU2Nyb2xsYmFyKiwgY29uc3QgSW50UmVjdCYpIGNvbnN0IE9WRVJSSURFOworICAgIHZp
cnR1YWwgSW50UmVjdCBjb252ZXJ0RnJvbUNvbnRhaW5pbmdWaWV3VG9TY3JvbGxiYXIoY29uc3Qg
U2Nyb2xsYmFyKiwgY29uc3QgSW50UmVjdCYpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwg
SW50UG9pbnQgY29udmVydEZyb21TY3JvbGxiYXJUb0NvbnRhaW5pbmdWaWV3KGNvbnN0IFNjcm9s
bGJhciosIGNvbnN0IEludFBvaW50JikgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBJbnRQ
b2ludCBjb252ZXJ0RnJvbUNvbnRhaW5pbmdWaWV3VG9TY3JvbGxiYXIoY29uc3QgU2Nyb2xsYmFy
KiwgY29uc3QgSW50UG9pbnQmKSBjb25zdCBPVkVSUklERTsKIAogICAgIGJvb2wgY29udGFpbnNT
Y3JvbGxhYmxlQXJlYVdpdGhPdmVybGF5U2Nyb2xsYmFycygpIGNvbnN0IHsgcmV0dXJuIG1fY29u
dGFpbnNTY3JvbGxhYmxlQXJlYVdpdGhPdmVybGF5U2Nyb2xsYmFyczsgfQogICAgIHZvaWQgc2V0
Q29udGFpbnNTY3JvbGxhYmxlQXJlYVdpdGhPdmVybGF5U2Nyb2xsYmFycyhib29sIGNvbnRhaW5z
KSB7IG1fY29udGFpbnNTY3JvbGxhYmxlQXJlYVdpdGhPdmVybGF5U2Nyb2xsYmFycyA9IGNvbnRh
aW5zOyB9CkBAIC0zMDIsNyArMzAzLDcgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgc2V0SGFzVmVy
dGljYWxTY3JvbGxiYXIoYm9vbCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlU2Nyb2xsQ29y
bmVyKCk7Ci0gICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGVTY3JvbGxDb3JuZXJSZWN0KGNvbnN0
IEludFJlY3QmKTsKKyAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZVNjcm9sbENvcm5lclJlY3Qo
Y29uc3QgSW50UmVjdCYpIE9WRVJSSURFOwogCiAgICAgLy8gU2Nyb2xsIHRoZSBjb250ZW50IGJ5
IGJsaXR0aW5nIHRoZSBwaXhlbHMuCiAgICAgdmlydHVhbCBib29sIHNjcm9sbENvbnRlbnRzRmFz
dFBhdGgoY29uc3QgSW50U2l6ZSYgc2Nyb2xsRGVsdGEsIGNvbnN0IEludFJlY3QmIHJlY3RUb1Nj
cm9sbCwgY29uc3QgSW50UmVjdCYgY2xpcFJlY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2Nyb2xsYWJsZUFyZWEuY3BwCmluZGV4IDEwM2UwMzg5OTZiYTIzNGUyMDM1ODYzNTUxZWMxZGZj
MWMxMzQ5ZmMuLmI0ZTdlNTU5MTNkMDdlMDQ5ZjYwMDgzZDU0MGQxMDE0MmY2MTVjYjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5jcHAKQEAgLTM3Myw0ICszNzMs
MzkgQEAgdm9pZCBTY3JvbGxhYmxlQXJlYTo6c2VydmljZVNjcm9sbEFuaW1hdGlvbnMoKQogICAg
ICAgICBzY3JvbGxBbmltYXRvci0+c2VydmljZVNjcm9sbEFuaW1hdGlvbnMoKTsKIH0KIAorSW50
UG9pbnQgU2Nyb2xsYWJsZUFyZWE6OnNjcm9sbFBvc2l0aW9uKCkgY29uc3QKK3sKKyAgICBpbnQg
eCA9IGhvcml6b250YWxTY3JvbGxiYXIoKSA/IGhvcml6b250YWxTY3JvbGxiYXIoKS0+dmFsdWUo
KSA6IDA7CisgICAgaW50IHkgPSB2ZXJ0aWNhbFNjcm9sbGJhcigpID8gdmVydGljYWxTY3JvbGxi
YXIoKS0+dmFsdWUoKSA6IDA7CisgICAgcmV0dXJuIEludFBvaW50KHgsIHkpOworfQorCitJbnRQ
b2ludCBTY3JvbGxhYmxlQXJlYTo6bWluaW11bVNjcm9sbFBvc2l0aW9uKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gSW50UG9pbnQoKTsKK30KKworSW50UG9pbnQgU2Nyb2xsYWJsZUFyZWE6Om1heGlt
dW1TY3JvbGxQb3NpdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIEludFBvaW50KGNvbnRlbnRz
U2l6ZSgpLndpZHRoKCkgLSB2aXNpYmxlV2lkdGgoKSwgY29udGVudHNTaXplKCkuaGVpZ2h0KCkg
LSB2aXNpYmxlSGVpZ2h0KCkpOworfQorCitJbnRSZWN0IFNjcm9sbGFibGVBcmVhOjp2aXNpYmxl
Q29udGVudFJlY3QoYm9vbCBpbmNsdWRlU2Nyb2xsYmFycykgY29uc3QKK3sKKyAgICBpbnQgdmVy
dGljYWxTY3JvbGxiYXJXaWR0aCA9IDA7CisgICAgaW50IGhvcml6b250YWxTY3JvbGxiYXJIZWln
aHQgPSAwOworCisgICAgaWYgKGluY2x1ZGVTY3JvbGxiYXJzKSB7CisgICAgICAgIGlmIChTY3Jv
bGxiYXIqIHZlcnRpY2FsQmFyID0gdmVydGljYWxTY3JvbGxiYXIoKSkKKyAgICAgICAgICAgIHZl
cnRpY2FsU2Nyb2xsYmFyV2lkdGggPSAhdmVydGljYWxCYXItPmlzT3ZlcmxheVNjcm9sbGJhcigp
ID8gdmVydGljYWxCYXItPndpZHRoKCkgOiAwOworICAgICAgICBpZiAoU2Nyb2xsYmFyKiBob3Jp
em9udGFsQmFyID0gaG9yaXpvbnRhbFNjcm9sbGJhcigpKQorICAgICAgICAgICAgaG9yaXpvbnRh
bFNjcm9sbGJhckhlaWdodCA9ICFob3Jpem9udGFsQmFyLT5pc092ZXJsYXlTY3JvbGxiYXIoKSA/
IGhvcml6b250YWxCYXItPmhlaWdodCgpIDogMDsKKyAgICB9CisKKyAgICByZXR1cm4gSW50UmVj
dChzY3JvbGxQb3NpdGlvbigpLngoKSwKKyAgICAgICAgICAgICAgICAgICBzY3JvbGxQb3NpdGlv
bigpLnkoKSwKKyAgICAgICAgICAgICAgICAgICBzdGQ6Om1heCgwLCB2aXNpYmxlV2lkdGgoKSAr
IHZlcnRpY2FsU2Nyb2xsYmFyV2lkdGgpLAorICAgICAgICAgICAgICAgICAgIHN0ZDo6bWF4KDAs
IHZpc2libGVIZWlnaHQoKSArIGhvcml6b250YWxTY3JvbGxiYXJIZWlnaHQpKTsKK30KKwogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2Nyb2xsYWJsZUFyZWEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVh
LmgKaW5kZXggNWEyNzhhOWI1YjljN2MxODUxYTRjNTMzYzYwYjU0NTE1M2ZjZWQzYS4uNzIxZWMz
MmVjOGIzOWJhMGUzMWYwYmI1MDlkZTM2OWY1YzJlZmUxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TY3JvbGxhYmxlQXJlYS5oCkBAIC0xMzMsMjcgKzEzMywyNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCBTY3JvbGxiYXIqIGhvcml6b250YWxTY3JvbGxiYXIoKSBjb25zdCB7IHJldHVybiAw
OyB9CiAgICAgdmlydHVhbCBTY3JvbGxiYXIqIHZlcnRpY2FsU2Nyb2xsYmFyKCkgY29uc3QgeyBy
ZXR1cm4gMDsgfQogCi0gICAgdmlydHVhbCBJbnRQb2ludCBzY3JvbGxQb3NpdGlvbigpIGNvbnN0
IHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiBJbnRQb2ludCgpOyB9Ci0gICAgdmlydHVh
bCBJbnRQb2ludCBtaW5pbXVtU2Nyb2xsUG9zaXRpb24oKSBjb25zdCB7IEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOyByZXR1cm4gSW50UG9pbnQoKTsgfQotICAgIHZpcnR1YWwgSW50UG9pbnQgbWF4aW11
bVNjcm9sbFBvc2l0aW9uKCkgY29uc3QgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIElu
dFBvaW50KCk7IH0KLSAgICB2aXJ0dWFsIEludFJlY3QgdmlzaWJsZUNvbnRlbnRSZWN0KGJvb2wg
LyppbmNsdWRlU2Nyb2xsYmFycyovID0gZmFsc2UpIGNvbnN0IHsgQVNTRVJUX05PVF9SRUFDSEVE
KCk7IHJldHVybiBJbnRSZWN0KCk7IH0KLSAgICB2aXJ0dWFsIGludCB2aXNpYmxlSGVpZ2h0KCkg
Y29uc3QgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIDA7IH0KLSAgICB2aXJ0dWFsIGlu
dCB2aXNpYmxlV2lkdGgoKSBjb25zdCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gMDsg
fQotICAgIHZpcnR1YWwgSW50U2l6ZSBjb250ZW50c1NpemUoKSBjb25zdCB7IEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOyByZXR1cm4gSW50U2l6ZSgpOyB9Ci0gICAgdmlydHVhbCBJbnRTaXplIG92ZXJo
YW5nQW1vdW50KCkgY29uc3QgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIEludFNpemUo
KTsgfQorICAgIHZpcnR1YWwgSW50UG9pbnQgc2Nyb2xsUG9zaXRpb24oKSBjb25zdDsKKyAgICB2
aXJ0dWFsIEludFBvaW50IG1pbmltdW1TY3JvbGxQb3NpdGlvbigpIGNvbnN0OworICAgIHZpcnR1
YWwgSW50UG9pbnQgbWF4aW11bVNjcm9sbFBvc2l0aW9uKCkgY29uc3Q7CisgICAgdmlydHVhbCBJ
bnRSZWN0IHZpc2libGVDb250ZW50UmVjdChib29sIC8qaW5jbHVkZVNjcm9sbGJhcnMqLyA9IGZh
bHNlKSBjb25zdDsKKyAgICB2aXJ0dWFsIGludCB2aXNpYmxlSGVpZ2h0KCkgY29uc3QgPSAwOwor
ICAgIHZpcnR1YWwgaW50IHZpc2libGVXaWR0aCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIElu
dFNpemUgY29udGVudHNTaXplKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgSW50U2l6ZSBvdmVy
aGFuZ0Ftb3VudCgpIGNvbnN0IHsgcmV0dXJuIEludFNpemUoKTsgfQogICAgIHZpcnR1YWwgSW50
UG9pbnQgY3VycmVudE1vdXNlUG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBJbnRQb2ludCgpOyB9
CiAKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkU3VzcGVuZFNjcm9sbEFuaW1hdGlvbnMoKSBjb25z
dCB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCB2b2lkIHNjcm9sbGJhclN0eWxlQ2hhbmdl
ZChpbnQgLypuZXdTdHlsZSovLCBib29sIC8qZm9yY2VVcGRhdGUqLykgeyB9CiAgICAgdmlydHVh
bCB2b2lkIHNldFZpc2libGVTY3JvbGxlclRodW1iUmVjdChjb25zdCBJbnRSZWN0JikgeyB9CiAK
LSAgICB2aXJ0dWFsIGJvb2wgaXNPbkFjdGl2ZVBhZ2UoKSBjb25zdCB7IEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc09uQWN0aXZlUGFnZSgp
IGNvbnN0ID0gMDsKICAgICAKICAgICAvLyBOb3RlIHRoYXQgdGhpcyBvbmx5IHJldHVybnMgc2Ny
b2xsYWJsZSBhcmVhcyB0aGF0IGNhbiBhY3R1YWxseSBiZSBzY3JvbGxlZC4KICAgICB2aXJ0dWFs
IFNjcm9sbGFibGVBcmVhKiBlbmNsb3NpbmdTY3JvbGxhYmxlQXJlYSgpIGNvbnN0ID0gMDsKIAog
ICAgIC8vIFJldHVybnMgdGhlIGJvdW5kaW5nIGJveCBvZiB0aGlzIHNjcm9sbGFibGUgYXJlYSwg
aW4gdGhlIGNvb3JkaW5hdGUgc3lzdGVtIG9mIHRoZSBlbmNsb3Npbmcgc2Nyb2xsIHZpZXcuCi0g
ICAgdmlydHVhbCBJbnRSZWN0IHNjcm9sbGFibGVBcmVhQm91bmRpbmdCb3goKSBjb25zdCB7IEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gSW50UmVjdCgpOyB9CisgICAgdmlydHVhbCBJbnRS
ZWN0IHNjcm9sbGFibGVBcmVhQm91bmRpbmdCb3goKSBjb25zdCA9IDA7CiAKICAgICB2aXJ0dWFs
IGJvb2wgc2hvdWxkUnViYmVyQmFuZEluRGlyZWN0aW9uKFNjcm9sbERpcmVjdGlvbikgY29uc3Qg
eyByZXR1cm4gdHJ1ZTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
aHJvbWl1bS9GcmFtZWxlc3NTY3JvbGxWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2Nocm9taXVtL0ZyYW1lbGVzc1Njcm9sbFZpZXcuY3BwCmluZGV4IDczYmVjMGRmODYzZDk0NDE4
OGMwMGI4ODVjNzNkODFhNTBlNTk3ZDEuLmM0MTA2NzdjYmRkYjI2Njk4MTQ0MGJkNWQ3Y2M4ZTgz
YWNkZWRkZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0Zy
YW1lbGVzc1Njcm9sbFZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9t
aXVtL0ZyYW1lbGVzc1Njcm9sbFZpZXcuY3BwCkBAIC02Myw2ICs2MywxNiBAQCBTY3JvbGxhYmxl
QXJlYSogRnJhbWVsZXNzU2Nyb2xsVmlldzo6ZW5jbG9zaW5nU2Nyb2xsYWJsZUFyZWEoKSBjb25z
dAogICAgIHJldHVybiAwOwogfQogCitib29sIEZyYW1lbGVzc1Njcm9sbFZpZXc6OmlzT25BY3Rp
dmVQYWdlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gaXNBY3RpdmUoKTsKK30KKworSW50UmVjdCBG
cmFtZWxlc3NTY3JvbGxWaWV3OjpzY3JvbGxhYmxlQXJlYUJvdW5kaW5nQm94KCkgY29uc3QKK3sK
KyAgICByZXR1cm4gd2luZG93Q2xpcFJlY3QoZmFsc2UpOworfQorCiB2b2lkIEZyYW1lbGVzc1Nj
cm9sbFZpZXc6OmludmFsaWRhdGVSZWN0KGNvbnN0IEludFJlY3QmIHJlY3QpCiB7CiAgICAgaWYg
KEhvc3RXaW5kb3cqIGggPSBob3N0V2luZG93KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jaHJvbWl1bS9GcmFtZWxlc3NTY3JvbGxWaWV3LmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jaHJvbWl1bS9GcmFtZWxlc3NTY3JvbGxWaWV3LmgKaW5kZXggMzQ5ODQ3NWRj
ZGU1OTA5ODZkMmQzZWIzYmRlNWU0MDUwYjI1OWRlMy4uYWMxZWVjZDFjM2I0ODJhZTgxYjZlN2E2
NTMxNjQ0MWZmZmVjMDIyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hy
b21pdW0vRnJhbWVsZXNzU2Nyb2xsVmlldy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2Nocm9taXVtL0ZyYW1lbGVzc1Njcm9sbFZpZXcuaApAQCAtNzQsOSArNzQsMTEgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogI2VuZGlmCiAKICAgICAgICAgLy8gU2Nyb2xsYWJsZUFyZWEgcHVibGlj
IG1ldGhvZHM6Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlU2Nyb2xsYmFyUmVjdChT
Y3JvbGxiYXIqLCBjb25zdCBJbnRSZWN0Jik7Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBpc0FjdGl2
ZSgpIGNvbnN0OwotICAgICAgICB2aXJ0dWFsIFNjcm9sbGFibGVBcmVhKiBlbmNsb3NpbmdTY3Jv
bGxhYmxlQXJlYSgpIGNvbnN0OworICAgICAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZVNjcm9s
bGJhclJlY3QoU2Nyb2xsYmFyKiwgY29uc3QgSW50UmVjdCYpIE9WRVJSSURFOworICAgICAgICB2
aXJ0dWFsIGJvb2wgaXNBY3RpdmUoKSBjb25zdCBPVkVSUklERTsKKyAgICAgICAgdmlydHVhbCBT
Y3JvbGxhYmxlQXJlYSogZW5jbG9zaW5nU2Nyb2xsYWJsZUFyZWEoKSBjb25zdCBPVkVSUklERTsK
KyAgICAgICAgdmlydHVhbCBib29sIGlzT25BY3RpdmVQYWdlKCkgY29uc3QgT1ZFUlJJREU7Cisg
ICAgICAgIHZpcnR1YWwgSW50UmVjdCBzY3JvbGxhYmxlQXJlYUJvdW5kaW5nQm94KCkgY29uc3Qg
T1ZFUlJJREU7CiAKICAgICAgICAgLy8gV2lkZ2V0IHB1YmxpYyBtZXRob2RzOgogICAgICAgICB2
aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZVJlY3QoY29uc3QgSW50UmVjdCYpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1BvcHVwTWVudVdpbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS93aW4vUG9wdXBNZW51V2luLmNwcAppbmRleCBlYjVjNWIxYTA5MjBmZDIx
MzNmNzQ2MzJhZjZjOWUwMTJiOTBhZWVkLi5hODY4NDdkZGZmNjJjNWFhM2YwMDUwYWMxOTljOWZi
MWU5NGFjMDBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUG9wdXBN
ZW51V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUG9wdXBNZW51V2lu
LmNwcApAQCAtNzI2LDYgKzcyNiwzMSBAQCB2b2lkIFBvcHVwTWVudVdpbjo6aW52YWxpZGF0ZVNj
cm9sbGJhclJlY3QoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmCiAgICAgOjpJ
bnZhbGlkYXRlUmVjdChtX3BvcHVwLCAmciwgZmFsc2UpOwogfQogCitpbnQgUG9wdXBNZW51V2lu
Ojp2aXNpYmxlSGVpZ2h0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9zY3JvbGxiYXIgPyBtX3Nj
cm9sbGJhci0+dmlzaWJsZVNpemUoKSA6IG1fd2luZG93UmVjdC5oZWlnaHQoKTsKK30KKworaW50
IFBvcHVwTWVudVdpbjo6dmlzaWJsZVdpZHRoKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV93aW5k
b3dSZWN0LndpZHRoKCk7Cit9CisKK0ludFNpemUgUG9wdXBNZW51V2luOjpjb250ZW50c1NpemUo
KSBjb25zdAoreworICAgIHJldHVybiBtX3dpbmRvd1JlY3Quc2l6ZSgpOworfQorCitib29sIFBv
cHVwTWVudVdpbjo6aXNPbkFjdGl2ZVBhZ2UoKSBjb25zdAoreworICAgIHJldHVybiBtX3Nob3dQ
b3B1cDsKK30KKworSW50UmVjdCBQb3B1cE1lbnVXaW46OnNjcm9sbGFibGVBcmVhQm91bmRpbmdC
b3goKSBjb25zdAoreworICAgIHJldHVybiBtX3dpbmRvd1JlY3Q7Cit9CisKIHZvaWQgUG9wdXBN
ZW51V2luOjpyZWdpc3RlckNsYXNzKCkKIHsKICAgICBzdGF0aWMgYm9vbCBoYXZlUmVnaXN0ZXJl
ZFdpbmRvd0NsYXNzID0gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS93aW4vUG9wdXBNZW51V2luLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUG9wdXBN
ZW51V2luLmgKaW5kZXggM2FlZTUxY2I5YzY0ZmY2ZDM0NWY1ODIxMGIxZmYwYjgwOGQ1NmViYi4u
OWI2ZmZhN2QzYmM4M2Q4ZjNiMzExYmIwODdmOGRjOWEyNWQ5ZDA4NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1BvcHVwTWVudVdpbi5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3dpbi9Qb3B1cE1lbnVXaW4uaApAQCAtOTEsMTYgKzkxLDIxIEBAIHByaXZh
dGU6CiAgICAgdm9pZCBzZXRTY3JvbGxiYXJDYXB0dXJpbmdNb3VzZShib29sIGIpIHsgbV9zY3Jv
bGxiYXJDYXB0dXJpbmdNb3VzZSA9IGI7IH0KIAogICAgIC8vIFNjcm9sbGFibGVBcmVhCi0gICAg
dmlydHVhbCBpbnQgc2Nyb2xsU2l6ZShTY3JvbGxiYXJPcmllbnRhdGlvbiBvcmllbnRhdGlvbikg
Y29uc3Q7Ci0gICAgdmlydHVhbCBpbnQgc2Nyb2xsUG9zaXRpb24oU2Nyb2xsYmFyKikgY29uc3Q7
Ci0gICAgdmlydHVhbCB2b2lkIHNldFNjcm9sbE9mZnNldChjb25zdCBJbnRQb2ludCYpOwotICAg
IHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlU2Nyb2xsYmFyUmVjdChTY3JvbGxiYXIqLCBjb25zdCBJ
bnRSZWN0Jik7Ci0gICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGVTY3JvbGxDb3JuZXJSZWN0KGNv
bnN0IFdlYkNvcmU6OkludFJlY3QmKSB7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNBY3RpdmUoKSBj
b25zdCB7IHJldHVybiB0cnVlOyB9Ci0gICAgU2Nyb2xsYWJsZUFyZWEqIGVuY2xvc2luZ1Njcm9s
bGFibGVBcmVhKCkgY29uc3QgeyByZXR1cm4gMDsgfQotICAgIHZpcnR1YWwgYm9vbCBpc1Njcm9s
bENvcm5lclZpc2libGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgV2Vi
Q29yZTo6SW50UmVjdCBzY3JvbGxDb3JuZXJSZWN0KCkgY29uc3QgeyByZXR1cm4gV2ViQ29yZTo6
SW50UmVjdCgpOyB9Ci0gICAgdmlydHVhbCBTY3JvbGxiYXIqIHZlcnRpY2FsU2Nyb2xsYmFyKCkg
Y29uc3QgeyByZXR1cm4gbV9zY3JvbGxiYXIuZ2V0KCk7IH0KKyAgICB2aXJ0dWFsIGludCBzY3Jv
bGxTaXplKFNjcm9sbGJhck9yaWVudGF0aW9uKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFs
IGludCBzY3JvbGxQb3NpdGlvbihTY3JvbGxiYXIqKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIHZvaWQgc2V0U2Nyb2xsT2Zmc2V0KGNvbnN0IEludFBvaW50JikgT1ZFUlJJREU7CisgICAg
dmlydHVhbCB2b2lkIGludmFsaWRhdGVTY3JvbGxiYXJSZWN0KFNjcm9sbGJhciosIGNvbnN0IElu
dFJlY3QmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZVNjcm9sbENvcm5l
clJlY3QoY29uc3QgSW50UmVjdCYpIE9WRVJSSURFIHsgfQorICAgIHZpcnR1YWwgYm9vbCBpc0Fj
dGl2ZSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIHRydWU7IH0KKyAgICBTY3JvbGxhYmxlQXJl
YSogZW5jbG9zaW5nU2Nyb2xsYWJsZUFyZWEoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiAwOyB9
CisgICAgdmlydHVhbCBib29sIGlzU2Nyb2xsQ29ybmVyVmlzaWJsZSgpIGNvbnN0IE9WRVJSSURF
IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBJbnRSZWN0IHNjcm9sbENvcm5lclJlY3Qo
KSBjb25zdCBPVkVSUklERSB7IHJldHVybiBJbnRSZWN0KCk7IH0KKyAgICB2aXJ0dWFsIFNjcm9s
bGJhciogdmVydGljYWxTY3JvbGxiYXIoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBtX3Njcm9s
bGJhci5nZXQoKTsgfQorICAgIHZpcnR1YWwgaW50IHZpc2libGVIZWlnaHQoKSBjb25zdCBPVkVS
UklERTsKKyAgICB2aXJ0dWFsIGludCB2aXNpYmxlV2lkdGgoKSBjb25zdCBPVkVSUklERTsKKyAg
ICB2aXJ0dWFsIEludFNpemUgY29udGVudHNTaXplKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmly
dHVhbCBib29sIGlzT25BY3RpdmVQYWdlKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBJ
bnRSZWN0IHNjcm9sbGFibGVBcmVhQm91bmRpbmdCb3goKSBjb25zdCBPVkVSUklERTsKIAogICAg
IC8vIE5PVEU6IFRoaXMgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGJ5IHRoZSBvdmVycmlkZW4gc2V0
U2Nyb2xsT2Zmc2V0IGZyb20gU2Nyb2xsYWJsZUFyZWEuCiAgICAgdm9pZCBzY3JvbGxUbyhpbnQg
b2Zmc2V0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0
Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcAppbmRl
eCA5NDRlYTVmMDgzMjlkNTgxODEyZDkwOTRmZjY1NDM0YjljMjc0ZmYwLi42Mzc2YjA5OGJjNWEx
ZWE1YmVhMjhmNGM3NDg1ZDg4MjUwYjgxOWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxpc3RCb3guY3BwCkBAIC02MzIsMTEgKzYzMiw2IEBAIHZvaWQgUmVuZGVyTGlzdEJv
eDo6c2V0U2Nyb2xsT2Zmc2V0KGNvbnN0IEludFBvaW50JiBvZmZzZXQpCiAgICAgc2Nyb2xsVG8o
b2Zmc2V0LnkoKSk7CiB9CiAKLUludFBvaW50IFJlbmRlckxpc3RCb3g6OnNjcm9sbFBvc2l0aW9u
KCkgY29uc3QKLXsKLSAgICByZXR1cm4gSW50UG9pbnQoMCwgbV9pbmRleE9mZnNldCk7Ci19Ci0K
IHZvaWQgUmVuZGVyTGlzdEJveDo6c2Nyb2xsVG8oaW50IG5ld09mZnNldCkKIHsKICAgICBpZiAo
bmV3T2Zmc2V0ID09IG1faW5kZXhPZmZzZXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxpc3RCb3guaAppbmRleCBkOTY4Yzg3MTc1ZDlmYTM1NmMzMjFmODM3ODQ2OWE4M2NlOGQ5OTQ4
Li40OTYxOTEyMDZmNjQ5MTFiMmFmOTJlOWVlYWNiMmI4YTNlZWQ0MzkxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmgKQEAgLTEwMSwyOCArMTAxLDI3IEBAIHByaXZh
dGU6CiAgICAgdmlydHVhbCBib29sIG5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0Jiwg
SGl0VGVzdFJlc3VsdCYsIGNvbnN0IEhpdFRlc3RQb2ludCYgcG9pbnRJbkNvbnRhaW5lciwgY29u
c3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0LCBIaXRUZXN0QWN0aW9uKSBPVkVSUklE
RTsKIAogICAgIC8vIFNjcm9sbGFibGVBcmVhIGludGVyZmFjZS4KLSAgICB2aXJ0dWFsIGludCBz
Y3JvbGxTaXplKFNjcm9sbGJhck9yaWVudGF0aW9uKSBjb25zdDsKLSAgICB2aXJ0dWFsIGludCBz
Y3JvbGxQb3NpdGlvbihTY3JvbGxiYXIqKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0U2Ny
b2xsT2Zmc2V0KGNvbnN0IEludFBvaW50Jik7Ci0gICAgdmlydHVhbCBJbnRQb2ludCBzY3JvbGxQ
b3NpdGlvbigpIGNvbnN0IE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlU2Ny
b2xsYmFyUmVjdChTY3JvbGxiYXIqLCBjb25zdCBJbnRSZWN0Jik7Ci0gICAgdmlydHVhbCBib29s
IGlzQWN0aXZlKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBib29sIGlzU2Nyb2xsQ29ybmVyVmlzaWJs
ZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9IC8vIFdlIGRvbid0IHN1cHBvcnQgcmVzaXplIG9u
IGxpc3QgYm94ZXMgeWV0LiBJZiB3ZSBkaWQgdGhlc2Ugd291bGQgaGF2ZSB0byBjaGFuZ2UuCi0g
ICAgdmlydHVhbCBJbnRSZWN0IHNjcm9sbENvcm5lclJlY3QoKSBjb25zdCB7IHJldHVybiBJbnRS
ZWN0KCk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZVNjcm9sbENvcm5lclJlY3QoY29u
c3QgSW50UmVjdCYpIHsgfQotICAgIHZpcnR1YWwgSW50UmVjdCBjb252ZXJ0RnJvbVNjcm9sbGJh
clRvQ29udGFpbmluZ1ZpZXcoY29uc3QgU2Nyb2xsYmFyKiwgY29uc3QgSW50UmVjdCYpIGNvbnN0
OwotICAgIHZpcnR1YWwgSW50UmVjdCBjb252ZXJ0RnJvbUNvbnRhaW5pbmdWaWV3VG9TY3JvbGxi
YXIoY29uc3QgU2Nyb2xsYmFyKiwgY29uc3QgSW50UmVjdCYpIGNvbnN0OwotICAgIHZpcnR1YWwg
SW50UG9pbnQgY29udmVydEZyb21TY3JvbGxiYXJUb0NvbnRhaW5pbmdWaWV3KGNvbnN0IFNjcm9s
bGJhciosIGNvbnN0IEludFBvaW50JikgY29uc3Q7Ci0gICAgdmlydHVhbCBJbnRQb2ludCBjb252
ZXJ0RnJvbUNvbnRhaW5pbmdWaWV3VG9TY3JvbGxiYXIoY29uc3QgU2Nyb2xsYmFyKiwgY29uc3Qg
SW50UG9pbnQmKSBjb25zdDsKLSAgICB2aXJ0dWFsIFNjcm9sbGJhciogdmVydGljYWxTY3JvbGxi
YXIoKSBjb25zdCB7IHJldHVybiBtX3ZCYXIuZ2V0KCk7IH0KLSAgICB2aXJ0dWFsIEludFNpemUg
Y29udGVudHNTaXplKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBpbnQgdmlzaWJsZUhlaWdodCgpIGNv
bnN0OwotICAgIHZpcnR1YWwgaW50IHZpc2libGVXaWR0aCgpIGNvbnN0OwotICAgIHZpcnR1YWwg
SW50UG9pbnQgY3VycmVudE1vdXNlUG9zaXRpb24oKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wg
c2hvdWxkU3VzcGVuZFNjcm9sbEFuaW1hdGlvbnMoKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wg
aXNPbkFjdGl2ZVBhZ2UoKSBjb25zdDsKLQotICAgIHZpcnR1YWwgU2Nyb2xsYWJsZUFyZWEqIGVu
Y2xvc2luZ1Njcm9sbGFibGVBcmVhKCkgY29uc3Q7CisgICAgdmlydHVhbCBpbnQgc2Nyb2xsU2l6
ZShTY3JvbGxiYXJPcmllbnRhdGlvbikgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBpbnQg
c2Nyb2xsUG9zaXRpb24oU2Nyb2xsYmFyKikgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2
b2lkIHNldFNjcm9sbE9mZnNldChjb25zdCBJbnRQb2ludCYpIE9WRVJSSURFOworICAgIHZpcnR1
YWwgdm9pZCBpbnZhbGlkYXRlU2Nyb2xsYmFyUmVjdChTY3JvbGxiYXIqLCBjb25zdCBJbnRSZWN0
JikgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGlzQWN0aXZlKCkgY29uc3QgT1ZFUlJJREU7
CisgICAgdmlydHVhbCBib29sIGlzU2Nyb2xsQ29ybmVyVmlzaWJsZSgpIGNvbnN0IE9WRVJSSURF
IHsgcmV0dXJuIGZhbHNlOyB9IC8vIFdlIGRvbid0IHN1cHBvcnQgcmVzaXplIG9uIGxpc3QgYm94
ZXMgeWV0LiBJZiB3ZSBkaWQgdGhlc2Ugd291bGQgaGF2ZSB0byBjaGFuZ2UuCisgICAgdmlydHVh
bCBJbnRSZWN0IHNjcm9sbENvcm5lclJlY3QoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBJbnRS
ZWN0KCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZVNjcm9sbENvcm5lclJlY3QoY29u
c3QgSW50UmVjdCYpIE9WRVJSSURFIHsgfQorICAgIHZpcnR1YWwgSW50UmVjdCBjb252ZXJ0RnJv
bVNjcm9sbGJhclRvQ29udGFpbmluZ1ZpZXcoY29uc3QgU2Nyb2xsYmFyKiwgY29uc3QgSW50UmVj
dCYpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgSW50UmVjdCBjb252ZXJ0RnJvbUNvbnRh
aW5pbmdWaWV3VG9TY3JvbGxiYXIoY29uc3QgU2Nyb2xsYmFyKiwgY29uc3QgSW50UmVjdCYpIGNv
bnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgSW50UG9pbnQgY29udmVydEZyb21TY3JvbGxiYXJU
b0NvbnRhaW5pbmdWaWV3KGNvbnN0IFNjcm9sbGJhciosIGNvbnN0IEludFBvaW50JikgY29uc3Qg
T1ZFUlJJREU7CisgICAgdmlydHVhbCBJbnRQb2ludCBjb252ZXJ0RnJvbUNvbnRhaW5pbmdWaWV3
VG9TY3JvbGxiYXIoY29uc3QgU2Nyb2xsYmFyKiwgY29uc3QgSW50UG9pbnQmKSBjb25zdCBPVkVS
UklERTsKKyAgICB2aXJ0dWFsIFNjcm9sbGJhciogdmVydGljYWxTY3JvbGxiYXIoKSBjb25zdCBP
VkVSUklERSB7IHJldHVybiBtX3ZCYXIuZ2V0KCk7IH0KKyAgICB2aXJ0dWFsIEludFNpemUgY29u
dGVudHNTaXplKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBpbnQgdmlzaWJsZUhlaWdo
dCgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgaW50IHZpc2libGVXaWR0aCgpIGNvbnN0
IE9WRVJSSURFOworICAgIHZpcnR1YWwgSW50UG9pbnQgY3VycmVudE1vdXNlUG9zaXRpb24oKSBj
b25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkU3VzcGVuZFNjcm9sbEFuaW1h
dGlvbnMoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNPbkFjdGl2ZVBhZ2Uo
KSBjb25zdCBPVkVSUklERTsKKworICAgIHZpcnR1YWwgU2Nyb2xsYWJsZUFyZWEqIGVuY2xvc2lu
Z1Njcm9sbGFibGVBcmVhKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBJbnRSZWN0IHNj
cm9sbGFibGVBcmVhQm91bmRpbmdCb3goKSBjb25zdCBPVkVSUklERTsKIAogICAgIC8vIE5PVEU6
IFRoaXMgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGJ5IHRoZSBvdmVycmlkZW4gc2V0U2Nyb2xsT2Zm
c2V0IGZyb20gU2Nyb2xsYWJsZUFyZWEuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9TY3JvbGxiYXJHcm91cC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvU2Ny
b2xsYmFyR3JvdXAuaAppbmRleCBhMDQ3OWMyMDYyN2Q3YmYxNDUxNDQ4OTE5MmQ3M2Q1MTY4Mzhk
ZmI1Li4zY2NjZmRmODc1NzcxMjQ2MjU0MjM4YzY2MGJkZGY0N2YzOWZhZWU3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9TY3JvbGxiYXJHcm91cC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1Njcm9sbGJhckdyb3VwLmgKQEAgLTQ5LDMxICs0OSwzMSBA
QCBwdWJsaWM6CiAgICAgdm9pZCBzZXRGcmFtZVJlY3QoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYp
OwogCiAgICAgLy8gV2ViQ29yZTo6U2Nyb2xsYWJsZUFyZWEgbWV0aG9kcwotICAgIHZpcnR1YWwg
aW50IHNjcm9sbFNpemUoV2ViQ29yZTo6U2Nyb2xsYmFyT3JpZW50YXRpb24pIGNvbnN0OwotICAg
IHZpcnR1YWwgaW50IHNjcm9sbFBvc2l0aW9uKFdlYkNvcmU6OlNjcm9sbGJhciopIGNvbnN0Owot
ICAgIHZpcnR1YWwgdm9pZCBzZXRTY3JvbGxPZmZzZXQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQm
KTsKLSAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZVNjcm9sbGJhclJlY3QoV2ViQ29yZTo6U2Ny
b2xsYmFyKiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpOwotICAgIHZpcnR1YWwgdm9pZCBpbnZh
bGlkYXRlU2Nyb2xsQ29ybmVyUmVjdChjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jik7Ci0gICAgdmly
dHVhbCBib29sIGlzQWN0aXZlKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBTY3JvbGxhYmxlQXJlYSog
ZW5jbG9zaW5nU2Nyb2xsYWJsZUFyZWEoKSBjb25zdDsKLSAgICB2aXJ0dWFsIFdlYkNvcmU6Oklu
dFJlY3Qgc2Nyb2xsQ29ybmVyUmVjdCgpIGNvbnN0IHsgcmV0dXJuIFdlYkNvcmU6OkludFJlY3Qo
KTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc1Njcm9sbENvcm5lclZpc2libGUoKSBjb25zdDsKLSAg
ICB2aXJ0dWFsIHZvaWQgZ2V0VGlja21hcmtzKFZlY3RvcjxXZWJDb3JlOjpJbnRSZWN0PiYpIGNv
bnN0OwotICAgIHZpcnR1YWwgV2ViQ29yZTo6SW50UG9pbnQgY29udmVydEZyb21Db250YWluaW5n
Vmlld1RvU2Nyb2xsYmFyKGNvbnN0IFdlYkNvcmU6OlNjcm9sbGJhciosIGNvbnN0IFdlYkNvcmU6
OkludFBvaW50JiBwYXJlbnRQb2ludCkgY29uc3Q7Ci0gICAgdmlydHVhbCBXZWJDb3JlOjpTY3Jv
bGxiYXIqIGhvcml6b250YWxTY3JvbGxiYXIoKSBjb25zdDsKLSAgICB2aXJ0dWFsIFdlYkNvcmU6
OlNjcm9sbGJhciogdmVydGljYWxTY3JvbGxiYXIoKSBjb25zdDsKLSAgICB2aXJ0dWFsIFdlYkNv
cmU6OkludFBvaW50IHNjcm9sbFBvc2l0aW9uKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBXZWJDb3Jl
OjpJbnRQb2ludCBtaW5pbXVtU2Nyb2xsUG9zaXRpb24oKSBjb25zdDsKLSAgICB2aXJ0dWFsIFdl
YkNvcmU6OkludFBvaW50IG1heGltdW1TY3JvbGxQb3NpdGlvbigpIGNvbnN0OwotICAgIHZpcnR1
YWwgaW50IHZpc2libGVIZWlnaHQoKSBjb25zdDsKLSAgICB2aXJ0dWFsIGludCB2aXNpYmxlV2lk
dGgoKSBjb25zdDsKLSAgICB2aXJ0dWFsIFdlYkNvcmU6OkludFNpemUgY29udGVudHNTaXplKCkg
Y29uc3Q7Ci0gICAgdmlydHVhbCBXZWJDb3JlOjpJbnRTaXplIG92ZXJoYW5nQW1vdW50KCkgY29u
c3Q7Ci0gICAgdmlydHVhbCBXZWJDb3JlOjpJbnRQb2ludCBjdXJyZW50TW91c2VQb3NpdGlvbigp
IGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCBzaG91bGRTdXNwZW5kU2Nyb2xsQW5pbWF0aW9ucygp
IGNvbnN0OwotICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxiYXJTdHlsZUNoYW5nZWQoaW50IG5ld1N0
eWxlLCBib29sIGZvcmNlVXBkYXRlKTsKLSAgICB2aXJ0dWFsIGJvb2wgaXNPbkFjdGl2ZVBhZ2Uo
KSBjb25zdDsKLSAgICB2aXJ0dWFsIFdlYkNvcmU6OkludFJlY3Qgc2Nyb2xsYWJsZUFyZWFCb3Vu
ZGluZ0JveCgpIGNvbnN0OworICAgIHZpcnR1YWwgaW50IHNjcm9sbFNpemUoV2ViQ29yZTo6U2Ny
b2xsYmFyT3JpZW50YXRpb24pIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgaW50IHNjcm9s
bFBvc2l0aW9uKFdlYkNvcmU6OlNjcm9sbGJhciopIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1
YWwgdm9pZCBzZXRTY3JvbGxPZmZzZXQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKSBPVkVSUklE
RTsKKyAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZVNjcm9sbGJhclJlY3QoV2ViQ29yZTo6U2Ny
b2xsYmFyKiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpIE9WRVJSSURFOworICAgIHZpcnR1YWwg
dm9pZCBpbnZhbGlkYXRlU2Nyb2xsQ29ybmVyUmVjdChjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jikg
T1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGlzQWN0aXZlKCkgY29uc3QgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCBTY3JvbGxhYmxlQXJlYSogZW5jbG9zaW5nU2Nyb2xsYWJsZUFyZWEoKSBjb25z
dCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OkludFJlY3Qgc2Nyb2xsQ29ybmVyUmVj
dCgpIGNvbnN0IHsgcmV0dXJuIFdlYkNvcmU6OkludFJlY3QoKSBPVkVSUklERTsgfQorICAgIHZp
cnR1YWwgYm9vbCBpc1Njcm9sbENvcm5lclZpc2libGUoKSBjb25zdCBPVkVSUklERTsKKyAgICB2
aXJ0dWFsIHZvaWQgZ2V0VGlja21hcmtzKFZlY3RvcjxXZWJDb3JlOjpJbnRSZWN0PiYpIGNvbnN0
IE9WRVJSSURFOworICAgIHZpcnR1YWwgV2ViQ29yZTo6SW50UG9pbnQgY29udmVydEZyb21Db250
YWluaW5nVmlld1RvU2Nyb2xsYmFyKGNvbnN0IFdlYkNvcmU6OlNjcm9sbGJhciosIGNvbnN0IFdl
YkNvcmU6OkludFBvaW50JiBwYXJlbnRQb2ludCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVh
bCBXZWJDb3JlOjpTY3JvbGxiYXIqIGhvcml6b250YWxTY3JvbGxiYXIoKSBjb25zdCBPVkVSUklE
RTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OlNjcm9sbGJhciogdmVydGljYWxTY3JvbGxiYXIoKSBj
b25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OkludFBvaW50IHNjcm9sbFBvc2l0
aW9uKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBXZWJDb3JlOjpJbnRQb2ludCBtaW5p
bXVtU2Nyb2xsUG9zaXRpb24oKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6
OkludFBvaW50IG1heGltdW1TY3JvbGxQb3NpdGlvbigpIGNvbnN0IE9WRVJSSURFOworICAgIHZp
cnR1YWwgaW50IHZpc2libGVIZWlnaHQoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGlu
dCB2aXNpYmxlV2lkdGgoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6Oklu
dFNpemUgY29udGVudHNTaXplKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBXZWJDb3Jl
OjpJbnRTaXplIG92ZXJoYW5nQW1vdW50KCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBX
ZWJDb3JlOjpJbnRQb2ludCBjdXJyZW50TW91c2VQb3NpdGlvbigpIGNvbnN0IE9WRVJSSURFOwor
ICAgIHZpcnR1YWwgYm9vbCBzaG91bGRTdXNwZW5kU2Nyb2xsQW5pbWF0aW9ucygpIGNvbnN0IE9W
RVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxiYXJTdHlsZUNoYW5nZWQoaW50IG5ld1N0
eWxlLCBib29sIGZvcmNlVXBkYXRlKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNPbkFj
dGl2ZVBhZ2UoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OkludFJlY3Qg
c2Nyb2xsYWJsZUFyZWFCb3VuZGluZ0JveCgpIGNvbnN0IE9WRVJSSURFOwogCiBwcml2YXRlOgog
ICAgIFdlYkNvcmU6OkZyYW1lVmlldyogbV9mcmFtZVZpZXc7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL1Njcm9sbEFuaW1hdG9yTm9uZVRlc3QuY3BwIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9TY3JvbGxBbmltYXRvck5vbmVUZXN0LmNwcAppbmRleCA5
MjdkNGE5YzMyZGU2OTcyOTk4NjI5ZDFmZDU2Njc1OGI2NTU3ZDMxLi5lNzE4NDZhZGIxNTRiZjlm
YjhmM2NjMmQ3Njc5NTgwYTk0NjA5YTRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL1Njcm9sbEFuaW1hdG9yTm9uZVRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvU2Nyb2xsQW5pbWF0b3JOb25lVGVzdC5jcHAKQEAgLTYzLDEyICs2Mywy
MCBAQCBwdWJsaWM6CiAgICAgTU9DS19NRVRIT0QxKGludmFsaWRhdGVTY3JvbGxDb3JuZXJSZWN0
LCB2b2lkKGNvbnN0IEludFJlY3QmKSk7CiAgICAgTU9DS19NRVRIT0QxKHNldFNjcm9sbE9mZnNl
dEZyb21BbmltYXRpb24sIHZvaWQoY29uc3QgSW50UG9pbnQmKSk7CiAgICAgTU9DS19DT05TVF9N
RVRIT0QwKGVuY2xvc2luZ1Njcm9sbGFibGVBcmVhLCBTY3JvbGxhYmxlQXJlYSooKSk7Ci0KLSAg
ICB2aXJ0dWFsIEludFBvaW50IHNjcm9sbFBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gSW50UG9p
bnQoKTsgfQotICAgIHZpcnR1YWwgaW50IHZpc2libGVIZWlnaHQoKSBjb25zdCB7IHJldHVybiA3
Njg7IH0KLSAgICB2aXJ0dWFsIGludCB2aXNpYmxlV2lkdGgoKSBjb25zdCB7IHJldHVybiAxMDI0
OyB9Ci0KLSAgICBib29sIHNjcm9sbEFuaW1hdG9yRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1f
c2Nyb2xsQW5pbWF0b3JFbmFibGVkOyB9CisgICAgTU9DS19DT05TVF9NRVRIT0QwKG1pbmltdW1T
Y3JvbGxQb3NpdGlvbiwgSW50UG9pbnQoKSk7CisgICAgTU9DS19DT05TVF9NRVRIT0QwKG1heGlt
dW1TY3JvbGxQb3NpdGlvbiwgSW50UG9pbnQoKSk7CisgICAgTU9DS19DT05TVF9NRVRIT0QxKHZp
c2libGVDb250ZW50UmVjdCwgSW50UmVjdChib29sKSk7CisgICAgTU9DS19DT05TVF9NRVRIT0Qw
KGNvbnRlbnRzU2l6ZSwgSW50U2l6ZSgpKTsKKyAgICBNT0NLX0NPTlNUX01FVEhPRDAob3Zlcmhh
bmdBbW91bnQsIEludFNpemUoKSk7CisgICAgTU9DS19DT05TVF9NRVRIT0QwKGlzT25BY3RpdmVQ
YWdlLCBib29sKCkpOworICAgIE1PQ0tfQ09OU1RfTUVUSE9EMChzY3JvbGxhYmxlQXJlYUJvdW5k
aW5nQm94LCBJbnRSZWN0KCkpOworCisgICAgdmlydHVhbCBJbnRQb2ludCBzY3JvbGxQb3NpdGlv
bigpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIEludFBvaW50KCk7IH0KKyAgICB2aXJ0dWFsIGlu
dCB2aXNpYmxlSGVpZ2h0KCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gNzY4OyB9CisgICAgdmly
dHVhbCBpbnQgdmlzaWJsZVdpZHRoKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gMTAyNDsgfQor
ICAgIHZpcnR1YWwgYm9vbCBzY3JvbGxBbmltYXRvckVuYWJsZWQoKSBjb25zdCBPVkVSUklERSB7
IHJldHVybiBtX3Njcm9sbEFuaW1hdG9yRW5hYmxlZDsgfQorCitwcml2YXRlOgogICAgIGJvb2wg
bV9zY3JvbGxBbmltYXRvckVuYWJsZWQ7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L3dpbi9XZWJTY3JvbGxCYXIuY3BwIGIvU291cmNlL1dlYktpdC93aW4vV2ViU2Nyb2xsQmFyLmNw
cAppbmRleCBkMzM4OGMzZDk2MTRmY2Y2NDc4OTAxZjBlMDhhNjE3NTVjZDE1OWM1Li5mMTcyMTk2
YjMxYTY4ZDk0Njk5ZGRkZjQxZWVmM2IwNjBmZmMyMmJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L3dpbi9XZWJTY3JvbGxCYXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYlNjcm9s
bEJhci5jcHAKQEAgLTI4NCwzICsyODQsMjggQEAgU2Nyb2xsYmFyKiBXZWJTY3JvbGxCYXI6OnZl
cnRpY2FsU2Nyb2xsYmFyKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9zY3JvbGxCYXItPm9yaWVu
dGF0aW9uKCkgPT0gVmVydGljYWxTY3JvbGxiYXIgPyBtX3Njcm9sbEJhci5nZXQoKSA6IDA7CiB9
CisKK2ludCBXZWJTY3JvbGxCYXI6OnZpc2libGVIZWlnaHQoKSBjb25zdAoreworICAgIHJldHVy
biBtX3Njcm9sbEJhci0+aGVpZ2h0KCk7Cit9CisKK2ludCBXZWJTY3JvbGxCYXI6OnZpc2libGVX
aWR0aCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc2Nyb2xsQmFyLT53aWR0aCgpOworfQorCitX
ZWJDb3JlOjpJbnRTaXplIFdlYlNjcm9sbEJhcjo6Y29udGVudHNTaXplKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gbV9zY3JvbGxCYXItPmZyYW1lUmVjdCgpLnNpemUoKTsKK30KKworYm9vbCBXZWJT
Y3JvbGxCYXI6OmlzT25BY3RpdmVQYWdlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gdHJ1ZTsKK30K
KworV2ViQ29yZTo6SW50UmVjdCBXZWJTY3JvbGxCYXI6OnNjcm9sbGFibGVBcmVhQm91bmRpbmdC
b3goKSBjb25zdAoreworICAgIHJldHVybiBtX3Njcm9sbEJhci0+ZnJhbWVSZWN0KCk7Cit9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJTY3JvbGxCYXIuaCBiL1NvdXJjZS9XZWJL
aXQvd2luL1dlYlNjcm9sbEJhci5oCmluZGV4IGM5N2QwZDcwMTE4YzNhZGVkOTc0YmU5M2EzNjYx
MWYxZjgwZTcxZjcuLmRmZDFlZjA0MDdiZTdlODQ1NTJhNDEwOTY4ODM3MDVlOGQ4YTE3Y2EgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYlNjcm9sbEJhci5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvd2luL1dlYlNjcm9sbEJhci5oCkBAIC0xMTcsNiArMTE3LDExIEBAIHByb3RlY3RlZDoK
ICAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZVNjcm9sbGJhclJlY3QoV2ViQ29yZTo6U2Nyb2xs
YmFyKiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpOwogICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlk
YXRlU2Nyb2xsQ29ybmVyUmVjdChjb25zdCBXZWJDb3JlOjpJbnRSZWN0JikgeyB9CiAgICAgdmly
dHVhbCBXZWJDb3JlOjpTY3JvbGxhYmxlQXJlYSogZW5jbG9zaW5nU2Nyb2xsYWJsZUFyZWEoKSBj
b25zdCB7IHJldHVybiAwOyB9CisgICAgdmlydHVhbCBpbnQgdmlzaWJsZUhlaWdodCgpIGNvbnN0
IE9WRVJSSURFOworICAgIHZpcnR1YWwgaW50IHZpc2libGVXaWR0aCgpIGNvbnN0IE9WRVJSSURF
OworICAgIHZpcnR1YWwgV2ViQ29yZTo6SW50U2l6ZSBjb250ZW50c1NpemUoKSBjb25zdCBPVkVS
UklERTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNPbkFjdGl2ZVBhZ2UoKSBjb25zdCBPVkVSUklERTsK
KyAgICB2aXJ0dWFsIFdlYkNvcmU6OkludFJlY3Qgc2Nyb2xsYWJsZUFyZWFCb3VuZGluZ0JveCgp
IGNvbnN0IE9WRVJSSURFOwogCiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBwcm92aWRlIGEgd2F5
IHRvIHNldCB0aGlzIHZhbHVlLgogICAgIHZpcnR1YWwgYm9vbCBpc0FjdGl2ZSgpIGNvbnN0IHsg
cmV0dXJuIHRydWU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy93aW4v
V2ViUG9wdXBNZW51UHJveHlXaW4uY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3dpbi9X
ZWJQb3B1cE1lbnVQcm94eVdpbi5jcHAKaW5kZXggZGY0ZTk4NTRiY2M2NTZkY2QwMmU2YWMyZGI4
Y2ZmYmU1NzJhZDRlNi4uNzgyNDJlOGE3MTY2OGM0ZTcwZDg0ZWM0MGM0YTdhZmMzNzFiYmMzMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3dpbi9XZWJQb3B1cE1lbnVQcm94
eVdpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3dpbi9XZWJQb3B1cE1lbnVQ
cm94eVdpbi5jcHAKQEAgLTQ2OSw2ICs0NjksMjYgQEAgdm9pZCBXZWJQb3B1cE1lbnVQcm94eVdp
bjo6c2V0U2Nyb2xsT2Zmc2V0KGNvbnN0IEludFBvaW50JiBvZmZzZXQpCiAgICAgc2Nyb2xsVG8o
b2Zmc2V0LnkoKSk7CiB9CiAKK2ludCBXZWJQb3B1cE1lbnVQcm94eVdpbjo6dmlzaWJsZUhlaWdo
dCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc2Nyb2xsYmFyID8gbV9zY3JvbGxiYXItPnZpc2li
bGVTaXplKCkgOiBjb250ZW50U2l6ZSgpLmhlaWdodCgpOworfQorCitpbnQgV2ViUG9wdXBNZW51
UHJveHlXaW46OnZpc2libGVXaWR0aCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGNvbnRlbnRzU2l6
ZSgpLndpZHRoKCkgLSBtX3Njcm9sbGJhciA/IG1fc2Nyb2xsYmFyLT5mcmFtZVJlY3QoKS53aWR0
aCgpIDogMDsKK30KKworV2ViQ29yZTo6SW50U2l6ZSBXZWJQb3B1cE1lbnVQcm94eVdpbjo6Y29u
dGVudHNTaXplKCkgY29uc3QKK3sKKyAgICByZXR1cm4gY2xpZW50UmVjdCgpLnNpemUoKTsKK30K
KworV2ViQ29yZTo6SW50UmVjdCBXZWJQb3B1cE1lbnVQcm94eVdpbjo6c2Nyb2xsYWJsZUFyZWFC
b3VuZGluZ0JveCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fd2luZG93UmVjdDsKK30KKwogdm9p
ZCBXZWJQb3B1cE1lbnVQcm94eVdpbjo6c2Nyb2xsVG8oaW50IG9mZnNldCkKIHsKICAgICBBU1NF
UlQobV9zY3JvbGxiYXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3dp
bi9XZWJQb3B1cE1lbnVQcm94eVdpbi5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3dpbi9X
ZWJQb3B1cE1lbnVQcm94eVdpbi5oCmluZGV4IGI3YzRkNmQyOTM3ZjJkODI1ODA4OTIzNTBkYWI5
ODA5ZTE3Nzk0ZjIuLjk5YjVhNjY3ZjRmODlmYzU5NmYyYmViY2JjMDRiMDI3ZjZmYmNjMjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy93aW4vV2ViUG9wdXBNZW51UHJveHlX
aW4uaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mvd2luL1dlYlBvcHVwTWVudVByb3h5
V2luLmgKQEAgLTYxLDE2ICs2MSwyMSBAQCBwcml2YXRlOgogICAgIFdlYkNvcmU6OlNjcm9sbGJh
ciogc2Nyb2xsYmFyKCkgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxiYXIuZ2V0KCk7IH0KIAogICAg
IC8vIFNjcm9sbGFibGVBcmVhCi0gICAgdmlydHVhbCBpbnQgc2Nyb2xsU2l6ZShXZWJDb3JlOjpT
Y3JvbGxiYXJPcmllbnRhdGlvbikgY29uc3Q7Ci0gICAgdmlydHVhbCBpbnQgc2Nyb2xsUG9zaXRp
b24oV2ViQ29yZTo6U2Nyb2xsYmFyKikgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIHNldFNjcm9s
bE9mZnNldChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpOwotICAgIHZpcnR1YWwgdm9pZCBpbnZh
bGlkYXRlU2Nyb2xsYmFyUmVjdChXZWJDb3JlOjpTY3JvbGxiYXIqLCBjb25zdCBXZWJDb3JlOjpJ
bnRSZWN0Jik7Ci0gICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGVTY3JvbGxDb3JuZXJSZWN0KGNv
bnN0IFdlYkNvcmU6OkludFJlY3QmKSB7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNBY3RpdmUoKSBj
b25zdCB7IHJldHVybiB0cnVlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzU2Nyb2xsQ29ybmVyVmlz
aWJsZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBXZWJDb3JlOjpJbnRS
ZWN0IHNjcm9sbENvcm5lclJlY3QoKSBjb25zdCB7IHJldHVybiBXZWJDb3JlOjpJbnRSZWN0KCk7
IH0KLSAgICB2aXJ0dWFsIFdlYkNvcmU6OlNjcm9sbGJhciogdmVydGljYWxTY3JvbGxiYXIoKSBj
b25zdCB7IHJldHVybiBtX3Njcm9sbGJhci5nZXQoKTsgfQotICAgIHZpcnR1YWwgV2ViQ29yZTo6
U2Nyb2xsYWJsZUFyZWEqIGVuY2xvc2luZ1Njcm9sbGFibGVBcmVhKCkgY29uc3QgeyByZXR1cm4g
MDsgfQorICAgIHZpcnR1YWwgaW50IHNjcm9sbFNpemUoV2ViQ29yZTo6U2Nyb2xsYmFyT3JpZW50
YXRpb24pIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgaW50IHNjcm9sbFBvc2l0aW9uKFdl
YkNvcmU6OlNjcm9sbGJhciopIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzZXRT
Y3JvbGxPZmZzZXQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKSBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIHZvaWQgaW52YWxpZGF0ZVNjcm9sbGJhclJlY3QoV2ViQ29yZTo6U2Nyb2xsYmFyKiwgY29u
c3QgV2ViQ29yZTo6SW50UmVjdCYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlk
YXRlU2Nyb2xsQ29ybmVyUmVjdChjb25zdCBXZWJDb3JlOjpJbnRSZWN0JikgT1ZFUlJJREUgeyB9
CisgICAgdmlydHVhbCBib29sIGlzQWN0aXZlKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gdHJ1
ZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc1Njcm9sbENvcm5lclZpc2libGUoKSBjb25zdCBPVkVS
UklERSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgV2ViQ29yZTo6SW50UmVjdCBzY3Jv
bGxDb3JuZXJSZWN0KCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gV2ViQ29yZTo6SW50UmVjdCgp
OyB9CisgICAgdmlydHVhbCBXZWJDb3JlOjpTY3JvbGxiYXIqIHZlcnRpY2FsU2Nyb2xsYmFyKCkg
Y29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV9zY3JvbGxiYXIuZ2V0KCk7IH0KKyAgICB2aXJ0dWFs
IFdlYkNvcmU6OlNjcm9sbGFibGVBcmVhKiBlbmNsb3NpbmdTY3JvbGxhYmxlQXJlYSgpIGNvbnN0
IE9WRVJSSURFIHsgcmV0dXJuIDA7IH0KKyAgICB2aXJ0dWFsIGludCB2aXNpYmxlSGVpZ2h0KCkg
Y29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBpbnQgdmlzaWJsZVdpZHRoKCkgY29uc3QgT1ZF
UlJJREU7CisgICAgdmlydHVhbCBXZWJDb3JlOjpJbnRTaXplIGNvbnRlbnRzU2l6ZSgpIGNvbnN0
IE9WRVJSSURFOworICAgIHZpcnR1YWwgV2ViQ29yZTo6SW50UmVjdCBzY3JvbGxhYmxlQXJlYUJv
dW5kaW5nQm94KCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGlzT25BY3RpdmVQ
YWdlIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIHRydWU7IH0KIAogICAgIC8vIE5PVEU6IFRoaXMg
c2hvdWxkIG9ubHkgYmUgY2FsbGVkIGJ5IHRoZSBvdmVycmlkZW4gc2V0U2Nyb2xsT2Zmc2V0IGZy
b20gU2Nyb2xsYWJsZUFyZWEuCiAgICAgdm9pZCBzY3JvbGxUbyhpbnQgb2Zmc2V0KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvQnVpbHRJblBERlZp
ZXcuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvQnVpbHRJblBERlZp
ZXcuaAppbmRleCA4YTdjMjhhNWI1OWI3OWE3ODBmZWU3ZThhYTIzOGM0ZDZlMDk2MWFhLi45Y2Nk
ODA0MDAzN2U4MDA5MWY5ODU2YTNlZDM5MmMzNjZhMGFhZjMyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL0J1aWx0SW5QREZWaWV3LmgKKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9CdWlsdEluUERGVmlldy5oCkBAIC0x
MjIsMzAgKzEyMiwyOSBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgUmV0YWluUHRyPFBERkRvY3Vt
ZW50PiBwZGZEb2N1bWVudEZvclByaW50aW5nKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV9w
ZGZEb2N1bWVudDsgfQogCiAgICAgLy8gU2Nyb2xsYWJsZUFyZWEgbWV0aG9kcy4KLSAgICB2aXJ0
dWFsIFdlYkNvcmU6OkludFJlY3Qgc2Nyb2xsQ29ybmVyUmVjdCgpIGNvbnN0OwotICAgIHZpcnR1
YWwgV2ViQ29yZTo6U2Nyb2xsYWJsZUFyZWEqIGVuY2xvc2luZ1Njcm9sbGFibGVBcmVhKCkgY29u
c3Q7CisgICAgdmlydHVhbCBXZWJDb3JlOjpJbnRSZWN0IHNjcm9sbENvcm5lclJlY3QoKSBjb25z
dCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OlNjcm9sbGFibGVBcmVhKiBlbmNsb3Np
bmdTY3JvbGxhYmxlQXJlYSgpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgV2ViQ29yZTo6
SW50UmVjdCBzY3JvbGxhYmxlQXJlYUJvdW5kaW5nQm94KCkgY29uc3QgT1ZFUlJJREU7Ci0gICAg
dmlydHVhbCB2b2lkIHNldFNjcm9sbE9mZnNldChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpOwot
ICAgIHZpcnR1YWwgaW50IHNjcm9sbFNpemUoV2ViQ29yZTo6U2Nyb2xsYmFyT3JpZW50YXRpb24p
IGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCBpc0FjdGl2ZSgpIGNvbnN0OwotICAgIHZpcnR1YWwg
dm9pZCBpbnZhbGlkYXRlU2Nyb2xsYmFyUmVjdChXZWJDb3JlOjpTY3JvbGxiYXIqLCBjb25zdCBX
ZWJDb3JlOjpJbnRSZWN0Jik7Ci0gICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGVTY3JvbGxDb3Ju
ZXJSZWN0KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKTsKLSAgICB2aXJ0dWFsIGJvb2wgaXNTY3Jv
bGxDb3JuZXJWaXNpYmxlKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBpbnQgc2Nyb2xsUG9zaXRpb24o
V2ViQ29yZTo6U2Nyb2xsYmFyKikgY29uc3Q7Ci0gICAgdmlydHVhbCBXZWJDb3JlOjpJbnRQb2lu
dCBzY3JvbGxQb3NpdGlvbigpIGNvbnN0OwotICAgIHZpcnR1YWwgV2ViQ29yZTo6SW50UG9pbnQg
bWluaW11bVNjcm9sbFBvc2l0aW9uKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBXZWJDb3JlOjpJbnRQ
b2ludCBtYXhpbXVtU2Nyb2xsUG9zaXRpb24oKSBjb25zdDsKLSAgICB2aXJ0dWFsIGludCB2aXNp
YmxlSGVpZ2h0KCkgY29uc3Q7Ci0gICAgdmlydHVhbCBpbnQgdmlzaWJsZVdpZHRoKCkgY29uc3Q7
Ci0gICAgdmlydHVhbCBXZWJDb3JlOjpJbnRTaXplIGNvbnRlbnRzU2l6ZSgpIGNvbnN0OwotICAg
IHZpcnR1YWwgV2ViQ29yZTo6U2Nyb2xsYmFyKiBob3Jpem9udGFsU2Nyb2xsYmFyKCkgY29uc3Qg
IHsgcmV0dXJuIG1faG9yaXpvbnRhbFNjcm9sbGJhci5nZXQoKTsgfQotICAgIHZpcnR1YWwgV2Vi
Q29yZTo6U2Nyb2xsYmFyKiB2ZXJ0aWNhbFNjcm9sbGJhcigpIGNvbnN0IHsgcmV0dXJuIG1fdmVy
dGljYWxTY3JvbGxiYXIuZ2V0KCk7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNPbkFjdGl2ZVBhZ2Uo
KSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkU3VzcGVuZFNjcm9sbEFuaW1hdGlvbnMo
KSBjb25zdCB7IHJldHVybiBmYWxzZTsgfSAvLyBJZiB3ZSByZXR1cm4gdHJ1ZSwgU2Nyb2xsQW5p
bWF0b3JNYWMgd2lsbCBrZWVwIGN5Y2xpbmcgYSB0aW1lciBmb3JldmVyLCB3YWl0aW5nIGZvciBh
IGdvb2QgdGltZSB0byBhbmltYXRlLgotICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxiYXJTdHlsZUNo
YW5nZWQoaW50IG5ld1N0eWxlLCBib29sIGZvcmNlVXBkYXRlKTsKLQorICAgIHZpcnR1YWwgdm9p
ZCBzZXRTY3JvbGxPZmZzZXQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKSBPVkVSUklERTsKKyAg
ICB2aXJ0dWFsIGludCBzY3JvbGxTaXplKFdlYkNvcmU6OlNjcm9sbGJhck9yaWVudGF0aW9uKSBj
b25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNBY3RpdmUoKSBjb25zdCBPVkVSUklE
RTsKKyAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZVNjcm9sbGJhclJlY3QoV2ViQ29yZTo6U2Ny
b2xsYmFyKiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpIE9WRVJSSURFOworICAgIHZpcnR1YWwg
dm9pZCBpbnZhbGlkYXRlU2Nyb2xsQ29ybmVyUmVjdChjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jikg
T1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGlzU2Nyb2xsQ29ybmVyVmlzaWJsZSgpIGNvbnN0
IE9WRVJSSURFOworICAgIHZpcnR1YWwgaW50IHNjcm9sbFBvc2l0aW9uKFdlYkNvcmU6OlNjcm9s
bGJhciopIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgV2ViQ29yZTo6SW50UG9pbnQgc2Ny
b2xsUG9zaXRpb24oKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OkludFBv
aW50IG1pbmltdW1TY3JvbGxQb3NpdGlvbigpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwg
V2ViQ29yZTo6SW50UG9pbnQgbWF4aW11bVNjcm9sbFBvc2l0aW9uKCkgY29uc3QgT1ZFUlJJREU7
CisgICAgdmlydHVhbCBpbnQgdmlzaWJsZUhlaWdodCgpIGNvbnN0IE9WRVJSSURFOworICAgIHZp
cnR1YWwgaW50IHZpc2libGVXaWR0aCgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgV2Vi
Q29yZTo6SW50U2l6ZSBjb250ZW50c1NpemUoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFs
IFdlYkNvcmU6OlNjcm9sbGJhciogaG9yaXpvbnRhbFNjcm9sbGJhcigpIGNvbnN0IE9WRVJSSURF
IHsgcmV0dXJuIG1faG9yaXpvbnRhbFNjcm9sbGJhci5nZXQoKTsgfQorICAgIHZpcnR1YWwgV2Vi
Q29yZTo6U2Nyb2xsYmFyKiB2ZXJ0aWNhbFNjcm9sbGJhcigpIGNvbnN0IE9WRVJSSURFIHsgcmV0
dXJuIG1fdmVydGljYWxTY3JvbGxiYXIuZ2V0KCk7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNPbkFj
dGl2ZVBhZ2UoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkU3VzcGVu
ZFNjcm9sbEFuaW1hdGlvbnMoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBmYWxzZTsgfSAvLyBJ
ZiB3ZSByZXR1cm4gdHJ1ZSwgU2Nyb2xsQW5pbWF0b3JNYWMgd2lsbCBrZWVwIGN5Y2xpbmcgYSB0
aW1lciBmb3JldmVyLCB3YWl0aW5nIGZvciBhIGdvb2QgdGltZSB0byBhbmltYXRlLgorICAgIHZp
cnR1YWwgdm9pZCBzY3JvbGxiYXJTdHlsZUNoYW5nZWQoaW50IG5ld1N0eWxlLCBib29sIGZvcmNl
VXBkYXRlKSBPVkVSUklERTsKICAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoZSBvdGhlciBjb252
ZXJzaW9uIGZ1bmN0aW9uczsgdGhpcyBvbmUgaXMgZW5vdWdoIHRvIGdldCBzY3JvbGxiYXIgaGl0
IHRlc3Rpbmcgd29ya2luZy4KLSAgICB2aXJ0dWFsIFdlYkNvcmU6OkludFBvaW50IGNvbnZlcnRG
cm9tQ29udGFpbmluZ1ZpZXdUb1Njcm9sbGJhcihjb25zdCBXZWJDb3JlOjpTY3JvbGxiYXIqLCBj
b25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcGFyZW50UG9pbnQpIGNvbnN0OworICAgIHZpcnR1YWwg
V2ViQ29yZTo6SW50UG9pbnQgY29udmVydEZyb21Db250YWluaW5nVmlld1RvU2Nyb2xsYmFyKGNv
bnN0IFdlYkNvcmU6OlNjcm9sbGJhciosIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwYXJlbnRQ
b2ludCkgY29uc3QgT1ZFUlJJREU7CiAKICAgICBKU09iamVjdFJlZiBtYWtlSlNQREZEb2MoSlND
b250ZXh0UmVmKTsKICAgICBzdGF0aWMgSlNWYWx1ZVJlZiBqc1BERkRvY1ByaW50KEpTQ29udGV4
dFJlZiwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVf
dCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVm
KiBleGNlcHRpb24pOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>159998</attachid>
            <date>2012-08-22 13:24:11 -0700</date>
            <delta_ts>2012-08-22 14:01:41 -0700</delta_ts>
            <desc>Fix WebPopupMenuProxyWin build error</desc>
            <filename>bug-93306-20120822132409.patch</filename>
            <type>text/plain</type>
            <size>44818</size>
            <attacher name="Adrienne Walker">enne</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI2MzIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOThlYTUyNjMyYjFlYTZk
N2MyYTAxYmExYjI5ZDk0MDdiZjZmMWYzOS4uNDhkOWE4ZDFjZmRkNGNlZTE2OTI1MDY1MjI1Mjc0
ODFkNTc2ZTE3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU0IEBACisyMDEyLTA4LTIyICBBZHJp
ZW5uZSBXYWxrZXIgIDxlbm5lQGdvb2dsZS5jb20+CisKKyAgICAgICAgQ29udmVydCBTY3JvbGxh
YmxlQXJlYSBBU1NFUlRfTk9UX1JFQUNIRUQgdmlydHVhbHMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkzMzA2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
RGFyaW4gQWRsZXIuCisKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEIGlzIGEgYmFkIHdheSB0
byBtYWtlIHN1cmUgdGhhdCBhIHZpcnR1YWwgZnVuY3Rpb24KKyAgICAgICAgZ2V0cyBhbiBvdmVy
cmlkZSwgYmVjYXVzZSBpdCBvbmx5IGZhaWxzIGF0IHJ1bi10aW1lIGluIGRlYnVnIGJ1aWxkcy4K
KworICAgICAgICBUbyBmaXggdGhpcywgY29udmVydCB0aGUgdmlydHVhbHMgaW4gU2Nyb2xsYWJs
ZUFyZWEgdGhhdCBoYXZlCisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCB0byBiZSBlaXRoZXIg
cHVyZSB2aXJ0dWFsIG9yIGltcGxlbWVudGVkIGRpcmVjdGx5CisgICAgICAgIGluIFNjcm9sbGFi
bGVBcmVhLiBBZGQgaW1wbGVtZW50YXRpb25zIHdoZXJlIG5lY2Vzc2FyeSB0byBtYWtlIGRlcml2
ZWQKKyAgICAgICAgY2xhc3NlcyBjb25jcmV0ZS4KKworICAgICAgICBBZGRpdGlvbmFsbHksIGNv
bnNpc3RlbnRseSBhZGQgT1ZFUlJJREUgZm9yIHZpcnR1YWwgZnVuY3Rpb25zIGluCisgICAgICAg
IGRlcml2ZWQgY2xhc3NlcyB0aGF0IG92ZXJyaWRlIFNjcm9sbGFibGVBcmVhIG1ldGhvZHMuCisK
KyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5oOgor
ICAgICAgICAoRnJhbWVWaWV3KToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxWaWV3Lmg6Cisg
ICAgICAgIChTY3JvbGxWaWV3KToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxhYmxlQXJlYTo6c2Nyb2xsUG9zaXRpb24pOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxhYmxlQXJlYTo6bWlu
aW11bVNjcm9sbFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGFibGVBcmVhOjpt
YXhpbXVtU2Nyb2xsUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYWJsZUFyZWE6
OnZpc2libGVDb250ZW50UmVjdCk6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEu
aDoKKyAgICAgICAgKFNjcm9sbGFibGVBcmVhKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGFi
bGVBcmVhOjpvdmVyaGFuZ0Ftb3VudCk6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vRnJh
bWVsZXNzU2Nyb2xsVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZWxlc3NTY3JvbGxW
aWV3Ojppc09uQWN0aXZlUGFnZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lbGVzc1Njcm9sbFZpZXc6OnNjcm9sbGFibGVBcmVhQm91bmRpbmdCb3gpOgorICAg
ICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL0ZyYW1lbGVzc1Njcm9sbFZpZXcuaDoKKyAgICAgICAg
KEZyYW1lbGVzc1Njcm9sbFZpZXcpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9Qb3B1cE1lbnVX
aW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UG9wdXBNZW51V2luOjp2aXNpYmxlSGVpZ2h0KToK
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6UG9wdXBNZW51V2luOjp2aXNp
YmxlV2lkdGgpOgorICAgICAgICAoV2ViQ29yZTo6UG9wdXBNZW51V2luOjpjb250ZW50c1NpemUp
OgorICAgICAgICAoV2ViQ29yZTo6UG9wdXBNZW51V2luOjppc09uQWN0aXZlUGFnZSk6CisgICAg
ICAgIChXZWJDb3JlOjpQb3B1cE1lbnVXaW46OnNjcm9sbGFibGVBcmVhQm91bmRpbmdCb3gpOgor
ICAgICAgICAqIHBsYXRmb3JtL3dpbi9Qb3B1cE1lbnVXaW4uaDoKKyAgICAgICAgKFBvcHVwTWVu
dVdpbik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJMaXN0Qm94Lmg6CisgICAgICAgIChSZW5kZXJMaXN0Qm94KToKKwog
MjAxMi0wOC0yMiAgS2VubmV0aCBSdXNzZWxsICA8a2JyQGdvb2dsZS5jb20+CiAKICAgICAgICAg
VW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjEyNjMxOS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cK
aW5kZXggZDU4MzA3NGNlNjI5MGNhN2NhMzc3Y2JjMDkzNzgwNDFhOTE1MTIxNy4uZDRmNWI1ZDRm
OWY1M2RiNjFmODlkN2FhNDIyOWQwZmJmZTI2MDZlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxOSBAQAorMjAxMi0wOC0yMiAgQWRyaWVubmUgV2Fsa2VyICA8ZW5uZUBn
b29nbGUuY29tPgorCisgICAgICAgIENvbnZlcnQgU2Nyb2xsYWJsZUFyZWEgQVNTRVJUX05PVF9S
RUFDSEVEIHZpcnR1YWxzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD05MzMwNgorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAg
ICAgIEFkZCBpbXBsZW1lbnRhdGlvbnMgd2hlcmUgbmVjZXNzYXJ5IHRvIG1ha2UgZGVyaXZlZCBj
bGFzc2VzIGNvbmNyZXRlLgorICAgICAgICBBZGQgT1ZFUlJJREUgZm9yIFNjcm9sbGFibGVBcmVh
IGZ1bmN0aW9ucy4KKworICAgICAgICAqIHNyYy9TY3JvbGxiYXJHcm91cC5oOgorICAgICAgICAo
U2Nyb2xsYmFyR3JvdXApOgorICAgICAgICAoV2ViS2l0OjpTY3JvbGxiYXJHcm91cDo6c2Nyb2xs
Q29ybmVyUmVjdCk6CisgICAgICAgICogdGVzdHMvU2Nyb2xsQW5pbWF0b3JOb25lVGVzdC5jcHA6
CisgICAgICAgIChNb2NrU2Nyb2xsYWJsZUFyZWEpOgorCiAyMDEyLTA4LTIyICBLZW5uZXRoIFJ1
c3NlbGwgIDxrYnJAZ29vZ2xlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91
dCByMTI2MzE5LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCmluZGV4IGVkNzZmYWY5MDVmNDEyM2ViZjE4ODQ1NGZl
NjQzMTczOWVmNGM5MGQuLjhlZjJjNjVjNmE5MjAyNmM1YjQ4ZjNjOTM3ZDg1OWZlNDY0ODAzNGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAxMi0wOC0yMiAgQWRyaWVubmUg
V2Fsa2VyICA8ZW5uZUBnb29nbGUuY29tPgorCisgICAgICAgIENvbnZlcnQgU2Nyb2xsYWJsZUFy
ZWEgQVNTRVJUX05PVF9SRUFDSEVEIHZpcnR1YWxzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MzMwNgorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmlu
IEFkbGVyLgorCisgICAgICAgIEFkZCBpbXBsZW1lbnRhdGlvbnMgd2hlcmUgbmVjZXNzYXJ5IHRv
IG1ha2UgZGVyaXZlZCBjbGFzc2VzIGNvbmNyZXRlLgorICAgICAgICBBZGQgT1ZFUlJJREUgZm9y
IFNjcm9sbGFibGVBcmVhIGZ1bmN0aW9ucy4KKworICAgICAgICAqIFdlYlNjcm9sbEJhci5jcHA6
CisgICAgICAgIChXZWJTY3JvbGxCYXI6OnZpc2libGVIZWlnaHQpOgorICAgICAgICAoV2ViU2Ny
b2xsQmFyOjp2aXNpYmxlV2lkdGgpOgorICAgICAgICAoV2ViU2Nyb2xsQmFyOjpjb250ZW50c1Np
emUpOgorICAgICAgICAoV2ViU2Nyb2xsQmFyOjppc09uQWN0aXZlUGFnZSk6CisgICAgICAgIChX
ZWJTY3JvbGxCYXI6OnNjcm9sbGFibGVBcmVhQm91bmRpbmdCb3gpOgorICAgICAgICAqIFdlYlNj
cm9sbEJhci5oOgorICAgICAgICAoV2ViU2Nyb2xsQmFyKToKKwogMjAxMi0wOC0xNSAgUnlvc3Vr
ZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBVcGRhdGUgbWFudWFsIHRlc3Rz
IGFuZCBjb21tZW50cyB0byByZWZlciB0byBUZXN0UnVubmVyIGluc3RlYWQgb2YgTGF5b3V0VGVz
dENvbnRyb2xsZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA4NmUzY2UyZWI1YmY5N2RmMmZkMjZiYzE5MzE3M2Y5
YzI2ODAyMDcxLi4yMWI4OGIxNWJlZmIxYjg3MzZkNjM5YTRlYWMxMzUwMTcwNGZjYTU4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTItMDgtMjIgIEFkcmllbm5lIFdhbGtlciAgPGVu
bmVAZ29vZ2xlLmNvbT4KKworICAgICAgICBDb252ZXJ0IFNjcm9sbGFibGVBcmVhIEFTU0VSVF9O
T1RfUkVBQ0hFRCB2aXJ0dWFscworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9OTMzMDYKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKwor
ICAgICAgICBBZGQgaW1wbGVtZW50YXRpb25zIHdoZXJlIG5lY2Vzc2FyeSB0byBtYWtlIGRlcml2
ZWQgY2xhc3NlcyBjb25jcmV0ZS4KKyAgICAgICAgQWRkIE9WRVJSSURFIGZvciBTY3JvbGxhYmxl
QXJlYSBmdW5jdGlvbnMuCisKKyAgICAgICAgKiBVSVByb2Nlc3Mvd2luL1dlYlBvcHVwTWVudVBy
b3h5V2luLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUG9wdXBNZW51UHJveHlXaW46OnZpc2li
bGVIZWlnaHQpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUG9wdXBN
ZW51UHJveHlXaW46OnZpc2libGVXaWR0aCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBvcHVwTWVu
dVByb3h5V2luOjpjb250ZW50c1NpemUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQb3B1cE1lbnVQ
cm94eVdpbjo6c2Nyb2xsYWJsZUFyZWFCb3VuZGluZ0JveCk6CisgICAgICAgICogVUlQcm9jZXNz
L3dpbi9XZWJQb3B1cE1lbnVQcm94eVdpbi5oOgorICAgICAgICAoV2ViUG9wdXBNZW51UHJveHlX
aW4pOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvQnVpbHRJblBERlZpZXcuaDoK
KwogMjAxMi0wOC0yMiAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAg
ICBCcm93c2VyIG1lbnUgdmlzaWJsZSB3aGVuIGNhbGxpbmcgd2Via2l0UmVxdWVzdEZ1bGxzY3Jl
ZW4gYWZ0ZXIgdXNlciBtYW51YWxseSBlbnRlcnMgZnVsbCBzY3JlZW4gbW9kZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LmV4cC5pbgppbmRleCAxNmQwNGEzODBiMTRlZjQ4YjE2MGJiZGJjZDMyODVjOWRjMDVmNWFkLi5l
ZTY1Yjc3ZjQ4MGZiNDA1ZTljMjFlNjYyMjNmMTVkNmNjYzEyZTY4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4
cC5pbgpAQCAtMTYxOSw2ICsxNjE5LDcgQEAgX19aTjdXZWJDb3JlN25zQ29sb3JFUktOU181Q29s
b3JFCiBfX1pON1dlYkNvcmU4SW50UG9pbnRDMUVSSzhfTlNQb2ludAogX19aTjdXZWJDb3JlOUZs
b2F0UmVjdEMxRVJLN19OU1JlY3QKIF9fWk5LN1dlYkNvcmUxMEZsb2F0UG9pbnRjdjhfTlNQb2lu
dEV2CitfX1pOSzdXZWJDb3JlMTRTY3JvbGxhYmxlQXJlYTE4dmlzaWJsZUNvbnRlbnRSZWN0RWIK
IF9fWk5LN1dlYkNvcmU2Q3Vyc29yMTRwbGF0Zm9ybUN1cnNvckV2CiBfX1pOSzdXZWJDb3JlN0lu
dFJlY3RjdjdfTlNSZWN0RXYKIF9fWk5LN1dlYkNvcmU3SW50U2l6ZWN2NkNHU2l6ZUV2CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9GcmFtZVZpZXcuaAppbmRleCA4N2MxMDhiNDhhYzg3NDFmMjgzZDkxNjU2ZGYxNDY3NDI0
YWQ4OTg1Li43MTMzZTJmMjcwMjk4M2EyZDIyMTk4MTIzMzI4ZGU2YWFkYjMxZGU1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRnJhbWVWaWV3LmgKQEAgLTM4NiwyMyArMzg2LDIxIEBAIHByaXZhdGU6CiAKICAgICAv
LyBPdmVycmlkZSBTY3JvbGxWaWV3IG1ldGhvZHMgdG8gZG8gcG9pbnQgY29udmVyc2lvbiB2aWEg
cmVuZGVyZXJzLCBpbiBvcmRlciB0bwogICAgIC8vIHRha2UgdHJhbnNmb3JtcyBpbnRvIGFjY291
bnQuCi0gICAgdmlydHVhbCBJbnRSZWN0IGNvbnZlcnRUb0NvbnRhaW5pbmdWaWV3KGNvbnN0IElu
dFJlY3QmKSBjb25zdDsKLSAgICB2aXJ0dWFsIEludFJlY3QgY29udmVydEZyb21Db250YWluaW5n
Vmlldyhjb25zdCBJbnRSZWN0JikgY29uc3Q7Ci0gICAgdmlydHVhbCBJbnRQb2ludCBjb252ZXJ0
VG9Db250YWluaW5nVmlldyhjb25zdCBJbnRQb2ludCYpIGNvbnN0OwotICAgIHZpcnR1YWwgSW50
UG9pbnQgY29udmVydEZyb21Db250YWluaW5nVmlldyhjb25zdCBJbnRQb2ludCYpIGNvbnN0Owor
ICAgIHZpcnR1YWwgSW50UmVjdCBjb252ZXJ0VG9Db250YWluaW5nVmlldyhjb25zdCBJbnRSZWN0
JikgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBJbnRSZWN0IGNvbnZlcnRGcm9tQ29udGFp
bmluZ1ZpZXcoY29uc3QgSW50UmVjdCYpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgSW50
UG9pbnQgY29udmVydFRvQ29udGFpbmluZ1ZpZXcoY29uc3QgSW50UG9pbnQmKSBjb25zdCBPVkVS
UklERTsKKyAgICB2aXJ0dWFsIEludFBvaW50IGNvbnZlcnRGcm9tQ29udGFpbmluZ1ZpZXcoY29u
c3QgSW50UG9pbnQmKSBjb25zdCBPVkVSUklERTsKIAogICAgIC8vIFNjcm9sbGFibGVBcmVhIGlu
dGVyZmFjZQotICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlU2Nyb2xsYmFyUmVjdChTY3JvbGxi
YXIqLCBjb25zdCBJbnRSZWN0Jik7Ci0gICAgdmlydHVhbCBib29sIGlzQWN0aXZlKCkgY29uc3Q7
Ci0gICAgdmlydHVhbCB2b2lkIGdldFRpY2ttYXJrcyhWZWN0b3I8SW50UmVjdD4mKSBjb25zdDsK
LSAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsVG8oY29uc3QgSW50U2l6ZSYpOwotICAgIHZpcnR1YWwg
dm9pZCBzZXRWaXNpYmxlU2Nyb2xsZXJUaHVtYlJlY3QoY29uc3QgSW50UmVjdCYpOwotICAgIHZp
cnR1YWwgYm9vbCBpc09uQWN0aXZlUGFnZSgpIGNvbnN0OwotICAgIHZpcnR1YWwgU2Nyb2xsYWJs
ZUFyZWEqIGVuY2xvc2luZ1Njcm9sbGFibGVBcmVhKCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lk
IGludmFsaWRhdGVTY3JvbGxiYXJSZWN0KFNjcm9sbGJhciosIGNvbnN0IEludFJlY3QmKSBPVkVS
UklERTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNBY3RpdmUoKSBjb25zdCBPVkVSUklERTsKKyAgICB2
aXJ0dWFsIHZvaWQgZ2V0VGlja21hcmtzKFZlY3RvcjxJbnRSZWN0PiYpIGNvbnN0IE9WRVJSSURF
OworICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxUbyhjb25zdCBJbnRTaXplJikgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCB2b2lkIHNldFZpc2libGVTY3JvbGxlclRodW1iUmVjdChjb25zdCBJbnRSZWN0
JikgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGlzT25BY3RpdmVQYWdlKCkgY29uc3QgT1ZF
UlJJREU7CisgICAgdmlydHVhbCBTY3JvbGxhYmxlQXJlYSogZW5jbG9zaW5nU2Nyb2xsYWJsZUFy
ZWEoKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIEludFJlY3Qgc2Nyb2xsYWJsZUFyZWFC
b3VuZGluZ0JveCgpIGNvbnN0IE9WRVJSSURFOwotCi0gICAgdm9pZCB1cGRhdGVTY3JvbGxhYmxl
QXJlYVNldCgpOwotCisgICAgdmlydHVhbCBib29sIHNjcm9sbEFuaW1hdG9yRW5hYmxlZCgpIGNv
bnN0IE9WRVJSSURFOwogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKICAgICB2aXJ0
dWFsIEdyYXBoaWNzTGF5ZXIqIGxheWVyRm9ySG9yaXpvbnRhbFNjcm9sbGJhcigpIGNvbnN0IE9W
RVJSSURFOwogICAgIHZpcnR1YWwgR3JhcGhpY3NMYXllciogbGF5ZXJGb3JWZXJ0aWNhbFNjcm9s
bGJhcigpIGNvbnN0IE9WRVJSSURFOwpAQCAtNDEyLDkgKzQxMCw5IEBAIHByaXZhdGU6CiAjZW5k
aWYKICNlbmRpZgogCi0gICAgdmlydHVhbCB2b2lkIG5vdGlmeVBhZ2VUaGF0Q29udGVudEFyZWFX
aWxsUGFpbnQoKSBjb25zdDsKKyAgICB2b2lkIHVwZGF0ZVNjcm9sbGFibGVBcmVhU2V0KCk7CiAK
LSAgICB2aXJ0dWFsIGJvb2wgc2Nyb2xsQW5pbWF0b3JFbmFibGVkKCkgY29uc3Q7CisgICAgdmly
dHVhbCB2b2lkIG5vdGlmeVBhZ2VUaGF0Q29udGVudEFyZWFXaWxsUGFpbnQoKSBjb25zdDsKIAog
ICAgIHZvaWQgZGVmZXJyZWRSZXBhaW50VGltZXJGaXJlZChUaW1lcjxGcmFtZVZpZXc+Kik7CiAg
ICAgdm9pZCBkb0RlZmVycmVkUmVwYWludHMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Njcm9sbFZpZXcuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZp
ZXcuaAppbmRleCA4MWE1NmIyNTFjZWQ1NGUwODJhODZlNjliMzRiNDY2YjRkMTY5YjdmLi4yY2Jj
YzI3MGU5NjFkNTU3YjYyYjA1NjZmM2U1YzIzOTRhZTQ1NjRiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2Nyb2xsVmlldy5oCkBAIC01MiwxMyArNTIsMTQgQEAgY2xhc3MgU2Nyb2xsVmlldyA6IHB1
YmxpYyBXaWRnZXQsIHB1YmxpYyBTY3JvbGxhYmxlQXJlYSB7CiBwdWJsaWM6CiAgICAgflNjcm9s
bFZpZXcoKTsKIAotICAgIC8vIFNjcm9sbGFibGVBcmVhIGZ1bmN0aW9ucy4gIEZyYW1lVmlldyBv
dmVycmlkZXMgdGhlIG90aGVycy4KLSAgICB2aXJ0dWFsIGludCBzY3JvbGxTaXplKFNjcm9sbGJh
ck9yaWVudGF0aW9uIG9yaWVudGF0aW9uKSBjb25zdDsKLSAgICB2aXJ0dWFsIGludCBzY3JvbGxQ
b3NpdGlvbihTY3JvbGxiYXIqKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0U2Nyb2xsT2Zm
c2V0KGNvbnN0IEludFBvaW50Jik7CisgICAgLy8gU2Nyb2xsYWJsZUFyZWEgZnVuY3Rpb25zLgor
ICAgIHZpcnR1YWwgaW50IHNjcm9sbFNpemUoU2Nyb2xsYmFyT3JpZW50YXRpb24pIGNvbnN0IE9W
RVJSSURFOworICAgIHZpcnR1YWwgaW50IHNjcm9sbFBvc2l0aW9uKFNjcm9sbGJhciopIGNvbnN0
IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzZXRTY3JvbGxPZmZzZXQoY29uc3QgSW50UG9p
bnQmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNTY3JvbGxDb3JuZXJWaXNpYmxlKCkg
Y29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHNjcm9sbGJhclN0eWxlQ2hhbmdlZChp
bnQgbmV3U3R5bGUsIGJvb2wgZm9yY2VVcGRhdGUpIE9WRVJSSURFOworCiAgICAgdmlydHVhbCB2
b2lkIG5vdGlmeVBhZ2VUaGF0Q29udGVudEFyZWFXaWxsUGFpbnQoKSBjb25zdDsKLSAgICB2aXJ0
dWFsIGJvb2wgaXNTY3JvbGxDb3JuZXJWaXNpYmxlKCkgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lk
IHNjcm9sbGJhclN0eWxlQ2hhbmdlZChpbnQgbmV3U3R5bGUsIGJvb2wgZm9yY2VVcGRhdGUpOwog
CiAgICAgLy8gTk9URTogVGhpcyBzaG91bGQgb25seSBiZSBjYWxsZWQgYnkgdGhlIG92ZXJyaWRl
biBzZXRTY3JvbGxPZmZzZXQgZnJvbSBTY3JvbGxhYmxlQXJlYS4KICAgICB2aXJ0dWFsIHZvaWQg
c2Nyb2xsVG8oY29uc3QgSW50U2l6ZSYgbmV3T2Zmc2V0KTsKQEAgLTc0LDExICs3NSwxMSBAQCBw
dWJsaWM6CiAgICAgY29uc3QgSGFzaFNldDxSZWZQdHI8V2lkZ2V0PiA+KiBjaGlsZHJlbigpIGNv
bnN0IHsgcmV0dXJuICZtX2NoaWxkcmVuOyB9CiAgICAgdmlydHVhbCB2b2lkIGFkZENoaWxkKFBh
c3NSZWZQdHI8V2lkZ2V0Pik7CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZUNoaWxkKFdpZGdldCop
OwotICAgIAorCiAgICAgLy8gSWYgdGhlIHNjcm9sbCB2aWV3IGRvZXMgbm90IHVzZSBhIG5hdGl2
ZSB3aWRnZXQsIHRoZW4gaXQgd2lsbCBoYXZlIGNyb3NzLXBsYXRmb3JtIFNjcm9sbGJhcnMuIFRo
ZXNlIGZ1bmN0aW9ucwogICAgIC8vIGNhbiBiZSB1c2VkIHRvIG9idGFpbiB0aG9zZSBzY3JvbGxi
YXJzLgotICAgIHZpcnR1YWwgU2Nyb2xsYmFyKiBob3Jpem9udGFsU2Nyb2xsYmFyKCkgY29uc3Qg
eyByZXR1cm4gbV9ob3Jpem9udGFsU2Nyb2xsYmFyLmdldCgpOyB9Ci0gICAgdmlydHVhbCBTY3Jv
bGxiYXIqIHZlcnRpY2FsU2Nyb2xsYmFyKCkgY29uc3QgeyByZXR1cm4gbV92ZXJ0aWNhbFNjcm9s
bGJhci5nZXQoKTsgfQorICAgIHZpcnR1YWwgU2Nyb2xsYmFyKiBob3Jpem9udGFsU2Nyb2xsYmFy
KCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV9ob3Jpem9udGFsU2Nyb2xsYmFyLmdldCgpOyB9
CisgICAgdmlydHVhbCBTY3JvbGxiYXIqIHZlcnRpY2FsU2Nyb2xsYmFyKCkgY29uc3QgT1ZFUlJJ
REUgeyByZXR1cm4gbV92ZXJ0aWNhbFNjcm9sbGJhci5nZXQoKTsgfQogICAgIGJvb2wgaXNTY3Jv
bGxWaWV3U2Nyb2xsYmFyKGNvbnN0IFdpZGdldCogY2hpbGQpIGNvbnN0IHsgcmV0dXJuIGhvcml6
b250YWxTY3JvbGxiYXIoKSA9PSBjaGlsZCB8fCB2ZXJ0aWNhbFNjcm9sbGJhcigpID09IGNoaWxk
OyB9CiAKICAgICB2b2lkIHBvc2l0aW9uU2Nyb2xsYmFyTGF5ZXJzKCk7CkBAIC0xMDcsNyArMTA4
LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29sIGF2b2lkU2Nyb2xsYmFyQ3JlYXRpb24o
KSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCi0gICAgdmlydHVhbCB2b2lkIHNldFNjcm9sbGJh
ck92ZXJsYXlTdHlsZShTY3JvbGxiYXJPdmVybGF5U3R5bGUpOworICAgIHZpcnR1YWwgdm9pZCBz
ZXRTY3JvbGxiYXJPdmVybGF5U3R5bGUoU2Nyb2xsYmFyT3ZlcmxheVN0eWxlKSBPVkVSUklERTsK
IAogICAgIC8vIEJ5IGRlZmF1bHQgeW91IG9ubHkgcmVjZWl2ZSBwYWludCBldmVudHMgZm9yIHRo
ZSBhcmVhIHRoYXQgaXMgdmlzaWJsZS4gSW4gdGhlIGNhc2Ugb2YgdXNpbmcgYQogICAgIC8vIHRp
bGVkIGJhY2tpbmcgc3RvcmUsIHRoaXMgZnVuY3Rpb24gY2FuIGJlIHNldCwgc28gdGhhdCB0aGUg
dmlldyBwYWludHMgdGhlIGVudGlyZSBjb250ZW50cy4KQEAgLTE0MywxMiArMTQ0LDEyIEBAIHB1
YmxpYzoKICAgICAvLyBJbiB0aGUgc2l0dWF0aW9uIHRoZSBjbGllbnQgaXMgcmVzcG9uc2libGUg
Zm9yIHRoZSBzY3JvbGxpbmcgKGllLiB3aXRoIGEgdGlsZWQgYmFja2luZyBzdG9yZSkgaXQgaXMg
cG9zc2libGUgdG8gdXNlCiAgICAgLy8gdGhlIHNldEZpeGVkVmlzaWJsZUNvbnRlbnRSZWN0IGlu
c3RlYWQgZm9yIHRoZSBtYWluZnJhbWUsIHRob3VnaCB0aGlzIG11c3QgYmUgdXBkYXRlZCBtYW51
YWxseSwgZS5nIGp1c3QgYmVmb3JlIHJlc3VtaW5nIHRoZSBwYWdlCiAgICAgLy8gd2hpY2ggdXN1
YWxseSB3aWxsIGhhcHBlbiB3aGVuIHBhbm5pbmcsIHBpbmNoaW5nIGFuZCByb3RhdGlvbiBlbmRz
LCBvciB3aGVuIHNjYWxlIG9yIHBvc2l0aW9uIGFyZSBjaGFuZ2VkIG1hbnVhbGx5LgotICAgIHZp
cnR1YWwgSW50UmVjdCB2aXNpYmxlQ29udGVudFJlY3QoYm9vbCBpbmNsdWRlU2Nyb2xsYmFycyA9
IGZhbHNlKSBjb25zdDsKKyAgICB2aXJ0dWFsIEludFJlY3QgdmlzaWJsZUNvbnRlbnRSZWN0KGJv
b2wgaW5jbHVkZVNjcm9sbGJhcnMgPSBmYWxzZSkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVh
bCB2b2lkIHNldEZpeGVkVmlzaWJsZUNvbnRlbnRSZWN0KGNvbnN0IEludFJlY3QmIHZpc2libGVD
b250ZW50UmVjdCkgeyBtX2ZpeGVkVmlzaWJsZUNvbnRlbnRSZWN0ID0gdmlzaWJsZUNvbnRlbnRS
ZWN0OyB9CiAgICAgSW50UmVjdCBmaXhlZFZpc2libGVDb250ZW50UmVjdCgpIGNvbnN0IHsgcmV0
dXJuIG1fZml4ZWRWaXNpYmxlQ29udGVudFJlY3Q7IH0KICAgICBJbnRTaXplIHZpc2libGVTaXpl
KCkgY29uc3QgeyByZXR1cm4gdmlzaWJsZUNvbnRlbnRSZWN0KCkuc2l6ZSgpOyB9Ci0gICAgaW50
IHZpc2libGVXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIHZpc2libGVDb250ZW50UmVjdCgpLndpZHRo
KCk7IH0KLSAgICBpbnQgdmlzaWJsZUhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIHZpc2libGVDb250
ZW50UmVjdCgpLmhlaWdodCgpOyB9CisgICAgdmlydHVhbCBpbnQgdmlzaWJsZVdpZHRoKCkgY29u
c3QgT1ZFUlJJREUgeyByZXR1cm4gdmlzaWJsZUNvbnRlbnRSZWN0KCkud2lkdGgoKTsgfQorICAg
IHZpcnR1YWwgaW50IHZpc2libGVIZWlnaHQoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiB2aXNp
YmxlQ29udGVudFJlY3QoKS5oZWlnaHQoKTsgfQogCiAgICAgLy8gRnVuY3Rpb25zIGZvciBnZXR0
aW5nL3NldHRpbmcgdGhlIHNpemUgd2Via2l0IHNob3VsZCB1c2UgdG8gbGF5b3V0IHRoZSBjb250
ZW50cy4gQnkgZGVmYXVsdCB0aGlzIGlzIHRoZSBzYW1lIGFzIHRoZSB2aXNpYmxlCiAgICAgLy8g
Y29udGVudCBzaXplLiBFeHBsaWNpdGx5IHNldHRpbmcgYSBsYXlvdXQgc2l6ZSB2YWx1ZSB3aWxs
IGNhdXNlIHdlYmtpdCB0byBsYXlvdXQgdGhlIGNvbnRlbnRzIHVzaW5nIHRoaXMgc2l6ZSBpbnN0
ZWFkLgpAQCAtMTYyLDIyICsxNjMsMjIgQEAgcHVibGljOgogICAgIAogICAgIC8vIEZ1bmN0aW9u
cyBmb3IgZ2V0dGluZy9zZXR0aW5nIHRoZSBzaXplIG9mIHRoZSBkb2N1bWVudCBjb250YWluZWQg
aW5zaWRlIHRoZSBTY3JvbGxWaWV3IChhcyBhbiBJbnRTaXplIG9yIGFzIGluZGl2aWR1YWwgd2lk
dGggYW5kIGhlaWdodAogICAgIC8vIHZhbHVlcykuCi0gICAgSW50U2l6ZSBjb250ZW50c1NpemUo
KSBjb25zdDsgLy8gQWx3YXlzIGF0IGxlYXN0IGFzIGJpZyBhcyB0aGUgdmlzaWJsZVdpZHRoKCkv
dmlzaWJsZUhlaWdodCgpLgorICAgIHZpcnR1YWwgSW50U2l6ZSBjb250ZW50c1NpemUoKSBjb25z
dCBPVkVSUklERTsgLy8gQWx3YXlzIGF0IGxlYXN0IGFzIGJpZyBhcyB0aGUgdmlzaWJsZVdpZHRo
KCkvdmlzaWJsZUhlaWdodCgpLgogICAgIGludCBjb250ZW50c1dpZHRoKCkgY29uc3QgeyByZXR1
cm4gY29udGVudHNTaXplKCkud2lkdGgoKTsgfQogICAgIGludCBjb250ZW50c0hlaWdodCgpIGNv
bnN0IHsgcmV0dXJuIGNvbnRlbnRzU2l6ZSgpLmhlaWdodCgpOyB9CiAgICAgdmlydHVhbCB2b2lk
IHNldENvbnRlbnRzU2l6ZShjb25zdCBJbnRTaXplJik7CiAKICAgICAvLyBGdW5jdGlvbnMgZm9y
IHF1ZXJ5aW5nIHRoZSBjdXJyZW50IHNjcm9sbGVkIHBvc2l0aW9uIChib3RoIGFzIGEgcG9pbnQs
IGEgc2l6ZSwgb3IgYXMgaW5kaXZpZHVhbCBYIGFuZCBZIHZhbHVlcykuCi0gICAgSW50UG9pbnQg
c2Nyb2xsUG9zaXRpb24oKSBjb25zdCB7IHJldHVybiB2aXNpYmxlQ29udGVudFJlY3QoKS5sb2Nh
dGlvbigpOyB9CisgICAgdmlydHVhbCBJbnRQb2ludCBzY3JvbGxQb3NpdGlvbigpIGNvbnN0IE9W
RVJSSURFIHsgcmV0dXJuIHZpc2libGVDb250ZW50UmVjdCgpLmxvY2F0aW9uKCk7IH0KICAgICBJ
bnRTaXplIHNjcm9sbE9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIHZpc2libGVDb250ZW50UmVjdCgp
LmxvY2F0aW9uKCkgLSBJbnRQb2ludCgpOyB9IC8vIEdldHMgdGhlIHNjcm9sbGVkIHBvc2l0aW9u
IGFzIGFuIEludFNpemUuIENvbnZlbmllbnQgZm9yIGFkZGluZyB0byBvdGhlciBzaXplcy4KLSAg
ICBJbnRQb2ludCBtYXhpbXVtU2Nyb2xsUG9zaXRpb24oKSBjb25zdDsgLy8gVGhlIG1heGltdW0g
cG9zaXRpb24gd2UgY2FuIGJlIHNjcm9sbGVkIHRvLgotICAgIEludFBvaW50IG1pbmltdW1TY3Jv
bGxQb3NpdGlvbigpIGNvbnN0OyAvLyBUaGUgbWluaW11bSBwb3NpdGlvbiB3ZSBjYW4gYmUgc2Ny
b2xsZWQgdG8uCisgICAgdmlydHVhbCBJbnRQb2ludCBtYXhpbXVtU2Nyb2xsUG9zaXRpb24oKSBj
b25zdCBPVkVSUklERTsgLy8gVGhlIG1heGltdW0gcG9zaXRpb24gd2UgY2FuIGJlIHNjcm9sbGVk
IHRvLgorICAgIHZpcnR1YWwgSW50UG9pbnQgbWluaW11bVNjcm9sbFBvc2l0aW9uKCkgY29uc3Qg
T1ZFUlJJREU7IC8vIFRoZSBtaW5pbXVtIHBvc2l0aW9uIHdlIGNhbiBiZSBzY3JvbGxlZCB0by4K
ICAgICAvLyBBZGp1c3QgdGhlIHBhc3NlZCBpbiBzY3JvbGwgcG9zaXRpb24gdG8ga2VlcCBpdCBi
ZXR3ZWVuIHRoZSBtaW5pbXVtIGFuZCBtYXhpbXVtIHBvc2l0aW9ucy4KICAgICBJbnRQb2ludCBh
ZGp1c3RTY3JvbGxQb3NpdGlvbldpdGhpblJhbmdlKGNvbnN0IEludFBvaW50JikgY29uc3Q7IAog
ICAgIGludCBzY3JvbGxYKCkgY29uc3QgeyByZXR1cm4gc2Nyb2xsUG9zaXRpb24oKS54KCk7IH0K
ICAgICBpbnQgc2Nyb2xsWSgpIGNvbnN0IHsgcmV0dXJuIHNjcm9sbFBvc2l0aW9uKCkueSgpOyB9
CiAKLSAgICBJbnRTaXplIG92ZXJoYW5nQW1vdW50KCkgY29uc3Q7CisgICAgdmlydHVhbCBJbnRT
aXplIG92ZXJoYW5nQW1vdW50KCkgY29uc3QgT1ZFUlJJREU7CiAKICAgICB2b2lkIGNhY2hlQ3Vy
cmVudFNjcm9sbFBvc2l0aW9uKCkgeyBtX2NhY2hlZFNjcm9sbFBvc2l0aW9uID0gc2Nyb2xsUG9z
aXRpb24oKTsgfQogICAgIEludFBvaW50IGNhY2hlZFNjcm9sbFBvc2l0aW9uKCkgY29uc3QgeyBy
ZXR1cm4gbV9jYWNoZWRTY3JvbGxQb3NpdGlvbjsgfQpAQCAtMjc3LDEwICsyNzgsMTAgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgdm9pZCBwYWludFNjcm9sbENvcm5lcihHcmFwaGljc0NvbnRleHQq
LCBjb25zdCBJbnRSZWN0JiBjb3JuZXJSZWN0KTsKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRTY3Jv
bGxiYXIoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyKiwgY29uc3QgSW50UmVjdCYpOwogCi0g
ICAgdmlydHVhbCBJbnRSZWN0IGNvbnZlcnRGcm9tU2Nyb2xsYmFyVG9Db250YWluaW5nVmlldyhj
b25zdCBTY3JvbGxiYXIqLCBjb25zdCBJbnRSZWN0JikgY29uc3Q7Ci0gICAgdmlydHVhbCBJbnRS
ZWN0IGNvbnZlcnRGcm9tQ29udGFpbmluZ1ZpZXdUb1Njcm9sbGJhcihjb25zdCBTY3JvbGxiYXIq
LCBjb25zdCBJbnRSZWN0JikgY29uc3Q7Ci0gICAgdmlydHVhbCBJbnRQb2ludCBjb252ZXJ0RnJv
bVNjcm9sbGJhclRvQ29udGFpbmluZ1ZpZXcoY29uc3QgU2Nyb2xsYmFyKiwgY29uc3QgSW50UG9p
bnQmKSBjb25zdDsKLSAgICB2aXJ0dWFsIEludFBvaW50IGNvbnZlcnRGcm9tQ29udGFpbmluZ1Zp
ZXdUb1Njcm9sbGJhcihjb25zdCBTY3JvbGxiYXIqLCBjb25zdCBJbnRQb2ludCYpIGNvbnN0Owor
ICAgIHZpcnR1YWwgSW50UmVjdCBjb252ZXJ0RnJvbVNjcm9sbGJhclRvQ29udGFpbmluZ1ZpZXco
Y29uc3QgU2Nyb2xsYmFyKiwgY29uc3QgSW50UmVjdCYpIGNvbnN0IE9WRVJSSURFOworICAgIHZp
cnR1YWwgSW50UmVjdCBjb252ZXJ0RnJvbUNvbnRhaW5pbmdWaWV3VG9TY3JvbGxiYXIoY29uc3Qg
U2Nyb2xsYmFyKiwgY29uc3QgSW50UmVjdCYpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwg
SW50UG9pbnQgY29udmVydEZyb21TY3JvbGxiYXJUb0NvbnRhaW5pbmdWaWV3KGNvbnN0IFNjcm9s
bGJhciosIGNvbnN0IEludFBvaW50JikgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBJbnRQ
b2ludCBjb252ZXJ0RnJvbUNvbnRhaW5pbmdWaWV3VG9TY3JvbGxiYXIoY29uc3QgU2Nyb2xsYmFy
KiwgY29uc3QgSW50UG9pbnQmKSBjb25zdCBPVkVSUklERTsKIAogICAgIGJvb2wgY29udGFpbnNT
Y3JvbGxhYmxlQXJlYVdpdGhPdmVybGF5U2Nyb2xsYmFycygpIGNvbnN0IHsgcmV0dXJuIG1fY29u
dGFpbnNTY3JvbGxhYmxlQXJlYVdpdGhPdmVybGF5U2Nyb2xsYmFyczsgfQogICAgIHZvaWQgc2V0
Q29udGFpbnNTY3JvbGxhYmxlQXJlYVdpdGhPdmVybGF5U2Nyb2xsYmFycyhib29sIGNvbnRhaW5z
KSB7IG1fY29udGFpbnNTY3JvbGxhYmxlQXJlYVdpdGhPdmVybGF5U2Nyb2xsYmFycyA9IGNvbnRh
aW5zOyB9CkBAIC0zMDIsNyArMzAzLDcgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgc2V0SGFzVmVy
dGljYWxTY3JvbGxiYXIoYm9vbCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlU2Nyb2xsQ29y
bmVyKCk7Ci0gICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGVTY3JvbGxDb3JuZXJSZWN0KGNvbnN0
IEludFJlY3QmKTsKKyAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZVNjcm9sbENvcm5lclJlY3Qo
Y29uc3QgSW50UmVjdCYpIE9WRVJSSURFOwogCiAgICAgLy8gU2Nyb2xsIHRoZSBjb250ZW50IGJ5
IGJsaXR0aW5nIHRoZSBwaXhlbHMuCiAgICAgdmlydHVhbCBib29sIHNjcm9sbENvbnRlbnRzRmFz
dFBhdGgoY29uc3QgSW50U2l6ZSYgc2Nyb2xsRGVsdGEsIGNvbnN0IEludFJlY3QmIHJlY3RUb1Nj
cm9sbCwgY29uc3QgSW50UmVjdCYgY2xpcFJlY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2Nyb2xsYWJsZUFyZWEuY3BwCmluZGV4IDEwM2UwMzg5OTZiYTIzNGUyMDM1ODYzNTUxZWMxZGZj
MWMxMzQ5ZmMuLmI0ZTdlNTU5MTNkMDdlMDQ5ZjYwMDgzZDU0MGQxMDE0MmY2MTVjYjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5jcHAKQEAgLTM3Myw0ICszNzMs
MzkgQEAgdm9pZCBTY3JvbGxhYmxlQXJlYTo6c2VydmljZVNjcm9sbEFuaW1hdGlvbnMoKQogICAg
ICAgICBzY3JvbGxBbmltYXRvci0+c2VydmljZVNjcm9sbEFuaW1hdGlvbnMoKTsKIH0KIAorSW50
UG9pbnQgU2Nyb2xsYWJsZUFyZWE6OnNjcm9sbFBvc2l0aW9uKCkgY29uc3QKK3sKKyAgICBpbnQg
eCA9IGhvcml6b250YWxTY3JvbGxiYXIoKSA/IGhvcml6b250YWxTY3JvbGxiYXIoKS0+dmFsdWUo
KSA6IDA7CisgICAgaW50IHkgPSB2ZXJ0aWNhbFNjcm9sbGJhcigpID8gdmVydGljYWxTY3JvbGxi
YXIoKS0+dmFsdWUoKSA6IDA7CisgICAgcmV0dXJuIEludFBvaW50KHgsIHkpOworfQorCitJbnRQ
b2ludCBTY3JvbGxhYmxlQXJlYTo6bWluaW11bVNjcm9sbFBvc2l0aW9uKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gSW50UG9pbnQoKTsKK30KKworSW50UG9pbnQgU2Nyb2xsYWJsZUFyZWE6Om1heGlt
dW1TY3JvbGxQb3NpdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIEludFBvaW50KGNvbnRlbnRz
U2l6ZSgpLndpZHRoKCkgLSB2aXNpYmxlV2lkdGgoKSwgY29udGVudHNTaXplKCkuaGVpZ2h0KCkg
LSB2aXNpYmxlSGVpZ2h0KCkpOworfQorCitJbnRSZWN0IFNjcm9sbGFibGVBcmVhOjp2aXNpYmxl
Q29udGVudFJlY3QoYm9vbCBpbmNsdWRlU2Nyb2xsYmFycykgY29uc3QKK3sKKyAgICBpbnQgdmVy
dGljYWxTY3JvbGxiYXJXaWR0aCA9IDA7CisgICAgaW50IGhvcml6b250YWxTY3JvbGxiYXJIZWln
aHQgPSAwOworCisgICAgaWYgKGluY2x1ZGVTY3JvbGxiYXJzKSB7CisgICAgICAgIGlmIChTY3Jv
bGxiYXIqIHZlcnRpY2FsQmFyID0gdmVydGljYWxTY3JvbGxiYXIoKSkKKyAgICAgICAgICAgIHZl
cnRpY2FsU2Nyb2xsYmFyV2lkdGggPSAhdmVydGljYWxCYXItPmlzT3ZlcmxheVNjcm9sbGJhcigp
ID8gdmVydGljYWxCYXItPndpZHRoKCkgOiAwOworICAgICAgICBpZiAoU2Nyb2xsYmFyKiBob3Jp
em9udGFsQmFyID0gaG9yaXpvbnRhbFNjcm9sbGJhcigpKQorICAgICAgICAgICAgaG9yaXpvbnRh
bFNjcm9sbGJhckhlaWdodCA9ICFob3Jpem9udGFsQmFyLT5pc092ZXJsYXlTY3JvbGxiYXIoKSA/
IGhvcml6b250YWxCYXItPmhlaWdodCgpIDogMDsKKyAgICB9CisKKyAgICByZXR1cm4gSW50UmVj
dChzY3JvbGxQb3NpdGlvbigpLngoKSwKKyAgICAgICAgICAgICAgICAgICBzY3JvbGxQb3NpdGlv
bigpLnkoKSwKKyAgICAgICAgICAgICAgICAgICBzdGQ6Om1heCgwLCB2aXNpYmxlV2lkdGgoKSAr
IHZlcnRpY2FsU2Nyb2xsYmFyV2lkdGgpLAorICAgICAgICAgICAgICAgICAgIHN0ZDo6bWF4KDAs
IHZpc2libGVIZWlnaHQoKSArIGhvcml6b250YWxTY3JvbGxiYXJIZWlnaHQpKTsKK30KKwogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2Nyb2xsYWJsZUFyZWEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVh
LmgKaW5kZXggNWEyNzhhOWI1YjljN2MxODUxYTRjNTMzYzYwYjU0NTE1M2ZjZWQzYS4uNzIxZWMz
MmVjOGIzOWJhMGUzMWYwYmI1MDlkZTM2OWY1YzJlZmUxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TY3JvbGxhYmxlQXJlYS5oCkBAIC0xMzMsMjcgKzEzMywyNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCBTY3JvbGxiYXIqIGhvcml6b250YWxTY3JvbGxiYXIoKSBjb25zdCB7IHJldHVybiAw
OyB9CiAgICAgdmlydHVhbCBTY3JvbGxiYXIqIHZlcnRpY2FsU2Nyb2xsYmFyKCkgY29uc3QgeyBy
ZXR1cm4gMDsgfQogCi0gICAgdmlydHVhbCBJbnRQb2ludCBzY3JvbGxQb3NpdGlvbigpIGNvbnN0
IHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiBJbnRQb2ludCgpOyB9Ci0gICAgdmlydHVh
bCBJbnRQb2ludCBtaW5pbXVtU2Nyb2xsUG9zaXRpb24oKSBjb25zdCB7IEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOyByZXR1cm4gSW50UG9pbnQoKTsgfQotICAgIHZpcnR1YWwgSW50UG9pbnQgbWF4aW11
bVNjcm9sbFBvc2l0aW9uKCkgY29uc3QgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIElu
dFBvaW50KCk7IH0KLSAgICB2aXJ0dWFsIEludFJlY3QgdmlzaWJsZUNvbnRlbnRSZWN0KGJvb2wg
LyppbmNsdWRlU2Nyb2xsYmFycyovID0gZmFsc2UpIGNvbnN0IHsgQVNTRVJUX05PVF9SRUFDSEVE
KCk7IHJldHVybiBJbnRSZWN0KCk7IH0KLSAgICB2aXJ0dWFsIGludCB2aXNpYmxlSGVpZ2h0KCkg
Y29uc3QgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIDA7IH0KLSAgICB2aXJ0dWFsIGlu
dCB2aXNpYmxlV2lkdGgoKSBjb25zdCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gMDsg
fQotICAgIHZpcnR1YWwgSW50U2l6ZSBjb250ZW50c1NpemUoKSBjb25zdCB7IEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOyByZXR1cm4gSW50U2l6ZSgpOyB9Ci0gICAgdmlydHVhbCBJbnRTaXplIG92ZXJo
YW5nQW1vdW50KCkgY29uc3QgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIEludFNpemUo
KTsgfQorICAgIHZpcnR1YWwgSW50UG9pbnQgc2Nyb2xsUG9zaXRpb24oKSBjb25zdDsKKyAgICB2
aXJ0dWFsIEludFBvaW50IG1pbmltdW1TY3JvbGxQb3NpdGlvbigpIGNvbnN0OworICAgIHZpcnR1
YWwgSW50UG9pbnQgbWF4aW11bVNjcm9sbFBvc2l0aW9uKCkgY29uc3Q7CisgICAgdmlydHVhbCBJ
bnRSZWN0IHZpc2libGVDb250ZW50UmVjdChib29sIC8qaW5jbHVkZVNjcm9sbGJhcnMqLyA9IGZh
bHNlKSBjb25zdDsKKyAgICB2aXJ0dWFsIGludCB2aXNpYmxlSGVpZ2h0KCkgY29uc3QgPSAwOwor
ICAgIHZpcnR1YWwgaW50IHZpc2libGVXaWR0aCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIElu
dFNpemUgY29udGVudHNTaXplKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgSW50U2l6ZSBvdmVy
aGFuZ0Ftb3VudCgpIGNvbnN0IHsgcmV0dXJuIEludFNpemUoKTsgfQogICAgIHZpcnR1YWwgSW50
UG9pbnQgY3VycmVudE1vdXNlUG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBJbnRQb2ludCgpOyB9
CiAKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkU3VzcGVuZFNjcm9sbEFuaW1hdGlvbnMoKSBjb25z
dCB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCB2b2lkIHNjcm9sbGJhclN0eWxlQ2hhbmdl
ZChpbnQgLypuZXdTdHlsZSovLCBib29sIC8qZm9yY2VVcGRhdGUqLykgeyB9CiAgICAgdmlydHVh
bCB2b2lkIHNldFZpc2libGVTY3JvbGxlclRodW1iUmVjdChjb25zdCBJbnRSZWN0JikgeyB9CiAK
LSAgICB2aXJ0dWFsIGJvb2wgaXNPbkFjdGl2ZVBhZ2UoKSBjb25zdCB7IEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc09uQWN0aXZlUGFnZSgp
IGNvbnN0ID0gMDsKICAgICAKICAgICAvLyBOb3RlIHRoYXQgdGhpcyBvbmx5IHJldHVybnMgc2Ny
b2xsYWJsZSBhcmVhcyB0aGF0IGNhbiBhY3R1YWxseSBiZSBzY3JvbGxlZC4KICAgICB2aXJ0dWFs
IFNjcm9sbGFibGVBcmVhKiBlbmNsb3NpbmdTY3JvbGxhYmxlQXJlYSgpIGNvbnN0ID0gMDsKIAog
ICAgIC8vIFJldHVybnMgdGhlIGJvdW5kaW5nIGJveCBvZiB0aGlzIHNjcm9sbGFibGUgYXJlYSwg
aW4gdGhlIGNvb3JkaW5hdGUgc3lzdGVtIG9mIHRoZSBlbmNsb3Npbmcgc2Nyb2xsIHZpZXcuCi0g
ICAgdmlydHVhbCBJbnRSZWN0IHNjcm9sbGFibGVBcmVhQm91bmRpbmdCb3goKSBjb25zdCB7IEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gSW50UmVjdCgpOyB9CisgICAgdmlydHVhbCBJbnRS
ZWN0IHNjcm9sbGFibGVBcmVhQm91bmRpbmdCb3goKSBjb25zdCA9IDA7CiAKICAgICB2aXJ0dWFs
IGJvb2wgc2hvdWxkUnViYmVyQmFuZEluRGlyZWN0aW9uKFNjcm9sbERpcmVjdGlvbikgY29uc3Qg
eyByZXR1cm4gdHJ1ZTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
aHJvbWl1bS9GcmFtZWxlc3NTY3JvbGxWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2Nocm9taXVtL0ZyYW1lbGVzc1Njcm9sbFZpZXcuY3BwCmluZGV4IDczYmVjMGRmODYzZDk0NDE4
OGMwMGI4ODVjNzNkODFhNTBlNTk3ZDEuLmM0MTA2NzdjYmRkYjI2Njk4MTQ0MGJkNWQ3Y2M4ZTgz
YWNkZWRkZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0Zy
YW1lbGVzc1Njcm9sbFZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9t
aXVtL0ZyYW1lbGVzc1Njcm9sbFZpZXcuY3BwCkBAIC02Myw2ICs2MywxNiBAQCBTY3JvbGxhYmxl
QXJlYSogRnJhbWVsZXNzU2Nyb2xsVmlldzo6ZW5jbG9zaW5nU2Nyb2xsYWJsZUFyZWEoKSBjb25z
dAogICAgIHJldHVybiAwOwogfQogCitib29sIEZyYW1lbGVzc1Njcm9sbFZpZXc6OmlzT25BY3Rp
dmVQYWdlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gaXNBY3RpdmUoKTsKK30KKworSW50UmVjdCBG
cmFtZWxlc3NTY3JvbGxWaWV3OjpzY3JvbGxhYmxlQXJlYUJvdW5kaW5nQm94KCkgY29uc3QKK3sK
KyAgICByZXR1cm4gd2luZG93Q2xpcFJlY3QoZmFsc2UpOworfQorCiB2b2lkIEZyYW1lbGVzc1Nj
cm9sbFZpZXc6OmludmFsaWRhdGVSZWN0KGNvbnN0IEludFJlY3QmIHJlY3QpCiB7CiAgICAgaWYg
KEhvc3RXaW5kb3cqIGggPSBob3N0V2luZG93KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jaHJvbWl1bS9GcmFtZWxlc3NTY3JvbGxWaWV3LmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jaHJvbWl1bS9GcmFtZWxlc3NTY3JvbGxWaWV3LmgKaW5kZXggMzQ5ODQ3NWRj
ZGU1OTA5ODZkMmQzZWIzYmRlNWU0MDUwYjI1OWRlMy4uYWMxZWVjZDFjM2I0ODJhZTgxYjZlN2E2
NTMxNjQ0MWZmZmVjMDIyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hy
b21pdW0vRnJhbWVsZXNzU2Nyb2xsVmlldy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2Nocm9taXVtL0ZyYW1lbGVzc1Njcm9sbFZpZXcuaApAQCAtNzQsOSArNzQsMTEgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogI2VuZGlmCiAKICAgICAgICAgLy8gU2Nyb2xsYWJsZUFyZWEgcHVibGlj
IG1ldGhvZHM6Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlU2Nyb2xsYmFyUmVjdChT
Y3JvbGxiYXIqLCBjb25zdCBJbnRSZWN0Jik7Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBpc0FjdGl2
ZSgpIGNvbnN0OwotICAgICAgICB2aXJ0dWFsIFNjcm9sbGFibGVBcmVhKiBlbmNsb3NpbmdTY3Jv
bGxhYmxlQXJlYSgpIGNvbnN0OworICAgICAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZVNjcm9s
bGJhclJlY3QoU2Nyb2xsYmFyKiwgY29uc3QgSW50UmVjdCYpIE9WRVJSSURFOworICAgICAgICB2
aXJ0dWFsIGJvb2wgaXNBY3RpdmUoKSBjb25zdCBPVkVSUklERTsKKyAgICAgICAgdmlydHVhbCBT
Y3JvbGxhYmxlQXJlYSogZW5jbG9zaW5nU2Nyb2xsYWJsZUFyZWEoKSBjb25zdCBPVkVSUklERTsK
KyAgICAgICAgdmlydHVhbCBib29sIGlzT25BY3RpdmVQYWdlKCkgY29uc3QgT1ZFUlJJREU7Cisg
ICAgICAgIHZpcnR1YWwgSW50UmVjdCBzY3JvbGxhYmxlQXJlYUJvdW5kaW5nQm94KCkgY29uc3Qg
T1ZFUlJJREU7CiAKICAgICAgICAgLy8gV2lkZ2V0IHB1YmxpYyBtZXRob2RzOgogICAgICAgICB2
aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZVJlY3QoY29uc3QgSW50UmVjdCYpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1BvcHVwTWVudVdpbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS93aW4vUG9wdXBNZW51V2luLmNwcAppbmRleCBlYjVjNWIxYTA5MjBmZDIx
MzNmNzQ2MzJhZjZjOWUwMTJiOTBhZWVkLi5hODY4NDdkZGZmNjJjNWFhM2YwMDUwYWMxOTljOWZi
MWU5NGFjMDBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUG9wdXBN
ZW51V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUG9wdXBNZW51V2lu
LmNwcApAQCAtNzI2LDYgKzcyNiwzMSBAQCB2b2lkIFBvcHVwTWVudVdpbjo6aW52YWxpZGF0ZVNj
cm9sbGJhclJlY3QoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmCiAgICAgOjpJ
bnZhbGlkYXRlUmVjdChtX3BvcHVwLCAmciwgZmFsc2UpOwogfQogCitpbnQgUG9wdXBNZW51V2lu
Ojp2aXNpYmxlSGVpZ2h0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9zY3JvbGxiYXIgPyBtX3Nj
cm9sbGJhci0+dmlzaWJsZVNpemUoKSA6IG1fd2luZG93UmVjdC5oZWlnaHQoKTsKK30KKworaW50
IFBvcHVwTWVudVdpbjo6dmlzaWJsZVdpZHRoKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV93aW5k
b3dSZWN0LndpZHRoKCk7Cit9CisKK0ludFNpemUgUG9wdXBNZW51V2luOjpjb250ZW50c1NpemUo
KSBjb25zdAoreworICAgIHJldHVybiBtX3dpbmRvd1JlY3Quc2l6ZSgpOworfQorCitib29sIFBv
cHVwTWVudVdpbjo6aXNPbkFjdGl2ZVBhZ2UoKSBjb25zdAoreworICAgIHJldHVybiBtX3Nob3dQ
b3B1cDsKK30KKworSW50UmVjdCBQb3B1cE1lbnVXaW46OnNjcm9sbGFibGVBcmVhQm91bmRpbmdC
b3goKSBjb25zdAoreworICAgIHJldHVybiBtX3dpbmRvd1JlY3Q7Cit9CisKIHZvaWQgUG9wdXBN
ZW51V2luOjpyZWdpc3RlckNsYXNzKCkKIHsKICAgICBzdGF0aWMgYm9vbCBoYXZlUmVnaXN0ZXJl
ZFdpbmRvd0NsYXNzID0gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS93aW4vUG9wdXBNZW51V2luLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUG9wdXBN
ZW51V2luLmgKaW5kZXggM2FlZTUxY2I5YzY0ZmY2ZDM0NWY1ODIxMGIxZmYwYjgwOGQ1NmViYi4u
OWI2ZmZhN2QzYmM4M2Q4ZjNiMzExYmIwODdmOGRjOWEyNWQ5ZDA4NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1BvcHVwTWVudVdpbi5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3dpbi9Qb3B1cE1lbnVXaW4uaApAQCAtOTEsMTYgKzkxLDIxIEBAIHByaXZh
dGU6CiAgICAgdm9pZCBzZXRTY3JvbGxiYXJDYXB0dXJpbmdNb3VzZShib29sIGIpIHsgbV9zY3Jv
bGxiYXJDYXB0dXJpbmdNb3VzZSA9IGI7IH0KIAogICAgIC8vIFNjcm9sbGFibGVBcmVhCi0gICAg
dmlydHVhbCBpbnQgc2Nyb2xsU2l6ZShTY3JvbGxiYXJPcmllbnRhdGlvbiBvcmllbnRhdGlvbikg
Y29uc3Q7Ci0gICAgdmlydHVhbCBpbnQgc2Nyb2xsUG9zaXRpb24oU2Nyb2xsYmFyKikgY29uc3Q7
Ci0gICAgdmlydHVhbCB2b2lkIHNldFNjcm9sbE9mZnNldChjb25zdCBJbnRQb2ludCYpOwotICAg
IHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlU2Nyb2xsYmFyUmVjdChTY3JvbGxiYXIqLCBjb25zdCBJ
bnRSZWN0Jik7Ci0gICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGVTY3JvbGxDb3JuZXJSZWN0KGNv
bnN0IFdlYkNvcmU6OkludFJlY3QmKSB7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNBY3RpdmUoKSBj
b25zdCB7IHJldHVybiB0cnVlOyB9Ci0gICAgU2Nyb2xsYWJsZUFyZWEqIGVuY2xvc2luZ1Njcm9s
bGFibGVBcmVhKCkgY29uc3QgeyByZXR1cm4gMDsgfQotICAgIHZpcnR1YWwgYm9vbCBpc1Njcm9s
bENvcm5lclZpc2libGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgV2Vi
Q29yZTo6SW50UmVjdCBzY3JvbGxDb3JuZXJSZWN0KCkgY29uc3QgeyByZXR1cm4gV2ViQ29yZTo6
SW50UmVjdCgpOyB9Ci0gICAgdmlydHVhbCBTY3JvbGxiYXIqIHZlcnRpY2FsU2Nyb2xsYmFyKCkg
Y29uc3QgeyByZXR1cm4gbV9zY3JvbGxiYXIuZ2V0KCk7IH0KKyAgICB2aXJ0dWFsIGludCBzY3Jv
bGxTaXplKFNjcm9sbGJhck9yaWVudGF0aW9uKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFs
IGludCBzY3JvbGxQb3NpdGlvbihTY3JvbGxiYXIqKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIHZvaWQgc2V0U2Nyb2xsT2Zmc2V0KGNvbnN0IEludFBvaW50JikgT1ZFUlJJREU7CisgICAg
dmlydHVhbCB2b2lkIGludmFsaWRhdGVTY3JvbGxiYXJSZWN0KFNjcm9sbGJhciosIGNvbnN0IElu
dFJlY3QmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZVNjcm9sbENvcm5l
clJlY3QoY29uc3QgSW50UmVjdCYpIE9WRVJSSURFIHsgfQorICAgIHZpcnR1YWwgYm9vbCBpc0Fj
dGl2ZSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIHRydWU7IH0KKyAgICBTY3JvbGxhYmxlQXJl
YSogZW5jbG9zaW5nU2Nyb2xsYWJsZUFyZWEoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiAwOyB9
CisgICAgdmlydHVhbCBib29sIGlzU2Nyb2xsQ29ybmVyVmlzaWJsZSgpIGNvbnN0IE9WRVJSSURF
IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBJbnRSZWN0IHNjcm9sbENvcm5lclJlY3Qo
KSBjb25zdCBPVkVSUklERSB7IHJldHVybiBJbnRSZWN0KCk7IH0KKyAgICB2aXJ0dWFsIFNjcm9s
bGJhciogdmVydGljYWxTY3JvbGxiYXIoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBtX3Njcm9s
bGJhci5nZXQoKTsgfQorICAgIHZpcnR1YWwgaW50IHZpc2libGVIZWlnaHQoKSBjb25zdCBPVkVS
UklERTsKKyAgICB2aXJ0dWFsIGludCB2aXNpYmxlV2lkdGgoKSBjb25zdCBPVkVSUklERTsKKyAg
ICB2aXJ0dWFsIEludFNpemUgY29udGVudHNTaXplKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmly
dHVhbCBib29sIGlzT25BY3RpdmVQYWdlKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBJ
bnRSZWN0IHNjcm9sbGFibGVBcmVhQm91bmRpbmdCb3goKSBjb25zdCBPVkVSUklERTsKIAogICAg
IC8vIE5PVEU6IFRoaXMgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGJ5IHRoZSBvdmVycmlkZW4gc2V0
U2Nyb2xsT2Zmc2V0IGZyb20gU2Nyb2xsYWJsZUFyZWEuCiAgICAgdm9pZCBzY3JvbGxUbyhpbnQg
b2Zmc2V0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0
Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcAppbmRl
eCA5NDRlYTVmMDgzMjlkNTgxODEyZDkwOTRmZjY1NDM0YjljMjc0ZmYwLi42Mzc2YjA5OGJjNWEx
ZWE1YmVhMjhmNGM3NDg1ZDg4MjUwYjgxOWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxpc3RCb3guY3BwCkBAIC02MzIsMTEgKzYzMiw2IEBAIHZvaWQgUmVuZGVyTGlzdEJv
eDo6c2V0U2Nyb2xsT2Zmc2V0KGNvbnN0IEludFBvaW50JiBvZmZzZXQpCiAgICAgc2Nyb2xsVG8o
b2Zmc2V0LnkoKSk7CiB9CiAKLUludFBvaW50IFJlbmRlckxpc3RCb3g6OnNjcm9sbFBvc2l0aW9u
KCkgY29uc3QKLXsKLSAgICByZXR1cm4gSW50UG9pbnQoMCwgbV9pbmRleE9mZnNldCk7Ci19Ci0K
IHZvaWQgUmVuZGVyTGlzdEJveDo6c2Nyb2xsVG8oaW50IG5ld09mZnNldCkKIHsKICAgICBpZiAo
bmV3T2Zmc2V0ID09IG1faW5kZXhPZmZzZXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxpc3RCb3guaAppbmRleCBkOTY4Yzg3MTc1ZDlmYTM1NmMzMjFmODM3ODQ2OWE4M2NlOGQ5OTQ4
Li40OTYxOTEyMDZmNjQ5MTFiMmFmOTJlOWVlYWNiMmI4YTNlZWQ0MzkxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmgKQEAgLTEwMSwyOCArMTAxLDI3IEBAIHByaXZh
dGU6CiAgICAgdmlydHVhbCBib29sIG5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0Jiwg
SGl0VGVzdFJlc3VsdCYsIGNvbnN0IEhpdFRlc3RQb2ludCYgcG9pbnRJbkNvbnRhaW5lciwgY29u
c3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0LCBIaXRUZXN0QWN0aW9uKSBPVkVSUklE
RTsKIAogICAgIC8vIFNjcm9sbGFibGVBcmVhIGludGVyZmFjZS4KLSAgICB2aXJ0dWFsIGludCBz
Y3JvbGxTaXplKFNjcm9sbGJhck9yaWVudGF0aW9uKSBjb25zdDsKLSAgICB2aXJ0dWFsIGludCBz
Y3JvbGxQb3NpdGlvbihTY3JvbGxiYXIqKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0U2Ny
b2xsT2Zmc2V0KGNvbnN0IEludFBvaW50Jik7Ci0gICAgdmlydHVhbCBJbnRQb2ludCBzY3JvbGxQ
b3NpdGlvbigpIGNvbnN0IE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlU2Ny
b2xsYmFyUmVjdChTY3JvbGxiYXIqLCBjb25zdCBJbnRSZWN0Jik7Ci0gICAgdmlydHVhbCBib29s
IGlzQWN0aXZlKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBib29sIGlzU2Nyb2xsQ29ybmVyVmlzaWJs
ZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9IC8vIFdlIGRvbid0IHN1cHBvcnQgcmVzaXplIG9u
IGxpc3QgYm94ZXMgeWV0LiBJZiB3ZSBkaWQgdGhlc2Ugd291bGQgaGF2ZSB0byBjaGFuZ2UuCi0g
ICAgdmlydHVhbCBJbnRSZWN0IHNjcm9sbENvcm5lclJlY3QoKSBjb25zdCB7IHJldHVybiBJbnRS
ZWN0KCk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZVNjcm9sbENvcm5lclJlY3QoY29u
c3QgSW50UmVjdCYpIHsgfQotICAgIHZpcnR1YWwgSW50UmVjdCBjb252ZXJ0RnJvbVNjcm9sbGJh
clRvQ29udGFpbmluZ1ZpZXcoY29uc3QgU2Nyb2xsYmFyKiwgY29uc3QgSW50UmVjdCYpIGNvbnN0
OwotICAgIHZpcnR1YWwgSW50UmVjdCBjb252ZXJ0RnJvbUNvbnRhaW5pbmdWaWV3VG9TY3JvbGxi
YXIoY29uc3QgU2Nyb2xsYmFyKiwgY29uc3QgSW50UmVjdCYpIGNvbnN0OwotICAgIHZpcnR1YWwg
SW50UG9pbnQgY29udmVydEZyb21TY3JvbGxiYXJUb0NvbnRhaW5pbmdWaWV3KGNvbnN0IFNjcm9s
bGJhciosIGNvbnN0IEludFBvaW50JikgY29uc3Q7Ci0gICAgdmlydHVhbCBJbnRQb2ludCBjb252
ZXJ0RnJvbUNvbnRhaW5pbmdWaWV3VG9TY3JvbGxiYXIoY29uc3QgU2Nyb2xsYmFyKiwgY29uc3Qg
SW50UG9pbnQmKSBjb25zdDsKLSAgICB2aXJ0dWFsIFNjcm9sbGJhciogdmVydGljYWxTY3JvbGxi
YXIoKSBjb25zdCB7IHJldHVybiBtX3ZCYXIuZ2V0KCk7IH0KLSAgICB2aXJ0dWFsIEludFNpemUg
Y29udGVudHNTaXplKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBpbnQgdmlzaWJsZUhlaWdodCgpIGNv
bnN0OwotICAgIHZpcnR1YWwgaW50IHZpc2libGVXaWR0aCgpIGNvbnN0OwotICAgIHZpcnR1YWwg
SW50UG9pbnQgY3VycmVudE1vdXNlUG9zaXRpb24oKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wg
c2hvdWxkU3VzcGVuZFNjcm9sbEFuaW1hdGlvbnMoKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wg
aXNPbkFjdGl2ZVBhZ2UoKSBjb25zdDsKLQotICAgIHZpcnR1YWwgU2Nyb2xsYWJsZUFyZWEqIGVu
Y2xvc2luZ1Njcm9sbGFibGVBcmVhKCkgY29uc3Q7CisgICAgdmlydHVhbCBpbnQgc2Nyb2xsU2l6
ZShTY3JvbGxiYXJPcmllbnRhdGlvbikgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBpbnQg
c2Nyb2xsUG9zaXRpb24oU2Nyb2xsYmFyKikgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2
b2lkIHNldFNjcm9sbE9mZnNldChjb25zdCBJbnRQb2ludCYpIE9WRVJSSURFOworICAgIHZpcnR1
YWwgdm9pZCBpbnZhbGlkYXRlU2Nyb2xsYmFyUmVjdChTY3JvbGxiYXIqLCBjb25zdCBJbnRSZWN0
JikgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGlzQWN0aXZlKCkgY29uc3QgT1ZFUlJJREU7
CisgICAgdmlydHVhbCBib29sIGlzU2Nyb2xsQ29ybmVyVmlzaWJsZSgpIGNvbnN0IE9WRVJSSURF
IHsgcmV0dXJuIGZhbHNlOyB9IC8vIFdlIGRvbid0IHN1cHBvcnQgcmVzaXplIG9uIGxpc3QgYm94
ZXMgeWV0LiBJZiB3ZSBkaWQgdGhlc2Ugd291bGQgaGF2ZSB0byBjaGFuZ2UuCisgICAgdmlydHVh
bCBJbnRSZWN0IHNjcm9sbENvcm5lclJlY3QoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBJbnRS
ZWN0KCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZVNjcm9sbENvcm5lclJlY3QoY29u
c3QgSW50UmVjdCYpIE9WRVJSSURFIHsgfQorICAgIHZpcnR1YWwgSW50UmVjdCBjb252ZXJ0RnJv
bVNjcm9sbGJhclRvQ29udGFpbmluZ1ZpZXcoY29uc3QgU2Nyb2xsYmFyKiwgY29uc3QgSW50UmVj
dCYpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgSW50UmVjdCBjb252ZXJ0RnJvbUNvbnRh
aW5pbmdWaWV3VG9TY3JvbGxiYXIoY29uc3QgU2Nyb2xsYmFyKiwgY29uc3QgSW50UmVjdCYpIGNv
bnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgSW50UG9pbnQgY29udmVydEZyb21TY3JvbGxiYXJU
b0NvbnRhaW5pbmdWaWV3KGNvbnN0IFNjcm9sbGJhciosIGNvbnN0IEludFBvaW50JikgY29uc3Qg
T1ZFUlJJREU7CisgICAgdmlydHVhbCBJbnRQb2ludCBjb252ZXJ0RnJvbUNvbnRhaW5pbmdWaWV3
VG9TY3JvbGxiYXIoY29uc3QgU2Nyb2xsYmFyKiwgY29uc3QgSW50UG9pbnQmKSBjb25zdCBPVkVS
UklERTsKKyAgICB2aXJ0dWFsIFNjcm9sbGJhciogdmVydGljYWxTY3JvbGxiYXIoKSBjb25zdCBP
VkVSUklERSB7IHJldHVybiBtX3ZCYXIuZ2V0KCk7IH0KKyAgICB2aXJ0dWFsIEludFNpemUgY29u
dGVudHNTaXplKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBpbnQgdmlzaWJsZUhlaWdo
dCgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgaW50IHZpc2libGVXaWR0aCgpIGNvbnN0
IE9WRVJSSURFOworICAgIHZpcnR1YWwgSW50UG9pbnQgY3VycmVudE1vdXNlUG9zaXRpb24oKSBj
b25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkU3VzcGVuZFNjcm9sbEFuaW1h
dGlvbnMoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNPbkFjdGl2ZVBhZ2Uo
KSBjb25zdCBPVkVSUklERTsKKworICAgIHZpcnR1YWwgU2Nyb2xsYWJsZUFyZWEqIGVuY2xvc2lu
Z1Njcm9sbGFibGVBcmVhKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBJbnRSZWN0IHNj
cm9sbGFibGVBcmVhQm91bmRpbmdCb3goKSBjb25zdCBPVkVSUklERTsKIAogICAgIC8vIE5PVEU6
IFRoaXMgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGJ5IHRoZSBvdmVycmlkZW4gc2V0U2Nyb2xsT2Zm
c2V0IGZyb20gU2Nyb2xsYWJsZUFyZWEuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9TY3JvbGxiYXJHcm91cC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvU2Ny
b2xsYmFyR3JvdXAuaAppbmRleCBhMDQ3OWMyMDYyN2Q3YmYxNDUxNDQ4OTE5MmQ3M2Q1MTY4Mzhk
ZmI1Li4zY2NjZmRmODc1NzcxMjQ2MjU0MjM4YzY2MGJkZGY0N2YzOWZhZWU3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9TY3JvbGxiYXJHcm91cC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1Njcm9sbGJhckdyb3VwLmgKQEAgLTQ5LDMxICs0OSwzMSBA
QCBwdWJsaWM6CiAgICAgdm9pZCBzZXRGcmFtZVJlY3QoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYp
OwogCiAgICAgLy8gV2ViQ29yZTo6U2Nyb2xsYWJsZUFyZWEgbWV0aG9kcwotICAgIHZpcnR1YWwg
aW50IHNjcm9sbFNpemUoV2ViQ29yZTo6U2Nyb2xsYmFyT3JpZW50YXRpb24pIGNvbnN0OwotICAg
IHZpcnR1YWwgaW50IHNjcm9sbFBvc2l0aW9uKFdlYkNvcmU6OlNjcm9sbGJhciopIGNvbnN0Owot
ICAgIHZpcnR1YWwgdm9pZCBzZXRTY3JvbGxPZmZzZXQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQm
KTsKLSAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZVNjcm9sbGJhclJlY3QoV2ViQ29yZTo6U2Ny
b2xsYmFyKiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpOwotICAgIHZpcnR1YWwgdm9pZCBpbnZh
bGlkYXRlU2Nyb2xsQ29ybmVyUmVjdChjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jik7Ci0gICAgdmly
dHVhbCBib29sIGlzQWN0aXZlKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBTY3JvbGxhYmxlQXJlYSog
ZW5jbG9zaW5nU2Nyb2xsYWJsZUFyZWEoKSBjb25zdDsKLSAgICB2aXJ0dWFsIFdlYkNvcmU6Oklu
dFJlY3Qgc2Nyb2xsQ29ybmVyUmVjdCgpIGNvbnN0IHsgcmV0dXJuIFdlYkNvcmU6OkludFJlY3Qo
KTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc1Njcm9sbENvcm5lclZpc2libGUoKSBjb25zdDsKLSAg
ICB2aXJ0dWFsIHZvaWQgZ2V0VGlja21hcmtzKFZlY3RvcjxXZWJDb3JlOjpJbnRSZWN0PiYpIGNv
bnN0OwotICAgIHZpcnR1YWwgV2ViQ29yZTo6SW50UG9pbnQgY29udmVydEZyb21Db250YWluaW5n
Vmlld1RvU2Nyb2xsYmFyKGNvbnN0IFdlYkNvcmU6OlNjcm9sbGJhciosIGNvbnN0IFdlYkNvcmU6
OkludFBvaW50JiBwYXJlbnRQb2ludCkgY29uc3Q7Ci0gICAgdmlydHVhbCBXZWJDb3JlOjpTY3Jv
bGxiYXIqIGhvcml6b250YWxTY3JvbGxiYXIoKSBjb25zdDsKLSAgICB2aXJ0dWFsIFdlYkNvcmU6
OlNjcm9sbGJhciogdmVydGljYWxTY3JvbGxiYXIoKSBjb25zdDsKLSAgICB2aXJ0dWFsIFdlYkNv
cmU6OkludFBvaW50IHNjcm9sbFBvc2l0aW9uKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBXZWJDb3Jl
OjpJbnRQb2ludCBtaW5pbXVtU2Nyb2xsUG9zaXRpb24oKSBjb25zdDsKLSAgICB2aXJ0dWFsIFdl
YkNvcmU6OkludFBvaW50IG1heGltdW1TY3JvbGxQb3NpdGlvbigpIGNvbnN0OwotICAgIHZpcnR1
YWwgaW50IHZpc2libGVIZWlnaHQoKSBjb25zdDsKLSAgICB2aXJ0dWFsIGludCB2aXNpYmxlV2lk
dGgoKSBjb25zdDsKLSAgICB2aXJ0dWFsIFdlYkNvcmU6OkludFNpemUgY29udGVudHNTaXplKCkg
Y29uc3Q7Ci0gICAgdmlydHVhbCBXZWJDb3JlOjpJbnRTaXplIG92ZXJoYW5nQW1vdW50KCkgY29u
c3Q7Ci0gICAgdmlydHVhbCBXZWJDb3JlOjpJbnRQb2ludCBjdXJyZW50TW91c2VQb3NpdGlvbigp
IGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCBzaG91bGRTdXNwZW5kU2Nyb2xsQW5pbWF0aW9ucygp
IGNvbnN0OwotICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxiYXJTdHlsZUNoYW5nZWQoaW50IG5ld1N0
eWxlLCBib29sIGZvcmNlVXBkYXRlKTsKLSAgICB2aXJ0dWFsIGJvb2wgaXNPbkFjdGl2ZVBhZ2Uo
KSBjb25zdDsKLSAgICB2aXJ0dWFsIFdlYkNvcmU6OkludFJlY3Qgc2Nyb2xsYWJsZUFyZWFCb3Vu
ZGluZ0JveCgpIGNvbnN0OworICAgIHZpcnR1YWwgaW50IHNjcm9sbFNpemUoV2ViQ29yZTo6U2Ny
b2xsYmFyT3JpZW50YXRpb24pIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgaW50IHNjcm9s
bFBvc2l0aW9uKFdlYkNvcmU6OlNjcm9sbGJhciopIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1
YWwgdm9pZCBzZXRTY3JvbGxPZmZzZXQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKSBPVkVSUklE
RTsKKyAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZVNjcm9sbGJhclJlY3QoV2ViQ29yZTo6U2Ny
b2xsYmFyKiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpIE9WRVJSSURFOworICAgIHZpcnR1YWwg
dm9pZCBpbnZhbGlkYXRlU2Nyb2xsQ29ybmVyUmVjdChjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jikg
T1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGlzQWN0aXZlKCkgY29uc3QgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCBTY3JvbGxhYmxlQXJlYSogZW5jbG9zaW5nU2Nyb2xsYWJsZUFyZWEoKSBjb25z
dCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OkludFJlY3Qgc2Nyb2xsQ29ybmVyUmVj
dCgpIGNvbnN0IHsgcmV0dXJuIFdlYkNvcmU6OkludFJlY3QoKSBPVkVSUklERTsgfQorICAgIHZp
cnR1YWwgYm9vbCBpc1Njcm9sbENvcm5lclZpc2libGUoKSBjb25zdCBPVkVSUklERTsKKyAgICB2
aXJ0dWFsIHZvaWQgZ2V0VGlja21hcmtzKFZlY3RvcjxXZWJDb3JlOjpJbnRSZWN0PiYpIGNvbnN0
IE9WRVJSSURFOworICAgIHZpcnR1YWwgV2ViQ29yZTo6SW50UG9pbnQgY29udmVydEZyb21Db250
YWluaW5nVmlld1RvU2Nyb2xsYmFyKGNvbnN0IFdlYkNvcmU6OlNjcm9sbGJhciosIGNvbnN0IFdl
YkNvcmU6OkludFBvaW50JiBwYXJlbnRQb2ludCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVh
bCBXZWJDb3JlOjpTY3JvbGxiYXIqIGhvcml6b250YWxTY3JvbGxiYXIoKSBjb25zdCBPVkVSUklE
RTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OlNjcm9sbGJhciogdmVydGljYWxTY3JvbGxiYXIoKSBj
b25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OkludFBvaW50IHNjcm9sbFBvc2l0
aW9uKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBXZWJDb3JlOjpJbnRQb2ludCBtaW5p
bXVtU2Nyb2xsUG9zaXRpb24oKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6
OkludFBvaW50IG1heGltdW1TY3JvbGxQb3NpdGlvbigpIGNvbnN0IE9WRVJSSURFOworICAgIHZp
cnR1YWwgaW50IHZpc2libGVIZWlnaHQoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGlu
dCB2aXNpYmxlV2lkdGgoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6Oklu
dFNpemUgY29udGVudHNTaXplKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBXZWJDb3Jl
OjpJbnRTaXplIG92ZXJoYW5nQW1vdW50KCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBX
ZWJDb3JlOjpJbnRQb2ludCBjdXJyZW50TW91c2VQb3NpdGlvbigpIGNvbnN0IE9WRVJSSURFOwor
ICAgIHZpcnR1YWwgYm9vbCBzaG91bGRTdXNwZW5kU2Nyb2xsQW5pbWF0aW9ucygpIGNvbnN0IE9W
RVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxiYXJTdHlsZUNoYW5nZWQoaW50IG5ld1N0
eWxlLCBib29sIGZvcmNlVXBkYXRlKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNPbkFj
dGl2ZVBhZ2UoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OkludFJlY3Qg
c2Nyb2xsYWJsZUFyZWFCb3VuZGluZ0JveCgpIGNvbnN0IE9WRVJSSURFOwogCiBwcml2YXRlOgog
ICAgIFdlYkNvcmU6OkZyYW1lVmlldyogbV9mcmFtZVZpZXc7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL1Njcm9sbEFuaW1hdG9yTm9uZVRlc3QuY3BwIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9TY3JvbGxBbmltYXRvck5vbmVUZXN0LmNwcAppbmRleCA5
MjdkNGE5YzMyZGU2OTcyOTk4NjI5ZDFmZDU2Njc1OGI2NTU3ZDMxLi5lNzE4NDZhZGIxNTRiZjlm
YjhmM2NjMmQ3Njc5NTgwYTk0NjA5YTRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL1Njcm9sbEFuaW1hdG9yTm9uZVRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvU2Nyb2xsQW5pbWF0b3JOb25lVGVzdC5jcHAKQEAgLTYzLDEyICs2Mywy
MCBAQCBwdWJsaWM6CiAgICAgTU9DS19NRVRIT0QxKGludmFsaWRhdGVTY3JvbGxDb3JuZXJSZWN0
LCB2b2lkKGNvbnN0IEludFJlY3QmKSk7CiAgICAgTU9DS19NRVRIT0QxKHNldFNjcm9sbE9mZnNl
dEZyb21BbmltYXRpb24sIHZvaWQoY29uc3QgSW50UG9pbnQmKSk7CiAgICAgTU9DS19DT05TVF9N
RVRIT0QwKGVuY2xvc2luZ1Njcm9sbGFibGVBcmVhLCBTY3JvbGxhYmxlQXJlYSooKSk7Ci0KLSAg
ICB2aXJ0dWFsIEludFBvaW50IHNjcm9sbFBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gSW50UG9p
bnQoKTsgfQotICAgIHZpcnR1YWwgaW50IHZpc2libGVIZWlnaHQoKSBjb25zdCB7IHJldHVybiA3
Njg7IH0KLSAgICB2aXJ0dWFsIGludCB2aXNpYmxlV2lkdGgoKSBjb25zdCB7IHJldHVybiAxMDI0
OyB9Ci0KLSAgICBib29sIHNjcm9sbEFuaW1hdG9yRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1f
c2Nyb2xsQW5pbWF0b3JFbmFibGVkOyB9CisgICAgTU9DS19DT05TVF9NRVRIT0QwKG1pbmltdW1T
Y3JvbGxQb3NpdGlvbiwgSW50UG9pbnQoKSk7CisgICAgTU9DS19DT05TVF9NRVRIT0QwKG1heGlt
dW1TY3JvbGxQb3NpdGlvbiwgSW50UG9pbnQoKSk7CisgICAgTU9DS19DT05TVF9NRVRIT0QxKHZp
c2libGVDb250ZW50UmVjdCwgSW50UmVjdChib29sKSk7CisgICAgTU9DS19DT05TVF9NRVRIT0Qw
KGNvbnRlbnRzU2l6ZSwgSW50U2l6ZSgpKTsKKyAgICBNT0NLX0NPTlNUX01FVEhPRDAob3Zlcmhh
bmdBbW91bnQsIEludFNpemUoKSk7CisgICAgTU9DS19DT05TVF9NRVRIT0QwKGlzT25BY3RpdmVQ
YWdlLCBib29sKCkpOworICAgIE1PQ0tfQ09OU1RfTUVUSE9EMChzY3JvbGxhYmxlQXJlYUJvdW5k
aW5nQm94LCBJbnRSZWN0KCkpOworCisgICAgdmlydHVhbCBJbnRQb2ludCBzY3JvbGxQb3NpdGlv
bigpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIEludFBvaW50KCk7IH0KKyAgICB2aXJ0dWFsIGlu
dCB2aXNpYmxlSGVpZ2h0KCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gNzY4OyB9CisgICAgdmly
dHVhbCBpbnQgdmlzaWJsZVdpZHRoKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gMTAyNDsgfQor
ICAgIHZpcnR1YWwgYm9vbCBzY3JvbGxBbmltYXRvckVuYWJsZWQoKSBjb25zdCBPVkVSUklERSB7
IHJldHVybiBtX3Njcm9sbEFuaW1hdG9yRW5hYmxlZDsgfQorCitwcml2YXRlOgogICAgIGJvb2wg
bV9zY3JvbGxBbmltYXRvckVuYWJsZWQ7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L3dpbi9XZWJTY3JvbGxCYXIuY3BwIGIvU291cmNlL1dlYktpdC93aW4vV2ViU2Nyb2xsQmFyLmNw
cAppbmRleCBkMzM4OGMzZDk2MTRmY2Y2NDc4OTAxZjBlMDhhNjE3NTVjZDE1OWM1Li5mMTcyMTk2
YjMxYTY4ZDk0Njk5ZGRkZjQxZWVmM2IwNjBmZmMyMmJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L3dpbi9XZWJTY3JvbGxCYXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYlNjcm9s
bEJhci5jcHAKQEAgLTI4NCwzICsyODQsMjggQEAgU2Nyb2xsYmFyKiBXZWJTY3JvbGxCYXI6OnZl
cnRpY2FsU2Nyb2xsYmFyKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9zY3JvbGxCYXItPm9yaWVu
dGF0aW9uKCkgPT0gVmVydGljYWxTY3JvbGxiYXIgPyBtX3Njcm9sbEJhci5nZXQoKSA6IDA7CiB9
CisKK2ludCBXZWJTY3JvbGxCYXI6OnZpc2libGVIZWlnaHQoKSBjb25zdAoreworICAgIHJldHVy
biBtX3Njcm9sbEJhci0+aGVpZ2h0KCk7Cit9CisKK2ludCBXZWJTY3JvbGxCYXI6OnZpc2libGVX
aWR0aCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc2Nyb2xsQmFyLT53aWR0aCgpOworfQorCitX
ZWJDb3JlOjpJbnRTaXplIFdlYlNjcm9sbEJhcjo6Y29udGVudHNTaXplKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gbV9zY3JvbGxCYXItPmZyYW1lUmVjdCgpLnNpemUoKTsKK30KKworYm9vbCBXZWJT
Y3JvbGxCYXI6OmlzT25BY3RpdmVQYWdlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gdHJ1ZTsKK30K
KworV2ViQ29yZTo6SW50UmVjdCBXZWJTY3JvbGxCYXI6OnNjcm9sbGFibGVBcmVhQm91bmRpbmdC
b3goKSBjb25zdAoreworICAgIHJldHVybiBtX3Njcm9sbEJhci0+ZnJhbWVSZWN0KCk7Cit9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJTY3JvbGxCYXIuaCBiL1NvdXJjZS9XZWJL
aXQvd2luL1dlYlNjcm9sbEJhci5oCmluZGV4IGM5N2QwZDcwMTE4YzNhZGVkOTc0YmU5M2EzNjYx
MWYxZjgwZTcxZjcuLmRmZDFlZjA0MDdiZTdlODQ1NTJhNDEwOTY4ODM3MDVlOGQ4YTE3Y2EgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYlNjcm9sbEJhci5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvd2luL1dlYlNjcm9sbEJhci5oCkBAIC0xMTcsNiArMTE3LDExIEBAIHByb3RlY3RlZDoK
ICAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZVNjcm9sbGJhclJlY3QoV2ViQ29yZTo6U2Nyb2xs
YmFyKiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpOwogICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlk
YXRlU2Nyb2xsQ29ybmVyUmVjdChjb25zdCBXZWJDb3JlOjpJbnRSZWN0JikgeyB9CiAgICAgdmly
dHVhbCBXZWJDb3JlOjpTY3JvbGxhYmxlQXJlYSogZW5jbG9zaW5nU2Nyb2xsYWJsZUFyZWEoKSBj
b25zdCB7IHJldHVybiAwOyB9CisgICAgdmlydHVhbCBpbnQgdmlzaWJsZUhlaWdodCgpIGNvbnN0
IE9WRVJSSURFOworICAgIHZpcnR1YWwgaW50IHZpc2libGVXaWR0aCgpIGNvbnN0IE9WRVJSSURF
OworICAgIHZpcnR1YWwgV2ViQ29yZTo6SW50U2l6ZSBjb250ZW50c1NpemUoKSBjb25zdCBPVkVS
UklERTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNPbkFjdGl2ZVBhZ2UoKSBjb25zdCBPVkVSUklERTsK
KyAgICB2aXJ0dWFsIFdlYkNvcmU6OkludFJlY3Qgc2Nyb2xsYWJsZUFyZWFCb3VuZGluZ0JveCgp
IGNvbnN0IE9WRVJSSURFOwogCiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBwcm92aWRlIGEgd2F5
IHRvIHNldCB0aGlzIHZhbHVlLgogICAgIHZpcnR1YWwgYm9vbCBpc0FjdGl2ZSgpIGNvbnN0IHsg
cmV0dXJuIHRydWU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy93aW4v
V2ViUG9wdXBNZW51UHJveHlXaW4uY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3dpbi9X
ZWJQb3B1cE1lbnVQcm94eVdpbi5jcHAKaW5kZXggZGY0ZTk4NTRiY2M2NTZkY2QwMmU2YWMyZGI4
Y2ZmYmU1NzJhZDRlNi4uNzgyNDJlOGE3MTY2OGM0ZTcwZDg0ZWM0MGM0YTdhZmMzNzFiYmMzMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3dpbi9XZWJQb3B1cE1lbnVQcm94
eVdpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3dpbi9XZWJQb3B1cE1lbnVQ
cm94eVdpbi5jcHAKQEAgLTQ2OSw2ICs0NjksMjYgQEAgdm9pZCBXZWJQb3B1cE1lbnVQcm94eVdp
bjo6c2V0U2Nyb2xsT2Zmc2V0KGNvbnN0IEludFBvaW50JiBvZmZzZXQpCiAgICAgc2Nyb2xsVG8o
b2Zmc2V0LnkoKSk7CiB9CiAKK2ludCBXZWJQb3B1cE1lbnVQcm94eVdpbjo6dmlzaWJsZUhlaWdo
dCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc2Nyb2xsYmFyID8gbV9zY3JvbGxiYXItPnZpc2li
bGVTaXplKCkgOiBjb250ZW50U2l6ZSgpLmhlaWdodCgpOworfQorCitpbnQgV2ViUG9wdXBNZW51
UHJveHlXaW46OnZpc2libGVXaWR0aCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGNvbnRlbnRzU2l6
ZSgpLndpZHRoKCkgLSBtX3Njcm9sbGJhciA/IG1fc2Nyb2xsYmFyLT5mcmFtZVJlY3QoKS53aWR0
aCgpIDogMDsKK30KKworV2ViQ29yZTo6SW50U2l6ZSBXZWJQb3B1cE1lbnVQcm94eVdpbjo6Y29u
dGVudHNTaXplKCkgY29uc3QKK3sKKyAgICByZXR1cm4gY2xpZW50UmVjdCgpLnNpemUoKTsKK30K
KworV2ViQ29yZTo6SW50UmVjdCBXZWJQb3B1cE1lbnVQcm94eVdpbjo6c2Nyb2xsYWJsZUFyZWFC
b3VuZGluZ0JveCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fd2luZG93UmVjdDsKK30KKwogdm9p
ZCBXZWJQb3B1cE1lbnVQcm94eVdpbjo6c2Nyb2xsVG8oaW50IG9mZnNldCkKIHsKICAgICBBU1NF
UlQobV9zY3JvbGxiYXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3dp
bi9XZWJQb3B1cE1lbnVQcm94eVdpbi5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3dpbi9X
ZWJQb3B1cE1lbnVQcm94eVdpbi5oCmluZGV4IGI3YzRkNmQyOTM3ZjJkODI1ODA4OTIzNTBkYWI5
ODA5ZTE3Nzk0ZjIuLjFkMjUzNzNmMWZmYjE5ZDFjYTFlMDdlMWYxNTA0MmY2ZjdhOTA2MDEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy93aW4vV2ViUG9wdXBNZW51UHJveHlX
aW4uaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mvd2luL1dlYlBvcHVwTWVudVByb3h5
V2luLmgKQEAgLTYxLDE2ICs2MSwyMSBAQCBwcml2YXRlOgogICAgIFdlYkNvcmU6OlNjcm9sbGJh
ciogc2Nyb2xsYmFyKCkgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxiYXIuZ2V0KCk7IH0KIAogICAg
IC8vIFNjcm9sbGFibGVBcmVhCi0gICAgdmlydHVhbCBpbnQgc2Nyb2xsU2l6ZShXZWJDb3JlOjpT
Y3JvbGxiYXJPcmllbnRhdGlvbikgY29uc3Q7Ci0gICAgdmlydHVhbCBpbnQgc2Nyb2xsUG9zaXRp
b24oV2ViQ29yZTo6U2Nyb2xsYmFyKikgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIHNldFNjcm9s
bE9mZnNldChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpOwotICAgIHZpcnR1YWwgdm9pZCBpbnZh
bGlkYXRlU2Nyb2xsYmFyUmVjdChXZWJDb3JlOjpTY3JvbGxiYXIqLCBjb25zdCBXZWJDb3JlOjpJ
bnRSZWN0Jik7Ci0gICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGVTY3JvbGxDb3JuZXJSZWN0KGNv
bnN0IFdlYkNvcmU6OkludFJlY3QmKSB7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNBY3RpdmUoKSBj
b25zdCB7IHJldHVybiB0cnVlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzU2Nyb2xsQ29ybmVyVmlz
aWJsZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBXZWJDb3JlOjpJbnRS
ZWN0IHNjcm9sbENvcm5lclJlY3QoKSBjb25zdCB7IHJldHVybiBXZWJDb3JlOjpJbnRSZWN0KCk7
IH0KLSAgICB2aXJ0dWFsIFdlYkNvcmU6OlNjcm9sbGJhciogdmVydGljYWxTY3JvbGxiYXIoKSBj
b25zdCB7IHJldHVybiBtX3Njcm9sbGJhci5nZXQoKTsgfQotICAgIHZpcnR1YWwgV2ViQ29yZTo6
U2Nyb2xsYWJsZUFyZWEqIGVuY2xvc2luZ1Njcm9sbGFibGVBcmVhKCkgY29uc3QgeyByZXR1cm4g
MDsgfQorICAgIHZpcnR1YWwgaW50IHNjcm9sbFNpemUoV2ViQ29yZTo6U2Nyb2xsYmFyT3JpZW50
YXRpb24pIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgaW50IHNjcm9sbFBvc2l0aW9uKFdl
YkNvcmU6OlNjcm9sbGJhciopIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzZXRT
Y3JvbGxPZmZzZXQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKSBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIHZvaWQgaW52YWxpZGF0ZVNjcm9sbGJhclJlY3QoV2ViQ29yZTo6U2Nyb2xsYmFyKiwgY29u
c3QgV2ViQ29yZTo6SW50UmVjdCYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlk
YXRlU2Nyb2xsQ29ybmVyUmVjdChjb25zdCBXZWJDb3JlOjpJbnRSZWN0JikgT1ZFUlJJREUgeyB9
CisgICAgdmlydHVhbCBib29sIGlzQWN0aXZlKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gdHJ1
ZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc1Njcm9sbENvcm5lclZpc2libGUoKSBjb25zdCBPVkVS
UklERSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgV2ViQ29yZTo6SW50UmVjdCBzY3Jv
bGxDb3JuZXJSZWN0KCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gV2ViQ29yZTo6SW50UmVjdCgp
OyB9CisgICAgdmlydHVhbCBXZWJDb3JlOjpTY3JvbGxiYXIqIHZlcnRpY2FsU2Nyb2xsYmFyKCkg
Y29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV9zY3JvbGxiYXIuZ2V0KCk7IH0KKyAgICB2aXJ0dWFs
IFdlYkNvcmU6OlNjcm9sbGFibGVBcmVhKiBlbmNsb3NpbmdTY3JvbGxhYmxlQXJlYSgpIGNvbnN0
IE9WRVJSSURFIHsgcmV0dXJuIDA7IH0KKyAgICB2aXJ0dWFsIGludCB2aXNpYmxlSGVpZ2h0KCkg
Y29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBpbnQgdmlzaWJsZVdpZHRoKCkgY29uc3QgT1ZF
UlJJREU7CisgICAgdmlydHVhbCBXZWJDb3JlOjpJbnRTaXplIGNvbnRlbnRzU2l6ZSgpIGNvbnN0
IE9WRVJSSURFOworICAgIHZpcnR1YWwgV2ViQ29yZTo6SW50UmVjdCBzY3JvbGxhYmxlQXJlYUJv
dW5kaW5nQm94KCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGlzT25BY3RpdmVQ
YWdlKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgLy8gTk9URTogVGhp
cyBzaG91bGQgb25seSBiZSBjYWxsZWQgYnkgdGhlIG92ZXJyaWRlbiBzZXRTY3JvbGxPZmZzZXQg
ZnJvbSBTY3JvbGxhYmxlQXJlYS4KICAgICB2b2lkIHNjcm9sbFRvKGludCBvZmZzZXQpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9CdWlsdEluUERG
Vmlldy5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9CdWlsdEluUERG
Vmlldy5oCmluZGV4IDhhN2MyOGE1YjU5Yjc5YTc4MGZlZTdlOGFhMjM4YzRkNmUwOTYxYWEuLjlj
Y2Q4MDQwMDM3ZTgwMDkxZjk4NTZhM2VkMzkyYzM2NmEwYWFmMzIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvQnVpbHRJblBERlZpZXcuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL0J1aWx0SW5QREZWaWV3LmgKQEAg
LTEyMiwzMCArMTIyLDI5IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBSZXRhaW5QdHI8UERGRG9j
dW1lbnQ+IHBkZkRvY3VtZW50Rm9yUHJpbnRpbmcoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBt
X3BkZkRvY3VtZW50OyB9CiAKICAgICAvLyBTY3JvbGxhYmxlQXJlYSBtZXRob2RzLgotICAgIHZp
cnR1YWwgV2ViQ29yZTo6SW50UmVjdCBzY3JvbGxDb3JuZXJSZWN0KCkgY29uc3Q7Ci0gICAgdmly
dHVhbCBXZWJDb3JlOjpTY3JvbGxhYmxlQXJlYSogZW5jbG9zaW5nU2Nyb2xsYWJsZUFyZWEoKSBj
b25zdDsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OkludFJlY3Qgc2Nyb2xsQ29ybmVyUmVjdCgpIGNv
bnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgV2ViQ29yZTo6U2Nyb2xsYWJsZUFyZWEqIGVuY2xv
c2luZ1Njcm9sbGFibGVBcmVhKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBXZWJDb3Jl
OjpJbnRSZWN0IHNjcm9sbGFibGVBcmVhQm91bmRpbmdCb3goKSBjb25zdCBPVkVSUklERTsKLSAg
ICB2aXJ0dWFsIHZvaWQgc2V0U2Nyb2xsT2Zmc2V0KGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jik7
Ci0gICAgdmlydHVhbCBpbnQgc2Nyb2xsU2l6ZShXZWJDb3JlOjpTY3JvbGxiYXJPcmllbnRhdGlv
bikgY29uc3Q7Ci0gICAgdmlydHVhbCBib29sIGlzQWN0aXZlKCkgY29uc3Q7Ci0gICAgdmlydHVh
bCB2b2lkIGludmFsaWRhdGVTY3JvbGxiYXJSZWN0KFdlYkNvcmU6OlNjcm9sbGJhciosIGNvbnN0
IFdlYkNvcmU6OkludFJlY3QmKTsKLSAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZVNjcm9sbENv
cm5lclJlY3QoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpOwotICAgIHZpcnR1YWwgYm9vbCBpc1Nj
cm9sbENvcm5lclZpc2libGUoKSBjb25zdDsKLSAgICB2aXJ0dWFsIGludCBzY3JvbGxQb3NpdGlv
bihXZWJDb3JlOjpTY3JvbGxiYXIqKSBjb25zdDsKLSAgICB2aXJ0dWFsIFdlYkNvcmU6OkludFBv
aW50IHNjcm9sbFBvc2l0aW9uKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBXZWJDb3JlOjpJbnRQb2lu
dCBtaW5pbXVtU2Nyb2xsUG9zaXRpb24oKSBjb25zdDsKLSAgICB2aXJ0dWFsIFdlYkNvcmU6Oklu
dFBvaW50IG1heGltdW1TY3JvbGxQb3NpdGlvbigpIGNvbnN0OwotICAgIHZpcnR1YWwgaW50IHZp
c2libGVIZWlnaHQoKSBjb25zdDsKLSAgICB2aXJ0dWFsIGludCB2aXNpYmxlV2lkdGgoKSBjb25z
dDsKLSAgICB2aXJ0dWFsIFdlYkNvcmU6OkludFNpemUgY29udGVudHNTaXplKCkgY29uc3Q7Ci0g
ICAgdmlydHVhbCBXZWJDb3JlOjpTY3JvbGxiYXIqIGhvcml6b250YWxTY3JvbGxiYXIoKSBjb25z
dCAgeyByZXR1cm4gbV9ob3Jpem9udGFsU2Nyb2xsYmFyLmdldCgpOyB9Ci0gICAgdmlydHVhbCBX
ZWJDb3JlOjpTY3JvbGxiYXIqIHZlcnRpY2FsU2Nyb2xsYmFyKCkgY29uc3QgeyByZXR1cm4gbV92
ZXJ0aWNhbFNjcm9sbGJhci5nZXQoKTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc09uQWN0aXZlUGFn
ZSgpIGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCBzaG91bGRTdXNwZW5kU2Nyb2xsQW5pbWF0aW9u
cygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9IC8vIElmIHdlIHJldHVybiB0cnVlLCBTY3JvbGxB
bmltYXRvck1hYyB3aWxsIGtlZXAgY3ljbGluZyBhIHRpbWVyIGZvcmV2ZXIsIHdhaXRpbmcgZm9y
IGEgZ29vZCB0aW1lIHRvIGFuaW1hdGUuCi0gICAgdmlydHVhbCB2b2lkIHNjcm9sbGJhclN0eWxl
Q2hhbmdlZChpbnQgbmV3U3R5bGUsIGJvb2wgZm9yY2VVcGRhdGUpOwotCisgICAgdmlydHVhbCB2
b2lkIHNldFNjcm9sbE9mZnNldChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpIE9WRVJSSURFOwor
ICAgIHZpcnR1YWwgaW50IHNjcm9sbFNpemUoV2ViQ29yZTo6U2Nyb2xsYmFyT3JpZW50YXRpb24p
IGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBpc0FjdGl2ZSgpIGNvbnN0IE9WRVJS
SURFOworICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlU2Nyb2xsYmFyUmVjdChXZWJDb3JlOjpT
Y3JvbGxiYXIqLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JikgT1ZFUlJJREU7CisgICAgdmlydHVh
bCB2b2lkIGludmFsaWRhdGVTY3JvbGxDb3JuZXJSZWN0KGNvbnN0IFdlYkNvcmU6OkludFJlY3Qm
KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNTY3JvbGxDb3JuZXJWaXNpYmxlKCkgY29u
c3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBpbnQgc2Nyb2xsUG9zaXRpb24oV2ViQ29yZTo6U2Ny
b2xsYmFyKikgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBXZWJDb3JlOjpJbnRQb2ludCBz
Y3JvbGxQb3NpdGlvbigpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgV2ViQ29yZTo6SW50
UG9pbnQgbWluaW11bVNjcm9sbFBvc2l0aW9uKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVh
bCBXZWJDb3JlOjpJbnRQb2ludCBtYXhpbXVtU2Nyb2xsUG9zaXRpb24oKSBjb25zdCBPVkVSUklE
RTsKKyAgICB2aXJ0dWFsIGludCB2aXNpYmxlSGVpZ2h0KCkgY29uc3QgT1ZFUlJJREU7CisgICAg
dmlydHVhbCBpbnQgdmlzaWJsZVdpZHRoKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBX
ZWJDb3JlOjpJbnRTaXplIGNvbnRlbnRzU2l6ZSgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1
YWwgV2ViQ29yZTo6U2Nyb2xsYmFyKiBob3Jpem9udGFsU2Nyb2xsYmFyKCkgY29uc3QgT1ZFUlJJ
REUgeyByZXR1cm4gbV9ob3Jpem9udGFsU2Nyb2xsYmFyLmdldCgpOyB9CisgICAgdmlydHVhbCBX
ZWJDb3JlOjpTY3JvbGxiYXIqIHZlcnRpY2FsU2Nyb2xsYmFyKCkgY29uc3QgT1ZFUlJJREUgeyBy
ZXR1cm4gbV92ZXJ0aWNhbFNjcm9sbGJhci5nZXQoKTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc09u
QWN0aXZlUGFnZSgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBzaG91bGRTdXNw
ZW5kU2Nyb2xsQW5pbWF0aW9ucygpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIGZhbHNlOyB9IC8v
IElmIHdlIHJldHVybiB0cnVlLCBTY3JvbGxBbmltYXRvck1hYyB3aWxsIGtlZXAgY3ljbGluZyBh
IHRpbWVyIGZvcmV2ZXIsIHdhaXRpbmcgZm9yIGEgZ29vZCB0aW1lIHRvIGFuaW1hdGUuCisgICAg
dmlydHVhbCB2b2lkIHNjcm9sbGJhclN0eWxlQ2hhbmdlZChpbnQgbmV3U3R5bGUsIGJvb2wgZm9y
Y2VVcGRhdGUpIE9WRVJSSURFOwogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhlIG90aGVyIGNv
bnZlcnNpb24gZnVuY3Rpb25zOyB0aGlzIG9uZSBpcyBlbm91Z2ggdG8gZ2V0IHNjcm9sbGJhciBo
aXQgdGVzdGluZyB3b3JraW5nLgotICAgIHZpcnR1YWwgV2ViQ29yZTo6SW50UG9pbnQgY29udmVy
dEZyb21Db250YWluaW5nVmlld1RvU2Nyb2xsYmFyKGNvbnN0IFdlYkNvcmU6OlNjcm9sbGJhcios
IGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwYXJlbnRQb2ludCkgY29uc3Q7CisgICAgdmlydHVh
bCBXZWJDb3JlOjpJbnRQb2ludCBjb252ZXJ0RnJvbUNvbnRhaW5pbmdWaWV3VG9TY3JvbGxiYXIo
Y29uc3QgV2ViQ29yZTo6U2Nyb2xsYmFyKiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBhcmVu
dFBvaW50KSBjb25zdCBPVkVSUklERTsKIAogICAgIEpTT2JqZWN0UmVmIG1ha2VKU1BERkRvYyhK
U0NvbnRleHRSZWYpOwogICAgIHN0YXRpYyBKU1ZhbHVlUmVmIGpzUERGRG9jUHJpbnQoSlNDb250
ZXh0UmVmLCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6
ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVS
ZWYqIGV4Y2VwdGlvbik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>160007</attachid>
            <date>2012-08-22 14:01:44 -0700</date>
            <delta_ts>2012-08-23 10:40:57 -0700</delta_ts>
            <desc>Fix WebPopupMenuProxyWin.cpp error</desc>
            <filename>bug-93306-20120822140142.patch</filename>
            <type>text/plain</type>
            <size>44861</size>
            <attacher name="Adrienne Walker">enne</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI2MzIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOThlYTUyNjMyYjFlYTZk
N2MyYTAxYmExYjI5ZDk0MDdiZjZmMWYzOS4uNDhkOWE4ZDFjZmRkNGNlZTE2OTI1MDY1MjI1Mjc0
ODFkNTc2ZTE3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU0IEBACisyMDEyLTA4LTIyICBBZHJp
ZW5uZSBXYWxrZXIgIDxlbm5lQGdvb2dsZS5jb20+CisKKyAgICAgICAgQ29udmVydCBTY3JvbGxh
YmxlQXJlYSBBU1NFUlRfTk9UX1JFQUNIRUQgdmlydHVhbHMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkzMzA2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
RGFyaW4gQWRsZXIuCisKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEIGlzIGEgYmFkIHdheSB0
byBtYWtlIHN1cmUgdGhhdCBhIHZpcnR1YWwgZnVuY3Rpb24KKyAgICAgICAgZ2V0cyBhbiBvdmVy
cmlkZSwgYmVjYXVzZSBpdCBvbmx5IGZhaWxzIGF0IHJ1bi10aW1lIGluIGRlYnVnIGJ1aWxkcy4K
KworICAgICAgICBUbyBmaXggdGhpcywgY29udmVydCB0aGUgdmlydHVhbHMgaW4gU2Nyb2xsYWJs
ZUFyZWEgdGhhdCBoYXZlCisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCB0byBiZSBlaXRoZXIg
cHVyZSB2aXJ0dWFsIG9yIGltcGxlbWVudGVkIGRpcmVjdGx5CisgICAgICAgIGluIFNjcm9sbGFi
bGVBcmVhLiBBZGQgaW1wbGVtZW50YXRpb25zIHdoZXJlIG5lY2Vzc2FyeSB0byBtYWtlIGRlcml2
ZWQKKyAgICAgICAgY2xhc3NlcyBjb25jcmV0ZS4KKworICAgICAgICBBZGRpdGlvbmFsbHksIGNv
bnNpc3RlbnRseSBhZGQgT1ZFUlJJREUgZm9yIHZpcnR1YWwgZnVuY3Rpb25zIGluCisgICAgICAg
IGRlcml2ZWQgY2xhc3NlcyB0aGF0IG92ZXJyaWRlIFNjcm9sbGFibGVBcmVhIG1ldGhvZHMuCisK
KyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5oOgor
ICAgICAgICAoRnJhbWVWaWV3KToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxWaWV3Lmg6Cisg
ICAgICAgIChTY3JvbGxWaWV3KToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxhYmxlQXJlYTo6c2Nyb2xsUG9zaXRpb24pOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxhYmxlQXJlYTo6bWlu
aW11bVNjcm9sbFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGFibGVBcmVhOjpt
YXhpbXVtU2Nyb2xsUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYWJsZUFyZWE6
OnZpc2libGVDb250ZW50UmVjdCk6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEu
aDoKKyAgICAgICAgKFNjcm9sbGFibGVBcmVhKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGFi
bGVBcmVhOjpvdmVyaGFuZ0Ftb3VudCk6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vRnJh
bWVsZXNzU2Nyb2xsVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZWxlc3NTY3JvbGxW
aWV3Ojppc09uQWN0aXZlUGFnZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lbGVzc1Njcm9sbFZpZXc6OnNjcm9sbGFibGVBcmVhQm91bmRpbmdCb3gpOgorICAg
ICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL0ZyYW1lbGVzc1Njcm9sbFZpZXcuaDoKKyAgICAgICAg
KEZyYW1lbGVzc1Njcm9sbFZpZXcpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9Qb3B1cE1lbnVX
aW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UG9wdXBNZW51V2luOjp2aXNpYmxlSGVpZ2h0KToK
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6UG9wdXBNZW51V2luOjp2aXNp
YmxlV2lkdGgpOgorICAgICAgICAoV2ViQ29yZTo6UG9wdXBNZW51V2luOjpjb250ZW50c1NpemUp
OgorICAgICAgICAoV2ViQ29yZTo6UG9wdXBNZW51V2luOjppc09uQWN0aXZlUGFnZSk6CisgICAg
ICAgIChXZWJDb3JlOjpQb3B1cE1lbnVXaW46OnNjcm9sbGFibGVBcmVhQm91bmRpbmdCb3gpOgor
ICAgICAgICAqIHBsYXRmb3JtL3dpbi9Qb3B1cE1lbnVXaW4uaDoKKyAgICAgICAgKFBvcHVwTWVu
dVdpbik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJMaXN0Qm94Lmg6CisgICAgICAgIChSZW5kZXJMaXN0Qm94KToKKwog
MjAxMi0wOC0yMiAgS2VubmV0aCBSdXNzZWxsICA8a2JyQGdvb2dsZS5jb20+CiAKICAgICAgICAg
VW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjEyNjMxOS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cK
aW5kZXggZDU4MzA3NGNlNjI5MGNhN2NhMzc3Y2JjMDkzNzgwNDFhOTE1MTIxNy4uZDRmNWI1ZDRm
OWY1M2RiNjFmODlkN2FhNDIyOWQwZmJmZTI2MDZlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxOSBAQAorMjAxMi0wOC0yMiAgQWRyaWVubmUgV2Fsa2VyICA8ZW5uZUBn
b29nbGUuY29tPgorCisgICAgICAgIENvbnZlcnQgU2Nyb2xsYWJsZUFyZWEgQVNTRVJUX05PVF9S
RUFDSEVEIHZpcnR1YWxzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD05MzMwNgorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAg
ICAgIEFkZCBpbXBsZW1lbnRhdGlvbnMgd2hlcmUgbmVjZXNzYXJ5IHRvIG1ha2UgZGVyaXZlZCBj
bGFzc2VzIGNvbmNyZXRlLgorICAgICAgICBBZGQgT1ZFUlJJREUgZm9yIFNjcm9sbGFibGVBcmVh
IGZ1bmN0aW9ucy4KKworICAgICAgICAqIHNyYy9TY3JvbGxiYXJHcm91cC5oOgorICAgICAgICAo
U2Nyb2xsYmFyR3JvdXApOgorICAgICAgICAoV2ViS2l0OjpTY3JvbGxiYXJHcm91cDo6c2Nyb2xs
Q29ybmVyUmVjdCk6CisgICAgICAgICogdGVzdHMvU2Nyb2xsQW5pbWF0b3JOb25lVGVzdC5jcHA6
CisgICAgICAgIChNb2NrU2Nyb2xsYWJsZUFyZWEpOgorCiAyMDEyLTA4LTIyICBLZW5uZXRoIFJ1
c3NlbGwgIDxrYnJAZ29vZ2xlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91
dCByMTI2MzE5LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCmluZGV4IGVkNzZmYWY5MDVmNDEyM2ViZjE4ODQ1NGZl
NjQzMTczOWVmNGM5MGQuLjhlZjJjNjVjNmE5MjAyNmM1YjQ4ZjNjOTM3ZDg1OWZlNDY0ODAzNGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAxMi0wOC0yMiAgQWRyaWVubmUg
V2Fsa2VyICA8ZW5uZUBnb29nbGUuY29tPgorCisgICAgICAgIENvbnZlcnQgU2Nyb2xsYWJsZUFy
ZWEgQVNTRVJUX05PVF9SRUFDSEVEIHZpcnR1YWxzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MzMwNgorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmlu
IEFkbGVyLgorCisgICAgICAgIEFkZCBpbXBsZW1lbnRhdGlvbnMgd2hlcmUgbmVjZXNzYXJ5IHRv
IG1ha2UgZGVyaXZlZCBjbGFzc2VzIGNvbmNyZXRlLgorICAgICAgICBBZGQgT1ZFUlJJREUgZm9y
IFNjcm9sbGFibGVBcmVhIGZ1bmN0aW9ucy4KKworICAgICAgICAqIFdlYlNjcm9sbEJhci5jcHA6
CisgICAgICAgIChXZWJTY3JvbGxCYXI6OnZpc2libGVIZWlnaHQpOgorICAgICAgICAoV2ViU2Ny
b2xsQmFyOjp2aXNpYmxlV2lkdGgpOgorICAgICAgICAoV2ViU2Nyb2xsQmFyOjpjb250ZW50c1Np
emUpOgorICAgICAgICAoV2ViU2Nyb2xsQmFyOjppc09uQWN0aXZlUGFnZSk6CisgICAgICAgIChX
ZWJTY3JvbGxCYXI6OnNjcm9sbGFibGVBcmVhQm91bmRpbmdCb3gpOgorICAgICAgICAqIFdlYlNj
cm9sbEJhci5oOgorICAgICAgICAoV2ViU2Nyb2xsQmFyKToKKwogMjAxMi0wOC0xNSAgUnlvc3Vr
ZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBVcGRhdGUgbWFudWFsIHRlc3Rz
IGFuZCBjb21tZW50cyB0byByZWZlciB0byBUZXN0UnVubmVyIGluc3RlYWQgb2YgTGF5b3V0VGVz
dENvbnRyb2xsZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA4NmUzY2UyZWI1YmY5N2RmMmZkMjZiYzE5MzE3M2Y5
YzI2ODAyMDcxLi4yMWI4OGIxNWJlZmIxYjg3MzZkNjM5YTRlYWMxMzUwMTcwNGZjYTU4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTItMDgtMjIgIEFkcmllbm5lIFdhbGtlciAgPGVu
bmVAZ29vZ2xlLmNvbT4KKworICAgICAgICBDb252ZXJ0IFNjcm9sbGFibGVBcmVhIEFTU0VSVF9O
T1RfUkVBQ0hFRCB2aXJ0dWFscworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9OTMzMDYKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKwor
ICAgICAgICBBZGQgaW1wbGVtZW50YXRpb25zIHdoZXJlIG5lY2Vzc2FyeSB0byBtYWtlIGRlcml2
ZWQgY2xhc3NlcyBjb25jcmV0ZS4KKyAgICAgICAgQWRkIE9WRVJSSURFIGZvciBTY3JvbGxhYmxl
QXJlYSBmdW5jdGlvbnMuCisKKyAgICAgICAgKiBVSVByb2Nlc3Mvd2luL1dlYlBvcHVwTWVudVBy
b3h5V2luLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUG9wdXBNZW51UHJveHlXaW46OnZpc2li
bGVIZWlnaHQpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUG9wdXBN
ZW51UHJveHlXaW46OnZpc2libGVXaWR0aCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBvcHVwTWVu
dVByb3h5V2luOjpjb250ZW50c1NpemUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQb3B1cE1lbnVQ
cm94eVdpbjo6c2Nyb2xsYWJsZUFyZWFCb3VuZGluZ0JveCk6CisgICAgICAgICogVUlQcm9jZXNz
L3dpbi9XZWJQb3B1cE1lbnVQcm94eVdpbi5oOgorICAgICAgICAoV2ViUG9wdXBNZW51UHJveHlX
aW4pOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvQnVpbHRJblBERlZpZXcuaDoK
KwogMjAxMi0wOC0yMiAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAg
ICBCcm93c2VyIG1lbnUgdmlzaWJsZSB3aGVuIGNhbGxpbmcgd2Via2l0UmVxdWVzdEZ1bGxzY3Jl
ZW4gYWZ0ZXIgdXNlciBtYW51YWxseSBlbnRlcnMgZnVsbCBzY3JlZW4gbW9kZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LmV4cC5pbgppbmRleCAxNmQwNGEzODBiMTRlZjQ4YjE2MGJiZGJjZDMyODVjOWRjMDVmNWFkLi5l
ZTY1Yjc3ZjQ4MGZiNDA1ZTljMjFlNjYyMjNmMTVkNmNjYzEyZTY4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4
cC5pbgpAQCAtMTYxOSw2ICsxNjE5LDcgQEAgX19aTjdXZWJDb3JlN25zQ29sb3JFUktOU181Q29s
b3JFCiBfX1pON1dlYkNvcmU4SW50UG9pbnRDMUVSSzhfTlNQb2ludAogX19aTjdXZWJDb3JlOUZs
b2F0UmVjdEMxRVJLN19OU1JlY3QKIF9fWk5LN1dlYkNvcmUxMEZsb2F0UG9pbnRjdjhfTlNQb2lu
dEV2CitfX1pOSzdXZWJDb3JlMTRTY3JvbGxhYmxlQXJlYTE4dmlzaWJsZUNvbnRlbnRSZWN0RWIK
IF9fWk5LN1dlYkNvcmU2Q3Vyc29yMTRwbGF0Zm9ybUN1cnNvckV2CiBfX1pOSzdXZWJDb3JlN0lu
dFJlY3RjdjdfTlNSZWN0RXYKIF9fWk5LN1dlYkNvcmU3SW50U2l6ZWN2NkNHU2l6ZUV2CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9GcmFtZVZpZXcuaAppbmRleCA4N2MxMDhiNDhhYzg3NDFmMjgzZDkxNjU2ZGYxNDY3NDI0
YWQ4OTg1Li43MTMzZTJmMjcwMjk4M2EyZDIyMTk4MTIzMzI4ZGU2YWFkYjMxZGU1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRnJhbWVWaWV3LmgKQEAgLTM4NiwyMyArMzg2LDIxIEBAIHByaXZhdGU6CiAKICAgICAv
LyBPdmVycmlkZSBTY3JvbGxWaWV3IG1ldGhvZHMgdG8gZG8gcG9pbnQgY29udmVyc2lvbiB2aWEg
cmVuZGVyZXJzLCBpbiBvcmRlciB0bwogICAgIC8vIHRha2UgdHJhbnNmb3JtcyBpbnRvIGFjY291
bnQuCi0gICAgdmlydHVhbCBJbnRSZWN0IGNvbnZlcnRUb0NvbnRhaW5pbmdWaWV3KGNvbnN0IElu
dFJlY3QmKSBjb25zdDsKLSAgICB2aXJ0dWFsIEludFJlY3QgY29udmVydEZyb21Db250YWluaW5n
Vmlldyhjb25zdCBJbnRSZWN0JikgY29uc3Q7Ci0gICAgdmlydHVhbCBJbnRQb2ludCBjb252ZXJ0
VG9Db250YWluaW5nVmlldyhjb25zdCBJbnRQb2ludCYpIGNvbnN0OwotICAgIHZpcnR1YWwgSW50
UG9pbnQgY29udmVydEZyb21Db250YWluaW5nVmlldyhjb25zdCBJbnRQb2ludCYpIGNvbnN0Owor
ICAgIHZpcnR1YWwgSW50UmVjdCBjb252ZXJ0VG9Db250YWluaW5nVmlldyhjb25zdCBJbnRSZWN0
JikgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBJbnRSZWN0IGNvbnZlcnRGcm9tQ29udGFp
bmluZ1ZpZXcoY29uc3QgSW50UmVjdCYpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgSW50
UG9pbnQgY29udmVydFRvQ29udGFpbmluZ1ZpZXcoY29uc3QgSW50UG9pbnQmKSBjb25zdCBPVkVS
UklERTsKKyAgICB2aXJ0dWFsIEludFBvaW50IGNvbnZlcnRGcm9tQ29udGFpbmluZ1ZpZXcoY29u
c3QgSW50UG9pbnQmKSBjb25zdCBPVkVSUklERTsKIAogICAgIC8vIFNjcm9sbGFibGVBcmVhIGlu
dGVyZmFjZQotICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlU2Nyb2xsYmFyUmVjdChTY3JvbGxi
YXIqLCBjb25zdCBJbnRSZWN0Jik7Ci0gICAgdmlydHVhbCBib29sIGlzQWN0aXZlKCkgY29uc3Q7
Ci0gICAgdmlydHVhbCB2b2lkIGdldFRpY2ttYXJrcyhWZWN0b3I8SW50UmVjdD4mKSBjb25zdDsK
LSAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsVG8oY29uc3QgSW50U2l6ZSYpOwotICAgIHZpcnR1YWwg
dm9pZCBzZXRWaXNpYmxlU2Nyb2xsZXJUaHVtYlJlY3QoY29uc3QgSW50UmVjdCYpOwotICAgIHZp
cnR1YWwgYm9vbCBpc09uQWN0aXZlUGFnZSgpIGNvbnN0OwotICAgIHZpcnR1YWwgU2Nyb2xsYWJs
ZUFyZWEqIGVuY2xvc2luZ1Njcm9sbGFibGVBcmVhKCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lk
IGludmFsaWRhdGVTY3JvbGxiYXJSZWN0KFNjcm9sbGJhciosIGNvbnN0IEludFJlY3QmKSBPVkVS
UklERTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNBY3RpdmUoKSBjb25zdCBPVkVSUklERTsKKyAgICB2
aXJ0dWFsIHZvaWQgZ2V0VGlja21hcmtzKFZlY3RvcjxJbnRSZWN0PiYpIGNvbnN0IE9WRVJSSURF
OworICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxUbyhjb25zdCBJbnRTaXplJikgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCB2b2lkIHNldFZpc2libGVTY3JvbGxlclRodW1iUmVjdChjb25zdCBJbnRSZWN0
JikgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGlzT25BY3RpdmVQYWdlKCkgY29uc3QgT1ZF
UlJJREU7CisgICAgdmlydHVhbCBTY3JvbGxhYmxlQXJlYSogZW5jbG9zaW5nU2Nyb2xsYWJsZUFy
ZWEoKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIEludFJlY3Qgc2Nyb2xsYWJsZUFyZWFC
b3VuZGluZ0JveCgpIGNvbnN0IE9WRVJSSURFOwotCi0gICAgdm9pZCB1cGRhdGVTY3JvbGxhYmxl
QXJlYVNldCgpOwotCisgICAgdmlydHVhbCBib29sIHNjcm9sbEFuaW1hdG9yRW5hYmxlZCgpIGNv
bnN0IE9WRVJSSURFOwogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKICAgICB2aXJ0
dWFsIEdyYXBoaWNzTGF5ZXIqIGxheWVyRm9ySG9yaXpvbnRhbFNjcm9sbGJhcigpIGNvbnN0IE9W
RVJSSURFOwogICAgIHZpcnR1YWwgR3JhcGhpY3NMYXllciogbGF5ZXJGb3JWZXJ0aWNhbFNjcm9s
bGJhcigpIGNvbnN0IE9WRVJSSURFOwpAQCAtNDEyLDkgKzQxMCw5IEBAIHByaXZhdGU6CiAjZW5k
aWYKICNlbmRpZgogCi0gICAgdmlydHVhbCB2b2lkIG5vdGlmeVBhZ2VUaGF0Q29udGVudEFyZWFX
aWxsUGFpbnQoKSBjb25zdDsKKyAgICB2b2lkIHVwZGF0ZVNjcm9sbGFibGVBcmVhU2V0KCk7CiAK
LSAgICB2aXJ0dWFsIGJvb2wgc2Nyb2xsQW5pbWF0b3JFbmFibGVkKCkgY29uc3Q7CisgICAgdmly
dHVhbCB2b2lkIG5vdGlmeVBhZ2VUaGF0Q29udGVudEFyZWFXaWxsUGFpbnQoKSBjb25zdDsKIAog
ICAgIHZvaWQgZGVmZXJyZWRSZXBhaW50VGltZXJGaXJlZChUaW1lcjxGcmFtZVZpZXc+Kik7CiAg
ICAgdm9pZCBkb0RlZmVycmVkUmVwYWludHMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Njcm9sbFZpZXcuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZp
ZXcuaAppbmRleCA4MWE1NmIyNTFjZWQ1NGUwODJhODZlNjliMzRiNDY2YjRkMTY5YjdmLi4yY2Jj
YzI3MGU5NjFkNTU3YjYyYjA1NjZmM2U1YzIzOTRhZTQ1NjRiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2Nyb2xsVmlldy5oCkBAIC01MiwxMyArNTIsMTQgQEAgY2xhc3MgU2Nyb2xsVmlldyA6IHB1
YmxpYyBXaWRnZXQsIHB1YmxpYyBTY3JvbGxhYmxlQXJlYSB7CiBwdWJsaWM6CiAgICAgflNjcm9s
bFZpZXcoKTsKIAotICAgIC8vIFNjcm9sbGFibGVBcmVhIGZ1bmN0aW9ucy4gIEZyYW1lVmlldyBv
dmVycmlkZXMgdGhlIG90aGVycy4KLSAgICB2aXJ0dWFsIGludCBzY3JvbGxTaXplKFNjcm9sbGJh
ck9yaWVudGF0aW9uIG9yaWVudGF0aW9uKSBjb25zdDsKLSAgICB2aXJ0dWFsIGludCBzY3JvbGxQ
b3NpdGlvbihTY3JvbGxiYXIqKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0U2Nyb2xsT2Zm
c2V0KGNvbnN0IEludFBvaW50Jik7CisgICAgLy8gU2Nyb2xsYWJsZUFyZWEgZnVuY3Rpb25zLgor
ICAgIHZpcnR1YWwgaW50IHNjcm9sbFNpemUoU2Nyb2xsYmFyT3JpZW50YXRpb24pIGNvbnN0IE9W
RVJSSURFOworICAgIHZpcnR1YWwgaW50IHNjcm9sbFBvc2l0aW9uKFNjcm9sbGJhciopIGNvbnN0
IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzZXRTY3JvbGxPZmZzZXQoY29uc3QgSW50UG9p
bnQmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNTY3JvbGxDb3JuZXJWaXNpYmxlKCkg
Y29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHNjcm9sbGJhclN0eWxlQ2hhbmdlZChp
bnQgbmV3U3R5bGUsIGJvb2wgZm9yY2VVcGRhdGUpIE9WRVJSSURFOworCiAgICAgdmlydHVhbCB2
b2lkIG5vdGlmeVBhZ2VUaGF0Q29udGVudEFyZWFXaWxsUGFpbnQoKSBjb25zdDsKLSAgICB2aXJ0
dWFsIGJvb2wgaXNTY3JvbGxDb3JuZXJWaXNpYmxlKCkgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lk
IHNjcm9sbGJhclN0eWxlQ2hhbmdlZChpbnQgbmV3U3R5bGUsIGJvb2wgZm9yY2VVcGRhdGUpOwog
CiAgICAgLy8gTk9URTogVGhpcyBzaG91bGQgb25seSBiZSBjYWxsZWQgYnkgdGhlIG92ZXJyaWRl
biBzZXRTY3JvbGxPZmZzZXQgZnJvbSBTY3JvbGxhYmxlQXJlYS4KICAgICB2aXJ0dWFsIHZvaWQg
c2Nyb2xsVG8oY29uc3QgSW50U2l6ZSYgbmV3T2Zmc2V0KTsKQEAgLTc0LDExICs3NSwxMSBAQCBw
dWJsaWM6CiAgICAgY29uc3QgSGFzaFNldDxSZWZQdHI8V2lkZ2V0PiA+KiBjaGlsZHJlbigpIGNv
bnN0IHsgcmV0dXJuICZtX2NoaWxkcmVuOyB9CiAgICAgdmlydHVhbCB2b2lkIGFkZENoaWxkKFBh
c3NSZWZQdHI8V2lkZ2V0Pik7CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZUNoaWxkKFdpZGdldCop
OwotICAgIAorCiAgICAgLy8gSWYgdGhlIHNjcm9sbCB2aWV3IGRvZXMgbm90IHVzZSBhIG5hdGl2
ZSB3aWRnZXQsIHRoZW4gaXQgd2lsbCBoYXZlIGNyb3NzLXBsYXRmb3JtIFNjcm9sbGJhcnMuIFRo
ZXNlIGZ1bmN0aW9ucwogICAgIC8vIGNhbiBiZSB1c2VkIHRvIG9idGFpbiB0aG9zZSBzY3JvbGxi
YXJzLgotICAgIHZpcnR1YWwgU2Nyb2xsYmFyKiBob3Jpem9udGFsU2Nyb2xsYmFyKCkgY29uc3Qg
eyByZXR1cm4gbV9ob3Jpem9udGFsU2Nyb2xsYmFyLmdldCgpOyB9Ci0gICAgdmlydHVhbCBTY3Jv
bGxiYXIqIHZlcnRpY2FsU2Nyb2xsYmFyKCkgY29uc3QgeyByZXR1cm4gbV92ZXJ0aWNhbFNjcm9s
bGJhci5nZXQoKTsgfQorICAgIHZpcnR1YWwgU2Nyb2xsYmFyKiBob3Jpem9udGFsU2Nyb2xsYmFy
KCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV9ob3Jpem9udGFsU2Nyb2xsYmFyLmdldCgpOyB9
CisgICAgdmlydHVhbCBTY3JvbGxiYXIqIHZlcnRpY2FsU2Nyb2xsYmFyKCkgY29uc3QgT1ZFUlJJ
REUgeyByZXR1cm4gbV92ZXJ0aWNhbFNjcm9sbGJhci5nZXQoKTsgfQogICAgIGJvb2wgaXNTY3Jv
bGxWaWV3U2Nyb2xsYmFyKGNvbnN0IFdpZGdldCogY2hpbGQpIGNvbnN0IHsgcmV0dXJuIGhvcml6
b250YWxTY3JvbGxiYXIoKSA9PSBjaGlsZCB8fCB2ZXJ0aWNhbFNjcm9sbGJhcigpID09IGNoaWxk
OyB9CiAKICAgICB2b2lkIHBvc2l0aW9uU2Nyb2xsYmFyTGF5ZXJzKCk7CkBAIC0xMDcsNyArMTA4
LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29sIGF2b2lkU2Nyb2xsYmFyQ3JlYXRpb24o
KSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCi0gICAgdmlydHVhbCB2b2lkIHNldFNjcm9sbGJh
ck92ZXJsYXlTdHlsZShTY3JvbGxiYXJPdmVybGF5U3R5bGUpOworICAgIHZpcnR1YWwgdm9pZCBz
ZXRTY3JvbGxiYXJPdmVybGF5U3R5bGUoU2Nyb2xsYmFyT3ZlcmxheVN0eWxlKSBPVkVSUklERTsK
IAogICAgIC8vIEJ5IGRlZmF1bHQgeW91IG9ubHkgcmVjZWl2ZSBwYWludCBldmVudHMgZm9yIHRo
ZSBhcmVhIHRoYXQgaXMgdmlzaWJsZS4gSW4gdGhlIGNhc2Ugb2YgdXNpbmcgYQogICAgIC8vIHRp
bGVkIGJhY2tpbmcgc3RvcmUsIHRoaXMgZnVuY3Rpb24gY2FuIGJlIHNldCwgc28gdGhhdCB0aGUg
dmlldyBwYWludHMgdGhlIGVudGlyZSBjb250ZW50cy4KQEAgLTE0MywxMiArMTQ0LDEyIEBAIHB1
YmxpYzoKICAgICAvLyBJbiB0aGUgc2l0dWF0aW9uIHRoZSBjbGllbnQgaXMgcmVzcG9uc2libGUg
Zm9yIHRoZSBzY3JvbGxpbmcgKGllLiB3aXRoIGEgdGlsZWQgYmFja2luZyBzdG9yZSkgaXQgaXMg
cG9zc2libGUgdG8gdXNlCiAgICAgLy8gdGhlIHNldEZpeGVkVmlzaWJsZUNvbnRlbnRSZWN0IGlu
c3RlYWQgZm9yIHRoZSBtYWluZnJhbWUsIHRob3VnaCB0aGlzIG11c3QgYmUgdXBkYXRlZCBtYW51
YWxseSwgZS5nIGp1c3QgYmVmb3JlIHJlc3VtaW5nIHRoZSBwYWdlCiAgICAgLy8gd2hpY2ggdXN1
YWxseSB3aWxsIGhhcHBlbiB3aGVuIHBhbm5pbmcsIHBpbmNoaW5nIGFuZCByb3RhdGlvbiBlbmRz
LCBvciB3aGVuIHNjYWxlIG9yIHBvc2l0aW9uIGFyZSBjaGFuZ2VkIG1hbnVhbGx5LgotICAgIHZp
cnR1YWwgSW50UmVjdCB2aXNpYmxlQ29udGVudFJlY3QoYm9vbCBpbmNsdWRlU2Nyb2xsYmFycyA9
IGZhbHNlKSBjb25zdDsKKyAgICB2aXJ0dWFsIEludFJlY3QgdmlzaWJsZUNvbnRlbnRSZWN0KGJv
b2wgaW5jbHVkZVNjcm9sbGJhcnMgPSBmYWxzZSkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVh
bCB2b2lkIHNldEZpeGVkVmlzaWJsZUNvbnRlbnRSZWN0KGNvbnN0IEludFJlY3QmIHZpc2libGVD
b250ZW50UmVjdCkgeyBtX2ZpeGVkVmlzaWJsZUNvbnRlbnRSZWN0ID0gdmlzaWJsZUNvbnRlbnRS
ZWN0OyB9CiAgICAgSW50UmVjdCBmaXhlZFZpc2libGVDb250ZW50UmVjdCgpIGNvbnN0IHsgcmV0
dXJuIG1fZml4ZWRWaXNpYmxlQ29udGVudFJlY3Q7IH0KICAgICBJbnRTaXplIHZpc2libGVTaXpl
KCkgY29uc3QgeyByZXR1cm4gdmlzaWJsZUNvbnRlbnRSZWN0KCkuc2l6ZSgpOyB9Ci0gICAgaW50
IHZpc2libGVXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIHZpc2libGVDb250ZW50UmVjdCgpLndpZHRo
KCk7IH0KLSAgICBpbnQgdmlzaWJsZUhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIHZpc2libGVDb250
ZW50UmVjdCgpLmhlaWdodCgpOyB9CisgICAgdmlydHVhbCBpbnQgdmlzaWJsZVdpZHRoKCkgY29u
c3QgT1ZFUlJJREUgeyByZXR1cm4gdmlzaWJsZUNvbnRlbnRSZWN0KCkud2lkdGgoKTsgfQorICAg
IHZpcnR1YWwgaW50IHZpc2libGVIZWlnaHQoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiB2aXNp
YmxlQ29udGVudFJlY3QoKS5oZWlnaHQoKTsgfQogCiAgICAgLy8gRnVuY3Rpb25zIGZvciBnZXR0
aW5nL3NldHRpbmcgdGhlIHNpemUgd2Via2l0IHNob3VsZCB1c2UgdG8gbGF5b3V0IHRoZSBjb250
ZW50cy4gQnkgZGVmYXVsdCB0aGlzIGlzIHRoZSBzYW1lIGFzIHRoZSB2aXNpYmxlCiAgICAgLy8g
Y29udGVudCBzaXplLiBFeHBsaWNpdGx5IHNldHRpbmcgYSBsYXlvdXQgc2l6ZSB2YWx1ZSB3aWxs
IGNhdXNlIHdlYmtpdCB0byBsYXlvdXQgdGhlIGNvbnRlbnRzIHVzaW5nIHRoaXMgc2l6ZSBpbnN0
ZWFkLgpAQCAtMTYyLDIyICsxNjMsMjIgQEAgcHVibGljOgogICAgIAogICAgIC8vIEZ1bmN0aW9u
cyBmb3IgZ2V0dGluZy9zZXR0aW5nIHRoZSBzaXplIG9mIHRoZSBkb2N1bWVudCBjb250YWluZWQg
aW5zaWRlIHRoZSBTY3JvbGxWaWV3IChhcyBhbiBJbnRTaXplIG9yIGFzIGluZGl2aWR1YWwgd2lk
dGggYW5kIGhlaWdodAogICAgIC8vIHZhbHVlcykuCi0gICAgSW50U2l6ZSBjb250ZW50c1NpemUo
KSBjb25zdDsgLy8gQWx3YXlzIGF0IGxlYXN0IGFzIGJpZyBhcyB0aGUgdmlzaWJsZVdpZHRoKCkv
dmlzaWJsZUhlaWdodCgpLgorICAgIHZpcnR1YWwgSW50U2l6ZSBjb250ZW50c1NpemUoKSBjb25z
dCBPVkVSUklERTsgLy8gQWx3YXlzIGF0IGxlYXN0IGFzIGJpZyBhcyB0aGUgdmlzaWJsZVdpZHRo
KCkvdmlzaWJsZUhlaWdodCgpLgogICAgIGludCBjb250ZW50c1dpZHRoKCkgY29uc3QgeyByZXR1
cm4gY29udGVudHNTaXplKCkud2lkdGgoKTsgfQogICAgIGludCBjb250ZW50c0hlaWdodCgpIGNv
bnN0IHsgcmV0dXJuIGNvbnRlbnRzU2l6ZSgpLmhlaWdodCgpOyB9CiAgICAgdmlydHVhbCB2b2lk
IHNldENvbnRlbnRzU2l6ZShjb25zdCBJbnRTaXplJik7CiAKICAgICAvLyBGdW5jdGlvbnMgZm9y
IHF1ZXJ5aW5nIHRoZSBjdXJyZW50IHNjcm9sbGVkIHBvc2l0aW9uIChib3RoIGFzIGEgcG9pbnQs
IGEgc2l6ZSwgb3IgYXMgaW5kaXZpZHVhbCBYIGFuZCBZIHZhbHVlcykuCi0gICAgSW50UG9pbnQg
c2Nyb2xsUG9zaXRpb24oKSBjb25zdCB7IHJldHVybiB2aXNpYmxlQ29udGVudFJlY3QoKS5sb2Nh
dGlvbigpOyB9CisgICAgdmlydHVhbCBJbnRQb2ludCBzY3JvbGxQb3NpdGlvbigpIGNvbnN0IE9W
RVJSSURFIHsgcmV0dXJuIHZpc2libGVDb250ZW50UmVjdCgpLmxvY2F0aW9uKCk7IH0KICAgICBJ
bnRTaXplIHNjcm9sbE9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIHZpc2libGVDb250ZW50UmVjdCgp
LmxvY2F0aW9uKCkgLSBJbnRQb2ludCgpOyB9IC8vIEdldHMgdGhlIHNjcm9sbGVkIHBvc2l0aW9u
IGFzIGFuIEludFNpemUuIENvbnZlbmllbnQgZm9yIGFkZGluZyB0byBvdGhlciBzaXplcy4KLSAg
ICBJbnRQb2ludCBtYXhpbXVtU2Nyb2xsUG9zaXRpb24oKSBjb25zdDsgLy8gVGhlIG1heGltdW0g
cG9zaXRpb24gd2UgY2FuIGJlIHNjcm9sbGVkIHRvLgotICAgIEludFBvaW50IG1pbmltdW1TY3Jv
bGxQb3NpdGlvbigpIGNvbnN0OyAvLyBUaGUgbWluaW11bSBwb3NpdGlvbiB3ZSBjYW4gYmUgc2Ny
b2xsZWQgdG8uCisgICAgdmlydHVhbCBJbnRQb2ludCBtYXhpbXVtU2Nyb2xsUG9zaXRpb24oKSBj
b25zdCBPVkVSUklERTsgLy8gVGhlIG1heGltdW0gcG9zaXRpb24gd2UgY2FuIGJlIHNjcm9sbGVk
IHRvLgorICAgIHZpcnR1YWwgSW50UG9pbnQgbWluaW11bVNjcm9sbFBvc2l0aW9uKCkgY29uc3Qg
T1ZFUlJJREU7IC8vIFRoZSBtaW5pbXVtIHBvc2l0aW9uIHdlIGNhbiBiZSBzY3JvbGxlZCB0by4K
ICAgICAvLyBBZGp1c3QgdGhlIHBhc3NlZCBpbiBzY3JvbGwgcG9zaXRpb24gdG8ga2VlcCBpdCBi
ZXR3ZWVuIHRoZSBtaW5pbXVtIGFuZCBtYXhpbXVtIHBvc2l0aW9ucy4KICAgICBJbnRQb2ludCBh
ZGp1c3RTY3JvbGxQb3NpdGlvbldpdGhpblJhbmdlKGNvbnN0IEludFBvaW50JikgY29uc3Q7IAog
ICAgIGludCBzY3JvbGxYKCkgY29uc3QgeyByZXR1cm4gc2Nyb2xsUG9zaXRpb24oKS54KCk7IH0K
ICAgICBpbnQgc2Nyb2xsWSgpIGNvbnN0IHsgcmV0dXJuIHNjcm9sbFBvc2l0aW9uKCkueSgpOyB9
CiAKLSAgICBJbnRTaXplIG92ZXJoYW5nQW1vdW50KCkgY29uc3Q7CisgICAgdmlydHVhbCBJbnRT
aXplIG92ZXJoYW5nQW1vdW50KCkgY29uc3QgT1ZFUlJJREU7CiAKICAgICB2b2lkIGNhY2hlQ3Vy
cmVudFNjcm9sbFBvc2l0aW9uKCkgeyBtX2NhY2hlZFNjcm9sbFBvc2l0aW9uID0gc2Nyb2xsUG9z
aXRpb24oKTsgfQogICAgIEludFBvaW50IGNhY2hlZFNjcm9sbFBvc2l0aW9uKCkgY29uc3QgeyBy
ZXR1cm4gbV9jYWNoZWRTY3JvbGxQb3NpdGlvbjsgfQpAQCAtMjc3LDEwICsyNzgsMTAgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgdm9pZCBwYWludFNjcm9sbENvcm5lcihHcmFwaGljc0NvbnRleHQq
LCBjb25zdCBJbnRSZWN0JiBjb3JuZXJSZWN0KTsKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRTY3Jv
bGxiYXIoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyKiwgY29uc3QgSW50UmVjdCYpOwogCi0g
ICAgdmlydHVhbCBJbnRSZWN0IGNvbnZlcnRGcm9tU2Nyb2xsYmFyVG9Db250YWluaW5nVmlldyhj
b25zdCBTY3JvbGxiYXIqLCBjb25zdCBJbnRSZWN0JikgY29uc3Q7Ci0gICAgdmlydHVhbCBJbnRS
ZWN0IGNvbnZlcnRGcm9tQ29udGFpbmluZ1ZpZXdUb1Njcm9sbGJhcihjb25zdCBTY3JvbGxiYXIq
LCBjb25zdCBJbnRSZWN0JikgY29uc3Q7Ci0gICAgdmlydHVhbCBJbnRQb2ludCBjb252ZXJ0RnJv
bVNjcm9sbGJhclRvQ29udGFpbmluZ1ZpZXcoY29uc3QgU2Nyb2xsYmFyKiwgY29uc3QgSW50UG9p
bnQmKSBjb25zdDsKLSAgICB2aXJ0dWFsIEludFBvaW50IGNvbnZlcnRGcm9tQ29udGFpbmluZ1Zp
ZXdUb1Njcm9sbGJhcihjb25zdCBTY3JvbGxiYXIqLCBjb25zdCBJbnRQb2ludCYpIGNvbnN0Owor
ICAgIHZpcnR1YWwgSW50UmVjdCBjb252ZXJ0RnJvbVNjcm9sbGJhclRvQ29udGFpbmluZ1ZpZXco
Y29uc3QgU2Nyb2xsYmFyKiwgY29uc3QgSW50UmVjdCYpIGNvbnN0IE9WRVJSSURFOworICAgIHZp
cnR1YWwgSW50UmVjdCBjb252ZXJ0RnJvbUNvbnRhaW5pbmdWaWV3VG9TY3JvbGxiYXIoY29uc3Qg
U2Nyb2xsYmFyKiwgY29uc3QgSW50UmVjdCYpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwg
SW50UG9pbnQgY29udmVydEZyb21TY3JvbGxiYXJUb0NvbnRhaW5pbmdWaWV3KGNvbnN0IFNjcm9s
bGJhciosIGNvbnN0IEludFBvaW50JikgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBJbnRQ
b2ludCBjb252ZXJ0RnJvbUNvbnRhaW5pbmdWaWV3VG9TY3JvbGxiYXIoY29uc3QgU2Nyb2xsYmFy
KiwgY29uc3QgSW50UG9pbnQmKSBjb25zdCBPVkVSUklERTsKIAogICAgIGJvb2wgY29udGFpbnNT
Y3JvbGxhYmxlQXJlYVdpdGhPdmVybGF5U2Nyb2xsYmFycygpIGNvbnN0IHsgcmV0dXJuIG1fY29u
dGFpbnNTY3JvbGxhYmxlQXJlYVdpdGhPdmVybGF5U2Nyb2xsYmFyczsgfQogICAgIHZvaWQgc2V0
Q29udGFpbnNTY3JvbGxhYmxlQXJlYVdpdGhPdmVybGF5U2Nyb2xsYmFycyhib29sIGNvbnRhaW5z
KSB7IG1fY29udGFpbnNTY3JvbGxhYmxlQXJlYVdpdGhPdmVybGF5U2Nyb2xsYmFycyA9IGNvbnRh
aW5zOyB9CkBAIC0zMDIsNyArMzAzLDcgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgc2V0SGFzVmVy
dGljYWxTY3JvbGxiYXIoYm9vbCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlU2Nyb2xsQ29y
bmVyKCk7Ci0gICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGVTY3JvbGxDb3JuZXJSZWN0KGNvbnN0
IEludFJlY3QmKTsKKyAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZVNjcm9sbENvcm5lclJlY3Qo
Y29uc3QgSW50UmVjdCYpIE9WRVJSSURFOwogCiAgICAgLy8gU2Nyb2xsIHRoZSBjb250ZW50IGJ5
IGJsaXR0aW5nIHRoZSBwaXhlbHMuCiAgICAgdmlydHVhbCBib29sIHNjcm9sbENvbnRlbnRzRmFz
dFBhdGgoY29uc3QgSW50U2l6ZSYgc2Nyb2xsRGVsdGEsIGNvbnN0IEludFJlY3QmIHJlY3RUb1Nj
cm9sbCwgY29uc3QgSW50UmVjdCYgY2xpcFJlY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2Nyb2xsYWJsZUFyZWEuY3BwCmluZGV4IDEwM2UwMzg5OTZiYTIzNGUyMDM1ODYzNTUxZWMxZGZj
MWMxMzQ5ZmMuLmI0ZTdlNTU5MTNkMDdlMDQ5ZjYwMDgzZDU0MGQxMDE0MmY2MTVjYjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5jcHAKQEAgLTM3Myw0ICszNzMs
MzkgQEAgdm9pZCBTY3JvbGxhYmxlQXJlYTo6c2VydmljZVNjcm9sbEFuaW1hdGlvbnMoKQogICAg
ICAgICBzY3JvbGxBbmltYXRvci0+c2VydmljZVNjcm9sbEFuaW1hdGlvbnMoKTsKIH0KIAorSW50
UG9pbnQgU2Nyb2xsYWJsZUFyZWE6OnNjcm9sbFBvc2l0aW9uKCkgY29uc3QKK3sKKyAgICBpbnQg
eCA9IGhvcml6b250YWxTY3JvbGxiYXIoKSA/IGhvcml6b250YWxTY3JvbGxiYXIoKS0+dmFsdWUo
KSA6IDA7CisgICAgaW50IHkgPSB2ZXJ0aWNhbFNjcm9sbGJhcigpID8gdmVydGljYWxTY3JvbGxi
YXIoKS0+dmFsdWUoKSA6IDA7CisgICAgcmV0dXJuIEludFBvaW50KHgsIHkpOworfQorCitJbnRQ
b2ludCBTY3JvbGxhYmxlQXJlYTo6bWluaW11bVNjcm9sbFBvc2l0aW9uKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gSW50UG9pbnQoKTsKK30KKworSW50UG9pbnQgU2Nyb2xsYWJsZUFyZWE6Om1heGlt
dW1TY3JvbGxQb3NpdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIEludFBvaW50KGNvbnRlbnRz
U2l6ZSgpLndpZHRoKCkgLSB2aXNpYmxlV2lkdGgoKSwgY29udGVudHNTaXplKCkuaGVpZ2h0KCkg
LSB2aXNpYmxlSGVpZ2h0KCkpOworfQorCitJbnRSZWN0IFNjcm9sbGFibGVBcmVhOjp2aXNpYmxl
Q29udGVudFJlY3QoYm9vbCBpbmNsdWRlU2Nyb2xsYmFycykgY29uc3QKK3sKKyAgICBpbnQgdmVy
dGljYWxTY3JvbGxiYXJXaWR0aCA9IDA7CisgICAgaW50IGhvcml6b250YWxTY3JvbGxiYXJIZWln
aHQgPSAwOworCisgICAgaWYgKGluY2x1ZGVTY3JvbGxiYXJzKSB7CisgICAgICAgIGlmIChTY3Jv
bGxiYXIqIHZlcnRpY2FsQmFyID0gdmVydGljYWxTY3JvbGxiYXIoKSkKKyAgICAgICAgICAgIHZl
cnRpY2FsU2Nyb2xsYmFyV2lkdGggPSAhdmVydGljYWxCYXItPmlzT3ZlcmxheVNjcm9sbGJhcigp
ID8gdmVydGljYWxCYXItPndpZHRoKCkgOiAwOworICAgICAgICBpZiAoU2Nyb2xsYmFyKiBob3Jp
em9udGFsQmFyID0gaG9yaXpvbnRhbFNjcm9sbGJhcigpKQorICAgICAgICAgICAgaG9yaXpvbnRh
bFNjcm9sbGJhckhlaWdodCA9ICFob3Jpem9udGFsQmFyLT5pc092ZXJsYXlTY3JvbGxiYXIoKSA/
IGhvcml6b250YWxCYXItPmhlaWdodCgpIDogMDsKKyAgICB9CisKKyAgICByZXR1cm4gSW50UmVj
dChzY3JvbGxQb3NpdGlvbigpLngoKSwKKyAgICAgICAgICAgICAgICAgICBzY3JvbGxQb3NpdGlv
bigpLnkoKSwKKyAgICAgICAgICAgICAgICAgICBzdGQ6Om1heCgwLCB2aXNpYmxlV2lkdGgoKSAr
IHZlcnRpY2FsU2Nyb2xsYmFyV2lkdGgpLAorICAgICAgICAgICAgICAgICAgIHN0ZDo6bWF4KDAs
IHZpc2libGVIZWlnaHQoKSArIGhvcml6b250YWxTY3JvbGxiYXJIZWlnaHQpKTsKK30KKwogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2Nyb2xsYWJsZUFyZWEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVh
LmgKaW5kZXggNWEyNzhhOWI1YjljN2MxODUxYTRjNTMzYzYwYjU0NTE1M2ZjZWQzYS4uNzIxZWMz
MmVjOGIzOWJhMGUzMWYwYmI1MDlkZTM2OWY1YzJlZmUxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TY3JvbGxhYmxlQXJlYS5oCkBAIC0xMzMsMjcgKzEzMywyNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCBTY3JvbGxiYXIqIGhvcml6b250YWxTY3JvbGxiYXIoKSBjb25zdCB7IHJldHVybiAw
OyB9CiAgICAgdmlydHVhbCBTY3JvbGxiYXIqIHZlcnRpY2FsU2Nyb2xsYmFyKCkgY29uc3QgeyBy
ZXR1cm4gMDsgfQogCi0gICAgdmlydHVhbCBJbnRQb2ludCBzY3JvbGxQb3NpdGlvbigpIGNvbnN0
IHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiBJbnRQb2ludCgpOyB9Ci0gICAgdmlydHVh
bCBJbnRQb2ludCBtaW5pbXVtU2Nyb2xsUG9zaXRpb24oKSBjb25zdCB7IEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOyByZXR1cm4gSW50UG9pbnQoKTsgfQotICAgIHZpcnR1YWwgSW50UG9pbnQgbWF4aW11
bVNjcm9sbFBvc2l0aW9uKCkgY29uc3QgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIElu
dFBvaW50KCk7IH0KLSAgICB2aXJ0dWFsIEludFJlY3QgdmlzaWJsZUNvbnRlbnRSZWN0KGJvb2wg
LyppbmNsdWRlU2Nyb2xsYmFycyovID0gZmFsc2UpIGNvbnN0IHsgQVNTRVJUX05PVF9SRUFDSEVE
KCk7IHJldHVybiBJbnRSZWN0KCk7IH0KLSAgICB2aXJ0dWFsIGludCB2aXNpYmxlSGVpZ2h0KCkg
Y29uc3QgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIDA7IH0KLSAgICB2aXJ0dWFsIGlu
dCB2aXNpYmxlV2lkdGgoKSBjb25zdCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gMDsg
fQotICAgIHZpcnR1YWwgSW50U2l6ZSBjb250ZW50c1NpemUoKSBjb25zdCB7IEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOyByZXR1cm4gSW50U2l6ZSgpOyB9Ci0gICAgdmlydHVhbCBJbnRTaXplIG92ZXJo
YW5nQW1vdW50KCkgY29uc3QgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIEludFNpemUo
KTsgfQorICAgIHZpcnR1YWwgSW50UG9pbnQgc2Nyb2xsUG9zaXRpb24oKSBjb25zdDsKKyAgICB2
aXJ0dWFsIEludFBvaW50IG1pbmltdW1TY3JvbGxQb3NpdGlvbigpIGNvbnN0OworICAgIHZpcnR1
YWwgSW50UG9pbnQgbWF4aW11bVNjcm9sbFBvc2l0aW9uKCkgY29uc3Q7CisgICAgdmlydHVhbCBJ
bnRSZWN0IHZpc2libGVDb250ZW50UmVjdChib29sIC8qaW5jbHVkZVNjcm9sbGJhcnMqLyA9IGZh
bHNlKSBjb25zdDsKKyAgICB2aXJ0dWFsIGludCB2aXNpYmxlSGVpZ2h0KCkgY29uc3QgPSAwOwor
ICAgIHZpcnR1YWwgaW50IHZpc2libGVXaWR0aCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIElu
dFNpemUgY29udGVudHNTaXplKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgSW50U2l6ZSBvdmVy
aGFuZ0Ftb3VudCgpIGNvbnN0IHsgcmV0dXJuIEludFNpemUoKTsgfQogICAgIHZpcnR1YWwgSW50
UG9pbnQgY3VycmVudE1vdXNlUG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBJbnRQb2ludCgpOyB9
CiAKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkU3VzcGVuZFNjcm9sbEFuaW1hdGlvbnMoKSBjb25z
dCB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCB2b2lkIHNjcm9sbGJhclN0eWxlQ2hhbmdl
ZChpbnQgLypuZXdTdHlsZSovLCBib29sIC8qZm9yY2VVcGRhdGUqLykgeyB9CiAgICAgdmlydHVh
bCB2b2lkIHNldFZpc2libGVTY3JvbGxlclRodW1iUmVjdChjb25zdCBJbnRSZWN0JikgeyB9CiAK
LSAgICB2aXJ0dWFsIGJvb2wgaXNPbkFjdGl2ZVBhZ2UoKSBjb25zdCB7IEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc09uQWN0aXZlUGFnZSgp
IGNvbnN0ID0gMDsKICAgICAKICAgICAvLyBOb3RlIHRoYXQgdGhpcyBvbmx5IHJldHVybnMgc2Ny
b2xsYWJsZSBhcmVhcyB0aGF0IGNhbiBhY3R1YWxseSBiZSBzY3JvbGxlZC4KICAgICB2aXJ0dWFs
IFNjcm9sbGFibGVBcmVhKiBlbmNsb3NpbmdTY3JvbGxhYmxlQXJlYSgpIGNvbnN0ID0gMDsKIAog
ICAgIC8vIFJldHVybnMgdGhlIGJvdW5kaW5nIGJveCBvZiB0aGlzIHNjcm9sbGFibGUgYXJlYSwg
aW4gdGhlIGNvb3JkaW5hdGUgc3lzdGVtIG9mIHRoZSBlbmNsb3Npbmcgc2Nyb2xsIHZpZXcuCi0g
ICAgdmlydHVhbCBJbnRSZWN0IHNjcm9sbGFibGVBcmVhQm91bmRpbmdCb3goKSBjb25zdCB7IEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gSW50UmVjdCgpOyB9CisgICAgdmlydHVhbCBJbnRS
ZWN0IHNjcm9sbGFibGVBcmVhQm91bmRpbmdCb3goKSBjb25zdCA9IDA7CiAKICAgICB2aXJ0dWFs
IGJvb2wgc2hvdWxkUnViYmVyQmFuZEluRGlyZWN0aW9uKFNjcm9sbERpcmVjdGlvbikgY29uc3Qg
eyByZXR1cm4gdHJ1ZTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
aHJvbWl1bS9GcmFtZWxlc3NTY3JvbGxWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2Nocm9taXVtL0ZyYW1lbGVzc1Njcm9sbFZpZXcuY3BwCmluZGV4IDczYmVjMGRmODYzZDk0NDE4
OGMwMGI4ODVjNzNkODFhNTBlNTk3ZDEuLmM0MTA2NzdjYmRkYjI2Njk4MTQ0MGJkNWQ3Y2M4ZTgz
YWNkZWRkZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0Zy
YW1lbGVzc1Njcm9sbFZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9t
aXVtL0ZyYW1lbGVzc1Njcm9sbFZpZXcuY3BwCkBAIC02Myw2ICs2MywxNiBAQCBTY3JvbGxhYmxl
QXJlYSogRnJhbWVsZXNzU2Nyb2xsVmlldzo6ZW5jbG9zaW5nU2Nyb2xsYWJsZUFyZWEoKSBjb25z
dAogICAgIHJldHVybiAwOwogfQogCitib29sIEZyYW1lbGVzc1Njcm9sbFZpZXc6OmlzT25BY3Rp
dmVQYWdlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gaXNBY3RpdmUoKTsKK30KKworSW50UmVjdCBG
cmFtZWxlc3NTY3JvbGxWaWV3OjpzY3JvbGxhYmxlQXJlYUJvdW5kaW5nQm94KCkgY29uc3QKK3sK
KyAgICByZXR1cm4gd2luZG93Q2xpcFJlY3QoZmFsc2UpOworfQorCiB2b2lkIEZyYW1lbGVzc1Nj
cm9sbFZpZXc6OmludmFsaWRhdGVSZWN0KGNvbnN0IEludFJlY3QmIHJlY3QpCiB7CiAgICAgaWYg
KEhvc3RXaW5kb3cqIGggPSBob3N0V2luZG93KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jaHJvbWl1bS9GcmFtZWxlc3NTY3JvbGxWaWV3LmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jaHJvbWl1bS9GcmFtZWxlc3NTY3JvbGxWaWV3LmgKaW5kZXggMzQ5ODQ3NWRj
ZGU1OTA5ODZkMmQzZWIzYmRlNWU0MDUwYjI1OWRlMy4uYWMxZWVjZDFjM2I0ODJhZTgxYjZlN2E2
NTMxNjQ0MWZmZmVjMDIyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hy
b21pdW0vRnJhbWVsZXNzU2Nyb2xsVmlldy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2Nocm9taXVtL0ZyYW1lbGVzc1Njcm9sbFZpZXcuaApAQCAtNzQsOSArNzQsMTEgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogI2VuZGlmCiAKICAgICAgICAgLy8gU2Nyb2xsYWJsZUFyZWEgcHVibGlj
IG1ldGhvZHM6Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlU2Nyb2xsYmFyUmVjdChT
Y3JvbGxiYXIqLCBjb25zdCBJbnRSZWN0Jik7Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBpc0FjdGl2
ZSgpIGNvbnN0OwotICAgICAgICB2aXJ0dWFsIFNjcm9sbGFibGVBcmVhKiBlbmNsb3NpbmdTY3Jv
bGxhYmxlQXJlYSgpIGNvbnN0OworICAgICAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZVNjcm9s
bGJhclJlY3QoU2Nyb2xsYmFyKiwgY29uc3QgSW50UmVjdCYpIE9WRVJSSURFOworICAgICAgICB2
aXJ0dWFsIGJvb2wgaXNBY3RpdmUoKSBjb25zdCBPVkVSUklERTsKKyAgICAgICAgdmlydHVhbCBT
Y3JvbGxhYmxlQXJlYSogZW5jbG9zaW5nU2Nyb2xsYWJsZUFyZWEoKSBjb25zdCBPVkVSUklERTsK
KyAgICAgICAgdmlydHVhbCBib29sIGlzT25BY3RpdmVQYWdlKCkgY29uc3QgT1ZFUlJJREU7Cisg
ICAgICAgIHZpcnR1YWwgSW50UmVjdCBzY3JvbGxhYmxlQXJlYUJvdW5kaW5nQm94KCkgY29uc3Qg
T1ZFUlJJREU7CiAKICAgICAgICAgLy8gV2lkZ2V0IHB1YmxpYyBtZXRob2RzOgogICAgICAgICB2
aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZVJlY3QoY29uc3QgSW50UmVjdCYpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1BvcHVwTWVudVdpbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS93aW4vUG9wdXBNZW51V2luLmNwcAppbmRleCBlYjVjNWIxYTA5MjBmZDIx
MzNmNzQ2MzJhZjZjOWUwMTJiOTBhZWVkLi5hODY4NDdkZGZmNjJjNWFhM2YwMDUwYWMxOTljOWZi
MWU5NGFjMDBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUG9wdXBN
ZW51V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUG9wdXBNZW51V2lu
LmNwcApAQCAtNzI2LDYgKzcyNiwzMSBAQCB2b2lkIFBvcHVwTWVudVdpbjo6aW52YWxpZGF0ZVNj
cm9sbGJhclJlY3QoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmCiAgICAgOjpJ
bnZhbGlkYXRlUmVjdChtX3BvcHVwLCAmciwgZmFsc2UpOwogfQogCitpbnQgUG9wdXBNZW51V2lu
Ojp2aXNpYmxlSGVpZ2h0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9zY3JvbGxiYXIgPyBtX3Nj
cm9sbGJhci0+dmlzaWJsZVNpemUoKSA6IG1fd2luZG93UmVjdC5oZWlnaHQoKTsKK30KKworaW50
IFBvcHVwTWVudVdpbjo6dmlzaWJsZVdpZHRoKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV93aW5k
b3dSZWN0LndpZHRoKCk7Cit9CisKK0ludFNpemUgUG9wdXBNZW51V2luOjpjb250ZW50c1NpemUo
KSBjb25zdAoreworICAgIHJldHVybiBtX3dpbmRvd1JlY3Quc2l6ZSgpOworfQorCitib29sIFBv
cHVwTWVudVdpbjo6aXNPbkFjdGl2ZVBhZ2UoKSBjb25zdAoreworICAgIHJldHVybiBtX3Nob3dQ
b3B1cDsKK30KKworSW50UmVjdCBQb3B1cE1lbnVXaW46OnNjcm9sbGFibGVBcmVhQm91bmRpbmdC
b3goKSBjb25zdAoreworICAgIHJldHVybiBtX3dpbmRvd1JlY3Q7Cit9CisKIHZvaWQgUG9wdXBN
ZW51V2luOjpyZWdpc3RlckNsYXNzKCkKIHsKICAgICBzdGF0aWMgYm9vbCBoYXZlUmVnaXN0ZXJl
ZFdpbmRvd0NsYXNzID0gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS93aW4vUG9wdXBNZW51V2luLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUG9wdXBN
ZW51V2luLmgKaW5kZXggM2FlZTUxY2I5YzY0ZmY2ZDM0NWY1ODIxMGIxZmYwYjgwOGQ1NmViYi4u
OWI2ZmZhN2QzYmM4M2Q4ZjNiMzExYmIwODdmOGRjOWEyNWQ5ZDA4NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1BvcHVwTWVudVdpbi5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3dpbi9Qb3B1cE1lbnVXaW4uaApAQCAtOTEsMTYgKzkxLDIxIEBAIHByaXZh
dGU6CiAgICAgdm9pZCBzZXRTY3JvbGxiYXJDYXB0dXJpbmdNb3VzZShib29sIGIpIHsgbV9zY3Jv
bGxiYXJDYXB0dXJpbmdNb3VzZSA9IGI7IH0KIAogICAgIC8vIFNjcm9sbGFibGVBcmVhCi0gICAg
dmlydHVhbCBpbnQgc2Nyb2xsU2l6ZShTY3JvbGxiYXJPcmllbnRhdGlvbiBvcmllbnRhdGlvbikg
Y29uc3Q7Ci0gICAgdmlydHVhbCBpbnQgc2Nyb2xsUG9zaXRpb24oU2Nyb2xsYmFyKikgY29uc3Q7
Ci0gICAgdmlydHVhbCB2b2lkIHNldFNjcm9sbE9mZnNldChjb25zdCBJbnRQb2ludCYpOwotICAg
IHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlU2Nyb2xsYmFyUmVjdChTY3JvbGxiYXIqLCBjb25zdCBJ
bnRSZWN0Jik7Ci0gICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGVTY3JvbGxDb3JuZXJSZWN0KGNv
bnN0IFdlYkNvcmU6OkludFJlY3QmKSB7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNBY3RpdmUoKSBj
b25zdCB7IHJldHVybiB0cnVlOyB9Ci0gICAgU2Nyb2xsYWJsZUFyZWEqIGVuY2xvc2luZ1Njcm9s
bGFibGVBcmVhKCkgY29uc3QgeyByZXR1cm4gMDsgfQotICAgIHZpcnR1YWwgYm9vbCBpc1Njcm9s
bENvcm5lclZpc2libGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgV2Vi
Q29yZTo6SW50UmVjdCBzY3JvbGxDb3JuZXJSZWN0KCkgY29uc3QgeyByZXR1cm4gV2ViQ29yZTo6
SW50UmVjdCgpOyB9Ci0gICAgdmlydHVhbCBTY3JvbGxiYXIqIHZlcnRpY2FsU2Nyb2xsYmFyKCkg
Y29uc3QgeyByZXR1cm4gbV9zY3JvbGxiYXIuZ2V0KCk7IH0KKyAgICB2aXJ0dWFsIGludCBzY3Jv
bGxTaXplKFNjcm9sbGJhck9yaWVudGF0aW9uKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFs
IGludCBzY3JvbGxQb3NpdGlvbihTY3JvbGxiYXIqKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIHZvaWQgc2V0U2Nyb2xsT2Zmc2V0KGNvbnN0IEludFBvaW50JikgT1ZFUlJJREU7CisgICAg
dmlydHVhbCB2b2lkIGludmFsaWRhdGVTY3JvbGxiYXJSZWN0KFNjcm9sbGJhciosIGNvbnN0IElu
dFJlY3QmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZVNjcm9sbENvcm5l
clJlY3QoY29uc3QgSW50UmVjdCYpIE9WRVJSSURFIHsgfQorICAgIHZpcnR1YWwgYm9vbCBpc0Fj
dGl2ZSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIHRydWU7IH0KKyAgICBTY3JvbGxhYmxlQXJl
YSogZW5jbG9zaW5nU2Nyb2xsYWJsZUFyZWEoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiAwOyB9
CisgICAgdmlydHVhbCBib29sIGlzU2Nyb2xsQ29ybmVyVmlzaWJsZSgpIGNvbnN0IE9WRVJSSURF
IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBJbnRSZWN0IHNjcm9sbENvcm5lclJlY3Qo
KSBjb25zdCBPVkVSUklERSB7IHJldHVybiBJbnRSZWN0KCk7IH0KKyAgICB2aXJ0dWFsIFNjcm9s
bGJhciogdmVydGljYWxTY3JvbGxiYXIoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBtX3Njcm9s
bGJhci5nZXQoKTsgfQorICAgIHZpcnR1YWwgaW50IHZpc2libGVIZWlnaHQoKSBjb25zdCBPVkVS
UklERTsKKyAgICB2aXJ0dWFsIGludCB2aXNpYmxlV2lkdGgoKSBjb25zdCBPVkVSUklERTsKKyAg
ICB2aXJ0dWFsIEludFNpemUgY29udGVudHNTaXplKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmly
dHVhbCBib29sIGlzT25BY3RpdmVQYWdlKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBJ
bnRSZWN0IHNjcm9sbGFibGVBcmVhQm91bmRpbmdCb3goKSBjb25zdCBPVkVSUklERTsKIAogICAg
IC8vIE5PVEU6IFRoaXMgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGJ5IHRoZSBvdmVycmlkZW4gc2V0
U2Nyb2xsT2Zmc2V0IGZyb20gU2Nyb2xsYWJsZUFyZWEuCiAgICAgdm9pZCBzY3JvbGxUbyhpbnQg
b2Zmc2V0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0
Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcAppbmRl
eCA5NDRlYTVmMDgzMjlkNTgxODEyZDkwOTRmZjY1NDM0YjljMjc0ZmYwLi42Mzc2YjA5OGJjNWEx
ZWE1YmVhMjhmNGM3NDg1ZDg4MjUwYjgxOWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxpc3RCb3guY3BwCkBAIC02MzIsMTEgKzYzMiw2IEBAIHZvaWQgUmVuZGVyTGlzdEJv
eDo6c2V0U2Nyb2xsT2Zmc2V0KGNvbnN0IEludFBvaW50JiBvZmZzZXQpCiAgICAgc2Nyb2xsVG8o
b2Zmc2V0LnkoKSk7CiB9CiAKLUludFBvaW50IFJlbmRlckxpc3RCb3g6OnNjcm9sbFBvc2l0aW9u
KCkgY29uc3QKLXsKLSAgICByZXR1cm4gSW50UG9pbnQoMCwgbV9pbmRleE9mZnNldCk7Ci19Ci0K
IHZvaWQgUmVuZGVyTGlzdEJveDo6c2Nyb2xsVG8oaW50IG5ld09mZnNldCkKIHsKICAgICBpZiAo
bmV3T2Zmc2V0ID09IG1faW5kZXhPZmZzZXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxpc3RCb3guaAppbmRleCBkOTY4Yzg3MTc1ZDlmYTM1NmMzMjFmODM3ODQ2OWE4M2NlOGQ5OTQ4
Li40OTYxOTEyMDZmNjQ5MTFiMmFmOTJlOWVlYWNiMmI4YTNlZWQ0MzkxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmgKQEAgLTEwMSwyOCArMTAxLDI3IEBAIHByaXZh
dGU6CiAgICAgdmlydHVhbCBib29sIG5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0Jiwg
SGl0VGVzdFJlc3VsdCYsIGNvbnN0IEhpdFRlc3RQb2ludCYgcG9pbnRJbkNvbnRhaW5lciwgY29u
c3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0LCBIaXRUZXN0QWN0aW9uKSBPVkVSUklE
RTsKIAogICAgIC8vIFNjcm9sbGFibGVBcmVhIGludGVyZmFjZS4KLSAgICB2aXJ0dWFsIGludCBz
Y3JvbGxTaXplKFNjcm9sbGJhck9yaWVudGF0aW9uKSBjb25zdDsKLSAgICB2aXJ0dWFsIGludCBz
Y3JvbGxQb3NpdGlvbihTY3JvbGxiYXIqKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0U2Ny
b2xsT2Zmc2V0KGNvbnN0IEludFBvaW50Jik7Ci0gICAgdmlydHVhbCBJbnRQb2ludCBzY3JvbGxQ
b3NpdGlvbigpIGNvbnN0IE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlU2Ny
b2xsYmFyUmVjdChTY3JvbGxiYXIqLCBjb25zdCBJbnRSZWN0Jik7Ci0gICAgdmlydHVhbCBib29s
IGlzQWN0aXZlKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBib29sIGlzU2Nyb2xsQ29ybmVyVmlzaWJs
ZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9IC8vIFdlIGRvbid0IHN1cHBvcnQgcmVzaXplIG9u
IGxpc3QgYm94ZXMgeWV0LiBJZiB3ZSBkaWQgdGhlc2Ugd291bGQgaGF2ZSB0byBjaGFuZ2UuCi0g
ICAgdmlydHVhbCBJbnRSZWN0IHNjcm9sbENvcm5lclJlY3QoKSBjb25zdCB7IHJldHVybiBJbnRS
ZWN0KCk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZVNjcm9sbENvcm5lclJlY3QoY29u
c3QgSW50UmVjdCYpIHsgfQotICAgIHZpcnR1YWwgSW50UmVjdCBjb252ZXJ0RnJvbVNjcm9sbGJh
clRvQ29udGFpbmluZ1ZpZXcoY29uc3QgU2Nyb2xsYmFyKiwgY29uc3QgSW50UmVjdCYpIGNvbnN0
OwotICAgIHZpcnR1YWwgSW50UmVjdCBjb252ZXJ0RnJvbUNvbnRhaW5pbmdWaWV3VG9TY3JvbGxi
YXIoY29uc3QgU2Nyb2xsYmFyKiwgY29uc3QgSW50UmVjdCYpIGNvbnN0OwotICAgIHZpcnR1YWwg
SW50UG9pbnQgY29udmVydEZyb21TY3JvbGxiYXJUb0NvbnRhaW5pbmdWaWV3KGNvbnN0IFNjcm9s
bGJhciosIGNvbnN0IEludFBvaW50JikgY29uc3Q7Ci0gICAgdmlydHVhbCBJbnRQb2ludCBjb252
ZXJ0RnJvbUNvbnRhaW5pbmdWaWV3VG9TY3JvbGxiYXIoY29uc3QgU2Nyb2xsYmFyKiwgY29uc3Qg
SW50UG9pbnQmKSBjb25zdDsKLSAgICB2aXJ0dWFsIFNjcm9sbGJhciogdmVydGljYWxTY3JvbGxi
YXIoKSBjb25zdCB7IHJldHVybiBtX3ZCYXIuZ2V0KCk7IH0KLSAgICB2aXJ0dWFsIEludFNpemUg
Y29udGVudHNTaXplKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBpbnQgdmlzaWJsZUhlaWdodCgpIGNv
bnN0OwotICAgIHZpcnR1YWwgaW50IHZpc2libGVXaWR0aCgpIGNvbnN0OwotICAgIHZpcnR1YWwg
SW50UG9pbnQgY3VycmVudE1vdXNlUG9zaXRpb24oKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wg
c2hvdWxkU3VzcGVuZFNjcm9sbEFuaW1hdGlvbnMoKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wg
aXNPbkFjdGl2ZVBhZ2UoKSBjb25zdDsKLQotICAgIHZpcnR1YWwgU2Nyb2xsYWJsZUFyZWEqIGVu
Y2xvc2luZ1Njcm9sbGFibGVBcmVhKCkgY29uc3Q7CisgICAgdmlydHVhbCBpbnQgc2Nyb2xsU2l6
ZShTY3JvbGxiYXJPcmllbnRhdGlvbikgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBpbnQg
c2Nyb2xsUG9zaXRpb24oU2Nyb2xsYmFyKikgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2
b2lkIHNldFNjcm9sbE9mZnNldChjb25zdCBJbnRQb2ludCYpIE9WRVJSSURFOworICAgIHZpcnR1
YWwgdm9pZCBpbnZhbGlkYXRlU2Nyb2xsYmFyUmVjdChTY3JvbGxiYXIqLCBjb25zdCBJbnRSZWN0
JikgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGlzQWN0aXZlKCkgY29uc3QgT1ZFUlJJREU7
CisgICAgdmlydHVhbCBib29sIGlzU2Nyb2xsQ29ybmVyVmlzaWJsZSgpIGNvbnN0IE9WRVJSSURF
IHsgcmV0dXJuIGZhbHNlOyB9IC8vIFdlIGRvbid0IHN1cHBvcnQgcmVzaXplIG9uIGxpc3QgYm94
ZXMgeWV0LiBJZiB3ZSBkaWQgdGhlc2Ugd291bGQgaGF2ZSB0byBjaGFuZ2UuCisgICAgdmlydHVh
bCBJbnRSZWN0IHNjcm9sbENvcm5lclJlY3QoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBJbnRS
ZWN0KCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZVNjcm9sbENvcm5lclJlY3QoY29u
c3QgSW50UmVjdCYpIE9WRVJSSURFIHsgfQorICAgIHZpcnR1YWwgSW50UmVjdCBjb252ZXJ0RnJv
bVNjcm9sbGJhclRvQ29udGFpbmluZ1ZpZXcoY29uc3QgU2Nyb2xsYmFyKiwgY29uc3QgSW50UmVj
dCYpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgSW50UmVjdCBjb252ZXJ0RnJvbUNvbnRh
aW5pbmdWaWV3VG9TY3JvbGxiYXIoY29uc3QgU2Nyb2xsYmFyKiwgY29uc3QgSW50UmVjdCYpIGNv
bnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgSW50UG9pbnQgY29udmVydEZyb21TY3JvbGxiYXJU
b0NvbnRhaW5pbmdWaWV3KGNvbnN0IFNjcm9sbGJhciosIGNvbnN0IEludFBvaW50JikgY29uc3Qg
T1ZFUlJJREU7CisgICAgdmlydHVhbCBJbnRQb2ludCBjb252ZXJ0RnJvbUNvbnRhaW5pbmdWaWV3
VG9TY3JvbGxiYXIoY29uc3QgU2Nyb2xsYmFyKiwgY29uc3QgSW50UG9pbnQmKSBjb25zdCBPVkVS
UklERTsKKyAgICB2aXJ0dWFsIFNjcm9sbGJhciogdmVydGljYWxTY3JvbGxiYXIoKSBjb25zdCBP
VkVSUklERSB7IHJldHVybiBtX3ZCYXIuZ2V0KCk7IH0KKyAgICB2aXJ0dWFsIEludFNpemUgY29u
dGVudHNTaXplKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBpbnQgdmlzaWJsZUhlaWdo
dCgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgaW50IHZpc2libGVXaWR0aCgpIGNvbnN0
IE9WRVJSSURFOworICAgIHZpcnR1YWwgSW50UG9pbnQgY3VycmVudE1vdXNlUG9zaXRpb24oKSBj
b25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkU3VzcGVuZFNjcm9sbEFuaW1h
dGlvbnMoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNPbkFjdGl2ZVBhZ2Uo
KSBjb25zdCBPVkVSUklERTsKKworICAgIHZpcnR1YWwgU2Nyb2xsYWJsZUFyZWEqIGVuY2xvc2lu
Z1Njcm9sbGFibGVBcmVhKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBJbnRSZWN0IHNj
cm9sbGFibGVBcmVhQm91bmRpbmdCb3goKSBjb25zdCBPVkVSUklERTsKIAogICAgIC8vIE5PVEU6
IFRoaXMgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGJ5IHRoZSBvdmVycmlkZW4gc2V0U2Nyb2xsT2Zm
c2V0IGZyb20gU2Nyb2xsYWJsZUFyZWEuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9TY3JvbGxiYXJHcm91cC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvU2Ny
b2xsYmFyR3JvdXAuaAppbmRleCBhMDQ3OWMyMDYyN2Q3YmYxNDUxNDQ4OTE5MmQ3M2Q1MTY4Mzhk
ZmI1Li4zY2NjZmRmODc1NzcxMjQ2MjU0MjM4YzY2MGJkZGY0N2YzOWZhZWU3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9TY3JvbGxiYXJHcm91cC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1Njcm9sbGJhckdyb3VwLmgKQEAgLTQ5LDMxICs0OSwzMSBA
QCBwdWJsaWM6CiAgICAgdm9pZCBzZXRGcmFtZVJlY3QoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYp
OwogCiAgICAgLy8gV2ViQ29yZTo6U2Nyb2xsYWJsZUFyZWEgbWV0aG9kcwotICAgIHZpcnR1YWwg
aW50IHNjcm9sbFNpemUoV2ViQ29yZTo6U2Nyb2xsYmFyT3JpZW50YXRpb24pIGNvbnN0OwotICAg
IHZpcnR1YWwgaW50IHNjcm9sbFBvc2l0aW9uKFdlYkNvcmU6OlNjcm9sbGJhciopIGNvbnN0Owot
ICAgIHZpcnR1YWwgdm9pZCBzZXRTY3JvbGxPZmZzZXQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQm
KTsKLSAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZVNjcm9sbGJhclJlY3QoV2ViQ29yZTo6U2Ny
b2xsYmFyKiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpOwotICAgIHZpcnR1YWwgdm9pZCBpbnZh
bGlkYXRlU2Nyb2xsQ29ybmVyUmVjdChjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jik7Ci0gICAgdmly
dHVhbCBib29sIGlzQWN0aXZlKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBTY3JvbGxhYmxlQXJlYSog
ZW5jbG9zaW5nU2Nyb2xsYWJsZUFyZWEoKSBjb25zdDsKLSAgICB2aXJ0dWFsIFdlYkNvcmU6Oklu
dFJlY3Qgc2Nyb2xsQ29ybmVyUmVjdCgpIGNvbnN0IHsgcmV0dXJuIFdlYkNvcmU6OkludFJlY3Qo
KTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc1Njcm9sbENvcm5lclZpc2libGUoKSBjb25zdDsKLSAg
ICB2aXJ0dWFsIHZvaWQgZ2V0VGlja21hcmtzKFZlY3RvcjxXZWJDb3JlOjpJbnRSZWN0PiYpIGNv
bnN0OwotICAgIHZpcnR1YWwgV2ViQ29yZTo6SW50UG9pbnQgY29udmVydEZyb21Db250YWluaW5n
Vmlld1RvU2Nyb2xsYmFyKGNvbnN0IFdlYkNvcmU6OlNjcm9sbGJhciosIGNvbnN0IFdlYkNvcmU6
OkludFBvaW50JiBwYXJlbnRQb2ludCkgY29uc3Q7Ci0gICAgdmlydHVhbCBXZWJDb3JlOjpTY3Jv
bGxiYXIqIGhvcml6b250YWxTY3JvbGxiYXIoKSBjb25zdDsKLSAgICB2aXJ0dWFsIFdlYkNvcmU6
OlNjcm9sbGJhciogdmVydGljYWxTY3JvbGxiYXIoKSBjb25zdDsKLSAgICB2aXJ0dWFsIFdlYkNv
cmU6OkludFBvaW50IHNjcm9sbFBvc2l0aW9uKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBXZWJDb3Jl
OjpJbnRQb2ludCBtaW5pbXVtU2Nyb2xsUG9zaXRpb24oKSBjb25zdDsKLSAgICB2aXJ0dWFsIFdl
YkNvcmU6OkludFBvaW50IG1heGltdW1TY3JvbGxQb3NpdGlvbigpIGNvbnN0OwotICAgIHZpcnR1
YWwgaW50IHZpc2libGVIZWlnaHQoKSBjb25zdDsKLSAgICB2aXJ0dWFsIGludCB2aXNpYmxlV2lk
dGgoKSBjb25zdDsKLSAgICB2aXJ0dWFsIFdlYkNvcmU6OkludFNpemUgY29udGVudHNTaXplKCkg
Y29uc3Q7Ci0gICAgdmlydHVhbCBXZWJDb3JlOjpJbnRTaXplIG92ZXJoYW5nQW1vdW50KCkgY29u
c3Q7Ci0gICAgdmlydHVhbCBXZWJDb3JlOjpJbnRQb2ludCBjdXJyZW50TW91c2VQb3NpdGlvbigp
IGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCBzaG91bGRTdXNwZW5kU2Nyb2xsQW5pbWF0aW9ucygp
IGNvbnN0OwotICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxiYXJTdHlsZUNoYW5nZWQoaW50IG5ld1N0
eWxlLCBib29sIGZvcmNlVXBkYXRlKTsKLSAgICB2aXJ0dWFsIGJvb2wgaXNPbkFjdGl2ZVBhZ2Uo
KSBjb25zdDsKLSAgICB2aXJ0dWFsIFdlYkNvcmU6OkludFJlY3Qgc2Nyb2xsYWJsZUFyZWFCb3Vu
ZGluZ0JveCgpIGNvbnN0OworICAgIHZpcnR1YWwgaW50IHNjcm9sbFNpemUoV2ViQ29yZTo6U2Ny
b2xsYmFyT3JpZW50YXRpb24pIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgaW50IHNjcm9s
bFBvc2l0aW9uKFdlYkNvcmU6OlNjcm9sbGJhciopIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1
YWwgdm9pZCBzZXRTY3JvbGxPZmZzZXQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKSBPVkVSUklE
RTsKKyAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZVNjcm9sbGJhclJlY3QoV2ViQ29yZTo6U2Ny
b2xsYmFyKiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpIE9WRVJSSURFOworICAgIHZpcnR1YWwg
dm9pZCBpbnZhbGlkYXRlU2Nyb2xsQ29ybmVyUmVjdChjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jikg
T1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGlzQWN0aXZlKCkgY29uc3QgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCBTY3JvbGxhYmxlQXJlYSogZW5jbG9zaW5nU2Nyb2xsYWJsZUFyZWEoKSBjb25z
dCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OkludFJlY3Qgc2Nyb2xsQ29ybmVyUmVj
dCgpIGNvbnN0IHsgcmV0dXJuIFdlYkNvcmU6OkludFJlY3QoKSBPVkVSUklERTsgfQorICAgIHZp
cnR1YWwgYm9vbCBpc1Njcm9sbENvcm5lclZpc2libGUoKSBjb25zdCBPVkVSUklERTsKKyAgICB2
aXJ0dWFsIHZvaWQgZ2V0VGlja21hcmtzKFZlY3RvcjxXZWJDb3JlOjpJbnRSZWN0PiYpIGNvbnN0
IE9WRVJSSURFOworICAgIHZpcnR1YWwgV2ViQ29yZTo6SW50UG9pbnQgY29udmVydEZyb21Db250
YWluaW5nVmlld1RvU2Nyb2xsYmFyKGNvbnN0IFdlYkNvcmU6OlNjcm9sbGJhciosIGNvbnN0IFdl
YkNvcmU6OkludFBvaW50JiBwYXJlbnRQb2ludCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVh
bCBXZWJDb3JlOjpTY3JvbGxiYXIqIGhvcml6b250YWxTY3JvbGxiYXIoKSBjb25zdCBPVkVSUklE
RTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OlNjcm9sbGJhciogdmVydGljYWxTY3JvbGxiYXIoKSBj
b25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OkludFBvaW50IHNjcm9sbFBvc2l0
aW9uKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBXZWJDb3JlOjpJbnRQb2ludCBtaW5p
bXVtU2Nyb2xsUG9zaXRpb24oKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6
OkludFBvaW50IG1heGltdW1TY3JvbGxQb3NpdGlvbigpIGNvbnN0IE9WRVJSSURFOworICAgIHZp
cnR1YWwgaW50IHZpc2libGVIZWlnaHQoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGlu
dCB2aXNpYmxlV2lkdGgoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6Oklu
dFNpemUgY29udGVudHNTaXplKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBXZWJDb3Jl
OjpJbnRTaXplIG92ZXJoYW5nQW1vdW50KCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBX
ZWJDb3JlOjpJbnRQb2ludCBjdXJyZW50TW91c2VQb3NpdGlvbigpIGNvbnN0IE9WRVJSSURFOwor
ICAgIHZpcnR1YWwgYm9vbCBzaG91bGRTdXNwZW5kU2Nyb2xsQW5pbWF0aW9ucygpIGNvbnN0IE9W
RVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxiYXJTdHlsZUNoYW5nZWQoaW50IG5ld1N0
eWxlLCBib29sIGZvcmNlVXBkYXRlKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNPbkFj
dGl2ZVBhZ2UoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OkludFJlY3Qg
c2Nyb2xsYWJsZUFyZWFCb3VuZGluZ0JveCgpIGNvbnN0IE9WRVJSSURFOwogCiBwcml2YXRlOgog
ICAgIFdlYkNvcmU6OkZyYW1lVmlldyogbV9mcmFtZVZpZXc7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL1Njcm9sbEFuaW1hdG9yTm9uZVRlc3QuY3BwIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9TY3JvbGxBbmltYXRvck5vbmVUZXN0LmNwcAppbmRleCA5
MjdkNGE5YzMyZGU2OTcyOTk4NjI5ZDFmZDU2Njc1OGI2NTU3ZDMxLi5lNzE4NDZhZGIxNTRiZjlm
YjhmM2NjMmQ3Njc5NTgwYTk0NjA5YTRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL1Njcm9sbEFuaW1hdG9yTm9uZVRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvU2Nyb2xsQW5pbWF0b3JOb25lVGVzdC5jcHAKQEAgLTYzLDEyICs2Mywy
MCBAQCBwdWJsaWM6CiAgICAgTU9DS19NRVRIT0QxKGludmFsaWRhdGVTY3JvbGxDb3JuZXJSZWN0
LCB2b2lkKGNvbnN0IEludFJlY3QmKSk7CiAgICAgTU9DS19NRVRIT0QxKHNldFNjcm9sbE9mZnNl
dEZyb21BbmltYXRpb24sIHZvaWQoY29uc3QgSW50UG9pbnQmKSk7CiAgICAgTU9DS19DT05TVF9N
RVRIT0QwKGVuY2xvc2luZ1Njcm9sbGFibGVBcmVhLCBTY3JvbGxhYmxlQXJlYSooKSk7Ci0KLSAg
ICB2aXJ0dWFsIEludFBvaW50IHNjcm9sbFBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gSW50UG9p
bnQoKTsgfQotICAgIHZpcnR1YWwgaW50IHZpc2libGVIZWlnaHQoKSBjb25zdCB7IHJldHVybiA3
Njg7IH0KLSAgICB2aXJ0dWFsIGludCB2aXNpYmxlV2lkdGgoKSBjb25zdCB7IHJldHVybiAxMDI0
OyB9Ci0KLSAgICBib29sIHNjcm9sbEFuaW1hdG9yRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1f
c2Nyb2xsQW5pbWF0b3JFbmFibGVkOyB9CisgICAgTU9DS19DT05TVF9NRVRIT0QwKG1pbmltdW1T
Y3JvbGxQb3NpdGlvbiwgSW50UG9pbnQoKSk7CisgICAgTU9DS19DT05TVF9NRVRIT0QwKG1heGlt
dW1TY3JvbGxQb3NpdGlvbiwgSW50UG9pbnQoKSk7CisgICAgTU9DS19DT05TVF9NRVRIT0QxKHZp
c2libGVDb250ZW50UmVjdCwgSW50UmVjdChib29sKSk7CisgICAgTU9DS19DT05TVF9NRVRIT0Qw
KGNvbnRlbnRzU2l6ZSwgSW50U2l6ZSgpKTsKKyAgICBNT0NLX0NPTlNUX01FVEhPRDAob3Zlcmhh
bmdBbW91bnQsIEludFNpemUoKSk7CisgICAgTU9DS19DT05TVF9NRVRIT0QwKGlzT25BY3RpdmVQ
YWdlLCBib29sKCkpOworICAgIE1PQ0tfQ09OU1RfTUVUSE9EMChzY3JvbGxhYmxlQXJlYUJvdW5k
aW5nQm94LCBJbnRSZWN0KCkpOworCisgICAgdmlydHVhbCBJbnRQb2ludCBzY3JvbGxQb3NpdGlv
bigpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIEludFBvaW50KCk7IH0KKyAgICB2aXJ0dWFsIGlu
dCB2aXNpYmxlSGVpZ2h0KCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gNzY4OyB9CisgICAgdmly
dHVhbCBpbnQgdmlzaWJsZVdpZHRoKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gMTAyNDsgfQor
ICAgIHZpcnR1YWwgYm9vbCBzY3JvbGxBbmltYXRvckVuYWJsZWQoKSBjb25zdCBPVkVSUklERSB7
IHJldHVybiBtX3Njcm9sbEFuaW1hdG9yRW5hYmxlZDsgfQorCitwcml2YXRlOgogICAgIGJvb2wg
bV9zY3JvbGxBbmltYXRvckVuYWJsZWQ7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L3dpbi9XZWJTY3JvbGxCYXIuY3BwIGIvU291cmNlL1dlYktpdC93aW4vV2ViU2Nyb2xsQmFyLmNw
cAppbmRleCBkMzM4OGMzZDk2MTRmY2Y2NDc4OTAxZjBlMDhhNjE3NTVjZDE1OWM1Li5mMTcyMTk2
YjMxYTY4ZDk0Njk5ZGRkZjQxZWVmM2IwNjBmZmMyMmJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L3dpbi9XZWJTY3JvbGxCYXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYlNjcm9s
bEJhci5jcHAKQEAgLTI4NCwzICsyODQsMjggQEAgU2Nyb2xsYmFyKiBXZWJTY3JvbGxCYXI6OnZl
cnRpY2FsU2Nyb2xsYmFyKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9zY3JvbGxCYXItPm9yaWVu
dGF0aW9uKCkgPT0gVmVydGljYWxTY3JvbGxiYXIgPyBtX3Njcm9sbEJhci5nZXQoKSA6IDA7CiB9
CisKK2ludCBXZWJTY3JvbGxCYXI6OnZpc2libGVIZWlnaHQoKSBjb25zdAoreworICAgIHJldHVy
biBtX3Njcm9sbEJhci0+aGVpZ2h0KCk7Cit9CisKK2ludCBXZWJTY3JvbGxCYXI6OnZpc2libGVX
aWR0aCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc2Nyb2xsQmFyLT53aWR0aCgpOworfQorCitX
ZWJDb3JlOjpJbnRTaXplIFdlYlNjcm9sbEJhcjo6Y29udGVudHNTaXplKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gbV9zY3JvbGxCYXItPmZyYW1lUmVjdCgpLnNpemUoKTsKK30KKworYm9vbCBXZWJT
Y3JvbGxCYXI6OmlzT25BY3RpdmVQYWdlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gdHJ1ZTsKK30K
KworV2ViQ29yZTo6SW50UmVjdCBXZWJTY3JvbGxCYXI6OnNjcm9sbGFibGVBcmVhQm91bmRpbmdC
b3goKSBjb25zdAoreworICAgIHJldHVybiBtX3Njcm9sbEJhci0+ZnJhbWVSZWN0KCk7Cit9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJTY3JvbGxCYXIuaCBiL1NvdXJjZS9XZWJL
aXQvd2luL1dlYlNjcm9sbEJhci5oCmluZGV4IGM5N2QwZDcwMTE4YzNhZGVkOTc0YmU5M2EzNjYx
MWYxZjgwZTcxZjcuLmRmZDFlZjA0MDdiZTdlODQ1NTJhNDEwOTY4ODM3MDVlOGQ4YTE3Y2EgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYlNjcm9sbEJhci5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvd2luL1dlYlNjcm9sbEJhci5oCkBAIC0xMTcsNiArMTE3LDExIEBAIHByb3RlY3RlZDoK
ICAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZVNjcm9sbGJhclJlY3QoV2ViQ29yZTo6U2Nyb2xs
YmFyKiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpOwogICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlk
YXRlU2Nyb2xsQ29ybmVyUmVjdChjb25zdCBXZWJDb3JlOjpJbnRSZWN0JikgeyB9CiAgICAgdmly
dHVhbCBXZWJDb3JlOjpTY3JvbGxhYmxlQXJlYSogZW5jbG9zaW5nU2Nyb2xsYWJsZUFyZWEoKSBj
b25zdCB7IHJldHVybiAwOyB9CisgICAgdmlydHVhbCBpbnQgdmlzaWJsZUhlaWdodCgpIGNvbnN0
IE9WRVJSSURFOworICAgIHZpcnR1YWwgaW50IHZpc2libGVXaWR0aCgpIGNvbnN0IE9WRVJSSURF
OworICAgIHZpcnR1YWwgV2ViQ29yZTo6SW50U2l6ZSBjb250ZW50c1NpemUoKSBjb25zdCBPVkVS
UklERTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNPbkFjdGl2ZVBhZ2UoKSBjb25zdCBPVkVSUklERTsK
KyAgICB2aXJ0dWFsIFdlYkNvcmU6OkludFJlY3Qgc2Nyb2xsYWJsZUFyZWFCb3VuZGluZ0JveCgp
IGNvbnN0IE9WRVJSSURFOwogCiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBwcm92aWRlIGEgd2F5
IHRvIHNldCB0aGlzIHZhbHVlLgogICAgIHZpcnR1YWwgYm9vbCBpc0FjdGl2ZSgpIGNvbnN0IHsg
cmV0dXJuIHRydWU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy93aW4v
V2ViUG9wdXBNZW51UHJveHlXaW4uY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3dpbi9X
ZWJQb3B1cE1lbnVQcm94eVdpbi5jcHAKaW5kZXggZGY0ZTk4NTRiY2M2NTZkY2QwMmU2YWMyZGI4
Y2ZmYmU1NzJhZDRlNi4uYTQ1MjgwNzMzZWI0YjM0MTFlZGUxZDVlYzA4NWViZjc5ZmJmOWE3ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3dpbi9XZWJQb3B1cE1lbnVQcm94
eVdpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3dpbi9XZWJQb3B1cE1lbnVQ
cm94eVdpbi5jcHAKQEAgLTQ2OSw2ICs0NjksMjcgQEAgdm9pZCBXZWJQb3B1cE1lbnVQcm94eVdp
bjo6c2V0U2Nyb2xsT2Zmc2V0KGNvbnN0IEludFBvaW50JiBvZmZzZXQpCiAgICAgc2Nyb2xsVG8o
b2Zmc2V0LnkoKSk7CiB9CiAKK2ludCBXZWJQb3B1cE1lbnVQcm94eVdpbjo6dmlzaWJsZUhlaWdo
dCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc2Nyb2xsYmFyID8gbV9zY3JvbGxiYXItPnZpc2li
bGVTaXplKCkgOiBjb250ZW50c1NpemUoKS5oZWlnaHQoKTsKK30KKworaW50IFdlYlBvcHVwTWVu
dVByb3h5V2luOjp2aXNpYmxlV2lkdGgoKSBjb25zdAoreworICAgIGludCBzY3JvbGxiYXJXaWR0
aCA9IG1fc2Nyb2xsYmFyID8gbV9zY3JvbGxiYXItPmZyYW1lUmVjdCgpLndpZHRoKCkgOiAwOwor
ICAgIHJldHVybiBjb250ZW50c1NpemUoKS53aWR0aCgpIC0gc2Nyb2xsYmFyV2lkdGg7Cit9CisK
K1dlYkNvcmU6OkludFNpemUgV2ViUG9wdXBNZW51UHJveHlXaW46OmNvbnRlbnRzU2l6ZSgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIGNsaWVudFJlY3QoKS5zaXplKCk7Cit9CisKK1dlYkNvcmU6Oklu
dFJlY3QgV2ViUG9wdXBNZW51UHJveHlXaW46OnNjcm9sbGFibGVBcmVhQm91bmRpbmdCb3goKSBj
b25zdAoreworICAgIHJldHVybiBtX3dpbmRvd1JlY3Q7Cit9CisKIHZvaWQgV2ViUG9wdXBNZW51
UHJveHlXaW46OnNjcm9sbFRvKGludCBvZmZzZXQpCiB7CiAgICAgQVNTRVJUKG1fc2Nyb2xsYmFy
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy93aW4vV2ViUG9wdXBNZW51
UHJveHlXaW4uaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy93aW4vV2ViUG9wdXBNZW51UHJv
eHlXaW4uaAppbmRleCBiN2M0ZDZkMjkzN2YyZDgyNTgwODkyMzUwZGFiOTgwOWUxNzc5NGYyLi4x
ZDI1MzczZjFmZmIxOWQxY2ExZTA3ZTFmMTUwNDJmNmY3YTkwNjAxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3Mvd2luL1dlYlBvcHVwTWVudVByb3h5V2luLmgKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL3dpbi9XZWJQb3B1cE1lbnVQcm94eVdpbi5oCkBAIC02MSwx
NiArNjEsMjEgQEAgcHJpdmF0ZToKICAgICBXZWJDb3JlOjpTY3JvbGxiYXIqIHNjcm9sbGJhcigp
IGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsYmFyLmdldCgpOyB9CiAKICAgICAvLyBTY3JvbGxhYmxl
QXJlYQotICAgIHZpcnR1YWwgaW50IHNjcm9sbFNpemUoV2ViQ29yZTo6U2Nyb2xsYmFyT3JpZW50
YXRpb24pIGNvbnN0OwotICAgIHZpcnR1YWwgaW50IHNjcm9sbFBvc2l0aW9uKFdlYkNvcmU6OlNj
cm9sbGJhciopIGNvbnN0OwotICAgIHZpcnR1YWwgdm9pZCBzZXRTY3JvbGxPZmZzZXQoY29uc3Qg
V2ViQ29yZTo6SW50UG9pbnQmKTsKLSAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZVNjcm9sbGJh
clJlY3QoV2ViQ29yZTo6U2Nyb2xsYmFyKiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpOwotICAg
IHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlU2Nyb2xsQ29ybmVyUmVjdChjb25zdCBXZWJDb3JlOjpJ
bnRSZWN0JikgeyB9Ci0gICAgdmlydHVhbCBib29sIGlzQWN0aXZlKCkgY29uc3QgeyByZXR1cm4g
dHJ1ZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc1Njcm9sbENvcm5lclZpc2libGUoKSBjb25zdCB7
IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgV2ViQ29yZTo6SW50UmVjdCBzY3JvbGxDb3Ju
ZXJSZWN0KCkgY29uc3QgeyByZXR1cm4gV2ViQ29yZTo6SW50UmVjdCgpOyB9Ci0gICAgdmlydHVh
bCBXZWJDb3JlOjpTY3JvbGxiYXIqIHZlcnRpY2FsU2Nyb2xsYmFyKCkgY29uc3QgeyByZXR1cm4g
bV9zY3JvbGxiYXIuZ2V0KCk7IH0KLSAgICB2aXJ0dWFsIFdlYkNvcmU6OlNjcm9sbGFibGVBcmVh
KiBlbmNsb3NpbmdTY3JvbGxhYmxlQXJlYSgpIGNvbnN0IHsgcmV0dXJuIDA7IH0KKyAgICB2aXJ0
dWFsIGludCBzY3JvbGxTaXplKFdlYkNvcmU6OlNjcm9sbGJhck9yaWVudGF0aW9uKSBjb25zdCBP
VkVSUklERTsKKyAgICB2aXJ0dWFsIGludCBzY3JvbGxQb3NpdGlvbihXZWJDb3JlOjpTY3JvbGxi
YXIqKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0U2Nyb2xsT2Zmc2V0KGNv
bnN0IFdlYkNvcmU6OkludFBvaW50JikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGludmFs
aWRhdGVTY3JvbGxiYXJSZWN0KFdlYkNvcmU6OlNjcm9sbGJhciosIGNvbnN0IFdlYkNvcmU6Oklu
dFJlY3QmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZVNjcm9sbENvcm5l
clJlY3QoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpIE9WRVJSSURFIHsgfQorICAgIHZpcnR1YWwg
Ym9vbCBpc0FjdGl2ZSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0
dWFsIGJvb2wgaXNTY3JvbGxDb3JuZXJWaXNpYmxlKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4g
ZmFsc2U7IH0KKyAgICB2aXJ0dWFsIFdlYkNvcmU6OkludFJlY3Qgc2Nyb2xsQ29ybmVyUmVjdCgp
IGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIFdlYkNvcmU6OkludFJlY3QoKTsgfQorICAgIHZpcnR1
YWwgV2ViQ29yZTo6U2Nyb2xsYmFyKiB2ZXJ0aWNhbFNjcm9sbGJhcigpIGNvbnN0IE9WRVJSSURF
IHsgcmV0dXJuIG1fc2Nyb2xsYmFyLmdldCgpOyB9CisgICAgdmlydHVhbCBXZWJDb3JlOjpTY3Jv
bGxhYmxlQXJlYSogZW5jbG9zaW5nU2Nyb2xsYWJsZUFyZWEoKSBjb25zdCBPVkVSUklERSB7IHJl
dHVybiAwOyB9CisgICAgdmlydHVhbCBpbnQgdmlzaWJsZUhlaWdodCgpIGNvbnN0IE9WRVJSSURF
OworICAgIHZpcnR1YWwgaW50IHZpc2libGVXaWR0aCgpIGNvbnN0IE9WRVJSSURFOworICAgIHZp
cnR1YWwgV2ViQ29yZTo6SW50U2l6ZSBjb250ZW50c1NpemUoKSBjb25zdCBPVkVSUklERTsKKyAg
ICB2aXJ0dWFsIFdlYkNvcmU6OkludFJlY3Qgc2Nyb2xsYWJsZUFyZWFCb3VuZGluZ0JveCgpIGNv
bnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBpc09uQWN0aXZlUGFnZSgpIGNvbnN0IE9W
RVJSSURFIHsgcmV0dXJuIHRydWU7IH0KIAogICAgIC8vIE5PVEU6IFRoaXMgc2hvdWxkIG9ubHkg
YmUgY2FsbGVkIGJ5IHRoZSBvdmVycmlkZW4gc2V0U2Nyb2xsT2Zmc2V0IGZyb20gU2Nyb2xsYWJs
ZUFyZWEuCiAgICAgdm9pZCBzY3JvbGxUbyhpbnQgb2Zmc2V0KTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvQnVpbHRJblBERlZpZXcuaCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvQnVpbHRJblBERlZpZXcuaAppbmRleCA4
YTdjMjhhNWI1OWI3OWE3ODBmZWU3ZThhYTIzOGM0ZDZlMDk2MWFhLi45Y2NkODA0MDAzN2U4MDA5
MWY5ODU2YTNlZDM5MmMzNjZhMGFhZjMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1BsdWdpbnMvUERGL0J1aWx0SW5QREZWaWV3LmgKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9CdWlsdEluUERGVmlldy5oCkBAIC0xMjIsMzAgKzEyMiwy
OSBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgUmV0YWluUHRyPFBERkRvY3VtZW50PiBwZGZEb2N1
bWVudEZvclByaW50aW5nKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV9wZGZEb2N1bWVudDsg
fQogCiAgICAgLy8gU2Nyb2xsYWJsZUFyZWEgbWV0aG9kcy4KLSAgICB2aXJ0dWFsIFdlYkNvcmU6
OkludFJlY3Qgc2Nyb2xsQ29ybmVyUmVjdCgpIGNvbnN0OwotICAgIHZpcnR1YWwgV2ViQ29yZTo6
U2Nyb2xsYWJsZUFyZWEqIGVuY2xvc2luZ1Njcm9sbGFibGVBcmVhKCkgY29uc3Q7CisgICAgdmly
dHVhbCBXZWJDb3JlOjpJbnRSZWN0IHNjcm9sbENvcm5lclJlY3QoKSBjb25zdCBPVkVSUklERTsK
KyAgICB2aXJ0dWFsIFdlYkNvcmU6OlNjcm9sbGFibGVBcmVhKiBlbmNsb3NpbmdTY3JvbGxhYmxl
QXJlYSgpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgV2ViQ29yZTo6SW50UmVjdCBzY3Jv
bGxhYmxlQXJlYUJvdW5kaW5nQm94KCkgY29uc3QgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lk
IHNldFNjcm9sbE9mZnNldChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpOwotICAgIHZpcnR1YWwg
aW50IHNjcm9sbFNpemUoV2ViQ29yZTo6U2Nyb2xsYmFyT3JpZW50YXRpb24pIGNvbnN0OwotICAg
IHZpcnR1YWwgYm9vbCBpc0FjdGl2ZSgpIGNvbnN0OwotICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlk
YXRlU2Nyb2xsYmFyUmVjdChXZWJDb3JlOjpTY3JvbGxiYXIqLCBjb25zdCBXZWJDb3JlOjpJbnRS
ZWN0Jik7Ci0gICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGVTY3JvbGxDb3JuZXJSZWN0KGNvbnN0
IFdlYkNvcmU6OkludFJlY3QmKTsKLSAgICB2aXJ0dWFsIGJvb2wgaXNTY3JvbGxDb3JuZXJWaXNp
YmxlKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBpbnQgc2Nyb2xsUG9zaXRpb24oV2ViQ29yZTo6U2Ny
b2xsYmFyKikgY29uc3Q7Ci0gICAgdmlydHVhbCBXZWJDb3JlOjpJbnRQb2ludCBzY3JvbGxQb3Np
dGlvbigpIGNvbnN0OwotICAgIHZpcnR1YWwgV2ViQ29yZTo6SW50UG9pbnQgbWluaW11bVNjcm9s
bFBvc2l0aW9uKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBXZWJDb3JlOjpJbnRQb2ludCBtYXhpbXVt
U2Nyb2xsUG9zaXRpb24oKSBjb25zdDsKLSAgICB2aXJ0dWFsIGludCB2aXNpYmxlSGVpZ2h0KCkg
Y29uc3Q7Ci0gICAgdmlydHVhbCBpbnQgdmlzaWJsZVdpZHRoKCkgY29uc3Q7Ci0gICAgdmlydHVh
bCBXZWJDb3JlOjpJbnRTaXplIGNvbnRlbnRzU2l6ZSgpIGNvbnN0OwotICAgIHZpcnR1YWwgV2Vi
Q29yZTo6U2Nyb2xsYmFyKiBob3Jpem9udGFsU2Nyb2xsYmFyKCkgY29uc3QgIHsgcmV0dXJuIG1f
aG9yaXpvbnRhbFNjcm9sbGJhci5nZXQoKTsgfQotICAgIHZpcnR1YWwgV2ViQ29yZTo6U2Nyb2xs
YmFyKiB2ZXJ0aWNhbFNjcm9sbGJhcigpIGNvbnN0IHsgcmV0dXJuIG1fdmVydGljYWxTY3JvbGxi
YXIuZ2V0KCk7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNPbkFjdGl2ZVBhZ2UoKSBjb25zdDsKLSAg
ICB2aXJ0dWFsIGJvb2wgc2hvdWxkU3VzcGVuZFNjcm9sbEFuaW1hdGlvbnMoKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfSAvLyBJZiB3ZSByZXR1cm4gdHJ1ZSwgU2Nyb2xsQW5pbWF0b3JNYWMgd2ls
bCBrZWVwIGN5Y2xpbmcgYSB0aW1lciBmb3JldmVyLCB3YWl0aW5nIGZvciBhIGdvb2QgdGltZSB0
byBhbmltYXRlLgotICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxiYXJTdHlsZUNoYW5nZWQoaW50IG5l
d1N0eWxlLCBib29sIGZvcmNlVXBkYXRlKTsKLQorICAgIHZpcnR1YWwgdm9pZCBzZXRTY3JvbGxP
ZmZzZXQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGlu
dCBzY3JvbGxTaXplKFdlYkNvcmU6OlNjcm9sbGJhck9yaWVudGF0aW9uKSBjb25zdCBPVkVSUklE
RTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNBY3RpdmUoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIHZvaWQgaW52YWxpZGF0ZVNjcm9sbGJhclJlY3QoV2ViQ29yZTo6U2Nyb2xsYmFyKiwgY29u
c3QgV2ViQ29yZTo6SW50UmVjdCYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlk
YXRlU2Nyb2xsQ29ybmVyUmVjdChjb25zdCBXZWJDb3JlOjpJbnRSZWN0JikgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCBib29sIGlzU2Nyb2xsQ29ybmVyVmlzaWJsZSgpIGNvbnN0IE9WRVJSSURFOwor
ICAgIHZpcnR1YWwgaW50IHNjcm9sbFBvc2l0aW9uKFdlYkNvcmU6OlNjcm9sbGJhciopIGNvbnN0
IE9WRVJSSURFOworICAgIHZpcnR1YWwgV2ViQ29yZTo6SW50UG9pbnQgc2Nyb2xsUG9zaXRpb24o
KSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OkludFBvaW50IG1pbmltdW1T
Y3JvbGxQb3NpdGlvbigpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgV2ViQ29yZTo6SW50
UG9pbnQgbWF4aW11bVNjcm9sbFBvc2l0aW9uKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVh
bCBpbnQgdmlzaWJsZUhlaWdodCgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgaW50IHZp
c2libGVXaWR0aCgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgV2ViQ29yZTo6SW50U2l6
ZSBjb250ZW50c1NpemUoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OlNj
cm9sbGJhciogaG9yaXpvbnRhbFNjcm9sbGJhcigpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIG1f
aG9yaXpvbnRhbFNjcm9sbGJhci5nZXQoKTsgfQorICAgIHZpcnR1YWwgV2ViQ29yZTo6U2Nyb2xs
YmFyKiB2ZXJ0aWNhbFNjcm9sbGJhcigpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIG1fdmVydGlj
YWxTY3JvbGxiYXIuZ2V0KCk7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNPbkFjdGl2ZVBhZ2UoKSBj
b25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkU3VzcGVuZFNjcm9sbEFuaW1h
dGlvbnMoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBmYWxzZTsgfSAvLyBJZiB3ZSByZXR1cm4g
dHJ1ZSwgU2Nyb2xsQW5pbWF0b3JNYWMgd2lsbCBrZWVwIGN5Y2xpbmcgYSB0aW1lciBmb3JldmVy
LCB3YWl0aW5nIGZvciBhIGdvb2QgdGltZSB0byBhbmltYXRlLgorICAgIHZpcnR1YWwgdm9pZCBz
Y3JvbGxiYXJTdHlsZUNoYW5nZWQoaW50IG5ld1N0eWxlLCBib29sIGZvcmNlVXBkYXRlKSBPVkVS
UklERTsKICAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoZSBvdGhlciBjb252ZXJzaW9uIGZ1bmN0
aW9uczsgdGhpcyBvbmUgaXMgZW5vdWdoIHRvIGdldCBzY3JvbGxiYXIgaGl0IHRlc3Rpbmcgd29y
a2luZy4KLSAgICB2aXJ0dWFsIFdlYkNvcmU6OkludFBvaW50IGNvbnZlcnRGcm9tQ29udGFpbmlu
Z1ZpZXdUb1Njcm9sbGJhcihjb25zdCBXZWJDb3JlOjpTY3JvbGxiYXIqLCBjb25zdCBXZWJDb3Jl
OjpJbnRQb2ludCYgcGFyZW50UG9pbnQpIGNvbnN0OworICAgIHZpcnR1YWwgV2ViQ29yZTo6SW50
UG9pbnQgY29udmVydEZyb21Db250YWluaW5nVmlld1RvU2Nyb2xsYmFyKGNvbnN0IFdlYkNvcmU6
OlNjcm9sbGJhciosIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwYXJlbnRQb2ludCkgY29uc3Qg
T1ZFUlJJREU7CiAKICAgICBKU09iamVjdFJlZiBtYWtlSlNQREZEb2MoSlNDb250ZXh0UmVmKTsK
ICAgICBzdGF0aWMgSlNWYWx1ZVJlZiBqc1BERkRvY1ByaW50KEpTQ29udGV4dFJlZiwgSlNPYmpl
Y3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENv
dW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24p
Owo=
</data>

          </attachment>
      

    </bug>

</bugzilla>