<?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>81099</bug_id>
          
          <creation_ts>2012-03-14 06:18:41 -0700</creation_ts>
          <short_desc>[BlackBerry] Make sure WebPage and BackingStore don&apos;t crash without a Window</short_desc>
          <delta_ts>2012-03-16 01:22:03 -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>WebKit BlackBerry</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>
          
          <blocked>81108</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Arvid Nilsson">anilsson</reporter>
          <assigned_to name="Arvid Nilsson">anilsson</assigned_to>
          <cc>efidler</cc>
    
    <cc>manyoso</cc>
    
    <cc>rwlbuis</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>578342</commentid>
    <comment_count>0</comment_count>
    <who name="Arvid Nilsson">anilsson</who>
    <bug_when>2012-03-14 06:18:41 -0700</bug_when>
    <thetext>This is part of the refactoring to allow OpenGL based rendering of the WebPage, using any kind of OpenGL context (not necessarily tied to an EGL window surface)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>578365</commentid>
    <comment_count>1</comment_count>
      <attachid>131838</attachid>
    <who name="Arvid Nilsson">anilsson</who>
    <bug_when>2012-03-14 07:22:40 -0700</bug_when>
    <thetext>Created attachment 131838
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>578369</commentid>
    <comment_count>2</comment_count>
      <attachid>131838</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-03-14 07:28:33 -0700</bug_when>
    <thetext>Comment on attachment 131838
Patch

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

&gt; Source/WebKit/blackberry/Api/BackingStore.cpp:252
&gt; +bool BackingStorePrivate::isOpenGLCompositing() const

isCompositingUsingOpenGL ?

&gt; Source/WebKit/blackberry/Api/BackingStore.cpp:1160
&gt; -    m_webPage-&gt;client()-&gt;window()-&gt;copyFromFrontToBack(previousContentsRegion);
&gt; +    if (Window* window = m_webPage-&gt;client()-&gt;window())
&gt; +        window-&gt;copyFromFrontToBack(previousContentsRegion);
&gt;      windowBackBufferState()-&gt;addBlittedRegion(previousContentsRegion);

So this is the actual fix? It would be nicer to split patches up, like to do the isOpenGLCompositing() part before this one. At least think about that for the future

&gt; Source/WebKit/blackberry/Api/BackingStore.cpp:2377
&gt; -    m_webPage-&gt;client()-&gt;window()-&gt;post(dstRect);
&gt; +    if (Window* window = m_webPage-&gt;client()-&gt;window())
&gt; +        window-&gt;post(dstRect);

Maybe you should write in the changelog why this doesn&apos;t always exist and has to be checked

&gt; Source/WebKit/blackberry/Api/BackingStore_p.h:110
&gt; +    // BackingStore tiles. This can be due to the main window using

I would have written &quot;backing store tiles&quot;, ie used more natural language. This makes sure that the comment is still valid after a rename

&gt; Source/WebKit/blackberry/Api/BackingStore_p.h:328
&gt;      static WebPage* currentBackingStoreOwner() { return BackingStorePrivate::s_currentBackingStoreOwner; }
&gt;      bool isActive() const;
&gt;  
&gt; +    // Surface abstraction, maybe BlackBerry::Platform::Graphics::Buffer could
&gt; +    // be made public instead.

Looking at the line length above it might make sense to make this one line</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>578371</commentid>
    <comment_count>3</comment_count>
      <attachid>131838</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2012-03-14 07:35:41 -0700</bug_when>
    <thetext>Comment on attachment 131838
Patch

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

Looks good, maybe you can answer the prefix question before r+.

&gt; Source/WebKit/blackberry/WebKitSupport/GLES2Context.cpp:78
&gt; +        if (window-&gt;windowUsage() == Platform::Graphics::Window::GLES2Usage)

Is the full prefix needed, since you added the using above?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>578387</commentid>
    <comment_count>4</comment_count>
      <attachid>131846</attachid>
    <who name="Arvid Nilsson">anilsson</who>
    <bug_when>2012-03-14 07:55:08 -0700</bug_when>
    <thetext>Created attachment 131846
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>578388</commentid>
    <comment_count>5</comment_count>
    <who name="Arvid Nilsson">anilsson</who>
    <bug_when>2012-03-14 07:56:30 -0700</bug_when>
    <thetext>Alright, here&apos;s a new one. In hindsight, isOpenGLCompositing rename should have been a different patch, I&apos;ll try to do more atomic stuff in the future.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>578427</commentid>
    <comment_count>6</comment_count>
      <attachid>131846</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2012-03-14 08:37:32 -0700</bug_when>
    <thetext>Comment on attachment 131846
Patch

This looks fine to me. Kenneth, can you maybe have a look if it fixes your concerns?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>578519</commentid>
    <comment_count>7</comment_count>
    <who name="Arvid Nilsson">anilsson</who>
    <bug_when>2012-03-14 10:10:44 -0700</bug_when>
    <thetext>I&apos;ll have to try again tomorrow, the patch is not coming out right... I must be preparing it for upstream submission the wrong way.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>578784</commentid>
    <comment_count>8</comment_count>
    <who name="Arvid Nilsson">anilsson</who>
    <bug_when>2012-03-14 14:33:18 -0700</bug_when>
    <thetext>Aha, I found the problem! We never upstreamed webkit/acba1b713b82850221f0aecb6772a0893d5b2618 and webkit/86b38492db763381fd71b9444133408c3c819b7d!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>578788</commentid>
    <comment_count>9</comment_count>
    <who name="Arvid Nilsson">anilsson</who>
    <bug_when>2012-03-14 14:35:32 -0700</bug_when>
    <thetext>Hmm, I was just a few hours too early, Nima is upstreaming those changes in Bug #81118</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>578792</commentid>
    <comment_count>10</comment_count>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2012-03-14 14:39:47 -0700</bug_when>
    <thetext>Hi Arvid,

(In reply to comment #9)
&gt; Hmm, I was just a few hours too early, Nima is upstreaming those changes in Bug #81118

Exactly, unfortunately it is slow going in, #9 in the queue.
Cheers,

Rob.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>578812</commentid>
    <comment_count>11</comment_count>
      <attachid>131846</attachid>
    <who name="Arvid Nilsson">anilsson</who>
    <bug_when>2012-03-14 15:00:08 -0700</bug_when>
    <thetext>Comment on attachment 131846
Patch

Alright, I&apos;m adding back the r? flag, this patch should be unaffected by whether #81118 is in or not, only #81108 really depends on it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>578820</commentid>
    <comment_count>12</comment_count>
      <attachid>131846</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2012-03-14 15:03:11 -0700</bug_when>
    <thetext>Comment on attachment 131846
Patch

Let&apos;s try, Kenneth already r+ed this, therefore also setting r+.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>578828</commentid>
    <comment_count>13</comment_count>
    <who name="Arvid Nilsson">anilsson</who>
    <bug_when>2012-03-14 15:07:27 -0700</bug_when>
    <thetext>Thanks a million Rob, this is the most important patch in the chain, it fixes a crash that&apos;s gating an internal integration project =)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>578830</commentid>
    <comment_count>14</comment_count>
      <attachid>131846</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2012-03-14 15:09:31 -0700</bug_when>
    <thetext>Comment on attachment 131846
Patch

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

&gt; Source/WebKit/blackberry/WebKitSupport/GLES2Context.cpp:78
&gt; +        if (window-&gt;windowUsage() == Window::GLES2Usage)

I think I would have used m_backingStore-&gt;d-&gt;isOpenGLCompositing() here too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>578840</commentid>
    <comment_count>15</comment_count>
    <who name="Arvid Nilsson">anilsson</who>
    <bug_when>2012-03-14 15:20:56 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; (From update of attachment 131846 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=131846&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/blackberry/WebKitSupport/GLES2Context.cpp:78
&gt; &gt; +        if (window-&gt;windowUsage() == Window::GLES2Usage)
&gt; 
&gt; I think I would have used m_backingStore-&gt;d-&gt;isOpenGLCompositing() here too.

Good point, I think the problem was that the GLES2Context is no friend of the BackingStore... The BackingStore still contains a now obsolete &quot;friend class WebCore::GLES2Context&quot;. A separate patch could correct all that =)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>578943</commentid>
    <comment_count>16</comment_count>
      <attachid>131846</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-14 16:53:57 -0700</bug_when>
    <thetext>Comment on attachment 131846
Patch

Rejecting attachment 131846 from commit-queue.

New failing tests:
svg/repaint/repainting-after-animation-element-removal.svg
Full output: http://queues.webkit.org/results/11955332</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>579020</commentid>
    <comment_count>17</comment_count>
      <attachid>131846</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-14 18:48:39 -0700</bug_when>
    <thetext>Comment on attachment 131846
Patch

Clearing flags on attachment: 131846

Committed r110806: &lt;http://trac.webkit.org/changeset/110806&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>579021</commentid>
    <comment_count>18</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-14 18:48:46 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>131838</attachid>
            <date>2012-03-14 07:22:40 -0700</date>
            <delta_ts>2012-03-14 07:55:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-81099-20120314152237.patch</filename>
            <type>text/plain</type>
            <size>24197</size>
            <attacher name="Arvid Nilsson">anilsson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEwNjk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Js
YWNrYmVycnkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZwpp
bmRleCBiZTNlZjQ1YzA5YzY1OTI1ZTY1NjBkNjVmOGZmNmQ4MjAzMzk1YmY1Li5kNWZmMGYyYzk3
YzJkZGU5YzQwY2MyYmNiM2MxZDQ2MThiNWMzZWVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2JsYWNrYmVycnkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSw1MSBAQAorMjAxMi0wMy0xNCAgQXJ2aWQgTmlsc3NvbiAgPGFuaWxz
c29uQHJpbS5jb20+CisKKyAgICAgICAgW0JsYWNrQmVycnldIE1ha2Ugc3VyZSBXZWJQYWdlIGFu
ZCBCYWNraW5nU3RvcmUgZG9uJ3QgY3Jhc2ggd2l0aG91dCBhIFdpbmRvdworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODEwOTkKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBbHNvIHJlbmFtZSB0aGUgImNvbXBv
c2l0aW5nL2JsaXR0aW5nIHRvIG1haW4gd2luZG93IiB2YXJpYWJsZXMgdG8KKyAgICAgICAgaW5z
dGVhZCByZWZlciB0byBPcGVuR0wgY29tcG9zaXRpbmcuIFRoZSBjb2RlIHBhdGhzIGl0IHRyaWdn
ZXJzIGFyZQorICAgICAgICByZWxhdGVkIHRvIHRoZSBCYWNraW5nU3RvcmUgdXNpbmcgT3BlbkdM
IGNvbXBvc2l0aW5nLCBhbmQgY2FuIGJlIHVzZWZ1bAorICAgICAgICBldmVuIHdoZW4gdGhlcmUn
cyBubyB3aW5kb3cuCisKKyAgICAgICAgKiBBcGkvQmFja2luZ1N0b3JlLmNwcDoKKyAgICAgICAg
KEJsYWNrQmVycnk6OldlYktpdDo6QmFja2luZ1N0b3JlUHJpdmF0ZTo6aXNPcGVuR0xDb21wb3Np
dGluZyk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OkJhY2tpbmdTdG9yZVByaXZhdGU6
OnJlbmRlcik6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OkJhY2tpbmdTdG9yZVByaXZh
dGU6OmNvcHlQcmV2aW91c0NvbnRlbnRzVG9CYWNrU3VyZmFjZU9mV2luZG93KToKKyAgICAgICAg
KEJsYWNrQmVycnk6OldlYktpdDo6QmFja2luZ1N0b3JlUHJpdmF0ZTo6cGFpbnREZWZhdWx0QmFj
a2dyb3VuZCk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OkJhY2tpbmdTdG9yZVByaXZh
dGU6OmJsaXRDb250ZW50cyk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OkJhY2tpbmdT
dG9yZVByaXZhdGU6OmJsaXRUaWxlUmVjdCk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6
OkJhY2tpbmdTdG9yZVByaXZhdGU6OmJsZW5kQ29tcG9zaXRpbmdTdXJmYWNlKToKKyAgICAgICAg
KEJsYWNrQmVycnk6OldlYktpdDo6QmFja2luZ1N0b3JlUHJpdmF0ZTo6cmVuZGVyQ29udGVudHMp
OgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpCYWNraW5nU3RvcmVQcml2YXRlOjpibGl0
VG9XaW5kb3cpOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpCYWNraW5nU3RvcmVQcml2
YXRlOjpjaGVja2VyV2luZG93KToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6QmFja2lu
Z1N0b3JlUHJpdmF0ZTo6aW52YWxpZGF0ZVdpbmRvdyk6CisgICAgICAgIChCbGFja0JlcnJ5OjpX
ZWJLaXQ6OkJhY2tpbmdTdG9yZVByaXZhdGU6OmNsZWFyV2luZG93KToKKyAgICAgICAgKEJsYWNr
QmVycnk6OldlYktpdDo6QmFja2luZ1N0b3JlUHJpdmF0ZTo6ZHJhd1N1YkxheWVycyk6CisgICAg
ICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OkJhY2tpbmdTdG9yZVByaXZhdGU6OnN1cmZhY2VTaXpl
KToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6QmFja2luZ1N0b3JlUHJpdmF0ZTo6YnVm
ZmVyKToKKyAgICAgICAgKiBBcGkvQmFja2luZ1N0b3JlX3AuaDoKKyAgICAgICAgKiBBcGkvV2Vi
UGFnZS5jcHA6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OldlYlBhZ2VQcml2YXRlOjpk
aWRQbHVnaW5FbnRlckZ1bGxTY3JlZW4pOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpX
ZWJQYWdlUHJpdmF0ZTo6ZGlkUGx1Z2luRXhpdEZ1bGxTY3JlZW4pOgorICAgICAgICAoQmxhY2tC
ZXJyeTo6V2ViS2l0OjpXZWJQYWdlUHJpdmF0ZTo6ZHJhd0xheWVyc09uQ29tbWl0KToKKyAgICAg
ICAgKEJsYWNrQmVycnk6OldlYktpdDo6V2ViUGFnZVByaXZhdGU6OmRyYXdTdWJMYXllcnMpOgor
ICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpXZWJQYWdlUHJpdmF0ZTo6cm9vdExheWVyQ29t
bWl0VGltZXJGaXJlZCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50Qmxh
Y2tCZXJyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRCbGFja0JlcnJ5Ojp3
aW5kb3dSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudEJsYWNrQmVycnk6OnNj
cmVlblRvV2luZG93KToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudEJsYWNrQmVycnk6
OndpbmRvd1RvU2NyZWVuKToKKyAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0dMRVMyQ29udGV4dC5j
cHA6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OkdMRVMyQ29udGV4dDo6R0xFUzJDb250
ZXh0KToKKyAgICAgICAgKiBXZWJLaXRTdXBwb3J0L1RvdWNoRXZlbnRIYW5kbGVyLmg6CisgICAg
ICAgICogV2ViS2l0U3VwcG9ydC9XZWJQYWdlQ29tcG9zaXRvci5jcHA6CisgICAgICAgIChCbGFj
a0JlcnJ5OjpXZWJLaXQ6OldlYlBhZ2VDb21wb3NpdG9yOjpXZWJQYWdlQ29tcG9zaXRvcik6Cisg
ICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OldlYlBhZ2VDb21wb3NpdG9yOjpzZXRCYWNraW5n
U3RvcmVVc2VzT3BlbkdMKToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6V2ViUGFnZUNv
bXBvc2l0b3I6OmRyYXdMYXllcnMpOgorICAgICAgICAqIFdlYktpdFN1cHBvcnQvV2ViUGFnZUNv
bXBvc2l0b3IuaDoKKwogMjAxMi0wMy0xMyAgTWlrZSBGZW50b24gIDxtaWZlbnRvbkByaW0uY29t
PgogCiAgICAgICAgIFtCbGFja0JlcnJ5XSBJbnB1dCBmb2N1cyBzdGF0ZSBzaG91bGQgdW5mb2N1
cyB0aGUgZnJhbWUgc2VsZWN0aW9uIGluc3RlYWQgb2YgdGhlIGZpZWxkLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9CYWNraW5nU3RvcmUuY3BwIGIvU291cmNlL1dl
YktpdC9ibGFja2JlcnJ5L0FwaS9CYWNraW5nU3RvcmUuY3BwCmluZGV4IDBkZjYxMzdjNjBmNWFh
YmFiYmNjMTg1MDU2OGUxNmUwNTM4OTE5YmYuLjkwNzU3MzJiNmNiOTJmZTNlY2YzZTViYTJjMzk3
NjBiNGJkYzgyN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvQmFj
a2luZ1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL0JhY2tpbmdT
dG9yZS5jcHAKQEAgLTYwLDYgKzYwLDcgQEAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogdXNp
bmcgbmFtZXNwYWNlIHN0ZDsKIAordXNpbmcgQmxhY2tCZXJyeTo6UGxhdGZvcm06OkdyYXBoaWNz
OjpXaW5kb3c7CiB1c2luZyBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6SW50UmVjdDsKIHVzaW5nIEJs
YWNrQmVycnk6OlBsYXRmb3JtOjpJbnRQb2ludDsKIHVzaW5nIEJsYWNrQmVycnk6OlBsYXRmb3Jt
OjpJbnRTaXplOwpAQCAtMjQ4LDYgKzI0OSwxNSBAQCBib29sIEJhY2tpbmdTdG9yZVByaXZhdGU6
OnNob3VsZERpcmVjdFJlbmRlcmluZ1RvV2luZG93KCkgY29uc3QKICAgICByZXR1cm4gdGlsZXNB
dmFpbGFibGUgPCB0aWxlc05lY2Vzc2FyeTsKIH0KIAorYm9vbCBCYWNraW5nU3RvcmVQcml2YXRl
Ojppc09wZW5HTENvbXBvc2l0aW5nKCkgY29uc3QKK3sKKyAgICBpZiAoV2luZG93KiB3aW5kb3cg
PSBtX3dlYlBhZ2UtPmNsaWVudCgpLT53aW5kb3coKSkKKyAgICAgICAgcmV0dXJuIHdpbmRvdy0+
d2luZG93VXNhZ2UoKSA9PSBXaW5kb3c6OkdMRVMyVXNhZ2U7CisKKyAgICAvLyBJZiB0aGVyZSdz
IG5vIHdpbmRvdywgT3BlbkdMIHJlbmRlcmluZyBpcyBjdXJyZW50bHkgdGhlIG9ubHkgb3B0aW9u
LgorICAgIHJldHVybiB0cnVlOworfQorCiB2b2lkIEJhY2tpbmdTdG9yZVByaXZhdGU6OnN1c3Bl
bmRTY3JlZW5BbmRCYWNraW5nU3RvcmVVcGRhdGVzKCkKIHsKICAgICBtX3N1c3BlbmRCYWNraW5n
U3RvcmVVcGRhdGVzID0gdHJ1ZTsKQEAgLTk5MCw3ICsxMDAwLDcgQEAgYm9vbCBCYWNraW5nU3Rv
cmVQcml2YXRlOjpyZW5kZXIoY29uc3QgUGxhdGZvcm06OkludFJlY3QmIHJlY3QpCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBtX3N1c3BlbmRCYWNraW5nU3RvcmVVcGRhdGVzID8gInRydWUi
IDogImZhbHNlIik7CiAjZW5kaWYKIAotICAgIGJvb2wgYmxpdHRpbmdEaXJlY3RseVRvQ29tcG9z
aXRpbmdXaW5kb3cgPSBtX3dlYlBhZ2UtPmQtPm1fY2xpZW50LT53aW5kb3coKS0+d2luZG93VXNh
Z2UoKSA9PSBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6R3JhcGhpY3M6OldpbmRvdzo6R0xFUzJVc2Fn
ZTsKKyAgICBib29sIGJsaXR0aW5nRGlyZWN0bHlUb0NvbXBvc2l0aW5nV2luZG93ID0gaXNPcGVu
R0xDb21wb3NpdGluZygpOwogCiAgICAgQmFja2luZ1N0b3JlR2VvbWV0cnkqIGN1cnJlbnRTdGF0
ZSA9IGZyb250U3RhdGUoKTsKICAgICBUaWxlTWFwIGN1cnJlbnRNYXAgPSBjdXJyZW50U3RhdGUt
PnRpbGVNYXAoKTsKQEAgLTExNDUsNyArMTE1NSw4IEBAIHZvaWQgQmFja2luZ1N0b3JlUHJpdmF0
ZTo6Y29weVByZXZpb3VzQ29udGVudHNUb0JhY2tTdXJmYWNlT2ZXaW5kb3coKQogICAgIGlmIChw
cmV2aW91c0NvbnRlbnRzUmVnaW9uLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
bV93ZWJQYWdlLT5jbGllbnQoKS0+d2luZG93KCktPmNvcHlGcm9tRnJvbnRUb0JhY2socHJldmlv
dXNDb250ZW50c1JlZ2lvbik7CisgICAgaWYgKFdpbmRvdyogd2luZG93ID0gbV93ZWJQYWdlLT5j
bGllbnQoKS0+d2luZG93KCkpCisgICAgICAgIHdpbmRvdy0+Y29weUZyb21Gcm9udFRvQmFjayhw
cmV2aW91c0NvbnRlbnRzUmVnaW9uKTsKICAgICB3aW5kb3dCYWNrQnVmZmVyU3RhdGUoKS0+YWRk
QmxpdHRlZFJlZ2lvbihwcmV2aW91c0NvbnRlbnRzUmVnaW9uKTsKIH0KIApAQCAtMTE5MSw3ICsx
MjAyLDcgQEAgdm9pZCBCYWNraW5nU3RvcmVQcml2YXRlOjpwYWludERlZmF1bHRCYWNrZ3JvdW5k
KGNvbnN0IFBsYXRmb3JtOjpJbnRSZWN0JiBjb250ZW4KICAgICAgICAgICAgIC8vIEJlY2F1c2Ug
b2Ygcm91bmRpbmcgaXQgaXMgcG9zc2libGUgdGhhdCBvdmVyU2Nyb2xsUmVjdCBjb3VsZCBiZSBv
ZmYtYnktb25lIGxhcmdlcgogICAgICAgICAgICAgLy8gdGhhbiB0aGUgc3VyZmFjZSBzaXplIG9m
IHRoZSB3aW5kb3cuIFdlIHByZXZlbnQgdGhpcyBoZXJlLCBieSBjbGFtcGluZwogICAgICAgICAg
ICAgLy8gaXQgdG8gZW5zdXJlIHRoYXQgY2FuJ3QgaGFwcGVuLgotICAgICAgICAgICAgb3ZlclNj
cm9sbFJlY3QuaW50ZXJzZWN0KFBsYXRmb3JtOjpJbnRSZWN0KFBsYXRmb3JtOjpJbnRQb2ludCgw
LCAwKSwgbV93ZWJQYWdlLT5jbGllbnQoKS0+d2luZG93KCktPnN1cmZhY2VTaXplKCkpKTsKKyAg
ICAgICAgICAgIG92ZXJTY3JvbGxSZWN0LmludGVyc2VjdChQbGF0Zm9ybTo6SW50UmVjdChQbGF0
Zm9ybTo6SW50UG9pbnQoMCwgMCksIHN1cmZhY2VTaXplKCkpKTsKICAgICAgICAgfQogCiAgICAg
ICAgIGNsZWFyV2luZG93KG92ZXJTY3JvbGxSZWN0LCBjb2xvci5yZWQoKSwgY29sb3IuZ3JlZW4o
KSwgY29sb3IuYmx1ZSgpLCBjb2xvci5hbHBoYSgpKTsKQEAgLTEyNTksNyArMTI3MCw3IEBAIHZv
aWQgQmFja2luZ1N0b3JlUHJpdmF0ZTo6YmxpdENvbnRlbnRzKGNvbnN0IFBsYXRmb3JtOjpJbnRS
ZWN0JiBkc3RSZWN0LAogICAgIGlmICghY29udGVudHMuaXNFbXB0eSgpKQogICAgICAgICB0cmFu
c2Zvcm1hdGlvbiA9IFRyYW5zZm9ybWF0aW9uTWF0cml4OjpyZWN0VG9SZWN0KEZsb2F0UmVjdChG
bG9hdFBvaW50KDAuMCwgMC4wKSwgV2ViQ29yZTo6SW50U2l6ZShjb250ZW50cy5zaXplKCkpKSwg
V2ViQ29yZTo6SW50UmVjdChkc3RSZWN0KSk7CiAKLSAgICBib29sIGJsaXR0aW5nRGlyZWN0bHlU
b0NvbXBvc2l0aW5nV2luZG93ID0gbV93ZWJQYWdlLT5kLT5tX2NsaWVudC0+d2luZG93KCktPndp
bmRvd1VzYWdlKCkgPT0gQmxhY2tCZXJyeTo6UGxhdGZvcm06OkdyYXBoaWNzOjpXaW5kb3c6OkdM
RVMyVXNhZ2U7CisgICAgYm9vbCBibGl0dGluZ0RpcmVjdGx5VG9Db21wb3NpdGluZ1dpbmRvdyA9
IGlzT3BlbkdMQ29tcG9zaXRpbmcoKTsKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcp
CiAgICAgQmFja2luZ1N0b3JlQ29tcG9zaXRpbmdTdXJmYWNlKiBjb21wb3NpdGluZ1N1cmZhY2Ug
PQogICAgICAgICBTdXJmYWNlUG9vbDo6Z2xvYmFsU3VyZmFjZVBvb2woKS0+Y29tcG9zaXRpbmdT
dXJmYWNlKCk7CkBAIC0xMzYzLDcgKzEzNzQsNyBAQCB2b2lkIEJhY2tpbmdTdG9yZVByaXZhdGU6
OmJsaXRDb250ZW50cyhjb25zdCBQbGF0Zm9ybTo6SW50UmVjdCYgZHN0UmVjdCwKICAgICAgICAg
ICAgICAgICAvLyBCZWNhdXNlIG9mIHJvdW5kaW5nIGl0IGlzIHBvc3NpYmxlIHRoYXQgZGlydHlS
ZWN0IGNvdWxkIGJlIG9mZi1ieS1vbmUgbGFyZ2VyCiAgICAgICAgICAgICAgICAgLy8gdGhhbiB0
aGUgc3VyZmFjZSBzaXplIG9mIHRoZSBkc3QgYnVmZmVyLiBXZSBwcmV2ZW50IHRoaXMgaGVyZSwg
YnkgY2xhbXBpbmcKICAgICAgICAgICAgICAgICAvLyBpdCB0byBlbnN1cmUgdGhhdCBjYW4ndCBo
YXBwZW4uCi0gICAgICAgICAgICAgICAgZGlydHlSZWN0VC5pbnRlcnNlY3QoUGxhdGZvcm06Oklu
dFJlY3QoUGxhdGZvcm06OkludFBvaW50KDAsIDApLCBtX3dlYlBhZ2UtPmNsaWVudCgpLT53aW5k
b3coKS0+c3VyZmFjZVNpemUoKSkpOworICAgICAgICAgICAgICAgIGRpcnR5UmVjdFQuaW50ZXJz
ZWN0KFBsYXRmb3JtOjpJbnRSZWN0KFBsYXRmb3JtOjpJbnRQb2ludCgwLCAwKSwgc3VyZmFjZVNp
emUoKSkpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgY29uc3QgUGxhdGZvcm06OkludFBv
aW50IGNvbnRlbnRzT3JpZ2luKGRpcnR5UmVjdC54KCkgKyBvcmlnaW4ueCgpLCBkaXJ0eVJlY3Qu
eSgpICsgb3JpZ2luLnkoKSk7CiAjaWYgREVCVUdfQ0hFQ0tFUkJPQVJECkBAIC0xNDA0LDcgKzE0
MTUsNyBAQCB2b2lkIEJhY2tpbmdTdG9yZVByaXZhdGU6OmJsaXRDb250ZW50cyhjb25zdCBQbGF0
Zm9ybTo6SW50UmVjdCYgZHN0UmVjdCwKICAgICAgICAgICAgICAgICAgICAgLy8gQmVjYXVzZSBv
ZiByb3VuZGluZyBpdCBpcyBwb3NzaWJsZSB0aGF0IGRpcnR5UmVjdCBjb3VsZCBiZSBvZmYtYnkt
b25lIGxhcmdlcgogICAgICAgICAgICAgICAgICAgICAvLyB0aGFuIHRoZSBzdXJmYWNlIHNpemUg
b2YgdGhlIGRzdCBidWZmZXIuIFdlIHByZXZlbnQgdGhpcyBoZXJlLCBieSBjbGFtcGluZwogICAg
ICAgICAgICAgICAgICAgICAvLyBpdCB0byBlbnN1cmUgdGhhdCBjYW4ndCBoYXBwZW4uCi0gICAg
ICAgICAgICAgICAgICAgIGRpcnR5UmVjdFQuaW50ZXJzZWN0KFBsYXRmb3JtOjpJbnRSZWN0KFBs
YXRmb3JtOjpJbnRQb2ludCgwLCAwKSwgbV93ZWJQYWdlLT5jbGllbnQoKS0+d2luZG93KCktPnN1
cmZhY2VTaXplKCkpKTsKKyAgICAgICAgICAgICAgICAgICAgZGlydHlSZWN0VC5pbnRlcnNlY3Qo
UGxhdGZvcm06OkludFJlY3QoUGxhdGZvcm06OkludFBvaW50KDAsIDApLCBzdXJmYWNlU2l6ZSgp
KSk7CiAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgYmxpdFRvV2luZG93KGRp
cnR5UmVjdFQsCkBAIC0xNDUwLDggKzE0NjEsNyBAQCB2b2lkIEJhY2tpbmdTdG9yZVByaXZhdGU6
OmJsaXRDb250ZW50cyhjb25zdCBQbGF0Zm9ybTo6SW50UmVjdCYgZHN0UmVjdCwKIAogI2lmIERF
QlVHX1ZJU1VBTElaRQogICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBub3QgZXhwbGljaXRlbHkg
ZGVwZW5kIG9uIFdlYkNvcmU6Oi4KLSAgICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6R3JhcGhpY3M6
OkJ1ZmZlciogd2luZG93QnVmZmVyID0KLSAgICAgICAgbV93ZWJQYWdlLT5jbGllbnQoKS0+d2lu
ZG93KCktPmJ1ZmZlcigpOworICAgIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpHcmFwaGljczo6QnVm
ZmVyKiB3aW5kb3dCdWZmZXIgPSBidWZmZXIoKTsKICAgICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6
R3JhcGhpY3M6OkRyYXdhYmxlKiBidWZmZXJEcmF3YWJsZSA9CiAgICAgICAgIEJsYWNrQmVycnk6
OlBsYXRmb3JtOjpHcmFwaGljczo6bG9ja0J1ZmZlckRyYXdhYmxlKHdpbmRvd0J1ZmZlcik7CiAg
ICAgUGxhdGZvcm1HcmFwaGljc0NvbnRleHQqIGJ1ZmZlclBsYXRmb3JtR3JhcGhpY3NDb250ZXh0
ID0KQEAgLTE1NDIsNyArMTU1Miw3IEBAIFBsYXRmb3JtOjpJbnRSZWN0IEJhY2tpbmdTdG9yZVBy
aXZhdGU6OmJsaXRUaWxlUmVjdChUaWxlQnVmZmVyKiB0aWxlQnVmZmVyLAogICAgICAgICAvLyBC
ZWNhdXNlIG9mIHJvdW5kaW5nIGl0IGlzIHBvc3NpYmxlIHRoYXQgZGlydHlSZWN0IGNvdWxkIGJl
IG9mZi1ieS1vbmUgbGFyZ2VyCiAgICAgICAgIC8vIHRoYW4gdGhlIHN1cmZhY2Ugc2l6ZSBvZiB0
aGUgZHN0IGJ1ZmZlci4gV2UgcHJldmVudCB0aGlzIGhlcmUsIGJ5IGNsYW1waW5nCiAgICAgICAg
IC8vIGl0IHRvIGVuc3VyZSB0aGF0IGNhbid0IGhhcHBlbi4KLSAgICAgICAgZGlydHlSZWN0Lmlu
dGVyc2VjdChQbGF0Zm9ybTo6SW50UmVjdChQbGF0Zm9ybTo6SW50UG9pbnQoMCwgMCksIG1fd2Vi
UGFnZS0+Y2xpZW50KCktPndpbmRvdygpLT5zdXJmYWNlU2l6ZSgpKSk7CisgICAgICAgIGRpcnR5
UmVjdC5pbnRlcnNlY3QoUGxhdGZvcm06OkludFJlY3QoUGxhdGZvcm06OkludFBvaW50KDAsIDAp
LCBzdXJmYWNlU2l6ZSgpKSk7CiAgICAgfQogCiAgICAgQVNTRVJUKCFkaXJ0eVJlY3QuaXNFbXB0
eSgpKTsKQEAgLTE1NzgsNyArMTU4OCw3IEBAIHZvaWQgQmFja2luZ1N0b3JlUHJpdmF0ZTo6Ymxl
bmRDb21wb3NpdGluZ1N1cmZhY2UoY29uc3QgUGxhdGZvcm06OkludFJlY3QmIGRzdFJlCiAKICAg
ICAgICAgaG9sZVB1bmNoUmVjdC5pbnRlcnNlY3QoZHN0UmVjdCk7CiAgICAgICAgIGhvbGVQdW5j
aFJlY3QuaW50ZXJzZWN0KFBsYXRmb3JtOjpJbnRSZWN0KAotICAgICAgICAgICAgUGxhdGZvcm06
OkludFBvaW50KDAsIDApLCBtX3dlYlBhZ2UtPmNsaWVudCgpLT53aW5kb3coKS0+c3VyZmFjZVNp
emUoKSkpOworICAgICAgICAgICAgUGxhdGZvcm06OkludFBvaW50KDAsIDApLCBzdXJmYWNlU2l6
ZSgpKSk7CiAKICAgICAgICAgaWYgKCFob2xlUHVuY2hSZWN0LmlzRW1wdHkoKSkKICAgICAgICAg
ICAgIGNsZWFyV2luZG93KGhvbGVQdW5jaFJlY3QsIDAsIDAsIDAsIDApOwpAQCAtMTU5MCw3ICsx
NjAwLDcgQEAgdm9pZCBCYWNraW5nU3RvcmVQcml2YXRlOjpibGVuZENvbXBvc2l0aW5nU3VyZmFj
ZShjb25zdCBQbGF0Zm9ybTo6SW50UmVjdCYgZHN0UmUKICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IHJlY3RzLnNpemUoKTsgKytpKSB7CiAgICAgICAgIHJlY3RzW2ldLmludGVyc2VjdChkc3RS
ZWN0KTsKICNpZiBERUJVR19DT01QT1NJVElOR19ESVJUWV9SRUdJT04KLSAgICAgICAgY2xlYXJC
dWZmZXIobV93ZWJQYWdlLT5jbGllbnQoKS0+d2luZG93KCktPmJ1ZmZlcigpLCByZWN0c1tpXSwg
MjU1LCAwLCAwLCAxMjgpOworICAgICAgICBjbGVhckJ1ZmZlcihidWZmZXIoKSwgcmVjdHNbaV0s
IDI1NSwgMCwgMCwgMTI4KTsKICNlbmRpZgogICAgICAgICBibGl0VG9XaW5kb3cocmVjdHNbaV0s
IGZyb250QnVmZmVyLT5uYXRpdmVCdWZmZXIoKSwgcmVjdHNbaV0sIHRydWUgLypibGVuZCovLCAy
NTUpOwogICAgIH0KQEAgLTIxMzcsNyArMjE0Nyw3IEBAIHZvaWQgQmFja2luZ1N0b3JlUHJpdmF0
ZTo6cmVuZGVyQ29udGVudHMoQmxhY2tCZXJyeTo6UGxhdGZvcm06OkdyYXBoaWNzOjpCdWZmZXIq
CiAKICAgICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6R3JhcGhpY3M6OkJ1ZmZlciogdGFyZ2V0QnVm
ZmVyID0gdGlsZUJ1ZmZlcgogICAgICAgICA/IHRpbGVCdWZmZXIKLSAgICAgICAgOiBtX3dlYlBh
Z2UtPmNsaWVudCgpLT53aW5kb3coKS0+YnVmZmVyKCk7CisgICAgICAgIDogYnVmZmVyKCk7CiAK
ICAgICBpZiAoY29udGVudHNTaXplLmlzRW1wdHkoKQogICAgICAgICB8fCAhUGxhdGZvcm06Oklu
dFJlY3QoUGxhdGZvcm06OkludFBvaW50KDAsIDApLCBtX2NsaWVudC0+dHJhbnNmb3JtZWRDb250
ZW50c1NpemUoKSkuY29udGFpbnMoY29udGVudHNSZWN0KQpAQCAtMjI3NSw3ICsyMjg1LDcgQEAg
dm9pZCBCYWNraW5nU3RvcmVQcml2YXRlOjpibGl0VG9XaW5kb3coY29uc3QgUGxhdGZvcm06Oklu
dFJlY3QmIGRzdFJlY3QsCiAgICAgd2luZG93RnJvbnRCdWZmZXJTdGF0ZSgpLT5jbGVhckJsaXR0
ZWRSZWdpb24oZHN0UmVjdCk7CiAgICAgd2luZG93QmFja0J1ZmZlclN0YXRlKCktPmFkZEJsaXR0
ZWRSZWdpb24oZHN0UmVjdCk7CiAKLSAgICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6R3JhcGhpY3M6
OkJ1ZmZlciogZHN0QnVmZmVyID0gbV93ZWJQYWdlLT5jbGllbnQoKS0+d2luZG93KCktPmJ1ZmZl
cigpOworICAgIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpHcmFwaGljczo6QnVmZmVyKiBkc3RCdWZm
ZXIgPSBidWZmZXIoKTsKICAgICBBU1NFUlQoZHN0QnVmZmVyKTsKICAgICBBU1NFUlQoc3JjQnVm
ZmVyKTsKICAgICBpZiAoIWRzdEJ1ZmZlcikKQEAgLTIzMDQsNyArMjMxNCw3IEBAIHZvaWQgQmFj
a2luZ1N0b3JlUHJpdmF0ZTo6Y2hlY2tlcldpbmRvdyhjb25zdCBQbGF0Zm9ybTo6SW50UmVjdCYg
ZHN0UmVjdCwKICAgICB3aW5kb3dGcm9udEJ1ZmZlclN0YXRlKCktPmNsZWFyQmxpdHRlZFJlZ2lv
bihkc3RSZWN0KTsKICAgICB3aW5kb3dCYWNrQnVmZmVyU3RhdGUoKS0+YWRkQmxpdHRlZFJlZ2lv
bihkc3RSZWN0KTsKIAotICAgIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpHcmFwaGljczo6QnVmZmVy
KiBkc3RCdWZmZXIgPSBtX3dlYlBhZ2UtPmNsaWVudCgpLT53aW5kb3coKS0+YnVmZmVyKCk7Cisg
ICAgQmxhY2tCZXJyeTo6UGxhdGZvcm06OkdyYXBoaWNzOjpCdWZmZXIqIGRzdEJ1ZmZlciA9IGJ1
ZmZlcigpOwogICAgIEFTU0VSVChkc3RCdWZmZXIpOwogICAgIGlmICghZHN0QnVmZmVyKQogICAg
ICAgICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6bG9nKEJsYWNrQmVycnk6OlBsYXRmb3JtOjpMb2dM
ZXZlbFdhcm4sICJFbXB0eSB3aW5kb3cgYnVmZmVyLCBjb3VsZG4ndCBjaGVja2VyV2luZG93Iik7
CkBAIC0yMzYzLDcgKzIzNzMsOCBAQCB2b2lkIEJhY2tpbmdTdG9yZVByaXZhdGU6OmludmFsaWRh
dGVXaW5kb3coY29uc3QgUGxhdGZvcm06OkludFJlY3QmIGRzdCkKICNlbmRpZgogCiAgICAgbV9j
dXJyZW50V2luZG93QmFja0J1ZmZlciA9IChtX2N1cnJlbnRXaW5kb3dCYWNrQnVmZmVyICsgMSkg
JSAyOwotICAgIG1fd2ViUGFnZS0+Y2xpZW50KCktPndpbmRvdygpLT5wb3N0KGRzdFJlY3QpOwor
ICAgIGlmIChXaW5kb3cqIHdpbmRvdyA9IG1fd2ViUGFnZS0+Y2xpZW50KCktPndpbmRvdygpKQor
ICAgICAgICB3aW5kb3ctPnBvc3QoZHN0UmVjdCk7CiB9CiAKIHZvaWQgQmFja2luZ1N0b3JlUHJp
dmF0ZTo6Y2xlYXJXaW5kb3coKQpAQCAtMjM3NiwxNCArMjM4NywxNCBAQCB2b2lkIEJhY2tpbmdT
dG9yZVByaXZhdGU6OmNsZWFyV2luZG93KCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAg
IEJsYWNrQmVycnk6OlBsYXRmb3JtOjpHcmFwaGljczo6QnVmZmVyKiBkc3RCdWZmZXIgPSBtX3dl
YlBhZ2UtPmNsaWVudCgpLT53aW5kb3coKS0+YnVmZmVyKCk7CisgICAgQmxhY2tCZXJyeTo6UGxh
dGZvcm06OkdyYXBoaWNzOjpCdWZmZXIqIGRzdEJ1ZmZlciA9IGJ1ZmZlcigpOwogICAgIEFTU0VS
VChkc3RCdWZmZXIpOwogICAgIGlmICghZHN0QnVmZmVyKQogICAgICAgICBCbGFja0JlcnJ5OjpQ
bGF0Zm9ybTo6bG9nKEJsYWNrQmVycnk6OlBsYXRmb3JtOjpMb2dMZXZlbFdhcm4sICJFbXB0eSB3
aW5kb3cgYnVmZmVyLCBjb3VsZG4ndCBjbGVhcldpbmRvdyIpOwogCiAgICAgd2luZG93RnJvbnRC
dWZmZXJTdGF0ZSgpLT5jbGVhckJsaXR0ZWRSZWdpb24oKTsKICAgICB3aW5kb3dCYWNrQnVmZmVy
U3RhdGUoKS0+YWRkQmxpdHRlZFJlZ2lvbihQbGF0Zm9ybTo6SW50UmVjdCgKLSAgICAgICAgUGxh
dGZvcm06OkludFBvaW50KDAsIDApLCBtX3dlYlBhZ2UtPmNsaWVudCgpLT53aW5kb3coKS0+c3Vy
ZmFjZVNpemUoKSkpOworICAgICAgICBQbGF0Zm9ybTo6SW50UG9pbnQoMCwgMCksIHN1cmZhY2VT
aXplKCkpKTsKIAogICAgIENvbG9yIGNvbG9yKG1fd2ViUGFnZS0+c2V0dGluZ3MoKS0+YmFja2dy
b3VuZENvbG9yKCkpOwogICAgIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpHcmFwaGljczo6Y2xlYXJC
dWZmZXIoZHN0QnVmZmVyLApAQCAtMjQxNCw3ICsyNDI1LDcgQEAgdm9pZCBCYWNraW5nU3RvcmVQ
cml2YXRlOjpjbGVhcldpbmRvdyhjb25zdCBQbGF0Zm9ybTo6SW50UmVjdCYgcmVjdCwKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpHcmFwaGljczo6
QnVmZmVyKiBkc3RCdWZmZXIgPSBtX3dlYlBhZ2UtPmNsaWVudCgpLT53aW5kb3coKS0+YnVmZmVy
KCk7CisgICAgQmxhY2tCZXJyeTo6UGxhdGZvcm06OkdyYXBoaWNzOjpCdWZmZXIqIGRzdEJ1ZmZl
ciA9IGJ1ZmZlcigpOwogICAgIEFTU0VSVChkc3RCdWZmZXIpOwogICAgIGlmICghZHN0QnVmZmVy
KQogICAgICAgICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6bG9nKEJsYWNrQmVycnk6OlBsYXRmb3Jt
OjpMb2dMZXZlbFdhcm4sICJFbXB0eSB3aW5kb3cgYnVmZmVyLCBjb3VsZG4ndCBjbGVhcldpbmRv
dyIpOwpAQCAtMjUwNCw5ICsyNTE1LDcgQEAgYm9vbCBCYWNraW5nU3RvcmVQcml2YXRlOjpkcmF3
U3ViTGF5ZXJzKCkKICAgICBpZiAoIUJsYWNrQmVycnk6OlBsYXRmb3JtOjp1c2VySW50ZXJmYWNl
VGhyZWFkTWVzc2FnZUNsaWVudCgpLT5pc0N1cnJlbnRUaHJlYWQoKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCi0gICAgYm9vbCBibGl0dGluZ0RpcmVjdGx5VG9Db21wb3NpdGluZ1dpbmRvdyA9
IG1fd2ViUGFnZS0+ZC0+bV9jbGllbnQtPndpbmRvdygpLT53aW5kb3dVc2FnZSgpID09IEJsYWNr
QmVycnk6OlBsYXRmb3JtOjpHcmFwaGljczo6V2luZG93OjpHTEVTMlVzYWdlOwotCi0gICAgaWYg
KG1fc3VzcGVuZEJhY2tpbmdTdG9yZVVwZGF0ZXMgJiYgIWJsaXR0aW5nRGlyZWN0bHlUb0NvbXBv
c2l0aW5nV2luZG93KQorICAgIGlmIChtX3N1c3BlbmRCYWNraW5nU3RvcmVVcGRhdGVzICYmICFp
c09wZW5HTENvbXBvc2l0aW5nKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIFBsYXRm
b3JtOjpJbnRSZWN0IGRzdCA9IG1fd2ViUGFnZS0+Y2xpZW50KCktPnVzZXJJbnRlcmZhY2VCbGl0
dGVkRGVzdGluYXRpb25SZWN0KCk7CkBAIC0yNjcxLDUgKzI2ODAsMjEgQEAgdm9pZCBCYWNraW5n
U3RvcmU6OmJsaXRPbklkbGUoKQogICAgIGQtPmJsaXRWaXNpYmxlQ29udGVudHModHJ1ZSAvKmZv
cmNlKi8pOwogfQogCitQbGF0Zm9ybTo6SW50U2l6ZSBCYWNraW5nU3RvcmVQcml2YXRlOjpzdXJm
YWNlU2l6ZSgpIGNvbnN0Cit7CisgICAgaWYgKFdpbmRvdyogd2luZG93ID0gbV93ZWJQYWdlLT5j
bGllbnQoKS0+d2luZG93KCkpCisgICAgICAgIHJldHVybiB3aW5kb3ctPnN1cmZhY2VTaXplKCk7
CisKKyAgICByZXR1cm4gUGxhdGZvcm06OkludFNpemUoKTsKK30KKworUGxhdGZvcm06OkdyYXBo
aWNzOjpCdWZmZXIqIEJhY2tpbmdTdG9yZVByaXZhdGU6OmJ1ZmZlcigpIGNvbnN0Cit7CisgICAg
aWYgKFdpbmRvdyogd2luZG93ID0gbV93ZWJQYWdlLT5jbGllbnQoKS0+d2luZG93KCkpCisgICAg
ICAgIHJldHVybiB3aW5kb3ctPmJ1ZmZlcigpOworCisgICAgcmV0dXJuIDA7Cit9CisKIH0KIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvQmFja2luZ1N0b3JlX3Au
aCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvQmFja2luZ1N0b3JlX3AuaAppbmRleCA3
OTViNzcxMWIxNWZlNjA0MjZlZmY5OTJkZjJhYmI2MjkwZTVhODMxLi4wNzIxNzI2OTRhZTNiYjMz
NjQ0OGM0OTk0YzQyNzVmYzM3ODFmYjhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNr
YmVycnkvQXBpL0JhY2tpbmdTdG9yZV9wLmgKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5
L0FwaS9CYWNraW5nU3RvcmVfcC5oCkBAIC0xMDYsNiArMTA2LDExIEBAIHB1YmxpYzoKICAgICAv
LyB0aGUgbWluaW11bSBudW1iZXIgb2YgdGlsZXMgcmVxdWlyZWQgdG8gc2Nyb2xsLgogICAgIGJv
b2wgc2hvdWxkRGlyZWN0UmVuZGVyaW5nVG9XaW5kb3coKSBjb25zdDsKIAorICAgIC8vIFJldHVy
bnMgd2hldGhlciB3ZSdyZSB1c2luZyB0aGUgT3BlbkdMIGNvZGUgcGF0aCBmb3IgY29tcG9zaXRp
bmcgdGhlCisgICAgLy8gQmFja2luZ1N0b3JlIHRpbGVzLiBUaGlzIGNhbiBiZSBkdWUgdG8gdGhl
IG1haW4gd2luZG93IHVzaW5nCisgICAgLy8gQmxhY2tCZXJyeTo6UGxhdGZvcm06OkdyYXBoaWNz
OjpXaW5kb3c6OkdMRVMyVXNhZ2UuCisgICAgYm9vbCBpc09wZW5HTENvbXBvc2l0aW5nKCkgY29u
c3Q7CisKICAgICBib29sIGlzU3VzcGVuZGVkKCkgY29uc3QgeyByZXR1cm4gbV9zdXNwZW5kQmFj
a2luZ1N0b3JlVXBkYXRlczsgfQogCiAgICAgLy8gU3VzcGVuZHMgYWxsIHNjcmVlbiB1cGRhdGVz
IHNvIHRoYXQgJ2JsaXRDb250ZW50cycgaXMgZGlzYWJsZWQuCkBAIC0zMTksNiArMzI0LDExIEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgV2ViUGFnZSogY3VycmVudEJhY2tpbmdTdG9yZU93bmVyKCkg
eyByZXR1cm4gQmFja2luZ1N0b3JlUHJpdmF0ZTo6c19jdXJyZW50QmFja2luZ1N0b3JlT3duZXI7
IH0KICAgICBib29sIGlzQWN0aXZlKCkgY29uc3Q7CiAKKyAgICAvLyBTdXJmYWNlIGFic3RyYWN0
aW9uLCBtYXliZSBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6R3JhcGhpY3M6OkJ1ZmZlciBjb3VsZAor
ICAgIC8vIGJlIG1hZGUgcHVibGljIGluc3RlYWQuCisgICAgQmxhY2tCZXJyeTo6UGxhdGZvcm06
OkludFNpemUgc3VyZmFjZVNpemUoKSBjb25zdDsKKyAgICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6
R3JhcGhpY3M6OkJ1ZmZlciogYnVmZmVyKCkgY29uc3Q7CisKICAgICBzdGF0aWMgV2ViUGFnZSog
c19jdXJyZW50QmFja2luZ1N0b3JlT3duZXI7CiAKICAgICBib29sIG1fc3VzcGVuZFNjcmVlblVw
ZGF0ZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2Uu
Y3BwIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlLmNwcAppbmRleCBkNDM0
ZTgzNjNhMTFhNzQ1ZTMxMTliOTYwNmUzMDYxMWYzNGUzNjc3Li5iNzIzNWMyMWNlNzgwNDEzMmRi
OGNiODM3YmFiYTkzNTUxOTAzZjk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVy
cnkvQXBpL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2Vi
UGFnZS5jcHAKQEAgLTE5MzAsNiArMTkzMCwxMCBAQCB2b2lkIFdlYlBhZ2VQcml2YXRlOjpkaWRQ
bHVnaW5FbnRlckZ1bGxTY3JlZW4oUGx1Z2luVmlldyogcGx1Z2luLCBjb25zdCBjaGFyKiB3aQog
ewogICAgIG1fZnVsbFNjcmVlblBsdWdpblZpZXcgPSBwbHVnaW47CiAgICAgbV9jbGllbnQtPmRp
ZFBsdWdpbkVudGVyRnVsbFNjcmVlbigpOworCisgICAgaWYgKCFtX2NsaWVudC0+d2luZG93KCkp
CisgICAgICAgIHJldHVybjsKKwogICAgIFBsYXRmb3JtOjpHcmFwaGljczo6V2luZG93OjpzZXRU
cmFuc3BhcmVuY3lEaXNjYXJkRmlsdGVyKHdpbmRvd1VuaXF1ZVByZWZpeCk7CiAgICAgbV9jbGll
bnQtPndpbmRvdygpLT5zZXRTZW5zaXRpdml0eUZ1bGxzY3JlZW5PdmVycmlkZSh0cnVlKTsKIH0K
QEAgLTE5MzgsNiArMTk0MiwxMCBAQCB2b2lkIFdlYlBhZ2VQcml2YXRlOjpkaWRQbHVnaW5FeGl0
RnVsbFNjcmVlbihQbHVnaW5WaWV3KiBwbHVnaW4sIGNvbnN0IGNoYXIqIHdpbgogewogICAgIG1f
ZnVsbFNjcmVlblBsdWdpblZpZXcgPSAwOwogICAgIG1fY2xpZW50LT5kaWRQbHVnaW5FeGl0RnVs
bFNjcmVlbigpOworCisgICAgaWYgKCFtX2NsaWVudC0+d2luZG93KCkpCisgICAgICAgIHJldHVy
bjsKKwogICAgIFBsYXRmb3JtOjpHcmFwaGljczo6V2luZG93OjpzZXRUcmFuc3BhcmVuY3lEaXNj
YXJkRmlsdGVyKDApOwogICAgIG1fY2xpZW50LT53aW5kb3coKS0+c2V0U2Vuc2l0aXZpdHlGdWxs
c2NyZWVuT3ZlcnJpZGUoZmFsc2UpOwogfQpAQCAtNTA4Myw3ICs1MDkxLDcgQEAgdm9pZCBXZWJQ
YWdlUHJpdmF0ZTo6ZHJhd0xheWVyc09uQ29tbWl0KCkKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAotICAgIGlmIChtX2NsaWVudC0+d2luZG93KCktPndpbmRvd1VzYWdlKCkgPT0gUGxhdGZvcm06
OkdyYXBoaWNzOjpXaW5kb3c6OkdMRVMyVXNhZ2UpIHsKKyAgICBpZiAobV9iYWNraW5nU3RvcmUt
PmQtPmlzT3BlbkdMQ29tcG9zaXRpbmcoKSkgewogICAgICAgICBtX2JhY2tpbmdTdG9yZS0+ZC0+
YmxpdFZpc2libGVDb250ZW50cygpOwogICAgICAgICByZXR1cm47IC8vIGJsaXRWaXNpYmxlQ29u
dGVudHMoKSBpbmNsdWRlcyBkcmF3U3ViTGF5ZXJzKCkgaW4gdGhpcyBjYXNlLgogICAgIH0KQEAg
LTUxMTQsOCArNTEyMiw3IEBAIGJvb2wgV2ViUGFnZVByaXZhdGU6OmRyYXdTdWJMYXllcnMoY29u
c3QgSW50UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBjb250CiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAogICAgIGlmIChtX2NvbXBvc2l0b3IpIHsKLSAgICAgICAgbV9jb21wb3NpdG9y
LT5zZXRDb21wb3NpdGluZ09udG9NYWluV2luZG93KAotICAgICAgICAgICAgbV9jbGllbnQtPndp
bmRvdygpLT53aW5kb3dVc2FnZSgpID09IFBsYXRmb3JtOjpHcmFwaGljczo6V2luZG93OjpHTEVT
MlVzYWdlKTsKKyAgICAgICAgbV9jb21wb3NpdG9yLT5zZXRCYWNraW5nU3RvcmVVc2VzT3BlbkdM
KG1fYmFja2luZ1N0b3JlLT5kLT5pc09wZW5HTENvbXBvc2l0aW5nKCkpOwogICAgICAgICByZXR1
cm4gbV9jb21wb3NpdG9yLT5kcmF3TGF5ZXJzKGRzdFJlY3QsIGNvbnRlbnRzKTsKICAgICB9CiAK
QEAgLTUyNDMsNyArNTI1MCw3IEBAIHZvaWQgV2ViUGFnZVByaXZhdGU6OnJvb3RMYXllckNvbW1p
dFRpbWVyRmlyZWQoVGltZXI8V2ViUGFnZVByaXZhdGU+KikKICAgICByZXF1ZXN0TGF5b3V0SWZO
ZWVkZWQoKTsKIAogICAgIGJvb2wgaXNTaW5nbGVUYXJnZXRXaW5kb3cgPSBTdXJmYWNlUG9vbDo6
Z2xvYmFsU3VyZmFjZVBvb2woKS0+Y29tcG9zaXRpbmdTdXJmYWNlKCkKLSAgICAgICAgfHwgbV9j
bGllbnQtPndpbmRvdygpLT53aW5kb3dVc2FnZSgpID09IFBsYXRmb3JtOjpHcmFwaGljczo6V2lu
ZG93OjpHTEVTMlVzYWdlOworICAgICAgICB8fCBtX2JhY2tpbmdTdG9yZS0+ZC0+aXNPcGVuR0xD
b21wb3NpdGluZygpOwogCiAgICAgLy8gSWYgd2UgYXJlIGRvaW5nIGRpcmVjdCByZW5kZXJpbmcg
YW5kIGhhdmUgYSBzaW5nbGUgcmVuZGVyaW5nIHRhcmdldCwKICAgICAvLyBjb21taXR0aW5nIGlz
IGVxdWl2YWxlbnQgdG8gYSBvbmUgc2hvdCBkcmF3aW5nIHN5bmNocm9uaXphdGlvbi4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGll
bnRCbGFja0JlcnJ5LmNwcCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9y
dC9DaHJvbWVDbGllbnRCbGFja0JlcnJ5LmNwcAppbmRleCA1Yjk3NGQwZTgxNTkwMTYwZDVkYTMx
NDQxZTIzZjgzMjBhZWIwMzNhLi5jZjc4NzI5NTk5YzVmNDI4YTgwNDVkY2IxYWQzNTI4Zjg2Yzg3
MzE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQv
Q2hyb21lQ2xpZW50QmxhY2tCZXJyeS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5
L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEJsYWNrQmVycnkuY3BwCkBAIC02OSw2ICs2OSw4
IEBACiAKIHVzaW5nIG5hbWVzcGFjZSBCbGFja0JlcnJ5OjpXZWJLaXQ7CiAKK3VzaW5nIEJsYWNr
QmVycnk6OlBsYXRmb3JtOjpHcmFwaGljczo6V2luZG93OworCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIHN0YXRpYyBDU3RyaW5nIGZyYW1lT3JpZ2luKEZyYW1lKiBmcmFtZSkKQEAgLTE1MSw3ICsx
NTMsMTEgQEAgdm9pZCBDaHJvbWVDbGllbnRCbGFja0JlcnJ5OjpzZXRXaW5kb3dSZWN0KGNvbnN0
IEZsb2F0UmVjdCYpCiAKIEZsb2F0UmVjdCBDaHJvbWVDbGllbnRCbGFja0JlcnJ5Ojp3aW5kb3dS
ZWN0KCkKIHsKLSAgICBjb25zdCBJbnRTaXplIHdpbmRvd1NpemUgPSBtX3dlYlBhZ2VQcml2YXRl
LT5tX2NsaWVudC0+d2luZG93KCktPndpbmRvd1NpemUoKTsKKyAgICBJbnRTaXplIHdpbmRvd1Np
emU7CisKKyAgICBpZiAoV2luZG93KiB3aW5kb3cgPSBtX3dlYlBhZ2VQcml2YXRlLT5tX2NsaWVu
dC0+d2luZG93KCkpCisgICAgICAgIHdpbmRvd1NpemUgPSB3aW5kb3ctPndpbmRvd1NpemUoKTsK
KwogICAgIHJldHVybiBGbG9hdFJlY3QoMCwgMCwgd2luZG93U2l6ZS53aWR0aCgpLCB3aW5kb3dT
aXplLmhlaWdodCgpKTsKIH0KIApAQCAtMzczLDcgKzM3OSwxMCBAQCBJbnRSZWN0IENocm9tZUNs
aWVudEJsYWNrQmVycnk6OndpbmRvd1Jlc2l6ZXJSZWN0KCkgY29uc3QKIAogSW50UG9pbnQgQ2hy
b21lQ2xpZW50QmxhY2tCZXJyeTo6c2NyZWVuVG9XaW5kb3coY29uc3QgSW50UG9pbnQmIHNjcmVl
blBvcykgY29uc3QKIHsKLSAgICBJbnRQb2ludCB3aW5kb3dQb2ludCA9IG1fd2ViUGFnZVByaXZh
dGUtPm1fY2xpZW50LT53aW5kb3coKS0+d2luZG93TG9jYXRpb24oKTsKKyAgICBJbnRQb2ludCB3
aW5kb3dQb2ludDsKKyAgICBpZiAoV2luZG93KiB3aW5kb3cgPSBtX3dlYlBhZ2VQcml2YXRlLT5t
X2NsaWVudC0+d2luZG93KCkpCisgICAgICAgIHdpbmRvd1BvaW50ID0gd2luZG93LT53aW5kb3dM
b2NhdGlvbigpOworCiAgICAgd2luZG93UG9pbnQubW92ZSgtc2NyZWVuUG9zLngoKSwgLXNjcmVl
blBvcy55KCkpOwogICAgIHJldHVybiB3aW5kb3dQb2ludDsKIH0KQEAgLTM4MSw3ICszOTAsMTAg
QEAgSW50UG9pbnQgQ2hyb21lQ2xpZW50QmxhY2tCZXJyeTo6c2NyZWVuVG9XaW5kb3coY29uc3Qg
SW50UG9pbnQmIHNjcmVlblBvcykgY29uc3QKIEludFJlY3QgQ2hyb21lQ2xpZW50QmxhY2tCZXJy
eTo6d2luZG93VG9TY3JlZW4oY29uc3QgSW50UmVjdCYgd2luZG93UmVjdCkgY29uc3QKIHsKICAg
ICBJbnRSZWN0IHdpbmRvd1BvaW50KHdpbmRvd1JlY3QpOwotICAgIEludFBvaW50IGxvY2F0aW9u
KG1fd2ViUGFnZVByaXZhdGUtPm1fY2xpZW50LT53aW5kb3coKS0+d2luZG93TG9jYXRpb24oKSk7
CisgICAgSW50UG9pbnQgbG9jYXRpb247CisgICAgaWYgKFdpbmRvdyogd2luZG93ID0gbV93ZWJQ
YWdlUHJpdmF0ZS0+bV9jbGllbnQtPndpbmRvdygpKQorICAgICAgICBsb2NhdGlvbiA9IHdpbmRv
dy0+d2luZG93TG9jYXRpb24oKTsKKwogICAgIHdpbmRvd1BvaW50Lm1vdmUobG9jYXRpb24ueCgp
LCBsb2NhdGlvbi55KCkpOwogICAgIHJldHVybiB3aW5kb3dQb2ludDsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L0dMRVMyQ29udGV4dC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9HTEVTMkNvbnRleHQuY3Bw
CmluZGV4IDU1YjllMTVkZDY1MDA3NzI4YzcwY2FiYzkyOGM0ZTI2ZDMwZTViODcuLmVlNTliODRm
MzUyNjM4MTllMGQ2OTUyNWYzZjcxYTgwYmYyNmJkNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L0dMRVMyQ29udGV4dC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvR0xFUzJDb250ZXh0LmNwcApAQCAtNDIs
NiArNDIsOCBAQAogCiAjaW5jbHVkZSA8R0xFUzIvZ2wyLmg+CiAKK3VzaW5nIEJsYWNrQmVycnk6
OlBsYXRmb3JtOjpHcmFwaGljczo6V2luZG93OworCiBuYW1lc3BhY2UgQmxhY2tCZXJyeSB7CiBu
YW1lc3BhY2UgV2ViS2l0IHsKIApAQCAtNzIsOCArNzQsMTAgQEAgUGFzc093blB0cjxHTEVTMkNv
bnRleHQ+IEdMRVMyQ29udGV4dDo6Y3JlYXRlKFdlYlBhZ2VQcml2YXRlKiBwYWdlKQogR0xFUzJD
b250ZXh0OjpHTEVTMkNvbnRleHQoV2ViUGFnZVByaXZhdGUqIHBhZ2UpCiAgICAgOiBtX3dpbmRv
dygwKQogewotICAgIGlmIChwYWdlLT5tX2NsaWVudC0+d2luZG93KCktPndpbmRvd1VzYWdlKCkg
PT0gUGxhdGZvcm06OkdyYXBoaWNzOjpXaW5kb3c6OkdMRVMyVXNhZ2UpCi0gICAgICAgIG1fd2lu
ZG93ID0gcGFnZS0+bV9jbGllbnQtPndpbmRvdygpOworICAgIGlmIChXaW5kb3cqIHdpbmRvdyA9
IHBhZ2UtPm1fY2xpZW50LT53aW5kb3coKSkgeworICAgICAgICBpZiAod2luZG93LT53aW5kb3dV
c2FnZSgpID09IFBsYXRmb3JtOjpHcmFwaGljczo6V2luZG93OjpHTEVTMlVzYWdlKQorICAgICAg
ICAgICAgbV93aW5kb3cgPSB3aW5kb3c7CisgICAgfQogfQogCiBHTEVTMkNvbnRleHQ6On5HTEVT
MkNvbnRleHQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1
cHBvcnQvVG91Y2hFdmVudEhhbmRsZXIuaCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJL
aXRTdXBwb3J0L1RvdWNoRXZlbnRIYW5kbGVyLmgKaW5kZXggNDczZmMzMGEyMTgwYjhlNzM1ZDlj
MzU3NGU1ZTJkNzljMTQ5ZTk3ZS4uM2I3YWU1MDZlZDg3Y2I4NjE5ODI1YWNlNDk0NThkMmJlNTZl
MTc5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQv
VG91Y2hFdmVudEhhbmRsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0
U3VwcG9ydC9Ub3VjaEV2ZW50SGFuZGxlci5oCkBAIC0yNCw3ICsyNCw2IEBACiAjaW5jbHVkZSAi
SW50UG9pbnQuaCIKIAogI2luY2x1ZGUgPEJsYWNrQmVycnlQbGF0Zm9ybVRvdWNoRXZlbnQuaD4K
LSNpbmNsdWRlIDxCbGFja0JlcnJ5UGxhdGZvcm1XaW5kb3cuaD4KIAogbmFtZXNwYWNlIEJsYWNr
QmVycnkgewogbmFtZXNwYWNlIFdlYktpdCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Js
YWNrYmVycnkvV2ViS2l0U3VwcG9ydC9XZWJQYWdlQ29tcG9zaXRvci5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9XZWJQYWdlQ29tcG9zaXRvci5jcHAKaW5kZXgg
OTFhNGViMjFkMjRmYzE0OGZjNjcxZTYyNjFkYmFjMDQ5ZGMzYzMzYy4uYjE0N2RiNTM0MmY2NmU1
MTRmY2QyMTdjNDI3NjgzNzVlOTI4YzdmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFj
a2JlcnJ5L1dlYktpdFN1cHBvcnQvV2ViUGFnZUNvbXBvc2l0b3IuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L1dlYlBhZ2VDb21wb3NpdG9yLmNwcApAQCAt
NDEsNyArNDEsNyBAQCBXZWJQYWdlQ29tcG9zaXRvcjo6V2ViUGFnZUNvbXBvc2l0b3IoV2ViUGFn
ZVByaXZhdGUqIHBhZ2UpCiAgICAgLCBtX2xheWVyUmVuZGVyZXIoTGF5ZXJSZW5kZXJlcjo6Y3Jl
YXRlKHBhZ2UtPm1fcGFnZSkpCiAgICAgLCBtX2dlbmVyYXRpb24oMCkKICAgICAsIG1fY29tcG9z
aXRlZEdlbmVyYXRpb24oLTEpCi0gICAgLCBtX2NvbXBvc2l0aW5nT250b01haW5XaW5kb3coZmFs
c2UpCisgICAgLCBtX2JhY2tpbmdTdG9yZVVzZXNPcGVuR0woZmFsc2UpCiAgICAgLCBtX2FuaW1h
dGlvblRpbWVyKHRoaXMsICZXZWJQYWdlQ29tcG9zaXRvcjo6YW5pbWF0aW9uVGltZXJGaXJlZCkK
ICAgICAsIG1fdGltZXJDbGllbnQobmV3IFBsYXRmb3JtOjpHZW5lcmljVGltZXJDbGllbnQoUGxh
dGZvcm06OnVzZXJJbnRlcmZhY2VUaHJlYWRUaW1lckNsaWVudCgpKSkKIHsKQEAgLTY1LDEwICs2
NSwxMCBAQCB2b2lkIFdlYlBhZ2VDb21wb3NpdG9yOjpzZXRSb290TGF5ZXIoTGF5ZXJDb21wb3Np
dGluZ1RocmVhZCogcm9vdExheWVyKQogICAgIG1fbGF5ZXJSZW5kZXJlci0+c2V0Um9vdExheWVy
KG1fcm9vdExheWVyLmdldCgpKTsKIH0KIAotdm9pZCBXZWJQYWdlQ29tcG9zaXRvcjo6c2V0Q29t
cG9zaXRpbmdPbnRvTWFpbldpbmRvdyhib29sIGNvbXBvc2l0aW5nT250b01haW5XaW5kb3cpCit2
b2lkIFdlYlBhZ2VDb21wb3NpdG9yOjpzZXRCYWNraW5nU3RvcmVVc2VzT3BlbkdMKGJvb2wgYmFj
a2luZ1N0b3JlVXNlc09wZW5HTCkKIHsKLSAgICBtX2NvbXBvc2l0aW5nT250b01haW5XaW5kb3cg
PSBjb21wb3NpdGluZ09udG9NYWluV2luZG93OwotICAgIG1fbGF5ZXJSZW5kZXJlci0+c2V0Q2xl
YXJTdXJmYWNlT25EcmF3TGF5ZXJzKCFjb21wb3NpdGluZ09udG9NYWluV2luZG93KTsKKyAgICBt
X2JhY2tpbmdTdG9yZVVzZXNPcGVuR0wgPSBiYWNraW5nU3RvcmVVc2VzT3BlbkdMOworICAgIG1f
bGF5ZXJSZW5kZXJlci0+c2V0Q2xlYXJTdXJmYWNlT25EcmF3TGF5ZXJzKCFiYWNraW5nU3RvcmVV
c2VzT3BlbkdMKTsKIH0KIAogdm9pZCBXZWJQYWdlQ29tcG9zaXRvcjo6Y29tbWl0KExheWVyV2Vi
S2l0VGhyZWFkKiByb290TGF5ZXIpCkBAIC04NCw3ICs4NCw3IEBAIGJvb2wgV2ViUGFnZUNvbXBv
c2l0b3I6OmRyYXdMYXllcnMoY29uc3QgSW50UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0
JiBjb250CiB7CiAgICAgLy8gU2F2ZSBhIGRyYXcgaWYgd2UgYWxyZWFkeSBkcmV3IHRoaXMgZ2Vu
ZXJhdGlvbiwgZm9yIGV4YW1wbGUgZHVlIHRvIGEgY29uY3VycmVudCBzY3JvbGwgb3BlcmF0aW9u
LgogICAgIGlmIChtX2NvbXBvc2l0ZWRHZW5lcmF0aW9uID09IG1fZ2VuZXJhdGlvbiAmJiBkc3RS
ZWN0ID09IG1fY29tcG9zaXRlZERzdFJlY3QKLSAgICAgICAgJiYgY29udGVudHMgPT0gbV9jb21w
b3NpdGVkQ29udGVudHNSZWN0ICYmICFtX2NvbXBvc2l0aW5nT250b01haW5XaW5kb3cpCisgICAg
ICAgICYmIGNvbnRlbnRzID09IG1fY29tcG9zaXRlZENvbnRlbnRzUmVjdCAmJiAhbV9iYWNraW5n
U3RvcmVVc2VzT3BlbkdMKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBtX2xheWVyUmVu
ZGVyZXItPmRyYXdMYXllcnMoY29udGVudHMsIG1fbGF5b3V0UmVjdEZvckNvbXBvc2l0aW5nLCBt
X2NvbnRlbnRzU2l6ZUZvckNvbXBvc2l0aW5nLCBkc3RSZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L1dlYlBhZ2VDb21wb3NpdG9yLmggYi9T
b3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9XZWJQYWdlQ29tcG9zaXRvci5o
CmluZGV4IGFhMGE5YThjMGRjM2U3ODIzMWE3MTg0ZDlkNmZhZDlmNDliNTAzMDUuLjVmM2RlYmZl
NWM3YzUwMDM0YjVjMGRiNDY1ZDcwYzI0YmFjMTYwNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L1dlYlBhZ2VDb21wb3NpdG9yLmgKKysrIGIvU291
cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvV2ViUGFnZUNvbXBvc2l0b3IuaApA
QCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldFJvb3RMYXllcihXZWJDb3Jl
OjpMYXllckNvbXBvc2l0aW5nVGhyZWFkKik7CiAKLSAgICB2b2lkIHNldENvbXBvc2l0aW5nT250
b01haW5XaW5kb3coYm9vbCk7CisgICAgdm9pZCBzZXRCYWNraW5nU3RvcmVVc2VzT3BlbkdMKGJv
b2wpOwogCiAgICAgdm9pZCBjb21taXQoV2ViQ29yZTo6TGF5ZXJXZWJLaXRUaHJlYWQqIHJvb3RM
YXllclByb3h5KTsKIApAQCAtNzcsNyArNzcsNyBAQCBwcml2YXRlOgogICAgIGludCBtX2NvbXBv
c2l0ZWRHZW5lcmF0aW9uOwogICAgIFdlYkNvcmU6OkludFJlY3QgbV9jb21wb3NpdGVkRHN0UmVj
dDsKICAgICBXZWJDb3JlOjpGbG9hdFJlY3QgbV9jb21wb3NpdGVkQ29udGVudHNSZWN0OwotICAg
IGJvb2wgbV9jb21wb3NpdGluZ09udG9NYWluV2luZG93OworICAgIGJvb2wgbV9iYWNraW5nU3Rv
cmVVc2VzT3BlbkdMOwogICAgIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpUaW1lcjxXZWJQYWdlQ29t
cG9zaXRvcj4gbV9hbmltYXRpb25UaW1lcjsKICAgICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6VGlt
ZXJDbGllbnQqIG1fdGltZXJDbGllbnQ7CiB9Owo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>131846</attachid>
            <date>2012-03-14 07:55:08 -0700</date>
            <delta_ts>2012-03-14 18:48:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-81099-20120314155505.patch</filename>
            <type>text/plain</type>
            <size>24170</size>
            <attacher name="Arvid Nilsson">anilsson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEwNjk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Js
YWNrYmVycnkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZwpp
bmRleCBiZTNlZjQ1YzA5YzY1OTI1ZTY1NjBkNjVmOGZmNmQ4MjAzMzk1YmY1Li5kNWZmMGYyYzk3
YzJkZGU5YzQwY2MyYmNiM2MxZDQ2MThiNWMzZWVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2JsYWNrYmVycnkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSw1MSBAQAorMjAxMi0wMy0xNCAgQXJ2aWQgTmlsc3NvbiAgPGFuaWxz
c29uQHJpbS5jb20+CisKKyAgICAgICAgW0JsYWNrQmVycnldIE1ha2Ugc3VyZSBXZWJQYWdlIGFu
ZCBCYWNraW5nU3RvcmUgZG9uJ3QgY3Jhc2ggd2l0aG91dCBhIFdpbmRvdworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODEwOTkKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBbHNvIHJlbmFtZSB0aGUgImNvbXBv
c2l0aW5nL2JsaXR0aW5nIHRvIG1haW4gd2luZG93IiB2YXJpYWJsZXMgdG8KKyAgICAgICAgaW5z
dGVhZCByZWZlciB0byBPcGVuR0wgY29tcG9zaXRpbmcuIFRoZSBjb2RlIHBhdGhzIGl0IHRyaWdn
ZXJzIGFyZQorICAgICAgICByZWxhdGVkIHRvIHRoZSBCYWNraW5nU3RvcmUgdXNpbmcgT3BlbkdM
IGNvbXBvc2l0aW5nLCBhbmQgY2FuIGJlIHVzZWZ1bAorICAgICAgICBldmVuIHdoZW4gdGhlcmUn
cyBubyB3aW5kb3cuCisKKyAgICAgICAgKiBBcGkvQmFja2luZ1N0b3JlLmNwcDoKKyAgICAgICAg
KEJsYWNrQmVycnk6OldlYktpdDo6QmFja2luZ1N0b3JlUHJpdmF0ZTo6aXNPcGVuR0xDb21wb3Np
dGluZyk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OkJhY2tpbmdTdG9yZVByaXZhdGU6
OnJlbmRlcik6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OkJhY2tpbmdTdG9yZVByaXZh
dGU6OmNvcHlQcmV2aW91c0NvbnRlbnRzVG9CYWNrU3VyZmFjZU9mV2luZG93KToKKyAgICAgICAg
KEJsYWNrQmVycnk6OldlYktpdDo6QmFja2luZ1N0b3JlUHJpdmF0ZTo6cGFpbnREZWZhdWx0QmFj
a2dyb3VuZCk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OkJhY2tpbmdTdG9yZVByaXZh
dGU6OmJsaXRDb250ZW50cyk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OkJhY2tpbmdT
dG9yZVByaXZhdGU6OmJsaXRUaWxlUmVjdCk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6
OkJhY2tpbmdTdG9yZVByaXZhdGU6OmJsZW5kQ29tcG9zaXRpbmdTdXJmYWNlKToKKyAgICAgICAg
KEJsYWNrQmVycnk6OldlYktpdDo6QmFja2luZ1N0b3JlUHJpdmF0ZTo6cmVuZGVyQ29udGVudHMp
OgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpCYWNraW5nU3RvcmVQcml2YXRlOjpibGl0
VG9XaW5kb3cpOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpCYWNraW5nU3RvcmVQcml2
YXRlOjpjaGVja2VyV2luZG93KToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6QmFja2lu
Z1N0b3JlUHJpdmF0ZTo6aW52YWxpZGF0ZVdpbmRvdyk6CisgICAgICAgIChCbGFja0JlcnJ5OjpX
ZWJLaXQ6OkJhY2tpbmdTdG9yZVByaXZhdGU6OmNsZWFyV2luZG93KToKKyAgICAgICAgKEJsYWNr
QmVycnk6OldlYktpdDo6QmFja2luZ1N0b3JlUHJpdmF0ZTo6ZHJhd1N1YkxheWVycyk6CisgICAg
ICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OkJhY2tpbmdTdG9yZVByaXZhdGU6OnN1cmZhY2VTaXpl
KToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6QmFja2luZ1N0b3JlUHJpdmF0ZTo6YnVm
ZmVyKToKKyAgICAgICAgKiBBcGkvQmFja2luZ1N0b3JlX3AuaDoKKyAgICAgICAgKiBBcGkvV2Vi
UGFnZS5jcHA6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OldlYlBhZ2VQcml2YXRlOjpk
aWRQbHVnaW5FbnRlckZ1bGxTY3JlZW4pOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpX
ZWJQYWdlUHJpdmF0ZTo6ZGlkUGx1Z2luRXhpdEZ1bGxTY3JlZW4pOgorICAgICAgICAoQmxhY2tC
ZXJyeTo6V2ViS2l0OjpXZWJQYWdlUHJpdmF0ZTo6ZHJhd0xheWVyc09uQ29tbWl0KToKKyAgICAg
ICAgKEJsYWNrQmVycnk6OldlYktpdDo6V2ViUGFnZVByaXZhdGU6OmRyYXdTdWJMYXllcnMpOgor
ICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpXZWJQYWdlUHJpdmF0ZTo6cm9vdExheWVyQ29t
bWl0VGltZXJGaXJlZCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50Qmxh
Y2tCZXJyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRCbGFja0JlcnJ5Ojp3
aW5kb3dSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudEJsYWNrQmVycnk6OnNj
cmVlblRvV2luZG93KToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudEJsYWNrQmVycnk6
OndpbmRvd1RvU2NyZWVuKToKKyAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0dMRVMyQ29udGV4dC5j
cHA6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OkdMRVMyQ29udGV4dDo6R0xFUzJDb250
ZXh0KToKKyAgICAgICAgKiBXZWJLaXRTdXBwb3J0L1RvdWNoRXZlbnRIYW5kbGVyLmg6CisgICAg
ICAgICogV2ViS2l0U3VwcG9ydC9XZWJQYWdlQ29tcG9zaXRvci5jcHA6CisgICAgICAgIChCbGFj
a0JlcnJ5OjpXZWJLaXQ6OldlYlBhZ2VDb21wb3NpdG9yOjpXZWJQYWdlQ29tcG9zaXRvcik6Cisg
ICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OldlYlBhZ2VDb21wb3NpdG9yOjpzZXRCYWNraW5n
U3RvcmVVc2VzT3BlbkdMKToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6V2ViUGFnZUNv
bXBvc2l0b3I6OmRyYXdMYXllcnMpOgorICAgICAgICAqIFdlYktpdFN1cHBvcnQvV2ViUGFnZUNv
bXBvc2l0b3IuaDoKKwogMjAxMi0wMy0xMyAgTWlrZSBGZW50b24gIDxtaWZlbnRvbkByaW0uY29t
PgogCiAgICAgICAgIFtCbGFja0JlcnJ5XSBJbnB1dCBmb2N1cyBzdGF0ZSBzaG91bGQgdW5mb2N1
cyB0aGUgZnJhbWUgc2VsZWN0aW9uIGluc3RlYWQgb2YgdGhlIGZpZWxkLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9CYWNraW5nU3RvcmUuY3BwIGIvU291cmNlL1dl
YktpdC9ibGFja2JlcnJ5L0FwaS9CYWNraW5nU3RvcmUuY3BwCmluZGV4IDBkZjYxMzdjNjBmNWFh
YmFiYmNjMTg1MDU2OGUxNmUwNTM4OTE5YmYuLjkwNzU3MzJiNmNiOTJmZTNlY2YzZTViYTJjMzk3
NjBiNGJkYzgyN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvQmFj
a2luZ1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL0JhY2tpbmdT
dG9yZS5jcHAKQEAgLTYwLDYgKzYwLDcgQEAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogdXNp
bmcgbmFtZXNwYWNlIHN0ZDsKIAordXNpbmcgQmxhY2tCZXJyeTo6UGxhdGZvcm06OkdyYXBoaWNz
OjpXaW5kb3c7CiB1c2luZyBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6SW50UmVjdDsKIHVzaW5nIEJs
YWNrQmVycnk6OlBsYXRmb3JtOjpJbnRQb2ludDsKIHVzaW5nIEJsYWNrQmVycnk6OlBsYXRmb3Jt
OjpJbnRTaXplOwpAQCAtMjQ4LDYgKzI0OSwxNSBAQCBib29sIEJhY2tpbmdTdG9yZVByaXZhdGU6
OnNob3VsZERpcmVjdFJlbmRlcmluZ1RvV2luZG93KCkgY29uc3QKICAgICByZXR1cm4gdGlsZXNB
dmFpbGFibGUgPCB0aWxlc05lY2Vzc2FyeTsKIH0KIAorYm9vbCBCYWNraW5nU3RvcmVQcml2YXRl
Ojppc09wZW5HTENvbXBvc2l0aW5nKCkgY29uc3QKK3sKKyAgICBpZiAoV2luZG93KiB3aW5kb3cg
PSBtX3dlYlBhZ2UtPmNsaWVudCgpLT53aW5kb3coKSkKKyAgICAgICAgcmV0dXJuIHdpbmRvdy0+
d2luZG93VXNhZ2UoKSA9PSBXaW5kb3c6OkdMRVMyVXNhZ2U7CisKKyAgICAvLyBJZiB0aGVyZSdz
IG5vIHdpbmRvdywgT3BlbkdMIHJlbmRlcmluZyBpcyBjdXJyZW50bHkgdGhlIG9ubHkgb3B0aW9u
LgorICAgIHJldHVybiB0cnVlOworfQorCiB2b2lkIEJhY2tpbmdTdG9yZVByaXZhdGU6OnN1c3Bl
bmRTY3JlZW5BbmRCYWNraW5nU3RvcmVVcGRhdGVzKCkKIHsKICAgICBtX3N1c3BlbmRCYWNraW5n
U3RvcmVVcGRhdGVzID0gdHJ1ZTsKQEAgLTk5MCw3ICsxMDAwLDcgQEAgYm9vbCBCYWNraW5nU3Rv
cmVQcml2YXRlOjpyZW5kZXIoY29uc3QgUGxhdGZvcm06OkludFJlY3QmIHJlY3QpCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBtX3N1c3BlbmRCYWNraW5nU3RvcmVVcGRhdGVzID8gInRydWUi
IDogImZhbHNlIik7CiAjZW5kaWYKIAotICAgIGJvb2wgYmxpdHRpbmdEaXJlY3RseVRvQ29tcG9z
aXRpbmdXaW5kb3cgPSBtX3dlYlBhZ2UtPmQtPm1fY2xpZW50LT53aW5kb3coKS0+d2luZG93VXNh
Z2UoKSA9PSBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6R3JhcGhpY3M6OldpbmRvdzo6R0xFUzJVc2Fn
ZTsKKyAgICBib29sIGJsaXR0aW5nRGlyZWN0bHlUb0NvbXBvc2l0aW5nV2luZG93ID0gaXNPcGVu
R0xDb21wb3NpdGluZygpOwogCiAgICAgQmFja2luZ1N0b3JlR2VvbWV0cnkqIGN1cnJlbnRTdGF0
ZSA9IGZyb250U3RhdGUoKTsKICAgICBUaWxlTWFwIGN1cnJlbnRNYXAgPSBjdXJyZW50U3RhdGUt
PnRpbGVNYXAoKTsKQEAgLTExNDUsNyArMTE1NSw4IEBAIHZvaWQgQmFja2luZ1N0b3JlUHJpdmF0
ZTo6Y29weVByZXZpb3VzQ29udGVudHNUb0JhY2tTdXJmYWNlT2ZXaW5kb3coKQogICAgIGlmIChw
cmV2aW91c0NvbnRlbnRzUmVnaW9uLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
bV93ZWJQYWdlLT5jbGllbnQoKS0+d2luZG93KCktPmNvcHlGcm9tRnJvbnRUb0JhY2socHJldmlv
dXNDb250ZW50c1JlZ2lvbik7CisgICAgaWYgKFdpbmRvdyogd2luZG93ID0gbV93ZWJQYWdlLT5j
bGllbnQoKS0+d2luZG93KCkpCisgICAgICAgIHdpbmRvdy0+Y29weUZyb21Gcm9udFRvQmFjayhw
cmV2aW91c0NvbnRlbnRzUmVnaW9uKTsKICAgICB3aW5kb3dCYWNrQnVmZmVyU3RhdGUoKS0+YWRk
QmxpdHRlZFJlZ2lvbihwcmV2aW91c0NvbnRlbnRzUmVnaW9uKTsKIH0KIApAQCAtMTE5MSw3ICsx
MjAyLDcgQEAgdm9pZCBCYWNraW5nU3RvcmVQcml2YXRlOjpwYWludERlZmF1bHRCYWNrZ3JvdW5k
KGNvbnN0IFBsYXRmb3JtOjpJbnRSZWN0JiBjb250ZW4KICAgICAgICAgICAgIC8vIEJlY2F1c2Ug
b2Ygcm91bmRpbmcgaXQgaXMgcG9zc2libGUgdGhhdCBvdmVyU2Nyb2xsUmVjdCBjb3VsZCBiZSBv
ZmYtYnktb25lIGxhcmdlcgogICAgICAgICAgICAgLy8gdGhhbiB0aGUgc3VyZmFjZSBzaXplIG9m
IHRoZSB3aW5kb3cuIFdlIHByZXZlbnQgdGhpcyBoZXJlLCBieSBjbGFtcGluZwogICAgICAgICAg
ICAgLy8gaXQgdG8gZW5zdXJlIHRoYXQgY2FuJ3QgaGFwcGVuLgotICAgICAgICAgICAgb3ZlclNj
cm9sbFJlY3QuaW50ZXJzZWN0KFBsYXRmb3JtOjpJbnRSZWN0KFBsYXRmb3JtOjpJbnRQb2ludCgw
LCAwKSwgbV93ZWJQYWdlLT5jbGllbnQoKS0+d2luZG93KCktPnN1cmZhY2VTaXplKCkpKTsKKyAg
ICAgICAgICAgIG92ZXJTY3JvbGxSZWN0LmludGVyc2VjdChQbGF0Zm9ybTo6SW50UmVjdChQbGF0
Zm9ybTo6SW50UG9pbnQoMCwgMCksIHN1cmZhY2VTaXplKCkpKTsKICAgICAgICAgfQogCiAgICAg
ICAgIGNsZWFyV2luZG93KG92ZXJTY3JvbGxSZWN0LCBjb2xvci5yZWQoKSwgY29sb3IuZ3JlZW4o
KSwgY29sb3IuYmx1ZSgpLCBjb2xvci5hbHBoYSgpKTsKQEAgLTEyNTksNyArMTI3MCw3IEBAIHZv
aWQgQmFja2luZ1N0b3JlUHJpdmF0ZTo6YmxpdENvbnRlbnRzKGNvbnN0IFBsYXRmb3JtOjpJbnRS
ZWN0JiBkc3RSZWN0LAogICAgIGlmICghY29udGVudHMuaXNFbXB0eSgpKQogICAgICAgICB0cmFu
c2Zvcm1hdGlvbiA9IFRyYW5zZm9ybWF0aW9uTWF0cml4OjpyZWN0VG9SZWN0KEZsb2F0UmVjdChG
bG9hdFBvaW50KDAuMCwgMC4wKSwgV2ViQ29yZTo6SW50U2l6ZShjb250ZW50cy5zaXplKCkpKSwg
V2ViQ29yZTo6SW50UmVjdChkc3RSZWN0KSk7CiAKLSAgICBib29sIGJsaXR0aW5nRGlyZWN0bHlU
b0NvbXBvc2l0aW5nV2luZG93ID0gbV93ZWJQYWdlLT5kLT5tX2NsaWVudC0+d2luZG93KCktPndp
bmRvd1VzYWdlKCkgPT0gQmxhY2tCZXJyeTo6UGxhdGZvcm06OkdyYXBoaWNzOjpXaW5kb3c6OkdM
RVMyVXNhZ2U7CisgICAgYm9vbCBibGl0dGluZ0RpcmVjdGx5VG9Db21wb3NpdGluZ1dpbmRvdyA9
IGlzT3BlbkdMQ29tcG9zaXRpbmcoKTsKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcp
CiAgICAgQmFja2luZ1N0b3JlQ29tcG9zaXRpbmdTdXJmYWNlKiBjb21wb3NpdGluZ1N1cmZhY2Ug
PQogICAgICAgICBTdXJmYWNlUG9vbDo6Z2xvYmFsU3VyZmFjZVBvb2woKS0+Y29tcG9zaXRpbmdT
dXJmYWNlKCk7CkBAIC0xMzYzLDcgKzEzNzQsNyBAQCB2b2lkIEJhY2tpbmdTdG9yZVByaXZhdGU6
OmJsaXRDb250ZW50cyhjb25zdCBQbGF0Zm9ybTo6SW50UmVjdCYgZHN0UmVjdCwKICAgICAgICAg
ICAgICAgICAvLyBCZWNhdXNlIG9mIHJvdW5kaW5nIGl0IGlzIHBvc3NpYmxlIHRoYXQgZGlydHlS
ZWN0IGNvdWxkIGJlIG9mZi1ieS1vbmUgbGFyZ2VyCiAgICAgICAgICAgICAgICAgLy8gdGhhbiB0
aGUgc3VyZmFjZSBzaXplIG9mIHRoZSBkc3QgYnVmZmVyLiBXZSBwcmV2ZW50IHRoaXMgaGVyZSwg
YnkgY2xhbXBpbmcKICAgICAgICAgICAgICAgICAvLyBpdCB0byBlbnN1cmUgdGhhdCBjYW4ndCBo
YXBwZW4uCi0gICAgICAgICAgICAgICAgZGlydHlSZWN0VC5pbnRlcnNlY3QoUGxhdGZvcm06Oklu
dFJlY3QoUGxhdGZvcm06OkludFBvaW50KDAsIDApLCBtX3dlYlBhZ2UtPmNsaWVudCgpLT53aW5k
b3coKS0+c3VyZmFjZVNpemUoKSkpOworICAgICAgICAgICAgICAgIGRpcnR5UmVjdFQuaW50ZXJz
ZWN0KFBsYXRmb3JtOjpJbnRSZWN0KFBsYXRmb3JtOjpJbnRQb2ludCgwLCAwKSwgc3VyZmFjZVNp
emUoKSkpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgY29uc3QgUGxhdGZvcm06OkludFBv
aW50IGNvbnRlbnRzT3JpZ2luKGRpcnR5UmVjdC54KCkgKyBvcmlnaW4ueCgpLCBkaXJ0eVJlY3Qu
eSgpICsgb3JpZ2luLnkoKSk7CiAjaWYgREVCVUdfQ0hFQ0tFUkJPQVJECkBAIC0xNDA0LDcgKzE0
MTUsNyBAQCB2b2lkIEJhY2tpbmdTdG9yZVByaXZhdGU6OmJsaXRDb250ZW50cyhjb25zdCBQbGF0
Zm9ybTo6SW50UmVjdCYgZHN0UmVjdCwKICAgICAgICAgICAgICAgICAgICAgLy8gQmVjYXVzZSBv
ZiByb3VuZGluZyBpdCBpcyBwb3NzaWJsZSB0aGF0IGRpcnR5UmVjdCBjb3VsZCBiZSBvZmYtYnkt
b25lIGxhcmdlcgogICAgICAgICAgICAgICAgICAgICAvLyB0aGFuIHRoZSBzdXJmYWNlIHNpemUg
b2YgdGhlIGRzdCBidWZmZXIuIFdlIHByZXZlbnQgdGhpcyBoZXJlLCBieSBjbGFtcGluZwogICAg
ICAgICAgICAgICAgICAgICAvLyBpdCB0byBlbnN1cmUgdGhhdCBjYW4ndCBoYXBwZW4uCi0gICAg
ICAgICAgICAgICAgICAgIGRpcnR5UmVjdFQuaW50ZXJzZWN0KFBsYXRmb3JtOjpJbnRSZWN0KFBs
YXRmb3JtOjpJbnRQb2ludCgwLCAwKSwgbV93ZWJQYWdlLT5jbGllbnQoKS0+d2luZG93KCktPnN1
cmZhY2VTaXplKCkpKTsKKyAgICAgICAgICAgICAgICAgICAgZGlydHlSZWN0VC5pbnRlcnNlY3Qo
UGxhdGZvcm06OkludFJlY3QoUGxhdGZvcm06OkludFBvaW50KDAsIDApLCBzdXJmYWNlU2l6ZSgp
KSk7CiAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgYmxpdFRvV2luZG93KGRp
cnR5UmVjdFQsCkBAIC0xNDUwLDggKzE0NjEsNyBAQCB2b2lkIEJhY2tpbmdTdG9yZVByaXZhdGU6
OmJsaXRDb250ZW50cyhjb25zdCBQbGF0Zm9ybTo6SW50UmVjdCYgZHN0UmVjdCwKIAogI2lmIERF
QlVHX1ZJU1VBTElaRQogICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBub3QgZXhwbGljaXRlbHkg
ZGVwZW5kIG9uIFdlYkNvcmU6Oi4KLSAgICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6R3JhcGhpY3M6
OkJ1ZmZlciogd2luZG93QnVmZmVyID0KLSAgICAgICAgbV93ZWJQYWdlLT5jbGllbnQoKS0+d2lu
ZG93KCktPmJ1ZmZlcigpOworICAgIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpHcmFwaGljczo6QnVm
ZmVyKiB3aW5kb3dCdWZmZXIgPSBidWZmZXIoKTsKICAgICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6
R3JhcGhpY3M6OkRyYXdhYmxlKiBidWZmZXJEcmF3YWJsZSA9CiAgICAgICAgIEJsYWNrQmVycnk6
OlBsYXRmb3JtOjpHcmFwaGljczo6bG9ja0J1ZmZlckRyYXdhYmxlKHdpbmRvd0J1ZmZlcik7CiAg
ICAgUGxhdGZvcm1HcmFwaGljc0NvbnRleHQqIGJ1ZmZlclBsYXRmb3JtR3JhcGhpY3NDb250ZXh0
ID0KQEAgLTE1NDIsNyArMTU1Miw3IEBAIFBsYXRmb3JtOjpJbnRSZWN0IEJhY2tpbmdTdG9yZVBy
aXZhdGU6OmJsaXRUaWxlUmVjdChUaWxlQnVmZmVyKiB0aWxlQnVmZmVyLAogICAgICAgICAvLyBC
ZWNhdXNlIG9mIHJvdW5kaW5nIGl0IGlzIHBvc3NpYmxlIHRoYXQgZGlydHlSZWN0IGNvdWxkIGJl
IG9mZi1ieS1vbmUgbGFyZ2VyCiAgICAgICAgIC8vIHRoYW4gdGhlIHN1cmZhY2Ugc2l6ZSBvZiB0
aGUgZHN0IGJ1ZmZlci4gV2UgcHJldmVudCB0aGlzIGhlcmUsIGJ5IGNsYW1waW5nCiAgICAgICAg
IC8vIGl0IHRvIGVuc3VyZSB0aGF0IGNhbid0IGhhcHBlbi4KLSAgICAgICAgZGlydHlSZWN0Lmlu
dGVyc2VjdChQbGF0Zm9ybTo6SW50UmVjdChQbGF0Zm9ybTo6SW50UG9pbnQoMCwgMCksIG1fd2Vi
UGFnZS0+Y2xpZW50KCktPndpbmRvdygpLT5zdXJmYWNlU2l6ZSgpKSk7CisgICAgICAgIGRpcnR5
UmVjdC5pbnRlcnNlY3QoUGxhdGZvcm06OkludFJlY3QoUGxhdGZvcm06OkludFBvaW50KDAsIDAp
LCBzdXJmYWNlU2l6ZSgpKSk7CiAgICAgfQogCiAgICAgQVNTRVJUKCFkaXJ0eVJlY3QuaXNFbXB0
eSgpKTsKQEAgLTE1NzgsNyArMTU4OCw3IEBAIHZvaWQgQmFja2luZ1N0b3JlUHJpdmF0ZTo6Ymxl
bmRDb21wb3NpdGluZ1N1cmZhY2UoY29uc3QgUGxhdGZvcm06OkludFJlY3QmIGRzdFJlCiAKICAg
ICAgICAgaG9sZVB1bmNoUmVjdC5pbnRlcnNlY3QoZHN0UmVjdCk7CiAgICAgICAgIGhvbGVQdW5j
aFJlY3QuaW50ZXJzZWN0KFBsYXRmb3JtOjpJbnRSZWN0KAotICAgICAgICAgICAgUGxhdGZvcm06
OkludFBvaW50KDAsIDApLCBtX3dlYlBhZ2UtPmNsaWVudCgpLT53aW5kb3coKS0+c3VyZmFjZVNp
emUoKSkpOworICAgICAgICAgICAgUGxhdGZvcm06OkludFBvaW50KDAsIDApLCBzdXJmYWNlU2l6
ZSgpKSk7CiAKICAgICAgICAgaWYgKCFob2xlUHVuY2hSZWN0LmlzRW1wdHkoKSkKICAgICAgICAg
ICAgIGNsZWFyV2luZG93KGhvbGVQdW5jaFJlY3QsIDAsIDAsIDAsIDApOwpAQCAtMTU5MCw3ICsx
NjAwLDcgQEAgdm9pZCBCYWNraW5nU3RvcmVQcml2YXRlOjpibGVuZENvbXBvc2l0aW5nU3VyZmFj
ZShjb25zdCBQbGF0Zm9ybTo6SW50UmVjdCYgZHN0UmUKICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IHJlY3RzLnNpemUoKTsgKytpKSB7CiAgICAgICAgIHJlY3RzW2ldLmludGVyc2VjdChkc3RS
ZWN0KTsKICNpZiBERUJVR19DT01QT1NJVElOR19ESVJUWV9SRUdJT04KLSAgICAgICAgY2xlYXJC
dWZmZXIobV93ZWJQYWdlLT5jbGllbnQoKS0+d2luZG93KCktPmJ1ZmZlcigpLCByZWN0c1tpXSwg
MjU1LCAwLCAwLCAxMjgpOworICAgICAgICBjbGVhckJ1ZmZlcihidWZmZXIoKSwgcmVjdHNbaV0s
IDI1NSwgMCwgMCwgMTI4KTsKICNlbmRpZgogICAgICAgICBibGl0VG9XaW5kb3cocmVjdHNbaV0s
IGZyb250QnVmZmVyLT5uYXRpdmVCdWZmZXIoKSwgcmVjdHNbaV0sIHRydWUgLypibGVuZCovLCAy
NTUpOwogICAgIH0KQEAgLTIxMzcsNyArMjE0Nyw3IEBAIHZvaWQgQmFja2luZ1N0b3JlUHJpdmF0
ZTo6cmVuZGVyQ29udGVudHMoQmxhY2tCZXJyeTo6UGxhdGZvcm06OkdyYXBoaWNzOjpCdWZmZXIq
CiAKICAgICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6R3JhcGhpY3M6OkJ1ZmZlciogdGFyZ2V0QnVm
ZmVyID0gdGlsZUJ1ZmZlcgogICAgICAgICA/IHRpbGVCdWZmZXIKLSAgICAgICAgOiBtX3dlYlBh
Z2UtPmNsaWVudCgpLT53aW5kb3coKS0+YnVmZmVyKCk7CisgICAgICAgIDogYnVmZmVyKCk7CiAK
ICAgICBpZiAoY29udGVudHNTaXplLmlzRW1wdHkoKQogICAgICAgICB8fCAhUGxhdGZvcm06Oklu
dFJlY3QoUGxhdGZvcm06OkludFBvaW50KDAsIDApLCBtX2NsaWVudC0+dHJhbnNmb3JtZWRDb250
ZW50c1NpemUoKSkuY29udGFpbnMoY29udGVudHNSZWN0KQpAQCAtMjI3NSw3ICsyMjg1LDcgQEAg
dm9pZCBCYWNraW5nU3RvcmVQcml2YXRlOjpibGl0VG9XaW5kb3coY29uc3QgUGxhdGZvcm06Oklu
dFJlY3QmIGRzdFJlY3QsCiAgICAgd2luZG93RnJvbnRCdWZmZXJTdGF0ZSgpLT5jbGVhckJsaXR0
ZWRSZWdpb24oZHN0UmVjdCk7CiAgICAgd2luZG93QmFja0J1ZmZlclN0YXRlKCktPmFkZEJsaXR0
ZWRSZWdpb24oZHN0UmVjdCk7CiAKLSAgICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6R3JhcGhpY3M6
OkJ1ZmZlciogZHN0QnVmZmVyID0gbV93ZWJQYWdlLT5jbGllbnQoKS0+d2luZG93KCktPmJ1ZmZl
cigpOworICAgIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpHcmFwaGljczo6QnVmZmVyKiBkc3RCdWZm
ZXIgPSBidWZmZXIoKTsKICAgICBBU1NFUlQoZHN0QnVmZmVyKTsKICAgICBBU1NFUlQoc3JjQnVm
ZmVyKTsKICAgICBpZiAoIWRzdEJ1ZmZlcikKQEAgLTIzMDQsNyArMjMxNCw3IEBAIHZvaWQgQmFj
a2luZ1N0b3JlUHJpdmF0ZTo6Y2hlY2tlcldpbmRvdyhjb25zdCBQbGF0Zm9ybTo6SW50UmVjdCYg
ZHN0UmVjdCwKICAgICB3aW5kb3dGcm9udEJ1ZmZlclN0YXRlKCktPmNsZWFyQmxpdHRlZFJlZ2lv
bihkc3RSZWN0KTsKICAgICB3aW5kb3dCYWNrQnVmZmVyU3RhdGUoKS0+YWRkQmxpdHRlZFJlZ2lv
bihkc3RSZWN0KTsKIAotICAgIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpHcmFwaGljczo6QnVmZmVy
KiBkc3RCdWZmZXIgPSBtX3dlYlBhZ2UtPmNsaWVudCgpLT53aW5kb3coKS0+YnVmZmVyKCk7Cisg
ICAgQmxhY2tCZXJyeTo6UGxhdGZvcm06OkdyYXBoaWNzOjpCdWZmZXIqIGRzdEJ1ZmZlciA9IGJ1
ZmZlcigpOwogICAgIEFTU0VSVChkc3RCdWZmZXIpOwogICAgIGlmICghZHN0QnVmZmVyKQogICAg
ICAgICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6bG9nKEJsYWNrQmVycnk6OlBsYXRmb3JtOjpMb2dM
ZXZlbFdhcm4sICJFbXB0eSB3aW5kb3cgYnVmZmVyLCBjb3VsZG4ndCBjaGVja2VyV2luZG93Iik7
CkBAIC0yMzYzLDcgKzIzNzMsOCBAQCB2b2lkIEJhY2tpbmdTdG9yZVByaXZhdGU6OmludmFsaWRh
dGVXaW5kb3coY29uc3QgUGxhdGZvcm06OkludFJlY3QmIGRzdCkKICNlbmRpZgogCiAgICAgbV9j
dXJyZW50V2luZG93QmFja0J1ZmZlciA9IChtX2N1cnJlbnRXaW5kb3dCYWNrQnVmZmVyICsgMSkg
JSAyOwotICAgIG1fd2ViUGFnZS0+Y2xpZW50KCktPndpbmRvdygpLT5wb3N0KGRzdFJlY3QpOwor
ICAgIGlmIChXaW5kb3cqIHdpbmRvdyA9IG1fd2ViUGFnZS0+Y2xpZW50KCktPndpbmRvdygpKQor
ICAgICAgICB3aW5kb3ctPnBvc3QoZHN0UmVjdCk7CiB9CiAKIHZvaWQgQmFja2luZ1N0b3JlUHJp
dmF0ZTo6Y2xlYXJXaW5kb3coKQpAQCAtMjM3NiwxNCArMjM4NywxNCBAQCB2b2lkIEJhY2tpbmdT
dG9yZVByaXZhdGU6OmNsZWFyV2luZG93KCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAg
IEJsYWNrQmVycnk6OlBsYXRmb3JtOjpHcmFwaGljczo6QnVmZmVyKiBkc3RCdWZmZXIgPSBtX3dl
YlBhZ2UtPmNsaWVudCgpLT53aW5kb3coKS0+YnVmZmVyKCk7CisgICAgQmxhY2tCZXJyeTo6UGxh
dGZvcm06OkdyYXBoaWNzOjpCdWZmZXIqIGRzdEJ1ZmZlciA9IGJ1ZmZlcigpOwogICAgIEFTU0VS
VChkc3RCdWZmZXIpOwogICAgIGlmICghZHN0QnVmZmVyKQogICAgICAgICBCbGFja0JlcnJ5OjpQ
bGF0Zm9ybTo6bG9nKEJsYWNrQmVycnk6OlBsYXRmb3JtOjpMb2dMZXZlbFdhcm4sICJFbXB0eSB3
aW5kb3cgYnVmZmVyLCBjb3VsZG4ndCBjbGVhcldpbmRvdyIpOwogCiAgICAgd2luZG93RnJvbnRC
dWZmZXJTdGF0ZSgpLT5jbGVhckJsaXR0ZWRSZWdpb24oKTsKICAgICB3aW5kb3dCYWNrQnVmZmVy
U3RhdGUoKS0+YWRkQmxpdHRlZFJlZ2lvbihQbGF0Zm9ybTo6SW50UmVjdCgKLSAgICAgICAgUGxh
dGZvcm06OkludFBvaW50KDAsIDApLCBtX3dlYlBhZ2UtPmNsaWVudCgpLT53aW5kb3coKS0+c3Vy
ZmFjZVNpemUoKSkpOworICAgICAgICBQbGF0Zm9ybTo6SW50UG9pbnQoMCwgMCksIHN1cmZhY2VT
aXplKCkpKTsKIAogICAgIENvbG9yIGNvbG9yKG1fd2ViUGFnZS0+c2V0dGluZ3MoKS0+YmFja2dy
b3VuZENvbG9yKCkpOwogICAgIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpHcmFwaGljczo6Y2xlYXJC
dWZmZXIoZHN0QnVmZmVyLApAQCAtMjQxNCw3ICsyNDI1LDcgQEAgdm9pZCBCYWNraW5nU3RvcmVQ
cml2YXRlOjpjbGVhcldpbmRvdyhjb25zdCBQbGF0Zm9ybTo6SW50UmVjdCYgcmVjdCwKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpHcmFwaGljczo6
QnVmZmVyKiBkc3RCdWZmZXIgPSBtX3dlYlBhZ2UtPmNsaWVudCgpLT53aW5kb3coKS0+YnVmZmVy
KCk7CisgICAgQmxhY2tCZXJyeTo6UGxhdGZvcm06OkdyYXBoaWNzOjpCdWZmZXIqIGRzdEJ1ZmZl
ciA9IGJ1ZmZlcigpOwogICAgIEFTU0VSVChkc3RCdWZmZXIpOwogICAgIGlmICghZHN0QnVmZmVy
KQogICAgICAgICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6bG9nKEJsYWNrQmVycnk6OlBsYXRmb3Jt
OjpMb2dMZXZlbFdhcm4sICJFbXB0eSB3aW5kb3cgYnVmZmVyLCBjb3VsZG4ndCBjbGVhcldpbmRv
dyIpOwpAQCAtMjUwNCw5ICsyNTE1LDcgQEAgYm9vbCBCYWNraW5nU3RvcmVQcml2YXRlOjpkcmF3
U3ViTGF5ZXJzKCkKICAgICBpZiAoIUJsYWNrQmVycnk6OlBsYXRmb3JtOjp1c2VySW50ZXJmYWNl
VGhyZWFkTWVzc2FnZUNsaWVudCgpLT5pc0N1cnJlbnRUaHJlYWQoKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCi0gICAgYm9vbCBibGl0dGluZ0RpcmVjdGx5VG9Db21wb3NpdGluZ1dpbmRvdyA9
IG1fd2ViUGFnZS0+ZC0+bV9jbGllbnQtPndpbmRvdygpLT53aW5kb3dVc2FnZSgpID09IEJsYWNr
QmVycnk6OlBsYXRmb3JtOjpHcmFwaGljczo6V2luZG93OjpHTEVTMlVzYWdlOwotCi0gICAgaWYg
KG1fc3VzcGVuZEJhY2tpbmdTdG9yZVVwZGF0ZXMgJiYgIWJsaXR0aW5nRGlyZWN0bHlUb0NvbXBv
c2l0aW5nV2luZG93KQorICAgIGlmIChtX3N1c3BlbmRCYWNraW5nU3RvcmVVcGRhdGVzICYmICFp
c09wZW5HTENvbXBvc2l0aW5nKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIFBsYXRm
b3JtOjpJbnRSZWN0IGRzdCA9IG1fd2ViUGFnZS0+Y2xpZW50KCktPnVzZXJJbnRlcmZhY2VCbGl0
dGVkRGVzdGluYXRpb25SZWN0KCk7CkBAIC0yNjcxLDUgKzI2ODAsMjEgQEAgdm9pZCBCYWNraW5n
U3RvcmU6OmJsaXRPbklkbGUoKQogICAgIGQtPmJsaXRWaXNpYmxlQ29udGVudHModHJ1ZSAvKmZv
cmNlKi8pOwogfQogCitQbGF0Zm9ybTo6SW50U2l6ZSBCYWNraW5nU3RvcmVQcml2YXRlOjpzdXJm
YWNlU2l6ZSgpIGNvbnN0Cit7CisgICAgaWYgKFdpbmRvdyogd2luZG93ID0gbV93ZWJQYWdlLT5j
bGllbnQoKS0+d2luZG93KCkpCisgICAgICAgIHJldHVybiB3aW5kb3ctPnN1cmZhY2VTaXplKCk7
CisKKyAgICByZXR1cm4gUGxhdGZvcm06OkludFNpemUoKTsKK30KKworUGxhdGZvcm06OkdyYXBo
aWNzOjpCdWZmZXIqIEJhY2tpbmdTdG9yZVByaXZhdGU6OmJ1ZmZlcigpIGNvbnN0Cit7CisgICAg
aWYgKFdpbmRvdyogd2luZG93ID0gbV93ZWJQYWdlLT5jbGllbnQoKS0+d2luZG93KCkpCisgICAg
ICAgIHJldHVybiB3aW5kb3ctPmJ1ZmZlcigpOworCisgICAgcmV0dXJuIDA7Cit9CisKIH0KIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvQmFja2luZ1N0b3JlX3Au
aCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvQmFja2luZ1N0b3JlX3AuaAppbmRleCA3
OTViNzcxMWIxNWZlNjA0MjZlZmY5OTJkZjJhYmI2MjkwZTVhODMxLi4yNjk1MzYxM2Q1YzIwZmJj
NjQyM2M0YjFjYjNlODk5YjQyYjQyNzEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNr
YmVycnkvQXBpL0JhY2tpbmdTdG9yZV9wLmgKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5
L0FwaS9CYWNraW5nU3RvcmVfcC5oCkBAIC0xMDYsNiArMTA2LDExIEBAIHB1YmxpYzoKICAgICAv
LyB0aGUgbWluaW11bSBudW1iZXIgb2YgdGlsZXMgcmVxdWlyZWQgdG8gc2Nyb2xsLgogICAgIGJv
b2wgc2hvdWxkRGlyZWN0UmVuZGVyaW5nVG9XaW5kb3coKSBjb25zdDsKIAorICAgIC8vIFJldHVy
bnMgd2hldGhlciB3ZSdyZSB1c2luZyB0aGUgT3BlbkdMIGNvZGUgcGF0aCBmb3IgY29tcG9zaXRp
bmcgdGhlCisgICAgLy8gYmFja2luZyBzdG9yZSB0aWxlcy4gVGhpcyBjYW4gYmUgZHVlIHRvIHRo
ZSBtYWluIHdpbmRvdyB1c2luZworICAgIC8vIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpHcmFwaGlj
czo6V2luZG93OjpHTEVTMlVzYWdlLgorICAgIGJvb2wgaXNPcGVuR0xDb21wb3NpdGluZygpIGNv
bnN0OworCiAgICAgYm9vbCBpc1N1c3BlbmRlZCgpIGNvbnN0IHsgcmV0dXJuIG1fc3VzcGVuZEJh
Y2tpbmdTdG9yZVVwZGF0ZXM7IH0KIAogICAgIC8vIFN1c3BlbmRzIGFsbCBzY3JlZW4gdXBkYXRl
cyBzbyB0aGF0ICdibGl0Q29udGVudHMnIGlzIGRpc2FibGVkLgpAQCAtMzE5LDYgKzMyNCwxMCBA
QCBwdWJsaWM6CiAgICAgc3RhdGljIFdlYlBhZ2UqIGN1cnJlbnRCYWNraW5nU3RvcmVPd25lcigp
IHsgcmV0dXJuIEJhY2tpbmdTdG9yZVByaXZhdGU6OnNfY3VycmVudEJhY2tpbmdTdG9yZU93bmVy
OyB9CiAgICAgYm9vbCBpc0FjdGl2ZSgpIGNvbnN0OwogCisgICAgLy8gU3VyZmFjZSBhYnN0cmFj
dGlvbiwgbWF5YmUgQmxhY2tCZXJyeTo6UGxhdGZvcm06OkdyYXBoaWNzOjpCdWZmZXIgY291bGQg
YmUgbWFkZSBwdWJsaWMgaW5zdGVhZC4KKyAgICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6SW50U2l6
ZSBzdXJmYWNlU2l6ZSgpIGNvbnN0OworICAgIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpHcmFwaGlj
czo6QnVmZmVyKiBidWZmZXIoKSBjb25zdDsKKwogICAgIHN0YXRpYyBXZWJQYWdlKiBzX2N1cnJl
bnRCYWNraW5nU3RvcmVPd25lcjsKIAogICAgIGJvb2wgbV9zdXNwZW5kU2NyZWVuVXBkYXRlczsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZS5jcHAgYi9T
b3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2UuY3BwCmluZGV4IGQ0MzRlODM2M2Ex
MWE3NDVlMzExOWI5NjA2ZTMwNjExZjM0ZTM2NzcuLmI3MjM1YzIxY2U3ODA0MTMyZGI4Y2I4Mzdi
YWJhOTM1NTE5MDNmOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkv
V2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlLmNw
cApAQCAtMTkzMCw2ICsxOTMwLDEwIEBAIHZvaWQgV2ViUGFnZVByaXZhdGU6OmRpZFBsdWdpbkVu
dGVyRnVsbFNjcmVlbihQbHVnaW5WaWV3KiBwbHVnaW4sIGNvbnN0IGNoYXIqIHdpCiB7CiAgICAg
bV9mdWxsU2NyZWVuUGx1Z2luVmlldyA9IHBsdWdpbjsKICAgICBtX2NsaWVudC0+ZGlkUGx1Z2lu
RW50ZXJGdWxsU2NyZWVuKCk7CisKKyAgICBpZiAoIW1fY2xpZW50LT53aW5kb3coKSkKKyAgICAg
ICAgcmV0dXJuOworCiAgICAgUGxhdGZvcm06OkdyYXBoaWNzOjpXaW5kb3c6OnNldFRyYW5zcGFy
ZW5jeURpc2NhcmRGaWx0ZXIod2luZG93VW5pcXVlUHJlZml4KTsKICAgICBtX2NsaWVudC0+d2lu
ZG93KCktPnNldFNlbnNpdGl2aXR5RnVsbHNjcmVlbk92ZXJyaWRlKHRydWUpOwogfQpAQCAtMTkz
OCw2ICsxOTQyLDEwIEBAIHZvaWQgV2ViUGFnZVByaXZhdGU6OmRpZFBsdWdpbkV4aXRGdWxsU2Ny
ZWVuKFBsdWdpblZpZXcqIHBsdWdpbiwgY29uc3QgY2hhciogd2luCiB7CiAgICAgbV9mdWxsU2Ny
ZWVuUGx1Z2luVmlldyA9IDA7CiAgICAgbV9jbGllbnQtPmRpZFBsdWdpbkV4aXRGdWxsU2NyZWVu
KCk7CisKKyAgICBpZiAoIW1fY2xpZW50LT53aW5kb3coKSkKKyAgICAgICAgcmV0dXJuOworCiAg
ICAgUGxhdGZvcm06OkdyYXBoaWNzOjpXaW5kb3c6OnNldFRyYW5zcGFyZW5jeURpc2NhcmRGaWx0
ZXIoMCk7CiAgICAgbV9jbGllbnQtPndpbmRvdygpLT5zZXRTZW5zaXRpdml0eUZ1bGxzY3JlZW5P
dmVycmlkZShmYWxzZSk7CiB9CkBAIC01MDgzLDcgKzUwOTEsNyBAQCB2b2lkIFdlYlBhZ2VQcml2
YXRlOjpkcmF3TGF5ZXJzT25Db21taXQoKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
aWYgKG1fY2xpZW50LT53aW5kb3coKS0+d2luZG93VXNhZ2UoKSA9PSBQbGF0Zm9ybTo6R3JhcGhp
Y3M6OldpbmRvdzo6R0xFUzJVc2FnZSkgeworICAgIGlmIChtX2JhY2tpbmdTdG9yZS0+ZC0+aXNP
cGVuR0xDb21wb3NpdGluZygpKSB7CiAgICAgICAgIG1fYmFja2luZ1N0b3JlLT5kLT5ibGl0Vmlz
aWJsZUNvbnRlbnRzKCk7CiAgICAgICAgIHJldHVybjsgLy8gYmxpdFZpc2libGVDb250ZW50cygp
IGluY2x1ZGVzIGRyYXdTdWJMYXllcnMoKSBpbiB0aGlzIGNhc2UuCiAgICAgfQpAQCAtNTExNCw4
ICs1MTIyLDcgQEAgYm9vbCBXZWJQYWdlUHJpdmF0ZTo6ZHJhd1N1YkxheWVycyhjb25zdCBJbnRS
ZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIGNvbnQKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCiAgICAgaWYgKG1fY29tcG9zaXRvcikgewotICAgICAgICBtX2NvbXBvc2l0b3ItPnNldENv
bXBvc2l0aW5nT250b01haW5XaW5kb3coCi0gICAgICAgICAgICBtX2NsaWVudC0+d2luZG93KCkt
PndpbmRvd1VzYWdlKCkgPT0gUGxhdGZvcm06OkdyYXBoaWNzOjpXaW5kb3c6OkdMRVMyVXNhZ2Up
OworICAgICAgICBtX2NvbXBvc2l0b3ItPnNldEJhY2tpbmdTdG9yZVVzZXNPcGVuR0wobV9iYWNr
aW5nU3RvcmUtPmQtPmlzT3BlbkdMQ29tcG9zaXRpbmcoKSk7CiAgICAgICAgIHJldHVybiBtX2Nv
bXBvc2l0b3ItPmRyYXdMYXllcnMoZHN0UmVjdCwgY29udGVudHMpOwogICAgIH0KIApAQCAtNTI0
Myw3ICs1MjUwLDcgQEAgdm9pZCBXZWJQYWdlUHJpdmF0ZTo6cm9vdExheWVyQ29tbWl0VGltZXJG
aXJlZChUaW1lcjxXZWJQYWdlUHJpdmF0ZT4qKQogICAgIHJlcXVlc3RMYXlvdXRJZk5lZWRlZCgp
OwogCiAgICAgYm9vbCBpc1NpbmdsZVRhcmdldFdpbmRvdyA9IFN1cmZhY2VQb29sOjpnbG9iYWxT
dXJmYWNlUG9vbCgpLT5jb21wb3NpdGluZ1N1cmZhY2UoKQotICAgICAgICB8fCBtX2NsaWVudC0+
d2luZG93KCktPndpbmRvd1VzYWdlKCkgPT0gUGxhdGZvcm06OkdyYXBoaWNzOjpXaW5kb3c6OkdM
RVMyVXNhZ2U7CisgICAgICAgIHx8IG1fYmFja2luZ1N0b3JlLT5kLT5pc09wZW5HTENvbXBvc2l0
aW5nKCk7CiAKICAgICAvLyBJZiB3ZSBhcmUgZG9pbmcgZGlyZWN0IHJlbmRlcmluZyBhbmQgaGF2
ZSBhIHNpbmdsZSByZW5kZXJpbmcgdGFyZ2V0LAogICAgIC8vIGNvbW1pdHRpbmcgaXMgZXF1aXZh
bGVudCB0byBhIG9uZSBzaG90IGRyYXdpbmcgc3luY2hyb25pemF0aW9uLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEJsYWNr
QmVycnkuY3BwIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0Nocm9t
ZUNsaWVudEJsYWNrQmVycnkuY3BwCmluZGV4IDViOTc0ZDBlODE1OTAxNjBkNWRhMzE0NDFlMjNm
ODMyMGFlYjAzM2EuLmNmNzg3Mjk1OTljNWY0MjhhODA0NWRjYjFhZDM1MjhmODZjODczMTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9DaHJvbWVD
bGllbnRCbGFja0JlcnJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29y
ZVN1cHBvcnQvQ2hyb21lQ2xpZW50QmxhY2tCZXJyeS5jcHAKQEAgLTY5LDYgKzY5LDggQEAKIAog
dXNpbmcgbmFtZXNwYWNlIEJsYWNrQmVycnk6OldlYktpdDsKIAordXNpbmcgQmxhY2tCZXJyeTo6
UGxhdGZvcm06OkdyYXBoaWNzOjpXaW5kb3c7CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3Rh
dGljIENTdHJpbmcgZnJhbWVPcmlnaW4oRnJhbWUqIGZyYW1lKQpAQCAtMTUxLDcgKzE1MywxMSBA
QCB2b2lkIENocm9tZUNsaWVudEJsYWNrQmVycnk6OnNldFdpbmRvd1JlY3QoY29uc3QgRmxvYXRS
ZWN0JikKIAogRmxvYXRSZWN0IENocm9tZUNsaWVudEJsYWNrQmVycnk6OndpbmRvd1JlY3QoKQog
ewotICAgIGNvbnN0IEludFNpemUgd2luZG93U2l6ZSA9IG1fd2ViUGFnZVByaXZhdGUtPm1fY2xp
ZW50LT53aW5kb3coKS0+d2luZG93U2l6ZSgpOworICAgIEludFNpemUgd2luZG93U2l6ZTsKKwor
ICAgIGlmIChXaW5kb3cqIHdpbmRvdyA9IG1fd2ViUGFnZVByaXZhdGUtPm1fY2xpZW50LT53aW5k
b3coKSkKKyAgICAgICAgd2luZG93U2l6ZSA9IHdpbmRvdy0+d2luZG93U2l6ZSgpOworCiAgICAg
cmV0dXJuIEZsb2F0UmVjdCgwLCAwLCB3aW5kb3dTaXplLndpZHRoKCksIHdpbmRvd1NpemUuaGVp
Z2h0KCkpOwogfQogCkBAIC0zNzMsNyArMzc5LDEwIEBAIEludFJlY3QgQ2hyb21lQ2xpZW50Qmxh
Y2tCZXJyeTo6d2luZG93UmVzaXplclJlY3QoKSBjb25zdAogCiBJbnRQb2ludCBDaHJvbWVDbGll
bnRCbGFja0JlcnJ5OjpzY3JlZW5Ub1dpbmRvdyhjb25zdCBJbnRQb2ludCYgc2NyZWVuUG9zKSBj
b25zdAogewotICAgIEludFBvaW50IHdpbmRvd1BvaW50ID0gbV93ZWJQYWdlUHJpdmF0ZS0+bV9j
bGllbnQtPndpbmRvdygpLT53aW5kb3dMb2NhdGlvbigpOworICAgIEludFBvaW50IHdpbmRvd1Bv
aW50OworICAgIGlmIChXaW5kb3cqIHdpbmRvdyA9IG1fd2ViUGFnZVByaXZhdGUtPm1fY2xpZW50
LT53aW5kb3coKSkKKyAgICAgICAgd2luZG93UG9pbnQgPSB3aW5kb3ctPndpbmRvd0xvY2F0aW9u
KCk7CisKICAgICB3aW5kb3dQb2ludC5tb3ZlKC1zY3JlZW5Qb3MueCgpLCAtc2NyZWVuUG9zLnko
KSk7CiAgICAgcmV0dXJuIHdpbmRvd1BvaW50OwogfQpAQCAtMzgxLDcgKzM5MCwxMCBAQCBJbnRQ
b2ludCBDaHJvbWVDbGllbnRCbGFja0JlcnJ5OjpzY3JlZW5Ub1dpbmRvdyhjb25zdCBJbnRQb2lu
dCYgc2NyZWVuUG9zKSBjb25zdAogSW50UmVjdCBDaHJvbWVDbGllbnRCbGFja0JlcnJ5Ojp3aW5k
b3dUb1NjcmVlbihjb25zdCBJbnRSZWN0JiB3aW5kb3dSZWN0KSBjb25zdAogewogICAgIEludFJl
Y3Qgd2luZG93UG9pbnQod2luZG93UmVjdCk7Ci0gICAgSW50UG9pbnQgbG9jYXRpb24obV93ZWJQ
YWdlUHJpdmF0ZS0+bV9jbGllbnQtPndpbmRvdygpLT53aW5kb3dMb2NhdGlvbigpKTsKKyAgICBJ
bnRQb2ludCBsb2NhdGlvbjsKKyAgICBpZiAoV2luZG93KiB3aW5kb3cgPSBtX3dlYlBhZ2VQcml2
YXRlLT5tX2NsaWVudC0+d2luZG93KCkpCisgICAgICAgIGxvY2F0aW9uID0gd2luZG93LT53aW5k
b3dMb2NhdGlvbigpOworCiAgICAgd2luZG93UG9pbnQubW92ZShsb2NhdGlvbi54KCksIGxvY2F0
aW9uLnkoKSk7CiAgICAgcmV0dXJuIHdpbmRvd1BvaW50OwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvR0xFUzJDb250ZXh0LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L0dMRVMyQ29udGV4dC5jcHAKaW5kZXgg
NTViOWUxNWRkNjUwMDc3MjhjNzBjYWJjOTI4YzRlMjZkMzBlNWI4Ny4uNzhmMWEyNDk2YTYxMWJm
OGQ0MjJlMDlkZGU1NzYyNTBmMjhkMzQ5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFj
a2JlcnJ5L1dlYktpdFN1cHBvcnQvR0xFUzJDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9HTEVTMkNvbnRleHQuY3BwCkBAIC00Miw2ICs0Miw4
IEBACiAKICNpbmNsdWRlIDxHTEVTMi9nbDIuaD4KIAordXNpbmcgQmxhY2tCZXJyeTo6UGxhdGZv
cm06OkdyYXBoaWNzOjpXaW5kb3c7CisKIG5hbWVzcGFjZSBCbGFja0JlcnJ5IHsKIG5hbWVzcGFj
ZSBXZWJLaXQgewogCkBAIC03Miw4ICs3NCwxMCBAQCBQYXNzT3duUHRyPEdMRVMyQ29udGV4dD4g
R0xFUzJDb250ZXh0OjpjcmVhdGUoV2ViUGFnZVByaXZhdGUqIHBhZ2UpCiBHTEVTMkNvbnRleHQ6
OkdMRVMyQ29udGV4dChXZWJQYWdlUHJpdmF0ZSogcGFnZSkKICAgICA6IG1fd2luZG93KDApCiB7
Ci0gICAgaWYgKHBhZ2UtPm1fY2xpZW50LT53aW5kb3coKS0+d2luZG93VXNhZ2UoKSA9PSBQbGF0
Zm9ybTo6R3JhcGhpY3M6OldpbmRvdzo6R0xFUzJVc2FnZSkKLSAgICAgICAgbV93aW5kb3cgPSBw
YWdlLT5tX2NsaWVudC0+d2luZG93KCk7CisgICAgaWYgKFdpbmRvdyogd2luZG93ID0gcGFnZS0+
bV9jbGllbnQtPndpbmRvdygpKSB7CisgICAgICAgIGlmICh3aW5kb3ctPndpbmRvd1VzYWdlKCkg
PT0gV2luZG93OjpHTEVTMlVzYWdlKQorICAgICAgICAgICAgbV93aW5kb3cgPSB3aW5kb3c7Cisg
ICAgfQogfQogCiBHTEVTMkNvbnRleHQ6On5HTEVTMkNvbnRleHQoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvVG91Y2hFdmVudEhhbmRsZXIuaCBi
L1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L1RvdWNoRXZlbnRIYW5kbGVy
LmgKaW5kZXggNDczZmMzMGEyMTgwYjhlNzM1ZDljMzU3NGU1ZTJkNzljMTQ5ZTk3ZS4uM2I3YWU1
MDZlZDg3Y2I4NjE5ODI1YWNlNDk0NThkMmJlNTZlMTc5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvVG91Y2hFdmVudEhhbmRsZXIuaAorKysgYi9T
b3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9Ub3VjaEV2ZW50SGFuZGxlci5o
CkBAIC0yNCw3ICsyNCw2IEBACiAjaW5jbHVkZSAiSW50UG9pbnQuaCIKIAogI2luY2x1ZGUgPEJs
YWNrQmVycnlQbGF0Zm9ybVRvdWNoRXZlbnQuaD4KLSNpbmNsdWRlIDxCbGFja0JlcnJ5UGxhdGZv
cm1XaW5kb3cuaD4KIAogbmFtZXNwYWNlIEJsYWNrQmVycnkgewogbmFtZXNwYWNlIFdlYktpdCB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9XZWJQ
YWdlQ29tcG9zaXRvci5jcHAgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9y
dC9XZWJQYWdlQ29tcG9zaXRvci5jcHAKaW5kZXggOTFhNGViMjFkMjRmYzE0OGZjNjcxZTYyNjFk
YmFjMDQ5ZGMzYzMzYy4uYjE0N2RiNTM0MmY2NmU1MTRmY2QyMTdjNDI3NjgzNzVlOTI4YzdmMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvV2ViUGFn
ZUNvbXBvc2l0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBw
b3J0L1dlYlBhZ2VDb21wb3NpdG9yLmNwcApAQCAtNDEsNyArNDEsNyBAQCBXZWJQYWdlQ29tcG9z
aXRvcjo6V2ViUGFnZUNvbXBvc2l0b3IoV2ViUGFnZVByaXZhdGUqIHBhZ2UpCiAgICAgLCBtX2xh
eWVyUmVuZGVyZXIoTGF5ZXJSZW5kZXJlcjo6Y3JlYXRlKHBhZ2UtPm1fcGFnZSkpCiAgICAgLCBt
X2dlbmVyYXRpb24oMCkKICAgICAsIG1fY29tcG9zaXRlZEdlbmVyYXRpb24oLTEpCi0gICAgLCBt
X2NvbXBvc2l0aW5nT250b01haW5XaW5kb3coZmFsc2UpCisgICAgLCBtX2JhY2tpbmdTdG9yZVVz
ZXNPcGVuR0woZmFsc2UpCiAgICAgLCBtX2FuaW1hdGlvblRpbWVyKHRoaXMsICZXZWJQYWdlQ29t
cG9zaXRvcjo6YW5pbWF0aW9uVGltZXJGaXJlZCkKICAgICAsIG1fdGltZXJDbGllbnQobmV3IFBs
YXRmb3JtOjpHZW5lcmljVGltZXJDbGllbnQoUGxhdGZvcm06OnVzZXJJbnRlcmZhY2VUaHJlYWRU
aW1lckNsaWVudCgpKSkKIHsKQEAgLTY1LDEwICs2NSwxMCBAQCB2b2lkIFdlYlBhZ2VDb21wb3Np
dG9yOjpzZXRSb290TGF5ZXIoTGF5ZXJDb21wb3NpdGluZ1RocmVhZCogcm9vdExheWVyKQogICAg
IG1fbGF5ZXJSZW5kZXJlci0+c2V0Um9vdExheWVyKG1fcm9vdExheWVyLmdldCgpKTsKIH0KIAot
dm9pZCBXZWJQYWdlQ29tcG9zaXRvcjo6c2V0Q29tcG9zaXRpbmdPbnRvTWFpbldpbmRvdyhib29s
IGNvbXBvc2l0aW5nT250b01haW5XaW5kb3cpCit2b2lkIFdlYlBhZ2VDb21wb3NpdG9yOjpzZXRC
YWNraW5nU3RvcmVVc2VzT3BlbkdMKGJvb2wgYmFja2luZ1N0b3JlVXNlc09wZW5HTCkKIHsKLSAg
ICBtX2NvbXBvc2l0aW5nT250b01haW5XaW5kb3cgPSBjb21wb3NpdGluZ09udG9NYWluV2luZG93
OwotICAgIG1fbGF5ZXJSZW5kZXJlci0+c2V0Q2xlYXJTdXJmYWNlT25EcmF3TGF5ZXJzKCFjb21w
b3NpdGluZ09udG9NYWluV2luZG93KTsKKyAgICBtX2JhY2tpbmdTdG9yZVVzZXNPcGVuR0wgPSBi
YWNraW5nU3RvcmVVc2VzT3BlbkdMOworICAgIG1fbGF5ZXJSZW5kZXJlci0+c2V0Q2xlYXJTdXJm
YWNlT25EcmF3TGF5ZXJzKCFiYWNraW5nU3RvcmVVc2VzT3BlbkdMKTsKIH0KIAogdm9pZCBXZWJQ
YWdlQ29tcG9zaXRvcjo6Y29tbWl0KExheWVyV2ViS2l0VGhyZWFkKiByb290TGF5ZXIpCkBAIC04
NCw3ICs4NCw3IEBAIGJvb2wgV2ViUGFnZUNvbXBvc2l0b3I6OmRyYXdMYXllcnMoY29uc3QgSW50
UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBjb250CiB7CiAgICAgLy8gU2F2ZSBhIGRy
YXcgaWYgd2UgYWxyZWFkeSBkcmV3IHRoaXMgZ2VuZXJhdGlvbiwgZm9yIGV4YW1wbGUgZHVlIHRv
IGEgY29uY3VycmVudCBzY3JvbGwgb3BlcmF0aW9uLgogICAgIGlmIChtX2NvbXBvc2l0ZWRHZW5l
cmF0aW9uID09IG1fZ2VuZXJhdGlvbiAmJiBkc3RSZWN0ID09IG1fY29tcG9zaXRlZERzdFJlY3QK
LSAgICAgICAgJiYgY29udGVudHMgPT0gbV9jb21wb3NpdGVkQ29udGVudHNSZWN0ICYmICFtX2Nv
bXBvc2l0aW5nT250b01haW5XaW5kb3cpCisgICAgICAgICYmIGNvbnRlbnRzID09IG1fY29tcG9z
aXRlZENvbnRlbnRzUmVjdCAmJiAhbV9iYWNraW5nU3RvcmVVc2VzT3BlbkdMKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKICAgICBtX2xheWVyUmVuZGVyZXItPmRyYXdMYXllcnMoY29udGVudHMs
IG1fbGF5b3V0UmVjdEZvckNvbXBvc2l0aW5nLCBtX2NvbnRlbnRzU2l6ZUZvckNvbXBvc2l0aW5n
LCBkc3RSZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRT
dXBwb3J0L1dlYlBhZ2VDb21wb3NpdG9yLmggYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2Vi
S2l0U3VwcG9ydC9XZWJQYWdlQ29tcG9zaXRvci5oCmluZGV4IGFhMGE5YThjMGRjM2U3ODIzMWE3
MTg0ZDlkNmZhZDlmNDliNTAzMDUuLjVmM2RlYmZlNWM3YzUwMDM0YjVjMGRiNDY1ZDcwYzI0YmFj
MTYwNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0
L1dlYlBhZ2VDb21wb3NpdG9yLmgKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktp
dFN1cHBvcnQvV2ViUGFnZUNvbXBvc2l0b3IuaApAQCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6CiAK
ICAgICB2b2lkIHNldFJvb3RMYXllcihXZWJDb3JlOjpMYXllckNvbXBvc2l0aW5nVGhyZWFkKik7
CiAKLSAgICB2b2lkIHNldENvbXBvc2l0aW5nT250b01haW5XaW5kb3coYm9vbCk7CisgICAgdm9p
ZCBzZXRCYWNraW5nU3RvcmVVc2VzT3BlbkdMKGJvb2wpOwogCiAgICAgdm9pZCBjb21taXQoV2Vi
Q29yZTo6TGF5ZXJXZWJLaXRUaHJlYWQqIHJvb3RMYXllclByb3h5KTsKIApAQCAtNzcsNyArNzcs
NyBAQCBwcml2YXRlOgogICAgIGludCBtX2NvbXBvc2l0ZWRHZW5lcmF0aW9uOwogICAgIFdlYkNv
cmU6OkludFJlY3QgbV9jb21wb3NpdGVkRHN0UmVjdDsKICAgICBXZWJDb3JlOjpGbG9hdFJlY3Qg
bV9jb21wb3NpdGVkQ29udGVudHNSZWN0OwotICAgIGJvb2wgbV9jb21wb3NpdGluZ09udG9NYWlu
V2luZG93OworICAgIGJvb2wgbV9iYWNraW5nU3RvcmVVc2VzT3BlbkdMOwogICAgIEJsYWNrQmVy
cnk6OlBsYXRmb3JtOjpUaW1lcjxXZWJQYWdlQ29tcG9zaXRvcj4gbV9hbmltYXRpb25UaW1lcjsK
ICAgICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6VGltZXJDbGllbnQqIG1fdGltZXJDbGllbnQ7CiB9
Owo=
</data>

          </attachment>
      

    </bug>

</bugzilla>