<?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>231011</bug_id>
          
          <creation_ts>2021-09-30 01:33:58 -0700</creation_ts>
          <short_desc>ScopedEGLDefaultDisplay should be removed</short_desc>
          <delta_ts>2021-10-07 10:43:14 -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>WebGL</component>
          <version>WebKit Local 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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>231012</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Kimmo Kinnunen">kkinnunen</reporter>
          <assigned_to name="Kimmo Kinnunen">kkinnunen</assigned_to>
          <cc>annulen</cc>
    
    <cc>dino</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kbr</cc>
    
    <cc>kkinnunen</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1798787</commentid>
    <comment_count>0</comment_count>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-09-30 01:33:58 -0700</bug_when>
    <thetext>ScopedEGLDefaultDisplay should be removed

It makes the use of EGLDisplays harder, especially in scenarios where there might be multiple EGLDisplays</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1798791</commentid>
    <comment_count>1</comment_count>
      <attachid>439708</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-09-30 01:50:57 -0700</bug_when>
    <thetext>Created attachment 439708
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1798912</commentid>
    <comment_count>2</comment_count>
      <attachid>439749</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-09-30 10:03:55 -0700</bug_when>
    <thetext>Created attachment 439749
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1798935</commentid>
    <comment_count>3</comment_count>
      <attachid>439755</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-09-30 10:26:56 -0700</bug_when>
    <thetext>Created attachment 439755
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1799011</commentid>
    <comment_count>4</comment_count>
      <attachid>439755</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2021-09-30 13:31:30 -0700</bug_when>
    <thetext>Comment on attachment 439755
Patch

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

Looks good overall, and a good step toward better supporting multiple EGLDisplays. A couple of small naming suggestions, but feel free to take/ignore as you see fit. r+

&gt; Source/WebCore/platform/graphics/angle/GraphicsContextGLANGLE.cpp:107
&gt; +            EGL_Terminate(display);

If TerminateAndReleaseThreadResources is passed, this code calls EGL_Terminate before falling through to the EGL_ReleaseThread call below. Is that the correct order in which to call these fairly low-level APIs? It looks like it probably is - just asking for a double-check. I hope this is tested in UIWebView (?) tests on the ios-wk2 bot and not just in the wild.

&gt; Source/WebCore/platform/graphics/cocoa/GraphicsContextGLOpenGLCocoa.mm:64
&gt;      return !!EGL_Initialize;

How does this turn into a function pointer that can be tested in this way? Via some of the weak-linked dylib magic that was added recently?

Worth adding a comment?

&gt; Source/WebCore/platform/graphics/opengl/GraphicsContextGLOpenGL.h:121
&gt; +    enum class ReleaseResourcesBehavior {

Reading this code afresh, the term &quot;ReleaseResources&quot; in this enum and in the method call is a little confusing - it sounds like OpenGL resources like textures or buffers are being released, where in fact thread-related resources like the current context or access to the EGL API are being released.

I wonder whether a different name could be chosen like:
  ReleaseThreadResourcesBehavior
  ReleasePerThreadResourcesBehavior
  ReleaseEGLResourcesBehavior
(and releasePerThreadResources(), releaseEGLResources(), or similar.)

&gt; Source/WebCore/platform/graphics/opengl/GraphicsContextGLOpenGL.h:584
&gt; +    static void platformReleaseResources();

If releaseResources is renamed, let&apos;s rename this to match.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1799233</commentid>
    <comment_count>5</comment_count>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-10-01 05:16:03 -0700</bug_when>
    <thetext>Thanks for the thoughts!

(In reply to Kenneth Russell from comment #4)
&gt; If TerminateAndReleaseThreadResources is passed, this code calls
&gt; EGL_Terminate before falling through to the EGL_ReleaseThread call below. Is
&gt; that the correct order in which to call these fairly low-level APIs? It
&gt; looks like it probably is - just asking for a double-check.

Yeah. First destroy the display, then free driver internal structures, like potential TLS slots.

&gt; I hope this is
&gt; tested in UIWebView (?) tests on the ios-wk2 bot and not just in the wild.

Yeah, I actually wrote a test for it year ago, WebGLNoCrashOnOnOtherThreadAccess, though it starts to be a bit outdated since EAGL isn&apos;t used on iOS anymore.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/cocoa/GraphicsContextGLOpenGLCocoa.mm:64
&gt; &gt;      return !!EGL_Initialize;
&gt; 
&gt; How does this turn into a function pointer that can be tested in this way?
&gt; Via some of the weak-linked dylib magic that was added recently?
&gt; Worth adding a comment?

Correct. Added.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/opengl/GraphicsContextGLOpenGL.h:121
&gt; &gt; +    enum class ReleaseResourcesBehavior {
&gt; 
&gt; Reading this code afresh, the term &quot;ReleaseResources&quot; in this enum and in
&gt; the method call is a little confusing - it sounds like OpenGL resources like
&gt; textures or buffers are being released, where in fact thread-related
&gt; resources like the current context or access to the EGL API are being
&gt; released.
&gt; 
&gt; I wonder whether a different name could be chosen like:
&gt;   ReleaseThreadResourcesBehavior

Used this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1799235</commentid>
    <comment_count>6</comment_count>
      <attachid>439840</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-10-01 05:17:12 -0700</bug_when>
    <thetext>Created attachment 439840
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1799279</commentid>
    <comment_count>7</comment_count>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-10-01 06:52:57 -0700</bug_when>
    <thetext>*** Bug 230951 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1799283</commentid>
    <comment_count>8</comment_count>
      <attachid>439854</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-10-01 07:00:44 -0700</bug_when>
    <thetext>Created attachment 439854
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1800277</commentid>
    <comment_count>9</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2021-10-04 16:19:37 -0700</bug_when>
    <thetext>Still looks good. Did this land? Note that if you fix up the &quot;Reviewed by&quot; lines in the Changelog, you don&apos;t need to set the r+ flag yourself.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1800436</commentid>
    <comment_count>10</comment_count>
      <attachid>439854</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-10-05 00:39:06 -0700</bug_when>
    <thetext>Comment on attachment 439854
Patch for landing

User error: first I waited on the mac-debug-wk1 which never showed up, then I set the plus on wrong field..</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1800438</commentid>
    <comment_count>11</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-10-05 00:40:18 -0700</bug_when>
    <thetext>Tools/Scripts/svn-apply failed to apply attachment 439854 to trunk.
Please resolve the conflicts and upload a new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1800446</commentid>
    <comment_count>12</comment_count>
      <attachid>440182</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-10-05 01:50:45 -0700</bug_when>
    <thetext>Created attachment 440182
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1800698</commentid>
    <comment_count>13</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-10-05 12:15:11 -0700</bug_when>
    <thetext>Tools/Scripts/svn-apply failed to apply attachment 440182 to trunk.
Please resolve the conflicts and upload a new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1801018</commentid>
    <comment_count>14</comment_count>
      <attachid>440352</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-10-06 04:27:45 -0700</bug_when>
    <thetext>Created attachment 440352
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1801019</commentid>
    <comment_count>15</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-10-06 04:29:43 -0700</bug_when>
    <thetext>ChangeLog entry in Source/WebKit/ChangeLog contains OOPS!.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1801513</commentid>
    <comment_count>16</comment_count>
      <attachid>440473</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-10-06 23:37:17 -0700</bug_when>
    <thetext>Created attachment 440473
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1801540</commentid>
    <comment_count>17</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-10-07 01:08:50 -0700</bug_when>
    <thetext>Committed r283703 (242629@main): &lt;https://commits.webkit.org/242629@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 440473.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1801541</commentid>
    <comment_count>18</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-10-07 01:09:21 -0700</bug_when>
    <thetext>&lt;rdar://problem/83970802&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1801660</commentid>
    <comment_count>19</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2021-10-07 10:43:14 -0700</bug_when>
    <thetext>Hi, the non-ANGLE implementation of GraphicsContextGLOpenGL::releaseThreadResources is broken, it&apos;s missing its return value:

bool GraphicsContextGLOpenGL::releaseThreadResources(ReleaseThreadResourceBehavior)
{
}

The ANGLE implementation carefully chooses between true or false, but I don&apos;t understand how or why. It&apos;s called from only two places, WebCoreThread.mm and ScopedWebGLRenderingResourcesRequest.cpp, and neither caller checks the return value, so it&apos;s somewhat academic, I suppose. I&apos;m going to have it always return false, but you might consider converting this to return void.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>439708</attachid>
            <date>2021-09-30 01:50:57 -0700</date>
            <delta_ts>2021-09-30 10:03:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231011-20210930115055.patch</filename>
            <type>text/plain</type>
            <size>62466</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgzMzAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWE0ZDJmY2U1MGM0ZDY4
MzNjYjk0ZmNmMDc2NjkzMjhmM2NiNjFlMC4uZGM2ZGZiMDFhOWY2MmVlMzhiNGRmMzA3ZjM1ZTRi
YTMzODEwMmMxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYyIEBACisyMDIxLTA5LTMwICBLaW1t
byBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgU2NvcGVkRUdMRGVm
YXVsdERpc3BsYXkgc2hvdWxkIGJlIHJlbW92ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMTAxMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEhhcmQtY29kaW5nIHRoZSBjb2RlIHRvIEVHTF9ERUZBVUxU
X0RJU1BMQVkgb25seSBhbmQgdXNpbmcgdGhlIHNjb3BlZAorICAgICAgICBob2xkZXIgaXMgbWFr
aW5nIHRoZSBFR0xEaXNwbGF5cyBoYXJkZXIgdG8gdXNlIHRoYW4gbmVjY2Vzc2FyeS4gVGhlCisg
ICAgICAgIGltcGxlbWVudGF0aW9uIHdhcyBhbHNvIGEgYml0IG1vcmUgY29udm9sdXRlZCB0aGFu
IG5lZWRlZC4KKworICAgICAgICBNb3ZlIHRoZSAiY2FsbCBFR0xUZXJtaW5hdGUiIGxvZ2ljIGZy
b20gYSBiaXQgY29udm9sdXRlZCByZWZjb3VudCBtZWNoYW5pc20KKyAgICAgICAgaW4gU2NvcGVk
RUdMRGVmYXVsdERpc3BsYXkgdG8gdGhlIGV4cGxpY2l0IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpyZWxlYXNlUmVzb3VyY2VzKCkuCisgICAgICAgIFRoZSBjYWxsZXJzIGFyZSBleHBlY3RlZCB0
byBkbyB0aGUgcmVmY291bnRpbmcgYW55d2F5LCBhcyB0aGUgZXhpc3RpbmcgY2xpZW50CisgICAg
ICAgIFdlYktpdDo6U2NvcGVkV2ViR0xSZW5kZXJpbmdSZXNvdXJjZXNSZXF1ZXN0IGFscmVhZHkg
ZGlkLgorCisgICAgICAgIE1ha2UgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlbGVhc2VSZXNv
dXJjZXMoKSBhdmFpbGFibGUgb24gYWxsIHBsYXRmb3Jtcy4KKyAgICAgICAgSXQgaXMgaW1wbGVt
ZW50ZWQgb24gYWxsIEFOR0xFIGltcGxlbWVudGF0aW9ucy4KKyAgICAgICAgUGxhdGZvcm1zIGNh
biBhdWdtZW50IHRoZSBpbXBsZW1lbnRhdGlvbiBieSBpbXBsZW1lbnRpbmcKKyAgICAgICAgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OnBsYXRmb3JtUmVsZWFzZVJlc291cmNlcygpLiBGb3IgQ29j
b2EsIHRoaXMgZnVuY3Rpb24KKyAgICAgICAgcmVzZXRzIHRoZSBjdXJyZW50Q29udGV4dCBjYWNo
ZSB0aGF0IGlzIHVzZWQgdG8gb3B0aW1pemUgbWFraW5nIGNvbnRleHQgY3VycmVudC4KKworCisg
ICAgICAgIE5vIG5ldyB0ZXN0cywgcmVmYWN0b3IuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4
dDoKKyAgICAgICAgKiBIZWFkZXJzLmNtYWtlOgorICAgICAgICAqIFBsYXRmb3JtTWFjLmNtYWtl
OgorICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0FO
R0xFVXRpbGl0aWVzLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEVFR0xVdGlsaXRpZXMuaC4KKyAgICAg
ICAgKFdlYkNvcmU6OnBsYXRmb3JtSXNBTkdMRUF2YWlsYWJsZSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvYW5nbGUvQU5HTEVVdGlsaXRpZXMuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEVVdGls
aXRpZXMuaC4KKyAgICAgICAgUmVuYW1lIEdyYXBoaWNzQ29udGV4dEdMQU5HTEVVdGlsaXRpZXMg
dG8gc2ltcGxlciBhbmQgbW9yZSBkZXNjcmlwdGl2ZSBBTkdMRVV0aWxpdGllcy4KKyAgICAgICAg
QWRkIHRoZSBpc0FOR0xFQXZhaWxhYmxlIHRvIHRoZXJlLgorCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVsZWFzZVJlc291cmNlcyk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cGxhdGZvcm1SZWxlYXNlUmVzb3Vy
Y2VzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRH
TEFOR0xFRUdMVXRpbGl0aWVzLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKFdlYkNvcmU6OnJlZkRl
ZmF1bHREaXNwbGF5KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnVucmVmRGVmYXVsdERp
c3BsYXlJZk5lZWRlZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTY29wZWRFR0xEZWZh
dWx0RGlzcGxheTo6b3BlcmF0b3I9KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNjb3Bl
ZEVHTERlZmF1bHREaXNwbGF5OjpTY29wZWRFR0xEZWZhdWx0RGlzcGxheSk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpTY29wZWRFR0xEZWZhdWx0RGlzcGxheTo6flNjb3BlZEVHTERlZmF1
bHREaXNwbGF5KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNjb3BlZEVHTERlZmF1bHRE
aXNwbGF5OjpyZWxlYXNlQWxsUmVzb3VyY2VzSWZVbnVzZWQpOiBEZWxldGVkLgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW06
CisgICAgICAgIChXZWJDb3JlOjpwbGF0Zm9ybUlzQU5HTEVBdmFpbGFibGUpOgorICAgICAgICAo
V2ViQ29yZTo6aW5pdGlhbGl6ZUVHTERpc3BsYXkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OnBsYXRmb3JtUmVsZWFzZVJlc291cmNlcyk6CisgICAgICAgIChX
ZWJDb3JlOjppc0FOR0xFQXZhaWxhYmxlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWxlYXNlQ3VycmVudENvbnRleHQpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlbGVhc2VBbGxSZXNv
dXJjZXNJZlVudXNlZCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpyZWxlYXNlUmVzb3VyY2VzKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpwbGF0Zm9ybVJlbGVhc2VSZXNvdXJjZXMpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5o
OgorICAgICAgICAqIHBsYXRmb3JtL2lvcy93YWsvV2ViQ29yZVRocmVhZC5tbToKKwogMjAyMS0w
OS0yOSAgS2ltbW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgogCiAgICAgICAgIEdQ
VVAgQ29jb2EgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wgc2hvdWxkIGNoZWNrIGZvciBBTkdMRSBw
cmVzZW5jZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwppbmRleCAzNmI5MjVkZTUzOTQyOGUwNjBhYmNmNmE0Y2M5ODQzMGU2ZjY2
MjZiLi43ZTMzMjdiMzViMTJhMjgwOTQ4NDM0ZWUwMGY1M2FlM2M2NmY2YWRjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpA
QCAtMSwzICsxLDI3IEBACisyMDIxLTA5LTMwICBLaW1tbyBLaW5udW5lbiAgPGtraW5udW5lbkBh
cHBsZS5jb20+CisKKyAgICAgICAgU2NvcGVkRUdMRGVmYXVsdERpc3BsYXkgc2hvdWxkIGJlIHJl
bW92ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIz
MTAxMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIElt
cGxlbWVudCB0aGUgcmVsZWFzZSBvZiBXZWJHTCByZXNvdXJjZXMgd2l0aCB0aGUgYW1lbmRlZAor
ICAgICAgICBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVsZWFzZVJlc291cmNlcygpIGluc3Rl
YWQgb2YKKyAgICAgICAgcHJldmlvdXMgc2VwYXJhdGUgZnVuY3Rpb24gR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OnJlbGVhc2VBbGxSZXNvdXJjZXMoKS4KKworICAgICAgICBVc2UgdGhlIHJlc291
cmNlIHJlbGVhc2UgY29kZSBwYXRoIHVuaXZlcnNhbGx5LCBhcworICAgICAgICBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6cmVsZWFzZVJlc291cmNlcygpIGlzIG5vdyBjb21tb24gY29kZS4KKwor
ICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvU2NvcGVkV2ViR0xSZW5kZXJpbmdSZXNvdXJj
ZXNSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2NvcGVkV2ViR0xSZW5kZXJpbmdSZXNv
dXJjZXNSZXF1ZXN0OjpzY2hlZHVsZUZyZWVXZWJHTFJlbmRlcmluZ1Jlc291cmNlcyk6CisgICAg
ICAgIChXZWJLaXQ6OlNjb3BlZFdlYkdMUmVuZGVyaW5nUmVzb3VyY2VzUmVxdWVzdDo6ZnJlZVdl
YkdMUmVuZGVyaW5nUmVzb3VyY2VzKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1Nj
b3BlZFdlYkdMUmVuZGVyaW5nUmVzb3VyY2VzUmVxdWVzdC5oOgorICAgICAgICAqIEdQVVByb2Nl
c3MvZ3JhcGhpY3MvU2NvcGVkV2ViR0xSZW5kZXJpbmdSZXNvdXJjZXNSZXF1ZXN0Q29jb2EuY3Bw
OiBSZW1vdmVkLgorICAgICAgICAoV2ViS2l0OjpTY29wZWRXZWJHTFJlbmRlcmluZ1Jlc291cmNl
c1JlcXVlc3Q6OnNjaGVkdWxlRnJlZVdlYkdMUmVuZGVyaW5nUmVzb3VyY2VzKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYktpdDo6U2NvcGVkV2ViR0xSZW5kZXJpbmdSZXNvdXJjZXNSZXF1ZXN0Ojpm
cmVlV2ViR0xSZW5kZXJpbmdSZXNvdXJjZXMpOiBEZWxldGVkLgorICAgICAgICAqIFNvdXJjZXND
b2NvYS50eHQ6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisK
IDIwMjEtMDktMjkgIEFkYSBDaGFuICA8YWRhLmNoYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtX
ZWJYUl0gSG9sZCBhIGZvcmVncm91bmQgYXNzZXJ0aW9uIGZvciB0aGUgZHVyYXRpb24gb2YgdGhl
IGltbWVyc2l2ZSBzZXNzaW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3Rz
LnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDVhYzE3NDk2MTM5ZDQz
OTI4MjhlNTkzOGI0MjljZGFhNjFkNTNhYWUuLmRhMTUzM2QwY2EyNjZiYzEwN2M5OWQ1NjRmNjJm
ZDU2YzA3YjE1OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0Cisr
KyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0xNzAxLDkgKzE3MDEsOSBAQCBp
ZiAoRU5BQkxFX1dFQkdMKQogICAgICAgICAgICAgJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vZ3Jh
cGhpY3MvYW5nbGUKICAgICAgICAgKQogICAgICAgICBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJD
RVMKKyAgICAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0FOR0xFVXRpbGl0aWVzLmNw
cAogICAgICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUu
Y3BwCiAgICAgICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRH
TEFOR0xFLmNwcAotICAgICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3ND
b250ZXh0R0xBTkdMRUVHTFV0aWxpdGllcy5jcHAKICAgICAgICAgICAgIHBsYXRmb3JtL2dyYXBo
aWNzL2FuZ2xlL1RlbXBvcmFyeUFOR0xFU2V0dGluZy5jcHAKICAgICAgICAgKQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvSGVhZGVy
cy5jbWFrZQppbmRleCBmOWYyMDNkMTRkZDkzYzMxNTYwNmM5OTRmODU5ZjY1NWViOGIwZDQzLi4w
MzIzNjBhNzAwNmUyYzA0OGUxNGI5N2Q1Y2Q5ZDI2NDYyMWRiMzk4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21h
a2UKQEAgLTEzNzksOCArMTM3OSw4IEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hF
QURFUlMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9XaW5kUnVsZS5oCiAKICAgICBwbGF0Zm9ybS9n
cmFwaGljcy9hbmdsZS9BTkdMRUhlYWRlcnMuaAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL2FuZ2xl
L0FOR0xFVXRpbGl0aWVzLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25z
R0xBTkdMRS5oCi0gICAgcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xB
TkdMRVV0aWxpdGllcy5oCiAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3QuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dERyYXdpbmdDb250ZXh0LmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFj
LmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UKaW5kZXggZmFjY2NiNjhm
NjVlYmE3Y2M1OTFiYzcyNGZjYTBjMmEzM2FjNGY4YS4uYmNmY2ViNzkzMTNlYzA1YzM1NGM1ZmVm
ZTM0YWI1MTBhYjMzZTcxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMu
Y21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UKQEAgLTYxNCw3ICs2
MTQsNyBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9NSU1FVHlwZUNhY2hlLmgKICAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9Nb2RlbC5oCiAKLSAgICBwbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRH
TEFOR0xFRUdMVXRpbGl0aWVzLmgKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9BTkdMRVV0
aWxpdGllcy5oCiAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQXVkaW9Tb3Vy
Y2VQcm92aWRlckFWRk9iakMuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9N
ZWRpYVBsYXliYWNrVGFyZ2V0Q29jb2EuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291
cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKaW5kZXggM2Ex
YjkwMjg1MWQyYzE0YWRiOTNlOGY2Y2U0Nzc4NjUwZmZkOGZlNi4uY2QyZGZiMjc0NmU3NGRiOGZh
YjBjYWIyOTA5YWM3OTJhNGJhMWM1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNl
c0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CkBAIC01OTYs
NyArNTk2LDcgQEAgdGVzdGluZy9jb2NvYS9XZWJWaWV3VmlzdWFsSWRlbnRpZmljYXRpb25PdmVy
bGF5Lm1tCiAvLyBUaGUgZm9sbG93aW5nIGZpbGVzIGFyZW4ndCB1bmlmaWVkIHdpdGggb3RoZXJz
IHRvIHByZXZlbnQgdGhlbSBmcm9tIGJlaW5nIG1lcmdlZAogLy8gd2l0aCBmaWxlcyB0aGF0IHVz
ZSB0aGUgc3lzdGVtIE9wZW5HTC4KIAorcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvQU5HTEVVdGls
aXRpZXMuY3BwIEBuby11bmlmeQogcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dM
QU5HTEUuY3BwIEBuby11bmlmeQogcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250
ZXh0R0xBTkdMRS5jcHAgQG5vLXVuaWZ5Ci1wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGlj
c0NvbnRleHRHTEFOR0xFRUdMVXRpbGl0aWVzLmNwcCBAbm8tdW5pZnkKIHBsYXRmb3JtL2dyYXBo
aWNzL2FuZ2xlL1RlbXBvcmFyeUFOR0xFU2V0dGluZy5jcHAgQG5vLXVuaWZ5CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMDJkODQx
NWI0NjBiMjc1MDE2NTRhMTU3NDI5MTJiNWM0ZmRiMTI1YS4uZjY4NjM5MmRjNzljMTU1YzZiZWY5
YzkwNWE0NTk4MGY2Yjc0OGE1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjM1MSwxMyArMjM1MSwxMSBAQAogCQk3QUY5QjIw
RjE4Q0ZCNUY0MDBDNjRCRUYgLyogSlNWVFRSZWdpb25MaXN0LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QUY5QjIwQjE4Q0ZCNUYzMDBDNjRCRUYgLyog
SlNWVFRSZWdpb25MaXN0LmggKi87IH07CiAJCTdCMTAzMzlFMjU0OTcyMTcwMEM4QzFBQyAvKiBH
cmFwaGljc0NvbnRleHRHTENWLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3QjEwMzM5RDI1NDk3MjAxMDBDOEMxQUMgLyogR3JhcGhpY3NDb250ZXh0R0xD
Vi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdC
MTAzMzlGMjU0OTcyMUUwMEM4QzFBQyAvKiBHcmFwaGljc0NvbnRleHRHTENWQU5HTEUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCMTAzMzlDMjU0OTcy
MDEwMEM4QzFBQyAvKiBHcmFwaGljc0NvbnRleHRHTENWQU5HTEUuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk3QjQ1QUI1MDI1RkI5M0JFMDBGRDI3
RjQgLyogR3JhcGhpY3NDb250ZXh0R0xBTkdMRUVHTFV0aWxpdGllcy5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Qjc3NEM2MjI1RkI5MzU1MDA5MTM5
NUYgLyogR3JhcGhpY3NDb250ZXh0R0xBTkdMRUVHTFV0aWxpdGllcy5jcHAgKi87IH07Ci0JCTdC
NDVBQjU1MjVGQkE5REUwMEZEMjdGNCAvKiBHcmFwaGljc0NvbnRleHRHTEFOR0xFRUdMVXRpbGl0
aWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjQ1
QUI1NDI1RkJBOUREMDBGRDI3RjQgLyogR3JhcGhpY3NDb250ZXh0R0xBTkdMRUVHTFV0aWxpdGll
cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdC
NkRDODE5MjU3MTJFOTIwMDM4MEM3MCAvKiBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBD
aGFpbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I2
REM4MTcyNTcxMkU5MjAwMzgwQzcwIC8qIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENo
YWluLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
N0I3MzExRkIyNUMwOTJCNzAwM0IyNzk2IC8qIFNjb3BlZEhpZ2hQZXJmb3JtYW5jZUdQVVJlcXVl
c3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCNzMx
MUZBMjVDMDkyQjcwMDNCMjc5NiAvKiBTY29wZWRIaWdoUGVyZm9ybWFuY2VHUFVSZXF1ZXN0Lmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0I4RUQ1
RjAyNkYwQzEzRDAwOEFDMDIzIC8qIENWVXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjhFRDVFRDI2RjBDMTIzMDA4QUMwMjMgLyogQ1ZV
dGlsaXRpZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk3QjkwNDE3MDI1NTAxMTQyMDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eUJhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDdCOTA0MTZFMjU1MDExMDkwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
QmFzZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0J
CTdCQjM0QTE3MjUzNDVDQjIwMDAyOUQwOCAvKiBHcmFwaGljc0NvbnRleHRHTEFOR0xFVXRpbGl0
aWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QkIz
NEExNjI1MzQ1Q0IyMDAwMjlEMDggLyogR3JhcGhpY3NDb250ZXh0R0xBTkdMRVV0aWxpdGllcy5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTdCQjM0
QTE3MjUzNDVDQjIwMDAyOUQwOCAvKiBBTkdMRVV0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0JCMzRBMTYyNTM0NUNCMjAwMDI5RDA4IC8q
IEFOR0xFVXRpbGl0aWVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJN0JCMzRBNDgyNTM3NzZDQTAwMDI5RDA4IC8qIEdyYXBoaWNzQ29udGV4dEdM
SW1hZ2VFeHRyYWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDdCQjM0QTQ1MjUzNzc2QzYwMDAyOUQwOCAvKiBHcmFwaGljc0NvbnRleHRHTEltYWdl
RXh0cmFjdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJN0JCNjgwQkEyNUJBMUJFNDAwMkI4NzM4IC8qIEdyYXBoaWNzQ2hlY2tzTWFjLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QkI2ODBCODI1QkEx
QkU0MDAyQjg3MzggLyogR3JhcGhpY3NDaGVja3NNYWMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QkU3NDI3MzgxRkE5MDZGQkI0RjBGMkMgLyog
SlNTVkdHcmFwaGljc0VsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDk1MEM0QzAyQkVEODkzNkY4MThFMkY5OSAvKiBKU1NWR0dyYXBoaWNzRWxl
bWVudC5oICovOyB9OwpAQCAtMTA2MzEsMjAgKzEwNjI5LDE5IEBACiAJCTdCMTAzMzlBMjU0OTcy
MDAwMEM4QzFBQyAvKiBHcmFwaGljc0NvbnRleHRHTENWQU5HTEUuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJN0IxMDMzOUMyNTQ5NzIwMTAwQzhDMUFDIC8qIEdyYXBoaWNzQ29udGV4dEdMQ1ZB
TkdMRS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBHcmFwaGljc0NvbnRleHRHTENWQU5HTEUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0IxMDMzOUQyNTQ5NzIwMTAwQzhDMUFDIC8qIEdyYXBo
aWNzQ29udGV4dEdMQ1YuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0R0xDVi5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3QjQ1QUI1NDI1RkJBOUREMDBGRDI3RjQgLyog
R3JhcGhpY3NDb250ZXh0R0xBTkdMRUVHTFV0aWxpdGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBHcmFwaGljc0NvbnRleHRHTEFOR0xFRUdMVXRpbGl0aWVzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCNjRDMEI0MjU0QzNCMTYwMDA2QjRBRiAvKiBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZUNvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2VDb2NvYS5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJN0I2REM4MTUyNTcxMkU5MTAwMzgwQzcwIC8qIEdyYXBoaWNzQ29u
dGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I2REM4MTcyNTcxMkU5MjAwMzgwQzcwIC8qIEdyYXBo
aWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCNzMxMUZBMjVDMDkyQjcwMDNCMjc5NiAvKiBTY29wZWRI
aWdoUGVyZm9ybWFuY2VHUFVSZXF1ZXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFNjb3BlZEhpZ2hQZXJmb3JtYW5jZUdQVVJlcXVlc3QuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJN0I3NzRDNjIyNUZCOTM1NTAwOTEzOTVGIC8qIEdyYXBoaWNzQ29udGV4dEdM
QU5HTEVFR0xVdGlsaXRpZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0
R0xBTkdMRUVHTFV0aWxpdGllcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdC
OEVENUVEMjZGMEMxMjMwMDhBQzAyMyAvKiBDVlV0aWxpdGllcy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBDVlV0aWxpdGllcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk3QjhFRDVFRjI2RjBDMTIzMDA4QUMwMjMgLyogQ1ZVdGlsaXRpZXMubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBDVlV0aWxpdGllcy5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I5MDQxNkUyNTUwMTEwOTAwNkVFQjhDIC8qIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHlCYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTdCQjM0
QTE2MjUzNDVDQjIwMDAyOUQwOCAvKiBHcmFwaGljc0NvbnRleHRHTEFOR0xFVXRpbGl0aWVzLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dEdMQU5HTEVV
dGlsaXRpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0JCMzRBMTYyNTM0NUNC
MjAwMDI5RDA4IC8qIEFOR0xFVXRpbGl0aWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEFOR0xFVXRpbGl0aWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdC
QjM0QTQ1MjUzNzc2QzYwMDAyOUQwOCAvKiBHcmFwaGljc0NvbnRleHRHTEltYWdlRXh0cmFjdG9y
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0b3IuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0JCMzRBNDcyNTM3NzZDNzAwMDI5RDA4IC8qIEdy
YXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR3Jh
cGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTdCQjY4MEI3MjVCQTFCRTMwMDJCODczOCAvKiBHcmFwaGljc0NoZWNrc01hYy5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHcmFwaGljc0NoZWNrc01hYy5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCQjY4MEI4MjVCQTFCRTQwMDJCODcz
OCAvKiBHcmFwaGljc0NoZWNrc01hYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBHcmFwaGljc0NoZWNrc01hYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QkNE
NDJEODI3MDU5OUVGMDBFQjIxMjcgLyogQU5HTEVVdGlsaXRpZXMuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gQU5HTEVVdGlsaXRpZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3
QkU3MjY1QjI1NzYzQjhEMDBFODVEOTggLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJh
c2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJh
c2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzAxMUYzRDI0RkFEMzYwMDA1
QkVGMTAgLyogU2V0dGluZ3MuY3BwLmVyYiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBTZXR0aW5ncy5jcHAuZXJiOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk3QzAxMUYzRTI0RkFEMzYwMDA1QkVGMTAgLyogSW50ZXJu
YWxTZXR0aW5nc0dlbmVyYXRlZC5jcHAuZXJiICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEludGVybmFsU2V0dGluZ3NHZW5lcmF0
ZWQuY3BwLmVyYjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIyNjI1LDEyICsyMjYy
MiwxMSBAQAogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKIAkJCQkyN0UzQzgw
NjI1N0Y1RTZFMDBDOTg2QUIgLyogQU5HTEVIZWFkZXJzLmggKi8sCisJCQkJN0JCMzRBMTYyNTM0
NUNCMjAwMDI5RDA4IC8qIEFOR0xFVXRpbGl0aWVzLmggKi8sCisJCQkJN0JDRDQyRDgyNzA1OTlF
RjAwRUIyMTI3IC8qIEFOR0xFVXRpbGl0aWVzLmNwcCAqLywKIAkJCQk2RTI3RjI0MzIyOUM5Rjg0
MDBGMUY2MzIgLyogRXh0ZW5zaW9uc0dMQU5HTEUuY3BwICovLAogCQkJCTZFMjdGMjQ0MjI5QzlG
OEQwMEYxRjYzMiAvKiBFeHRlbnNpb25zR0xBTkdMRS5oICovLAogCQkJCTZFMjdGMjQyMjI5OENF
NEIwMEYxRjYzMiAvKiBHcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcCAqLywKLQkJCQk3Qjc3NEM2
MjI1RkI5MzU1MDA5MTM5NUYgLyogR3JhcGhpY3NDb250ZXh0R0xBTkdMRUVHTFV0aWxpdGllcy5j
cHAgKi8sCi0JCQkJN0I0NUFCNTQyNUZCQTlERDAwRkQyN0Y0IC8qIEdyYXBoaWNzQ29udGV4dEdM
QU5HTEVFR0xVdGlsaXRpZXMuaCAqLywKLQkJCQk3QkIzNEExNjI1MzQ1Q0IyMDAwMjlEMDggLyog
R3JhcGhpY3NDb250ZXh0R0xBTkdMRVV0aWxpdGllcy5oICovLAogCQkJCTZFMjkwODYxMjI5REI5
NTAwMDA5ODZFMiAvKiBUZW1wb3JhcnlBTkdMRVNldHRpbmcuY3BwICovLAogCQkJCTZFMjkwODYz
MjI5REI5NzAwMDA5ODZFMiAvKiBUZW1wb3JhcnlBTkdMRVNldHRpbmcuaCAqLywKIAkJCSk7CkBA
IC0zMjYzOSw4ICszMjYzNSw3IEBACiAJCQkJQjJBMDE1QTkwQUY2Q0Q1MzAwNkJDRTBFIC8qIEdy
YXBoaWNzQ29udGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTM0OTA3RTQxMjVCQkJDODAwN0Yy
M0EwIC8qIEdyYXBoaWNzQ29udGV4dENHLmggaW4gSGVhZGVycyAqLywKIAkJCQkzMTNERTg3MDIz
QTk2OTczMDA4RkM0N0IgLyogR3JhcGhpY3NDb250ZXh0R0wuaCBpbiBIZWFkZXJzICovLAotCQkJ
CTdCNDVBQjU1MjVGQkE5REUwMEZEMjdGNCAvKiBHcmFwaGljc0NvbnRleHRHTEFOR0xFRUdMVXRp
bGl0aWVzLmggaW4gSGVhZGVycyAqLywKLQkJCQk3QkIzNEExNzI1MzQ1Q0IyMDAwMjlEMDggLyog
R3JhcGhpY3NDb250ZXh0R0xBTkdMRVV0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0JC
MzRBMTcyNTM0NUNCMjAwMDI5RDA4IC8qIEFOR0xFVXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLywK
IAkJCQk3QzMzMEEwMjFERjhGQUM2MDBEMzM5NUMgLyogR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1
dGVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk3QjEwMzM5RTI1NDk3MjE3MDBDOEMxQUMgLyogR3Jh
cGhpY3NDb250ZXh0R0xDVi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0IxMDMzOUYyNTQ5NzIxRTAw
QzhDMUFDIC8qIEdyYXBoaWNzQ29udGV4dEdMQ1ZBTkdMRS5oIGluIEhlYWRlcnMgKi8sCkBAIC0z
NjQ5OSw3ICszNjQ5NCw2IEBACiAJCQkJNTFBOUQ5RTkxOTVCOTMxRjAwMUIyQjVDIC8qIEdhbWVw
YWRNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTgzNzk2NENGMUY4REI2OUQwMDIxOEVB
MCAvKiBHZW9sb2NhdGlvblBvc2l0aW9uRGF0YUlPUy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTZF
NzJGNTRFMjI5RENEMTAwMEIzRTE1MSAvKiBHcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcCBpbiBT
b3VyY2VzICovLAotCQkJCTdCNDVBQjUwMjVGQjkzQkUwMEZEMjdGNCAvKiBHcmFwaGljc0NvbnRl
eHRHTEFOR0xFRUdMVXRpbGl0aWVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDM0U1MTBCMThE
RjhGMzUwMEMxMTJGNyAvKiBIVE1MQ29udmVydGVyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQThE
MDZCM0EwQTI2NURDRDAwNUU3MjAzIC8qIEhUTUxOYW1lcy5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkxQUM5MDBDMzE5NDNDMEZDMDA4NjI1QjUgLyogSFRUUEhlYWRlck5hbWVzLmNwcCBpbiBTb3Vy
Y2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5n
bGUvQU5HTEVVdGlsaXRpZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YW5nbGUvQU5HTEVVdGlsaXRpZXMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdjNWY4YjU4NzczNDkwMDAxNDUz
ODk0YTAxM2YyMjcxYzk3NWFjYzMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9BTkdMRVV0aWxpdGllcy5jcHAKQEAgLTAsMCArMSw0MiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJBTkdMRVV0aWxpdGllcy5oIgorCisjaWYgRU5BQkxFKFdF
QkdMKSAmJiBVU0UoQU5HTEUpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworI2lmICFQTEFURk9S
TShDT0NPQSkKK2Jvb2wgcGxhdGZvcm1Jc0FOR0xFQXZhaWxhYmxlKCkKK3sKKyAgICByZXR1cm4g
dHJ1ZTsKK30KKyNlbmRpZgorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvQU5HTEVVdGlsaXRpZXMuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0FOR0xFVXRpbGl0aWVzLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NjkyYzMzYzJmZGYyYjdkZDhjYzA5NWI0YzEwYWYxNjVhYmQzMWE4NQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0FOR0xFVXRpbGl0aWVz
LmgKQEAgLTAsMCArMSwyNDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJHTCkgJiYgVVNFKEFOR0xF
KQorCisjaW5jbHVkZSAiQU5HTEVIZWFkZXJzLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NUeXBlc0dM
LmgiCisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworY2xhc3MgU2NvcGVkUmVzdG9yZVRleHR1cmVCaW5kaW5nIHsKKyAgICBXVEZfTUFLRV9OT05D
T1BZQUJMRShTY29wZWRSZXN0b3JlVGV4dHVyZUJpbmRpbmcpOworcHVibGljOgorICAgIFNjb3Bl
ZFJlc3RvcmVUZXh0dXJlQmluZGluZyhHTGVudW0gYmluZGluZ1BvaW50UXVlcnksIEdMZW51bSBi
aW5kaW5nUG9pbnQsIGJvb2wgY29uZGl0aW9uID0gdHJ1ZSkKKyAgICB7CisgICAgICAgIEFTU0VS
VChiaW5kaW5nUG9pbnQgIT0gc3RhdGljX2Nhc3Q8R0xlbnVtPigwdSkpOworICAgICAgICBpZiAo
Y29uZGl0aW9uKSB7CisgICAgICAgICAgICBtX2JpbmRpbmdQb2ludCA9IGJpbmRpbmdQb2ludDsK
KyAgICAgICAgICAgIGdsOjpHZXRJbnRlZ2VydihiaW5kaW5nUG9pbnRRdWVyeSwgcmVpbnRlcnBy
ZXRfY2FzdDxHTGludCo+KCZtX2JpbmRpbmdWYWx1ZSkpOworICAgICAgICB9CisgICAgfQorCisg
ICAgflNjb3BlZFJlc3RvcmVUZXh0dXJlQmluZGluZygpCisgICAgeworICAgICAgICBpZiAobV9i
aW5kaW5nUG9pbnQpCisgICAgICAgICAgICBnbDo6QmluZFRleHR1cmUobV9iaW5kaW5nUG9pbnQs
IG1fYmluZGluZ1ZhbHVlKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgR0xlbnVtIG1fYmluZGlu
Z1BvaW50IHsgMCB9OworICAgIEdMdWludCBtX2JpbmRpbmdWYWx1ZSB7IDB1IH07Cit9OworCisK
K2NsYXNzIFNjb3BlZEJ1ZmZlckJpbmRpbmcgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFNj
b3BlZEJ1ZmZlckJpbmRpbmcpOworcHVibGljOgorICAgIFNjb3BlZEJ1ZmZlckJpbmRpbmcoR0xl
bnVtIGJpbmRpbmdQb2ludCwgR0x1aW50IGJpbmRpbmdWYWx1ZSwgYm9vbCBjb25kaXRpb24gPSB0
cnVlKQorICAgIHsKKyAgICAgICAgaWYgKCFjb25kaXRpb24pCisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIGdsOjpHZXRJbnRlZ2VydihxdWVyeShiaW5kaW5nUG9pbnQpLCByZWludGVycHJl
dF9jYXN0PEdMaW50Kj4oJm1fYmluZGluZ1ZhbHVlKSk7CisgICAgICAgIGlmIChiaW5kaW5nVmFs
dWUgPT0gbV9iaW5kaW5nVmFsdWUpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1fYmlu
ZGluZ1BvaW50ID0gYmluZGluZ1BvaW50OworICAgICAgICBnbDo6QmluZEJ1ZmZlcihtX2JpbmRp
bmdQb2ludCwgYmluZGluZ1ZhbHVlKTsKKyAgICB9CisKKyAgICB+U2NvcGVkQnVmZmVyQmluZGlu
ZygpCisgICAgeworICAgICAgICBpZiAobV9iaW5kaW5nUG9pbnQpCisgICAgICAgICAgICBnbDo6
QmluZEJ1ZmZlcihtX2JpbmRpbmdQb2ludCwgbV9iaW5kaW5nVmFsdWUpOworICAgIH0KKworcHJp
dmF0ZToKKyAgICBzdGF0aWMgY29uc3RleHByIEdMZW51bSBxdWVyeShHTGVudW0gYmluZGluZ1Bv
aW50KQorICAgIHsKKyAgICAgICAgaWYgKGJpbmRpbmdQb2ludCA9PSBHTF9QSVhFTF9QQUNLX0JV
RkZFUikKKyAgICAgICAgICAgIHJldHVybiBHTF9QSVhFTF9QQUNLX0JVRkZFUl9CSU5ESU5HOwor
ICAgICAgICBBU1NFUlQoYmluZGluZ1BvaW50ID09IEdMX1BJWEVMX1VOUEFDS19CVUZGRVIpOwor
ICAgICAgICByZXR1cm4gR0xfUElYRUxfVU5QQUNLX0JVRkZFUl9CSU5ESU5HOworICAgIH0KKyAg
ICBHTGludCBtX2JpbmRpbmdQb2ludCB7IDAgfTsKKyAgICBHTHVpbnQgbV9iaW5kaW5nVmFsdWUg
eyAwdSB9OworfTsKK2NsYXNzIFNjb3BlZFJlc3RvcmVSZWFkRnJhbWVidWZmZXJCaW5kaW5nIHsK
KyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTY29wZWRSZXN0b3JlUmVhZEZyYW1lYnVmZmVyQmlu
ZGluZyk7CitwdWJsaWM6CisgICAgU2NvcGVkUmVzdG9yZVJlYWRGcmFtZWJ1ZmZlckJpbmRpbmco
Ym9vbCBpc0ZvcldlYkdMMiwgR0x1aW50IHJlc3RvcmVWYWx1ZSkKKyAgICAgICAgOiBtX2ZyYW1l
YnVmZmVyVGFyZ2V0KGlzRm9yV2ViR0wyID8gR0xfUkVBRF9GUkFNRUJVRkZFUiA6IEdMX0ZSQU1F
QlVGRkVSKQorICAgICAgICAsIG1fYmluZGluZ1ZhbHVlKHJlc3RvcmVWYWx1ZSkKKyAgICB7Cisg
ICAgfQorICAgIFNjb3BlZFJlc3RvcmVSZWFkRnJhbWVidWZmZXJCaW5kaW5nKGJvb2wgaXNGb3JX
ZWJHTDIsIEdMdWludCByZXN0b3JlVmFsdWUsIEdMdWludCB2YWx1ZSkKKyAgICAgICAgOiBtX2Zy
YW1lYnVmZmVyVGFyZ2V0KGlzRm9yV2ViR0wyID8gR0xfUkVBRF9GUkFNRUJVRkZFUiA6IEdMX0ZS
QU1FQlVGRkVSKQorICAgICAgICAsIG1fYmluZGluZ1ZhbHVlKHJlc3RvcmVWYWx1ZSkKKyAgICB7
CisgICAgICAgIGJpbmRGcmFtZWJ1ZmZlcih2YWx1ZSk7CisgICAgfQorICAgIHZvaWQgbWFya0Jp
bmRpbmdDaGFuZ2VkKCkKKyAgICB7CisgICAgICAgIG1fYmluZGluZ0NoYW5nZWQgPSB0cnVlOwor
ICAgIH0KKyAgICB2b2lkIGJpbmRGcmFtZWJ1ZmZlcihHTHVpbnQgYmluZGluZ1ZhbHVlKQorICAg
IHsKKyAgICAgICAgaWYgKCFtX2JpbmRpbmdDaGFuZ2VkICYmIG1fYmluZGluZ1ZhbHVlID09IGJp
bmRpbmdWYWx1ZSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgZ2w6OkJpbmRGcmFtZWJ1
ZmZlcihtX2ZyYW1lYnVmZmVyVGFyZ2V0LCBiaW5kaW5nVmFsdWUpOworICAgICAgICBtX2JpbmRp
bmdDaGFuZ2VkID0gbV9iaW5kaW5nVmFsdWUgIT0gYmluZGluZ1ZhbHVlOworICAgIH0KKyAgICBH
THVpbnQgZnJhbWVidWZmZXJUYXJnZXQoKSBjb25zdCB7IHJldHVybiBtX2ZyYW1lYnVmZmVyVGFy
Z2V0OyB9CisgICAgflNjb3BlZFJlc3RvcmVSZWFkRnJhbWVidWZmZXJCaW5kaW5nKCkKKyAgICB7
CisgICAgICAgIGlmIChtX2JpbmRpbmdDaGFuZ2VkKQorICAgICAgICAgICAgZ2w6OkJpbmRGcmFt
ZWJ1ZmZlcihtX2ZyYW1lYnVmZmVyVGFyZ2V0LCBtX2JpbmRpbmdWYWx1ZSk7CisgICAgfQorcHJp
dmF0ZToKKyAgICBjb25zdCBHTGVudW0gbV9mcmFtZWJ1ZmZlclRhcmdldDsKKyAgICBHTHVpbnQg
bV9iaW5kaW5nVmFsdWUgeyAwdSB9OworICAgIGJvb2wgbV9iaW5kaW5nQ2hhbmdlZCB7IGZhbHNl
IH07Cit9OworCitjbGFzcyBTY29wZWRQaXhlbFN0b3JhZ2VNb2RlIHsKKyAgICBXVEZfTUFLRV9O
T05DT1BZQUJMRShTY29wZWRQaXhlbFN0b3JhZ2VNb2RlKTsKK3B1YmxpYzoKKyAgICBleHBsaWNp
dCBTY29wZWRQaXhlbFN0b3JhZ2VNb2RlKEdMZW51bSBuYW1lLCBib29sIGNvbmRpdGlvbiA9IHRy
dWUpCisgICAgICAgIDogbV9uYW1lKGNvbmRpdGlvbiA/IG5hbWUgOiAwKQorICAgIHsKKyAgICAg
ICAgaWYgKG1fbmFtZSkKKyAgICAgICAgICAgIGdsOjpHZXRJbnRlZ2VydihtX25hbWUsICZtX29y
aWdpbmFsVmFsdWUpOworICAgIH0KKyAgICBTY29wZWRQaXhlbFN0b3JhZ2VNb2RlKEdMZW51bSBu
YW1lLCBHTGludCB2YWx1ZSwgYm9vbCBjb25kaXRpb24gPSB0cnVlKQorICAgICAgICA6IG1fbmFt
ZShjb25kaXRpb24gPyBuYW1lIDogMCkKKyAgICB7CisgICAgICAgIGlmIChtX25hbWUpIHsKKyAg
ICAgICAgICAgIGdsOjpHZXRJbnRlZ2VydihtX25hbWUsICZtX29yaWdpbmFsVmFsdWUpOworICAg
ICAgICAgICAgcGl4ZWxTdG9yZSh2YWx1ZSk7CisgICAgICAgIH0KKyAgICB9CisgICAgflNjb3Bl
ZFBpeGVsU3RvcmFnZU1vZGUoKQorICAgIHsKKyAgICAgICAgaWYgKG1fbmFtZSAmJiBtX3ZhbHVl
Q2hhbmdlZCkKKyAgICAgICAgICAgIGdsOjpQaXhlbFN0b3JlaShtX25hbWUsIG1fb3JpZ2luYWxW
YWx1ZSk7CisgICAgfQorICAgIHZvaWQgcGl4ZWxTdG9yZShHTGludCB2YWx1ZSkKKyAgICB7Cisg
ICAgICAgIEFTU0VSVChtX25hbWUpOworICAgICAgICBpZiAoIW1fdmFsdWVDaGFuZ2VkICYmIG1f
b3JpZ2luYWxWYWx1ZSA9PSB2YWx1ZSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgZ2w6
OlBpeGVsU3RvcmVpKG1fbmFtZSwgdmFsdWUpOworICAgICAgICBtX3ZhbHVlQ2hhbmdlZCA9IG1f
b3JpZ2luYWxWYWx1ZSAhPSB2YWx1ZTsKKyAgICB9CisgICAgb3BlcmF0b3IgR0xpbnQoKSBjb25z
dAorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fbmFtZSAmJiAhbV92YWx1ZUNoYW5nZWQpOworICAg
ICAgICByZXR1cm4gbV9vcmlnaW5hbFZhbHVlOworICAgIH0KK3ByaXZhdGU6CisgICAgY29uc3Qg
R0xlbnVtIG1fbmFtZTsKKyAgICBib29sIG1fdmFsdWVDaGFuZ2VkIHsgZmFsc2UgfTsKKyAgICBH
TGludCBtX29yaWdpbmFsVmFsdWUgeyAwIH07Cit9OworCitjbGFzcyBTY29wZWRUZXh0dXJlIHsK
KyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTY29wZWRUZXh0dXJlKTsKK3B1YmxpYzoKKyAgICBT
Y29wZWRUZXh0dXJlKCkKKyAgICB7CisgICAgICAgIGdsOjpHZW5UZXh0dXJlcygxLCAmbV9vYmpl
Y3QpOworICAgIH0KKyAgICB+U2NvcGVkVGV4dHVyZSgpCisgICAgeworICAgICAgICBnbDo6RGVs
ZXRlVGV4dHVyZXMoMSwgJm1fb2JqZWN0KTsKKyAgICB9CisgICAgb3BlcmF0b3IgR0x1aW50KCkg
Y29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX29iamVjdDsKKyAgICB9Citwcml2YXRlOgor
ICAgIEdMdWludCBtX29iamVjdCB7IDB1IH07Cit9OworCitjbGFzcyBTY29wZWRGcmFtZWJ1ZmZl
ciB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU2NvcGVkRnJhbWVidWZmZXIpOworcHVibGlj
OgorICAgIFNjb3BlZEZyYW1lYnVmZmVyKCkKKyAgICB7CisgICAgICAgIGdsOjpHZW5GcmFtZWJ1
ZmZlcnMoMSwgJm1fb2JqZWN0KTsKKyAgICB9CisgICAgflNjb3BlZEZyYW1lYnVmZmVyKCkKKyAg
ICB7CisgICAgICAgIGdsOjpEZWxldGVGcmFtZWJ1ZmZlcnMoMSwgJm1fb2JqZWN0KTsKKyAgICB9
CisgICAgb3BlcmF0b3IgR0x1aW50KCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX29i
amVjdDsKKyAgICB9Citwcml2YXRlOgorICAgIEdMdWludCBtX29iamVjdCB7IDAgfTsKK307CisK
K2NsYXNzIFNjb3BlZEdMRmVuY2UgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFNjb3BlZEdM
RmVuY2UpOworcHVibGljOgorICAgIFNjb3BlZEdMRmVuY2UoKSA9IGRlZmF1bHQ7CisgICAgU2Nv
cGVkR0xGZW5jZShTY29wZWRHTEZlbmNlJiYgb3RoZXIpCisgICAgICAgIDogbV9vYmplY3Qoc3Rk
OjpleGNoYW5nZShvdGhlci5tX29iamVjdCwgeyB9KSkKKyAgICB7CisgICAgfQorICAgIH5TY29w
ZWRHTEZlbmNlKCkgeyByZXNldCgpOyB9CisgICAgU2NvcGVkR0xGZW5jZSYgb3BlcmF0b3I9KFNj
b3BlZEdMRmVuY2UmJiBvdGhlcikKKyAgICB7CisgICAgICAgIGlmICh0aGlzICE9ICZvdGhlcikg
eworICAgICAgICAgICAgcmVzZXQoKTsKKyAgICAgICAgICAgIG1fb2JqZWN0ID0gc3RkOjpleGNo
YW5nZShvdGhlci5tX29iamVjdCwgeyB9KTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gKnRo
aXM7CisgICAgfQorICAgIHZvaWQgcmVzZXQoKQorICAgIHsKKyAgICAgICAgaWYgKG1fb2JqZWN0
KSB7CisgICAgICAgICAgICBnbDo6RGVsZXRlU3luYyhtX29iamVjdCk7CisgICAgICAgICAgICBt
X29iamVjdCA9IHsgfTsKKyAgICAgICAgfQorICAgIH0KKyAgICB2b2lkIGFiYW5kb24oKSB7IG1f
b2JqZWN0ID0geyB9OyB9CisgICAgdm9pZCBmZW5jZVN5bmMoKQorICAgIHsKKyAgICAgICAgcmVz
ZXQoKTsKKyAgICAgICAgbV9vYmplY3QgPSBnbDo6RmVuY2VTeW5jKEdMX1NZTkNfR1BVX0NPTU1B
TkRTX0NPTVBMRVRFLCAwKTsKKyAgICB9CisgICAgb3BlcmF0b3IgR0xzeW5jKCkgY29uc3QgeyBy
ZXR1cm4gbV9vYmplY3Q7IH0KKyAgICBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gbV9v
YmplY3Q7IH0KK3ByaXZhdGU6CisgICAgR0xzeW5jIG1fb2JqZWN0IHsgfTsKK307CisKK2Jvb2wg
cGxhdGZvcm1Jc0FOR0xFQXZhaWxhYmxlKCk7CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFO
R0xFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNz
Q29udGV4dEdMQU5HTEUuY3BwCmluZGV4IGMyY2ZhNWRjMmY3NzVhZTQ4NGE5NGY4OWY2ZTRkZjcx
YzliZjE4OTcuLjE1MjMxM2E1YjNkZTQ2Mjg3YTg1YjQ5ZTc2ZjNhYjBiMjI4ODAyZTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29u
dGV4dEdMQU5HTEUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Fu
Z2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwCkBAIC0zMCw4ICszMCw4IEBACiAjaW5jbHVk
ZSAiR3JhcGhpY3NDb250ZXh0R0wuaCIKIAogI2luY2x1ZGUgIkFOR0xFSGVhZGVycy5oIgorI2lu
Y2x1ZGUgIkFOR0xFVXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAiRXh0ZW5zaW9uc0dMQU5HTEUuaCIK
LSNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRHTEFOR0xFVXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAi
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaCIKICNpbmNsdWRlICJJbWFnZUJ1ZmZlci5oIgogI2lu
Y2x1ZGUgIkludFJlY3QuaCIKQEAgLTc1LDYgKzc1LDQ5IEBAIHN0YXRpYyB2b2lkIHdpcGVBbHBo
YUNoYW5uZWxGcm9tUGl4ZWxzKGludCB3aWR0aCwgaW50IGhlaWdodCwgdW5zaWduZWQgY2hhciog
cGl4CiB9CiAjZW5kaWYKIAorYm9vbCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVsZWFzZVJl
c291cmNlcyhSZWxlYXNlUmVzb3VyY2VzQmVoYXZpb3IgcmVsZWFzZUJlaGF2aW9yKQoreworICAg
IHBsYXRmb3JtUmVsZWFzZVJlc291cmNlcygpOworCisgICAgaWYgKCFwbGF0Zm9ybUlzQU5HTEVB
dmFpbGFibGUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gVW5zZXQgdGhlIEVH
TCBjdXJyZW50IGNvbnRleHQsIHNpbmNlIHRoZSBuZXh0IGFjY2VzcyBtaWdodCBiZSBmcm9tIGFu
b3RoZXIgdGhyZWFkLCBhbmQgdGhlCisgICAgLy8gY29udGV4dCBjYW5ub3QgYmUgY3VycmVudCBv
biBtdWx0aXBsZSB0aHJlYWRzLgorICAgIGlmIChyZWxlYXNlQmVoYXZpb3IgPT0gUmVsZWFzZVJl
c291cmNlc0JlaGF2aW9yOjpSZWxlYXNlQ3VycmVudENvbnRleHQpIHsKKyAgICAgICAgaWYgKEVH
TF9HZXRDdXJyZW50Q29udGV4dCgpID09IEVHTF9OT19DT05URVhUKQorICAgICAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgICAgIC8vIEF0IHRoZSB0aW1lIG9mIHdyaXRpbmcsIEFOR0xFIGRvZXMg
bm90IGZsdXNoIG9uIE1ha2VDdXJyZW50LiBTaW5jZSB3ZSBhcmUKKyAgICAgICAgLy8gcG90ZW50
aWFsbHkgc3dpdGNoaW5nIHRocmVhZHMsIHdlIHNob3VsZCBmbHVzaC4KKyAgICAgICAgLy8gTm90
ZTogSGVyZSB3ZSBhc3N1bWUgYWxzbyB0aGF0IEFOR0xFIGhhcyBvbmx5IG9uZSBwbGF0Zm9ybSBj
b250ZXh0IC0tIG90aGVyd2lzZQorICAgICAgICAvLyB3ZSB3b3VsZCBuZWVkIHRvIGZsdXNoIGVh
Y2ggRUdMIGNvbnRleHQgdGhhdCBoYXMgYmVlbiB1c2VkLgorICAgICAgICBnbDo6Rmx1c2goKTsK
KyAgICAgICAgRUdMRGlzcGxheSBkaXNwbGF5ID0gRUdMX0dldERpc3BsYXkoRUdMX0RFRkFVTFRf
RElTUExBWSk7CisgICAgICAgIGlmIChkaXNwbGF5ID09IEVHTF9OT19ESVNQTEFZKQorICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIHJldHVybiBFR0xfTWFrZUN1cnJlbnQoZGlzcGxh
eSwgRUdMX05PX1NVUkZBQ0UsIEVHTF9OT19TVVJGQUNFLCBFR0xfTk9fQ09OVEVYVCk7CisgICAg
fQorICAgIGlmIChyZWxlYXNlQmVoYXZpb3IgPT0gUmVsZWFzZVJlc291cmNlc0JlaGF2aW9yOjpU
ZXJtaW5hdGVBbmRSZWxlYXNlVGhyZWFkUmVzb3VyY2VzKSB7CisgICAgICAgIEVHTERpc3BsYXkg
ZGlzcGxheSA9IEVHTF9HZXREaXNwbGF5KEVHTF9ERUZBVUxUX0RJU1BMQVkpOworICAgICAgICBp
ZiAoZGlzcGxheSAhPSBFR0xfTk9fRElTUExBWSkgeworICAgICAgICAgICAgaWYgKEVHTF9HZXRD
dXJyZW50Q29udGV4dCgpICE9IEVHTF9OT19DT05URVhUKSB7CisgICAgICAgICAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7IC8vIEFsbCByZXNvdXJjZXMgbXVzdCBoYXZlIGJlZW4gZGVzdHJv
eWVkLgorICAgICAgICAgICAgICAgIEVHTF9NYWtlQ3VycmVudChkaXNwbGF5LCBFR0xfTk9fU1VS
RkFDRSwgRUdMX05PX1NVUkZBQ0UsIEVHTF9OT19DT05URVhUKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIEVHTF9UZXJtaW5hdGUoZGlzcGxheSk7CisgICAgICAgIH0KKyAgICB9CisgICAg
Ly8gQ2FsbGVkIHdoZW4gd2UgZG8gbm90IGtub3cgaWYgd2Ugd2lsbCBldmVyIHNlZSBhbm90aGVy
IGNhbGwgZnJvbSB0aGlzIHRocmVhZCBhZ2Fpbi4KKyAgICAvLyBVbnNldCB0aGUgRUdMIGN1cnJl
bnQgY29udGV4dCBieSByZWxlYXNpbmcgd2hvbGUgRUdMIHRocmVhZCBzdGF0ZS4KKyAgICByZXR1
cm4gRUdMX1JlbGVhc2VUaHJlYWQoKTsKK30KKworI2lmICFQTEFURk9STShDT0NPQSkKK3ZvaWQg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnBsYXRmb3JtUmVsZWFzZVJlc291cmNlcygpCit7Cit9
CisjZW5kaWYKKwogc3RkOjpvcHRpb25hbDxQaXhlbEJ1ZmZlcj4gR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OnJlYWRQaXhlbHNGb3JQYWludFJlc3VsdHMoKQogewogICAgIFBpeGVsQnVmZmVyRm9y
bWF0IGZvcm1hdCB7IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZCwgUGl4
ZWxGb3JtYXQ6OlJHQkE4LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250
ZXh0R0xBTkdMRUVHTFV0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFRUdMVXRpbGl0aWVzLmNwcApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjViZjgzN2QyNWU0M2QwNjU4ZDZiNjg1MWRkNDhhMjE5
ODY5NmY3Yi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFO
R0xFRUdMVXRpbGl0aWVzLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDkxICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
LSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmln
LmgiCi0jaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0R0xBTkdMRUVHTFV0aWxpdGllcy5oIgotCi0j
aW5jbHVkZSAiQU5HTEVIZWFkZXJzLmgiCi0jaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KLQot
I2lmIEVOQUJMRShXRUJHTCkgJiYgVVNFKEFOR0xFKQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0K
LXN0YXRpYyB1bnNpZ25lZCBkZWZhdWx0RGlzcGxheVJlZkNvdW50Owotc3RhdGljIHZvaWQqIGRl
ZmF1bHREaXNwbGF5ID0gbnVsbHB0cjsKLQotc3RhdGljIHZvaWQgcmVmRGVmYXVsdERpc3BsYXko
dm9pZCogZGlzcGxheSkKLXsKLSAgICBBU1NFUlQoZGlzcGxheSAhPSBudWxscHRyKTsKLSAgICBB
U1NFUlQoZGVmYXVsdERpc3BsYXkgPT0gZGlzcGxheSB8fCAoIWRlZmF1bHREaXNwbGF5ICYmICFk
ZWZhdWx0RGlzcGxheVJlZkNvdW50KSk7Ci0gICAgZGVmYXVsdERpc3BsYXlSZWZDb3VudCsrOwot
ICAgIGRlZmF1bHREaXNwbGF5ID0gZGlzcGxheTsKLX0KLQotc3RhdGljIHZvaWQgdW5yZWZEZWZh
dWx0RGlzcGxheUlmTmVlZGVkKHZvaWQqIGRpc3BsYXkpCi17Ci0gICAgaWYgKCFkaXNwbGF5KQot
ICAgICAgICByZXR1cm47Ci0gICAgQVNTRVJUKGRlZmF1bHREaXNwbGF5ID09IGRpc3BsYXkpOwot
ICAgIEFTU0VSVChkZWZhdWx0RGlzcGxheVJlZkNvdW50KTsKLSAgICBkZWZhdWx0RGlzcGxheVJl
ZkNvdW50LS07Ci19Ci0KLVNjb3BlZEVHTERlZmF1bHREaXNwbGF5JiBTY29wZWRFR0xEZWZhdWx0
RGlzcGxheTo6b3BlcmF0b3I9KFNjb3BlZEVHTERlZmF1bHREaXNwbGF5JiYgb3RoZXIpCi17Ci0g
ICAgaWYgKHRoaXMgIT0gJm90aGVyKSB7Ci0gICAgICAgIHVucmVmRGVmYXVsdERpc3BsYXlJZk5l
ZWRlZChtX2Rpc3BsYXkpOwotICAgICAgICBtX2Rpc3BsYXkgPSBzdGQ6OmV4Y2hhbmdlKG90aGVy
Lm1fZGlzcGxheSwgbnVsbHB0cik7Ci0gICAgfQotICAgIHJldHVybiAqdGhpczsKLX0KLQotU2Nv
cGVkRUdMRGVmYXVsdERpc3BsYXk6OlNjb3BlZEVHTERlZmF1bHREaXNwbGF5KHZvaWQqIGRpc3Bs
YXkpCi0gICAgOiBtX2Rpc3BsYXkoZGlzcGxheSkKLXsKLSAgICByZWZEZWZhdWx0RGlzcGxheSht
X2Rpc3BsYXkpOwotfQotCi1TY29wZWRFR0xEZWZhdWx0RGlzcGxheTo6flNjb3BlZEVHTERlZmF1
bHREaXNwbGF5KCkKLXsKLSAgICB1bnJlZkRlZmF1bHREaXNwbGF5SWZOZWVkZWQobV9kaXNwbGF5
KTsKLX0KLQotdm9pZCBTY29wZWRFR0xEZWZhdWx0RGlzcGxheTo6cmVsZWFzZUFsbFJlc291cmNl
c0lmVW51c2VkKCkKLXsKLSAgICBpZiAoZGVmYXVsdERpc3BsYXlSZWZDb3VudCkKLSAgICAgICAg
cmV0dXJuOwotICAgIGlmIChkZWZhdWx0RGlzcGxheSA9PSBudWxscHRyKQotICAgICAgICByZXR1
cm47Ci0gICAgYm9vbCByZXN1bHQgPSBFR0xfVGVybWluYXRlKGRlZmF1bHREaXNwbGF5KTsKLSAg
ICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKLSAgICByZXN1bHQgPSBFR0xfUmVsZWFz
ZVRocmVhZCgpOwotICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOwotICAgIGRlZmF1
bHREaXNwbGF5ID0gbnVsbHB0cjsKLX0KLQotfQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEVF
R0xVdGlsaXRpZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dy
YXBoaWNzQ29udGV4dEdMQU5HTEVFR0xVdGlsaXRpZXMuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggOTQ0MjA1MjBiZGU4YmEyZWU4NWQ2ODgyZjY1OGQ0NTgyZGJjZWVhMC4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFRUdMVXRpbGl0aWVz
LmgKKysrIC9kZXYvbnVsbApAQCAtMSw2MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
LSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR0wp
ICYmIFVTRShBTkdMRSkKLQotI2luY2x1ZGUgPGFsZ29yaXRobT4KLSNpbmNsdWRlIDx3dGYvTm9u
Y29weWFibGUuaD4KLQotLy8gQ3VycmVudGx5IHRoaXMgbm90IHVzaW5nIEFOR0xFIGhlYWRlcnMg
c2luY2UgdGhpcyBpcyBleHBvcnRlZCBoZWFkZXIgYW5kIHdlIGRvIG5vdCBleHBvcnQgQU5HTEUg
aGVhZGVycy4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBTY29wZWRFR0xEZWZhdWx0
RGlzcGxheSB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU2NvcGVkRUdMRGVmYXVsdERpc3Bs
YXkpOwotcHVibGljOgotICAgIHN0YXRpYyBTY29wZWRFR0xEZWZhdWx0RGlzcGxheSBhZG9wdElu
aXRpYWxpemVkRGlzcGxheSh2b2lkKiBkaXNwbGF5KQotICAgIHsKLSAgICAgICAgQVNTRVJUKGRp
c3BsYXkgIT0gbnVsbHB0cik7Ci0gICAgICAgIHJldHVybiBTY29wZWRFR0xEZWZhdWx0RGlzcGxh
eShkaXNwbGF5KTsKLSAgICB9Ci0gICAgU2NvcGVkRUdMRGVmYXVsdERpc3BsYXkoKSA9IGRlZmF1
bHQ7Ci0gICAgU2NvcGVkRUdMRGVmYXVsdERpc3BsYXkoU2NvcGVkRUdMRGVmYXVsdERpc3BsYXkm
JiBvdGhlcikKLSAgICAgICAgOiBtX2Rpc3BsYXkoc3RkOjpleGNoYW5nZShvdGhlci5tX2Rpc3Bs
YXksIG51bGxwdHIpKQotICAgIHsKLSAgICB9Ci0gICAgflNjb3BlZEVHTERlZmF1bHREaXNwbGF5
KCk7Ci0gICAgU2NvcGVkRUdMRGVmYXVsdERpc3BsYXkmIG9wZXJhdG9yPShTY29wZWRFR0xEZWZh
dWx0RGlzcGxheSYmKTsKLSAgICBvcGVyYXRvciB2b2lkKigpIGNvbnN0IHsgcmV0dXJuIG1fZGlz
cGxheTsgfQotICAgIG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiBtX2Rpc3BsYXkgIT0g
bnVsbHB0cjsgfQotICAgIHN0YXRpYyB2b2lkIHJlbGVhc2VBbGxSZXNvdXJjZXNJZlVudXNlZCgp
OwotcHJpdmF0ZToKLSAgICBTY29wZWRFR0xEZWZhdWx0RGlzcGxheSh2b2lkKik7Ci0gICAgdm9p
ZCogbV9kaXNwbGF5IHsgbnVsbHB0ciB9OwotfTsKLQotfQotCi0jZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdM
QU5HTEVVdGlsaXRpZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xl
L0dyYXBoaWNzQ29udGV4dEdMQU5HTEVVdGlsaXRpZXMuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggZGM3OWYxZTI0MjNmNTIxM2IwMzAxYzhjODBhNTRmNmJjYzQ0OWU5Mi4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFVXRpbGl0aWVzLmgK
KysrIC9kZXYvbnVsbApAQCAtMSwyNDUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAy
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0g
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQkdMKSAm
JiBVU0UoQU5HTEUpCi0KLSNpbmNsdWRlICJBTkdMRUhlYWRlcnMuaCIKLSNpbmNsdWRlICJHcmFw
aGljc1R5cGVzR0wuaCIKLSNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KLQotbmFtZXNwYWNl
IFdlYkNvcmUgewotCi1jbGFzcyBTY29wZWRSZXN0b3JlVGV4dHVyZUJpbmRpbmcgewotICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKFNjb3BlZFJlc3RvcmVUZXh0dXJlQmluZGluZyk7Ci1wdWJsaWM6
Ci0gICAgU2NvcGVkUmVzdG9yZVRleHR1cmVCaW5kaW5nKEdMZW51bSBiaW5kaW5nUG9pbnRRdWVy
eSwgR0xlbnVtIGJpbmRpbmdQb2ludCwgYm9vbCBjb25kaXRpb24gPSB0cnVlKQotICAgIHsKLSAg
ICAgICAgQVNTRVJUKGJpbmRpbmdQb2ludCAhPSBzdGF0aWNfY2FzdDxHTGVudW0+KDB1KSk7Ci0g
ICAgICAgIGlmIChjb25kaXRpb24pIHsKLSAgICAgICAgICAgIG1fYmluZGluZ1BvaW50ID0gYmlu
ZGluZ1BvaW50OwotICAgICAgICAgICAgZ2w6OkdldEludGVnZXJ2KGJpbmRpbmdQb2ludFF1ZXJ5
LCByZWludGVycHJldF9jYXN0PEdMaW50Kj4oJm1fYmluZGluZ1ZhbHVlKSk7Ci0gICAgICAgIH0K
LSAgICB9Ci0KLSAgICB+U2NvcGVkUmVzdG9yZVRleHR1cmVCaW5kaW5nKCkKLSAgICB7Ci0gICAg
ICAgIGlmIChtX2JpbmRpbmdQb2ludCkKLSAgICAgICAgICAgIGdsOjpCaW5kVGV4dHVyZShtX2Jp
bmRpbmdQb2ludCwgbV9iaW5kaW5nVmFsdWUpOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBHTGVu
dW0gbV9iaW5kaW5nUG9pbnQgeyAwIH07Ci0gICAgR0x1aW50IG1fYmluZGluZ1ZhbHVlIHsgMHUg
fTsKLX07Ci0KLQotY2xhc3MgU2NvcGVkQnVmZmVyQmluZGluZyB7Ci0gICAgV1RGX01BS0VfTk9O
Q09QWUFCTEUoU2NvcGVkQnVmZmVyQmluZGluZyk7Ci1wdWJsaWM6Ci0gICAgU2NvcGVkQnVmZmVy
QmluZGluZyhHTGVudW0gYmluZGluZ1BvaW50LCBHTHVpbnQgYmluZGluZ1ZhbHVlLCBib29sIGNv
bmRpdGlvbiA9IHRydWUpCi0gICAgewotICAgICAgICBpZiAoIWNvbmRpdGlvbikKLSAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgZ2w6OkdldEludGVnZXJ2KHF1ZXJ5KGJpbmRpbmdQb2ludCks
IHJlaW50ZXJwcmV0X2Nhc3Q8R0xpbnQqPigmbV9iaW5kaW5nVmFsdWUpKTsKLSAgICAgICAgaWYg
KGJpbmRpbmdWYWx1ZSA9PSBtX2JpbmRpbmdWYWx1ZSkKLSAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgbV9iaW5kaW5nUG9pbnQgPSBiaW5kaW5nUG9pbnQ7Ci0gICAgICAgIGdsOjpCaW5kQnVm
ZmVyKG1fYmluZGluZ1BvaW50LCBiaW5kaW5nVmFsdWUpOwotICAgIH0KLQotICAgIH5TY29wZWRC
dWZmZXJCaW5kaW5nKCkKLSAgICB7Ci0gICAgICAgIGlmIChtX2JpbmRpbmdQb2ludCkKLSAgICAg
ICAgICAgIGdsOjpCaW5kQnVmZmVyKG1fYmluZGluZ1BvaW50LCBtX2JpbmRpbmdWYWx1ZSk7Ci0g
ICAgfQotCi1wcml2YXRlOgotICAgIHN0YXRpYyBjb25zdGV4cHIgR0xlbnVtIHF1ZXJ5KEdMZW51
bSBiaW5kaW5nUG9pbnQpCi0gICAgewotICAgICAgICBpZiAoYmluZGluZ1BvaW50ID09IEdMX1BJ
WEVMX1BBQ0tfQlVGRkVSKQotICAgICAgICAgICAgcmV0dXJuIEdMX1BJWEVMX1BBQ0tfQlVGRkVS
X0JJTkRJTkc7Ci0gICAgICAgIEFTU0VSVChiaW5kaW5nUG9pbnQgPT0gR0xfUElYRUxfVU5QQUNL
X0JVRkZFUik7Ci0gICAgICAgIHJldHVybiBHTF9QSVhFTF9VTlBBQ0tfQlVGRkVSX0JJTkRJTkc7
Ci0gICAgfQotICAgIEdMaW50IG1fYmluZGluZ1BvaW50IHsgMCB9OwotICAgIEdMdWludCBtX2Jp
bmRpbmdWYWx1ZSB7IDB1IH07Ci19OwotY2xhc3MgU2NvcGVkUmVzdG9yZVJlYWRGcmFtZWJ1ZmZl
ckJpbmRpbmcgewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFNjb3BlZFJlc3RvcmVSZWFkRnJh
bWVidWZmZXJCaW5kaW5nKTsKLXB1YmxpYzoKLSAgICBTY29wZWRSZXN0b3JlUmVhZEZyYW1lYnVm
ZmVyQmluZGluZyhib29sIGlzRm9yV2ViR0wyLCBHTHVpbnQgcmVzdG9yZVZhbHVlKQotICAgICAg
ICA6IG1fZnJhbWVidWZmZXJUYXJnZXQoaXNGb3JXZWJHTDIgPyBHTF9SRUFEX0ZSQU1FQlVGRkVS
IDogR0xfRlJBTUVCVUZGRVIpCi0gICAgICAgICwgbV9iaW5kaW5nVmFsdWUocmVzdG9yZVZhbHVl
KQotICAgIHsKLSAgICB9Ci0gICAgU2NvcGVkUmVzdG9yZVJlYWRGcmFtZWJ1ZmZlckJpbmRpbmco
Ym9vbCBpc0ZvcldlYkdMMiwgR0x1aW50IHJlc3RvcmVWYWx1ZSwgR0x1aW50IHZhbHVlKQotICAg
ICAgICA6IG1fZnJhbWVidWZmZXJUYXJnZXQoaXNGb3JXZWJHTDIgPyBHTF9SRUFEX0ZSQU1FQlVG
RkVSIDogR0xfRlJBTUVCVUZGRVIpCi0gICAgICAgICwgbV9iaW5kaW5nVmFsdWUocmVzdG9yZVZh
bHVlKQotICAgIHsKLSAgICAgICAgYmluZEZyYW1lYnVmZmVyKHZhbHVlKTsKLSAgICB9Ci0gICAg
dm9pZCBtYXJrQmluZGluZ0NoYW5nZWQoKQotICAgIHsKLSAgICAgICAgbV9iaW5kaW5nQ2hhbmdl
ZCA9IHRydWU7Ci0gICAgfQotICAgIHZvaWQgYmluZEZyYW1lYnVmZmVyKEdMdWludCBiaW5kaW5n
VmFsdWUpCi0gICAgewotICAgICAgICBpZiAoIW1fYmluZGluZ0NoYW5nZWQgJiYgbV9iaW5kaW5n
VmFsdWUgPT0gYmluZGluZ1ZhbHVlKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBnbDo6
QmluZEZyYW1lYnVmZmVyKG1fZnJhbWVidWZmZXJUYXJnZXQsIGJpbmRpbmdWYWx1ZSk7Ci0gICAg
ICAgIG1fYmluZGluZ0NoYW5nZWQgPSBtX2JpbmRpbmdWYWx1ZSAhPSBiaW5kaW5nVmFsdWU7Ci0g
ICAgfQotICAgIEdMdWludCBmcmFtZWJ1ZmZlclRhcmdldCgpIGNvbnN0IHsgcmV0dXJuIG1fZnJh
bWVidWZmZXJUYXJnZXQ7IH0KLSAgICB+U2NvcGVkUmVzdG9yZVJlYWRGcmFtZWJ1ZmZlckJpbmRp
bmcoKQotICAgIHsKLSAgICAgICAgaWYgKG1fYmluZGluZ0NoYW5nZWQpCi0gICAgICAgICAgICBn
bDo6QmluZEZyYW1lYnVmZmVyKG1fZnJhbWVidWZmZXJUYXJnZXQsIG1fYmluZGluZ1ZhbHVlKTsK
LSAgICB9Ci1wcml2YXRlOgotICAgIGNvbnN0IEdMZW51bSBtX2ZyYW1lYnVmZmVyVGFyZ2V0Owot
ICAgIEdMdWludCBtX2JpbmRpbmdWYWx1ZSB7IDB1IH07Ci0gICAgYm9vbCBtX2JpbmRpbmdDaGFu
Z2VkIHsgZmFsc2UgfTsKLX07Ci0KLWNsYXNzIFNjb3BlZFBpeGVsU3RvcmFnZU1vZGUgewotICAg
IFdURl9NQUtFX05PTkNPUFlBQkxFKFNjb3BlZFBpeGVsU3RvcmFnZU1vZGUpOwotcHVibGljOgot
ICAgIGV4cGxpY2l0IFNjb3BlZFBpeGVsU3RvcmFnZU1vZGUoR0xlbnVtIG5hbWUsIGJvb2wgY29u
ZGl0aW9uID0gdHJ1ZSkKLSAgICAgICAgOiBtX25hbWUoY29uZGl0aW9uID8gbmFtZSA6IDApCi0g
ICAgewotICAgICAgICBpZiAobV9uYW1lKQotICAgICAgICAgICAgZ2w6OkdldEludGVnZXJ2KG1f
bmFtZSwgJm1fb3JpZ2luYWxWYWx1ZSk7Ci0gICAgfQotICAgIFNjb3BlZFBpeGVsU3RvcmFnZU1v
ZGUoR0xlbnVtIG5hbWUsIEdMaW50IHZhbHVlLCBib29sIGNvbmRpdGlvbiA9IHRydWUpCi0gICAg
ICAgIDogbV9uYW1lKGNvbmRpdGlvbiA/IG5hbWUgOiAwKQotICAgIHsKLSAgICAgICAgaWYgKG1f
bmFtZSkgewotICAgICAgICAgICAgZ2w6OkdldEludGVnZXJ2KG1fbmFtZSwgJm1fb3JpZ2luYWxW
YWx1ZSk7Ci0gICAgICAgICAgICBwaXhlbFN0b3JlKHZhbHVlKTsKLSAgICAgICAgfQotICAgIH0K
LSAgICB+U2NvcGVkUGl4ZWxTdG9yYWdlTW9kZSgpCi0gICAgewotICAgICAgICBpZiAobV9uYW1l
ICYmIG1fdmFsdWVDaGFuZ2VkKQotICAgICAgICAgICAgZ2w6OlBpeGVsU3RvcmVpKG1fbmFtZSwg
bV9vcmlnaW5hbFZhbHVlKTsKLSAgICB9Ci0gICAgdm9pZCBwaXhlbFN0b3JlKEdMaW50IHZhbHVl
KQotICAgIHsKLSAgICAgICAgQVNTRVJUKG1fbmFtZSk7Ci0gICAgICAgIGlmICghbV92YWx1ZUNo
YW5nZWQgJiYgbV9vcmlnaW5hbFZhbHVlID09IHZhbHVlKQotICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICBnbDo6UGl4ZWxTdG9yZWkobV9uYW1lLCB2YWx1ZSk7Ci0gICAgICAgIG1fdmFsdWVD
aGFuZ2VkID0gbV9vcmlnaW5hbFZhbHVlICE9IHZhbHVlOwotICAgIH0KLSAgICBvcGVyYXRvciBH
TGludCgpIGNvbnN0Ci0gICAgewotICAgICAgICBBU1NFUlQobV9uYW1lICYmICFtX3ZhbHVlQ2hh
bmdlZCk7Ci0gICAgICAgIHJldHVybiBtX29yaWdpbmFsVmFsdWU7Ci0gICAgfQotcHJpdmF0ZToK
LSAgICBjb25zdCBHTGVudW0gbV9uYW1lOwotICAgIGJvb2wgbV92YWx1ZUNoYW5nZWQgeyBmYWxz
ZSB9OwotICAgIEdMaW50IG1fb3JpZ2luYWxWYWx1ZSB7IDAgfTsKLX07Ci0KLWNsYXNzIFNjb3Bl
ZFRleHR1cmUgewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFNjb3BlZFRleHR1cmUpOwotcHVi
bGljOgotICAgIFNjb3BlZFRleHR1cmUoKQotICAgIHsKLSAgICAgICAgZ2w6OkdlblRleHR1cmVz
KDEsICZtX29iamVjdCk7Ci0gICAgfQotICAgIH5TY29wZWRUZXh0dXJlKCkKLSAgICB7Ci0gICAg
ICAgIGdsOjpEZWxldGVUZXh0dXJlcygxLCAmbV9vYmplY3QpOwotICAgIH0KLSAgICBvcGVyYXRv
ciBHTHVpbnQoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fb2JqZWN0OwotICAgIH0K
LXByaXZhdGU6Ci0gICAgR0x1aW50IG1fb2JqZWN0IHsgMHUgfTsKLX07Ci0KLWNsYXNzIFNjb3Bl
ZEZyYW1lYnVmZmVyIHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTY29wZWRGcmFtZWJ1ZmZl
cik7Ci1wdWJsaWM6Ci0gICAgU2NvcGVkRnJhbWVidWZmZXIoKQotICAgIHsKLSAgICAgICAgZ2w6
OkdlbkZyYW1lYnVmZmVycygxLCAmbV9vYmplY3QpOwotICAgIH0KLSAgICB+U2NvcGVkRnJhbWVi
dWZmZXIoKQotICAgIHsKLSAgICAgICAgZ2w6OkRlbGV0ZUZyYW1lYnVmZmVycygxLCAmbV9vYmpl
Y3QpOwotICAgIH0KLSAgICBvcGVyYXRvciBHTHVpbnQoKSBjb25zdAotICAgIHsKLSAgICAgICAg
cmV0dXJuIG1fb2JqZWN0OwotICAgIH0KLXByaXZhdGU6Ci0gICAgR0x1aW50IG1fb2JqZWN0IHsg
MCB9OwotfTsKLQotY2xhc3MgU2NvcGVkR0xGZW5jZSB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFC
TEUoU2NvcGVkR0xGZW5jZSk7Ci1wdWJsaWM6Ci0gICAgU2NvcGVkR0xGZW5jZSgpID0gZGVmYXVs
dDsKLSAgICBTY29wZWRHTEZlbmNlKFNjb3BlZEdMRmVuY2UmJiBvdGhlcikKLSAgICAgICAgOiBt
X29iamVjdChzdGQ6OmV4Y2hhbmdlKG90aGVyLm1fb2JqZWN0LCB7IH0pKQotICAgIHsKLSAgICB9
Ci0gICAgflNjb3BlZEdMRmVuY2UoKSB7IHJlc2V0KCk7IH0KLSAgICBTY29wZWRHTEZlbmNlJiBv
cGVyYXRvcj0oU2NvcGVkR0xGZW5jZSYmIG90aGVyKQotICAgIHsKLSAgICAgICAgaWYgKHRoaXMg
IT0gJm90aGVyKSB7Ci0gICAgICAgICAgICByZXNldCgpOwotICAgICAgICAgICAgbV9vYmplY3Qg
PSBzdGQ6OmV4Y2hhbmdlKG90aGVyLm1fb2JqZWN0LCB7IH0pOwotICAgICAgICB9Ci0gICAgICAg
IHJldHVybiAqdGhpczsKLSAgICB9Ci0gICAgdm9pZCByZXNldCgpCi0gICAgewotICAgICAgICBp
ZiAobV9vYmplY3QpIHsKLSAgICAgICAgICAgIGdsOjpEZWxldGVTeW5jKG1fb2JqZWN0KTsKLSAg
ICAgICAgICAgIG1fb2JqZWN0ID0geyB9OwotICAgICAgICB9Ci0gICAgfQotICAgIHZvaWQgYWJh
bmRvbigpIHsgbV9vYmplY3QgPSB7IH07IH0KLSAgICB2b2lkIGZlbmNlU3luYygpCi0gICAgewot
ICAgICAgICByZXNldCgpOwotICAgICAgICBtX29iamVjdCA9IGdsOjpGZW5jZVN5bmMoR0xfU1lO
Q19HUFVfQ09NTUFORFNfQ09NUExFVEUsIDApOwotICAgIH0KLSAgICBvcGVyYXRvciBHTHN5bmMo
KSBjb25zdCB7IHJldHVybiBtX29iamVjdDsgfQotICAgIG9wZXJhdG9yIGJvb2woKSBjb25zdCB7
IHJldHVybiBtX29iamVjdDsgfQotcHJpdmF0ZToKLSAgICBHTHN5bmMgbV9vYmplY3QgeyB9Owot
fTsKLQotfQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29h
Lm1tCmluZGV4IGYyNWIwOTg3ZDQ0OTQzNzM4MmQwODU3YmE0MDQ1YTIyYjRiZTgyYjguLmU0ZWUw
ODQ0NTc2N2RlNTc0ZmY0MzgxMmVmYTMwZjNiODhjYzlhNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29j
b2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbQpAQCAtMjgsOSArMjgsOSBAQAogI2lmIEVOQUJMRShX
RUJHTCkKICNpbXBvcnQgIkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgiCiAKKyNpbXBvcnQgIkFO
R0xFVXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJDVlV0aWxpdGllcy5oIgogI2ltcG9ydCAiRXh0ZW5z
aW9uc0dMQU5HTEUuaCIKLSNpbXBvcnQgIkdyYXBoaWNzQ29udGV4dEdMQU5HTEVVdGlsaXRpZXMu
aCIKICNpbXBvcnQgIkdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmgiCiAjaW1w
b3J0ICJHcmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFnZXIuaCIKICNpbXBvcnQgIkxvZ2dpbmcu
aCIKQEAgLTU5LDcgKzU5LDcgQEAgV1RGX1dFQUtfTElOS19GT1JDRV9JTVBPUlQoRUdMX0luaXRp
YWxpemUpOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBib29sIGlzQU5HTEVBdmFp
bGFibGUoKQorYm9vbCBwbGF0Zm9ybUlzQU5HTEVBdmFpbGFibGUoKQogewogICAgIHJldHVybiAh
IUVHTF9Jbml0aWFsaXplOwogfQpAQCAtMTE4LDExICsxMTgsMTEgQEAgc3RhdGljIGJvb2wgcGxh
dGZvcm1TdXBwb3J0c01ldGFsKGJvb2wgaXNXZWJHTDIpCiAgICAgcmV0dXJuIGZhbHNlOwogfQog
Ci1zdGF0aWMgU2NvcGVkRUdMRGVmYXVsdERpc3BsYXkgaW5pdGlhbGl6ZUVHTERpc3BsYXkoY29u
c3QgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRycykKK3N0YXRpYyBFR0xEaXNwbGF5
IGluaXRpYWxpemVFR0xEaXNwbGF5KGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYg
YXR0cnMpCiB7Ci0gICAgaWYgKCFpc0FOR0xFQXZhaWxhYmxlKCkpIHsKKyAgICBpZiAoIXBsYXRm
b3JtSXNBTkdMRUF2YWlsYWJsZSgpKSB7CiAgICAgICAgIFdURkxvZ0Fsd2F5cygiRmFpbGVkIHRv
IGxvYWQgQU5HTEUgc2hhcmVkIGxpYnJhcnkuIik7Ci0gICAgICAgIHJldHVybiB7IH07CisgICAg
ICAgIHJldHVybiBFR0xfTk9fRElTUExBWTsKICAgICB9CiAKICAgICBFR0xpbnQgbWFqb3JWZXJz
aW9uID0gMDsKQEAgLTE2NSw3ICsxNjUsNyBAQCBzdGF0aWMgU2NvcGVkRUdMRGVmYXVsdERpc3Bs
YXkgaW5pdGlhbGl6ZUVHTERpc3BsYXkoY29uc3QgR3JhcGhpY3NDb250ZXh0R0xBdHRyaQogCiAg
ICAgaWYgKEVHTF9Jbml0aWFsaXplKGRpc3BsYXksICZtYWpvclZlcnNpb24sICZtaW5vclZlcnNp
b24pID09IEVHTF9GQUxTRSkgewogICAgICAgICBMT0coV2ViR0wsICJFR0xEaXNwbGF5IEluaXRp
YWxpemF0aW9uIGZhaWxlZC4iKTsKLSAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAgICAgcmV0dXJu
IEVHTF9OT19ESVNQTEFZOwogICAgIH0KICAgICBMT0coV2ViR0wsICJBTkdMRSBpbml0aWFsaXNl
ZCBNYWpvcjogJWQgTWlub3I6ICVkIiwgbWFqb3JWZXJzaW9uLCBtaW5vclZlcnNpb24pOwogICAg
IGlmIChzaG91bGRJbml0aWFsaXplV2l0aFZvbGF0aWxlQ29udGV4dFN1cHBvcnQpIHsKQEAgLTE3
NCw3ICsxNzQsNyBAQCBzdGF0aWMgU2NvcGVkRUdMRGVmYXVsdERpc3BsYXkgaW5pdGlhbGl6ZUVH
TERpc3BsYXkoY29uc3QgR3JhcGhpY3NDb250ZXh0R0xBdHRyaQogICAgICAgICBBU1NFUlQoY2hl
Y2tWb2xhdGlsZUNvbnRleHRTdXBwb3J0SWZEZXZpY2VFeGlzdHMoZGlzcGxheSwgIkVHTF9BTkdM
RV9wbGF0Zm9ybV9kZXZpY2VfY29udGV4dF92b2xhdGlsZV9lYWdsIiwgIkVHTF9BTkdMRV9kZXZp
Y2VfZWFnbCIsIEVHTF9FQUdMX0NPTlRFWFRfQU5HTEUpKTsKICAgICAgICAgQVNTRVJUKGNoZWNr
Vm9sYXRpbGVDb250ZXh0U3VwcG9ydElmRGV2aWNlRXhpc3RzKGRpc3BsYXksICJFR0xfQU5HTEVf
cGxhdGZvcm1fZGV2aWNlX2NvbnRleHRfdm9sYXRpbGVfY2dsIiwgIkVHTF9BTkdMRV9kZXZpY2Vf
Y2dsIiwgRUdMX0NHTF9DT05URVhUX0FOR0xFKSk7CiAgICAgfQotICAgIHJldHVybiBTY29wZWRF
R0xEZWZhdWx0RGlzcGxheTo6YWRvcHRJbml0aWFsaXplZERpc3BsYXkoZGlzcGxheSk7CisgICAg
cmV0dXJuIGRpc3BsYXk7CiB9CiAKIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzdGF0dXNDaGVja1Ro
cmVzaG9sZCA9IDU7CkBAIC01MzMsNDUgKzUzMyw2IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OmNsZWFyQ3VycmVudENvbnRleHQoKQogICAgIGN1cnJlbnRDb250ZXh0ID0gbnVsbHB0
cjsKIH0KIAotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi1ib29sIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpyZWxlYXNlQ3VycmVudENvbnRleHQoUmVsZWFzZUJlaGF2aW9yIHJlbGVhc2VCZWhh
dmlvcikKLXsKLSAgICBpZiAoIWlzQU5HTEVBdmFpbGFibGUoKSkKLSAgICAgICAgcmV0dXJuIHRy
dWU7Ci0KLSAgICAvLyBBdCB0aGUgbW9tZW50IHRoaXMgZnVuY3Rpb24gaXMgcmVsZXZhbnQgb25s
eSB3aGVuIHdlYiB0aHJlYWQgbG9jayBvd25zIHRoZSBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCBj
dXJyZW50IGNvbnRleHQuCi0gICAgQVNTRVJUKCFpc0N1cnJlbnRDb250ZXh0UHJlZGljdGFibGUo
KSk7Ci0KLSAgICBpZiAoIUVHTF9CaW5kQVBJKEVHTF9PUEVOR0xfRVNfQVBJKSkKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIGlmIChFR0xfR2V0Q3VycmVudENvbnRleHQoKSA9PSBFR0xfTk9f
Q09OVEVYVCkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICAvLyBBdCB0aGUgdGltZSBvZiB3
cml0aW5nLCBBTkdMRSBkb2VzIG5vdCBmbHVzaCBvbiBNYWtlQ3VycmVudC4gU2luY2Ugd2UgYXJl
Ci0gICAgLy8gcG90ZW50aWFsbHkgc3dpdGNoaW5nIHRocmVhZHMsIHdlIHNob3VsZCBmbHVzaC4K
LSAgICAvLyBOb3RlOiBIZXJlIHdlIGFzc3VtZSBhbHNvIHRoYXQgQU5HTEUgaGFzIG9ubHkgb25l
IHBsYXRmb3JtIGNvbnRleHQgLS0gb3RoZXJ3aXNlCi0gICAgLy8gd2Ugd291bGQgbmVlZCB0byBm
bHVzaCBlYWNoIEVHTCBjb250ZXh0IHRoYXQgaGFzIGJlZW4gdXNlZC4KLSAgICBnbDo6Rmx1c2go
KTsKLQotICAgIC8vIFVuc2V0IHRoZSBFR0wgY3VycmVudCBjb250ZXh0LCBzaW5jZSB0aGUgbmV4
dCBhY2Nlc3MgbWlnaHQgYmUgZnJvbSBhbm90aGVyIHRocmVhZCwgYW5kIHRoZQotICAgIC8vIGNv
bnRleHQgY2Fubm90IGJlIGN1cnJlbnQgb24gbXVsdGlwbGUgdGhyZWFkcy4KLQotICAgIGlmIChy
ZWxlYXNlQmVoYXZpb3IgPT0gUmVsZWFzZUJlaGF2aW9yOjpSZWxlYXNlVGhyZWFkUmVzb3VyY2Vz
KSB7Ci0gICAgICAgIC8vIENhbGxlZCB3aGVuIHdlIGRvIG5vdCBrbm93IGlmIHdlIHdpbGwgZXZl
ciBzZWUgYW5vdGhlciBjYWxsIGZyb20gdGhpcyB0aHJlYWQgYWdhaW4uCi0gICAgICAgIC8vIFVu
c2V0IHRoZSBFR0wgY3VycmVudCBjb250ZXh0IGJ5IHJlbGVhc2luZyB3aG9sZSBFR0wgdGhyZWFk
IHN0YXRlLgotICAgICAgICAvLyBUaGVvcmV0aWNhbGx5IFJlbGVhc2VUaHJlYWQgY2FuIHJlc2V0
IHRoZSBib3VuZCBBUEksIHNvIHRoZSByZXN0IG9mIHRoZSBjb2RlIG1lbnRpb25zIEJpbmRBUEkv
UXVlcnlBUEkuCi0gICAgICAgIHJldHVybiBFR0xfUmVsZWFzZVRocmVhZCgpOwotICAgIH0KLSAg
ICAvLyBPbiBXZWJLaXQgb3duZWQgdGhyZWFkcywgV2ViS2l0IGlzIGFibGUgdG8gY2hvb3NlIHRo
ZSB0aW1lIGZvciB0aGUgRUdMIGNsZWFudXAuCi0gICAgLy8gVGhpcyBpcyB3aHkgd2Ugb25seSB1
bnNldCB0aGUgY29udGV4dC4KLSAgICAvLyBOb3RlOiBBdCB0aGUgdGltZSBvZiB3cml0aW5nIHRo
ZSBFR0wgY2xlYW51cCBpcyBjaG9zZW4gdG8gYmUgbm90IGRvbmUgYXQgYWxsLgotICAgIEVHTERp
c3BsYXkgZGlzcGxheSA9IEVHTF9HZXREaXNwbGF5KEVHTF9ERUZBVUxUX0RJU1BMQVkpOwotICAg
IGlmIChkaXNwbGF5ID09IEVHTF9OT19ESVNQTEFZKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgcmV0dXJuIEVHTF9NYWtlQ3VycmVudChkaXNwbGF5LCBFR0xfTk9fU1VSRkFDRSwgRUdMX05P
X1NVUkZBQ0UsIEVHTF9OT19DT05URVhUKTsKLX0KLSNlbmRpZgotCiB2b2lkIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpjaGVja0dQVVN0YXR1cygpCiB7CiAgICAgaWYgKG1fZmFpbE5leHRTdGF0
dXNDaGVjaykgewpAQCAtODc3LDExICs4MzgsNiBAQCBzdGQ6Om9wdGlvbmFsPFBpeGVsQnVmZmVy
PiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZENvbXBvc2l0ZWRSZXN1bHRzKCkKICAgICBy
ZXR1cm4gcmVzdWx0OwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWxlYXNl
QWxsUmVzb3VyY2VzSWZVbnVzZWQoKQotewotICAgIFNjb3BlZEVHTERlZmF1bHREaXNwbGF5Ojpy
ZWxlYXNlQWxsUmVzb3VyY2VzSWZVbnVzZWQoKTsKLX0KLQogI2lmIEVOQUJMRShNRURJQV9TVFJF
QU0pCiBSZWZQdHI8TWVkaWFTYW1wbGU+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpwYWludENv
bXBvc2l0ZWRSZXN1bHRzVG9NZWRpYVNhbXBsZSgpCiB7CkBAIC04OTcsNiArODUzLDEyIEBAIFJl
ZlB0cjxNZWRpYVNhbXBsZT4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnBhaW50Q29tcG9zaXRl
ZFJlc3VsdHNUb01lZGlhU2FtcGxlCiAgICAgcmV0dXJuIE1lZGlhU2FtcGxlQVZGT2JqQzo6Y3Jl
YXRlSW1hZ2VTYW1wbGUoV1RGTW92ZSgqcGl4ZWxCdWZmZXIpLCBNZWRpYVNhbXBsZUFWRk9iakM6
OlZpZGVvUm90YXRpb246OlVwc2lkZURvd24sIHRydWUpOwogfQogI2VuZGlmCisKK3ZvaWQgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OnBsYXRmb3JtUmVsZWFzZVJlc291cmNlcygpCit7CisgICAg
Y3VycmVudENvbnRleHQgPSBudWxscHRyOworfQorCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoV0VC
R0wpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wv
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmNwcAppbmRleCBmOGIyMGFjNzZk
MWJkZTlmM2EyODYwYWI5YTJjNDQ5N2U1YjYyN2Y0Li4wM2NiMzBjYWY3MWZkZWU1MzE0NjUyYTI5
MzMzY2NlNTQyYTkzMWNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5jcHAK
QEAgLTc1LDYgKzc1LDE2IEBAIEdDR0xiaXRmaWVsZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
Z2V0QnVmZmVyc1RvQXV0b0NsZWFyKCkgY29uc3QKICAgICByZXR1cm4gbV9idWZmZXJzVG9BdXRv
Q2xlYXI7CiB9CiAKKyNpZiAhVVNFKEFOR0xFKQorYm9vbCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6cmVsZWFzZVJlc291cmNlcyhSZWxlYXNlUmVzb3VyY2VzQmVoYXZpb3IpCit7Cit9CisKK3Zv
aWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnBsYXRmb3JtUmVsZWFzZVJlc291cmNlcygpCit7
Cit9CisjZW5kaWYKKwogI2lmICFVU0UoQU5HTEUpCiBib29sIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjp0ZXhJbWFnZTJEUmVzb3VyY2VTYWZlKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZl
bCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhl
aWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NH
TGludCB1bnBhY2tBbGlnbm1lbnQpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5o
CmluZGV4IGZlNTlkZWIwOWQ4OGNlN2FkNThhZDUyMDkwYzRlNTYwNGEzN2IyMmUuLmZjMjYyOGJk
OGUzNDI3ZmJmYmE5NzE5ZTZiOTJiM2RhZGNmYmNlNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRl
eHRHTE9wZW5HTC5oCkBAIC0zNyw3ICszNyw2IEBACiAjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5o
PgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0jaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0R0xBTkdM
RUVHTFV0aWxpdGllcy5oIgogI2luY2x1ZGUgIklPU3VyZmFjZS5oIgogI2VuZGlmCiAKQEAgLTQ2
LDcgKzQ1LDcgQEAKICNlbmRpZgogCiAjaWYgVVNFKEFOR0xFKQotI2luY2x1ZGUgIkdyYXBoaWNz
Q29udGV4dEdMQU5HTEVVdGlsaXRpZXMuaCIKKyNpbmNsdWRlICJBTkdMRVV0aWxpdGllcy5oIgog
I2Vsc2UKICNpbmNsdWRlICJBTkdMRVdlYktpdEJyaWRnZS5oIgogI2luY2x1ZGUgIkV4dGVuc2lv
bnNHTE9wZW5HTENvbW1vbi5oIgpAQCAtMTE5LDE3ICsxMTgsMTYgQEAgcHVibGljOgogI2lmIFVT
RShBTkdMRSkKICAgICBzdGF0aWMgR0NHTGVudW0gZHJhd2luZ0J1ZmZlclRleHR1cmVUYXJnZXQo
KTsKICNlbmRpZgotCi0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBlbnVtIGNsYXNzIFJl
bGVhc2VCZWhhdmlvciB7Ci0gICAgICAgIFByZXNlcnZlVGhyZWFkUmVzb3VyY2VzLAotICAgICAg
ICBSZWxlYXNlVGhyZWFkUmVzb3VyY2VzCisgICAgZW51bSBjbGFzcyBSZWxlYXNlUmVzb3VyY2Vz
QmVoYXZpb3IgeworICAgICAgICAvLyBSZWxlYXNlcyBjdXJyZW50IGNvbnRleHQgYWZ0ZXIgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0wgY2FsbHMgZG9uZSBpbiB0aGUgdGhyZWFkLgorICAgICAgICBS
ZWxlYXNlQ3VycmVudENvbnRleHQsCisgICAgICAgIC8vIFJlbGVhc2VzIGFsbCB0aHJlYWQgcmVz
b3VyY2VzIGFmdGVyIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMIGNhbGxzIGRvbmUgaW4gdGhlIHRo
cmVhZC4KKyAgICAgICAgUmVsZWFzZVRocmVhZFJlc291cmNlcywKKyAgICAgICAgLy8gUmVsZWFz
ZXMgYWxsIGdsb2JhbCBzdGF0ZS4gU2hvdWxkIGJlIHVzZWQgb25seSBhZnRlciBhbGwgZGVwZW5k
aW5nIG9iamVjdHMgaGF2ZQorICAgICAgICAvLyBiZWVuIHJlbGVhc2VkLgorICAgICAgICBUZXJt
aW5hdGVBbmRSZWxlYXNlVGhyZWFkUmVzb3VyY2VzCiAgICAgfTsKLSAgICBzdGF0aWMgYm9vbCBy
ZWxlYXNlQ3VycmVudENvbnRleHQoUmVsZWFzZUJlaGF2aW9yKTsKLSNlbmRpZgotI2lmIFBMQVRG
T1JNKENPQ09BKQotICAgIHN0YXRpYyB2b2lkIHJlbGVhc2VBbGxSZXNvdXJjZXNJZlVudXNlZCgp
OwotI2VuZGlmCisgICAgc3RhdGljIGJvb2wgcmVsZWFzZVJlc291cmNlcyhSZWxlYXNlUmVzb3Vy
Y2VzQmVoYXZpb3IpOwogCiAgICAgLy8gV2l0aCBtdWx0aXNhbXBsaW5nIG9uLCBibGl0IGZyb20g
bXVsdGlzYW1wbGVGQk8gdG8gcmVndWxhciBGQk8uCiAgICAgdm9pZCBwcmVwYXJlVGV4dHVyZSgp
OwpAQCAtNTgyLDEyICs1ODAsMTUgQEAgcHJpdmF0ZToKICAgICAvLyBSZXR1cm5zIGZhbHNlIGlm
IGNvbnRleHQgc2hvdWxkIGJlIGxvc3QgZHVlIHRvIHRpbWVvdXQuCiAgICAgYm9vbCB3YWl0QW5k
VXBkYXRlT2xkZXN0RnJhbWUoKSBXQVJOX1VOVVNFRF9SRVRVUk47CiAjZW5kaWYKKyAgICAvLyBQ
bGF0Zm9ybSBzcGVjaWZpYyBiZWhhdmlvciBmb3IgcmVsZWFzZVJlc291cmNlcygpOworICAgIHN0
YXRpYyB2b2lkIHBsYXRmb3JtUmVsZWFzZVJlc291cmNlcygpOworCiAKICNpZiBQTEFURk9STShD
T0NPQSkKICAgICBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbiogbV9zd2FwQ2hh
aW4geyBudWxscHRyIH07CiAgICAgLy8gVE9ETzogdGhpcyBzaG91bGQgYmUgcmVtb3ZlZCBvbmNl
IHRoZSBjb250ZXh0IGRyYXdzIHRvIGEgaW1hZ2UgYnVmZmVyLiBTZWUgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxODE3OSAuCiAgICAgUmV0YWluUHRyPFdlYkdMTGF5
ZXI+IG1fd2ViR0xMYXllcjsKLSAgICBTY29wZWRFR0xEZWZhdWx0RGlzcGxheSBtX2Rpc3BsYXlP
Ymo7CisgICAgRUdMRGlzcGxheSBtX2Rpc3BsYXlPYmogeyBudWxscHRyIH07CiAgICAgUGxhdGZv
cm1HcmFwaGljc0NvbnRleHRHTCBtX2NvbnRleHRPYmogeyBudWxscHRyIH07CiAgICAgUGxhdGZv
cm1HcmFwaGljc0NvbnRleHRHTENvbmZpZyBtX2NvbmZpZ09iaiB7IG51bGxwdHIgfTsKICNlbmRp
ZiAvLyBQTEFURk9STShDT0NPQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2lvcy93YWsvV2ViQ29yZVRocmVhZC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93
YWsvV2ViQ29yZVRocmVhZC5tbQppbmRleCAwMDI2NjRlM2UxNjY5ZmYzMjhkYjliOTUyOTFhODhi
NTA0MTc5YzM4Li5lYTA4YmJlNDBmMWY2ZTE2Y2U3YmY0MGRiODVmYmViMTA4ZTZjYWU3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dlYkNvcmVUaHJlYWQubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkLm1tCkBA
IC03MCwxNyArNzAsMjAgQEAgbmFtZXNwYWNlIHsKIC8vIGFzIGFueSBjbGllbnQgdGhyZWFkIHRo
YXQgY2FsbHMgaW50byBXZWJLaXQuCiB2b2lkIFJlbGVhc2VXZWJUaHJlYWRHbG9iYWxTdGF0ZSgp
CiB7Ci0gICAgLy8gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wgY3VycmVudCBjb250ZXh0IGlzIG93
bmVkIGJ5IHRoZSB3ZWIgdGhyZWFkIGxvY2suIFJlbGVhc2UgdGhlIGNvbnRleHQKKyAgICAvLyBB
TkdMRSBtYWludGFpbnMgdGhyZWFkIGdsb2JhbCBzdGF0ZSBmb3IgaXRzIGN1cnJlbnQgY29udGV4
dC4KKyAgICAvLyBUaGlzIGlzIGNvbmNlcHR1YWxseSBvd25lZCBieSB0aGUgd2ViIHRocmVhZCBs
b2NrLiBSZWxlYXNlIHRoZSBjb250ZXh0CiAgICAgLy8gYmVmb3JlIHRoZSBsb2NrIGlzIHJlbGVh
c2VkLgogCiAgICAgLy8gSW4gc2luZ2xlLXRocmVhZGVkIGVudmlyb25tZW50cyB3ZSBkbyBub3Qg
bmVlZCB0byB1bnNldCB0aGUgY29udGV4dCwgYXMgdGhlcmUgc2hvdWxkIG5vdCBiZSBhY2Nlc3Mg
ZnJvbQogICAgIC8vIG11bHRpcGxlIHRocmVhZHMuCiAgICAgQVNTRVJUKFdlYlRocmVhZElzRW5h
YmxlZCgpKTsKLSAgICB1c2luZyBSZWxlYXNlQmVoYXZpb3IgPSBXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6UmVsZWFzZUJlaGF2aW9yOwotICAgIC8vIEZvciBub24td2ViIHRocmVh
ZHMsIHdlIGRvbid0IGtub3cgaWYgd2UgZXZlciBzZWUgYW5vdGhlciBjYWxsIGZyb20gdGhlIHRo
cmVhZC4KKyAgICB1c2luZyBSZWxlYXNlQmVoYXZpb3IgPSBXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6UmVzb3VyY2VSZWxlYXNlQmVoYXZpb3I7CisgICAgLy8gRm9yIHdlYiB0aHJl
YWQsIGp1c3QgcmVsZWFzZSB0aGUgY29udGV4dCBhcyB3ZSBrbm93IHdlIHdpbGwgc2VlIGNhbGxz
IHRvIGl0IGFnYWluLgorICAgIC8vIEZvciBub24td2ViIHRocmVhZHMsIGUuZy4gdGhpcmQtcGFy
dHkgY2xpZW50IHRocmVhZHMsIHdlIGRvbid0IGtub3cgaWYgd2UgZXZlciBzZWUgYW5vdGhlciBj
YWxsIGZyb20gdGhlCisgICAgLy8gdGhyZWFkLCBzbyB3ZSBhbHNvIHJlbGVhc2UgdGhlIHRocmVh
ZCByZXNvdXJjZXMuCiAgICAgUmVsZWFzZUJlaGF2aW9yIHJlbGVhc2VCZWhhdmlvciA9Ci0gICAg
ICAgIFdlYlRocmVhZElzQ3VycmVudCgpID8gUmVsZWFzZUJlaGF2aW9yOjpQcmVzZXJ2ZVRocmVh
ZFJlc291cmNlcyA6IFJlbGVhc2VCZWhhdmlvcjo6UmVsZWFzZVRocmVhZFJlc291cmNlczsKLSAg
ICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVsZWFzZUN1cnJlbnRDb250ZXh0
KHJlbGVhc2VCZWhhdmlvcik7CisgICAgICAgIFdlYlRocmVhZElzQ3VycmVudCgpID8gUmVsZWFz
ZUJlaGF2aW9yOjpSZWxlYXNlQ3VycmVudENvbnRleHQgOiBSZWxlYXNlQmVoYXZpb3I6OlJlbGVh
c2VUaHJlYWRSZXNvdXJjZXM7CisgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpyZWxlYXNl
UmVzb3VyY2VzKHJlbGVhc2VCZWhhdmlvcik7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9TY29wZWRXZWJHTFJlbmRlcmluZ1Jlc291cmNlc1Jl
cXVlc3QuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1Njb3BlZFdlYkdM
UmVuZGVyaW5nUmVzb3VyY2VzUmVxdWVzdC5jcHAKaW5kZXggMGY3NWQ4MjU0ODAzNjU0OTg1ZmUw
NTgxNGVlM2JkMTM0ZTQ4MWFlNi4uMTI4ZDM4MDM3OTUwY2VkZWFhZWVlMGI5OGIwMmU1Mzk3YTgw
YWYzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1Njb3Bl
ZFdlYkdMUmVuZGVyaW5nUmVzb3VyY2VzUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1Njb3BlZFdlYkdMUmVuZGVyaW5nUmVzb3VyY2VzUmVxdWVzdC5j
cHAKQEAgLTI2LDIwICsyNiwzOCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlNj
b3BlZFdlYkdMUmVuZGVyaW5nUmVzb3VyY2VzUmVxdWVzdC5oIgogCisjaWYgRU5BQkxFKEdQVV9Q
Uk9DRVNTKSAmJiBFTkFCTEUoV0VCR0wpCisKKyNpbmNsdWRlICJSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTC5oIgorI2luY2x1ZGUgIlN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUuaCIKKyNpbmNsdWRl
IDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dEdMLmg+CisjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4K
KyNpbmNsdWRlIDx3dGYvU2Vjb25kcy5oPgorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogc3RkOjph
dG9taWM8dW5zaWduZWQ+IFNjb3BlZFdlYkdMUmVuZGVyaW5nUmVzb3VyY2VzUmVxdWVzdDo6c19y
ZXF1ZXN0czsKLQotI2lmICFQTEFURk9STShDT0NPQSkKK3N0YXRpYyBjb25zdGV4cHIgU2Vjb25k
cyBmcmVlV2ViR0xSZW5kZXJpbmdSZXNvdXJjZXNUaW1lb3V0ID0gMV9zOworc3RhdGljIGJvb2wg
ZGlkU2NoZWR1bGVGcmVlV2ViR0xSZW5kZXJpbmdSZXNvdXJjZXM7CiAKIHZvaWQgU2NvcGVkV2Vi
R0xSZW5kZXJpbmdSZXNvdXJjZXNSZXF1ZXN0OjpzY2hlZHVsZUZyZWVXZWJHTFJlbmRlcmluZ1Jl
c291cmNlcygpCiB7CisgICAgaWYgKGRpZFNjaGVkdWxlRnJlZVdlYkdMUmVuZGVyaW5nUmVzb3Vy
Y2VzKQorICAgICAgICByZXR1cm47CisgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoQWZ0ZXIo
ZnJlZVdlYkdMUmVuZGVyaW5nUmVzb3VyY2VzVGltZW91dCwgZnJlZVdlYkdMUmVuZGVyaW5nUmVz
b3VyY2VzKTsKKyAgICBkaWRTY2hlZHVsZUZyZWVXZWJHTFJlbmRlcmluZ1Jlc291cmNlcyA9IHRy
dWU7CiB9CiAKIHZvaWQgU2NvcGVkV2ViR0xSZW5kZXJpbmdSZXNvdXJjZXNSZXF1ZXN0OjpmcmVl
V2ViR0xSZW5kZXJpbmdSZXNvdXJjZXMoKQogeworICAgIGRpZFNjaGVkdWxlRnJlZVdlYkdMUmVu
ZGVyaW5nUmVzb3VyY2VzID0gZmFsc2U7CisgICAgaWYgKHNfcmVxdWVzdHMpCisgICAgICAgIHJl
dHVybjsKKyAgICByZW1vdGVHcmFwaGljc0NvbnRleHRHTFN0cmVhbVdvcmtRdWV1ZSgpLmRpc3Bh
dGNoKFtdIHsKKyAgICAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlbGVh
c2VSZXNvdXJjZXMoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OlJlbGVhc2VSZXNv
dXJjZXNCZWhhdmlvcjo6VGVybWluYXRlQW5kUmVsZWFzZVRocmVhZFJlc291cmNlcyk7CisgICAg
fSk7CiB9CiAKLSNlbmRpZgotCiB9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL1Njb3BlZFdlYkdMUmVuZGVyaW5nUmVzb3VyY2VzUmVxdWVz
dC5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1Njb3BlZFdlYkdMUmVuZGVy
aW5nUmVzb3VyY2VzUmVxdWVzdC5oCmluZGV4IGMwZWQ0ZWVkM2NlOWQ3NDkxNjQyYzQ2MTYzMWIw
MTNjMTE3ODZkMDguLjJjYjUwYjNiY2YyNjE3MWRkMjQ3MTdiYWE1YjUxMzViMDBhZWE3YWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9TY29wZWRXZWJHTFJl
bmRlcmluZ1Jlc291cmNlc1JlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
Z3JhcGhpY3MvU2NvcGVkV2ViR0xSZW5kZXJpbmdSZXNvdXJjZXNSZXF1ZXN0LmgKQEAgLTI1LDYg
KzI1LDggQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVO
QUJMRShXRUJHTCkKKwogI2luY2x1ZGUgIlNjb3BlZFJlbmRlcmluZ1Jlc291cmNlc1JlcXVlc3Qu
aCIKICNpbmNsdWRlIDxhdG9taWM+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgpAQCAt
ODIsMyArODQsNSBAQCBwcml2YXRlOgogfTsKIAogfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9TY29wZWRXZWJHTFJlbmRlcmluZ1Jlc291
cmNlc1JlcXVlc3RDb2NvYS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mv
U2NvcGVkV2ViR0xSZW5kZXJpbmdSZXNvdXJjZXNSZXF1ZXN0Q29jb2EuY3BwCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAzMWIzM2ZjZDVjZmYzNDcyZDQxN2U5OTUxMWMwNzJlODQ4ZTdh
OWE3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9TY29wZWRXZWJHTFJlbmRlcmluZ1Jlc291cmNl
c1JlcXVlc3RDb2NvYS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw2MCArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
LSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
Ci0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlNjb3BlZFdlYkdMUmVuZGVyaW5n
UmVzb3VyY2VzUmVxdWVzdC5oIgotCi0jaWYgUExBVEZPUk0oQ09DT0EpCi0KLSNpbmNsdWRlICJS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTC5oIgotI2luY2x1ZGUgIlN0cmVhbUNvbm5lY3Rpb25Xb3Jr
UXVldWUuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dEdMLmg+Ci0jaW5jbHVk
ZSA8d3RmL1J1bkxvb3AuaD4KLSNpbmNsdWRlIDx3dGYvU2Vjb25kcy5oPgotCi1uYW1lc3BhY2Ug
V2ViS2l0IHsKLQotc3RhdGljIGNvbnN0ZXhwciBTZWNvbmRzIGZyZWVXZWJHTFJlbmRlcmluZ1Jl
c291cmNlc1RpbWVvdXQgPSAxX3M7Ci1zdGF0aWMgYm9vbCBkaWRTY2hlZHVsZUZyZWVXZWJHTFJl
bmRlcmluZ1Jlc291cmNlczsKLQotdm9pZCBTY29wZWRXZWJHTFJlbmRlcmluZ1Jlc291cmNlc1Jl
cXVlc3Q6OnNjaGVkdWxlRnJlZVdlYkdMUmVuZGVyaW5nUmVzb3VyY2VzKCkKLXsKLSAgICBpZiAo
ZGlkU2NoZWR1bGVGcmVlV2ViR0xSZW5kZXJpbmdSZXNvdXJjZXMpCi0gICAgICAgIHJldHVybjsK
LSAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2hBZnRlcihmcmVlV2ViR0xSZW5kZXJpbmdSZXNv
dXJjZXNUaW1lb3V0LCBmcmVlV2ViR0xSZW5kZXJpbmdSZXNvdXJjZXMpOwotICAgIGRpZFNjaGVk
dWxlRnJlZVdlYkdMUmVuZGVyaW5nUmVzb3VyY2VzID0gdHJ1ZTsKLX0KLQotdm9pZCBTY29wZWRX
ZWJHTFJlbmRlcmluZ1Jlc291cmNlc1JlcXVlc3Q6OmZyZWVXZWJHTFJlbmRlcmluZ1Jlc291cmNl
cygpCi17Ci0gICAgZGlkU2NoZWR1bGVGcmVlV2ViR0xSZW5kZXJpbmdSZXNvdXJjZXMgPSBmYWxz
ZTsKLSAgICBpZiAoc19yZXF1ZXN0cykKLSAgICAgICAgcmV0dXJuOwotICAgIHJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMU3RyZWFtV29ya1F1ZXVlKCkuZGlzcGF0Y2goR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OnJlbGVhc2VBbGxSZXNvdXJjZXNJZlVudXNlZCk7Ci19Ci0KLX0KLQotI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViS2l0
L1NvdXJjZXNDb2NvYS50eHQKaW5kZXggNWU2YjUyYzEyMTE0NmM2ZDUzYWNlNjY1ZDY1YzI1NmZk
ZTVlOTU5My4uODJmNDZjZTQ0YjE3NzRlMTNkYjdhZjQzYzdiY2I0Yzc4YmFiZDY1YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQv
U291cmNlc0NvY29hLnR4dApAQCAtNjYsNyArNjYsNiBAQCBHUFVQcm9jZXNzL2NvY29hL0dQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3NDb2NvYS5tbQogR1BVUHJvY2Vzcy9jb2NvYS9HUFVQcm9jZXNz
Q29jb2EubW0KIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2Nv
YS5jcHAKIEdQVVByb2Nlc3MvZ3JhcGhpY3MvU2NvcGVkUmVuZGVyaW5nUmVzb3VyY2VzUmVxdWVz
dENvY29hLm1tIEBuby11bmlmeQotR1BVUHJvY2Vzcy9ncmFwaGljcy9TY29wZWRXZWJHTFJlbmRl
cmluZ1Jlc291cmNlc1JlcXVlc3RDb2NvYS5jcHAKIEdQVVByb2Nlc3MvaW9zL0dQVVByb2Nlc3NJ
T1MubW0KIEdQVVByb2Nlc3MvbWFjL0dQVVByb2Nlc3NNYWMubW0KIEdQVVByb2Nlc3MvbWFjL0xv
Y2FsQXVkaW9TZXNzaW9uUm91dGluZ0FyYml0cmF0b3IuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9X
ZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBkMWM2OTUxNWJiMTgyZGZhNWE1
NDA3NzQ4NjRmNzNlYzI5OGM0MWQ5Li45OWYxZGJlZjEyNTBiMmZmZDk4ZTQ1ZmM4YTVlNGUzMjhi
ZGFmMWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKQEAgLTMsNyArMyw3IEBACiAJYXJjaGl2ZVZlcnNpb24gPSAxOwogCWNsYXNzZXMgPSB7
CiAJfTsKLQlvYmplY3RWZXJzaW9uID0gNTI7CisJb2JqZWN0VmVyc2lvbiA9IDU0OwogCW9iamVj
dHMgPSB7CiAKIC8qIEJlZ2luIFBCWEFnZ3JlZ2F0ZVRhcmdldCBzZWN0aW9uICovCkBAIC00NzYw
LDcgKzQ3NjAsNiBAQAogCQk3QkNGNzBDQzI2MTQ5MzVGMDBFNEZCNzAgLyogU2NvcGVkV2ViR0xS
ZW5kZXJpbmdSZXNvdXJjZXNSZXF1ZXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNjb3BlZFdl
YkdMUmVuZGVyaW5nUmVzb3VyY2VzUmVxdWVzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTdCQ0Y3MENEMjYxNDkzNUYwMEU0RkI3MCAvKiBTY29wZWRSZW5kZXJpbmdSZXNvdXJj
ZXNSZXF1ZXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjb3BlZFJlbmRlcmluZ1Jlc291cmNlc1JlcXVl
c3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0JDRjcwQ0UyNjE0OTM1RjAwRTRG
QjcwIC8qIFNjb3BlZFdlYkdMUmVuZGVyaW5nUmVzb3VyY2VzUmVxdWVzdC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBTY29wZWRXZWJHTFJlbmRlcmluZ1Jlc291cmNlc1JlcXVlc3QuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJN0JDRjcwQ0YyNjE0OTdFNjAwRTRGQjcwIC8qIFNjb3BlZFdlYkdM
UmVuZGVyaW5nUmVzb3VyY2VzUmVxdWVzdENvY29hLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNj
b3BlZFdlYkdMUmVuZGVyaW5nUmVzb3VyY2VzUmVxdWVzdENvY29hLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJN0JFNzI2NTcyNTc0RjY3MjAwRTg1RDk4IC8qIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHlGdW5jdGlvbnNHZW5lcmF0ZWQuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUZ1bmN0aW9uc0dlbmVyYXRlZC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCRTcyNjY4MjU3NjgwRUYwMEU4NUQ5OCAvKiBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk3QzA2NUYyOTFDOENEOTVGMDBDMkQ5NTAgLyogV2ViVXNlckNvbnRlbnRDb250cm9sbGVyRGF0
YVR5cGVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlVzZXJD
b250ZW50Q29udHJvbGxlckRhdGFUeXBlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC05MTA0LDcgKzkxMDMsNiBAQAogCQkJCTdCQ0Y3MENCMjYxNDkzNUUwMEU0RkI3MCAvKiBT
Y29wZWRSZW5kZXJpbmdSZXNvdXJjZXNSZXF1ZXN0Q29jb2EubW0gKi8sCiAJCQkJN0JDRjcwQ0My
NjE0OTM1RjAwRTRGQjcwIC8qIFNjb3BlZFdlYkdMUmVuZGVyaW5nUmVzb3VyY2VzUmVxdWVzdC5j
cHAgKi8sCiAJCQkJN0JDRjcwQ0UyNjE0OTM1RjAwRTRGQjcwIC8qIFNjb3BlZFdlYkdMUmVuZGVy
aW5nUmVzb3VyY2VzUmVxdWVzdC5oICovLAotCQkJCTdCQ0Y3MENGMjYxNDk3RTYwMEU0RkI3MCAv
KiBTY29wZWRXZWJHTFJlbmRlcmluZ1Jlc291cmNlc1JlcXVlc3RDb2NvYS5jcHAgKi8sCiAJCQkp
OwogCQkJcGF0aCA9IGdyYXBoaWNzOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>439749</attachid>
            <date>2021-09-30 10:03:55 -0700</date>
            <delta_ts>2021-09-30 10:30:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231011-20210930200353.patch</filename>
            <type>text/plain</type>
            <size>62596</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgzMzAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWE0ZDJmY2U1MGM0ZDY4
MzNjYjk0ZmNmMDc2NjkzMjhmM2NiNjFlMC4uMmRiZDQ2ZDQ2ZTU1ODQ3MDMzMzQxYWIxMWFhZjll
NzhmNDhiNzM3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYyIEBACisyMDIxLTA5LTMwICBLaW1t
byBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgU2NvcGVkRUdMRGVm
YXVsdERpc3BsYXkgc2hvdWxkIGJlIHJlbW92ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMTAxMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEhhcmQtY29kaW5nIHRoZSBjb2RlIHRvIEVHTF9ERUZBVUxU
X0RJU1BMQVkgb25seSBhbmQgdXNpbmcgdGhlIHNjb3BlZAorICAgICAgICBob2xkZXIgaXMgbWFr
aW5nIHRoZSBFR0xEaXNwbGF5cyBoYXJkZXIgdG8gdXNlIHRoYW4gbmVjY2Vzc2FyeS4gVGhlCisg
ICAgICAgIGltcGxlbWVudGF0aW9uIHRhcmdldCwgZS5nLiB0aGUgYWJpbGl0eSB0byBjYWxsIEVH
TFRlcm1pbmF0ZSwgd2FzIGFsc28gYSBiaXQKKyAgICAgICAgbW9yZSBjb252b2x1dGVkIHRoYW4g
bmVlZGVkLgorCisgICAgICAgIE1vdmUgdGhlICJjYWxsIEVHTFRlcm1pbmF0ZSIgbG9naWMgZnJv
bSBhIGJpdCBjb252b2x1dGVkIHJlZmNvdW50IG1lY2hhbmlzbQorICAgICAgICBpbiBTY29wZWRF
R0xEZWZhdWx0RGlzcGxheSB0byB0aGUgZXhwbGljaXQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OnJlbGVhc2VSZXNvdXJjZXMoKS4KKyAgICAgICAgVGhlIGNhbGxlcnMgYXJlIGV4cGVjdGVkIHRv
IGRvIHRoZSByZWZjb3VudGluZyBhbnl3YXksIGFzIHRoZSBleGlzdGluZyBjbGllbnQKKyAgICAg
ICAgV2ViS2l0OjpTY29wZWRXZWJHTFJlbmRlcmluZ1Jlc291cmNlc1JlcXVlc3QgYWxyZWFkeSBk
aWQuCisKKyAgICAgICAgTWFrZSBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVsZWFzZVJlc291
cmNlcygpIGF2YWlsYWJsZSBvbiBhbGwgcGxhdGZvcm1zLgorICAgICAgICBJdCBpcyBpbXBsZW1l
bnRlZCBvbiBhbGwgQU5HTEUgaW1wbGVtZW50YXRpb25zLgorICAgICAgICBQbGF0Zm9ybXMgY2Fu
IGF1Z21lbnQgdGhlIGltcGxlbWVudGF0aW9uIGJ5IGltcGxlbWVudGluZworICAgICAgICBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6cGxhdGZvcm1SZWxlYXNlUmVzb3VyY2VzKCkuIEZvciBDb2Nv
YSwgdGhpcyBmdW5jdGlvbgorICAgICAgICByZXNldHMgdGhlIGN1cnJlbnRDb250ZXh0IGNhY2hl
IHRoYXQgaXMgdXNlZCB0byBvcHRpbWl6ZSBtYWtpbmcgY29udGV4dCBjdXJyZW50LgorCisgICAg
ICAgIE5vIG5ldyB0ZXN0cywgcmVmYWN0b3IuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoK
KyAgICAgICAgKiBIZWFkZXJzLmNtYWtlOgorICAgICAgICAqIFBsYXRmb3JtTWFjLmNtYWtlOgor
ICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0FOR0xF
VXRpbGl0aWVzLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEVFR0xVdGlsaXRpZXMuaC4KKyAgICAgICAg
KFdlYkNvcmU6OnBsYXRmb3JtSXNBTkdMRUF2YWlsYWJsZSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvYW5nbGUvQU5HTEVVdGlsaXRpZXMuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEVVdGlsaXRp
ZXMuaC4KKyAgICAgICAgUmVuYW1lIEdyYXBoaWNzQ29udGV4dEdMQU5HTEVVdGlsaXRpZXMgdG8g
c2ltcGxlciBhbmQgbW9yZSBkZXNjcmlwdGl2ZSBBTkdMRVV0aWxpdGllcy4KKyAgICAgICAgQWRk
IHRoZSBpc0FOR0xFQXZhaWxhYmxlIHRvIHRoZXJlLgorCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVsZWFzZVJlc291cmNlcyk6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cGxhdGZvcm1SZWxlYXNlUmVzb3VyY2Vz
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFO
R0xFRUdMVXRpbGl0aWVzLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKFdlYkNvcmU6OnJlZkRlZmF1
bHREaXNwbGF5KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnVucmVmRGVmYXVsdERpc3Bs
YXlJZk5lZWRlZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTY29wZWRFR0xEZWZhdWx0
RGlzcGxheTo6b3BlcmF0b3I9KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNjb3BlZEVH
TERlZmF1bHREaXNwbGF5OjpTY29wZWRFR0xEZWZhdWx0RGlzcGxheSk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpTY29wZWRFR0xEZWZhdWx0RGlzcGxheTo6flNjb3BlZEVHTERlZmF1bHRE
aXNwbGF5KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNjb3BlZEVHTERlZmF1bHREaXNw
bGF5OjpyZWxlYXNlQWxsUmVzb3VyY2VzSWZVbnVzZWQpOiBEZWxldGVkLgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW06Cisg
ICAgICAgIChXZWJDb3JlOjpwbGF0Zm9ybUlzQU5HTEVBdmFpbGFibGUpOgorICAgICAgICAoV2Vi
Q29yZTo6aW5pdGlhbGl6ZUVHTERpc3BsYXkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OnBsYXRmb3JtUmVsZWFzZVJlc291cmNlcyk6CisgICAgICAgIChXZWJD
b3JlOjppc0FOR0xFQXZhaWxhYmxlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpyZWxlYXNlQ3VycmVudENvbnRleHQpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlbGVhc2VBbGxSZXNvdXJj
ZXNJZlVudXNlZCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3Blbmds
L0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpyZWxlYXNlUmVzb3VyY2VzKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpwbGF0Zm9ybVJlbGVhc2VSZXNvdXJjZXMpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2lvcy93YWsvV2ViQ29yZVRocmVhZC5tbToKKwogMjAyMS0wOS0y
OSAgS2ltbW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgogCiAgICAgICAgIEdQVVAg
Q29jb2EgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wgc2hvdWxkIGNoZWNrIGZvciBBTkdMRSBwcmVz
ZW5jZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwppbmRleCAzNmI5MjVkZTUzOTQyOGUwNjBhYmNmNmE0Y2M5ODQzMGU2ZjY2MjZi
Li43ZTMzMjdiMzViMTJhMjgwOTQ4NDM0ZWUwMGY1M2FlM2M2NmY2YWRjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAt
MSwzICsxLDI3IEBACisyMDIxLTA5LTMwICBLaW1tbyBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBs
ZS5jb20+CisKKyAgICAgICAgU2NvcGVkRUdMRGVmYXVsdERpc3BsYXkgc2hvdWxkIGJlIHJlbW92
ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMTAx
MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxl
bWVudCB0aGUgcmVsZWFzZSBvZiBXZWJHTCByZXNvdXJjZXMgd2l0aCB0aGUgYW1lbmRlZAorICAg
ICAgICBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVsZWFzZVJlc291cmNlcygpIGluc3RlYWQg
b2YKKyAgICAgICAgcHJldmlvdXMgc2VwYXJhdGUgZnVuY3Rpb24gR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OnJlbGVhc2VBbGxSZXNvdXJjZXMoKS4KKworICAgICAgICBVc2UgdGhlIHJlc291cmNl
IHJlbGVhc2UgY29kZSBwYXRoIHVuaXZlcnNhbGx5LCBhcworICAgICAgICBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6cmVsZWFzZVJlc291cmNlcygpIGlzIG5vdyBjb21tb24gY29kZS4KKworICAg
ICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvU2NvcGVkV2ViR0xSZW5kZXJpbmdSZXNvdXJjZXNS
ZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2NvcGVkV2ViR0xSZW5kZXJpbmdSZXNvdXJj
ZXNSZXF1ZXN0OjpzY2hlZHVsZUZyZWVXZWJHTFJlbmRlcmluZ1Jlc291cmNlcyk6CisgICAgICAg
IChXZWJLaXQ6OlNjb3BlZFdlYkdMUmVuZGVyaW5nUmVzb3VyY2VzUmVxdWVzdDo6ZnJlZVdlYkdM
UmVuZGVyaW5nUmVzb3VyY2VzKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1Njb3Bl
ZFdlYkdMUmVuZGVyaW5nUmVzb3VyY2VzUmVxdWVzdC5oOgorICAgICAgICAqIEdQVVByb2Nlc3Mv
Z3JhcGhpY3MvU2NvcGVkV2ViR0xSZW5kZXJpbmdSZXNvdXJjZXNSZXF1ZXN0Q29jb2EuY3BwOiBS
ZW1vdmVkLgorICAgICAgICAoV2ViS2l0OjpTY29wZWRXZWJHTFJlbmRlcmluZ1Jlc291cmNlc1Jl
cXVlc3Q6OnNjaGVkdWxlRnJlZVdlYkdMUmVuZGVyaW5nUmVzb3VyY2VzKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYktpdDo6U2NvcGVkV2ViR0xSZW5kZXJpbmdSZXNvdXJjZXNSZXF1ZXN0OjpmcmVl
V2ViR0xSZW5kZXJpbmdSZXNvdXJjZXMpOiBEZWxldGVkLgorICAgICAgICAqIFNvdXJjZXNDb2Nv
YS50eHQ6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIw
MjEtMDktMjkgIEFkYSBDaGFuICA8YWRhLmNoYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtXZWJY
Ul0gSG9sZCBhIGZvcmVncm91bmQgYXNzZXJ0aW9uIGZvciB0aGUgZHVyYXRpb24gb2YgdGhlIGlt
bWVyc2l2ZSBzZXNzaW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4
dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDVhYzE3NDk2MTM5ZDQzOTI4
MjhlNTkzOGI0MjljZGFhNjFkNTNhYWUuLmRhMTUzM2QwY2EyNjZiYzEwN2M5OWQ1NjRmNjJmZDU2
YzA3YjE1OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBi
L1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0xNzAxLDkgKzE3MDEsOSBAQCBpZiAo
RU5BQkxFX1dFQkdMKQogICAgICAgICAgICAgJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vZ3JhcGhp
Y3MvYW5nbGUKICAgICAgICAgKQogICAgICAgICBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMK
KyAgICAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0FOR0xFVXRpbGl0aWVzLmNwcAog
ICAgICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuY3Bw
CiAgICAgICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFO
R0xFLmNwcAotICAgICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250
ZXh0R0xBTkdMRUVHTFV0aWxpdGllcy5jcHAKICAgICAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNz
L2FuZ2xlL1RlbXBvcmFyeUFOR0xFU2V0dGluZy5jcHAKICAgICAgICAgKQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5j
bWFrZQppbmRleCBmOWYyMDNkMTRkZDkzYzMxNTYwNmM5OTRmODU5ZjY1NWViOGIwZDQzLi4wMzIz
NjBhNzAwNmUyYzA0OGUxNGI5N2Q1Y2Q5ZDI2NDYyMWRiMzk4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9IZWFkZXJzLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UK
QEAgLTEzNzksOCArMTM3OSw4IEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURF
UlMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9XaW5kUnVsZS5oCiAKICAgICBwbGF0Zm9ybS9ncmFw
aGljcy9hbmdsZS9BTkdMRUhlYWRlcnMuaAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0FO
R0xFVXRpbGl0aWVzLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xB
TkdMRS5oCi0gICAgcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdM
RVV0aWxpdGllcy5oCiAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3QuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdERy
YXdpbmdDb250ZXh0LmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNt
YWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UKaW5kZXggZmFjY2NiNjhmNjVl
YmE3Y2M1OTFiYzcyNGZjYTBjMmEzM2FjNGY4YS4uYmNmY2ViNzkzMTNlYzA1YzM1NGM1ZmVmZTM0
YWI1MTBhYjMzZTcxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21h
a2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UKQEAgLTYxNCw3ICs2MTQs
NyBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBw
bGF0Zm9ybS9ncmFwaGljcy9NSU1FVHlwZUNhY2hlLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9N
b2RlbC5oCiAKLSAgICBwbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFO
R0xFRUdMVXRpbGl0aWVzLmgKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9BTkdMRVV0aWxp
dGllcy5oCiAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQXVkaW9Tb3VyY2VQ
cm92aWRlckFWRk9iakMuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRp
YVBsYXliYWNrVGFyZ2V0Q29jb2EuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNl
c0NvY29hLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKaW5kZXggM2ExYjkw
Mjg1MWQyYzE0YWRiOTNlOGY2Y2U0Nzc4NjUwZmZkOGZlNi4uY2QyZGZiMjc0NmU3NGRiOGZhYjBj
YWIyOTA5YWM3OTJhNGJhMWM1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlc0Nv
Y29hLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CkBAIC01OTYsNyAr
NTk2LDcgQEAgdGVzdGluZy9jb2NvYS9XZWJWaWV3VmlzdWFsSWRlbnRpZmljYXRpb25PdmVybGF5
Lm1tCiAvLyBUaGUgZm9sbG93aW5nIGZpbGVzIGFyZW4ndCB1bmlmaWVkIHdpdGggb3RoZXJzIHRv
IHByZXZlbnQgdGhlbSBmcm9tIGJlaW5nIG1lcmdlZAogLy8gd2l0aCBmaWxlcyB0aGF0IHVzZSB0
aGUgc3lzdGVtIE9wZW5HTC4KIAorcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvQU5HTEVVdGlsaXRp
ZXMuY3BwIEBuby11bmlmeQogcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5H
TEUuY3BwIEBuby11bmlmeQogcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0
R0xBTkdMRS5jcHAgQG5vLXVuaWZ5Ci1wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0Nv
bnRleHRHTEFOR0xFRUdMVXRpbGl0aWVzLmNwcCBAbm8tdW5pZnkKIHBsYXRmb3JtL2dyYXBoaWNz
L2FuZ2xlL1RlbXBvcmFyeUFOR0xFU2V0dGluZy5jcHAgQG5vLXVuaWZ5CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMDJkODQxNWI0
NjBiMjc1MDE2NTRhMTU3NDI5MTJiNWM0ZmRiMTI1YS4uZjY4NjM5MmRjNzljMTU1YzZiZWY5Yzkw
NWE0NTk4MGY2Yjc0OGE1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjM1MSwxMyArMjM1MSwxMSBAQAogCQk3QUY5QjIwRjE4
Q0ZCNUY0MDBDNjRCRUYgLyogSlNWVFRSZWdpb25MaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QUY5QjIwQjE4Q0ZCNUYzMDBDNjRCRUYgLyogSlNW
VFRSZWdpb25MaXN0LmggKi87IH07CiAJCTdCMTAzMzlFMjU0OTcyMTcwMEM4QzFBQyAvKiBHcmFw
aGljc0NvbnRleHRHTENWLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3QjEwMzM5RDI1NDk3MjAxMDBDOEMxQUMgLyogR3JhcGhpY3NDb250ZXh0R0xDVi5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdCMTAz
MzlGMjU0OTcyMUUwMEM4QzFBQyAvKiBHcmFwaGljc0NvbnRleHRHTENWQU5HTEUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCMTAzMzlDMjU0OTcyMDEw
MEM4QzFBQyAvKiBHcmFwaGljc0NvbnRleHRHTENWQU5HTEUuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk3QjQ1QUI1MDI1RkI5M0JFMDBGRDI3RjQg
LyogR3JhcGhpY3NDb250ZXh0R0xBTkdMRUVHTFV0aWxpdGllcy5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Qjc3NEM2MjI1RkI5MzU1MDA5MTM5NUYg
LyogR3JhcGhpY3NDb250ZXh0R0xBTkdMRUVHTFV0aWxpdGllcy5jcHAgKi87IH07Ci0JCTdCNDVB
QjU1MjVGQkE5REUwMEZEMjdGNCAvKiBHcmFwaGljc0NvbnRleHRHTEFOR0xFRUdMVXRpbGl0aWVz
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjQ1QUI1
NDI1RkJBOUREMDBGRDI3RjQgLyogR3JhcGhpY3NDb250ZXh0R0xBTkdMRUVHTFV0aWxpdGllcy5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdCNkRD
ODE5MjU3MTJFOTIwMDM4MEM3MCAvKiBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFp
bi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I2REM4
MTcyNTcxMkU5MjAwMzgwQzcwIC8qIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWlu
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0I3
MzExRkIyNUMwOTJCNzAwM0IyNzk2IC8qIFNjb3BlZEhpZ2hQZXJmb3JtYW5jZUdQVVJlcXVlc3Qu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCNzMxMUZB
MjVDMDkyQjcwMDNCMjc5NiAvKiBTY29wZWRIaWdoUGVyZm9ybWFuY2VHUFVSZXF1ZXN0LmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0I4RUQ1RjAy
NkYwQzEzRDAwOEFDMDIzIC8qIENWVXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjhFRDVFRDI2RjBDMTIzMDA4QUMwMjMgLyogQ1ZVdGls
aXRpZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk3QjkwNDE3MDI1NTAxMTQyMDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eUJhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdC
OTA0MTZFMjU1MDExMDkwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFz
ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTdC
QjM0QTE3MjUzNDVDQjIwMDAyOUQwOCAvKiBHcmFwaGljc0NvbnRleHRHTEFOR0xFVXRpbGl0aWVz
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QkIzNEEx
NjI1MzQ1Q0IyMDAwMjlEMDggLyogR3JhcGhpY3NDb250ZXh0R0xBTkdMRVV0aWxpdGllcy5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTdCQjM0QTE3
MjUzNDVDQjIwMDAyOUQwOCAvKiBBTkdMRVV0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0JCMzRBMTYyNTM0NUNCMjAwMDI5RDA4IC8qIEFO
R0xFVXRpbGl0aWVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJN0JCMzRBNDgyNTM3NzZDQTAwMDI5RDA4IC8qIEdyYXBoaWNzQ29udGV4dEdMSW1h
Z2VFeHRyYWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDdCQjM0QTQ1MjUzNzc2QzYwMDAyOUQwOCAvKiBHcmFwaGljc0NvbnRleHRHTEltYWdlRXh0
cmFjdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJN0JCNjgwQkEyNUJBMUJFNDAwMkI4NzM4IC8qIEdyYXBoaWNzQ2hlY2tzTWFjLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QkI2ODBCODI1QkExQkU0
MDAyQjg3MzggLyogR3JhcGhpY3NDaGVja3NNYWMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QkU3NDI3MzgxRkE5MDZGQkI0RjBGMkMgLyogSlNT
VkdHcmFwaGljc0VsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDk1MEM0QzAyQkVEODkzNkY4MThFMkY5OSAvKiBKU1NWR0dyYXBoaWNzRWxlbWVu
dC5oICovOyB9OwpAQCAtMTA2MzEsMjAgKzEwNjI5LDE5IEBACiAJCTdCMTAzMzlBMjU0OTcyMDAw
MEM4QzFBQyAvKiBHcmFwaGljc0NvbnRleHRHTENWQU5HTEUuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJN0IxMDMzOUMyNTQ5NzIwMTAwQzhDMUFDIC8qIEdyYXBoaWNzQ29udGV4dEdMQ1ZBTkdM
RS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBHcmFwaGljc0NvbnRleHRHTENWQU5HTEUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0IxMDMzOUQyNTQ5NzIwMTAwQzhDMUFDIC8qIEdyYXBoaWNz
Q29udGV4dEdMQ1YuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0R0xDVi5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3QjQ1QUI1NDI1RkJBOUREMDBGRDI3RjQgLyogR3Jh
cGhpY3NDb250ZXh0R0xBTkdMRUVHTFV0aWxpdGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBHcmFwaGljc0NvbnRleHRHTEFOR0xFRUdMVXRpbGl0aWVzLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCNjRDMEI0MjU0QzNCMTYwMDA2QjRBRiAvKiBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5QmFzZUNvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2VDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJN0I2REM4MTUyNTcxMkU5MTAwMzgwQzcwIC8qIEdyYXBoaWNzQ29udGV4
dEdMSU9TdXJmYWNlU3dhcENoYWluLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I2REM4MTcyNTcxMkU5MjAwMzgwQzcwIC8qIEdyYXBoaWNz
Q29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTdCNzMxMUZBMjVDMDkyQjcwMDNCMjc5NiAvKiBTY29wZWRIaWdo
UGVyZm9ybWFuY2VHUFVSZXF1ZXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFNjb3BlZEhpZ2hQZXJmb3JtYW5jZUdQVVJlcXVlc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJN0I3NzRDNjIyNUZCOTM1NTAwOTEzOTVGIC8qIEdyYXBoaWNzQ29udGV4dEdMQU5H
TEVFR0xVdGlsaXRpZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0R0xB
TkdMRUVHTFV0aWxpdGllcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCOEVE
NUVEMjZGMEMxMjMwMDhBQzAyMyAvKiBDVlV0aWxpdGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBDVlV0aWxpdGllcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk3QjhFRDVFRjI2RjBDMTIzMDA4QUMwMjMgLyogQ1ZVdGlsaXRpZXMubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBDVlV0aWxpdGllcy5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJN0I5MDQxNkUyNTUwMTEwOTAwNkVFQjhDIC8qIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHlCYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHlCYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTdCQjM0QTE2
MjUzNDVDQjIwMDAyOUQwOCAvKiBHcmFwaGljc0NvbnRleHRHTEFOR0xFVXRpbGl0aWVzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dEdMQU5HTEVVdGls
aXRpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0JCMzRBMTYyNTM0NUNCMjAw
MDI5RDA4IC8qIEFOR0xFVXRpbGl0aWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEFOR0xFVXRpbGl0aWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCQjM0
QTQ1MjUzNzc2QzYwMDAyOUQwOCAvKiBHcmFwaGljc0NvbnRleHRHTEltYWdlRXh0cmFjdG9yLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0b3IuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0JCMzRBNDcyNTM3NzZDNzAwMDI5RDA4IC8qIEdyYXBo
aWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR3JhcGhp
Y3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTdCQjY4MEI3MjVCQTFCRTMwMDJCODczOCAvKiBHcmFwaGljc0NoZWNrc01hYy5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHcmFwaGljc0NoZWNrc01hYy5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCQjY4MEI4MjVCQTFCRTQwMDJCODczOCAv
KiBHcmFwaGljc0NoZWNrc01hYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBH
cmFwaGljc0NoZWNrc01hYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QkNENDJE
ODI3MDU5OUVGMDBFQjIxMjcgLyogQU5HTEVVdGlsaXRpZXMuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gQU5HTEVVdGlsaXRpZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QkU3
MjY1QjI1NzYzQjhEMDBFODVEOTggLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2Uu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2Uu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzAxMUYzRDI0RkFEMzYwMDA1QkVG
MTAgLyogU2V0dGluZ3MuY3BwLmVyYiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBTZXR0aW5ncy5jcHAuZXJiOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk3QzAxMUYzRTI0RkFEMzYwMDA1QkVGMTAgLyogSW50ZXJuYWxT
ZXR0aW5nc0dlbmVyYXRlZC5jcHAuZXJiICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEludGVybmFsU2V0dGluZ3NHZW5lcmF0ZWQu
Y3BwLmVyYjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIyNjI1LDEyICsyMjYyMiwx
MSBAQAogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKIAkJCQkyN0UzQzgwNjI1
N0Y1RTZFMDBDOTg2QUIgLyogQU5HTEVIZWFkZXJzLmggKi8sCisJCQkJN0JCMzRBMTYyNTM0NUNC
MjAwMDI5RDA4IC8qIEFOR0xFVXRpbGl0aWVzLmggKi8sCisJCQkJN0JDRDQyRDgyNzA1OTlFRjAw
RUIyMTI3IC8qIEFOR0xFVXRpbGl0aWVzLmNwcCAqLywKIAkJCQk2RTI3RjI0MzIyOUM5Rjg0MDBG
MUY2MzIgLyogRXh0ZW5zaW9uc0dMQU5HTEUuY3BwICovLAogCQkJCTZFMjdGMjQ0MjI5QzlGOEQw
MEYxRjYzMiAvKiBFeHRlbnNpb25zR0xBTkdMRS5oICovLAogCQkJCTZFMjdGMjQyMjI5OENFNEIw
MEYxRjYzMiAvKiBHcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcCAqLywKLQkJCQk3Qjc3NEM2MjI1
RkI5MzU1MDA5MTM5NUYgLyogR3JhcGhpY3NDb250ZXh0R0xBTkdMRUVHTFV0aWxpdGllcy5jcHAg
Ki8sCi0JCQkJN0I0NUFCNTQyNUZCQTlERDAwRkQyN0Y0IC8qIEdyYXBoaWNzQ29udGV4dEdMQU5H
TEVFR0xVdGlsaXRpZXMuaCAqLywKLQkJCQk3QkIzNEExNjI1MzQ1Q0IyMDAwMjlEMDggLyogR3Jh
cGhpY3NDb250ZXh0R0xBTkdMRVV0aWxpdGllcy5oICovLAogCQkJCTZFMjkwODYxMjI5REI5NTAw
MDA5ODZFMiAvKiBUZW1wb3JhcnlBTkdMRVNldHRpbmcuY3BwICovLAogCQkJCTZFMjkwODYzMjI5
REI5NzAwMDA5ODZFMiAvKiBUZW1wb3JhcnlBTkdMRVNldHRpbmcuaCAqLywKIAkJCSk7CkBAIC0z
MjYzOSw4ICszMjYzNSw3IEBACiAJCQkJQjJBMDE1QTkwQUY2Q0Q1MzAwNkJDRTBFIC8qIEdyYXBo
aWNzQ29udGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTM0OTA3RTQxMjVCQkJDODAwN0YyM0Ew
IC8qIEdyYXBoaWNzQ29udGV4dENHLmggaW4gSGVhZGVycyAqLywKIAkJCQkzMTNERTg3MDIzQTk2
OTczMDA4RkM0N0IgLyogR3JhcGhpY3NDb250ZXh0R0wuaCBpbiBIZWFkZXJzICovLAotCQkJCTdC
NDVBQjU1MjVGQkE5REUwMEZEMjdGNCAvKiBHcmFwaGljc0NvbnRleHRHTEFOR0xFRUdMVXRpbGl0
aWVzLmggaW4gSGVhZGVycyAqLywKLQkJCQk3QkIzNEExNzI1MzQ1Q0IyMDAwMjlEMDggLyogR3Jh
cGhpY3NDb250ZXh0R0xBTkdMRVV0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0JCMzRB
MTcyNTM0NUNCMjAwMDI5RDA4IC8qIEFOR0xFVXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk3QzMzMEEwMjFERjhGQUM2MDBEMzM5NUMgLyogR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVz
LmggaW4gSGVhZGVycyAqLywKIAkJCQk3QjEwMzM5RTI1NDk3MjE3MDBDOEMxQUMgLyogR3JhcGhp
Y3NDb250ZXh0R0xDVi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0IxMDMzOUYyNTQ5NzIxRTAwQzhD
MUFDIC8qIEdyYXBoaWNzQ29udGV4dEdMQ1ZBTkdMRS5oIGluIEhlYWRlcnMgKi8sCkBAIC0zNjQ5
OSw3ICszNjQ5NCw2IEBACiAJCQkJNTFBOUQ5RTkxOTVCOTMxRjAwMUIyQjVDIC8qIEdhbWVwYWRN
YW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTgzNzk2NENGMUY4REI2OUQwMDIxOEVBMCAv
KiBHZW9sb2NhdGlvblBvc2l0aW9uRGF0YUlPUy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTZFNzJG
NTRFMjI5RENEMTAwMEIzRTE1MSAvKiBHcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcCBpbiBTb3Vy
Y2VzICovLAotCQkJCTdCNDVBQjUwMjVGQjkzQkUwMEZEMjdGNCAvKiBHcmFwaGljc0NvbnRleHRH
TEFOR0xFRUdMVXRpbGl0aWVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDM0U1MTBCMThERjhG
MzUwMEMxMTJGNyAvKiBIVE1MQ29udmVydGVyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQThEMDZC
M0EwQTI2NURDRDAwNUU3MjAzIC8qIEhUTUxOYW1lcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkx
QUM5MDBDMzE5NDNDMEZDMDA4NjI1QjUgLyogSFRUUEhlYWRlck5hbWVzLmNwcCBpbiBTb3VyY2Vz
ICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUv
QU5HTEVVdGlsaXRpZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5n
bGUvQU5HTEVVdGlsaXRpZXMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdjNWY4YjU4NzczNDkwMDAxNDUzODk0
YTAxM2YyMjcxYzk3NWFjYzMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hbmdsZS9BTkdMRVV0aWxpdGllcy5jcHAKQEAgLTAsMCArMSw0MiBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJBTkdMRVV0aWxpdGllcy5oIgorCisjaWYgRU5BQkxFKFdFQkdM
KSAmJiBVU0UoQU5HTEUpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworI2lmICFQTEFURk9STShD
T0NPQSkKK2Jvb2wgcGxhdGZvcm1Jc0FOR0xFQXZhaWxhYmxlKCkKK3sKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKyNlbmRpZgorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvQU5HTEVVdGlsaXRpZXMuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0FOR0xFVXRpbGl0aWVzLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjky
YzMzYzJmZGYyYjdkZDhjYzA5NWI0YzEwYWYxNjVhYmQzMWE4NQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0FOR0xFVXRpbGl0aWVzLmgK
QEAgLTAsMCArMSwyNDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJHTCkgJiYgVVNFKEFOR0xFKQor
CisjaW5jbHVkZSAiQU5HTEVIZWFkZXJzLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NUeXBlc0dMLmgi
CisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
Y2xhc3MgU2NvcGVkUmVzdG9yZVRleHR1cmVCaW5kaW5nIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZ
QUJMRShTY29wZWRSZXN0b3JlVGV4dHVyZUJpbmRpbmcpOworcHVibGljOgorICAgIFNjb3BlZFJl
c3RvcmVUZXh0dXJlQmluZGluZyhHTGVudW0gYmluZGluZ1BvaW50UXVlcnksIEdMZW51bSBiaW5k
aW5nUG9pbnQsIGJvb2wgY29uZGl0aW9uID0gdHJ1ZSkKKyAgICB7CisgICAgICAgIEFTU0VSVChi
aW5kaW5nUG9pbnQgIT0gc3RhdGljX2Nhc3Q8R0xlbnVtPigwdSkpOworICAgICAgICBpZiAoY29u
ZGl0aW9uKSB7CisgICAgICAgICAgICBtX2JpbmRpbmdQb2ludCA9IGJpbmRpbmdQb2ludDsKKyAg
ICAgICAgICAgIGdsOjpHZXRJbnRlZ2VydihiaW5kaW5nUG9pbnRRdWVyeSwgcmVpbnRlcnByZXRf
Y2FzdDxHTGludCo+KCZtX2JpbmRpbmdWYWx1ZSkpOworICAgICAgICB9CisgICAgfQorCisgICAg
flNjb3BlZFJlc3RvcmVUZXh0dXJlQmluZGluZygpCisgICAgeworICAgICAgICBpZiAobV9iaW5k
aW5nUG9pbnQpCisgICAgICAgICAgICBnbDo6QmluZFRleHR1cmUobV9iaW5kaW5nUG9pbnQsIG1f
YmluZGluZ1ZhbHVlKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgR0xlbnVtIG1fYmluZGluZ1Bv
aW50IHsgMCB9OworICAgIEdMdWludCBtX2JpbmRpbmdWYWx1ZSB7IDB1IH07Cit9OworCisKK2Ns
YXNzIFNjb3BlZEJ1ZmZlckJpbmRpbmcgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFNjb3Bl
ZEJ1ZmZlckJpbmRpbmcpOworcHVibGljOgorICAgIFNjb3BlZEJ1ZmZlckJpbmRpbmcoR0xlbnVt
IGJpbmRpbmdQb2ludCwgR0x1aW50IGJpbmRpbmdWYWx1ZSwgYm9vbCBjb25kaXRpb24gPSB0cnVl
KQorICAgIHsKKyAgICAgICAgaWYgKCFjb25kaXRpb24pCisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIGdsOjpHZXRJbnRlZ2VydihxdWVyeShiaW5kaW5nUG9pbnQpLCByZWludGVycHJldF9j
YXN0PEdMaW50Kj4oJm1fYmluZGluZ1ZhbHVlKSk7CisgICAgICAgIGlmIChiaW5kaW5nVmFsdWUg
PT0gbV9iaW5kaW5nVmFsdWUpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1fYmluZGlu
Z1BvaW50ID0gYmluZGluZ1BvaW50OworICAgICAgICBnbDo6QmluZEJ1ZmZlcihtX2JpbmRpbmdQ
b2ludCwgYmluZGluZ1ZhbHVlKTsKKyAgICB9CisKKyAgICB+U2NvcGVkQnVmZmVyQmluZGluZygp
CisgICAgeworICAgICAgICBpZiAobV9iaW5kaW5nUG9pbnQpCisgICAgICAgICAgICBnbDo6Qmlu
ZEJ1ZmZlcihtX2JpbmRpbmdQb2ludCwgbV9iaW5kaW5nVmFsdWUpOworICAgIH0KKworcHJpdmF0
ZToKKyAgICBzdGF0aWMgY29uc3RleHByIEdMZW51bSBxdWVyeShHTGVudW0gYmluZGluZ1BvaW50
KQorICAgIHsKKyAgICAgICAgaWYgKGJpbmRpbmdQb2ludCA9PSBHTF9QSVhFTF9QQUNLX0JVRkZF
UikKKyAgICAgICAgICAgIHJldHVybiBHTF9QSVhFTF9QQUNLX0JVRkZFUl9CSU5ESU5HOworICAg
ICAgICBBU1NFUlQoYmluZGluZ1BvaW50ID09IEdMX1BJWEVMX1VOUEFDS19CVUZGRVIpOworICAg
ICAgICByZXR1cm4gR0xfUElYRUxfVU5QQUNLX0JVRkZFUl9CSU5ESU5HOworICAgIH0KKyAgICBH
TGludCBtX2JpbmRpbmdQb2ludCB7IDAgfTsKKyAgICBHTHVpbnQgbV9iaW5kaW5nVmFsdWUgeyAw
dSB9OworfTsKK2NsYXNzIFNjb3BlZFJlc3RvcmVSZWFkRnJhbWVidWZmZXJCaW5kaW5nIHsKKyAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShTY29wZWRSZXN0b3JlUmVhZEZyYW1lYnVmZmVyQmluZGlu
Zyk7CitwdWJsaWM6CisgICAgU2NvcGVkUmVzdG9yZVJlYWRGcmFtZWJ1ZmZlckJpbmRpbmcoYm9v
bCBpc0ZvcldlYkdMMiwgR0x1aW50IHJlc3RvcmVWYWx1ZSkKKyAgICAgICAgOiBtX2ZyYW1lYnVm
ZmVyVGFyZ2V0KGlzRm9yV2ViR0wyID8gR0xfUkVBRF9GUkFNRUJVRkZFUiA6IEdMX0ZSQU1FQlVG
RkVSKQorICAgICAgICAsIG1fYmluZGluZ1ZhbHVlKHJlc3RvcmVWYWx1ZSkKKyAgICB7CisgICAg
fQorICAgIFNjb3BlZFJlc3RvcmVSZWFkRnJhbWVidWZmZXJCaW5kaW5nKGJvb2wgaXNGb3JXZWJH
TDIsIEdMdWludCByZXN0b3JlVmFsdWUsIEdMdWludCB2YWx1ZSkKKyAgICAgICAgOiBtX2ZyYW1l
YnVmZmVyVGFyZ2V0KGlzRm9yV2ViR0wyID8gR0xfUkVBRF9GUkFNRUJVRkZFUiA6IEdMX0ZSQU1F
QlVGRkVSKQorICAgICAgICAsIG1fYmluZGluZ1ZhbHVlKHJlc3RvcmVWYWx1ZSkKKyAgICB7Cisg
ICAgICAgIGJpbmRGcmFtZWJ1ZmZlcih2YWx1ZSk7CisgICAgfQorICAgIHZvaWQgbWFya0JpbmRp
bmdDaGFuZ2VkKCkKKyAgICB7CisgICAgICAgIG1fYmluZGluZ0NoYW5nZWQgPSB0cnVlOworICAg
IH0KKyAgICB2b2lkIGJpbmRGcmFtZWJ1ZmZlcihHTHVpbnQgYmluZGluZ1ZhbHVlKQorICAgIHsK
KyAgICAgICAgaWYgKCFtX2JpbmRpbmdDaGFuZ2VkICYmIG1fYmluZGluZ1ZhbHVlID09IGJpbmRp
bmdWYWx1ZSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgZ2w6OkJpbmRGcmFtZWJ1ZmZl
cihtX2ZyYW1lYnVmZmVyVGFyZ2V0LCBiaW5kaW5nVmFsdWUpOworICAgICAgICBtX2JpbmRpbmdD
aGFuZ2VkID0gbV9iaW5kaW5nVmFsdWUgIT0gYmluZGluZ1ZhbHVlOworICAgIH0KKyAgICBHTHVp
bnQgZnJhbWVidWZmZXJUYXJnZXQoKSBjb25zdCB7IHJldHVybiBtX2ZyYW1lYnVmZmVyVGFyZ2V0
OyB9CisgICAgflNjb3BlZFJlc3RvcmVSZWFkRnJhbWVidWZmZXJCaW5kaW5nKCkKKyAgICB7Cisg
ICAgICAgIGlmIChtX2JpbmRpbmdDaGFuZ2VkKQorICAgICAgICAgICAgZ2w6OkJpbmRGcmFtZWJ1
ZmZlcihtX2ZyYW1lYnVmZmVyVGFyZ2V0LCBtX2JpbmRpbmdWYWx1ZSk7CisgICAgfQorcHJpdmF0
ZToKKyAgICBjb25zdCBHTGVudW0gbV9mcmFtZWJ1ZmZlclRhcmdldDsKKyAgICBHTHVpbnQgbV9i
aW5kaW5nVmFsdWUgeyAwdSB9OworICAgIGJvb2wgbV9iaW5kaW5nQ2hhbmdlZCB7IGZhbHNlIH07
Cit9OworCitjbGFzcyBTY29wZWRQaXhlbFN0b3JhZ2VNb2RlIHsKKyAgICBXVEZfTUFLRV9OT05D
T1BZQUJMRShTY29wZWRQaXhlbFN0b3JhZ2VNb2RlKTsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBT
Y29wZWRQaXhlbFN0b3JhZ2VNb2RlKEdMZW51bSBuYW1lLCBib29sIGNvbmRpdGlvbiA9IHRydWUp
CisgICAgICAgIDogbV9uYW1lKGNvbmRpdGlvbiA/IG5hbWUgOiAwKQorICAgIHsKKyAgICAgICAg
aWYgKG1fbmFtZSkKKyAgICAgICAgICAgIGdsOjpHZXRJbnRlZ2VydihtX25hbWUsICZtX29yaWdp
bmFsVmFsdWUpOworICAgIH0KKyAgICBTY29wZWRQaXhlbFN0b3JhZ2VNb2RlKEdMZW51bSBuYW1l
LCBHTGludCB2YWx1ZSwgYm9vbCBjb25kaXRpb24gPSB0cnVlKQorICAgICAgICA6IG1fbmFtZShj
b25kaXRpb24gPyBuYW1lIDogMCkKKyAgICB7CisgICAgICAgIGlmIChtX25hbWUpIHsKKyAgICAg
ICAgICAgIGdsOjpHZXRJbnRlZ2VydihtX25hbWUsICZtX29yaWdpbmFsVmFsdWUpOworICAgICAg
ICAgICAgcGl4ZWxTdG9yZSh2YWx1ZSk7CisgICAgICAgIH0KKyAgICB9CisgICAgflNjb3BlZFBp
eGVsU3RvcmFnZU1vZGUoKQorICAgIHsKKyAgICAgICAgaWYgKG1fbmFtZSAmJiBtX3ZhbHVlQ2hh
bmdlZCkKKyAgICAgICAgICAgIGdsOjpQaXhlbFN0b3JlaShtX25hbWUsIG1fb3JpZ2luYWxWYWx1
ZSk7CisgICAgfQorICAgIHZvaWQgcGl4ZWxTdG9yZShHTGludCB2YWx1ZSkKKyAgICB7CisgICAg
ICAgIEFTU0VSVChtX25hbWUpOworICAgICAgICBpZiAoIW1fdmFsdWVDaGFuZ2VkICYmIG1fb3Jp
Z2luYWxWYWx1ZSA9PSB2YWx1ZSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgZ2w6OlBp
eGVsU3RvcmVpKG1fbmFtZSwgdmFsdWUpOworICAgICAgICBtX3ZhbHVlQ2hhbmdlZCA9IG1fb3Jp
Z2luYWxWYWx1ZSAhPSB2YWx1ZTsKKyAgICB9CisgICAgb3BlcmF0b3IgR0xpbnQoKSBjb25zdAor
ICAgIHsKKyAgICAgICAgQVNTRVJUKG1fbmFtZSAmJiAhbV92YWx1ZUNoYW5nZWQpOworICAgICAg
ICByZXR1cm4gbV9vcmlnaW5hbFZhbHVlOworICAgIH0KK3ByaXZhdGU6CisgICAgY29uc3QgR0xl
bnVtIG1fbmFtZTsKKyAgICBib29sIG1fdmFsdWVDaGFuZ2VkIHsgZmFsc2UgfTsKKyAgICBHTGlu
dCBtX29yaWdpbmFsVmFsdWUgeyAwIH07Cit9OworCitjbGFzcyBTY29wZWRUZXh0dXJlIHsKKyAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShTY29wZWRUZXh0dXJlKTsKK3B1YmxpYzoKKyAgICBTY29w
ZWRUZXh0dXJlKCkKKyAgICB7CisgICAgICAgIGdsOjpHZW5UZXh0dXJlcygxLCAmbV9vYmplY3Qp
OworICAgIH0KKyAgICB+U2NvcGVkVGV4dHVyZSgpCisgICAgeworICAgICAgICBnbDo6RGVsZXRl
VGV4dHVyZXMoMSwgJm1fb2JqZWN0KTsKKyAgICB9CisgICAgb3BlcmF0b3IgR0x1aW50KCkgY29u
c3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX29iamVjdDsKKyAgICB9Citwcml2YXRlOgorICAg
IEdMdWludCBtX29iamVjdCB7IDB1IH07Cit9OworCitjbGFzcyBTY29wZWRGcmFtZWJ1ZmZlciB7
CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU2NvcGVkRnJhbWVidWZmZXIpOworcHVibGljOgor
ICAgIFNjb3BlZEZyYW1lYnVmZmVyKCkKKyAgICB7CisgICAgICAgIGdsOjpHZW5GcmFtZWJ1ZmZl
cnMoMSwgJm1fb2JqZWN0KTsKKyAgICB9CisgICAgflNjb3BlZEZyYW1lYnVmZmVyKCkKKyAgICB7
CisgICAgICAgIGdsOjpEZWxldGVGcmFtZWJ1ZmZlcnMoMSwgJm1fb2JqZWN0KTsKKyAgICB9Cisg
ICAgb3BlcmF0b3IgR0x1aW50KCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX29iamVj
dDsKKyAgICB9Citwcml2YXRlOgorICAgIEdMdWludCBtX29iamVjdCB7IDAgfTsKK307CisKK2Ns
YXNzIFNjb3BlZEdMRmVuY2UgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFNjb3BlZEdMRmVu
Y2UpOworcHVibGljOgorICAgIFNjb3BlZEdMRmVuY2UoKSA9IGRlZmF1bHQ7CisgICAgU2NvcGVk
R0xGZW5jZShTY29wZWRHTEZlbmNlJiYgb3RoZXIpCisgICAgICAgIDogbV9vYmplY3Qoc3RkOjpl
eGNoYW5nZShvdGhlci5tX29iamVjdCwgeyB9KSkKKyAgICB7CisgICAgfQorICAgIH5TY29wZWRH
TEZlbmNlKCkgeyByZXNldCgpOyB9CisgICAgU2NvcGVkR0xGZW5jZSYgb3BlcmF0b3I9KFNjb3Bl
ZEdMRmVuY2UmJiBvdGhlcikKKyAgICB7CisgICAgICAgIGlmICh0aGlzICE9ICZvdGhlcikgewor
ICAgICAgICAgICAgcmVzZXQoKTsKKyAgICAgICAgICAgIG1fb2JqZWN0ID0gc3RkOjpleGNoYW5n
ZShvdGhlci5tX29iamVjdCwgeyB9KTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gKnRoaXM7
CisgICAgfQorICAgIHZvaWQgcmVzZXQoKQorICAgIHsKKyAgICAgICAgaWYgKG1fb2JqZWN0KSB7
CisgICAgICAgICAgICBnbDo6RGVsZXRlU3luYyhtX29iamVjdCk7CisgICAgICAgICAgICBtX29i
amVjdCA9IHsgfTsKKyAgICAgICAgfQorICAgIH0KKyAgICB2b2lkIGFiYW5kb24oKSB7IG1fb2Jq
ZWN0ID0geyB9OyB9CisgICAgdm9pZCBmZW5jZVN5bmMoKQorICAgIHsKKyAgICAgICAgcmVzZXQo
KTsKKyAgICAgICAgbV9vYmplY3QgPSBnbDo6RmVuY2VTeW5jKEdMX1NZTkNfR1BVX0NPTU1BTkRT
X0NPTVBMRVRFLCAwKTsKKyAgICB9CisgICAgb3BlcmF0b3IgR0xzeW5jKCkgY29uc3QgeyByZXR1
cm4gbV9vYmplY3Q7IH0KKyAgICBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gbV9vYmpl
Y3Q7IH0KK3ByaXZhdGU6CisgICAgR0xzeW5jIG1fb2JqZWN0IHsgfTsKK307CisKK2Jvb2wgcGxh
dGZvcm1Jc0FOR0xFQXZhaWxhYmxlKCk7CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xF
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29u
dGV4dEdMQU5HTEUuY3BwCmluZGV4IGMyY2ZhNWRjMmY3NzVhZTQ4NGE5NGY4OWY2ZTRkZjcxYzli
ZjE4OTcuLjE1MjMxM2E1YjNkZTQ2Mjg3YTg1YjQ5ZTc2ZjNhYjBiMjI4ODAyZTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4
dEdMQU5HTEUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xl
L0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwCkBAIC0zMCw4ICszMCw4IEBACiAjaW5jbHVkZSAi
R3JhcGhpY3NDb250ZXh0R0wuaCIKIAogI2luY2x1ZGUgIkFOR0xFSGVhZGVycy5oIgorI2luY2x1
ZGUgIkFOR0xFVXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAiRXh0ZW5zaW9uc0dMQU5HTEUuaCIKLSNp
bmNsdWRlICJHcmFwaGljc0NvbnRleHRHTEFOR0xFVXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAiR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0wuaCIKICNpbmNsdWRlICJJbWFnZUJ1ZmZlci5oIgogI2luY2x1
ZGUgIkludFJlY3QuaCIKQEAgLTc1LDYgKzc1LDQ5IEBAIHN0YXRpYyB2b2lkIHdpcGVBbHBoYUNo
YW5uZWxGcm9tUGl4ZWxzKGludCB3aWR0aCwgaW50IGhlaWdodCwgdW5zaWduZWQgY2hhciogcGl4
CiB9CiAjZW5kaWYKIAorYm9vbCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVsZWFzZVJlc291
cmNlcyhSZWxlYXNlUmVzb3VyY2VzQmVoYXZpb3IgcmVsZWFzZUJlaGF2aW9yKQoreworICAgIHBs
YXRmb3JtUmVsZWFzZVJlc291cmNlcygpOworCisgICAgaWYgKCFwbGF0Zm9ybUlzQU5HTEVBdmFp
bGFibGUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gVW5zZXQgdGhlIEVHTCBj
dXJyZW50IGNvbnRleHQsIHNpbmNlIHRoZSBuZXh0IGFjY2VzcyBtaWdodCBiZSBmcm9tIGFub3Ro
ZXIgdGhyZWFkLCBhbmQgdGhlCisgICAgLy8gY29udGV4dCBjYW5ub3QgYmUgY3VycmVudCBvbiBt
dWx0aXBsZSB0aHJlYWRzLgorICAgIGlmIChyZWxlYXNlQmVoYXZpb3IgPT0gUmVsZWFzZVJlc291
cmNlc0JlaGF2aW9yOjpSZWxlYXNlQ3VycmVudENvbnRleHQpIHsKKyAgICAgICAgaWYgKEVHTF9H
ZXRDdXJyZW50Q29udGV4dCgpID09IEVHTF9OT19DT05URVhUKQorICAgICAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgICAgIC8vIEF0IHRoZSB0aW1lIG9mIHdyaXRpbmcsIEFOR0xFIGRvZXMgbm90
IGZsdXNoIG9uIE1ha2VDdXJyZW50LiBTaW5jZSB3ZSBhcmUKKyAgICAgICAgLy8gcG90ZW50aWFs
bHkgc3dpdGNoaW5nIHRocmVhZHMsIHdlIHNob3VsZCBmbHVzaC4KKyAgICAgICAgLy8gTm90ZTog
SGVyZSB3ZSBhc3N1bWUgYWxzbyB0aGF0IEFOR0xFIGhhcyBvbmx5IG9uZSBwbGF0Zm9ybSBjb250
ZXh0IC0tIG90aGVyd2lzZQorICAgICAgICAvLyB3ZSB3b3VsZCBuZWVkIHRvIGZsdXNoIGVhY2gg
RUdMIGNvbnRleHQgdGhhdCBoYXMgYmVlbiB1c2VkLgorICAgICAgICBnbDo6Rmx1c2goKTsKKyAg
ICAgICAgRUdMRGlzcGxheSBkaXNwbGF5ID0gRUdMX0dldERpc3BsYXkoRUdMX0RFRkFVTFRfRElT
UExBWSk7CisgICAgICAgIGlmIChkaXNwbGF5ID09IEVHTF9OT19ESVNQTEFZKQorICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgICAgIHJldHVybiBFR0xfTWFrZUN1cnJlbnQoZGlzcGxheSwg
RUdMX05PX1NVUkZBQ0UsIEVHTF9OT19TVVJGQUNFLCBFR0xfTk9fQ09OVEVYVCk7CisgICAgfQor
ICAgIGlmIChyZWxlYXNlQmVoYXZpb3IgPT0gUmVsZWFzZVJlc291cmNlc0JlaGF2aW9yOjpUZXJt
aW5hdGVBbmRSZWxlYXNlVGhyZWFkUmVzb3VyY2VzKSB7CisgICAgICAgIEVHTERpc3BsYXkgZGlz
cGxheSA9IEVHTF9HZXREaXNwbGF5KEVHTF9ERUZBVUxUX0RJU1BMQVkpOworICAgICAgICBpZiAo
ZGlzcGxheSAhPSBFR0xfTk9fRElTUExBWSkgeworICAgICAgICAgICAgaWYgKEVHTF9HZXRDdXJy
ZW50Q29udGV4dCgpICE9IEVHTF9OT19DT05URVhUKSB7CisgICAgICAgICAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7IC8vIEFsbCByZXNvdXJjZXMgbXVzdCBoYXZlIGJlZW4gZGVzdHJveWVk
LgorICAgICAgICAgICAgICAgIEVHTF9NYWtlQ3VycmVudChkaXNwbGF5LCBFR0xfTk9fU1VSRkFD
RSwgRUdMX05PX1NVUkZBQ0UsIEVHTF9OT19DT05URVhUKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIEVHTF9UZXJtaW5hdGUoZGlzcGxheSk7CisgICAgICAgIH0KKyAgICB9CisgICAgLy8g
Q2FsbGVkIHdoZW4gd2UgZG8gbm90IGtub3cgaWYgd2Ugd2lsbCBldmVyIHNlZSBhbm90aGVyIGNh
bGwgZnJvbSB0aGlzIHRocmVhZCBhZ2Fpbi4KKyAgICAvLyBVbnNldCB0aGUgRUdMIGN1cnJlbnQg
Y29udGV4dCBieSByZWxlYXNpbmcgd2hvbGUgRUdMIHRocmVhZCBzdGF0ZS4KKyAgICByZXR1cm4g
RUdMX1JlbGVhc2VUaHJlYWQoKTsKK30KKworI2lmICFQTEFURk9STShDT0NPQSkKK3ZvaWQgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OnBsYXRmb3JtUmVsZWFzZVJlc291cmNlcygpCit7Cit9Cisj
ZW5kaWYKKwogc3RkOjpvcHRpb25hbDxQaXhlbEJ1ZmZlcj4gR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OnJlYWRQaXhlbHNGb3JQYWludFJlc3VsdHMoKQogewogICAgIFBpeGVsQnVmZmVyRm9ybWF0
IGZvcm1hdCB7IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZCwgUGl4ZWxG
b3JtYXQ6OlJHQkE4LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0
R0xBTkdMRUVHTFV0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFRUdMVXRpbGl0aWVzLmNwcApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggYjViZjgzN2QyNWU0M2QwNjU4ZDZiNjg1MWRkNDhhMjE5ODY5
NmY3Yi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xF
RUdMVXRpbGl0aWVzLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDkxICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgi
Ci0jaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0R0xBTkdMRUVHTFV0aWxpdGllcy5oIgotCi0jaW5j
bHVkZSAiQU5HTEVIZWFkZXJzLmgiCi0jaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KLQotI2lm
IEVOQUJMRShXRUJHTCkgJiYgVVNFKEFOR0xFKQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0
YXRpYyB1bnNpZ25lZCBkZWZhdWx0RGlzcGxheVJlZkNvdW50Owotc3RhdGljIHZvaWQqIGRlZmF1
bHREaXNwbGF5ID0gbnVsbHB0cjsKLQotc3RhdGljIHZvaWQgcmVmRGVmYXVsdERpc3BsYXkodm9p
ZCogZGlzcGxheSkKLXsKLSAgICBBU1NFUlQoZGlzcGxheSAhPSBudWxscHRyKTsKLSAgICBBU1NF
UlQoZGVmYXVsdERpc3BsYXkgPT0gZGlzcGxheSB8fCAoIWRlZmF1bHREaXNwbGF5ICYmICFkZWZh
dWx0RGlzcGxheVJlZkNvdW50KSk7Ci0gICAgZGVmYXVsdERpc3BsYXlSZWZDb3VudCsrOwotICAg
IGRlZmF1bHREaXNwbGF5ID0gZGlzcGxheTsKLX0KLQotc3RhdGljIHZvaWQgdW5yZWZEZWZhdWx0
RGlzcGxheUlmTmVlZGVkKHZvaWQqIGRpc3BsYXkpCi17Ci0gICAgaWYgKCFkaXNwbGF5KQotICAg
ICAgICByZXR1cm47Ci0gICAgQVNTRVJUKGRlZmF1bHREaXNwbGF5ID09IGRpc3BsYXkpOwotICAg
IEFTU0VSVChkZWZhdWx0RGlzcGxheVJlZkNvdW50KTsKLSAgICBkZWZhdWx0RGlzcGxheVJlZkNv
dW50LS07Ci19Ci0KLVNjb3BlZEVHTERlZmF1bHREaXNwbGF5JiBTY29wZWRFR0xEZWZhdWx0RGlz
cGxheTo6b3BlcmF0b3I9KFNjb3BlZEVHTERlZmF1bHREaXNwbGF5JiYgb3RoZXIpCi17Ci0gICAg
aWYgKHRoaXMgIT0gJm90aGVyKSB7Ci0gICAgICAgIHVucmVmRGVmYXVsdERpc3BsYXlJZk5lZWRl
ZChtX2Rpc3BsYXkpOwotICAgICAgICBtX2Rpc3BsYXkgPSBzdGQ6OmV4Y2hhbmdlKG90aGVyLm1f
ZGlzcGxheSwgbnVsbHB0cik7Ci0gICAgfQotICAgIHJldHVybiAqdGhpczsKLX0KLQotU2NvcGVk
RUdMRGVmYXVsdERpc3BsYXk6OlNjb3BlZEVHTERlZmF1bHREaXNwbGF5KHZvaWQqIGRpc3BsYXkp
Ci0gICAgOiBtX2Rpc3BsYXkoZGlzcGxheSkKLXsKLSAgICByZWZEZWZhdWx0RGlzcGxheShtX2Rp
c3BsYXkpOwotfQotCi1TY29wZWRFR0xEZWZhdWx0RGlzcGxheTo6flNjb3BlZEVHTERlZmF1bHRE
aXNwbGF5KCkKLXsKLSAgICB1bnJlZkRlZmF1bHREaXNwbGF5SWZOZWVkZWQobV9kaXNwbGF5KTsK
LX0KLQotdm9pZCBTY29wZWRFR0xEZWZhdWx0RGlzcGxheTo6cmVsZWFzZUFsbFJlc291cmNlc0lm
VW51c2VkKCkKLXsKLSAgICBpZiAoZGVmYXVsdERpc3BsYXlSZWZDb3VudCkKLSAgICAgICAgcmV0
dXJuOwotICAgIGlmIChkZWZhdWx0RGlzcGxheSA9PSBudWxscHRyKQotICAgICAgICByZXR1cm47
Ci0gICAgYm9vbCByZXN1bHQgPSBFR0xfVGVybWluYXRlKGRlZmF1bHREaXNwbGF5KTsKLSAgICBB
U1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKLSAgICByZXN1bHQgPSBFR0xfUmVsZWFzZVRo
cmVhZCgpOwotICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOwotICAgIGRlZmF1bHRE
aXNwbGF5ID0gbnVsbHB0cjsKLX0KLQotfQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEVFR0xV
dGlsaXRpZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBo
aWNzQ29udGV4dEdMQU5HTEVFR0xVdGlsaXRpZXMuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggOTQ0MjA1MjBiZGU4YmEyZWU4NWQ2ODgyZjY1OGQ0NTgyZGJjZWVhMC4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFRUdMVXRpbGl0aWVzLmgK
KysrIC9kZXYvbnVsbApAQCAtMSw2MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR0wpICYm
IFVTRShBTkdMRSkKLQotI2luY2x1ZGUgPGFsZ29yaXRobT4KLSNpbmNsdWRlIDx3dGYvTm9uY29w
eWFibGUuaD4KLQotLy8gQ3VycmVudGx5IHRoaXMgbm90IHVzaW5nIEFOR0xFIGhlYWRlcnMgc2lu
Y2UgdGhpcyBpcyBleHBvcnRlZCBoZWFkZXIgYW5kIHdlIGRvIG5vdCBleHBvcnQgQU5HTEUgaGVh
ZGVycy4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBTY29wZWRFR0xEZWZhdWx0RGlz
cGxheSB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU2NvcGVkRUdMRGVmYXVsdERpc3BsYXkp
OwotcHVibGljOgotICAgIHN0YXRpYyBTY29wZWRFR0xEZWZhdWx0RGlzcGxheSBhZG9wdEluaXRp
YWxpemVkRGlzcGxheSh2b2lkKiBkaXNwbGF5KQotICAgIHsKLSAgICAgICAgQVNTRVJUKGRpc3Bs
YXkgIT0gbnVsbHB0cik7Ci0gICAgICAgIHJldHVybiBTY29wZWRFR0xEZWZhdWx0RGlzcGxheShk
aXNwbGF5KTsKLSAgICB9Ci0gICAgU2NvcGVkRUdMRGVmYXVsdERpc3BsYXkoKSA9IGRlZmF1bHQ7
Ci0gICAgU2NvcGVkRUdMRGVmYXVsdERpc3BsYXkoU2NvcGVkRUdMRGVmYXVsdERpc3BsYXkmJiBv
dGhlcikKLSAgICAgICAgOiBtX2Rpc3BsYXkoc3RkOjpleGNoYW5nZShvdGhlci5tX2Rpc3BsYXks
IG51bGxwdHIpKQotICAgIHsKLSAgICB9Ci0gICAgflNjb3BlZEVHTERlZmF1bHREaXNwbGF5KCk7
Ci0gICAgU2NvcGVkRUdMRGVmYXVsdERpc3BsYXkmIG9wZXJhdG9yPShTY29wZWRFR0xEZWZhdWx0
RGlzcGxheSYmKTsKLSAgICBvcGVyYXRvciB2b2lkKigpIGNvbnN0IHsgcmV0dXJuIG1fZGlzcGxh
eTsgfQotICAgIG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiBtX2Rpc3BsYXkgIT0gbnVs
bHB0cjsgfQotICAgIHN0YXRpYyB2b2lkIHJlbGVhc2VBbGxSZXNvdXJjZXNJZlVudXNlZCgpOwot
cHJpdmF0ZToKLSAgICBTY29wZWRFR0xEZWZhdWx0RGlzcGxheSh2b2lkKik7Ci0gICAgdm9pZCog
bV9kaXNwbGF5IHsgbnVsbHB0ciB9OwotfTsKLQotfQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5H
TEVVdGlsaXRpZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dy
YXBoaWNzQ29udGV4dEdMQU5HTEVVdGlsaXRpZXMuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggZGM3OWYxZTI0MjNmNTIxM2IwMzAxYzhjODBhNTRmNmJjYzQ0OWU5Mi4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFVXRpbGl0aWVzLmgKKysr
IC9kZXYvbnVsbApAQCAtMSwyNDUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQkdMKSAmJiBV
U0UoQU5HTEUpCi0KLSNpbmNsdWRlICJBTkdMRUhlYWRlcnMuaCIKLSNpbmNsdWRlICJHcmFwaGlj
c1R5cGVzR0wuaCIKLSNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotCi1jbGFzcyBTY29wZWRSZXN0b3JlVGV4dHVyZUJpbmRpbmcgewotICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKFNjb3BlZFJlc3RvcmVUZXh0dXJlQmluZGluZyk7Ci1wdWJsaWM6Ci0g
ICAgU2NvcGVkUmVzdG9yZVRleHR1cmVCaW5kaW5nKEdMZW51bSBiaW5kaW5nUG9pbnRRdWVyeSwg
R0xlbnVtIGJpbmRpbmdQb2ludCwgYm9vbCBjb25kaXRpb24gPSB0cnVlKQotICAgIHsKLSAgICAg
ICAgQVNTRVJUKGJpbmRpbmdQb2ludCAhPSBzdGF0aWNfY2FzdDxHTGVudW0+KDB1KSk7Ci0gICAg
ICAgIGlmIChjb25kaXRpb24pIHsKLSAgICAgICAgICAgIG1fYmluZGluZ1BvaW50ID0gYmluZGlu
Z1BvaW50OwotICAgICAgICAgICAgZ2w6OkdldEludGVnZXJ2KGJpbmRpbmdQb2ludFF1ZXJ5LCBy
ZWludGVycHJldF9jYXN0PEdMaW50Kj4oJm1fYmluZGluZ1ZhbHVlKSk7Ci0gICAgICAgIH0KLSAg
ICB9Ci0KLSAgICB+U2NvcGVkUmVzdG9yZVRleHR1cmVCaW5kaW5nKCkKLSAgICB7Ci0gICAgICAg
IGlmIChtX2JpbmRpbmdQb2ludCkKLSAgICAgICAgICAgIGdsOjpCaW5kVGV4dHVyZShtX2JpbmRp
bmdQb2ludCwgbV9iaW5kaW5nVmFsdWUpOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBHTGVudW0g
bV9iaW5kaW5nUG9pbnQgeyAwIH07Ci0gICAgR0x1aW50IG1fYmluZGluZ1ZhbHVlIHsgMHUgfTsK
LX07Ci0KLQotY2xhc3MgU2NvcGVkQnVmZmVyQmluZGluZyB7Ci0gICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoU2NvcGVkQnVmZmVyQmluZGluZyk7Ci1wdWJsaWM6Ci0gICAgU2NvcGVkQnVmZmVyQmlu
ZGluZyhHTGVudW0gYmluZGluZ1BvaW50LCBHTHVpbnQgYmluZGluZ1ZhbHVlLCBib29sIGNvbmRp
dGlvbiA9IHRydWUpCi0gICAgewotICAgICAgICBpZiAoIWNvbmRpdGlvbikKLSAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgZ2w6OkdldEludGVnZXJ2KHF1ZXJ5KGJpbmRpbmdQb2ludCksIHJl
aW50ZXJwcmV0X2Nhc3Q8R0xpbnQqPigmbV9iaW5kaW5nVmFsdWUpKTsKLSAgICAgICAgaWYgKGJp
bmRpbmdWYWx1ZSA9PSBtX2JpbmRpbmdWYWx1ZSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgbV9iaW5kaW5nUG9pbnQgPSBiaW5kaW5nUG9pbnQ7Ci0gICAgICAgIGdsOjpCaW5kQnVmZmVy
KG1fYmluZGluZ1BvaW50LCBiaW5kaW5nVmFsdWUpOwotICAgIH0KLQotICAgIH5TY29wZWRCdWZm
ZXJCaW5kaW5nKCkKLSAgICB7Ci0gICAgICAgIGlmIChtX2JpbmRpbmdQb2ludCkKLSAgICAgICAg
ICAgIGdsOjpCaW5kQnVmZmVyKG1fYmluZGluZ1BvaW50LCBtX2JpbmRpbmdWYWx1ZSk7Ci0gICAg
fQotCi1wcml2YXRlOgotICAgIHN0YXRpYyBjb25zdGV4cHIgR0xlbnVtIHF1ZXJ5KEdMZW51bSBi
aW5kaW5nUG9pbnQpCi0gICAgewotICAgICAgICBpZiAoYmluZGluZ1BvaW50ID09IEdMX1BJWEVM
X1BBQ0tfQlVGRkVSKQotICAgICAgICAgICAgcmV0dXJuIEdMX1BJWEVMX1BBQ0tfQlVGRkVSX0JJ
TkRJTkc7Ci0gICAgICAgIEFTU0VSVChiaW5kaW5nUG9pbnQgPT0gR0xfUElYRUxfVU5QQUNLX0JV
RkZFUik7Ci0gICAgICAgIHJldHVybiBHTF9QSVhFTF9VTlBBQ0tfQlVGRkVSX0JJTkRJTkc7Ci0g
ICAgfQotICAgIEdMaW50IG1fYmluZGluZ1BvaW50IHsgMCB9OwotICAgIEdMdWludCBtX2JpbmRp
bmdWYWx1ZSB7IDB1IH07Ci19OwotY2xhc3MgU2NvcGVkUmVzdG9yZVJlYWRGcmFtZWJ1ZmZlckJp
bmRpbmcgewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFNjb3BlZFJlc3RvcmVSZWFkRnJhbWVi
dWZmZXJCaW5kaW5nKTsKLXB1YmxpYzoKLSAgICBTY29wZWRSZXN0b3JlUmVhZEZyYW1lYnVmZmVy
QmluZGluZyhib29sIGlzRm9yV2ViR0wyLCBHTHVpbnQgcmVzdG9yZVZhbHVlKQotICAgICAgICA6
IG1fZnJhbWVidWZmZXJUYXJnZXQoaXNGb3JXZWJHTDIgPyBHTF9SRUFEX0ZSQU1FQlVGRkVSIDog
R0xfRlJBTUVCVUZGRVIpCi0gICAgICAgICwgbV9iaW5kaW5nVmFsdWUocmVzdG9yZVZhbHVlKQot
ICAgIHsKLSAgICB9Ci0gICAgU2NvcGVkUmVzdG9yZVJlYWRGcmFtZWJ1ZmZlckJpbmRpbmcoYm9v
bCBpc0ZvcldlYkdMMiwgR0x1aW50IHJlc3RvcmVWYWx1ZSwgR0x1aW50IHZhbHVlKQotICAgICAg
ICA6IG1fZnJhbWVidWZmZXJUYXJnZXQoaXNGb3JXZWJHTDIgPyBHTF9SRUFEX0ZSQU1FQlVGRkVS
IDogR0xfRlJBTUVCVUZGRVIpCi0gICAgICAgICwgbV9iaW5kaW5nVmFsdWUocmVzdG9yZVZhbHVl
KQotICAgIHsKLSAgICAgICAgYmluZEZyYW1lYnVmZmVyKHZhbHVlKTsKLSAgICB9Ci0gICAgdm9p
ZCBtYXJrQmluZGluZ0NoYW5nZWQoKQotICAgIHsKLSAgICAgICAgbV9iaW5kaW5nQ2hhbmdlZCA9
IHRydWU7Ci0gICAgfQotICAgIHZvaWQgYmluZEZyYW1lYnVmZmVyKEdMdWludCBiaW5kaW5nVmFs
dWUpCi0gICAgewotICAgICAgICBpZiAoIW1fYmluZGluZ0NoYW5nZWQgJiYgbV9iaW5kaW5nVmFs
dWUgPT0gYmluZGluZ1ZhbHVlKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBnbDo6Qmlu
ZEZyYW1lYnVmZmVyKG1fZnJhbWVidWZmZXJUYXJnZXQsIGJpbmRpbmdWYWx1ZSk7Ci0gICAgICAg
IG1fYmluZGluZ0NoYW5nZWQgPSBtX2JpbmRpbmdWYWx1ZSAhPSBiaW5kaW5nVmFsdWU7Ci0gICAg
fQotICAgIEdMdWludCBmcmFtZWJ1ZmZlclRhcmdldCgpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWVi
dWZmZXJUYXJnZXQ7IH0KLSAgICB+U2NvcGVkUmVzdG9yZVJlYWRGcmFtZWJ1ZmZlckJpbmRpbmco
KQotICAgIHsKLSAgICAgICAgaWYgKG1fYmluZGluZ0NoYW5nZWQpCi0gICAgICAgICAgICBnbDo6
QmluZEZyYW1lYnVmZmVyKG1fZnJhbWVidWZmZXJUYXJnZXQsIG1fYmluZGluZ1ZhbHVlKTsKLSAg
ICB9Ci1wcml2YXRlOgotICAgIGNvbnN0IEdMZW51bSBtX2ZyYW1lYnVmZmVyVGFyZ2V0OwotICAg
IEdMdWludCBtX2JpbmRpbmdWYWx1ZSB7IDB1IH07Ci0gICAgYm9vbCBtX2JpbmRpbmdDaGFuZ2Vk
IHsgZmFsc2UgfTsKLX07Ci0KLWNsYXNzIFNjb3BlZFBpeGVsU3RvcmFnZU1vZGUgewotICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKFNjb3BlZFBpeGVsU3RvcmFnZU1vZGUpOwotcHVibGljOgotICAg
IGV4cGxpY2l0IFNjb3BlZFBpeGVsU3RvcmFnZU1vZGUoR0xlbnVtIG5hbWUsIGJvb2wgY29uZGl0
aW9uID0gdHJ1ZSkKLSAgICAgICAgOiBtX25hbWUoY29uZGl0aW9uID8gbmFtZSA6IDApCi0gICAg
ewotICAgICAgICBpZiAobV9uYW1lKQotICAgICAgICAgICAgZ2w6OkdldEludGVnZXJ2KG1fbmFt
ZSwgJm1fb3JpZ2luYWxWYWx1ZSk7Ci0gICAgfQotICAgIFNjb3BlZFBpeGVsU3RvcmFnZU1vZGUo
R0xlbnVtIG5hbWUsIEdMaW50IHZhbHVlLCBib29sIGNvbmRpdGlvbiA9IHRydWUpCi0gICAgICAg
IDogbV9uYW1lKGNvbmRpdGlvbiA/IG5hbWUgOiAwKQotICAgIHsKLSAgICAgICAgaWYgKG1fbmFt
ZSkgewotICAgICAgICAgICAgZ2w6OkdldEludGVnZXJ2KG1fbmFtZSwgJm1fb3JpZ2luYWxWYWx1
ZSk7Ci0gICAgICAgICAgICBwaXhlbFN0b3JlKHZhbHVlKTsKLSAgICAgICAgfQotICAgIH0KLSAg
ICB+U2NvcGVkUGl4ZWxTdG9yYWdlTW9kZSgpCi0gICAgewotICAgICAgICBpZiAobV9uYW1lICYm
IG1fdmFsdWVDaGFuZ2VkKQotICAgICAgICAgICAgZ2w6OlBpeGVsU3RvcmVpKG1fbmFtZSwgbV9v
cmlnaW5hbFZhbHVlKTsKLSAgICB9Ci0gICAgdm9pZCBwaXhlbFN0b3JlKEdMaW50IHZhbHVlKQot
ICAgIHsKLSAgICAgICAgQVNTRVJUKG1fbmFtZSk7Ci0gICAgICAgIGlmICghbV92YWx1ZUNoYW5n
ZWQgJiYgbV9vcmlnaW5hbFZhbHVlID09IHZhbHVlKQotICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICBnbDo6UGl4ZWxTdG9yZWkobV9uYW1lLCB2YWx1ZSk7Ci0gICAgICAgIG1fdmFsdWVDaGFu
Z2VkID0gbV9vcmlnaW5hbFZhbHVlICE9IHZhbHVlOwotICAgIH0KLSAgICBvcGVyYXRvciBHTGlu
dCgpIGNvbnN0Ci0gICAgewotICAgICAgICBBU1NFUlQobV9uYW1lICYmICFtX3ZhbHVlQ2hhbmdl
ZCk7Ci0gICAgICAgIHJldHVybiBtX29yaWdpbmFsVmFsdWU7Ci0gICAgfQotcHJpdmF0ZToKLSAg
ICBjb25zdCBHTGVudW0gbV9uYW1lOwotICAgIGJvb2wgbV92YWx1ZUNoYW5nZWQgeyBmYWxzZSB9
OwotICAgIEdMaW50IG1fb3JpZ2luYWxWYWx1ZSB7IDAgfTsKLX07Ci0KLWNsYXNzIFNjb3BlZFRl
eHR1cmUgewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFNjb3BlZFRleHR1cmUpOwotcHVibGlj
OgotICAgIFNjb3BlZFRleHR1cmUoKQotICAgIHsKLSAgICAgICAgZ2w6OkdlblRleHR1cmVzKDEs
ICZtX29iamVjdCk7Ci0gICAgfQotICAgIH5TY29wZWRUZXh0dXJlKCkKLSAgICB7Ci0gICAgICAg
IGdsOjpEZWxldGVUZXh0dXJlcygxLCAmbV9vYmplY3QpOwotICAgIH0KLSAgICBvcGVyYXRvciBH
THVpbnQoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fb2JqZWN0OwotICAgIH0KLXBy
aXZhdGU6Ci0gICAgR0x1aW50IG1fb2JqZWN0IHsgMHUgfTsKLX07Ci0KLWNsYXNzIFNjb3BlZEZy
YW1lYnVmZmVyIHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTY29wZWRGcmFtZWJ1ZmZlcik7
Ci1wdWJsaWM6Ci0gICAgU2NvcGVkRnJhbWVidWZmZXIoKQotICAgIHsKLSAgICAgICAgZ2w6Okdl
bkZyYW1lYnVmZmVycygxLCAmbV9vYmplY3QpOwotICAgIH0KLSAgICB+U2NvcGVkRnJhbWVidWZm
ZXIoKQotICAgIHsKLSAgICAgICAgZ2w6OkRlbGV0ZUZyYW1lYnVmZmVycygxLCAmbV9vYmplY3Qp
OwotICAgIH0KLSAgICBvcGVyYXRvciBHTHVpbnQoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0
dXJuIG1fb2JqZWN0OwotICAgIH0KLXByaXZhdGU6Ci0gICAgR0x1aW50IG1fb2JqZWN0IHsgMCB9
OwotfTsKLQotY2xhc3MgU2NvcGVkR0xGZW5jZSB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUo
U2NvcGVkR0xGZW5jZSk7Ci1wdWJsaWM6Ci0gICAgU2NvcGVkR0xGZW5jZSgpID0gZGVmYXVsdDsK
LSAgICBTY29wZWRHTEZlbmNlKFNjb3BlZEdMRmVuY2UmJiBvdGhlcikKLSAgICAgICAgOiBtX29i
amVjdChzdGQ6OmV4Y2hhbmdlKG90aGVyLm1fb2JqZWN0LCB7IH0pKQotICAgIHsKLSAgICB9Ci0g
ICAgflNjb3BlZEdMRmVuY2UoKSB7IHJlc2V0KCk7IH0KLSAgICBTY29wZWRHTEZlbmNlJiBvcGVy
YXRvcj0oU2NvcGVkR0xGZW5jZSYmIG90aGVyKQotICAgIHsKLSAgICAgICAgaWYgKHRoaXMgIT0g
Jm90aGVyKSB7Ci0gICAgICAgICAgICByZXNldCgpOwotICAgICAgICAgICAgbV9vYmplY3QgPSBz
dGQ6OmV4Y2hhbmdlKG90aGVyLm1fb2JqZWN0LCB7IH0pOwotICAgICAgICB9Ci0gICAgICAgIHJl
dHVybiAqdGhpczsKLSAgICB9Ci0gICAgdm9pZCByZXNldCgpCi0gICAgewotICAgICAgICBpZiAo
bV9vYmplY3QpIHsKLSAgICAgICAgICAgIGdsOjpEZWxldGVTeW5jKG1fb2JqZWN0KTsKLSAgICAg
ICAgICAgIG1fb2JqZWN0ID0geyB9OwotICAgICAgICB9Ci0gICAgfQotICAgIHZvaWQgYWJhbmRv
bigpIHsgbV9vYmplY3QgPSB7IH07IH0KLSAgICB2b2lkIGZlbmNlU3luYygpCi0gICAgewotICAg
ICAgICByZXNldCgpOwotICAgICAgICBtX29iamVjdCA9IGdsOjpGZW5jZVN5bmMoR0xfU1lOQ19H
UFVfQ09NTUFORFNfQ09NUExFVEUsIDApOwotICAgIH0KLSAgICBvcGVyYXRvciBHTHN5bmMoKSBj
b25zdCB7IHJldHVybiBtX29iamVjdDsgfQotICAgIG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJl
dHVybiBtX29iamVjdDsgfQotcHJpdmF0ZToKLSAgICBHTHN5bmMgbV9vYmplY3QgeyB9OwotfTsK
LQotfQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1t
CmluZGV4IGYyNWIwOTg3ZDQ0OTQzNzM4MmQwODU3YmE0MDQ1YTIyYjRiZTgyYjguLmU0ZWUwODQ0
NTc2N2RlNTc0ZmY0MzgxMmVmYTMwZjNiODhjYzlhNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2Eu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0xDb2NvYS5tbQpAQCAtMjgsOSArMjgsOSBAQAogI2lmIEVOQUJMRShXRUJH
TCkKICNpbXBvcnQgIkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgiCiAKKyNpbXBvcnQgIkFOR0xF
VXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJDVlV0aWxpdGllcy5oIgogI2ltcG9ydCAiRXh0ZW5zaW9u
c0dMQU5HTEUuaCIKLSNpbXBvcnQgIkdyYXBoaWNzQ29udGV4dEdMQU5HTEVVdGlsaXRpZXMuaCIK
ICNpbXBvcnQgIkdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmgiCiAjaW1wb3J0
ICJHcmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFnZXIuaCIKICNpbXBvcnQgIkxvZ2dpbmcuaCIK
QEAgLTU5LDcgKzU5LDcgQEAgV1RGX1dFQUtfTElOS19GT1JDRV9JTVBPUlQoRUdMX0luaXRpYWxp
emUpOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBib29sIGlzQU5HTEVBdmFpbGFi
bGUoKQorYm9vbCBwbGF0Zm9ybUlzQU5HTEVBdmFpbGFibGUoKQogewogICAgIHJldHVybiAhIUVH
TF9Jbml0aWFsaXplOwogfQpAQCAtMTE4LDExICsxMTgsMTEgQEAgc3RhdGljIGJvb2wgcGxhdGZv
cm1TdXBwb3J0c01ldGFsKGJvb2wgaXNXZWJHTDIpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1z
dGF0aWMgU2NvcGVkRUdMRGVmYXVsdERpc3BsYXkgaW5pdGlhbGl6ZUVHTERpc3BsYXkoY29uc3Qg
R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRycykKK3N0YXRpYyBFR0xEaXNwbGF5IGlu
aXRpYWxpemVFR0xEaXNwbGF5KGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYgYXR0
cnMpCiB7Ci0gICAgaWYgKCFpc0FOR0xFQXZhaWxhYmxlKCkpIHsKKyAgICBpZiAoIXBsYXRmb3Jt
SXNBTkdMRUF2YWlsYWJsZSgpKSB7CiAgICAgICAgIFdURkxvZ0Fsd2F5cygiRmFpbGVkIHRvIGxv
YWQgQU5HTEUgc2hhcmVkIGxpYnJhcnkuIik7Ci0gICAgICAgIHJldHVybiB7IH07CisgICAgICAg
IHJldHVybiBFR0xfTk9fRElTUExBWTsKICAgICB9CiAKICAgICBFR0xpbnQgbWFqb3JWZXJzaW9u
ID0gMDsKQEAgLTE2NSw3ICsxNjUsNyBAQCBzdGF0aWMgU2NvcGVkRUdMRGVmYXVsdERpc3BsYXkg
aW5pdGlhbGl6ZUVHTERpc3BsYXkoY29uc3QgR3JhcGhpY3NDb250ZXh0R0xBdHRyaQogCiAgICAg
aWYgKEVHTF9Jbml0aWFsaXplKGRpc3BsYXksICZtYWpvclZlcnNpb24sICZtaW5vclZlcnNpb24p
ID09IEVHTF9GQUxTRSkgewogICAgICAgICBMT0coV2ViR0wsICJFR0xEaXNwbGF5IEluaXRpYWxp
emF0aW9uIGZhaWxlZC4iKTsKLSAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAgICAgcmV0dXJuIEVH
TF9OT19ESVNQTEFZOwogICAgIH0KICAgICBMT0coV2ViR0wsICJBTkdMRSBpbml0aWFsaXNlZCBN
YWpvcjogJWQgTWlub3I6ICVkIiwgbWFqb3JWZXJzaW9uLCBtaW5vclZlcnNpb24pOwogICAgIGlm
IChzaG91bGRJbml0aWFsaXplV2l0aFZvbGF0aWxlQ29udGV4dFN1cHBvcnQpIHsKQEAgLTE3NCw3
ICsxNzQsNyBAQCBzdGF0aWMgU2NvcGVkRUdMRGVmYXVsdERpc3BsYXkgaW5pdGlhbGl6ZUVHTERp
c3BsYXkoY29uc3QgR3JhcGhpY3NDb250ZXh0R0xBdHRyaQogICAgICAgICBBU1NFUlQoY2hlY2tW
b2xhdGlsZUNvbnRleHRTdXBwb3J0SWZEZXZpY2VFeGlzdHMoZGlzcGxheSwgIkVHTF9BTkdMRV9w
bGF0Zm9ybV9kZXZpY2VfY29udGV4dF92b2xhdGlsZV9lYWdsIiwgIkVHTF9BTkdMRV9kZXZpY2Vf
ZWFnbCIsIEVHTF9FQUdMX0NPTlRFWFRfQU5HTEUpKTsKICAgICAgICAgQVNTRVJUKGNoZWNrVm9s
YXRpbGVDb250ZXh0U3VwcG9ydElmRGV2aWNlRXhpc3RzKGRpc3BsYXksICJFR0xfQU5HTEVfcGxh
dGZvcm1fZGV2aWNlX2NvbnRleHRfdm9sYXRpbGVfY2dsIiwgIkVHTF9BTkdMRV9kZXZpY2VfY2ds
IiwgRUdMX0NHTF9DT05URVhUX0FOR0xFKSk7CiAgICAgfQotICAgIHJldHVybiBTY29wZWRFR0xE
ZWZhdWx0RGlzcGxheTo6YWRvcHRJbml0aWFsaXplZERpc3BsYXkoZGlzcGxheSk7CisgICAgcmV0
dXJuIGRpc3BsYXk7CiB9CiAKIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzdGF0dXNDaGVja1RocmVz
aG9sZCA9IDU7CkBAIC01MzMsNDUgKzUzMyw2IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OmNsZWFyQ3VycmVudENvbnRleHQoKQogICAgIGN1cnJlbnRDb250ZXh0ID0gbnVsbHB0cjsK
IH0KIAotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi1ib29sIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpyZWxlYXNlQ3VycmVudENvbnRleHQoUmVsZWFzZUJlaGF2aW9yIHJlbGVhc2VCZWhhdmlv
cikKLXsKLSAgICBpZiAoIWlzQU5HTEVBdmFpbGFibGUoKSkKLSAgICAgICAgcmV0dXJuIHRydWU7
Ci0KLSAgICAvLyBBdCB0aGUgbW9tZW50IHRoaXMgZnVuY3Rpb24gaXMgcmVsZXZhbnQgb25seSB3
aGVuIHdlYiB0aHJlYWQgbG9jayBvd25zIHRoZSBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCBjdXJy
ZW50IGNvbnRleHQuCi0gICAgQVNTRVJUKCFpc0N1cnJlbnRDb250ZXh0UHJlZGljdGFibGUoKSk7
Ci0KLSAgICBpZiAoIUVHTF9CaW5kQVBJKEVHTF9PUEVOR0xfRVNfQVBJKSkKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIGlmIChFR0xfR2V0Q3VycmVudENvbnRleHQoKSA9PSBFR0xfTk9fQ09O
VEVYVCkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICAvLyBBdCB0aGUgdGltZSBvZiB3cml0
aW5nLCBBTkdMRSBkb2VzIG5vdCBmbHVzaCBvbiBNYWtlQ3VycmVudC4gU2luY2Ugd2UgYXJlCi0g
ICAgLy8gcG90ZW50aWFsbHkgc3dpdGNoaW5nIHRocmVhZHMsIHdlIHNob3VsZCBmbHVzaC4KLSAg
ICAvLyBOb3RlOiBIZXJlIHdlIGFzc3VtZSBhbHNvIHRoYXQgQU5HTEUgaGFzIG9ubHkgb25lIHBs
YXRmb3JtIGNvbnRleHQgLS0gb3RoZXJ3aXNlCi0gICAgLy8gd2Ugd291bGQgbmVlZCB0byBmbHVz
aCBlYWNoIEVHTCBjb250ZXh0IHRoYXQgaGFzIGJlZW4gdXNlZC4KLSAgICBnbDo6Rmx1c2goKTsK
LQotICAgIC8vIFVuc2V0IHRoZSBFR0wgY3VycmVudCBjb250ZXh0LCBzaW5jZSB0aGUgbmV4dCBh
Y2Nlc3MgbWlnaHQgYmUgZnJvbSBhbm90aGVyIHRocmVhZCwgYW5kIHRoZQotICAgIC8vIGNvbnRl
eHQgY2Fubm90IGJlIGN1cnJlbnQgb24gbXVsdGlwbGUgdGhyZWFkcy4KLQotICAgIGlmIChyZWxl
YXNlQmVoYXZpb3IgPT0gUmVsZWFzZUJlaGF2aW9yOjpSZWxlYXNlVGhyZWFkUmVzb3VyY2VzKSB7
Ci0gICAgICAgIC8vIENhbGxlZCB3aGVuIHdlIGRvIG5vdCBrbm93IGlmIHdlIHdpbGwgZXZlciBz
ZWUgYW5vdGhlciBjYWxsIGZyb20gdGhpcyB0aHJlYWQgYWdhaW4uCi0gICAgICAgIC8vIFVuc2V0
IHRoZSBFR0wgY3VycmVudCBjb250ZXh0IGJ5IHJlbGVhc2luZyB3aG9sZSBFR0wgdGhyZWFkIHN0
YXRlLgotICAgICAgICAvLyBUaGVvcmV0aWNhbGx5IFJlbGVhc2VUaHJlYWQgY2FuIHJlc2V0IHRo
ZSBib3VuZCBBUEksIHNvIHRoZSByZXN0IG9mIHRoZSBjb2RlIG1lbnRpb25zIEJpbmRBUEkvUXVl
cnlBUEkuCi0gICAgICAgIHJldHVybiBFR0xfUmVsZWFzZVRocmVhZCgpOwotICAgIH0KLSAgICAv
LyBPbiBXZWJLaXQgb3duZWQgdGhyZWFkcywgV2ViS2l0IGlzIGFibGUgdG8gY2hvb3NlIHRoZSB0
aW1lIGZvciB0aGUgRUdMIGNsZWFudXAuCi0gICAgLy8gVGhpcyBpcyB3aHkgd2Ugb25seSB1bnNl
dCB0aGUgY29udGV4dC4KLSAgICAvLyBOb3RlOiBBdCB0aGUgdGltZSBvZiB3cml0aW5nIHRoZSBF
R0wgY2xlYW51cCBpcyBjaG9zZW4gdG8gYmUgbm90IGRvbmUgYXQgYWxsLgotICAgIEVHTERpc3Bs
YXkgZGlzcGxheSA9IEVHTF9HZXREaXNwbGF5KEVHTF9ERUZBVUxUX0RJU1BMQVkpOwotICAgIGlm
IChkaXNwbGF5ID09IEVHTF9OT19ESVNQTEFZKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
cmV0dXJuIEVHTF9NYWtlQ3VycmVudChkaXNwbGF5LCBFR0xfTk9fU1VSRkFDRSwgRUdMX05PX1NV
UkZBQ0UsIEVHTF9OT19DT05URVhUKTsKLX0KLSNlbmRpZgotCiB2b2lkIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpjaGVja0dQVVN0YXR1cygpCiB7CiAgICAgaWYgKG1fZmFpbE5leHRTdGF0dXND
aGVjaykgewpAQCAtODc3LDExICs4MzgsNiBAQCBzdGQ6Om9wdGlvbmFsPFBpeGVsQnVmZmVyPiBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZENvbXBvc2l0ZWRSZXN1bHRzKCkKICAgICByZXR1
cm4gcmVzdWx0OwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWxlYXNlQWxs
UmVzb3VyY2VzSWZVbnVzZWQoKQotewotICAgIFNjb3BlZEVHTERlZmF1bHREaXNwbGF5OjpyZWxl
YXNlQWxsUmVzb3VyY2VzSWZVbnVzZWQoKTsKLX0KLQogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0p
CiBSZWZQdHI8TWVkaWFTYW1wbGU+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpwYWludENvbXBv
c2l0ZWRSZXN1bHRzVG9NZWRpYVNhbXBsZSgpCiB7CkBAIC04OTcsNiArODUzLDEyIEBAIFJlZlB0
cjxNZWRpYVNhbXBsZT4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnBhaW50Q29tcG9zaXRlZFJl
c3VsdHNUb01lZGlhU2FtcGxlCiAgICAgcmV0dXJuIE1lZGlhU2FtcGxlQVZGT2JqQzo6Y3JlYXRl
SW1hZ2VTYW1wbGUoV1RGTW92ZSgqcGl4ZWxCdWZmZXIpLCBNZWRpYVNhbXBsZUFWRk9iakM6OlZp
ZGVvUm90YXRpb246OlVwc2lkZURvd24sIHRydWUpOwogfQogI2VuZGlmCisKK3ZvaWQgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OnBsYXRmb3JtUmVsZWFzZVJlc291cmNlcygpCit7CisgICAgY3Vy
cmVudENvbnRleHQgPSBudWxscHRyOworfQorCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoV0VCR0wp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0wuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmNwcAppbmRleCBmOGIyMGFjNzZkMWJk
ZTlmM2EyODYwYWI5YTJjNDQ5N2U1YjYyN2Y0Li4wM2NiMzBjYWY3MWZkZWU1MzE0NjUyYTI5MzMz
Y2NlNTQyYTkzMWNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5jcHAKQEAg
LTc1LDYgKzc1LDE2IEBAIEdDR0xiaXRmaWVsZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0
QnVmZmVyc1RvQXV0b0NsZWFyKCkgY29uc3QKICAgICByZXR1cm4gbV9idWZmZXJzVG9BdXRvQ2xl
YXI7CiB9CiAKKyNpZiAhVVNFKEFOR0xFKQorYm9vbCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
cmVsZWFzZVJlc291cmNlcyhSZWxlYXNlUmVzb3VyY2VzQmVoYXZpb3IpCit7Cit9CisKK3ZvaWQg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnBsYXRmb3JtUmVsZWFzZVJlc291cmNlcygpCit7Cit9
CisjZW5kaWYKKwogI2lmICFVU0UoQU5HTEUpCiBib29sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
Ojp0ZXhJbWFnZTJEUmVzb3VyY2VTYWZlKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwg
R0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdo
dCwgR0NHTGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTGlu
dCB1bnBhY2tBbGlnbm1lbnQpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oCmlu
ZGV4IGZlNTlkZWIwOWQ4OGNlN2FkNThhZDUyMDkwYzRlNTYwNGEzN2IyMmUuLmZjMjYyOGJkOGUz
NDI3ZmJmYmE5NzE5ZTZiOTJiM2RhZGNmYmNlNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRH
TE9wZW5HTC5oCkBAIC0zNyw3ICszNyw2IEBACiAjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgog
CiAjaWYgUExBVEZPUk0oQ09DT0EpCi0jaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0R0xBTkdMRUVH
TFV0aWxpdGllcy5oIgogI2luY2x1ZGUgIklPU3VyZmFjZS5oIgogI2VuZGlmCiAKQEAgLTQ2LDcg
KzQ1LDcgQEAKICNlbmRpZgogCiAjaWYgVVNFKEFOR0xFKQotI2luY2x1ZGUgIkdyYXBoaWNzQ29u
dGV4dEdMQU5HTEVVdGlsaXRpZXMuaCIKKyNpbmNsdWRlICJBTkdMRVV0aWxpdGllcy5oIgogI2Vs
c2UKICNpbmNsdWRlICJBTkdMRVdlYktpdEJyaWRnZS5oIgogI2luY2x1ZGUgIkV4dGVuc2lvbnNH
TE9wZW5HTENvbW1vbi5oIgpAQCAtMTE5LDE3ICsxMTgsMTYgQEAgcHVibGljOgogI2lmIFVTRShB
TkdMRSkKICAgICBzdGF0aWMgR0NHTGVudW0gZHJhd2luZ0J1ZmZlclRleHR1cmVUYXJnZXQoKTsK
ICNlbmRpZgotCi0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBlbnVtIGNsYXNzIFJlbGVh
c2VCZWhhdmlvciB7Ci0gICAgICAgIFByZXNlcnZlVGhyZWFkUmVzb3VyY2VzLAotICAgICAgICBS
ZWxlYXNlVGhyZWFkUmVzb3VyY2VzCisgICAgZW51bSBjbGFzcyBSZWxlYXNlUmVzb3VyY2VzQmVo
YXZpb3IgeworICAgICAgICAvLyBSZWxlYXNlcyBjdXJyZW50IGNvbnRleHQgYWZ0ZXIgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0wgY2FsbHMgZG9uZSBpbiB0aGUgdGhyZWFkLgorICAgICAgICBSZWxl
YXNlQ3VycmVudENvbnRleHQsCisgICAgICAgIC8vIFJlbGVhc2VzIGFsbCB0aHJlYWQgcmVzb3Vy
Y2VzIGFmdGVyIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMIGNhbGxzIGRvbmUgaW4gdGhlIHRocmVh
ZC4KKyAgICAgICAgUmVsZWFzZVRocmVhZFJlc291cmNlcywKKyAgICAgICAgLy8gUmVsZWFzZXMg
YWxsIGdsb2JhbCBzdGF0ZS4gU2hvdWxkIGJlIHVzZWQgb25seSBhZnRlciBhbGwgZGVwZW5kaW5n
IG9iamVjdHMgaGF2ZQorICAgICAgICAvLyBiZWVuIHJlbGVhc2VkLgorICAgICAgICBUZXJtaW5h
dGVBbmRSZWxlYXNlVGhyZWFkUmVzb3VyY2VzCiAgICAgfTsKLSAgICBzdGF0aWMgYm9vbCByZWxl
YXNlQ3VycmVudENvbnRleHQoUmVsZWFzZUJlaGF2aW9yKTsKLSNlbmRpZgotI2lmIFBMQVRGT1JN
KENPQ09BKQotICAgIHN0YXRpYyB2b2lkIHJlbGVhc2VBbGxSZXNvdXJjZXNJZlVudXNlZCgpOwot
I2VuZGlmCisgICAgc3RhdGljIGJvb2wgcmVsZWFzZVJlc291cmNlcyhSZWxlYXNlUmVzb3VyY2Vz
QmVoYXZpb3IpOwogCiAgICAgLy8gV2l0aCBtdWx0aXNhbXBsaW5nIG9uLCBibGl0IGZyb20gbXVs
dGlzYW1wbGVGQk8gdG8gcmVndWxhciBGQk8uCiAgICAgdm9pZCBwcmVwYXJlVGV4dHVyZSgpOwpA
QCAtNTgyLDEyICs1ODAsMTUgQEAgcHJpdmF0ZToKICAgICAvLyBSZXR1cm5zIGZhbHNlIGlmIGNv
bnRleHQgc2hvdWxkIGJlIGxvc3QgZHVlIHRvIHRpbWVvdXQuCiAgICAgYm9vbCB3YWl0QW5kVXBk
YXRlT2xkZXN0RnJhbWUoKSBXQVJOX1VOVVNFRF9SRVRVUk47CiAjZW5kaWYKKyAgICAvLyBQbGF0
Zm9ybSBzcGVjaWZpYyBiZWhhdmlvciBmb3IgcmVsZWFzZVJlc291cmNlcygpOworICAgIHN0YXRp
YyB2b2lkIHBsYXRmb3JtUmVsZWFzZVJlc291cmNlcygpOworCiAKICNpZiBQTEFURk9STShDT0NP
QSkKICAgICBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbiogbV9zd2FwQ2hhaW4g
eyBudWxscHRyIH07CiAgICAgLy8gVE9ETzogdGhpcyBzaG91bGQgYmUgcmVtb3ZlZCBvbmNlIHRo
ZSBjb250ZXh0IGRyYXdzIHRvIGEgaW1hZ2UgYnVmZmVyLiBTZWUgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIxODE3OSAuCiAgICAgUmV0YWluUHRyPFdlYkdMTGF5ZXI+
IG1fd2ViR0xMYXllcjsKLSAgICBTY29wZWRFR0xEZWZhdWx0RGlzcGxheSBtX2Rpc3BsYXlPYmo7
CisgICAgRUdMRGlzcGxheSBtX2Rpc3BsYXlPYmogeyBudWxscHRyIH07CiAgICAgUGxhdGZvcm1H
cmFwaGljc0NvbnRleHRHTCBtX2NvbnRleHRPYmogeyBudWxscHRyIH07CiAgICAgUGxhdGZvcm1H
cmFwaGljc0NvbnRleHRHTENvbmZpZyBtX2NvbmZpZ09iaiB7IG51bGxwdHIgfTsKICNlbmRpZiAv
LyBQTEFURk9STShDT0NPQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lv
cy93YWsvV2ViQ29yZVRocmVhZC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsv
V2ViQ29yZVRocmVhZC5tbQppbmRleCAwMDI2NjRlM2UxNjY5ZmYzMjhkYjliOTUyOTFhODhiNTA0
MTc5YzM4Li44YzM2YjI1ZGU2ODE5OTBkNjVmNjIwZjc0ZmI4ZmMyNDAzOGFmZmVjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dlYkNvcmVUaHJlYWQubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkLm1tCkBAIC03
MCwxNyArNzAsMjAgQEAgbmFtZXNwYWNlIHsKIC8vIGFzIGFueSBjbGllbnQgdGhyZWFkIHRoYXQg
Y2FsbHMgaW50byBXZWJLaXQuCiB2b2lkIFJlbGVhc2VXZWJUaHJlYWRHbG9iYWxTdGF0ZSgpCiB7
Ci0gICAgLy8gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wgY3VycmVudCBjb250ZXh0IGlzIG93bmVk
IGJ5IHRoZSB3ZWIgdGhyZWFkIGxvY2suIFJlbGVhc2UgdGhlIGNvbnRleHQKKyAgICAvLyBBTkdM
RSBtYWludGFpbnMgdGhyZWFkIGdsb2JhbCBzdGF0ZSBmb3IgaXRzIGN1cnJlbnQgY29udGV4dC4K
KyAgICAvLyBUaGlzIGlzIGNvbmNlcHR1YWxseSBvd25lZCBieSB0aGUgd2ViIHRocmVhZCBsb2Nr
LiBSZWxlYXNlIHRoZSBjb250ZXh0CiAgICAgLy8gYmVmb3JlIHRoZSBsb2NrIGlzIHJlbGVhc2Vk
LgogCiAgICAgLy8gSW4gc2luZ2xlLXRocmVhZGVkIGVudmlyb25tZW50cyB3ZSBkbyBub3QgbmVl
ZCB0byB1bnNldCB0aGUgY29udGV4dCwgYXMgdGhlcmUgc2hvdWxkIG5vdCBiZSBhY2Nlc3MgZnJv
bQogICAgIC8vIG11bHRpcGxlIHRocmVhZHMuCiAgICAgQVNTRVJUKFdlYlRocmVhZElzRW5hYmxl
ZCgpKTsKLSAgICB1c2luZyBSZWxlYXNlQmVoYXZpb3IgPSBXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6UmVsZWFzZUJlaGF2aW9yOwotICAgIC8vIEZvciBub24td2ViIHRocmVhZHMs
IHdlIGRvbid0IGtub3cgaWYgd2UgZXZlciBzZWUgYW5vdGhlciBjYWxsIGZyb20gdGhlIHRocmVh
ZC4KLSAgICBSZWxlYXNlQmVoYXZpb3IgcmVsZWFzZUJlaGF2aW9yID0KLSAgICAgICAgV2ViVGhy
ZWFkSXNDdXJyZW50KCkgPyBSZWxlYXNlQmVoYXZpb3I6OlByZXNlcnZlVGhyZWFkUmVzb3VyY2Vz
IDogUmVsZWFzZUJlaGF2aW9yOjpSZWxlYXNlVGhyZWFkUmVzb3VyY2VzOwotICAgIFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWxlYXNlQ3VycmVudENvbnRleHQocmVsZWFzZUJl
aGF2aW9yKTsKKyAgICB1c2luZyBSZWxlYXNlUmVzb3VyY2VzQmVoYXZpb3IgPSBXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6UmVsZWFzZVJlc291cmNlc0JlaGF2aW9yOworICAgIC8v
IEZvciB3ZWIgdGhyZWFkLCBqdXN0IHJlbGVhc2UgdGhlIGNvbnRleHQgYXMgd2Uga25vdyB3ZSB3
aWxsIHNlZSBjYWxscyB0byBpdCBhZ2Fpbi4KKyAgICAvLyBGb3Igbm9uLXdlYiB0aHJlYWRzLCBl
LmcuIHRoaXJkLXBhcnR5IGNsaWVudCB0aHJlYWRzLCB3ZSBkb24ndCBrbm93IGlmIHdlIGV2ZXIg
c2VlIGFub3RoZXIgY2FsbCBmcm9tIHRoZQorICAgIC8vIHRocmVhZCwgc28gd2UgYWxzbyByZWxl
YXNlIHRoZSB0aHJlYWQgcmVzb3VyY2VzLgorICAgIFJlbGVhc2VSZXNvdXJjZXNCZWhhdmlvciBy
ZWxlYXNlQmVoYXZpb3IgPQorICAgICAgICBXZWJUaHJlYWRJc0N1cnJlbnQoKSA/IFJlbGVhc2VS
ZXNvdXJjZXNCZWhhdmlvcjo6UmVsZWFzZUN1cnJlbnRDb250ZXh0IDogUmVsZWFzZVJlc291cmNl
c0JlaGF2aW9yOjpSZWxlYXNlVGhyZWFkUmVzb3VyY2VzOworICAgIFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDo6cmVsZWFzZVJlc291cmNlcyhyZWxlYXNlQmVoYXZpb3IpOwogfQogCiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvU2NvcGVkV2ViR0xSZW5k
ZXJpbmdSZXNvdXJjZXNSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFw
aGljcy9TY29wZWRXZWJHTFJlbmRlcmluZ1Jlc291cmNlc1JlcXVlc3QuY3BwCmluZGV4IDBmNzVk
ODI1NDgwMzY1NDk4NWZlMDU4MTRlZTNiZDEzNGU0ODFhZTYuLjEyOGQzODAzNzk1MGNlZGVhYWVl
ZTBiOThiMDJlNTM5N2E4MGFmMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9ncmFwaGljcy9TY29wZWRXZWJHTFJlbmRlcmluZ1Jlc291cmNlc1JlcXVlc3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9TY29wZWRXZWJHTFJlbmRlcmluZ1Jl
c291cmNlc1JlcXVlc3QuY3BwCkBAIC0yNiwyMCArMjYsMzggQEAKICNpbmNsdWRlICJjb25maWcu
aCIKICNpbmNsdWRlICJTY29wZWRXZWJHTFJlbmRlcmluZ1Jlc291cmNlc1JlcXVlc3QuaCIKIAor
I2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQkdMKQorCisjaW5jbHVkZSAiUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0wuaCIKKyNpbmNsdWRlICJTdHJlYW1Db25uZWN0aW9uV29ya1F1
ZXVlLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHRHTC5oPgorI2luY2x1ZGUg
PHd0Zi9SdW5Mb29wLmg+CisjaW5jbHVkZSA8d3RmL1NlY29uZHMuaD4KKwogbmFtZXNwYWNlIFdl
YktpdCB7CiAKIHN0ZDo6YXRvbWljPHVuc2lnbmVkPiBTY29wZWRXZWJHTFJlbmRlcmluZ1Jlc291
cmNlc1JlcXVlc3Q6OnNfcmVxdWVzdHM7Ci0KLSNpZiAhUExBVEZPUk0oQ09DT0EpCitzdGF0aWMg
Y29uc3RleHByIFNlY29uZHMgZnJlZVdlYkdMUmVuZGVyaW5nUmVzb3VyY2VzVGltZW91dCA9IDFf
czsKK3N0YXRpYyBib29sIGRpZFNjaGVkdWxlRnJlZVdlYkdMUmVuZGVyaW5nUmVzb3VyY2VzOwog
CiB2b2lkIFNjb3BlZFdlYkdMUmVuZGVyaW5nUmVzb3VyY2VzUmVxdWVzdDo6c2NoZWR1bGVGcmVl
V2ViR0xSZW5kZXJpbmdSZXNvdXJjZXMoKQogeworICAgIGlmIChkaWRTY2hlZHVsZUZyZWVXZWJH
TFJlbmRlcmluZ1Jlc291cmNlcykKKyAgICAgICAgcmV0dXJuOworICAgIFJ1bkxvb3A6Om1haW4o
KS5kaXNwYXRjaEFmdGVyKGZyZWVXZWJHTFJlbmRlcmluZ1Jlc291cmNlc1RpbWVvdXQsIGZyZWVX
ZWJHTFJlbmRlcmluZ1Jlc291cmNlcyk7CisgICAgZGlkU2NoZWR1bGVGcmVlV2ViR0xSZW5kZXJp
bmdSZXNvdXJjZXMgPSB0cnVlOwogfQogCiB2b2lkIFNjb3BlZFdlYkdMUmVuZGVyaW5nUmVzb3Vy
Y2VzUmVxdWVzdDo6ZnJlZVdlYkdMUmVuZGVyaW5nUmVzb3VyY2VzKCkKIHsKKyAgICBkaWRTY2hl
ZHVsZUZyZWVXZWJHTFJlbmRlcmluZ1Jlc291cmNlcyA9IGZhbHNlOworICAgIGlmIChzX3JlcXVl
c3RzKQorICAgICAgICByZXR1cm47CisgICAgcmVtb3RlR3JhcGhpY3NDb250ZXh0R0xTdHJlYW1X
b3JrUXVldWUoKS5kaXNwYXRjaChbXSB7CisgICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpyZWxlYXNlUmVzb3VyY2VzKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpSZWxlYXNlUmVzb3VyY2VzQmVoYXZpb3I6OlRlcm1pbmF0ZUFuZFJlbGVhc2VUaHJlYWRS
ZXNvdXJjZXMpOworICAgIH0pOwogfQogCi0jZW5kaWYKLQogfQorCisjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9TY29wZWRXZWJHTFJlbmRlcmlu
Z1Jlc291cmNlc1JlcXVlc3QuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9T
Y29wZWRXZWJHTFJlbmRlcmluZ1Jlc291cmNlc1JlcXVlc3QuaAppbmRleCBjMGVkNGVlZDNjZTlk
NzQ5MTY0MmM0NjE2MzFiMDEzYzExNzg2ZDA4Li4yY2I1MGIzYmNmMjYxNzFkZDI0NzE3YmFhNWI1
MTM1YjAwYWVhN2FkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhp
Y3MvU2NvcGVkV2ViR0xSZW5kZXJpbmdSZXNvdXJjZXNSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1Njb3BlZFdlYkdMUmVuZGVyaW5nUmVzb3VyY2VzUmVx
dWVzdC5oCkBAIC0yNSw2ICsyNSw4IEBACiAKICNwcmFnbWEgb25jZQogCisjaWYgRU5BQkxFKEdQ
VV9QUk9DRVNTKSAmJiBFTkFCTEUoV0VCR0wpCisKICNpbmNsdWRlICJTY29wZWRSZW5kZXJpbmdS
ZXNvdXJjZXNSZXF1ZXN0LmgiCiAjaW5jbHVkZSA8YXRvbWljPgogI2luY2x1ZGUgPHd0Zi9TdGRM
aWJFeHRyYXMuaD4KQEAgLTgyLDMgKzg0LDUgQEAgcHJpdmF0ZToKIH07CiAKIH0KKworI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvU2NvcGVkV2Vi
R0xSZW5kZXJpbmdSZXNvdXJjZXNSZXF1ZXN0Q29jb2EuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL2dyYXBoaWNzL1Njb3BlZFdlYkdMUmVuZGVyaW5nUmVzb3VyY2VzUmVxdWVzdENvY29h
LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzFiMzNmY2Q1Y2ZmMzQ3MmQ0MTdl
OTk1MTFjMDcyZTg0OGU3YTlhNy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvU2NvcGVkV2ViR0xS
ZW5kZXJpbmdSZXNvdXJjZXNSZXF1ZXN0Q29jb2EuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNjAg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
LSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0g
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJTY29w
ZWRXZWJHTFJlbmRlcmluZ1Jlc291cmNlc1JlcXVlc3QuaCIKLQotI2lmIFBMQVRGT1JNKENPQ09B
KQotCi0jaW5jbHVkZSAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaCIKLSNpbmNsdWRlICJTdHJl
YW1Db25uZWN0aW9uV29ya1F1ZXVlLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0NvbnRl
eHRHTC5oPgotI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+Ci0jaW5jbHVkZSA8d3RmL1NlY29uZHMu
aD4KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLXN0YXRpYyBjb25zdGV4cHIgU2Vjb25kcyBmcmVl
V2ViR0xSZW5kZXJpbmdSZXNvdXJjZXNUaW1lb3V0ID0gMV9zOwotc3RhdGljIGJvb2wgZGlkU2No
ZWR1bGVGcmVlV2ViR0xSZW5kZXJpbmdSZXNvdXJjZXM7Ci0KLXZvaWQgU2NvcGVkV2ViR0xSZW5k
ZXJpbmdSZXNvdXJjZXNSZXF1ZXN0OjpzY2hlZHVsZUZyZWVXZWJHTFJlbmRlcmluZ1Jlc291cmNl
cygpCi17Ci0gICAgaWYgKGRpZFNjaGVkdWxlRnJlZVdlYkdMUmVuZGVyaW5nUmVzb3VyY2VzKQot
ICAgICAgICByZXR1cm47Ci0gICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoQWZ0ZXIoZnJlZVdl
YkdMUmVuZGVyaW5nUmVzb3VyY2VzVGltZW91dCwgZnJlZVdlYkdMUmVuZGVyaW5nUmVzb3VyY2Vz
KTsKLSAgICBkaWRTY2hlZHVsZUZyZWVXZWJHTFJlbmRlcmluZ1Jlc291cmNlcyA9IHRydWU7Ci19
Ci0KLXZvaWQgU2NvcGVkV2ViR0xSZW5kZXJpbmdSZXNvdXJjZXNSZXF1ZXN0OjpmcmVlV2ViR0xS
ZW5kZXJpbmdSZXNvdXJjZXMoKQotewotICAgIGRpZFNjaGVkdWxlRnJlZVdlYkdMUmVuZGVyaW5n
UmVzb3VyY2VzID0gZmFsc2U7Ci0gICAgaWYgKHNfcmVxdWVzdHMpCi0gICAgICAgIHJldHVybjsK
LSAgICByZW1vdGVHcmFwaGljc0NvbnRleHRHTFN0cmVhbVdvcmtRdWV1ZSgpLmRpc3BhdGNoKEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWxlYXNlQWxsUmVzb3VyY2VzSWZVbnVzZWQpOwotfQot
Ci19Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0
IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IDVlNmI1MmMxMjExNDZjNmQ1
M2FjZTY2NWQ2NWMyNTZmZGU1ZTk1OTMuLjgyZjQ2Y2U0NGIxNzc0ZTEzZGI3YWY0M2M3YmNiNGM3
OGJhYmQ2NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKQEAgLTY2LDcgKzY2LDYgQEAgR1BVUHJv
Y2Vzcy9jb2NvYS9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzQ29jb2EubW0KIEdQVVByb2Nlc3Mv
Y29jb2EvR1BVUHJvY2Vzc0NvY29hLm1tCiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBo
aWNzQ29udGV4dEdMQ29jb2EuY3BwCiBHUFVQcm9jZXNzL2dyYXBoaWNzL1Njb3BlZFJlbmRlcmlu
Z1Jlc291cmNlc1JlcXVlc3RDb2NvYS5tbSBAbm8tdW5pZnkKLUdQVVByb2Nlc3MvZ3JhcGhpY3Mv
U2NvcGVkV2ViR0xSZW5kZXJpbmdSZXNvdXJjZXNSZXF1ZXN0Q29jb2EuY3BwCiBHUFVQcm9jZXNz
L2lvcy9HUFVQcm9jZXNzSU9TLm1tCiBHUFVQcm9jZXNzL21hYy9HUFVQcm9jZXNzTWFjLm1tCiBH
UFVQcm9jZXNzL21hYy9Mb2NhbEF1ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJhdG9yLmNwcApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBi
L1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZDFj
Njk1MTViYjE4MmRmYTVhNTQwNzc0ODY0ZjczZWMyOThjNDFkOS4uOTlmMWRiZWYxMjUwYjJmZmQ5
OGU0NWZjOGE1ZTRlMzI4YmRhZjFhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0zLDcgKzMsNyBAQAogCWFyY2hpdmVWZXJzaW9uID0g
MTsKIAljbGFzc2VzID0gewogCX07Ci0Jb2JqZWN0VmVyc2lvbiA9IDUyOworCW9iamVjdFZlcnNp
b24gPSA1NDsKIAlvYmplY3RzID0gewogCiAvKiBCZWdpbiBQQlhBZ2dyZWdhdGVUYXJnZXQgc2Vj
dGlvbiAqLwpAQCAtNDc2MCw3ICs0NzYwLDYgQEAKIAkJN0JDRjcwQ0MyNjE0OTM1RjAwRTRGQjcw
IC8qIFNjb3BlZFdlYkdMUmVuZGVyaW5nUmVzb3VyY2VzUmVxdWVzdC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBTY29wZWRXZWJHTFJlbmRlcmluZ1Jlc291cmNlc1JlcXVlc3QuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk3QkNGNzBDRDI2MTQ5MzVGMDBFNEZCNzAgLyogU2NvcGVk
UmVuZGVyaW5nUmVzb3VyY2VzUmVxdWVzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY29wZWRSZW5kZXJp
bmdSZXNvdXJjZXNSZXF1ZXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCQ0Y3
MENFMjYxNDkzNUYwMEU0RkI3MCAvKiBTY29wZWRXZWJHTFJlbmRlcmluZ1Jlc291cmNlc1JlcXVl
c3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gU2NvcGVkV2ViR0xSZW5kZXJpbmdSZXNvdXJjZXNSZXF1ZXN0
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTdCQ0Y3MENGMjYxNDk3RTYwMEU0RkI3
MCAvKiBTY29wZWRXZWJHTFJlbmRlcmluZ1Jlc291cmNlc1JlcXVlc3RDb2NvYS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBTY29wZWRXZWJHTFJlbmRlcmluZ1Jlc291cmNlc1JlcXVlc3RDb2NvYS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCRTcyNjU3MjU3NEY2NzIwMEU4NUQ5
OCAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5RnVuY3Rpb25zR2VuZXJhdGVkLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlGdW5jdGlvbnNH
ZW5lcmF0ZWQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QkU3MjY2ODI1NzY4
MEVGMDBFODVEOTggLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJN0MwNjVGMjkxQzhDRDk1RjAwQzJEOTUwIC8qIFdlYlVzZXJDb250
ZW50Q29udHJvbGxlckRhdGFUeXBlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJEYXRhVHlwZXMuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtOTEwNCw3ICs5MTAzLDYgQEAKIAkJCQk3QkNGNzBDQjI2MTQ5
MzVFMDBFNEZCNzAgLyogU2NvcGVkUmVuZGVyaW5nUmVzb3VyY2VzUmVxdWVzdENvY29hLm1tICov
LAogCQkJCTdCQ0Y3MENDMjYxNDkzNUYwMEU0RkI3MCAvKiBTY29wZWRXZWJHTFJlbmRlcmluZ1Jl
c291cmNlc1JlcXVlc3QuY3BwICovLAogCQkJCTdCQ0Y3MENFMjYxNDkzNUYwMEU0RkI3MCAvKiBT
Y29wZWRXZWJHTFJlbmRlcmluZ1Jlc291cmNlc1JlcXVlc3QuaCAqLywKLQkJCQk3QkNGNzBDRjI2
MTQ5N0U2MDBFNEZCNzAgLyogU2NvcGVkV2ViR0xSZW5kZXJpbmdSZXNvdXJjZXNSZXF1ZXN0Q29j
b2EuY3BwICovLAogCQkJKTsKIAkJCXBhdGggPSBncmFwaGljczsKIAkJCXNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7Cg==
</data>
<flag name="commit-queue"
          id="463480"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>439755</attachid>
            <date>2021-09-30 10:26:56 -0700</date>
            <delta_ts>2021-10-01 05:17:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231011-20210930202654.patch</filename>
            <type>text/plain</type>
            <size>63025</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgzMzAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWE0ZDJmY2U1MGM0ZDY4
MzNjYjk0ZmNmMDc2NjkzMjhmM2NiNjFlMC4uMmRiZDQ2ZDQ2ZTU1ODQ3MDMzMzQxYWIxMWFhZjll
NzhmNDhiNzM3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYyIEBACisyMDIxLTA5LTMwICBLaW1t
byBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgU2NvcGVkRUdMRGVm
YXVsdERpc3BsYXkgc2hvdWxkIGJlIHJlbW92ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMTAxMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEhhcmQtY29kaW5nIHRoZSBjb2RlIHRvIEVHTF9ERUZBVUxU
X0RJU1BMQVkgb25seSBhbmQgdXNpbmcgdGhlIHNjb3BlZAorICAgICAgICBob2xkZXIgaXMgbWFr
aW5nIHRoZSBFR0xEaXNwbGF5cyBoYXJkZXIgdG8gdXNlIHRoYW4gbmVjY2Vzc2FyeS4gVGhlCisg
ICAgICAgIGltcGxlbWVudGF0aW9uIHRhcmdldCwgZS5nLiB0aGUgYWJpbGl0eSB0byBjYWxsIEVH
TFRlcm1pbmF0ZSwgd2FzIGFsc28gYSBiaXQKKyAgICAgICAgbW9yZSBjb252b2x1dGVkIHRoYW4g
bmVlZGVkLgorCisgICAgICAgIE1vdmUgdGhlICJjYWxsIEVHTFRlcm1pbmF0ZSIgbG9naWMgZnJv
bSBhIGJpdCBjb252b2x1dGVkIHJlZmNvdW50IG1lY2hhbmlzbQorICAgICAgICBpbiBTY29wZWRF
R0xEZWZhdWx0RGlzcGxheSB0byB0aGUgZXhwbGljaXQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OnJlbGVhc2VSZXNvdXJjZXMoKS4KKyAgICAgICAgVGhlIGNhbGxlcnMgYXJlIGV4cGVjdGVkIHRv
IGRvIHRoZSByZWZjb3VudGluZyBhbnl3YXksIGFzIHRoZSBleGlzdGluZyBjbGllbnQKKyAgICAg
ICAgV2ViS2l0OjpTY29wZWRXZWJHTFJlbmRlcmluZ1Jlc291cmNlc1JlcXVlc3QgYWxyZWFkeSBk
aWQuCisKKyAgICAgICAgTWFrZSBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVsZWFzZVJlc291
cmNlcygpIGF2YWlsYWJsZSBvbiBhbGwgcGxhdGZvcm1zLgorICAgICAgICBJdCBpcyBpbXBsZW1l
bnRlZCBvbiBhbGwgQU5HTEUgaW1wbGVtZW50YXRpb25zLgorICAgICAgICBQbGF0Zm9ybXMgY2Fu
IGF1Z21lbnQgdGhlIGltcGxlbWVudGF0aW9uIGJ5IGltcGxlbWVudGluZworICAgICAgICBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6cGxhdGZvcm1SZWxlYXNlUmVzb3VyY2VzKCkuIEZvciBDb2Nv
YSwgdGhpcyBmdW5jdGlvbgorICAgICAgICByZXNldHMgdGhlIGN1cnJlbnRDb250ZXh0IGNhY2hl
IHRoYXQgaXMgdXNlZCB0byBvcHRpbWl6ZSBtYWtpbmcgY29udGV4dCBjdXJyZW50LgorCisgICAg
ICAgIE5vIG5ldyB0ZXN0cywgcmVmYWN0b3IuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoK
KyAgICAgICAgKiBIZWFkZXJzLmNtYWtlOgorICAgICAgICAqIFBsYXRmb3JtTWFjLmNtYWtlOgor
ICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0FOR0xF
VXRpbGl0aWVzLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEVFR0xVdGlsaXRpZXMuaC4KKyAgICAgICAg
KFdlYkNvcmU6OnBsYXRmb3JtSXNBTkdMRUF2YWlsYWJsZSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvYW5nbGUvQU5HTEVVdGlsaXRpZXMuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEVVdGlsaXRp
ZXMuaC4KKyAgICAgICAgUmVuYW1lIEdyYXBoaWNzQ29udGV4dEdMQU5HTEVVdGlsaXRpZXMgdG8g
c2ltcGxlciBhbmQgbW9yZSBkZXNjcmlwdGl2ZSBBTkdMRVV0aWxpdGllcy4KKyAgICAgICAgQWRk
IHRoZSBpc0FOR0xFQXZhaWxhYmxlIHRvIHRoZXJlLgorCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVsZWFzZVJlc291cmNlcyk6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cGxhdGZvcm1SZWxlYXNlUmVzb3VyY2Vz
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFO
R0xFRUdMVXRpbGl0aWVzLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKFdlYkNvcmU6OnJlZkRlZmF1
bHREaXNwbGF5KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnVucmVmRGVmYXVsdERpc3Bs
YXlJZk5lZWRlZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTY29wZWRFR0xEZWZhdWx0
RGlzcGxheTo6b3BlcmF0b3I9KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNjb3BlZEVH
TERlZmF1bHREaXNwbGF5OjpTY29wZWRFR0xEZWZhdWx0RGlzcGxheSk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpTY29wZWRFR0xEZWZhdWx0RGlzcGxheTo6flNjb3BlZEVHTERlZmF1bHRE
aXNwbGF5KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNjb3BlZEVHTERlZmF1bHREaXNw
bGF5OjpyZWxlYXNlQWxsUmVzb3VyY2VzSWZVbnVzZWQpOiBEZWxldGVkLgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW06Cisg
ICAgICAgIChXZWJDb3JlOjpwbGF0Zm9ybUlzQU5HTEVBdmFpbGFibGUpOgorICAgICAgICAoV2Vi
Q29yZTo6aW5pdGlhbGl6ZUVHTERpc3BsYXkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OnBsYXRmb3JtUmVsZWFzZVJlc291cmNlcyk6CisgICAgICAgIChXZWJD
b3JlOjppc0FOR0xFQXZhaWxhYmxlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpyZWxlYXNlQ3VycmVudENvbnRleHQpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlbGVhc2VBbGxSZXNvdXJj
ZXNJZlVudXNlZCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3Blbmds
L0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpyZWxlYXNlUmVzb3VyY2VzKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpwbGF0Zm9ybVJlbGVhc2VSZXNvdXJjZXMpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2lvcy93YWsvV2ViQ29yZVRocmVhZC5tbToKKwogMjAyMS0wOS0y
OSAgS2ltbW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgogCiAgICAgICAgIEdQVVAg
Q29jb2EgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wgc2hvdWxkIGNoZWNrIGZvciBBTkdMRSBwcmVz
ZW5jZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwppbmRleCAzNmI5MjVkZTUzOTQyOGUwNjBhYmNmNmE0Y2M5ODQzMGU2ZjY2MjZi
Li43ZTMzMjdiMzViMTJhMjgwOTQ4NDM0ZWUwMGY1M2FlM2M2NmY2YWRjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAt
MSwzICsxLDI3IEBACisyMDIxLTA5LTMwICBLaW1tbyBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBs
ZS5jb20+CisKKyAgICAgICAgU2NvcGVkRUdMRGVmYXVsdERpc3BsYXkgc2hvdWxkIGJlIHJlbW92
ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMTAx
MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxl
bWVudCB0aGUgcmVsZWFzZSBvZiBXZWJHTCByZXNvdXJjZXMgd2l0aCB0aGUgYW1lbmRlZAorICAg
ICAgICBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVsZWFzZVJlc291cmNlcygpIGluc3RlYWQg
b2YKKyAgICAgICAgcHJldmlvdXMgc2VwYXJhdGUgZnVuY3Rpb24gR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OnJlbGVhc2VBbGxSZXNvdXJjZXMoKS4KKworICAgICAgICBVc2UgdGhlIHJlc291cmNl
IHJlbGVhc2UgY29kZSBwYXRoIHVuaXZlcnNhbGx5LCBhcworICAgICAgICBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6cmVsZWFzZVJlc291cmNlcygpIGlzIG5vdyBjb21tb24gY29kZS4KKworICAg
ICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvU2NvcGVkV2ViR0xSZW5kZXJpbmdSZXNvdXJjZXNS
ZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2NvcGVkV2ViR0xSZW5kZXJpbmdSZXNvdXJj
ZXNSZXF1ZXN0OjpzY2hlZHVsZUZyZWVXZWJHTFJlbmRlcmluZ1Jlc291cmNlcyk6CisgICAgICAg
IChXZWJLaXQ6OlNjb3BlZFdlYkdMUmVuZGVyaW5nUmVzb3VyY2VzUmVxdWVzdDo6ZnJlZVdlYkdM
UmVuZGVyaW5nUmVzb3VyY2VzKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1Njb3Bl
ZFdlYkdMUmVuZGVyaW5nUmVzb3VyY2VzUmVxdWVzdC5oOgorICAgICAgICAqIEdQVVByb2Nlc3Mv
Z3JhcGhpY3MvU2NvcGVkV2ViR0xSZW5kZXJpbmdSZXNvdXJjZXNSZXF1ZXN0Q29jb2EuY3BwOiBS
ZW1vdmVkLgorICAgICAgICAoV2ViS2l0OjpTY29wZWRXZWJHTFJlbmRlcmluZ1Jlc291cmNlc1Jl
cXVlc3Q6OnNjaGVkdWxlRnJlZVdlYkdMUmVuZGVyaW5nUmVzb3VyY2VzKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYktpdDo6U2NvcGVkV2ViR0xSZW5kZXJpbmdSZXNvdXJjZXNSZXF1ZXN0OjpmcmVl
V2ViR0xSZW5kZXJpbmdSZXNvdXJjZXMpOiBEZWxldGVkLgorICAgICAgICAqIFNvdXJjZXNDb2Nv
YS50eHQ6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIw
MjEtMDktMjkgIEFkYSBDaGFuICA8YWRhLmNoYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtXZWJY
Ul0gSG9sZCBhIGZvcmVncm91bmQgYXNzZXJ0aW9uIGZvciB0aGUgZHVyYXRpb24gb2YgdGhlIGlt
bWVyc2l2ZSBzZXNzaW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4
dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDVhYzE3NDk2MTM5ZDQzOTI4
MjhlNTkzOGI0MjljZGFhNjFkNTNhYWUuLmRhMTUzM2QwY2EyNjZiYzEwN2M5OWQ1NjRmNjJmZDU2
YzA3YjE1OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBi
L1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0xNzAxLDkgKzE3MDEsOSBAQCBpZiAo
RU5BQkxFX1dFQkdMKQogICAgICAgICAgICAgJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vZ3JhcGhp
Y3MvYW5nbGUKICAgICAgICAgKQogICAgICAgICBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMK
KyAgICAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0FOR0xFVXRpbGl0aWVzLmNwcAog
ICAgICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuY3Bw
CiAgICAgICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFO
R0xFLmNwcAotICAgICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250
ZXh0R0xBTkdMRUVHTFV0aWxpdGllcy5jcHAKICAgICAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNz
L2FuZ2xlL1RlbXBvcmFyeUFOR0xFU2V0dGluZy5jcHAKICAgICAgICAgKQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5j
bWFrZQppbmRleCBmOWYyMDNkMTRkZDkzYzMxNTYwNmM5OTRmODU5ZjY1NWViOGIwZDQzLi4wMzIz
NjBhNzAwNmUyYzA0OGUxNGI5N2Q1Y2Q5ZDI2NDYyMWRiMzk4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9IZWFkZXJzLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UK
QEAgLTEzNzksOCArMTM3OSw4IEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURF
UlMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9XaW5kUnVsZS5oCiAKICAgICBwbGF0Zm9ybS9ncmFw
aGljcy9hbmdsZS9BTkdMRUhlYWRlcnMuaAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0FO
R0xFVXRpbGl0aWVzLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xB
TkdMRS5oCi0gICAgcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdM
RVV0aWxpdGllcy5oCiAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3QuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdERy
YXdpbmdDb250ZXh0LmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNt
YWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UKaW5kZXggZmFjY2NiNjhmNjVl
YmE3Y2M1OTFiYzcyNGZjYTBjMmEzM2FjNGY4YS4uYmNmY2ViNzkzMTNlYzA1YzM1NGM1ZmVmZTM0
YWI1MTBhYjMzZTcxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21h
a2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UKQEAgLTYxNCw3ICs2MTQs
NyBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBw
bGF0Zm9ybS9ncmFwaGljcy9NSU1FVHlwZUNhY2hlLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9N
b2RlbC5oCiAKLSAgICBwbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFO
R0xFRUdMVXRpbGl0aWVzLmgKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9BTkdMRVV0aWxp
dGllcy5oCiAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQXVkaW9Tb3VyY2VQ
cm92aWRlckFWRk9iakMuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRp
YVBsYXliYWNrVGFyZ2V0Q29jb2EuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNl
c0NvY29hLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKaW5kZXggM2ExYjkw
Mjg1MWQyYzE0YWRiOTNlOGY2Y2U0Nzc4NjUwZmZkOGZlNi4uY2QyZGZiMjc0NmU3NGRiOGZhYjBj
YWIyOTA5YWM3OTJhNGJhMWM1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlc0Nv
Y29hLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CkBAIC01OTYsNyAr
NTk2LDcgQEAgdGVzdGluZy9jb2NvYS9XZWJWaWV3VmlzdWFsSWRlbnRpZmljYXRpb25PdmVybGF5
Lm1tCiAvLyBUaGUgZm9sbG93aW5nIGZpbGVzIGFyZW4ndCB1bmlmaWVkIHdpdGggb3RoZXJzIHRv
IHByZXZlbnQgdGhlbSBmcm9tIGJlaW5nIG1lcmdlZAogLy8gd2l0aCBmaWxlcyB0aGF0IHVzZSB0
aGUgc3lzdGVtIE9wZW5HTC4KIAorcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvQU5HTEVVdGlsaXRp
ZXMuY3BwIEBuby11bmlmeQogcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5H
TEUuY3BwIEBuby11bmlmeQogcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0
R0xBTkdMRS5jcHAgQG5vLXVuaWZ5Ci1wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0Nv
bnRleHRHTEFOR0xFRUdMVXRpbGl0aWVzLmNwcCBAbm8tdW5pZnkKIHBsYXRmb3JtL2dyYXBoaWNz
L2FuZ2xlL1RlbXBvcmFyeUFOR0xFU2V0dGluZy5jcHAgQG5vLXVuaWZ5CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMDJkODQxNWI0
NjBiMjc1MDE2NTRhMTU3NDI5MTJiNWM0ZmRiMTI1YS4uNGZjZjAyZDdlZmM1Y2Q1ZDk1MWFlOWY3
MWFiYjA0NGVhMWY2OWI4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjM1MSwxMyArMjM1MSwxMSBAQAogCQk3QUY5QjIwRjE4
Q0ZCNUY0MDBDNjRCRUYgLyogSlNWVFRSZWdpb25MaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QUY5QjIwQjE4Q0ZCNUYzMDBDNjRCRUYgLyogSlNW
VFRSZWdpb25MaXN0LmggKi87IH07CiAJCTdCMTAzMzlFMjU0OTcyMTcwMEM4QzFBQyAvKiBHcmFw
aGljc0NvbnRleHRHTENWLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3QjEwMzM5RDI1NDk3MjAxMDBDOEMxQUMgLyogR3JhcGhpY3NDb250ZXh0R0xDVi5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdCMTAz
MzlGMjU0OTcyMUUwMEM4QzFBQyAvKiBHcmFwaGljc0NvbnRleHRHTENWQU5HTEUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCMTAzMzlDMjU0OTcyMDEw
MEM4QzFBQyAvKiBHcmFwaGljc0NvbnRleHRHTENWQU5HTEUuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk3QjQ1QUI1MDI1RkI5M0JFMDBGRDI3RjQg
LyogR3JhcGhpY3NDb250ZXh0R0xBTkdMRUVHTFV0aWxpdGllcy5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Qjc3NEM2MjI1RkI5MzU1MDA5MTM5NUYg
LyogR3JhcGhpY3NDb250ZXh0R0xBTkdMRUVHTFV0aWxpdGllcy5jcHAgKi87IH07Ci0JCTdCNDVB
QjU1MjVGQkE5REUwMEZEMjdGNCAvKiBHcmFwaGljc0NvbnRleHRHTEFOR0xFRUdMVXRpbGl0aWVz
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjQ1QUI1
NDI1RkJBOUREMDBGRDI3RjQgLyogR3JhcGhpY3NDb250ZXh0R0xBTkdMRUVHTFV0aWxpdGllcy5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdCNkRD
ODE5MjU3MTJFOTIwMDM4MEM3MCAvKiBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFp
bi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I2REM4
MTcyNTcxMkU5MjAwMzgwQzcwIC8qIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWlu
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0I3
MzExRkIyNUMwOTJCNzAwM0IyNzk2IC8qIFNjb3BlZEhpZ2hQZXJmb3JtYW5jZUdQVVJlcXVlc3Qu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCNzMxMUZB
MjVDMDkyQjcwMDNCMjc5NiAvKiBTY29wZWRIaWdoUGVyZm9ybWFuY2VHUFVSZXF1ZXN0LmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0I4RUQ1RjAy
NkYwQzEzRDAwOEFDMDIzIC8qIENWVXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjhFRDVFRDI2RjBDMTIzMDA4QUMwMjMgLyogQ1ZVdGls
aXRpZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk3QjkwNDE3MDI1NTAxMTQyMDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eUJhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdC
OTA0MTZFMjU1MDExMDkwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFz
ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTdC
QjM0QTE3MjUzNDVDQjIwMDAyOUQwOCAvKiBHcmFwaGljc0NvbnRleHRHTEFOR0xFVXRpbGl0aWVz
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QkIzNEEx
NjI1MzQ1Q0IyMDAwMjlEMDggLyogR3JhcGhpY3NDb250ZXh0R0xBTkdMRVV0aWxpdGllcy5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTdCQjM0QTE3
MjUzNDVDQjIwMDAyOUQwOCAvKiBBTkdMRVV0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0JCMzRBMTYyNTM0NUNCMjAwMDI5RDA4IC8qIEFO
R0xFVXRpbGl0aWVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJN0JCMzRBNDgyNTM3NzZDQTAwMDI5RDA4IC8qIEdyYXBoaWNzQ29udGV4dEdMSW1h
Z2VFeHRyYWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDdCQjM0QTQ1MjUzNzc2QzYwMDAyOUQwOCAvKiBHcmFwaGljc0NvbnRleHRHTEltYWdlRXh0
cmFjdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJN0JCNjgwQkEyNUJBMUJFNDAwMkI4NzM4IC8qIEdyYXBoaWNzQ2hlY2tzTWFjLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QkI2ODBCODI1QkExQkU0
MDAyQjg3MzggLyogR3JhcGhpY3NDaGVja3NNYWMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QkU3NDI3MzgxRkE5MDZGQkI0RjBGMkMgLyogSlNT
VkdHcmFwaGljc0VsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDk1MEM0QzAyQkVEODkzNkY4MThFMkY5OSAvKiBKU1NWR0dyYXBoaWNzRWxlbWVu
dC5oICovOyB9OwpAQCAtMTA2MzEsMjAgKzEwNjI5LDE5IEBACiAJCTdCMTAzMzlBMjU0OTcyMDAw
MEM4QzFBQyAvKiBHcmFwaGljc0NvbnRleHRHTENWQU5HTEUuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJN0IxMDMzOUMyNTQ5NzIwMTAwQzhDMUFDIC8qIEdyYXBoaWNzQ29udGV4dEdMQ1ZBTkdM
RS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBHcmFwaGljc0NvbnRleHRHTENWQU5HTEUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0IxMDMzOUQyNTQ5NzIwMTAwQzhDMUFDIC8qIEdyYXBoaWNz
Q29udGV4dEdMQ1YuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0R0xDVi5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3QjQ1QUI1NDI1RkJBOUREMDBGRDI3RjQgLyogR3Jh
cGhpY3NDb250ZXh0R0xBTkdMRUVHTFV0aWxpdGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBHcmFwaGljc0NvbnRleHRHTEFOR0xFRUdMVXRpbGl0aWVzLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCNjRDMEI0MjU0QzNCMTYwMDA2QjRBRiAvKiBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5QmFzZUNvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2VDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJN0I2REM4MTUyNTcxMkU5MTAwMzgwQzcwIC8qIEdyYXBoaWNzQ29udGV4
dEdMSU9TdXJmYWNlU3dhcENoYWluLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I2REM4MTcyNTcxMkU5MjAwMzgwQzcwIC8qIEdyYXBoaWNz
Q29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTdCNzMxMUZBMjVDMDkyQjcwMDNCMjc5NiAvKiBTY29wZWRIaWdo
UGVyZm9ybWFuY2VHUFVSZXF1ZXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFNjb3BlZEhpZ2hQZXJmb3JtYW5jZUdQVVJlcXVlc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJN0I3NzRDNjIyNUZCOTM1NTAwOTEzOTVGIC8qIEdyYXBoaWNzQ29udGV4dEdMQU5H
TEVFR0xVdGlsaXRpZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0R0xB
TkdMRUVHTFV0aWxpdGllcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCOEVE
NUVEMjZGMEMxMjMwMDhBQzAyMyAvKiBDVlV0aWxpdGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBDVlV0aWxpdGllcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk3QjhFRDVFRjI2RjBDMTIzMDA4QUMwMjMgLyogQ1ZVdGlsaXRpZXMubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBDVlV0aWxpdGllcy5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJN0I5MDQxNkUyNTUwMTEwOTAwNkVFQjhDIC8qIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHlCYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHlCYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTdCQjM0QTE2
MjUzNDVDQjIwMDAyOUQwOCAvKiBHcmFwaGljc0NvbnRleHRHTEFOR0xFVXRpbGl0aWVzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dEdMQU5HTEVVdGls
aXRpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0JCMzRBMTYyNTM0NUNCMjAw
MDI5RDA4IC8qIEFOR0xFVXRpbGl0aWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEFOR0xFVXRpbGl0aWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCQjM0
QTQ1MjUzNzc2QzYwMDAyOUQwOCAvKiBHcmFwaGljc0NvbnRleHRHTEltYWdlRXh0cmFjdG9yLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0b3IuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0JCMzRBNDcyNTM3NzZDNzAwMDI5RDA4IC8qIEdyYXBo
aWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR3JhcGhp
Y3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTdCQjY4MEI3MjVCQTFCRTMwMDJCODczOCAvKiBHcmFwaGljc0NoZWNrc01hYy5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHcmFwaGljc0NoZWNrc01hYy5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCQjY4MEI4MjVCQTFCRTQwMDJCODczOCAv
KiBHcmFwaGljc0NoZWNrc01hYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBH
cmFwaGljc0NoZWNrc01hYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QkNENDJE
ODI3MDU5OUVGMDBFQjIxMjcgLyogQU5HTEVVdGlsaXRpZXMuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gQU5HTEVVdGlsaXRpZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QkU3
MjY1QjI1NzYzQjhEMDBFODVEOTggLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2Uu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2Uu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzAxMUYzRDI0RkFEMzYwMDA1QkVG
MTAgLyogU2V0dGluZ3MuY3BwLmVyYiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBTZXR0aW5ncy5jcHAuZXJiOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk3QzAxMUYzRTI0RkFEMzYwMDA1QkVGMTAgLyogSW50ZXJuYWxT
ZXR0aW5nc0dlbmVyYXRlZC5jcHAuZXJiICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEludGVybmFsU2V0dGluZ3NHZW5lcmF0ZWQu
Y3BwLmVyYjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIyNjI1LDEyICsyMjYyMiwx
MSBAQAogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKIAkJCQkyN0UzQzgwNjI1
N0Y1RTZFMDBDOTg2QUIgLyogQU5HTEVIZWFkZXJzLmggKi8sCisJCQkJN0JDRDQyRDgyNzA1OTlF
RjAwRUIyMTI3IC8qIEFOR0xFVXRpbGl0aWVzLmNwcCAqLywKKwkJCQk3QkIzNEExNjI1MzQ1Q0Iy
MDAwMjlEMDggLyogQU5HTEVVdGlsaXRpZXMuaCAqLywKIAkJCQk2RTI3RjI0MzIyOUM5Rjg0MDBG
MUY2MzIgLyogRXh0ZW5zaW9uc0dMQU5HTEUuY3BwICovLAogCQkJCTZFMjdGMjQ0MjI5QzlGOEQw
MEYxRjYzMiAvKiBFeHRlbnNpb25zR0xBTkdMRS5oICovLAogCQkJCTZFMjdGMjQyMjI5OENFNEIw
MEYxRjYzMiAvKiBHcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcCAqLywKLQkJCQk3Qjc3NEM2MjI1
RkI5MzU1MDA5MTM5NUYgLyogR3JhcGhpY3NDb250ZXh0R0xBTkdMRUVHTFV0aWxpdGllcy5jcHAg
Ki8sCi0JCQkJN0I0NUFCNTQyNUZCQTlERDAwRkQyN0Y0IC8qIEdyYXBoaWNzQ29udGV4dEdMQU5H
TEVFR0xVdGlsaXRpZXMuaCAqLywKLQkJCQk3QkIzNEExNjI1MzQ1Q0IyMDAwMjlEMDggLyogR3Jh
cGhpY3NDb250ZXh0R0xBTkdMRVV0aWxpdGllcy5oICovLAogCQkJCTZFMjkwODYxMjI5REI5NTAw
MDA5ODZFMiAvKiBUZW1wb3JhcnlBTkdMRVNldHRpbmcuY3BwICovLAogCQkJCTZFMjkwODYzMjI5
REI5NzAwMDA5ODZFMiAvKiBUZW1wb3JhcnlBTkdMRVNldHRpbmcuaCAqLywKIAkJCSk7CkBAIC0z
MTM5Myw2ICszMTM4OSw3IEBACiAJCQkJRTdFMDM1NzIyNEQ0RTE5NjAwOERGRUZCIC8qIEFuYWx5
c2VyT3B0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjdFM0M4MDgyNTdGNUU2RTAwQzk4NkFC
IC8qIEFOR0xFSGVhZGVycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzFBNzk1QzcxODg4QkNCMjAw
MzgyRjkwIC8qIEFOR0xFSW5zdGFuY2VkQXJyYXlzLmggaW4gSGVhZGVycyAqLywKKwkJCQk3QkIz
NEExNzI1MzQ1Q0IyMDAwMjlEMDggLyogQU5HTEVVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAog
CQkJCTQ5RTkxMkFCMEVGQUM5MDYwMDlEMENBRiAvKiBBbmltYXRpb24uaCBpbiBIZWFkZXJzICov
LAogCQkJCTcxRUZDRURDMjAyQjM4QTkwMEQ3QzQxMSAvKiBBbmltYXRpb25FZmZlY3QuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTcxRTJDNDI2MjFDOTM1MjgwMDI0RjhDOCAvKiBBbmltYXRpb25FZmZl
Y3RQaGFzZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMjYzOSw4ICszMjYzNiw2IEBACiAJCQkJQjJB
MDE1QTkwQUY2Q0Q1MzAwNkJDRTBFIC8qIEdyYXBoaWNzQ29udGV4dC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJOTM0OTA3RTQxMjVCQkJDODAwN0YyM0EwIC8qIEdyYXBoaWNzQ29udGV4dENHLmggaW4g
SGVhZGVycyAqLywKIAkJCQkzMTNERTg3MDIzQTk2OTczMDA4RkM0N0IgLyogR3JhcGhpY3NDb250
ZXh0R0wuaCBpbiBIZWFkZXJzICovLAotCQkJCTdCNDVBQjU1MjVGQkE5REUwMEZEMjdGNCAvKiBH
cmFwaGljc0NvbnRleHRHTEFOR0xFRUdMVXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKLQkJCQk3
QkIzNEExNzI1MzQ1Q0IyMDAwMjlEMDggLyogR3JhcGhpY3NDb250ZXh0R0xBTkdMRVV0aWxpdGll
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0MzMzBBMDIxREY4RkFDNjAwRDMzOTVDIC8qIEdyYXBo
aWNzQ29udGV4dEdMQXR0cmlidXRlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0IxMDMzOUUyNTQ5
NzIxNzAwQzhDMUFDIC8qIEdyYXBoaWNzQ29udGV4dEdMQ1YuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTdCMTAzMzlGMjU0OTcyMUUwMEM4QzFBQyAvKiBHcmFwaGljc0NvbnRleHRHTENWQU5HTEUuaCBp
biBIZWFkZXJzICovLApAQCAtMzY0OTksNyArMzY0OTQsNiBAQAogCQkJCTUxQTlEOUU5MTk1Qjkz
MUYwMDFCMkI1QyAvKiBHYW1lcGFkTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4Mzc5
NjRDRjFGOERCNjlEMDAyMThFQTAgLyogR2VvbG9jYXRpb25Qb3NpdGlvbkRhdGFJT1MubW0gaW4g
U291cmNlcyAqLywKIAkJCQk2RTcyRjU0RTIyOURDRDEwMDBCM0UxNTEgLyogR3JhcGhpY3NDb250
ZXh0R0xBTkdMRS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk3QjQ1QUI1MDI1RkI5M0JFMDBGRDI3
RjQgLyogR3JhcGhpY3NDb250ZXh0R0xBTkdMRUVHTFV0aWxpdGllcy5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk3QzNFNTEwQjE4REY4RjM1MDBDMTEyRjcgLyogSFRNTENvbnZlcnRlci5tbSBpbiBT
b3VyY2VzICovLAogCQkJCUE4RDA2QjNBMEEyNjVEQ0QwMDVFNzIwMyAvKiBIVE1MTmFtZXMuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMUFDOTAwQzMxOTQzQzBGQzAwODYyNUI1IC8qIEhUVFBIZWFk
ZXJOYW1lcy5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0FOR0xFVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0FOR0xFVXRpbGl0aWVzLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43
YzVmOGI1ODc3MzQ5MDAwMTQ1Mzg5NGEwMTNmMjI3MWM5NzVhY2MzCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvQU5HTEVVdGlsaXRpZXMu
Y3BwCkBAIC0wLDAgKzEsNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQU5HTEVVdGlsaXRpZXMu
aCIKKworI2lmIEVOQUJMRShXRUJHTCkgJiYgVVNFKEFOR0xFKQorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKKyNpZiAhUExBVEZPUk0oQ09DT0EpCitib29sIHBsYXRmb3JtSXNBTkdMRUF2YWlsYWJs
ZSgpCit7CisgICAgcmV0dXJuIHRydWU7Cit9CisjZW5kaWYKKworfQorCisjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0FOR0xFVXRpbGl0
aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9BTkdMRVV0aWxp
dGllcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjY5MmMzM2MyZmRmMmI3ZGQ4Y2MwOTViNGMxMGFmMTY1YWJkMzFh
ODUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
bmdsZS9BTkdMRVV0aWxpdGllcy5oCkBAIC0wLDAgKzEsMjQ3IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUo
V0VCR0wpICYmIFVTRShBTkdMRSkKKworI2luY2x1ZGUgIkFOR0xFSGVhZGVycy5oIgorI2luY2x1
ZGUgIkdyYXBoaWNzVHlwZXNHTC5oIgorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFNjb3BlZFJlc3RvcmVUZXh0dXJlQmluZGluZyB7
CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU2NvcGVkUmVzdG9yZVRleHR1cmVCaW5kaW5nKTsK
K3B1YmxpYzoKKyAgICBTY29wZWRSZXN0b3JlVGV4dHVyZUJpbmRpbmcoR0xlbnVtIGJpbmRpbmdQ
b2ludFF1ZXJ5LCBHTGVudW0gYmluZGluZ1BvaW50LCBib29sIGNvbmRpdGlvbiA9IHRydWUpCisg
ICAgeworICAgICAgICBBU1NFUlQoYmluZGluZ1BvaW50ICE9IHN0YXRpY19jYXN0PEdMZW51bT4o
MHUpKTsKKyAgICAgICAgaWYgKGNvbmRpdGlvbikgeworICAgICAgICAgICAgbV9iaW5kaW5nUG9p
bnQgPSBiaW5kaW5nUG9pbnQ7CisgICAgICAgICAgICBnbDo6R2V0SW50ZWdlcnYoYmluZGluZ1Bv
aW50UXVlcnksIHJlaW50ZXJwcmV0X2Nhc3Q8R0xpbnQqPigmbV9iaW5kaW5nVmFsdWUpKTsKKyAg
ICAgICAgfQorICAgIH0KKworICAgIH5TY29wZWRSZXN0b3JlVGV4dHVyZUJpbmRpbmcoKQorICAg
IHsKKyAgICAgICAgaWYgKG1fYmluZGluZ1BvaW50KQorICAgICAgICAgICAgZ2w6OkJpbmRUZXh0
dXJlKG1fYmluZGluZ1BvaW50LCBtX2JpbmRpbmdWYWx1ZSk7CisgICAgfQorCitwcml2YXRlOgor
ICAgIEdMZW51bSBtX2JpbmRpbmdQb2ludCB7IDAgfTsKKyAgICBHTHVpbnQgbV9iaW5kaW5nVmFs
dWUgeyAwdSB9OworfTsKKworCitjbGFzcyBTY29wZWRCdWZmZXJCaW5kaW5nIHsKKyAgICBXVEZf
TUFLRV9OT05DT1BZQUJMRShTY29wZWRCdWZmZXJCaW5kaW5nKTsKK3B1YmxpYzoKKyAgICBTY29w
ZWRCdWZmZXJCaW5kaW5nKEdMZW51bSBiaW5kaW5nUG9pbnQsIEdMdWludCBiaW5kaW5nVmFsdWUs
IGJvb2wgY29uZGl0aW9uID0gdHJ1ZSkKKyAgICB7CisgICAgICAgIGlmICghY29uZGl0aW9uKQor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBnbDo6R2V0SW50ZWdlcnYocXVlcnkoYmluZGlu
Z1BvaW50KSwgcmVpbnRlcnByZXRfY2FzdDxHTGludCo+KCZtX2JpbmRpbmdWYWx1ZSkpOworICAg
ICAgICBpZiAoYmluZGluZ1ZhbHVlID09IG1fYmluZGluZ1ZhbHVlKQorICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICBtX2JpbmRpbmdQb2ludCA9IGJpbmRpbmdQb2ludDsKKyAgICAgICAgZ2w6
OkJpbmRCdWZmZXIobV9iaW5kaW5nUG9pbnQsIGJpbmRpbmdWYWx1ZSk7CisgICAgfQorCisgICAg
flNjb3BlZEJ1ZmZlckJpbmRpbmcoKQorICAgIHsKKyAgICAgICAgaWYgKG1fYmluZGluZ1BvaW50
KQorICAgICAgICAgICAgZ2w6OkJpbmRCdWZmZXIobV9iaW5kaW5nUG9pbnQsIG1fYmluZGluZ1Zh
bHVlKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgc3RhdGljIGNvbnN0ZXhwciBHTGVudW0gcXVl
cnkoR0xlbnVtIGJpbmRpbmdQb2ludCkKKyAgICB7CisgICAgICAgIGlmIChiaW5kaW5nUG9pbnQg
PT0gR0xfUElYRUxfUEFDS19CVUZGRVIpCisgICAgICAgICAgICByZXR1cm4gR0xfUElYRUxfUEFD
S19CVUZGRVJfQklORElORzsKKyAgICAgICAgQVNTRVJUKGJpbmRpbmdQb2ludCA9PSBHTF9QSVhF
TF9VTlBBQ0tfQlVGRkVSKTsKKyAgICAgICAgcmV0dXJuIEdMX1BJWEVMX1VOUEFDS19CVUZGRVJf
QklORElORzsKKyAgICB9CisgICAgR0xpbnQgbV9iaW5kaW5nUG9pbnQgeyAwIH07CisgICAgR0x1
aW50IG1fYmluZGluZ1ZhbHVlIHsgMHUgfTsKK307CitjbGFzcyBTY29wZWRSZXN0b3JlUmVhZEZy
YW1lYnVmZmVyQmluZGluZyB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU2NvcGVkUmVzdG9y
ZVJlYWRGcmFtZWJ1ZmZlckJpbmRpbmcpOworcHVibGljOgorICAgIFNjb3BlZFJlc3RvcmVSZWFk
RnJhbWVidWZmZXJCaW5kaW5nKGJvb2wgaXNGb3JXZWJHTDIsIEdMdWludCByZXN0b3JlVmFsdWUp
CisgICAgICAgIDogbV9mcmFtZWJ1ZmZlclRhcmdldChpc0ZvcldlYkdMMiA/IEdMX1JFQURfRlJB
TUVCVUZGRVIgOiBHTF9GUkFNRUJVRkZFUikKKyAgICAgICAgLCBtX2JpbmRpbmdWYWx1ZShyZXN0
b3JlVmFsdWUpCisgICAgeworICAgIH0KKyAgICBTY29wZWRSZXN0b3JlUmVhZEZyYW1lYnVmZmVy
QmluZGluZyhib29sIGlzRm9yV2ViR0wyLCBHTHVpbnQgcmVzdG9yZVZhbHVlLCBHTHVpbnQgdmFs
dWUpCisgICAgICAgIDogbV9mcmFtZWJ1ZmZlclRhcmdldChpc0ZvcldlYkdMMiA/IEdMX1JFQURf
RlJBTUVCVUZGRVIgOiBHTF9GUkFNRUJVRkZFUikKKyAgICAgICAgLCBtX2JpbmRpbmdWYWx1ZShy
ZXN0b3JlVmFsdWUpCisgICAgeworICAgICAgICBiaW5kRnJhbWVidWZmZXIodmFsdWUpOworICAg
IH0KKyAgICB2b2lkIG1hcmtCaW5kaW5nQ2hhbmdlZCgpCisgICAgeworICAgICAgICBtX2JpbmRp
bmdDaGFuZ2VkID0gdHJ1ZTsKKyAgICB9CisgICAgdm9pZCBiaW5kRnJhbWVidWZmZXIoR0x1aW50
IGJpbmRpbmdWYWx1ZSkKKyAgICB7CisgICAgICAgIGlmICghbV9iaW5kaW5nQ2hhbmdlZCAmJiBt
X2JpbmRpbmdWYWx1ZSA9PSBiaW5kaW5nVmFsdWUpCisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIGdsOjpCaW5kRnJhbWVidWZmZXIobV9mcmFtZWJ1ZmZlclRhcmdldCwgYmluZGluZ1ZhbHVl
KTsKKyAgICAgICAgbV9iaW5kaW5nQ2hhbmdlZCA9IG1fYmluZGluZ1ZhbHVlICE9IGJpbmRpbmdW
YWx1ZTsKKyAgICB9CisgICAgR0x1aW50IGZyYW1lYnVmZmVyVGFyZ2V0KCkgY29uc3QgeyByZXR1
cm4gbV9mcmFtZWJ1ZmZlclRhcmdldDsgfQorICAgIH5TY29wZWRSZXN0b3JlUmVhZEZyYW1lYnVm
ZmVyQmluZGluZygpCisgICAgeworICAgICAgICBpZiAobV9iaW5kaW5nQ2hhbmdlZCkKKyAgICAg
ICAgICAgIGdsOjpCaW5kRnJhbWVidWZmZXIobV9mcmFtZWJ1ZmZlclRhcmdldCwgbV9iaW5kaW5n
VmFsdWUpOworICAgIH0KK3ByaXZhdGU6CisgICAgY29uc3QgR0xlbnVtIG1fZnJhbWVidWZmZXJU
YXJnZXQ7CisgICAgR0x1aW50IG1fYmluZGluZ1ZhbHVlIHsgMHUgfTsKKyAgICBib29sIG1fYmlu
ZGluZ0NoYW5nZWQgeyBmYWxzZSB9OworfTsKKworY2xhc3MgU2NvcGVkUGl4ZWxTdG9yYWdlTW9k
ZSB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU2NvcGVkUGl4ZWxTdG9yYWdlTW9kZSk7Citw
dWJsaWM6CisgICAgZXhwbGljaXQgU2NvcGVkUGl4ZWxTdG9yYWdlTW9kZShHTGVudW0gbmFtZSwg
Ym9vbCBjb25kaXRpb24gPSB0cnVlKQorICAgICAgICA6IG1fbmFtZShjb25kaXRpb24gPyBuYW1l
IDogMCkKKyAgICB7CisgICAgICAgIGlmIChtX25hbWUpCisgICAgICAgICAgICBnbDo6R2V0SW50
ZWdlcnYobV9uYW1lLCAmbV9vcmlnaW5hbFZhbHVlKTsKKyAgICB9CisgICAgU2NvcGVkUGl4ZWxT
dG9yYWdlTW9kZShHTGVudW0gbmFtZSwgR0xpbnQgdmFsdWUsIGJvb2wgY29uZGl0aW9uID0gdHJ1
ZSkKKyAgICAgICAgOiBtX25hbWUoY29uZGl0aW9uID8gbmFtZSA6IDApCisgICAgeworICAgICAg
ICBpZiAobV9uYW1lKSB7CisgICAgICAgICAgICBnbDo6R2V0SW50ZWdlcnYobV9uYW1lLCAmbV9v
cmlnaW5hbFZhbHVlKTsKKyAgICAgICAgICAgIHBpeGVsU3RvcmUodmFsdWUpOworICAgICAgICB9
CisgICAgfQorICAgIH5TY29wZWRQaXhlbFN0b3JhZ2VNb2RlKCkKKyAgICB7CisgICAgICAgIGlm
IChtX25hbWUgJiYgbV92YWx1ZUNoYW5nZWQpCisgICAgICAgICAgICBnbDo6UGl4ZWxTdG9yZWko
bV9uYW1lLCBtX29yaWdpbmFsVmFsdWUpOworICAgIH0KKyAgICB2b2lkIHBpeGVsU3RvcmUoR0xp
bnQgdmFsdWUpCisgICAgeworICAgICAgICBBU1NFUlQobV9uYW1lKTsKKyAgICAgICAgaWYgKCFt
X3ZhbHVlQ2hhbmdlZCAmJiBtX29yaWdpbmFsVmFsdWUgPT0gdmFsdWUpCisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIGdsOjpQaXhlbFN0b3JlaShtX25hbWUsIHZhbHVlKTsKKyAgICAgICAg
bV92YWx1ZUNoYW5nZWQgPSBtX29yaWdpbmFsVmFsdWUgIT0gdmFsdWU7CisgICAgfQorICAgIG9w
ZXJhdG9yIEdMaW50KCkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVChtX25hbWUgJiYgIW1f
dmFsdWVDaGFuZ2VkKTsKKyAgICAgICAgcmV0dXJuIG1fb3JpZ2luYWxWYWx1ZTsKKyAgICB9Citw
cml2YXRlOgorICAgIGNvbnN0IEdMZW51bSBtX25hbWU7CisgICAgYm9vbCBtX3ZhbHVlQ2hhbmdl
ZCB7IGZhbHNlIH07CisgICAgR0xpbnQgbV9vcmlnaW5hbFZhbHVlIHsgMCB9OworfTsKKworY2xh
c3MgU2NvcGVkVGV4dHVyZSB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU2NvcGVkVGV4dHVy
ZSk7CitwdWJsaWM6CisgICAgU2NvcGVkVGV4dHVyZSgpCisgICAgeworICAgICAgICBnbDo6R2Vu
VGV4dHVyZXMoMSwgJm1fb2JqZWN0KTsKKyAgICB9CisgICAgflNjb3BlZFRleHR1cmUoKQorICAg
IHsKKyAgICAgICAgZ2w6OkRlbGV0ZVRleHR1cmVzKDEsICZtX29iamVjdCk7CisgICAgfQorICAg
IG9wZXJhdG9yIEdMdWludCgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9vYmplY3Q7
CisgICAgfQorcHJpdmF0ZToKKyAgICBHTHVpbnQgbV9vYmplY3QgeyAwdSB9OworfTsKKworY2xh
c3MgU2NvcGVkRnJhbWVidWZmZXIgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFNjb3BlZEZy
YW1lYnVmZmVyKTsKK3B1YmxpYzoKKyAgICBTY29wZWRGcmFtZWJ1ZmZlcigpCisgICAgeworICAg
ICAgICBnbDo6R2VuRnJhbWVidWZmZXJzKDEsICZtX29iamVjdCk7CisgICAgfQorICAgIH5TY29w
ZWRGcmFtZWJ1ZmZlcigpCisgICAgeworICAgICAgICBnbDo6RGVsZXRlRnJhbWVidWZmZXJzKDEs
ICZtX29iamVjdCk7CisgICAgfQorICAgIG9wZXJhdG9yIEdMdWludCgpIGNvbnN0CisgICAgewor
ICAgICAgICByZXR1cm4gbV9vYmplY3Q7CisgICAgfQorcHJpdmF0ZToKKyAgICBHTHVpbnQgbV9v
YmplY3QgeyAwIH07Cit9OworCitjbGFzcyBTY29wZWRHTEZlbmNlIHsKKyAgICBXVEZfTUFLRV9O
T05DT1BZQUJMRShTY29wZWRHTEZlbmNlKTsKK3B1YmxpYzoKKyAgICBTY29wZWRHTEZlbmNlKCkg
PSBkZWZhdWx0OworICAgIFNjb3BlZEdMRmVuY2UoU2NvcGVkR0xGZW5jZSYmIG90aGVyKQorICAg
ICAgICA6IG1fb2JqZWN0KHN0ZDo6ZXhjaGFuZ2Uob3RoZXIubV9vYmplY3QsIHsgfSkpCisgICAg
eworICAgIH0KKyAgICB+U2NvcGVkR0xGZW5jZSgpIHsgcmVzZXQoKTsgfQorICAgIFNjb3BlZEdM
RmVuY2UmIG9wZXJhdG9yPShTY29wZWRHTEZlbmNlJiYgb3RoZXIpCisgICAgeworICAgICAgICBp
ZiAodGhpcyAhPSAmb3RoZXIpIHsKKyAgICAgICAgICAgIHJlc2V0KCk7CisgICAgICAgICAgICBt
X29iamVjdCA9IHN0ZDo6ZXhjaGFuZ2Uob3RoZXIubV9vYmplY3QsIHsgfSk7CisgICAgICAgIH0K
KyAgICAgICAgcmV0dXJuICp0aGlzOworICAgIH0KKyAgICB2b2lkIHJlc2V0KCkKKyAgICB7Cisg
ICAgICAgIGlmIChtX29iamVjdCkgeworICAgICAgICAgICAgZ2w6OkRlbGV0ZVN5bmMobV9vYmpl
Y3QpOworICAgICAgICAgICAgbV9vYmplY3QgPSB7IH07CisgICAgICAgIH0KKyAgICB9CisgICAg
dm9pZCBhYmFuZG9uKCkgeyBtX29iamVjdCA9IHsgfTsgfQorICAgIHZvaWQgZmVuY2VTeW5jKCkK
KyAgICB7CisgICAgICAgIHJlc2V0KCk7CisgICAgICAgIG1fb2JqZWN0ID0gZ2w6OkZlbmNlU3lu
YyhHTF9TWU5DX0dQVV9DT01NQU5EU19DT01QTEVURSwgMCk7CisgICAgfQorICAgIG9wZXJhdG9y
IEdMc3luYygpIGNvbnN0IHsgcmV0dXJuIG1fb2JqZWN0OyB9CisgICAgb3BlcmF0b3IgYm9vbCgp
IGNvbnN0IHsgcmV0dXJuIG1fb2JqZWN0OyB9Citwcml2YXRlOgorICAgIEdMc3luYyBtX29iamVj
dCB7IH07Cit9OworCitib29sIHBsYXRmb3JtSXNBTkdMRUF2YWlsYWJsZSgpOworCit9CisKKyNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUv
R3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcAppbmRleCBjMmNmYTVkYzJmNzc1
YWU0ODRhOTRmODlmNmU0ZGY3MWM5YmYxODk3Li4xNTIzMTNhNWIzZGU0NjI4N2E4NWI0OWU3NmYz
YWIwYjIyODgwMmUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcApAQCAtMzAs
OCArMzAsOCBAQAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMLmgiCiAKICNpbmNsdWRlICJB
TkdMRUhlYWRlcnMuaCIKKyNpbmNsdWRlICJBTkdMRVV0aWxpdGllcy5oIgogI2luY2x1ZGUgIkV4
dGVuc2lvbnNHTEFOR0xFLmgiCi0jaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0R0xBTkdMRVV0aWxp
dGllcy5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgiCiAjaW5jbHVkZSAi
SW1hZ2VCdWZmZXIuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCkBAIC03NSw2ICs3NSw0OSBAQCBz
dGF0aWMgdm9pZCB3aXBlQWxwaGFDaGFubmVsRnJvbVBpeGVscyhpbnQgd2lkdGgsIGludCBoZWln
aHQsIHVuc2lnbmVkIGNoYXIqIHBpeAogfQogI2VuZGlmCiAKK2Jvb2wgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OnJlbGVhc2VSZXNvdXJjZXMoUmVsZWFzZVJlc291cmNlc0JlaGF2aW9yIHJlbGVh
c2VCZWhhdmlvcikKK3sKKyAgICBwbGF0Zm9ybVJlbGVhc2VSZXNvdXJjZXMoKTsKKworICAgIGlm
ICghcGxhdGZvcm1Jc0FOR0xFQXZhaWxhYmxlKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIC8vIFVuc2V0IHRoZSBFR0wgY3VycmVudCBjb250ZXh0LCBzaW5jZSB0aGUgbmV4dCBhY2Nl
c3MgbWlnaHQgYmUgZnJvbSBhbm90aGVyIHRocmVhZCwgYW5kIHRoZQorICAgIC8vIGNvbnRleHQg
Y2Fubm90IGJlIGN1cnJlbnQgb24gbXVsdGlwbGUgdGhyZWFkcy4KKyAgICBpZiAocmVsZWFzZUJl
aGF2aW9yID09IFJlbGVhc2VSZXNvdXJjZXNCZWhhdmlvcjo6UmVsZWFzZUN1cnJlbnRDb250ZXh0
KSB7CisgICAgICAgIGlmIChFR0xfR2V0Q3VycmVudENvbnRleHQoKSA9PSBFR0xfTk9fQ09OVEVY
VCkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAvLyBBdCB0aGUgdGltZSBvZiB3
cml0aW5nLCBBTkdMRSBkb2VzIG5vdCBmbHVzaCBvbiBNYWtlQ3VycmVudC4gU2luY2Ugd2UgYXJl
CisgICAgICAgIC8vIHBvdGVudGlhbGx5IHN3aXRjaGluZyB0aHJlYWRzLCB3ZSBzaG91bGQgZmx1
c2guCisgICAgICAgIC8vIE5vdGU6IEhlcmUgd2UgYXNzdW1lIGFsc28gdGhhdCBBTkdMRSBoYXMg
b25seSBvbmUgcGxhdGZvcm0gY29udGV4dCAtLSBvdGhlcndpc2UKKyAgICAgICAgLy8gd2Ugd291
bGQgbmVlZCB0byBmbHVzaCBlYWNoIEVHTCBjb250ZXh0IHRoYXQgaGFzIGJlZW4gdXNlZC4KKyAg
ICAgICAgZ2w6OkZsdXNoKCk7CisgICAgICAgIEVHTERpc3BsYXkgZGlzcGxheSA9IEVHTF9HZXRE
aXNwbGF5KEVHTF9ERUZBVUxUX0RJU1BMQVkpOworICAgICAgICBpZiAoZGlzcGxheSA9PSBFR0xf
Tk9fRElTUExBWSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICByZXR1cm4gRUdM
X01ha2VDdXJyZW50KGRpc3BsYXksIEVHTF9OT19TVVJGQUNFLCBFR0xfTk9fU1VSRkFDRSwgRUdM
X05PX0NPTlRFWFQpOworICAgIH0KKyAgICBpZiAocmVsZWFzZUJlaGF2aW9yID09IFJlbGVhc2VS
ZXNvdXJjZXNCZWhhdmlvcjo6VGVybWluYXRlQW5kUmVsZWFzZVRocmVhZFJlc291cmNlcykgewor
ICAgICAgICBFR0xEaXNwbGF5IGRpc3BsYXkgPSBFR0xfR2V0RGlzcGxheShFR0xfREVGQVVMVF9E
SVNQTEFZKTsKKyAgICAgICAgaWYgKGRpc3BsYXkgIT0gRUdMX05PX0RJU1BMQVkpIHsKKyAgICAg
ICAgICAgIGlmIChFR0xfR2V0Q3VycmVudENvbnRleHQoKSAhPSBFR0xfTk9fQ09OVEVYVCkgewor
ICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyAvLyBBbGwgcmVzb3VyY2VzIG11
c3QgaGF2ZSBiZWVuIGRlc3Ryb3llZC4KKyAgICAgICAgICAgICAgICBFR0xfTWFrZUN1cnJlbnQo
ZGlzcGxheSwgRUdMX05PX1NVUkZBQ0UsIEVHTF9OT19TVVJGQUNFLCBFR0xfTk9fQ09OVEVYVCk7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICBFR0xfVGVybWluYXRlKGRpc3BsYXkpOworICAg
ICAgICB9CisgICAgfQorICAgIC8vIENhbGxlZCB3aGVuIHdlIGRvIG5vdCBrbm93IGlmIHdlIHdp
bGwgZXZlciBzZWUgYW5vdGhlciBjYWxsIGZyb20gdGhpcyB0aHJlYWQgYWdhaW4uCisgICAgLy8g
VW5zZXQgdGhlIEVHTCBjdXJyZW50IGNvbnRleHQgYnkgcmVsZWFzaW5nIHdob2xlIEVHTCB0aHJl
YWQgc3RhdGUuCisgICAgcmV0dXJuIEVHTF9SZWxlYXNlVGhyZWFkKCk7Cit9CisKKyNpZiAhUExB
VEZPUk0oQ09DT0EpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpwbGF0Zm9ybVJlbGVh
c2VSZXNvdXJjZXMoKQoreworfQorI2VuZGlmCisKIHN0ZDo6b3B0aW9uYWw8UGl4ZWxCdWZmZXI+
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkUGl4ZWxzRm9yUGFpbnRSZXN1bHRzKCkKIHsK
ICAgICBQaXhlbEJ1ZmZlckZvcm1hdCBmb3JtYXQgeyBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpV
bnByZW11bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpSR0JBOCwgRGVzdGluYXRpb25Db2xvclNwYWNl
OjpTUkdCKCkgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEVFR0xVdGlsaXRpZXMuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRUVHTFV0
aWxpdGllcy5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI1YmY4MzdkMjVlNDNk
MDY1OGQ2YjY4NTFkZDQ4YTIxOTg2OTZmN2IuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUv
R3JhcGhpY3NDb250ZXh0R0xBTkdMRUVHTFV0aWxpdGllcy5jcHAKKysrIC9kZXYvbnVsbApAQCAt
MSw5MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMQU5HTEVF
R0xVdGlsaXRpZXMuaCIKLQotI2luY2x1ZGUgIkFOR0xFSGVhZGVycy5oIgotI2luY2x1ZGUgPHd0
Zi9Bc3NlcnRpb25zLmg+Ci0KLSNpZiBFTkFCTEUoV0VCR0wpICYmIFVTRShBTkdMRSkKLQotbmFt
ZXNwYWNlIFdlYkNvcmUgewotCi1zdGF0aWMgdW5zaWduZWQgZGVmYXVsdERpc3BsYXlSZWZDb3Vu
dDsKLXN0YXRpYyB2b2lkKiBkZWZhdWx0RGlzcGxheSA9IG51bGxwdHI7Ci0KLXN0YXRpYyB2b2lk
IHJlZkRlZmF1bHREaXNwbGF5KHZvaWQqIGRpc3BsYXkpCi17Ci0gICAgQVNTRVJUKGRpc3BsYXkg
IT0gbnVsbHB0cik7Ci0gICAgQVNTRVJUKGRlZmF1bHREaXNwbGF5ID09IGRpc3BsYXkgfHwgKCFk
ZWZhdWx0RGlzcGxheSAmJiAhZGVmYXVsdERpc3BsYXlSZWZDb3VudCkpOwotICAgIGRlZmF1bHRE
aXNwbGF5UmVmQ291bnQrKzsKLSAgICBkZWZhdWx0RGlzcGxheSA9IGRpc3BsYXk7Ci19Ci0KLXN0
YXRpYyB2b2lkIHVucmVmRGVmYXVsdERpc3BsYXlJZk5lZWRlZCh2b2lkKiBkaXNwbGF5KQotewot
ICAgIGlmICghZGlzcGxheSkKLSAgICAgICAgcmV0dXJuOwotICAgIEFTU0VSVChkZWZhdWx0RGlz
cGxheSA9PSBkaXNwbGF5KTsKLSAgICBBU1NFUlQoZGVmYXVsdERpc3BsYXlSZWZDb3VudCk7Ci0g
ICAgZGVmYXVsdERpc3BsYXlSZWZDb3VudC0tOwotfQotCi1TY29wZWRFR0xEZWZhdWx0RGlzcGxh
eSYgU2NvcGVkRUdMRGVmYXVsdERpc3BsYXk6Om9wZXJhdG9yPShTY29wZWRFR0xEZWZhdWx0RGlz
cGxheSYmIG90aGVyKQotewotICAgIGlmICh0aGlzICE9ICZvdGhlcikgewotICAgICAgICB1bnJl
ZkRlZmF1bHREaXNwbGF5SWZOZWVkZWQobV9kaXNwbGF5KTsKLSAgICAgICAgbV9kaXNwbGF5ID0g
c3RkOjpleGNoYW5nZShvdGhlci5tX2Rpc3BsYXksIG51bGxwdHIpOwotICAgIH0KLSAgICByZXR1
cm4gKnRoaXM7Ci19Ci0KLVNjb3BlZEVHTERlZmF1bHREaXNwbGF5OjpTY29wZWRFR0xEZWZhdWx0
RGlzcGxheSh2b2lkKiBkaXNwbGF5KQotICAgIDogbV9kaXNwbGF5KGRpc3BsYXkpCi17Ci0gICAg
cmVmRGVmYXVsdERpc3BsYXkobV9kaXNwbGF5KTsKLX0KLQotU2NvcGVkRUdMRGVmYXVsdERpc3Bs
YXk6On5TY29wZWRFR0xEZWZhdWx0RGlzcGxheSgpCi17Ci0gICAgdW5yZWZEZWZhdWx0RGlzcGxh
eUlmTmVlZGVkKG1fZGlzcGxheSk7Ci19Ci0KLXZvaWQgU2NvcGVkRUdMRGVmYXVsdERpc3BsYXk6
OnJlbGVhc2VBbGxSZXNvdXJjZXNJZlVudXNlZCgpCi17Ci0gICAgaWYgKGRlZmF1bHREaXNwbGF5
UmVmQ291bnQpCi0gICAgICAgIHJldHVybjsKLSAgICBpZiAoZGVmYXVsdERpc3BsYXkgPT0gbnVs
bHB0cikKLSAgICAgICAgcmV0dXJuOwotICAgIGJvb2wgcmVzdWx0ID0gRUdMX1Rlcm1pbmF0ZShk
ZWZhdWx0RGlzcGxheSk7Ci0gICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7Ci0gICAg
cmVzdWx0ID0gRUdMX1JlbGVhc2VUaHJlYWQoKTsKLSAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwg
cmVzdWx0KTsKLSAgICBkZWZhdWx0RGlzcGxheSA9IG51bGxwdHI7Ci19Ci0KLX0KLQotI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFw
aGljc0NvbnRleHRHTEFOR0xFRUdMVXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFRUdMVXRpbGl0aWVzLmgKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk0NDIwNTIwYmRlOGJhMmVlODVkNjg4MmY2NThk
NDU4MmRiY2VlYTAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0
R0xBTkdMRUVHTFV0aWxpdGllcy5oCisrKyAvZGV2L251bGwKQEAgLTEsNjIgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQot
Ci0jaWYgRU5BQkxFKFdFQkdMKSAmJiBVU0UoQU5HTEUpCi0KLSNpbmNsdWRlIDxhbGdvcml0aG0+
Ci0jaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+Ci0KLS8vIEN1cnJlbnRseSB0aGlzIG5vdCB1
c2luZyBBTkdMRSBoZWFkZXJzIHNpbmNlIHRoaXMgaXMgZXhwb3J0ZWQgaGVhZGVyIGFuZCB3ZSBk
byBub3QgZXhwb3J0IEFOR0xFIGhlYWRlcnMuCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xh
c3MgU2NvcGVkRUdMRGVmYXVsdERpc3BsYXkgewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFNj
b3BlZEVHTERlZmF1bHREaXNwbGF5KTsKLXB1YmxpYzoKLSAgICBzdGF0aWMgU2NvcGVkRUdMRGVm
YXVsdERpc3BsYXkgYWRvcHRJbml0aWFsaXplZERpc3BsYXkodm9pZCogZGlzcGxheSkKLSAgICB7
Ci0gICAgICAgIEFTU0VSVChkaXNwbGF5ICE9IG51bGxwdHIpOwotICAgICAgICByZXR1cm4gU2Nv
cGVkRUdMRGVmYXVsdERpc3BsYXkoZGlzcGxheSk7Ci0gICAgfQotICAgIFNjb3BlZEVHTERlZmF1
bHREaXNwbGF5KCkgPSBkZWZhdWx0OwotICAgIFNjb3BlZEVHTERlZmF1bHREaXNwbGF5KFNjb3Bl
ZEVHTERlZmF1bHREaXNwbGF5JiYgb3RoZXIpCi0gICAgICAgIDogbV9kaXNwbGF5KHN0ZDo6ZXhj
aGFuZ2Uob3RoZXIubV9kaXNwbGF5LCBudWxscHRyKSkKLSAgICB7Ci0gICAgfQotICAgIH5TY29w
ZWRFR0xEZWZhdWx0RGlzcGxheSgpOwotICAgIFNjb3BlZEVHTERlZmF1bHREaXNwbGF5JiBvcGVy
YXRvcj0oU2NvcGVkRUdMRGVmYXVsdERpc3BsYXkmJik7Ci0gICAgb3BlcmF0b3Igdm9pZCooKSBj
b25zdCB7IHJldHVybiBtX2Rpc3BsYXk7IH0KLSAgICBvcGVyYXRvciBib29sKCkgY29uc3QgeyBy
ZXR1cm4gbV9kaXNwbGF5ICE9IG51bGxwdHI7IH0KLSAgICBzdGF0aWMgdm9pZCByZWxlYXNlQWxs
UmVzb3VyY2VzSWZVbnVzZWQoKTsKLXByaXZhdGU6Ci0gICAgU2NvcGVkRUdMRGVmYXVsdERpc3Bs
YXkodm9pZCopOwotICAgIHZvaWQqIG1fZGlzcGxheSB7IG51bGxwdHIgfTsKLX07Ci0KLX0KLQot
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmds
ZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFVXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFVXRpbGl0aWVzLmgKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRjNzlmMWUyNDIzZjUyMTNiMDMwMWM4YzgwYTU0
ZjZiY2M0NDllOTIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0
R0xBTkdMRVV0aWxpdGllcy5oCisrKyAvZGV2L251bGwKQEAgLTEsMjQ1ICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
LSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQot
I2lmIEVOQUJMRShXRUJHTCkgJiYgVVNFKEFOR0xFKQotCi0jaW5jbHVkZSAiQU5HTEVIZWFkZXJz
LmgiCi0jaW5jbHVkZSAiR3JhcGhpY3NUeXBlc0dMLmgiCi0jaW5jbHVkZSA8d3RmL05vbmNvcHlh
YmxlLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgU2NvcGVkUmVzdG9yZVRleHR1
cmVCaW5kaW5nIHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTY29wZWRSZXN0b3JlVGV4dHVy
ZUJpbmRpbmcpOwotcHVibGljOgotICAgIFNjb3BlZFJlc3RvcmVUZXh0dXJlQmluZGluZyhHTGVu
dW0gYmluZGluZ1BvaW50UXVlcnksIEdMZW51bSBiaW5kaW5nUG9pbnQsIGJvb2wgY29uZGl0aW9u
ID0gdHJ1ZSkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChiaW5kaW5nUG9pbnQgIT0gc3RhdGljX2Nh
c3Q8R0xlbnVtPigwdSkpOwotICAgICAgICBpZiAoY29uZGl0aW9uKSB7Ci0gICAgICAgICAgICBt
X2JpbmRpbmdQb2ludCA9IGJpbmRpbmdQb2ludDsKLSAgICAgICAgICAgIGdsOjpHZXRJbnRlZ2Vy
dihiaW5kaW5nUG9pbnRRdWVyeSwgcmVpbnRlcnByZXRfY2FzdDxHTGludCo+KCZtX2JpbmRpbmdW
YWx1ZSkpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgflNjb3BlZFJlc3RvcmVUZXh0dXJlQmlu
ZGluZygpCi0gICAgewotICAgICAgICBpZiAobV9iaW5kaW5nUG9pbnQpCi0gICAgICAgICAgICBn
bDo6QmluZFRleHR1cmUobV9iaW5kaW5nUG9pbnQsIG1fYmluZGluZ1ZhbHVlKTsKLSAgICB9Ci0K
LXByaXZhdGU6Ci0gICAgR0xlbnVtIG1fYmluZGluZ1BvaW50IHsgMCB9OwotICAgIEdMdWludCBt
X2JpbmRpbmdWYWx1ZSB7IDB1IH07Ci19OwotCi0KLWNsYXNzIFNjb3BlZEJ1ZmZlckJpbmRpbmcg
ewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFNjb3BlZEJ1ZmZlckJpbmRpbmcpOwotcHVibGlj
OgotICAgIFNjb3BlZEJ1ZmZlckJpbmRpbmcoR0xlbnVtIGJpbmRpbmdQb2ludCwgR0x1aW50IGJp
bmRpbmdWYWx1ZSwgYm9vbCBjb25kaXRpb24gPSB0cnVlKQotICAgIHsKLSAgICAgICAgaWYgKCFj
b25kaXRpb24pCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGdsOjpHZXRJbnRlZ2Vydihx
dWVyeShiaW5kaW5nUG9pbnQpLCByZWludGVycHJldF9jYXN0PEdMaW50Kj4oJm1fYmluZGluZ1Zh
bHVlKSk7Ci0gICAgICAgIGlmIChiaW5kaW5nVmFsdWUgPT0gbV9iaW5kaW5nVmFsdWUpCi0gICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgIG1fYmluZGluZ1BvaW50ID0gYmluZGluZ1BvaW50Owot
ICAgICAgICBnbDo6QmluZEJ1ZmZlcihtX2JpbmRpbmdQb2ludCwgYmluZGluZ1ZhbHVlKTsKLSAg
ICB9Ci0KLSAgICB+U2NvcGVkQnVmZmVyQmluZGluZygpCi0gICAgewotICAgICAgICBpZiAobV9i
aW5kaW5nUG9pbnQpCi0gICAgICAgICAgICBnbDo6QmluZEJ1ZmZlcihtX2JpbmRpbmdQb2ludCwg
bV9iaW5kaW5nVmFsdWUpOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBzdGF0aWMgY29uc3RleHBy
IEdMZW51bSBxdWVyeShHTGVudW0gYmluZGluZ1BvaW50KQotICAgIHsKLSAgICAgICAgaWYgKGJp
bmRpbmdQb2ludCA9PSBHTF9QSVhFTF9QQUNLX0JVRkZFUikKLSAgICAgICAgICAgIHJldHVybiBH
TF9QSVhFTF9QQUNLX0JVRkZFUl9CSU5ESU5HOwotICAgICAgICBBU1NFUlQoYmluZGluZ1BvaW50
ID09IEdMX1BJWEVMX1VOUEFDS19CVUZGRVIpOwotICAgICAgICByZXR1cm4gR0xfUElYRUxfVU5Q
QUNLX0JVRkZFUl9CSU5ESU5HOwotICAgIH0KLSAgICBHTGludCBtX2JpbmRpbmdQb2ludCB7IDAg
fTsKLSAgICBHTHVpbnQgbV9iaW5kaW5nVmFsdWUgeyAwdSB9OwotfTsKLWNsYXNzIFNjb3BlZFJl
c3RvcmVSZWFkRnJhbWVidWZmZXJCaW5kaW5nIHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShT
Y29wZWRSZXN0b3JlUmVhZEZyYW1lYnVmZmVyQmluZGluZyk7Ci1wdWJsaWM6Ci0gICAgU2NvcGVk
UmVzdG9yZVJlYWRGcmFtZWJ1ZmZlckJpbmRpbmcoYm9vbCBpc0ZvcldlYkdMMiwgR0x1aW50IHJl
c3RvcmVWYWx1ZSkKLSAgICAgICAgOiBtX2ZyYW1lYnVmZmVyVGFyZ2V0KGlzRm9yV2ViR0wyID8g
R0xfUkVBRF9GUkFNRUJVRkZFUiA6IEdMX0ZSQU1FQlVGRkVSKQotICAgICAgICAsIG1fYmluZGlu
Z1ZhbHVlKHJlc3RvcmVWYWx1ZSkKLSAgICB7Ci0gICAgfQotICAgIFNjb3BlZFJlc3RvcmVSZWFk
RnJhbWVidWZmZXJCaW5kaW5nKGJvb2wgaXNGb3JXZWJHTDIsIEdMdWludCByZXN0b3JlVmFsdWUs
IEdMdWludCB2YWx1ZSkKLSAgICAgICAgOiBtX2ZyYW1lYnVmZmVyVGFyZ2V0KGlzRm9yV2ViR0wy
ID8gR0xfUkVBRF9GUkFNRUJVRkZFUiA6IEdMX0ZSQU1FQlVGRkVSKQotICAgICAgICAsIG1fYmlu
ZGluZ1ZhbHVlKHJlc3RvcmVWYWx1ZSkKLSAgICB7Ci0gICAgICAgIGJpbmRGcmFtZWJ1ZmZlcih2
YWx1ZSk7Ci0gICAgfQotICAgIHZvaWQgbWFya0JpbmRpbmdDaGFuZ2VkKCkKLSAgICB7Ci0gICAg
ICAgIG1fYmluZGluZ0NoYW5nZWQgPSB0cnVlOwotICAgIH0KLSAgICB2b2lkIGJpbmRGcmFtZWJ1
ZmZlcihHTHVpbnQgYmluZGluZ1ZhbHVlKQotICAgIHsKLSAgICAgICAgaWYgKCFtX2JpbmRpbmdD
aGFuZ2VkICYmIG1fYmluZGluZ1ZhbHVlID09IGJpbmRpbmdWYWx1ZSkKLSAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgZ2w6OkJpbmRGcmFtZWJ1ZmZlcihtX2ZyYW1lYnVmZmVyVGFyZ2V0LCBi
aW5kaW5nVmFsdWUpOwotICAgICAgICBtX2JpbmRpbmdDaGFuZ2VkID0gbV9iaW5kaW5nVmFsdWUg
IT0gYmluZGluZ1ZhbHVlOwotICAgIH0KLSAgICBHTHVpbnQgZnJhbWVidWZmZXJUYXJnZXQoKSBj
b25zdCB7IHJldHVybiBtX2ZyYW1lYnVmZmVyVGFyZ2V0OyB9Ci0gICAgflNjb3BlZFJlc3RvcmVS
ZWFkRnJhbWVidWZmZXJCaW5kaW5nKCkKLSAgICB7Ci0gICAgICAgIGlmIChtX2JpbmRpbmdDaGFu
Z2VkKQotICAgICAgICAgICAgZ2w6OkJpbmRGcmFtZWJ1ZmZlcihtX2ZyYW1lYnVmZmVyVGFyZ2V0
LCBtX2JpbmRpbmdWYWx1ZSk7Ci0gICAgfQotcHJpdmF0ZToKLSAgICBjb25zdCBHTGVudW0gbV9m
cmFtZWJ1ZmZlclRhcmdldDsKLSAgICBHTHVpbnQgbV9iaW5kaW5nVmFsdWUgeyAwdSB9OwotICAg
IGJvb2wgbV9iaW5kaW5nQ2hhbmdlZCB7IGZhbHNlIH07Ci19OwotCi1jbGFzcyBTY29wZWRQaXhl
bFN0b3JhZ2VNb2RlIHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTY29wZWRQaXhlbFN0b3Jh
Z2VNb2RlKTsKLXB1YmxpYzoKLSAgICBleHBsaWNpdCBTY29wZWRQaXhlbFN0b3JhZ2VNb2RlKEdM
ZW51bSBuYW1lLCBib29sIGNvbmRpdGlvbiA9IHRydWUpCi0gICAgICAgIDogbV9uYW1lKGNvbmRp
dGlvbiA/IG5hbWUgOiAwKQotICAgIHsKLSAgICAgICAgaWYgKG1fbmFtZSkKLSAgICAgICAgICAg
IGdsOjpHZXRJbnRlZ2VydihtX25hbWUsICZtX29yaWdpbmFsVmFsdWUpOwotICAgIH0KLSAgICBT
Y29wZWRQaXhlbFN0b3JhZ2VNb2RlKEdMZW51bSBuYW1lLCBHTGludCB2YWx1ZSwgYm9vbCBjb25k
aXRpb24gPSB0cnVlKQotICAgICAgICA6IG1fbmFtZShjb25kaXRpb24gPyBuYW1lIDogMCkKLSAg
ICB7Ci0gICAgICAgIGlmIChtX25hbWUpIHsKLSAgICAgICAgICAgIGdsOjpHZXRJbnRlZ2Vydiht
X25hbWUsICZtX29yaWdpbmFsVmFsdWUpOwotICAgICAgICAgICAgcGl4ZWxTdG9yZSh2YWx1ZSk7
Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgflNjb3BlZFBpeGVsU3RvcmFnZU1vZGUoKQotICAgIHsK
LSAgICAgICAgaWYgKG1fbmFtZSAmJiBtX3ZhbHVlQ2hhbmdlZCkKLSAgICAgICAgICAgIGdsOjpQ
aXhlbFN0b3JlaShtX25hbWUsIG1fb3JpZ2luYWxWYWx1ZSk7Ci0gICAgfQotICAgIHZvaWQgcGl4
ZWxTdG9yZShHTGludCB2YWx1ZSkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX25hbWUpOwotICAg
ICAgICBpZiAoIW1fdmFsdWVDaGFuZ2VkICYmIG1fb3JpZ2luYWxWYWx1ZSA9PSB2YWx1ZSkKLSAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgZ2w6OlBpeGVsU3RvcmVpKG1fbmFtZSwgdmFsdWUp
OwotICAgICAgICBtX3ZhbHVlQ2hhbmdlZCA9IG1fb3JpZ2luYWxWYWx1ZSAhPSB2YWx1ZTsKLSAg
ICB9Ci0gICAgb3BlcmF0b3IgR0xpbnQoKSBjb25zdAotICAgIHsKLSAgICAgICAgQVNTRVJUKG1f
bmFtZSAmJiAhbV92YWx1ZUNoYW5nZWQpOwotICAgICAgICByZXR1cm4gbV9vcmlnaW5hbFZhbHVl
OwotICAgIH0KLXByaXZhdGU6Ci0gICAgY29uc3QgR0xlbnVtIG1fbmFtZTsKLSAgICBib29sIG1f
dmFsdWVDaGFuZ2VkIHsgZmFsc2UgfTsKLSAgICBHTGludCBtX29yaWdpbmFsVmFsdWUgeyAwIH07
Ci19OwotCi1jbGFzcyBTY29wZWRUZXh0dXJlIHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShT
Y29wZWRUZXh0dXJlKTsKLXB1YmxpYzoKLSAgICBTY29wZWRUZXh0dXJlKCkKLSAgICB7Ci0gICAg
ICAgIGdsOjpHZW5UZXh0dXJlcygxLCAmbV9vYmplY3QpOwotICAgIH0KLSAgICB+U2NvcGVkVGV4
dHVyZSgpCi0gICAgewotICAgICAgICBnbDo6RGVsZXRlVGV4dHVyZXMoMSwgJm1fb2JqZWN0KTsK
LSAgICB9Ci0gICAgb3BlcmF0b3IgR0x1aW50KCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVy
biBtX29iamVjdDsKLSAgICB9Ci1wcml2YXRlOgotICAgIEdMdWludCBtX29iamVjdCB7IDB1IH07
Ci19OwotCi1jbGFzcyBTY29wZWRGcmFtZWJ1ZmZlciB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFC
TEUoU2NvcGVkRnJhbWVidWZmZXIpOwotcHVibGljOgotICAgIFNjb3BlZEZyYW1lYnVmZmVyKCkK
LSAgICB7Ci0gICAgICAgIGdsOjpHZW5GcmFtZWJ1ZmZlcnMoMSwgJm1fb2JqZWN0KTsKLSAgICB9
Ci0gICAgflNjb3BlZEZyYW1lYnVmZmVyKCkKLSAgICB7Ci0gICAgICAgIGdsOjpEZWxldGVGcmFt
ZWJ1ZmZlcnMoMSwgJm1fb2JqZWN0KTsKLSAgICB9Ci0gICAgb3BlcmF0b3IgR0x1aW50KCkgY29u
c3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX29iamVjdDsKLSAgICB9Ci1wcml2YXRlOgotICAg
IEdMdWludCBtX29iamVjdCB7IDAgfTsKLX07Ci0KLWNsYXNzIFNjb3BlZEdMRmVuY2UgewotICAg
IFdURl9NQUtFX05PTkNPUFlBQkxFKFNjb3BlZEdMRmVuY2UpOwotcHVibGljOgotICAgIFNjb3Bl
ZEdMRmVuY2UoKSA9IGRlZmF1bHQ7Ci0gICAgU2NvcGVkR0xGZW5jZShTY29wZWRHTEZlbmNlJiYg
b3RoZXIpCi0gICAgICAgIDogbV9vYmplY3Qoc3RkOjpleGNoYW5nZShvdGhlci5tX29iamVjdCwg
eyB9KSkKLSAgICB7Ci0gICAgfQotICAgIH5TY29wZWRHTEZlbmNlKCkgeyByZXNldCgpOyB9Ci0g
ICAgU2NvcGVkR0xGZW5jZSYgb3BlcmF0b3I9KFNjb3BlZEdMRmVuY2UmJiBvdGhlcikKLSAgICB7
Ci0gICAgICAgIGlmICh0aGlzICE9ICZvdGhlcikgewotICAgICAgICAgICAgcmVzZXQoKTsKLSAg
ICAgICAgICAgIG1fb2JqZWN0ID0gc3RkOjpleGNoYW5nZShvdGhlci5tX29iamVjdCwgeyB9KTsK
LSAgICAgICAgfQotICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgfQotICAgIHZvaWQgcmVzZXQo
KQotICAgIHsKLSAgICAgICAgaWYgKG1fb2JqZWN0KSB7Ci0gICAgICAgICAgICBnbDo6RGVsZXRl
U3luYyhtX29iamVjdCk7Ci0gICAgICAgICAgICBtX29iamVjdCA9IHsgfTsKLSAgICAgICAgfQot
ICAgIH0KLSAgICB2b2lkIGFiYW5kb24oKSB7IG1fb2JqZWN0ID0geyB9OyB9Ci0gICAgdm9pZCBm
ZW5jZVN5bmMoKQotICAgIHsKLSAgICAgICAgcmVzZXQoKTsKLSAgICAgICAgbV9vYmplY3QgPSBn
bDo6RmVuY2VTeW5jKEdMX1NZTkNfR1BVX0NPTU1BTkRTX0NPTVBMRVRFLCAwKTsKLSAgICB9Ci0g
ICAgb3BlcmF0b3IgR0xzeW5jKCkgY29uc3QgeyByZXR1cm4gbV9vYmplY3Q7IH0KLSAgICBvcGVy
YXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gbV9vYmplY3Q7IH0KLXByaXZhdGU6Ci0gICAgR0xz
eW5jIG1fb2JqZWN0IHsgfTsKLX07Ci0KLX0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENv
Y29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0xDb2NvYS5tbQppbmRleCBmMjViMDk4N2Q0NDk0MzczODJkMDg1N2JhNDA0
NWEyMmI0YmU4MmI4Li5lNGVlMDg0NDU3NjdkZTU3NGZmNDM4MTJlZmEzMGYzYjg4Y2M5YTRjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGlj
c0NvbnRleHRHTE9wZW5HTENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW0KQEAgLTI4LDkgKzI4
LDkgQEAKICNpZiBFTkFCTEUoV0VCR0wpCiAjaW1wb3J0ICJHcmFwaGljc0NvbnRleHRHTE9wZW5H
TC5oIgogCisjaW1wb3J0ICJBTkdMRVV0aWxpdGllcy5oIgogI2ltcG9ydCAiQ1ZVdGlsaXRpZXMu
aCIKICNpbXBvcnQgIkV4dGVuc2lvbnNHTEFOR0xFLmgiCi0jaW1wb3J0ICJHcmFwaGljc0NvbnRl
eHRHTEFOR0xFVXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJHcmFwaGljc0NvbnRleHRHTElPU3VyZmFj
ZVN3YXBDaGFpbi5oIgogI2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyLmgi
CiAjaW1wb3J0ICJMb2dnaW5nLmgiCkBAIC01OSw3ICs1OSw3IEBAIFdURl9XRUFLX0xJTktfRk9S
Q0VfSU1QT1JUKEVHTF9Jbml0aWFsaXplKTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0
aWMgYm9vbCBpc0FOR0xFQXZhaWxhYmxlKCkKK2Jvb2wgcGxhdGZvcm1Jc0FOR0xFQXZhaWxhYmxl
KCkKIHsKICAgICByZXR1cm4gISFFR0xfSW5pdGlhbGl6ZTsKIH0KQEAgLTExOCwxMSArMTE4LDEx
IEBAIHN0YXRpYyBib29sIHBsYXRmb3JtU3VwcG9ydHNNZXRhbChib29sIGlzV2ViR0wyKQogICAg
IHJldHVybiBmYWxzZTsKIH0KIAotc3RhdGljIFNjb3BlZEVHTERlZmF1bHREaXNwbGF5IGluaXRp
YWxpemVFR0xEaXNwbGF5KGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYgYXR0cnMp
CitzdGF0aWMgRUdMRGlzcGxheSBpbml0aWFsaXplRUdMRGlzcGxheShjb25zdCBHcmFwaGljc0Nv
bnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJzKQogewotICAgIGlmICghaXNBTkdMRUF2YWlsYWJsZSgp
KSB7CisgICAgaWYgKCFwbGF0Zm9ybUlzQU5HTEVBdmFpbGFibGUoKSkgewogICAgICAgICBXVEZM
b2dBbHdheXMoIkZhaWxlZCB0byBsb2FkIEFOR0xFIHNoYXJlZCBsaWJyYXJ5LiIpOwotICAgICAg
ICByZXR1cm4geyB9OworICAgICAgICByZXR1cm4gRUdMX05PX0RJU1BMQVk7CiAgICAgfQogCiAg
ICAgRUdMaW50IG1ham9yVmVyc2lvbiA9IDA7CkBAIC0xNjUsNyArMTY1LDcgQEAgc3RhdGljIFNj
b3BlZEVHTERlZmF1bHREaXNwbGF5IGluaXRpYWxpemVFR0xEaXNwbGF5KGNvbnN0IEdyYXBoaWNz
Q29udGV4dEdMQXR0cmkKIAogICAgIGlmIChFR0xfSW5pdGlhbGl6ZShkaXNwbGF5LCAmbWFqb3JW
ZXJzaW9uLCAmbWlub3JWZXJzaW9uKSA9PSBFR0xfRkFMU0UpIHsKICAgICAgICAgTE9HKFdlYkdM
LCAiRUdMRGlzcGxheSBJbml0aWFsaXphdGlvbiBmYWlsZWQuIik7Ci0gICAgICAgIHJldHVybiB7
IH07CisgICAgICAgIHJldHVybiBFR0xfTk9fRElTUExBWTsKICAgICB9CiAgICAgTE9HKFdlYkdM
LCAiQU5HTEUgaW5pdGlhbGlzZWQgTWFqb3I6ICVkIE1pbm9yOiAlZCIsIG1ham9yVmVyc2lvbiwg
bWlub3JWZXJzaW9uKTsKICAgICBpZiAoc2hvdWxkSW5pdGlhbGl6ZVdpdGhWb2xhdGlsZUNvbnRl
eHRTdXBwb3J0KSB7CkBAIC0xNzQsNyArMTc0LDcgQEAgc3RhdGljIFNjb3BlZEVHTERlZmF1bHRE
aXNwbGF5IGluaXRpYWxpemVFR0xEaXNwbGF5KGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMQXR0cmkK
ICAgICAgICAgQVNTRVJUKGNoZWNrVm9sYXRpbGVDb250ZXh0U3VwcG9ydElmRGV2aWNlRXhpc3Rz
KGRpc3BsYXksICJFR0xfQU5HTEVfcGxhdGZvcm1fZGV2aWNlX2NvbnRleHRfdm9sYXRpbGVfZWFn
bCIsICJFR0xfQU5HTEVfZGV2aWNlX2VhZ2wiLCBFR0xfRUFHTF9DT05URVhUX0FOR0xFKSk7CiAg
ICAgICAgIEFTU0VSVChjaGVja1ZvbGF0aWxlQ29udGV4dFN1cHBvcnRJZkRldmljZUV4aXN0cyhk
aXNwbGF5LCAiRUdMX0FOR0xFX3BsYXRmb3JtX2RldmljZV9jb250ZXh0X3ZvbGF0aWxlX2NnbCIs
ICJFR0xfQU5HTEVfZGV2aWNlX2NnbCIsIEVHTF9DR0xfQ09OVEVYVF9BTkdMRSkpOwogICAgIH0K
LSAgICByZXR1cm4gU2NvcGVkRUdMRGVmYXVsdERpc3BsYXk6OmFkb3B0SW5pdGlhbGl6ZWREaXNw
bGF5KGRpc3BsYXkpOworICAgIHJldHVybiBkaXNwbGF5OwogfQogCiBzdGF0aWMgY29uc3QgdW5z
aWduZWQgc3RhdHVzQ2hlY2tUaHJlc2hvbGQgPSA1OwpAQCAtNTMzLDQ1ICs1MzMsNiBAQCB2b2lk
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjbGVhckN1cnJlbnRDb250ZXh0KCkKICAgICBjdXJy
ZW50Q29udGV4dCA9IG51bGxwdHI7CiB9CiAKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotYm9v
bCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVsZWFzZUN1cnJlbnRDb250ZXh0KFJlbGVhc2VC
ZWhhdmlvciByZWxlYXNlQmVoYXZpb3IpCi17Ci0gICAgaWYgKCFpc0FOR0xFQXZhaWxhYmxlKCkp
Ci0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgLy8gQXQgdGhlIG1vbWVudCB0aGlzIGZ1bmN0
aW9uIGlzIHJlbGV2YW50IG9ubHkgd2hlbiB3ZWIgdGhyZWFkIGxvY2sgb3ducyB0aGUgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0wgY3VycmVudCBjb250ZXh0LgotICAgIEFTU0VSVCghaXNDdXJyZW50
Q29udGV4dFByZWRpY3RhYmxlKCkpOwotCi0gICAgaWYgKCFFR0xfQmluZEFQSShFR0xfT1BFTkdM
X0VTX0FQSSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoRUdMX0dldEN1cnJlbnRD
b250ZXh0KCkgPT0gRUdMX05PX0NPTlRFWFQpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAg
Ly8gQXQgdGhlIHRpbWUgb2Ygd3JpdGluZywgQU5HTEUgZG9lcyBub3QgZmx1c2ggb24gTWFrZUN1
cnJlbnQuIFNpbmNlIHdlIGFyZQotICAgIC8vIHBvdGVudGlhbGx5IHN3aXRjaGluZyB0aHJlYWRz
LCB3ZSBzaG91bGQgZmx1c2guCi0gICAgLy8gTm90ZTogSGVyZSB3ZSBhc3N1bWUgYWxzbyB0aGF0
IEFOR0xFIGhhcyBvbmx5IG9uZSBwbGF0Zm9ybSBjb250ZXh0IC0tIG90aGVyd2lzZQotICAgIC8v
IHdlIHdvdWxkIG5lZWQgdG8gZmx1c2ggZWFjaCBFR0wgY29udGV4dCB0aGF0IGhhcyBiZWVuIHVz
ZWQuCi0gICAgZ2w6OkZsdXNoKCk7Ci0KLSAgICAvLyBVbnNldCB0aGUgRUdMIGN1cnJlbnQgY29u
dGV4dCwgc2luY2UgdGhlIG5leHQgYWNjZXNzIG1pZ2h0IGJlIGZyb20gYW5vdGhlciB0aHJlYWQs
IGFuZCB0aGUKLSAgICAvLyBjb250ZXh0IGNhbm5vdCBiZSBjdXJyZW50IG9uIG11bHRpcGxlIHRo
cmVhZHMuCi0KLSAgICBpZiAocmVsZWFzZUJlaGF2aW9yID09IFJlbGVhc2VCZWhhdmlvcjo6UmVs
ZWFzZVRocmVhZFJlc291cmNlcykgewotICAgICAgICAvLyBDYWxsZWQgd2hlbiB3ZSBkbyBub3Qg
a25vdyBpZiB3ZSB3aWxsIGV2ZXIgc2VlIGFub3RoZXIgY2FsbCBmcm9tIHRoaXMgdGhyZWFkIGFn
YWluLgotICAgICAgICAvLyBVbnNldCB0aGUgRUdMIGN1cnJlbnQgY29udGV4dCBieSByZWxlYXNp
bmcgd2hvbGUgRUdMIHRocmVhZCBzdGF0ZS4KLSAgICAgICAgLy8gVGhlb3JldGljYWxseSBSZWxl
YXNlVGhyZWFkIGNhbiByZXNldCB0aGUgYm91bmQgQVBJLCBzbyB0aGUgcmVzdCBvZiB0aGUgY29k
ZSBtZW50aW9ucyBCaW5kQVBJL1F1ZXJ5QVBJLgotICAgICAgICByZXR1cm4gRUdMX1JlbGVhc2VU
aHJlYWQoKTsKLSAgICB9Ci0gICAgLy8gT24gV2ViS2l0IG93bmVkIHRocmVhZHMsIFdlYktpdCBp
cyBhYmxlIHRvIGNob29zZSB0aGUgdGltZSBmb3IgdGhlIEVHTCBjbGVhbnVwLgotICAgIC8vIFRo
aXMgaXMgd2h5IHdlIG9ubHkgdW5zZXQgdGhlIGNvbnRleHQuCi0gICAgLy8gTm90ZTogQXQgdGhl
IHRpbWUgb2Ygd3JpdGluZyB0aGUgRUdMIGNsZWFudXAgaXMgY2hvc2VuIHRvIGJlIG5vdCBkb25l
IGF0IGFsbC4KLSAgICBFR0xEaXNwbGF5IGRpc3BsYXkgPSBFR0xfR2V0RGlzcGxheShFR0xfREVG
QVVMVF9ESVNQTEFZKTsKLSAgICBpZiAoZGlzcGxheSA9PSBFR0xfTk9fRElTUExBWSkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBFR0xfTWFrZUN1cnJlbnQoZGlzcGxheSwgRUdM
X05PX1NVUkZBQ0UsIEVHTF9OT19TVVJGQUNFLCBFR0xfTk9fQ09OVEVYVCk7Ci19Ci0jZW5kaWYK
LQogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y2hlY2tHUFVTdGF0dXMoKQogewogICAg
IGlmIChtX2ZhaWxOZXh0U3RhdHVzQ2hlY2spIHsKQEAgLTg3NywxMSArODM4LDYgQEAgc3RkOjpv
cHRpb25hbDxQaXhlbEJ1ZmZlcj4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRDb21wb3Np
dGVkUmVzdWx0cygpCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6cmVsZWFzZUFsbFJlc291cmNlc0lmVW51c2VkKCkKLXsKLSAgICBTY29wZWRF
R0xEZWZhdWx0RGlzcGxheTo6cmVsZWFzZUFsbFJlc291cmNlc0lmVW51c2VkKCk7Ci19Ci0KICNp
ZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogUmVmUHRyPE1lZGlhU2FtcGxlPiBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6cGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvTWVkaWFTYW1wbGUoKQogewpAQCAt
ODk3LDYgKzg1MywxMiBAQCBSZWZQdHI8TWVkaWFTYW1wbGU+IEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9NZWRpYVNhbXBsZQogICAgIHJldHVybiBNZWRp
YVNhbXBsZUFWRk9iakM6OmNyZWF0ZUltYWdlU2FtcGxlKFdURk1vdmUoKnBpeGVsQnVmZmVyKSwg
TWVkaWFTYW1wbGVBVkZPYmpDOjpWaWRlb1JvdGF0aW9uOjpVcHNpZGVEb3duLCB0cnVlKTsKIH0K
ICNlbmRpZgorCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpwbGF0Zm9ybVJlbGVhc2VS
ZXNvdXJjZXMoKQoreworICAgIGN1cnJlbnRDb250ZXh0ID0gbnVsbHB0cjsKK30KKwogfQogCiAj
ZW5kaWYgLy8gRU5BQkxFKFdFQkdMKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5j
cHAKaW5kZXggZjhiMjBhYzc2ZDFiZGU5ZjNhMjg2MGFiOWEyYzQ0OTdlNWI2MjdmNC4uMDNjYjMw
Y2FmNzFmZGVlNTMxNDY1MmEyOTMzM2NjZTU0MmE5MzFjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0wuY3BwCkBAIC03NSw2ICs3NSwxNiBAQCBHQ0dMYml0ZmllbGQgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmdldEJ1ZmZlcnNUb0F1dG9DbGVhcigpIGNvbnN0CiAgICAgcmV0
dXJuIG1fYnVmZmVyc1RvQXV0b0NsZWFyOwogfQogCisjaWYgIVVTRShBTkdMRSkKK2Jvb2wgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlbGVhc2VSZXNvdXJjZXMoUmVsZWFzZVJlc291cmNlc0Jl
aGF2aW9yKQoreworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpwbGF0Zm9ybVJl
bGVhc2VSZXNvdXJjZXMoKQoreworfQorI2VuZGlmCisKICNpZiAhVVNFKEFOR0xFKQogYm9vbCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dGV4SW1hZ2UyRFJlc291cmNlU2FmZShHQ0dMZW51bSB0
YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkg
d2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQs
IEdDR0xlbnVtIHR5cGUsIEdDR0xpbnQgdW5wYWNrQWxpZ25tZW50KQogewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdM
T3BlbkdMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0wuaAppbmRleCBmZTU5ZGViMDlkODhjZTdhZDU4YWQ1MjA5MGM0ZTU2
MDRhMzdiMjJlLi5mYzI2MjhiZDhlMzQyN2ZiZmJhOTcxOWU2YjkyYjNkYWRjZmJjZTRhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaApAQCAtMzcsNyArMzcsNiBAQAogI2luY2x1
ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KIAogI2lmIFBMQVRGT1JNKENPQ09BKQotI2luY2x1ZGUgIkdy
YXBoaWNzQ29udGV4dEdMQU5HTEVFR0xVdGlsaXRpZXMuaCIKICNpbmNsdWRlICJJT1N1cmZhY2Uu
aCIKICNlbmRpZgogCkBAIC00Niw3ICs0NSw3IEBACiAjZW5kaWYKIAogI2lmIFVTRShBTkdMRSkK
LSNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRHTEFOR0xFVXRpbGl0aWVzLmgiCisjaW5jbHVkZSAi
QU5HTEVVdGlsaXRpZXMuaCIKICNlbHNlCiAjaW5jbHVkZSAiQU5HTEVXZWJLaXRCcmlkZ2UuaCIK
ICNpbmNsdWRlICJFeHRlbnNpb25zR0xPcGVuR0xDb21tb24uaCIKQEAgLTExOSwxNyArMTE4LDE2
IEBAIHB1YmxpYzoKICNpZiBVU0UoQU5HTEUpCiAgICAgc3RhdGljIEdDR0xlbnVtIGRyYXdpbmdC
dWZmZXJUZXh0dXJlVGFyZ2V0KCk7CiAjZW5kaWYKLQotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
Ci0gICAgZW51bSBjbGFzcyBSZWxlYXNlQmVoYXZpb3IgewotICAgICAgICBQcmVzZXJ2ZVRocmVh
ZFJlc291cmNlcywKLSAgICAgICAgUmVsZWFzZVRocmVhZFJlc291cmNlcworICAgIGVudW0gY2xh
c3MgUmVsZWFzZVJlc291cmNlc0JlaGF2aW9yIHsKKyAgICAgICAgLy8gUmVsZWFzZXMgY3VycmVu
dCBjb250ZXh0IGFmdGVyIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMIGNhbGxzIGRvbmUgaW4gdGhl
IHRocmVhZC4KKyAgICAgICAgUmVsZWFzZUN1cnJlbnRDb250ZXh0LAorICAgICAgICAvLyBSZWxl
YXNlcyBhbGwgdGhyZWFkIHJlc291cmNlcyBhZnRlciBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCBj
YWxscyBkb25lIGluIHRoZSB0aHJlYWQuCisgICAgICAgIFJlbGVhc2VUaHJlYWRSZXNvdXJjZXMs
CisgICAgICAgIC8vIFJlbGVhc2VzIGFsbCBnbG9iYWwgc3RhdGUuIFNob3VsZCBiZSB1c2VkIG9u
bHkgYWZ0ZXIgYWxsIGRlcGVuZGluZyBvYmplY3RzIGhhdmUKKyAgICAgICAgLy8gYmVlbiByZWxl
YXNlZC4KKyAgICAgICAgVGVybWluYXRlQW5kUmVsZWFzZVRocmVhZFJlc291cmNlcwogICAgIH07
Ci0gICAgc3RhdGljIGJvb2wgcmVsZWFzZUN1cnJlbnRDb250ZXh0KFJlbGVhc2VCZWhhdmlvcik7
Ci0jZW5kaWYKLSNpZiBQTEFURk9STShDT0NPQSkKLSAgICBzdGF0aWMgdm9pZCByZWxlYXNlQWxs
UmVzb3VyY2VzSWZVbnVzZWQoKTsKLSNlbmRpZgorICAgIHN0YXRpYyBib29sIHJlbGVhc2VSZXNv
dXJjZXMoUmVsZWFzZVJlc291cmNlc0JlaGF2aW9yKTsKIAogICAgIC8vIFdpdGggbXVsdGlzYW1w
bGluZyBvbiwgYmxpdCBmcm9tIG11bHRpc2FtcGxlRkJPIHRvIHJlZ3VsYXIgRkJPLgogICAgIHZv
aWQgcHJlcGFyZVRleHR1cmUoKTsKQEAgLTU4MiwxMiArNTgwLDE1IEBAIHByaXZhdGU6CiAgICAg
Ly8gUmV0dXJucyBmYWxzZSBpZiBjb250ZXh0IHNob3VsZCBiZSBsb3N0IGR1ZSB0byB0aW1lb3V0
LgogICAgIGJvb2wgd2FpdEFuZFVwZGF0ZU9sZGVzdEZyYW1lKCkgV0FSTl9VTlVTRURfUkVUVVJO
OwogI2VuZGlmCisgICAgLy8gUGxhdGZvcm0gc3BlY2lmaWMgYmVoYXZpb3IgZm9yIHJlbGVhc2VS
ZXNvdXJjZXMoKTsKKyAgICBzdGF0aWMgdm9pZCBwbGF0Zm9ybVJlbGVhc2VSZXNvdXJjZXMoKTsK
KwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VT
d2FwQ2hhaW4qIG1fc3dhcENoYWluIHsgbnVsbHB0ciB9OwogICAgIC8vIFRPRE86IHRoaXMgc2hv
dWxkIGJlIHJlbW92ZWQgb25jZSB0aGUgY29udGV4dCBkcmF3cyB0byBhIGltYWdlIGJ1ZmZlci4g
U2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTgxNzkgLgogICAg
IFJldGFpblB0cjxXZWJHTExheWVyPiBtX3dlYkdMTGF5ZXI7Ci0gICAgU2NvcGVkRUdMRGVmYXVs
dERpc3BsYXkgbV9kaXNwbGF5T2JqOworICAgIEVHTERpc3BsYXkgbV9kaXNwbGF5T2JqIHsgbnVs
bHB0ciB9OwogICAgIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0R0wgbV9jb250ZXh0T2JqIHsgbnVs
bHB0ciB9OwogICAgIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0R0xDb25maWcgbV9jb25maWdPYmog
eyBudWxscHRyIH07CiAjZW5kaWYgLy8gUExBVEZPUk0oQ09DT0EpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dlYkNvcmVUaHJlYWQubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dlYkNvcmVUaHJlYWQubW0KaW5kZXggMDAyNjY0ZTNlMTY2
OWZmMzI4ZGI5Yjk1MjkxYTg4YjUwNDE3OWMzOC4uOTBlZDVjNDdkNjAxNzhlMDE0NWJkZjEyOTE0
MWY2ZGE5Yzc1ZTMwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dh
ay9XZWJDb3JlVGhyZWFkLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsv
V2ViQ29yZVRocmVhZC5tbQpAQCAtNzAsMTcgKzcwLDIwIEBAIG5hbWVzcGFjZSB7CiAvLyBhcyBh
bnkgY2xpZW50IHRocmVhZCB0aGF0IGNhbGxzIGludG8gV2ViS2l0Lgogdm9pZCBSZWxlYXNlV2Vi
VGhyZWFkR2xvYmFsU3RhdGUoKQogewotICAgIC8vIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMIGN1
cnJlbnQgY29udGV4dCBpcyBvd25lZCBieSB0aGUgd2ViIHRocmVhZCBsb2NrLiBSZWxlYXNlIHRo
ZSBjb250ZXh0CisgICAgLy8gQU5HTEUgbWFpbnRhaW5zIHRocmVhZCBnbG9iYWwgc3RhdGUgZm9y
IGl0cyBjdXJyZW50IGNvbnRleHQuCisgICAgLy8gVGhpcyBpcyBjb25jZXB0dWFsbHkgb3duZWQg
YnkgdGhlIHdlYiB0aHJlYWQgbG9jay4gUmVsZWFzZSB0aGUgY29udGV4dAogICAgIC8vIGJlZm9y
ZSB0aGUgbG9jayBpcyByZWxlYXNlZC4KIAogICAgIC8vIEluIHNpbmdsZS10aHJlYWRlZCBlbnZp
cm9ubWVudHMgd2UgZG8gbm90IG5lZWQgdG8gdW5zZXQgdGhlIGNvbnRleHQsIGFzIHRoZXJlIHNo
b3VsZCBub3QgYmUgYWNjZXNzIGZyb20KICAgICAvLyBtdWx0aXBsZSB0aHJlYWRzLgogICAgIEFT
U0VSVChXZWJUaHJlYWRJc0VuYWJsZWQoKSk7Ci0gICAgdXNpbmcgUmVsZWFzZUJlaGF2aW9yID0g
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OlJlbGVhc2VCZWhhdmlvcjsKLSAgICAv
LyBGb3Igbm9uLXdlYiB0aHJlYWRzLCB3ZSBkb24ndCBrbm93IGlmIHdlIGV2ZXIgc2VlIGFub3Ro
ZXIgY2FsbCBmcm9tIHRoZSB0aHJlYWQuCi0gICAgUmVsZWFzZUJlaGF2aW9yIHJlbGVhc2VCZWhh
dmlvciA9Ci0gICAgICAgIFdlYlRocmVhZElzQ3VycmVudCgpID8gUmVsZWFzZUJlaGF2aW9yOjpQ
cmVzZXJ2ZVRocmVhZFJlc291cmNlcyA6IFJlbGVhc2VCZWhhdmlvcjo6UmVsZWFzZVRocmVhZFJl
c291cmNlczsKLSAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVsZWFzZUN1
cnJlbnRDb250ZXh0KHJlbGVhc2VCZWhhdmlvcik7CisgICAgdXNpbmcgUmVsZWFzZVJlc291cmNl
c0JlaGF2aW9yID0gV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OlJlbGVhc2VSZXNv
dXJjZXNCZWhhdmlvcjsKKyAgICAvLyBGb3Igd2ViIHRocmVhZCwganVzdCByZWxlYXNlIHRoZSBj
b250ZXh0IGFzIHdlIGtub3cgd2Ugd2lsbCBzZWUgY2FsbHMgdG8gaXQgYWdhaW4uCisgICAgLy8g
Rm9yIG5vbi13ZWIgdGhyZWFkcywgZS5nLiB0aGlyZC1wYXJ0eSBjbGllbnQgdGhyZWFkcywgd2Ug
ZG9uJ3Qga25vdyBpZiB3ZSBldmVyIHNlZSBhbm90aGVyIGNhbGwgZnJvbSB0aGUKKyAgICAvLyB0
aHJlYWQsIHNvIHdlIGFsc28gcmVsZWFzZSB0aGUgdGhyZWFkIHJlc291cmNlcy4KKyAgICBSZWxl
YXNlUmVzb3VyY2VzQmVoYXZpb3IgcmVsZWFzZUJlaGF2aW9yID0KKyAgICAgICAgV2ViVGhyZWFk
SXNDdXJyZW50KCkgPyBSZWxlYXNlUmVzb3VyY2VzQmVoYXZpb3I6OlJlbGVhc2VDdXJyZW50Q29u
dGV4dCA6IFJlbGVhc2VSZXNvdXJjZXNCZWhhdmlvcjo6UmVsZWFzZVRocmVhZFJlc291cmNlczsK
KyAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVsZWFzZVJlc291cmNlcyhy
ZWxlYXNlQmVoYXZpb3IpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvU2NvcGVkV2ViR0xSZW5kZXJpbmdSZXNvdXJjZXNSZXF1ZXN0LmNwcCBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9TY29wZWRXZWJHTFJlbmRlcmluZ1Jl
c291cmNlc1JlcXVlc3QuY3BwCmluZGV4IDBmNzVkODI1NDgwMzY1NDk4NWZlMDU4MTRlZTNiZDEz
NGU0ODFhZTYuLjEyOGQzODAzNzk1MGNlZGVhYWVlZTBiOThiMDJlNTM5N2E4MGFmMzIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9TY29wZWRXZWJHTFJlbmRl
cmluZ1Jlc291cmNlc1JlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9n
cmFwaGljcy9TY29wZWRXZWJHTFJlbmRlcmluZ1Jlc291cmNlc1JlcXVlc3QuY3BwCkBAIC0yNiwy
MCArMjYsMzggQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJTY29wZWRXZWJHTFJl
bmRlcmluZ1Jlc291cmNlc1JlcXVlc3QuaCIKIAorI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYg
RU5BQkxFKFdFQkdMKQorCisjaW5jbHVkZSAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaCIKKyNp
bmNsdWRlICJTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9H
cmFwaGljc0NvbnRleHRHTC5oPgorI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CisjaW5jbHVkZSA8
d3RmL1NlY29uZHMuaD4KKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIHN0ZDo6YXRvbWljPHVuc2ln
bmVkPiBTY29wZWRXZWJHTFJlbmRlcmluZ1Jlc291cmNlc1JlcXVlc3Q6OnNfcmVxdWVzdHM7Ci0K
LSNpZiAhUExBVEZPUk0oQ09DT0EpCitzdGF0aWMgY29uc3RleHByIFNlY29uZHMgZnJlZVdlYkdM
UmVuZGVyaW5nUmVzb3VyY2VzVGltZW91dCA9IDFfczsKK3N0YXRpYyBib29sIGRpZFNjaGVkdWxl
RnJlZVdlYkdMUmVuZGVyaW5nUmVzb3VyY2VzOwogCiB2b2lkIFNjb3BlZFdlYkdMUmVuZGVyaW5n
UmVzb3VyY2VzUmVxdWVzdDo6c2NoZWR1bGVGcmVlV2ViR0xSZW5kZXJpbmdSZXNvdXJjZXMoKQog
eworICAgIGlmIChkaWRTY2hlZHVsZUZyZWVXZWJHTFJlbmRlcmluZ1Jlc291cmNlcykKKyAgICAg
ICAgcmV0dXJuOworICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaEFmdGVyKGZyZWVXZWJHTFJl
bmRlcmluZ1Jlc291cmNlc1RpbWVvdXQsIGZyZWVXZWJHTFJlbmRlcmluZ1Jlc291cmNlcyk7Cisg
ICAgZGlkU2NoZWR1bGVGcmVlV2ViR0xSZW5kZXJpbmdSZXNvdXJjZXMgPSB0cnVlOwogfQogCiB2
b2lkIFNjb3BlZFdlYkdMUmVuZGVyaW5nUmVzb3VyY2VzUmVxdWVzdDo6ZnJlZVdlYkdMUmVuZGVy
aW5nUmVzb3VyY2VzKCkKIHsKKyAgICBkaWRTY2hlZHVsZUZyZWVXZWJHTFJlbmRlcmluZ1Jlc291
cmNlcyA9IGZhbHNlOworICAgIGlmIChzX3JlcXVlc3RzKQorICAgICAgICByZXR1cm47CisgICAg
cmVtb3RlR3JhcGhpY3NDb250ZXh0R0xTdHJlYW1Xb3JrUXVldWUoKS5kaXNwYXRjaChbXSB7Cisg
ICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWxlYXNlUmVzb3VyY2Vz
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpSZWxlYXNlUmVzb3VyY2VzQmVoYXZp
b3I6OlRlcm1pbmF0ZUFuZFJlbGVhc2VUaHJlYWRSZXNvdXJjZXMpOworICAgIH0pOwogfQogCi0j
ZW5kaWYKLQogfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9ncmFwaGljcy9TY29wZWRXZWJHTFJlbmRlcmluZ1Jlc291cmNlc1JlcXVlc3QuaCBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9TY29wZWRXZWJHTFJlbmRlcmluZ1Jlc291cmNl
c1JlcXVlc3QuaAppbmRleCBjMGVkNGVlZDNjZTlkNzQ5MTY0MmM0NjE2MzFiMDEzYzExNzg2ZDA4
Li4yY2I1MGIzYmNmMjYxNzFkZDI0NzE3YmFhNWI1MTM1YjAwYWVhN2FkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvU2NvcGVkV2ViR0xSZW5kZXJpbmdSZXNv
dXJjZXNSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1Nj
b3BlZFdlYkdMUmVuZGVyaW5nUmVzb3VyY2VzUmVxdWVzdC5oCkBAIC0yNSw2ICsyNSw4IEBACiAK
ICNwcmFnbWEgb25jZQogCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoV0VCR0wp
CisKICNpbmNsdWRlICJTY29wZWRSZW5kZXJpbmdSZXNvdXJjZXNSZXF1ZXN0LmgiCiAjaW5jbHVk
ZSA8YXRvbWljPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KQEAgLTgyLDMgKzg0LDUg
QEAgcHJpdmF0ZToKIH07CiAKIH0KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvZ3JhcGhpY3MvU2NvcGVkV2ViR0xSZW5kZXJpbmdSZXNvdXJjZXNSZXF1ZXN0
Q29jb2EuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1Njb3BlZFdlYkdM
UmVuZGVyaW5nUmVzb3VyY2VzUmVxdWVzdENvY29hLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMzFiMzNmY2Q1Y2ZmMzQ3MmQ0MTdlOTk1MTFjMDcyZTg0OGU3YTlhNy4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvZ3JhcGhpY3MvU2NvcGVkV2ViR0xSZW5kZXJpbmdSZXNvdXJjZXNSZXF1ZXN0Q29j
b2EuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNjAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNs
dWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJTY29wZWRXZWJHTFJlbmRlcmluZ1Jlc291cmNlc1Jl
cXVlc3QuaCIKLQotI2lmIFBMQVRGT1JNKENPQ09BKQotCi0jaW5jbHVkZSAiUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0wuaCIKLSNpbmNsdWRlICJTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlLmgiCi0j
aW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHRHTC5oPgotI2luY2x1ZGUgPHd0Zi9SdW5M
b29wLmg+Ci0jaW5jbHVkZSA8d3RmL1NlY29uZHMuaD4KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0K
LXN0YXRpYyBjb25zdGV4cHIgU2Vjb25kcyBmcmVlV2ViR0xSZW5kZXJpbmdSZXNvdXJjZXNUaW1l
b3V0ID0gMV9zOwotc3RhdGljIGJvb2wgZGlkU2NoZWR1bGVGcmVlV2ViR0xSZW5kZXJpbmdSZXNv
dXJjZXM7Ci0KLXZvaWQgU2NvcGVkV2ViR0xSZW5kZXJpbmdSZXNvdXJjZXNSZXF1ZXN0OjpzY2hl
ZHVsZUZyZWVXZWJHTFJlbmRlcmluZ1Jlc291cmNlcygpCi17Ci0gICAgaWYgKGRpZFNjaGVkdWxl
RnJlZVdlYkdMUmVuZGVyaW5nUmVzb3VyY2VzKQotICAgICAgICByZXR1cm47Ci0gICAgUnVuTG9v
cDo6bWFpbigpLmRpc3BhdGNoQWZ0ZXIoZnJlZVdlYkdMUmVuZGVyaW5nUmVzb3VyY2VzVGltZW91
dCwgZnJlZVdlYkdMUmVuZGVyaW5nUmVzb3VyY2VzKTsKLSAgICBkaWRTY2hlZHVsZUZyZWVXZWJH
TFJlbmRlcmluZ1Jlc291cmNlcyA9IHRydWU7Ci19Ci0KLXZvaWQgU2NvcGVkV2ViR0xSZW5kZXJp
bmdSZXNvdXJjZXNSZXF1ZXN0OjpmcmVlV2ViR0xSZW5kZXJpbmdSZXNvdXJjZXMoKQotewotICAg
IGRpZFNjaGVkdWxlRnJlZVdlYkdMUmVuZGVyaW5nUmVzb3VyY2VzID0gZmFsc2U7Ci0gICAgaWYg
KHNfcmVxdWVzdHMpCi0gICAgICAgIHJldHVybjsKLSAgICByZW1vdGVHcmFwaGljc0NvbnRleHRH
TFN0cmVhbVdvcmtRdWV1ZSgpLmRpc3BhdGNoKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWxl
YXNlQWxsUmVzb3VyY2VzSWZVbnVzZWQpOwotfQotCi19Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29j
b2EudHh0CmluZGV4IDVlNmI1MmMxMjExNDZjNmQ1M2FjZTY2NWQ2NWMyNTZmZGU1ZTk1OTMuLjgy
ZjQ2Y2U0NGIxNzc0ZTEzZGI3YWY0M2M3YmNiNGM3OGJhYmQ2NWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2Nv
YS50eHQKQEAgLTY2LDcgKzY2LDYgQEAgR1BVUHJvY2Vzcy9jb2NvYS9HUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzQ29jb2EubW0KIEdQVVByb2Nlc3MvY29jb2EvR1BVUHJvY2Vzc0NvY29hLm1tCiBH
UFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EuY3BwCiBHUFVQ
cm9jZXNzL2dyYXBoaWNzL1Njb3BlZFJlbmRlcmluZ1Jlc291cmNlc1JlcXVlc3RDb2NvYS5tbSBA
bm8tdW5pZnkKLUdQVVByb2Nlc3MvZ3JhcGhpY3MvU2NvcGVkV2ViR0xSZW5kZXJpbmdSZXNvdXJj
ZXNSZXF1ZXN0Q29jb2EuY3BwCiBHUFVQcm9jZXNzL2lvcy9HUFVQcm9jZXNzSU9TLm1tCiBHUFVQ
cm9jZXNzL21hYy9HUFVQcm9jZXNzTWFjLm1tCiBHUFVQcm9jZXNzL21hYy9Mb2NhbEF1ZGlvU2Vz
c2lvblJvdXRpbmdBcmJpdHJhdG9yLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJL
aXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZDFjNjk1MTViYjE4MmRmYTVhNTQwNzc0ODY0Zjcz
ZWMyOThjNDFkOS4uOTlmMWRiZWYxMjUwYjJmZmQ5OGU0NWZjOGE1ZTRlMzI4YmRhZjFhOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0z
LDcgKzMsNyBAQAogCWFyY2hpdmVWZXJzaW9uID0gMTsKIAljbGFzc2VzID0gewogCX07Ci0Jb2Jq
ZWN0VmVyc2lvbiA9IDUyOworCW9iamVjdFZlcnNpb24gPSA1NDsKIAlvYmplY3RzID0gewogCiAv
KiBCZWdpbiBQQlhBZ2dyZWdhdGVUYXJnZXQgc2VjdGlvbiAqLwpAQCAtNDc2MCw3ICs0NzYwLDYg
QEAKIAkJN0JDRjcwQ0MyNjE0OTM1RjAwRTRGQjcwIC8qIFNjb3BlZFdlYkdMUmVuZGVyaW5nUmVz
b3VyY2VzUmVxdWVzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTY29wZWRXZWJHTFJlbmRlcmlu
Z1Jlc291cmNlc1JlcXVlc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QkNG
NzBDRDI2MTQ5MzVGMDBFNEZCNzAgLyogU2NvcGVkUmVuZGVyaW5nUmVzb3VyY2VzUmVxdWVzdC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBTY29wZWRSZW5kZXJpbmdSZXNvdXJjZXNSZXF1ZXN0Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCQ0Y3MENFMjYxNDkzNUYwMEU0RkI3MCAvKiBTY29w
ZWRXZWJHTFJlbmRlcmluZ1Jlc291cmNlc1JlcXVlc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NvcGVk
V2ViR0xSZW5kZXJpbmdSZXNvdXJjZXNSZXF1ZXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCTdCQ0Y3MENGMjYxNDk3RTYwMEU0RkI3MCAvKiBTY29wZWRXZWJHTFJlbmRlcmluZ1Jl
c291cmNlc1JlcXVlc3RDb2NvYS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTY29wZWRXZWJHTFJl
bmRlcmluZ1Jlc291cmNlc1JlcXVlc3RDb2NvYS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTdCRTcyNjU3MjU3NEY2NzIwMEU4NUQ5OCAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5RnVuY3Rpb25zR2VuZXJhdGVkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHlGdW5jdGlvbnNHZW5lcmF0ZWQuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk3QkU3MjY2ODI1NzY4MEVGMDBFODVEOTggLyogUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xDb2NvYS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTENvY29hLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0MwNjVGMjkx
QzhDRDk1RjAwQzJEOTUwIC8qIFdlYlVzZXJDb250ZW50Q29udHJvbGxlckRhdGFUeXBlcy5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJVc2VyQ29udGVudENvbnRy
b2xsZXJEYXRhVHlwZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtOTEwNCw3
ICs5MTAzLDYgQEAKIAkJCQk3QkNGNzBDQjI2MTQ5MzVFMDBFNEZCNzAgLyogU2NvcGVkUmVuZGVy
aW5nUmVzb3VyY2VzUmVxdWVzdENvY29hLm1tICovLAogCQkJCTdCQ0Y3MENDMjYxNDkzNUYwMEU0
RkI3MCAvKiBTY29wZWRXZWJHTFJlbmRlcmluZ1Jlc291cmNlc1JlcXVlc3QuY3BwICovLAogCQkJ
CTdCQ0Y3MENFMjYxNDkzNUYwMEU0RkI3MCAvKiBTY29wZWRXZWJHTFJlbmRlcmluZ1Jlc291cmNl
c1JlcXVlc3QuaCAqLywKLQkJCQk3QkNGNzBDRjI2MTQ5N0U2MDBFNEZCNzAgLyogU2NvcGVkV2Vi
R0xSZW5kZXJpbmdSZXNvdXJjZXNSZXF1ZXN0Q29jb2EuY3BwICovLAogCQkJKTsKIAkJCXBhdGgg
PSBncmFwaGljczsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>439840</attachid>
            <date>2021-10-01 05:17:12 -0700</date>
            <delta_ts>2021-10-01 07:00:37 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-231011-20211001151710.patch</filename>
            <type>text/plain</type>
            <size>63313</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgzMzAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWE0ZDJmY2U1MGM0ZDY4
MzNjYjk0ZmNmMDc2NjkzMjhmM2NiNjFlMC4uYzlhY2EyZDAyN2UwYmE1YzVjNzVkMTJhMGRkMmEy
NWQ2NjEzOGI5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYyIEBACisyMDIxLTA5LTMwICBLaW1t
byBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgU2NvcGVkRUdMRGVm
YXVsdERpc3BsYXkgc2hvdWxkIGJlIHJlbW92ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMTAxMQorCisgICAgICAgIFJldmlld2VkIGJ5IEtlbm5l
dGggUnVzc2VsbC4KKworICAgICAgICBIYXJkLWNvZGluZyB0aGUgY29kZSB0byBFR0xfREVGQVVM
VF9ESVNQTEFZIG9ubHkgYW5kIHVzaW5nIHRoZSBzY29wZWQKKyAgICAgICAgaG9sZGVyIGlzIG1h
a2luZyB0aGUgRUdMRGlzcGxheXMgaGFyZGVyIHRvIHVzZSB0aGFuIG5lY2Nlc3NhcnkuIFRoZQor
ICAgICAgICBpbXBsZW1lbnRhdGlvbiB0YXJnZXQsIGUuZy4gdGhlIGFiaWxpdHkgdG8gY2FsbCBF
R0xUZXJtaW5hdGUsIHdhcyBhbHNvIGEgYml0CisgICAgICAgIG1vcmUgY29udm9sdXRlZCB0aGFu
IG5lZWRlZC4KKworICAgICAgICBNb3ZlIHRoZSAiY2FsbCBFR0xUZXJtaW5hdGUiIGxvZ2ljIGZy
b20gYSBiaXQgY29udm9sdXRlZCByZWZjb3VudCBtZWNoYW5pc20KKyAgICAgICAgaW4gU2NvcGVk
RUdMRGVmYXVsdERpc3BsYXkgdG8gdGhlIGV4cGxpY2l0IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpyZWxlYXNlUmVzb3VyY2VzKCkuCisgICAgICAgIFRoZSBjYWxsZXJzIGFyZSBleHBlY3RlZCB0
byBkbyB0aGUgcmVmY291bnRpbmcgYW55d2F5LCBhcyB0aGUgZXhpc3RpbmcgY2xpZW50CisgICAg
ICAgIFdlYktpdDo6U2NvcGVkV2ViR0xSZW5kZXJpbmdSZXNvdXJjZXNSZXF1ZXN0IGFscmVhZHkg
ZGlkLgorCisgICAgICAgIE1ha2UgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlbGVhc2VSZXNv
dXJjZXMoKSBhdmFpbGFibGUgb24gYWxsIHBsYXRmb3Jtcy4KKyAgICAgICAgSXQgaXMgaW1wbGVt
ZW50ZWQgb24gYWxsIEFOR0xFIGltcGxlbWVudGF0aW9ucy4KKyAgICAgICAgUGxhdGZvcm1zIGNh
biBhdWdtZW50IHRoZSBpbXBsZW1lbnRhdGlvbiBieSBpbXBsZW1lbnRpbmcKKyAgICAgICAgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OnBsYXRmb3JtUmVsZWFzZVJlc291cmNlcygpLiBGb3IgQ29j
b2EsIHRoaXMgZnVuY3Rpb24KKyAgICAgICAgcmVzZXRzIHRoZSBjdXJyZW50Q29udGV4dCBjYWNo
ZSB0aGF0IGlzIHVzZWQgdG8gb3B0aW1pemUgbWFraW5nIGNvbnRleHQgY3VycmVudC4KKworICAg
ICAgICBObyBuZXcgdGVzdHMsIHJlZmFjdG9yLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6
CisgICAgICAgICogSGVhZGVycy5jbWFrZToKKyAgICAgICAgKiBQbGF0Zm9ybU1hYy5jbWFrZToK
KyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9BTkdM
RVV0aWxpdGllcy5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFRUdMVXRpbGl0aWVzLmguCisgICAgICAg
IChXZWJDb3JlOjpwbGF0Zm9ybUlzQU5HTEVBdmFpbGFibGUpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2FuZ2xlL0FOR0xFVXRpbGl0aWVzLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFVXRpbGl0
aWVzLmguCisgICAgICAgIFJlbmFtZSBHcmFwaGljc0NvbnRleHRHTEFOR0xFVXRpbGl0aWVzIHRv
IHNpbXBsZXIgYW5kIG1vcmUgZGVzY3JpcHRpdmUgQU5HTEVVdGlsaXRpZXMuCisgICAgICAgIEFk
ZCB0aGUgaXNBTkdMRUF2YWlsYWJsZSB0byB0aGVyZS4KKworICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlbGVhc2VSZXNvdXJjZXMpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnBsYXRmb3JtUmVsZWFzZVJlc291cmNl
cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xB
TkdMRUVHTFV0aWxpdGllcy5jcHA6IFJlbW92ZWQuCisgICAgICAgIChXZWJDb3JlOjpyZWZEZWZh
dWx0RGlzcGxheSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjp1bnJlZkRlZmF1bHREaXNw
bGF5SWZOZWVkZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2NvcGVkRUdMRGVmYXVs
dERpc3BsYXk6Om9wZXJhdG9yPSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTY29wZWRF
R0xEZWZhdWx0RGlzcGxheTo6U2NvcGVkRUdMRGVmYXVsdERpc3BsYXkpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6U2NvcGVkRUdMRGVmYXVsdERpc3BsYXk6On5TY29wZWRFR0xEZWZhdWx0
RGlzcGxheSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTY29wZWRFR0xEZWZhdWx0RGlz
cGxheTo6cmVsZWFzZUFsbFJlc291cmNlc0lmVW51c2VkKTogRGVsZXRlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6cGxhdGZvcm1Jc0FOR0xFQXZhaWxhYmxlKToKKyAgICAgICAgKFdl
YkNvcmU6OmluaXRpYWxpemVFR0xEaXNwbGF5KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpwbGF0Zm9ybVJlbGVhc2VSZXNvdXJjZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6aXNBTkdMRUF2YWlsYWJsZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6cmVsZWFzZUN1cnJlbnRDb250ZXh0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWxlYXNlQWxsUmVzb3Vy
Y2VzSWZVbnVzZWQpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5n
bC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6cmVsZWFzZVJlc291cmNlcyk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cGxhdGZvcm1SZWxlYXNlUmVzb3VyY2VzKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9pb3Mvd2FrL1dlYkNvcmVUaHJlYWQubW06CisKIDIwMjEtMDkt
MjkgIEtpbW1vIEtpbm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBHUFVQ
IENvY29hIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMIHNob3VsZCBjaGVjayBmb3IgQU5HTEUgcHJl
c2VuY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKaW5kZXggMzZiOTI1ZGU1Mzk0MjhlMDYwYWJjZjZhNGNjOTg0MzBlNmY2NjI2
Yi4uN2UzMzI3YjM1YjEyYTI4MDk0ODQzNGVlMDBmNTNhZTNjNjZmNmFkYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwyNyBAQAorMjAyMS0wOS0zMCAgS2ltbW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBw
bGUuY29tPgorCisgICAgICAgIFNjb3BlZEVHTERlZmF1bHREaXNwbGF5IHNob3VsZCBiZSByZW1v
dmVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzEw
MTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBs
ZW1lbnQgdGhlIHJlbGVhc2Ugb2YgV2ViR0wgcmVzb3VyY2VzIHdpdGggdGhlIGFtZW5kZWQKKyAg
ICAgICAgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlbGVhc2VSZXNvdXJjZXMoKSBpbnN0ZWFk
IG9mCisgICAgICAgIHByZXZpb3VzIHNlcGFyYXRlIGZ1bmN0aW9uIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpyZWxlYXNlQWxsUmVzb3VyY2VzKCkuCisKKyAgICAgICAgVXNlIHRoZSByZXNvdXJj
ZSByZWxlYXNlIGNvZGUgcGF0aCB1bml2ZXJzYWxseSwgYXMKKyAgICAgICAgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OnJlbGVhc2VSZXNvdXJjZXMoKSBpcyBub3cgY29tbW9uIGNvZGUuCisKKyAg
ICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1Njb3BlZFdlYkdMUmVuZGVyaW5nUmVzb3VyY2Vz
UmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNjb3BlZFdlYkdMUmVuZGVyaW5nUmVzb3Vy
Y2VzUmVxdWVzdDo6c2NoZWR1bGVGcmVlV2ViR0xSZW5kZXJpbmdSZXNvdXJjZXMpOgorICAgICAg
ICAoV2ViS2l0OjpTY29wZWRXZWJHTFJlbmRlcmluZ1Jlc291cmNlc1JlcXVlc3Q6OmZyZWVXZWJH
TFJlbmRlcmluZ1Jlc291cmNlcyk6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9TY29w
ZWRXZWJHTFJlbmRlcmluZ1Jlc291cmNlc1JlcXVlc3QuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNz
L2dyYXBoaWNzL1Njb3BlZFdlYkdMUmVuZGVyaW5nUmVzb3VyY2VzUmVxdWVzdENvY29hLmNwcDog
UmVtb3ZlZC4KKyAgICAgICAgKFdlYktpdDo6U2NvcGVkV2ViR0xSZW5kZXJpbmdSZXNvdXJjZXNS
ZXF1ZXN0OjpzY2hlZHVsZUZyZWVXZWJHTFJlbmRlcmluZ1Jlc291cmNlcyk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJLaXQ6OlNjb3BlZFdlYkdMUmVuZGVyaW5nUmVzb3VyY2VzUmVxdWVzdDo6ZnJl
ZVdlYkdMUmVuZGVyaW5nUmVzb3VyY2VzKTogRGVsZXRlZC4KKyAgICAgICAgKiBTb3VyY2VzQ29j
b2EudHh0OgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAy
MDIxLTA5LTI5ICBBZGEgQ2hhbiAgPGFkYS5jaGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2Vi
WFJdIEhvbGQgYSBmb3JlZ3JvdW5kIGFzc2VydGlvbiBmb3IgdGhlIGR1cmF0aW9uIG9mIHRoZSBp
bW1lcnNpdmUgc2Vzc2lvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50
eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCA1YWMxNzQ5NjEzOWQ0Mzky
ODI4ZTU5MzhiNDI5Y2RhYTYxZDUzYWFlLi5kYTE1MzNkMGNhMjY2YmMxMDdjOTlkNTY0ZjYyZmQ1
NmMwN2IxNThkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMTcwMSw5ICsxNzAxLDkgQEAgaWYg
KEVOQUJMRV9XRUJHTCkKICAgICAgICAgICAgICR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2dyYXBo
aWNzL2FuZ2xlCiAgICAgICAgICkKICAgICAgICAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VT
CisgICAgICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9BTkdMRVV0aWxpdGllcy5jcHAK
ICAgICAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmNw
cAogICAgICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xB
TkdMRS5jcHAKLSAgICAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29u
dGV4dEdMQU5HTEVFR0xVdGlsaXRpZXMuY3BwCiAgICAgICAgICAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9hbmdsZS9UZW1wb3JhcnlBTkdMRVNldHRpbmcuY3BwCiAgICAgICAgICkKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMu
Y21ha2UKaW5kZXggZjlmMjAzZDE0ZGQ5M2MzMTU2MDZjOTk0Zjg1OWY2NTVlYjhiMGQ0My4uMDMy
MzYwYTcwMDZlMmMwNDhlMTRiOTdkNWNkOWQyNjQ2MjFkYjM5OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvSGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtl
CkBAIC0xMzc5LDggKzEzNzksOCBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFE
RVJTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvV2luZFJ1bGUuaAogCiAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvYW5nbGUvQU5HTEVIZWFkZXJzLmgKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9B
TkdMRVV0aWxpdGllcy5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dM
QU5HTEUuaAotICAgIHBsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5H
TEVVdGlsaXRpZXMuaAogCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0LmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RE
cmF3aW5nQ29udGV4dC5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5j
bWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCmluZGV4IGZhY2NjYjY4ZjY1
ZWJhN2NjNTkxYmM3MjRmY2EwYzJhMzNhYzRmOGEuLmJjZmNlYjc5MzEzZWMwNWMzNTRjNWZlZmUz
NGFiNTEwYWIzM2U3MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNt
YWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCkBAIC02MTQsNyArNjE0
LDcgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvTUlNRVR5cGVDYWNoZS5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
TW9kZWwuaAogCi0gICAgcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xB
TkdMRUVHTFV0aWxpdGllcy5oCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvQU5HTEVVdGls
aXRpZXMuaAogCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0F1ZGlvU291cmNl
UHJvdmlkZXJBVkZPYmpDLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVk
aWFQbGF5YmFja1RhcmdldENvY29hLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJj
ZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IDNhMWI5
MDI4NTFkMmMxNGFkYjkzZThmNmNlNDc3ODY1MGZmZDhmZTYuLmNkMmRmYjI3NDZlNzRkYjhmYWIw
Y2FiMjkwOWFjNzkyYTRiYTFjNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXND
b2NvYS50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dApAQCAtNTk2LDcg
KzU5Niw3IEBAIHRlc3RpbmcvY29jb2EvV2ViVmlld1Zpc3VhbElkZW50aWZpY2F0aW9uT3Zlcmxh
eS5tbQogLy8gVGhlIGZvbGxvd2luZyBmaWxlcyBhcmVuJ3QgdW5pZmllZCB3aXRoIG90aGVycyB0
byBwcmV2ZW50IHRoZW0gZnJvbSBiZWluZyBtZXJnZWQKIC8vIHdpdGggZmlsZXMgdGhhdCB1c2Ug
dGhlIHN5c3RlbSBPcGVuR0wuCiAKK3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0FOR0xFVXRpbGl0
aWVzLmNwcCBAbm8tdW5pZnkKIHBsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFO
R0xFLmNwcCBAbm8tdW5pZnkKIHBsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4
dEdMQU5HTEUuY3BwIEBuby11bmlmeQotcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3ND
b250ZXh0R0xBTkdMRUVHTFV0aWxpdGllcy5jcHAgQG5vLXVuaWZ5CiBwbGF0Zm9ybS9ncmFwaGlj
cy9hbmdsZS9UZW1wb3JhcnlBTkdMRVNldHRpbmcuY3BwIEBuby11bmlmeQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDAyZDg0MTVi
NDYwYjI3NTAxNjU0YTE1NzQyOTEyYjVjNGZkYjEyNWEuLjRmY2YwMmQ3ZWZjNWNkNWQ5NTFhZTlm
NzFhYmIwNDRlYTFmNjliODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTIzNTEsMTMgKzIzNTEsMTEgQEAKIAkJN0FGOUIyMEYx
OENGQjVGNDAwQzY0QkVGIC8qIEpTVlRUUmVnaW9uTGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0FGOUIyMEIxOENGQjVGMzAwQzY0QkVGIC8qIEpT
VlRUUmVnaW9uTGlzdC5oICovOyB9OwogCQk3QjEwMzM5RTI1NDk3MjE3MDBDOEMxQUMgLyogR3Jh
cGhpY3NDb250ZXh0R0xDVi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gN0IxMDMzOUQyNTQ5NzIwMTAwQzhDMUFDIC8qIEdyYXBoaWNzQ29udGV4dEdMQ1Yu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QjEw
MzM5RjI1NDk3MjFFMDBDOEMxQUMgLyogR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjEwMzM5QzI1NDk3MjAx
MDBDOEMxQUMgLyogR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJN0I0NUFCNTAyNUZCOTNCRTAwRkQyN0Y0
IC8qIEdyYXBoaWNzQ29udGV4dEdMQU5HTEVFR0xVdGlsaXRpZXMuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I3NzRDNjIyNUZCOTM1NTAwOTEzOTVG
IC8qIEdyYXBoaWNzQ29udGV4dEdMQU5HTEVFR0xVdGlsaXRpZXMuY3BwICovOyB9OwotCQk3QjQ1
QUI1NTI1RkJBOURFMDBGRDI3RjQgLyogR3JhcGhpY3NDb250ZXh0R0xBTkdMRUVHTFV0aWxpdGll
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I0NUFC
NTQyNUZCQTlERDAwRkQyN0Y0IC8qIEdyYXBoaWNzQ29udGV4dEdMQU5HTEVFR0xVdGlsaXRpZXMu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QjZE
QzgxOTI1NzEyRTkyMDAzODBDNzAgLyogR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hh
aW4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCNkRD
ODE3MjU3MTJFOTIwMDM4MEM3MCAvKiBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFp
bi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdC
NzMxMUZCMjVDMDkyQjcwMDNCMjc5NiAvKiBTY29wZWRIaWdoUGVyZm9ybWFuY2VHUFVSZXF1ZXN0
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjczMTFG
QTI1QzA5MkI3MDAzQjI3OTYgLyogU2NvcGVkSGlnaFBlcmZvcm1hbmNlR1BVUmVxdWVzdC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdCOEVENUYw
MjZGMEMxM0QwMDhBQzAyMyAvKiBDVlV0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I4RUQ1RUQyNkYwQzEyMzAwOEFDMDIzIC8qIENWVXRp
bGl0aWVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJN0I5MDQxNzAyNTUwMTE0MjAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHlCYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
QjkwNDE2RTI1NTAxMTA5MDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJh
c2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk3
QkIzNEExNzI1MzQ1Q0IyMDAwMjlEMDggLyogR3JhcGhpY3NDb250ZXh0R0xBTkdMRVV0aWxpdGll
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0JCMzRB
MTYyNTM0NUNCMjAwMDI5RDA4IC8qIEdyYXBoaWNzQ29udGV4dEdMQU5HTEVVdGlsaXRpZXMuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk3QkIzNEEx
NzI1MzQ1Q0IyMDAwMjlEMDggLyogQU5HTEVVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCQjM0QTE2MjUzNDVDQjIwMDAyOUQwOCAvKiBB
TkdMRVV0aWxpdGllcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTdCQjM0QTQ4MjUzNzc2Q0EwMDAyOUQwOCAvKiBHcmFwaGljc0NvbnRleHRHTElt
YWdlRXh0cmFjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3QkIzNEE0NTI1Mzc3NkM2MDAwMjlEMDggLyogR3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4
dHJhY3Rvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTdCQjY4MEJBMjVCQTFCRTQwMDJCODczOCAvKiBHcmFwaGljc0NoZWNrc01hYy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0JCNjgwQjgyNUJBMUJF
NDAwMkI4NzM4IC8qIEdyYXBoaWNzQ2hlY2tzTWFjLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0JFNzQyNzM4MUZBOTA2RkJCNEYwRjJDIC8qIEpT
U1ZHR3JhcGhpY3NFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5NTBDNEMwMkJFRDg5MzZGODE4RTJGOTkgLyogSlNTVkdHcmFwaGljc0VsZW1l
bnQuaCAqLzsgfTsKQEAgLTEwNjMxLDIwICsxMDYyOSwxOSBAQAogCQk3QjEwMzM5QTI1NDk3MjAw
MDBDOEMxQUMgLyogR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEdyYXBoaWNzQ29udGV4dEdMQ1ZBTkdMRS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTdCMTAzMzlDMjU0OTcyMDEwMEM4QzFBQyAvKiBHcmFwaGljc0NvbnRleHRHTENWQU5H
TEUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCMTAzMzlEMjU0OTcyMDEwMEM4QzFBQyAvKiBHcmFwaGlj
c0NvbnRleHRHTENWLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dEdMQ1YuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJN0I0NUFCNTQyNUZCQTlERDAwRkQyN0Y0IC8qIEdy
YXBoaWNzQ29udGV4dEdMQU5HTEVFR0xVdGlsaXRpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0R0xBTkdMRUVHTFV0aWxpdGllcy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk3QjY0QzBCNDI1NEMzQjE2MDAwNkI0QUYgLyogUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2VDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlQ29jb2EubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTdCNkRDODE1MjU3MTJFOTEwMDM4MEM3MCAvKiBHcmFwaGljc0NvbnRl
eHRHTElPU3VyZmFjZVN3YXBDaGFpbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCNkRDODE3MjU3MTJFOTIwMDM4MEM3MCAvKiBHcmFwaGlj
c0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk3QjczMTFGQTI1QzA5MkI3MDAzQjI3OTYgLyogU2NvcGVkSGln
aFBlcmZvcm1hbmNlR1BVUmVxdWVzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBTY29wZWRIaWdoUGVyZm9ybWFuY2VHUFVSZXF1ZXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCTdCNzc0QzYyMjVGQjkzNTUwMDkxMzk1RiAvKiBHcmFwaGljc0NvbnRleHRHTEFO
R0xFRUdMVXRpbGl0aWVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dEdM
QU5HTEVFR0xVdGlsaXRpZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjhF
RDVFRDI2RjBDMTIzMDA4QUMwMjMgLyogQ1ZVdGlsaXRpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQ1ZVdGlsaXRpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJN0I4RUQ1RUYyNkYwQzEyMzAwOEFDMDIzIC8qIENWVXRpbGl0aWVzLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQ1ZVdGlsaXRpZXMubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTdCOTA0MTZFMjU1MDExMDkwMDZFRUI4QyAvKiBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5QmFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5QmFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3QkIzNEEx
NjI1MzQ1Q0IyMDAwMjlEMDggLyogR3JhcGhpY3NDb250ZXh0R0xBTkdMRVV0aWxpdGllcy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHcmFwaGljc0NvbnRleHRHTEFOR0xFVXRp
bGl0aWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCQjM0QTE2MjUzNDVDQjIw
MDAyOUQwOCAvKiBBTkdMRVV0aWxpdGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBBTkdMRVV0aWxpdGllcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QkIz
NEE0NTI1Mzc3NkM2MDAwMjlEMDggLyogR3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBHcmFwaGljc0NvbnRleHRHTEltYWdlRXh0cmFjdG9yLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCQjM0QTQ3MjUzNzc2QzcwMDAyOUQwOCAvKiBHcmFw
aGljc0NvbnRleHRHTEltYWdlRXh0cmFjdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdyYXBo
aWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk3QkI2ODBCNzI1QkExQkUzMDAyQjg3MzggLyogR3JhcGhpY3NDaGVja3NNYWMuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR3JhcGhpY3NDaGVja3NNYWMuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QkI2ODBCODI1QkExQkU0MDAyQjg3Mzgg
LyogR3JhcGhpY3NDaGVja3NNYWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
R3JhcGhpY3NDaGVja3NNYWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0JDRDQy
RDgyNzA1OTlFRjAwRUIyMTI3IC8qIEFOR0xFVXRpbGl0aWVzLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEFOR0xFVXRpbGl0aWVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0JF
NzI2NUIyNTc2M0I4RDAwRTg1RDk4IC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNl
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNl
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0MwMTFGM0QyNEZBRDM2MDAwNUJF
RjEwIC8qIFNldHRpbmdzLmNwcC5lcmIgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gU2V0dGluZ3MuY3BwLmVyYjsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0MwMTFGM0UyNEZBRDM2MDAwNUJFRjEwIC8qIEludGVybmFs
U2V0dGluZ3NHZW5lcmF0ZWQuY3BwLmVyYiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBJbnRlcm5hbFNldHRpbmdzR2VuZXJhdGVk
LmNwcC5lcmI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMjYyNSwxMiArMjI2MjIs
MTEgQEAKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCiAJCQkJMjdFM0M4MDYy
NTdGNUU2RTAwQzk4NkFCIC8qIEFOR0xFSGVhZGVycy5oICovLAorCQkJCTdCQ0Q0MkQ4MjcwNTk5
RUYwMEVCMjEyNyAvKiBBTkdMRVV0aWxpdGllcy5jcHAgKi8sCisJCQkJN0JCMzRBMTYyNTM0NUNC
MjAwMDI5RDA4IC8qIEFOR0xFVXRpbGl0aWVzLmggKi8sCiAJCQkJNkUyN0YyNDMyMjlDOUY4NDAw
RjFGNjMyIC8qIEV4dGVuc2lvbnNHTEFOR0xFLmNwcCAqLywKIAkJCQk2RTI3RjI0NDIyOUM5RjhE
MDBGMUY2MzIgLyogRXh0ZW5zaW9uc0dMQU5HTEUuaCAqLywKIAkJCQk2RTI3RjI0MjIyOThDRTRC
MDBGMUY2MzIgLyogR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAgKi8sCi0JCQkJN0I3NzRDNjIy
NUZCOTM1NTAwOTEzOTVGIC8qIEdyYXBoaWNzQ29udGV4dEdMQU5HTEVFR0xVdGlsaXRpZXMuY3Bw
ICovLAotCQkJCTdCNDVBQjU0MjVGQkE5REQwMEZEMjdGNCAvKiBHcmFwaGljc0NvbnRleHRHTEFO
R0xFRUdMVXRpbGl0aWVzLmggKi8sCi0JCQkJN0JCMzRBMTYyNTM0NUNCMjAwMDI5RDA4IC8qIEdy
YXBoaWNzQ29udGV4dEdMQU5HTEVVdGlsaXRpZXMuaCAqLywKIAkJCQk2RTI5MDg2MTIyOURCOTUw
MDAwOTg2RTIgLyogVGVtcG9yYXJ5QU5HTEVTZXR0aW5nLmNwcCAqLywKIAkJCQk2RTI5MDg2MzIy
OURCOTcwMDAwOTg2RTIgLyogVGVtcG9yYXJ5QU5HTEVTZXR0aW5nLmggKi8sCiAJCQkpOwpAQCAt
MzEzOTMsNiArMzEzODksNyBAQAogCQkJCUU3RTAzNTcyMjRENEUxOTYwMDhERkVGQiAvKiBBbmFs
eXNlck9wdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTI3RTNDODA4MjU3RjVFNkUwMEM5ODZB
QiAvKiBBTkdMRUhlYWRlcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTMxQTc5NUM3MTg4OEJDQjIw
MDM4MkY5MCAvKiBBTkdMRUluc3RhbmNlZEFycmF5cy5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0JC
MzRBMTcyNTM0NUNCMjAwMDI5RDA4IC8qIEFOR0xFVXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLywK
IAkJCQk0OUU5MTJBQjBFRkFDOTA2MDA5RDBDQUYgLyogQW5pbWF0aW9uLmggaW4gSGVhZGVycyAq
LywKIAkJCQk3MUVGQ0VEQzIwMkIzOEE5MDBEN0M0MTEgLyogQW5pbWF0aW9uRWZmZWN0LmggaW4g
SGVhZGVycyAqLywKIAkJCQk3MUUyQzQyNjIxQzkzNTI4MDAyNEY4QzggLyogQW5pbWF0aW9uRWZm
ZWN0UGhhc2UuaCBpbiBIZWFkZXJzICovLApAQCAtMzI2MzksOCArMzI2MzYsNiBAQAogCQkJCUIy
QTAxNUE5MEFGNkNENTMwMDZCQ0UwRSAvKiBHcmFwaGljc0NvbnRleHQuaCBpbiBIZWFkZXJzICov
LAogCQkJCTkzNDkwN0U0MTI1QkJCQzgwMDdGMjNBMCAvKiBHcmFwaGljc0NvbnRleHRDRy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMzEzREU4NzAyM0E5Njk3MzAwOEZDNDdCIC8qIEdyYXBoaWNzQ29u
dGV4dEdMLmggaW4gSGVhZGVycyAqLywKLQkJCQk3QjQ1QUI1NTI1RkJBOURFMDBGRDI3RjQgLyog
R3JhcGhpY3NDb250ZXh0R0xBTkdMRUVHTFV0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJ
N0JCMzRBMTcyNTM0NUNCMjAwMDI5RDA4IC8qIEdyYXBoaWNzQ29udGV4dEdMQU5HTEVVdGlsaXRp
ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTdDMzMwQTAyMURGOEZBQzYwMEQzMzk1QyAvKiBHcmFw
aGljc0NvbnRleHRHTEF0dHJpYnV0ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTdCMTAzMzlFMjU0
OTcyMTcwMEM4QzFBQyAvKiBHcmFwaGljc0NvbnRleHRHTENWLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk3QjEwMzM5RjI1NDk3MjFFMDBDOEMxQUMgLyogR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFLmgg
aW4gSGVhZGVycyAqLywKQEAgLTM2NDk5LDcgKzM2NDk0LDYgQEAKIAkJCQk1MUE5RDlFOTE5NUI5
MzFGMDAxQjJCNUMgLyogR2FtZXBhZE1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODM3
OTY0Q0YxRjhEQjY5RDAwMjE4RUEwIC8qIEdlb2xvY2F0aW9uUG9zaXRpb25EYXRhSU9TLm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNkU3MkY1NEUyMjlEQ0QxMDAwQjNFMTUxIC8qIEdyYXBoaWNzQ29u
dGV4dEdMQU5HTEUuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJN0I0NUFCNTAyNUZCOTNCRTAwRkQy
N0Y0IC8qIEdyYXBoaWNzQ29udGV4dEdMQU5HTEVFR0xVdGlsaXRpZXMuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJN0MzRTUxMEIxOERGOEYzNTAwQzExMkY3IC8qIEhUTUxDb252ZXJ0ZXIubW0gaW4g
U291cmNlcyAqLywKIAkJCQlBOEQwNkIzQTBBMjY1RENEMDA1RTcyMDMgLyogSFRNTE5hbWVzLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTFBQzkwMEMzMTk0M0MwRkMwMDg2MjVCNSAvKiBIVFRQSGVh
ZGVyTmFtZXMuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9BTkdMRVV0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9BTkdMRVV0aWxpdGllcy5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
N2M1ZjhiNTg3NzM0OTAwMDE0NTM4OTRhMDEzZjIyNzFjOTc1YWNjMwotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0FOR0xFVXRpbGl0aWVz
LmNwcApAQCAtMCwwICsxLDQyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkFOR0xFVXRpbGl0aWVz
LmgiCisKKyNpZiBFTkFCTEUoV0VCR0wpICYmIFVTRShBTkdMRSkKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCisjaWYgIVBMQVRGT1JNKENPQ09BKQorYm9vbCBwbGF0Zm9ybUlzQU5HTEVBdmFpbGFi
bGUoKQoreworICAgIHJldHVybiB0cnVlOworfQorI2VuZGlmCisKK30KKworI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9BTkdMRVV0aWxp
dGllcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvQU5HTEVVdGls
aXRpZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42OTJjMzNjMmZkZjJiN2RkOGNjMDk1YjRjMTBhZjE2NWFiZDMx
YTg1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YW5nbGUvQU5HTEVVdGlsaXRpZXMuaApAQCAtMCwwICsxLDI0NyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxF
KFdFQkdMKSAmJiBVU0UoQU5HTEUpCisKKyNpbmNsdWRlICJBTkdMRUhlYWRlcnMuaCIKKyNpbmNs
dWRlICJHcmFwaGljc1R5cGVzR0wuaCIKKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBTY29wZWRSZXN0b3JlVGV4dHVyZUJpbmRpbmcg
eworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFNjb3BlZFJlc3RvcmVUZXh0dXJlQmluZGluZyk7
CitwdWJsaWM6CisgICAgU2NvcGVkUmVzdG9yZVRleHR1cmVCaW5kaW5nKEdMZW51bSBiaW5kaW5n
UG9pbnRRdWVyeSwgR0xlbnVtIGJpbmRpbmdQb2ludCwgYm9vbCBjb25kaXRpb24gPSB0cnVlKQor
ICAgIHsKKyAgICAgICAgQVNTRVJUKGJpbmRpbmdQb2ludCAhPSBzdGF0aWNfY2FzdDxHTGVudW0+
KDB1KSk7CisgICAgICAgIGlmIChjb25kaXRpb24pIHsKKyAgICAgICAgICAgIG1fYmluZGluZ1Bv
aW50ID0gYmluZGluZ1BvaW50OworICAgICAgICAgICAgZ2w6OkdldEludGVnZXJ2KGJpbmRpbmdQ
b2ludFF1ZXJ5LCByZWludGVycHJldF9jYXN0PEdMaW50Kj4oJm1fYmluZGluZ1ZhbHVlKSk7Cisg
ICAgICAgIH0KKyAgICB9CisKKyAgICB+U2NvcGVkUmVzdG9yZVRleHR1cmVCaW5kaW5nKCkKKyAg
ICB7CisgICAgICAgIGlmIChtX2JpbmRpbmdQb2ludCkKKyAgICAgICAgICAgIGdsOjpCaW5kVGV4
dHVyZShtX2JpbmRpbmdQb2ludCwgbV9iaW5kaW5nVmFsdWUpOworICAgIH0KKworcHJpdmF0ZToK
KyAgICBHTGVudW0gbV9iaW5kaW5nUG9pbnQgeyAwIH07CisgICAgR0x1aW50IG1fYmluZGluZ1Zh
bHVlIHsgMHUgfTsKK307CisKKworY2xhc3MgU2NvcGVkQnVmZmVyQmluZGluZyB7CisgICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoU2NvcGVkQnVmZmVyQmluZGluZyk7CitwdWJsaWM6CisgICAgU2Nv
cGVkQnVmZmVyQmluZGluZyhHTGVudW0gYmluZGluZ1BvaW50LCBHTHVpbnQgYmluZGluZ1ZhbHVl
LCBib29sIGNvbmRpdGlvbiA9IHRydWUpCisgICAgeworICAgICAgICBpZiAoIWNvbmRpdGlvbikK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgZ2w6OkdldEludGVnZXJ2KHF1ZXJ5KGJpbmRp
bmdQb2ludCksIHJlaW50ZXJwcmV0X2Nhc3Q8R0xpbnQqPigmbV9iaW5kaW5nVmFsdWUpKTsKKyAg
ICAgICAgaWYgKGJpbmRpbmdWYWx1ZSA9PSBtX2JpbmRpbmdWYWx1ZSkKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgbV9iaW5kaW5nUG9pbnQgPSBiaW5kaW5nUG9pbnQ7CisgICAgICAgIGds
OjpCaW5kQnVmZmVyKG1fYmluZGluZ1BvaW50LCBiaW5kaW5nVmFsdWUpOworICAgIH0KKworICAg
IH5TY29wZWRCdWZmZXJCaW5kaW5nKCkKKyAgICB7CisgICAgICAgIGlmIChtX2JpbmRpbmdQb2lu
dCkKKyAgICAgICAgICAgIGdsOjpCaW5kQnVmZmVyKG1fYmluZGluZ1BvaW50LCBtX2JpbmRpbmdW
YWx1ZSk7CisgICAgfQorCitwcml2YXRlOgorICAgIHN0YXRpYyBjb25zdGV4cHIgR0xlbnVtIHF1
ZXJ5KEdMZW51bSBiaW5kaW5nUG9pbnQpCisgICAgeworICAgICAgICBpZiAoYmluZGluZ1BvaW50
ID09IEdMX1BJWEVMX1BBQ0tfQlVGRkVSKQorICAgICAgICAgICAgcmV0dXJuIEdMX1BJWEVMX1BB
Q0tfQlVGRkVSX0JJTkRJTkc7CisgICAgICAgIEFTU0VSVChiaW5kaW5nUG9pbnQgPT0gR0xfUElY
RUxfVU5QQUNLX0JVRkZFUik7CisgICAgICAgIHJldHVybiBHTF9QSVhFTF9VTlBBQ0tfQlVGRkVS
X0JJTkRJTkc7CisgICAgfQorICAgIEdMaW50IG1fYmluZGluZ1BvaW50IHsgMCB9OworICAgIEdM
dWludCBtX2JpbmRpbmdWYWx1ZSB7IDB1IH07Cit9OworY2xhc3MgU2NvcGVkUmVzdG9yZVJlYWRG
cmFtZWJ1ZmZlckJpbmRpbmcgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFNjb3BlZFJlc3Rv
cmVSZWFkRnJhbWVidWZmZXJCaW5kaW5nKTsKK3B1YmxpYzoKKyAgICBTY29wZWRSZXN0b3JlUmVh
ZEZyYW1lYnVmZmVyQmluZGluZyhib29sIGlzRm9yV2ViR0wyLCBHTHVpbnQgcmVzdG9yZVZhbHVl
KQorICAgICAgICA6IG1fZnJhbWVidWZmZXJUYXJnZXQoaXNGb3JXZWJHTDIgPyBHTF9SRUFEX0ZS
QU1FQlVGRkVSIDogR0xfRlJBTUVCVUZGRVIpCisgICAgICAgICwgbV9iaW5kaW5nVmFsdWUocmVz
dG9yZVZhbHVlKQorICAgIHsKKyAgICB9CisgICAgU2NvcGVkUmVzdG9yZVJlYWRGcmFtZWJ1ZmZl
ckJpbmRpbmcoYm9vbCBpc0ZvcldlYkdMMiwgR0x1aW50IHJlc3RvcmVWYWx1ZSwgR0x1aW50IHZh
bHVlKQorICAgICAgICA6IG1fZnJhbWVidWZmZXJUYXJnZXQoaXNGb3JXZWJHTDIgPyBHTF9SRUFE
X0ZSQU1FQlVGRkVSIDogR0xfRlJBTUVCVUZGRVIpCisgICAgICAgICwgbV9iaW5kaW5nVmFsdWUo
cmVzdG9yZVZhbHVlKQorICAgIHsKKyAgICAgICAgYmluZEZyYW1lYnVmZmVyKHZhbHVlKTsKKyAg
ICB9CisgICAgdm9pZCBtYXJrQmluZGluZ0NoYW5nZWQoKQorICAgIHsKKyAgICAgICAgbV9iaW5k
aW5nQ2hhbmdlZCA9IHRydWU7CisgICAgfQorICAgIHZvaWQgYmluZEZyYW1lYnVmZmVyKEdMdWlu
dCBiaW5kaW5nVmFsdWUpCisgICAgeworICAgICAgICBpZiAoIW1fYmluZGluZ0NoYW5nZWQgJiYg
bV9iaW5kaW5nVmFsdWUgPT0gYmluZGluZ1ZhbHVlKQorICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICBnbDo6QmluZEZyYW1lYnVmZmVyKG1fZnJhbWVidWZmZXJUYXJnZXQsIGJpbmRpbmdWYWx1
ZSk7CisgICAgICAgIG1fYmluZGluZ0NoYW5nZWQgPSBtX2JpbmRpbmdWYWx1ZSAhPSBiaW5kaW5n
VmFsdWU7CisgICAgfQorICAgIEdMdWludCBmcmFtZWJ1ZmZlclRhcmdldCgpIGNvbnN0IHsgcmV0
dXJuIG1fZnJhbWVidWZmZXJUYXJnZXQ7IH0KKyAgICB+U2NvcGVkUmVzdG9yZVJlYWRGcmFtZWJ1
ZmZlckJpbmRpbmcoKQorICAgIHsKKyAgICAgICAgaWYgKG1fYmluZGluZ0NoYW5nZWQpCisgICAg
ICAgICAgICBnbDo6QmluZEZyYW1lYnVmZmVyKG1fZnJhbWVidWZmZXJUYXJnZXQsIG1fYmluZGlu
Z1ZhbHVlKTsKKyAgICB9Citwcml2YXRlOgorICAgIGNvbnN0IEdMZW51bSBtX2ZyYW1lYnVmZmVy
VGFyZ2V0OworICAgIEdMdWludCBtX2JpbmRpbmdWYWx1ZSB7IDB1IH07CisgICAgYm9vbCBtX2Jp
bmRpbmdDaGFuZ2VkIHsgZmFsc2UgfTsKK307CisKK2NsYXNzIFNjb3BlZFBpeGVsU3RvcmFnZU1v
ZGUgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFNjb3BlZFBpeGVsU3RvcmFnZU1vZGUpOwor
cHVibGljOgorICAgIGV4cGxpY2l0IFNjb3BlZFBpeGVsU3RvcmFnZU1vZGUoR0xlbnVtIG5hbWUs
IGJvb2wgY29uZGl0aW9uID0gdHJ1ZSkKKyAgICAgICAgOiBtX25hbWUoY29uZGl0aW9uID8gbmFt
ZSA6IDApCisgICAgeworICAgICAgICBpZiAobV9uYW1lKQorICAgICAgICAgICAgZ2w6OkdldElu
dGVnZXJ2KG1fbmFtZSwgJm1fb3JpZ2luYWxWYWx1ZSk7CisgICAgfQorICAgIFNjb3BlZFBpeGVs
U3RvcmFnZU1vZGUoR0xlbnVtIG5hbWUsIEdMaW50IHZhbHVlLCBib29sIGNvbmRpdGlvbiA9IHRy
dWUpCisgICAgICAgIDogbV9uYW1lKGNvbmRpdGlvbiA/IG5hbWUgOiAwKQorICAgIHsKKyAgICAg
ICAgaWYgKG1fbmFtZSkgeworICAgICAgICAgICAgZ2w6OkdldEludGVnZXJ2KG1fbmFtZSwgJm1f
b3JpZ2luYWxWYWx1ZSk7CisgICAgICAgICAgICBwaXhlbFN0b3JlKHZhbHVlKTsKKyAgICAgICAg
fQorICAgIH0KKyAgICB+U2NvcGVkUGl4ZWxTdG9yYWdlTW9kZSgpCisgICAgeworICAgICAgICBp
ZiAobV9uYW1lICYmIG1fdmFsdWVDaGFuZ2VkKQorICAgICAgICAgICAgZ2w6OlBpeGVsU3RvcmVp
KG1fbmFtZSwgbV9vcmlnaW5hbFZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBwaXhlbFN0b3JlKEdM
aW50IHZhbHVlKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fbmFtZSk7CisgICAgICAgIGlmICgh
bV92YWx1ZUNoYW5nZWQgJiYgbV9vcmlnaW5hbFZhbHVlID09IHZhbHVlKQorICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICBnbDo6UGl4ZWxTdG9yZWkobV9uYW1lLCB2YWx1ZSk7CisgICAgICAg
IG1fdmFsdWVDaGFuZ2VkID0gbV9vcmlnaW5hbFZhbHVlICE9IHZhbHVlOworICAgIH0KKyAgICBv
cGVyYXRvciBHTGludCgpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQobV9uYW1lICYmICFt
X3ZhbHVlQ2hhbmdlZCk7CisgICAgICAgIHJldHVybiBtX29yaWdpbmFsVmFsdWU7CisgICAgfQor
cHJpdmF0ZToKKyAgICBjb25zdCBHTGVudW0gbV9uYW1lOworICAgIGJvb2wgbV92YWx1ZUNoYW5n
ZWQgeyBmYWxzZSB9OworICAgIEdMaW50IG1fb3JpZ2luYWxWYWx1ZSB7IDAgfTsKK307CisKK2Ns
YXNzIFNjb3BlZFRleHR1cmUgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFNjb3BlZFRleHR1
cmUpOworcHVibGljOgorICAgIFNjb3BlZFRleHR1cmUoKQorICAgIHsKKyAgICAgICAgZ2w6Okdl
blRleHR1cmVzKDEsICZtX29iamVjdCk7CisgICAgfQorICAgIH5TY29wZWRUZXh0dXJlKCkKKyAg
ICB7CisgICAgICAgIGdsOjpEZWxldGVUZXh0dXJlcygxLCAmbV9vYmplY3QpOworICAgIH0KKyAg
ICBvcGVyYXRvciBHTHVpbnQoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fb2JqZWN0
OworICAgIH0KK3ByaXZhdGU6CisgICAgR0x1aW50IG1fb2JqZWN0IHsgMHUgfTsKK307CisKK2Ns
YXNzIFNjb3BlZEZyYW1lYnVmZmVyIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTY29wZWRG
cmFtZWJ1ZmZlcik7CitwdWJsaWM6CisgICAgU2NvcGVkRnJhbWVidWZmZXIoKQorICAgIHsKKyAg
ICAgICAgZ2w6OkdlbkZyYW1lYnVmZmVycygxLCAmbV9vYmplY3QpOworICAgIH0KKyAgICB+U2Nv
cGVkRnJhbWVidWZmZXIoKQorICAgIHsKKyAgICAgICAgZ2w6OkRlbGV0ZUZyYW1lYnVmZmVycygx
LCAmbV9vYmplY3QpOworICAgIH0KKyAgICBvcGVyYXRvciBHTHVpbnQoKSBjb25zdAorICAgIHsK
KyAgICAgICAgcmV0dXJuIG1fb2JqZWN0OworICAgIH0KK3ByaXZhdGU6CisgICAgR0x1aW50IG1f
b2JqZWN0IHsgMCB9OworfTsKKworY2xhc3MgU2NvcGVkR0xGZW5jZSB7CisgICAgV1RGX01BS0Vf
Tk9OQ09QWUFCTEUoU2NvcGVkR0xGZW5jZSk7CitwdWJsaWM6CisgICAgU2NvcGVkR0xGZW5jZSgp
ID0gZGVmYXVsdDsKKyAgICBTY29wZWRHTEZlbmNlKFNjb3BlZEdMRmVuY2UmJiBvdGhlcikKKyAg
ICAgICAgOiBtX29iamVjdChzdGQ6OmV4Y2hhbmdlKG90aGVyLm1fb2JqZWN0LCB7IH0pKQorICAg
IHsKKyAgICB9CisgICAgflNjb3BlZEdMRmVuY2UoKSB7IHJlc2V0KCk7IH0KKyAgICBTY29wZWRH
TEZlbmNlJiBvcGVyYXRvcj0oU2NvcGVkR0xGZW5jZSYmIG90aGVyKQorICAgIHsKKyAgICAgICAg
aWYgKHRoaXMgIT0gJm90aGVyKSB7CisgICAgICAgICAgICByZXNldCgpOworICAgICAgICAgICAg
bV9vYmplY3QgPSBzdGQ6OmV4Y2hhbmdlKG90aGVyLm1fb2JqZWN0LCB7IH0pOworICAgICAgICB9
CisgICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9CisgICAgdm9pZCByZXNldCgpCisgICAgewor
ICAgICAgICBpZiAobV9vYmplY3QpIHsKKyAgICAgICAgICAgIGdsOjpEZWxldGVTeW5jKG1fb2Jq
ZWN0KTsKKyAgICAgICAgICAgIG1fb2JqZWN0ID0geyB9OworICAgICAgICB9CisgICAgfQorICAg
IHZvaWQgYWJhbmRvbigpIHsgbV9vYmplY3QgPSB7IH07IH0KKyAgICB2b2lkIGZlbmNlU3luYygp
CisgICAgeworICAgICAgICByZXNldCgpOworICAgICAgICBtX29iamVjdCA9IGdsOjpGZW5jZVN5
bmMoR0xfU1lOQ19HUFVfQ09NTUFORFNfQ09NUExFVEUsIDApOworICAgIH0KKyAgICBvcGVyYXRv
ciBHTHN5bmMoKSBjb25zdCB7IHJldHVybiBtX29iamVjdDsgfQorICAgIG9wZXJhdG9yIGJvb2wo
KSBjb25zdCB7IHJldHVybiBtX29iamVjdDsgfQorcHJpdmF0ZToKKyAgICBHTHN5bmMgbV9vYmpl
Y3QgeyB9OworfTsKKworYm9vbCBwbGF0Zm9ybUlzQU5HTEVBdmFpbGFibGUoKTsKKworfQorCisj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xl
L0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAKaW5kZXggYzJjZmE1ZGMyZjc3
NWFlNDg0YTk0Zjg5ZjZlNGRmNzFjOWJmMTg5Ny4uZDdhNjAzMzRiMTk0ZDM5ODZkM2E4ZjRjZDM1
ZjgwODg1OGI4NGE1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAKQEAgLTMw
LDggKzMwLDggQEAKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRHTC5oIgogCiAjaW5jbHVkZSAi
QU5HTEVIZWFkZXJzLmgiCisjaW5jbHVkZSAiQU5HTEVVdGlsaXRpZXMuaCIKICNpbmNsdWRlICJF
eHRlbnNpb25zR0xBTkdMRS5oIgotI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMQU5HTEVVdGls
aXRpZXMuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oIgogI2luY2x1ZGUg
IkltYWdlQnVmZmVyLmgiCiAjaW5jbHVkZSAiSW50UmVjdC5oIgpAQCAtNzUsNiArNzUsNDkgQEAg
c3RhdGljIHZvaWQgd2lwZUFscGhhQ2hhbm5lbEZyb21QaXhlbHMoaW50IHdpZHRoLCBpbnQgaGVp
Z2h0LCB1bnNpZ25lZCBjaGFyKiBwaXgKIH0KICNlbmRpZgogCitib29sIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpyZWxlYXNlVGhyZWFkUmVzb3VyY2VzKFJlbGVhc2VUaHJlYWRSZXNvdXJjZUJl
aGF2aW9yIHJlbGVhc2VCZWhhdmlvcikKK3sKKyAgICBwbGF0Zm9ybVJlbGVhc2VUaHJlYWRSZXNv
dXJjZXMoKTsKKworICAgIGlmICghcGxhdGZvcm1Jc0FOR0xFQXZhaWxhYmxlKCkpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIC8vIFVuc2V0IHRoZSBFR0wgY3VycmVudCBjb250ZXh0LCBz
aW5jZSB0aGUgbmV4dCBhY2Nlc3MgbWlnaHQgYmUgZnJvbSBhbm90aGVyIHRocmVhZCwgYW5kIHRo
ZQorICAgIC8vIGNvbnRleHQgY2Fubm90IGJlIGN1cnJlbnQgb24gbXVsdGlwbGUgdGhyZWFkcy4K
KyAgICBpZiAocmVsZWFzZUJlaGF2aW9yID09IFJlbGVhc2VUaHJlYWRSZXNvdXJjZUJlaGF2aW9y
OjpSZWxlYXNlQ3VycmVudENvbnRleHQpIHsKKyAgICAgICAgaWYgKEVHTF9HZXRDdXJyZW50Q29u
dGV4dCgpID09IEVHTF9OT19DT05URVhUKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
ICAgIC8vIEF0IHRoZSB0aW1lIG9mIHdyaXRpbmcsIEFOR0xFIGRvZXMgbm90IGZsdXNoIG9uIE1h
a2VDdXJyZW50LiBTaW5jZSB3ZSBhcmUKKyAgICAgICAgLy8gcG90ZW50aWFsbHkgc3dpdGNoaW5n
IHRocmVhZHMsIHdlIHNob3VsZCBmbHVzaC4KKyAgICAgICAgLy8gTm90ZTogSGVyZSB3ZSBhc3N1
bWUgYWxzbyB0aGF0IEFOR0xFIGhhcyBvbmx5IG9uZSBwbGF0Zm9ybSBjb250ZXh0IC0tIG90aGVy
d2lzZQorICAgICAgICAvLyB3ZSB3b3VsZCBuZWVkIHRvIGZsdXNoIGVhY2ggRUdMIGNvbnRleHQg
dGhhdCBoYXMgYmVlbiB1c2VkLgorICAgICAgICBnbDo6Rmx1c2goKTsKKyAgICAgICAgRUdMRGlz
cGxheSBkaXNwbGF5ID0gRUdMX0dldERpc3BsYXkoRUdMX0RFRkFVTFRfRElTUExBWSk7CisgICAg
ICAgIGlmIChkaXNwbGF5ID09IEVHTF9OT19ESVNQTEFZKQorICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgICAgIHJldHVybiBFR0xfTWFrZUN1cnJlbnQoZGlzcGxheSwgRUdMX05PX1NVUkZB
Q0UsIEVHTF9OT19TVVJGQUNFLCBFR0xfTk9fQ09OVEVYVCk7CisgICAgfQorICAgIGlmIChyZWxl
YXNlQmVoYXZpb3IgPT0gUmVsZWFzZVRocmVhZFJlc291cmNlQmVoYXZpb3I6OlRlcm1pbmF0ZUFu
ZFJlbGVhc2VUaHJlYWRSZXNvdXJjZXMpIHsKKyAgICAgICAgRUdMRGlzcGxheSBkaXNwbGF5ID0g
RUdMX0dldERpc3BsYXkoRUdMX0RFRkFVTFRfRElTUExBWSk7CisgICAgICAgIGlmIChkaXNwbGF5
ICE9IEVHTF9OT19ESVNQTEFZKSB7CisgICAgICAgICAgICBpZiAoRUdMX0dldEN1cnJlbnRDb250
ZXh0KCkgIT0gRUdMX05PX0NPTlRFWFQpIHsKKyAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsgLy8gQWxsIHJlc291cmNlcyBtdXN0IGhhdmUgYmVlbiBkZXN0cm95ZWQuCisgICAg
ICAgICAgICAgICAgRUdMX01ha2VDdXJyZW50KGRpc3BsYXksIEVHTF9OT19TVVJGQUNFLCBFR0xf
Tk9fU1VSRkFDRSwgRUdMX05PX0NPTlRFWFQpOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
RUdMX1Rlcm1pbmF0ZShkaXNwbGF5KTsKKyAgICAgICAgfQorICAgIH0KKyAgICAvLyBDYWxsZWQg
d2hlbiB3ZSBkbyBub3Qga25vdyBpZiB3ZSB3aWxsIGV2ZXIgc2VlIGFub3RoZXIgY2FsbCBmcm9t
IHRoaXMgdGhyZWFkIGFnYWluLgorICAgIC8vIFVuc2V0IHRoZSBFR0wgY3VycmVudCBjb250ZXh0
IGJ5IHJlbGVhc2luZyB3aG9sZSBFR0wgdGhyZWFkIHN0YXRlLgorICAgIHJldHVybiBFR0xfUmVs
ZWFzZVRocmVhZCgpOworfQorCisjaWYgIVBMQVRGT1JNKENPQ09BKQordm9pZCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6cGxhdGZvcm1SZWxlYXNlVGhyZWFkUmVzb3VyY2VzKCkKK3sKK30KKyNl
bmRpZgorCiBzdGQ6Om9wdGlvbmFsPFBpeGVsQnVmZmVyPiBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6cmVhZFBpeGVsc0ZvclBhaW50UmVzdWx0cygpCiB7CiAgICAgUGl4ZWxCdWZmZXJGb3JtYXQg
Zm9ybWF0IHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkLCBQaXhlbEZv
cm1hdDo6UkdCQTgsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRH
TEFOR0xFRUdMVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEVFR0xVdGlsaXRpZXMuY3BwCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBiNWJmODM3ZDI1ZTQzZDA2NThkNmI2ODUxZGQ0OGEyMTk4Njk2
ZjdiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEVF
R0xVdGlsaXRpZXMuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsOTEgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
Ci0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIK
LSNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRHTEFOR0xFRUdMVXRpbGl0aWVzLmgiCi0KLSNpbmNs
dWRlICJBTkdMRUhlYWRlcnMuaCIKLSNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgotCi0jaWYg
RU5BQkxFKFdFQkdMKSAmJiBVU0UoQU5HTEUpCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3Rh
dGljIHVuc2lnbmVkIGRlZmF1bHREaXNwbGF5UmVmQ291bnQ7Ci1zdGF0aWMgdm9pZCogZGVmYXVs
dERpc3BsYXkgPSBudWxscHRyOwotCi1zdGF0aWMgdm9pZCByZWZEZWZhdWx0RGlzcGxheSh2b2lk
KiBkaXNwbGF5KQotewotICAgIEFTU0VSVChkaXNwbGF5ICE9IG51bGxwdHIpOwotICAgIEFTU0VS
VChkZWZhdWx0RGlzcGxheSA9PSBkaXNwbGF5IHx8ICghZGVmYXVsdERpc3BsYXkgJiYgIWRlZmF1
bHREaXNwbGF5UmVmQ291bnQpKTsKLSAgICBkZWZhdWx0RGlzcGxheVJlZkNvdW50Kys7Ci0gICAg
ZGVmYXVsdERpc3BsYXkgPSBkaXNwbGF5OwotfQotCi1zdGF0aWMgdm9pZCB1bnJlZkRlZmF1bHRE
aXNwbGF5SWZOZWVkZWQodm9pZCogZGlzcGxheSkKLXsKLSAgICBpZiAoIWRpc3BsYXkpCi0gICAg
ICAgIHJldHVybjsKLSAgICBBU1NFUlQoZGVmYXVsdERpc3BsYXkgPT0gZGlzcGxheSk7Ci0gICAg
QVNTRVJUKGRlZmF1bHREaXNwbGF5UmVmQ291bnQpOwotICAgIGRlZmF1bHREaXNwbGF5UmVmQ291
bnQtLTsKLX0KLQotU2NvcGVkRUdMRGVmYXVsdERpc3BsYXkmIFNjb3BlZEVHTERlZmF1bHREaXNw
bGF5OjpvcGVyYXRvcj0oU2NvcGVkRUdMRGVmYXVsdERpc3BsYXkmJiBvdGhlcikKLXsKLSAgICBp
ZiAodGhpcyAhPSAmb3RoZXIpIHsKLSAgICAgICAgdW5yZWZEZWZhdWx0RGlzcGxheUlmTmVlZGVk
KG1fZGlzcGxheSk7Ci0gICAgICAgIG1fZGlzcGxheSA9IHN0ZDo6ZXhjaGFuZ2Uob3RoZXIubV9k
aXNwbGF5LCBudWxscHRyKTsKLSAgICB9Ci0gICAgcmV0dXJuICp0aGlzOwotfQotCi1TY29wZWRF
R0xEZWZhdWx0RGlzcGxheTo6U2NvcGVkRUdMRGVmYXVsdERpc3BsYXkodm9pZCogZGlzcGxheSkK
LSAgICA6IG1fZGlzcGxheShkaXNwbGF5KQotewotICAgIHJlZkRlZmF1bHREaXNwbGF5KG1fZGlz
cGxheSk7Ci19Ci0KLVNjb3BlZEVHTERlZmF1bHREaXNwbGF5Ojp+U2NvcGVkRUdMRGVmYXVsdERp
c3BsYXkoKQotewotICAgIHVucmVmRGVmYXVsdERpc3BsYXlJZk5lZWRlZChtX2Rpc3BsYXkpOwot
fQotCi12b2lkIFNjb3BlZEVHTERlZmF1bHREaXNwbGF5OjpyZWxlYXNlQWxsUmVzb3VyY2VzSWZV
bnVzZWQoKQotewotICAgIGlmIChkZWZhdWx0RGlzcGxheVJlZkNvdW50KQotICAgICAgICByZXR1
cm47Ci0gICAgaWYgKGRlZmF1bHREaXNwbGF5ID09IG51bGxwdHIpCi0gICAgICAgIHJldHVybjsK
LSAgICBib29sIHJlc3VsdCA9IEVHTF9UZXJtaW5hdGUoZGVmYXVsdERpc3BsYXkpOwotICAgIEFT
U0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOwotICAgIHJlc3VsdCA9IEVHTF9SZWxlYXNlVGhy
ZWFkKCk7Ci0gICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7Ci0gICAgZGVmYXVsdERp
c3BsYXkgPSBudWxscHRyOwotfQotCi19Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRUVHTFV0
aWxpdGllcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhp
Y3NDb250ZXh0R0xBTkdMRUVHTFV0aWxpdGllcy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCA5NDQyMDUyMGJkZThiYTJlZTg1ZDY4ODJmNjU4ZDQ1ODJkYmNlZWEwLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEVFR0xVdGlsaXRpZXMuaAor
KysgL2Rldi9udWxsCkBAIC0xLDYyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJHTCkgJiYg
VVNFKEFOR0xFKQotCi0jaW5jbHVkZSA8YWxnb3JpdGhtPgotI2luY2x1ZGUgPHd0Zi9Ob25jb3B5
YWJsZS5oPgotCi0vLyBDdXJyZW50bHkgdGhpcyBub3QgdXNpbmcgQU5HTEUgaGVhZGVycyBzaW5j
ZSB0aGlzIGlzIGV4cG9ydGVkIGhlYWRlciBhbmQgd2UgZG8gbm90IGV4cG9ydCBBTkdMRSBoZWFk
ZXJzLgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIFNjb3BlZEVHTERlZmF1bHREaXNw
bGF5IHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTY29wZWRFR0xEZWZhdWx0RGlzcGxheSk7
Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFNjb3BlZEVHTERlZmF1bHREaXNwbGF5IGFkb3B0SW5pdGlh
bGl6ZWREaXNwbGF5KHZvaWQqIGRpc3BsYXkpCi0gICAgewotICAgICAgICBBU1NFUlQoZGlzcGxh
eSAhPSBudWxscHRyKTsKLSAgICAgICAgcmV0dXJuIFNjb3BlZEVHTERlZmF1bHREaXNwbGF5KGRp
c3BsYXkpOwotICAgIH0KLSAgICBTY29wZWRFR0xEZWZhdWx0RGlzcGxheSgpID0gZGVmYXVsdDsK
LSAgICBTY29wZWRFR0xEZWZhdWx0RGlzcGxheShTY29wZWRFR0xEZWZhdWx0RGlzcGxheSYmIG90
aGVyKQotICAgICAgICA6IG1fZGlzcGxheShzdGQ6OmV4Y2hhbmdlKG90aGVyLm1fZGlzcGxheSwg
bnVsbHB0cikpCi0gICAgewotICAgIH0KLSAgICB+U2NvcGVkRUdMRGVmYXVsdERpc3BsYXkoKTsK
LSAgICBTY29wZWRFR0xEZWZhdWx0RGlzcGxheSYgb3BlcmF0b3I9KFNjb3BlZEVHTERlZmF1bHRE
aXNwbGF5JiYpOwotICAgIG9wZXJhdG9yIHZvaWQqKCkgY29uc3QgeyByZXR1cm4gbV9kaXNwbGF5
OyB9Ci0gICAgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuIG1fZGlzcGxheSAhPSBudWxs
cHRyOyB9Ci0gICAgc3RhdGljIHZvaWQgcmVsZWFzZUFsbFJlc291cmNlc0lmVW51c2VkKCk7Ci1w
cml2YXRlOgotICAgIFNjb3BlZEVHTERlZmF1bHREaXNwbGF5KHZvaWQqKTsKLSAgICB2b2lkKiBt
X2Rpc3BsYXkgeyBudWxscHRyIH07Ci19OwotCi19Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdM
RVV0aWxpdGllcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3Jh
cGhpY3NDb250ZXh0R0xBTkdMRVV0aWxpdGllcy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBkYzc5ZjFlMjQyM2Y1MjEzYjAzMDFjOGM4MGE1NGY2YmNjNDQ5ZTkyLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEVVdGlsaXRpZXMuaAorKysg
L2Rldi9udWxsCkBAIC0xLDI0NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR0wpICYmIFVT
RShBTkdMRSkKLQotI2luY2x1ZGUgIkFOR0xFSGVhZGVycy5oIgotI2luY2x1ZGUgIkdyYXBoaWNz
VHlwZXNHTC5oIgotI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgotCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci0KLWNsYXNzIFNjb3BlZFJlc3RvcmVUZXh0dXJlQmluZGluZyB7Ci0gICAgV1RGX01B
S0VfTk9OQ09QWUFCTEUoU2NvcGVkUmVzdG9yZVRleHR1cmVCaW5kaW5nKTsKLXB1YmxpYzoKLSAg
ICBTY29wZWRSZXN0b3JlVGV4dHVyZUJpbmRpbmcoR0xlbnVtIGJpbmRpbmdQb2ludFF1ZXJ5LCBH
TGVudW0gYmluZGluZ1BvaW50LCBib29sIGNvbmRpdGlvbiA9IHRydWUpCi0gICAgewotICAgICAg
ICBBU1NFUlQoYmluZGluZ1BvaW50ICE9IHN0YXRpY19jYXN0PEdMZW51bT4oMHUpKTsKLSAgICAg
ICAgaWYgKGNvbmRpdGlvbikgewotICAgICAgICAgICAgbV9iaW5kaW5nUG9pbnQgPSBiaW5kaW5n
UG9pbnQ7Ci0gICAgICAgICAgICBnbDo6R2V0SW50ZWdlcnYoYmluZGluZ1BvaW50UXVlcnksIHJl
aW50ZXJwcmV0X2Nhc3Q8R0xpbnQqPigmbV9iaW5kaW5nVmFsdWUpKTsKLSAgICAgICAgfQotICAg
IH0KLQotICAgIH5TY29wZWRSZXN0b3JlVGV4dHVyZUJpbmRpbmcoKQotICAgIHsKLSAgICAgICAg
aWYgKG1fYmluZGluZ1BvaW50KQotICAgICAgICAgICAgZ2w6OkJpbmRUZXh0dXJlKG1fYmluZGlu
Z1BvaW50LCBtX2JpbmRpbmdWYWx1ZSk7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIEdMZW51bSBt
X2JpbmRpbmdQb2ludCB7IDAgfTsKLSAgICBHTHVpbnQgbV9iaW5kaW5nVmFsdWUgeyAwdSB9Owot
fTsKLQotCi1jbGFzcyBTY29wZWRCdWZmZXJCaW5kaW5nIHsKLSAgICBXVEZfTUFLRV9OT05DT1BZ
QUJMRShTY29wZWRCdWZmZXJCaW5kaW5nKTsKLXB1YmxpYzoKLSAgICBTY29wZWRCdWZmZXJCaW5k
aW5nKEdMZW51bSBiaW5kaW5nUG9pbnQsIEdMdWludCBiaW5kaW5nVmFsdWUsIGJvb2wgY29uZGl0
aW9uID0gdHJ1ZSkKLSAgICB7Ci0gICAgICAgIGlmICghY29uZGl0aW9uKQotICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICBnbDo6R2V0SW50ZWdlcnYocXVlcnkoYmluZGluZ1BvaW50KSwgcmVp
bnRlcnByZXRfY2FzdDxHTGludCo+KCZtX2JpbmRpbmdWYWx1ZSkpOwotICAgICAgICBpZiAoYmlu
ZGluZ1ZhbHVlID09IG1fYmluZGluZ1ZhbHVlKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICBtX2JpbmRpbmdQb2ludCA9IGJpbmRpbmdQb2ludDsKLSAgICAgICAgZ2w6OkJpbmRCdWZmZXIo
bV9iaW5kaW5nUG9pbnQsIGJpbmRpbmdWYWx1ZSk7Ci0gICAgfQotCi0gICAgflNjb3BlZEJ1ZmZl
ckJpbmRpbmcoKQotICAgIHsKLSAgICAgICAgaWYgKG1fYmluZGluZ1BvaW50KQotICAgICAgICAg
ICAgZ2w6OkJpbmRCdWZmZXIobV9iaW5kaW5nUG9pbnQsIG1fYmluZGluZ1ZhbHVlKTsKLSAgICB9
Ci0KLXByaXZhdGU6Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHTGVudW0gcXVlcnkoR0xlbnVtIGJp
bmRpbmdQb2ludCkKLSAgICB7Ci0gICAgICAgIGlmIChiaW5kaW5nUG9pbnQgPT0gR0xfUElYRUxf
UEFDS19CVUZGRVIpCi0gICAgICAgICAgICByZXR1cm4gR0xfUElYRUxfUEFDS19CVUZGRVJfQklO
RElORzsKLSAgICAgICAgQVNTRVJUKGJpbmRpbmdQb2ludCA9PSBHTF9QSVhFTF9VTlBBQ0tfQlVG
RkVSKTsKLSAgICAgICAgcmV0dXJuIEdMX1BJWEVMX1VOUEFDS19CVUZGRVJfQklORElORzsKLSAg
ICB9Ci0gICAgR0xpbnQgbV9iaW5kaW5nUG9pbnQgeyAwIH07Ci0gICAgR0x1aW50IG1fYmluZGlu
Z1ZhbHVlIHsgMHUgfTsKLX07Ci1jbGFzcyBTY29wZWRSZXN0b3JlUmVhZEZyYW1lYnVmZmVyQmlu
ZGluZyB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU2NvcGVkUmVzdG9yZVJlYWRGcmFtZWJ1
ZmZlckJpbmRpbmcpOwotcHVibGljOgotICAgIFNjb3BlZFJlc3RvcmVSZWFkRnJhbWVidWZmZXJC
aW5kaW5nKGJvb2wgaXNGb3JXZWJHTDIsIEdMdWludCByZXN0b3JlVmFsdWUpCi0gICAgICAgIDog
bV9mcmFtZWJ1ZmZlclRhcmdldChpc0ZvcldlYkdMMiA/IEdMX1JFQURfRlJBTUVCVUZGRVIgOiBH
TF9GUkFNRUJVRkZFUikKLSAgICAgICAgLCBtX2JpbmRpbmdWYWx1ZShyZXN0b3JlVmFsdWUpCi0g
ICAgewotICAgIH0KLSAgICBTY29wZWRSZXN0b3JlUmVhZEZyYW1lYnVmZmVyQmluZGluZyhib29s
IGlzRm9yV2ViR0wyLCBHTHVpbnQgcmVzdG9yZVZhbHVlLCBHTHVpbnQgdmFsdWUpCi0gICAgICAg
IDogbV9mcmFtZWJ1ZmZlclRhcmdldChpc0ZvcldlYkdMMiA/IEdMX1JFQURfRlJBTUVCVUZGRVIg
OiBHTF9GUkFNRUJVRkZFUikKLSAgICAgICAgLCBtX2JpbmRpbmdWYWx1ZShyZXN0b3JlVmFsdWUp
Ci0gICAgewotICAgICAgICBiaW5kRnJhbWVidWZmZXIodmFsdWUpOwotICAgIH0KLSAgICB2b2lk
IG1hcmtCaW5kaW5nQ2hhbmdlZCgpCi0gICAgewotICAgICAgICBtX2JpbmRpbmdDaGFuZ2VkID0g
dHJ1ZTsKLSAgICB9Ci0gICAgdm9pZCBiaW5kRnJhbWVidWZmZXIoR0x1aW50IGJpbmRpbmdWYWx1
ZSkKLSAgICB7Ci0gICAgICAgIGlmICghbV9iaW5kaW5nQ2hhbmdlZCAmJiBtX2JpbmRpbmdWYWx1
ZSA9PSBiaW5kaW5nVmFsdWUpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGdsOjpCaW5k
RnJhbWVidWZmZXIobV9mcmFtZWJ1ZmZlclRhcmdldCwgYmluZGluZ1ZhbHVlKTsKLSAgICAgICAg
bV9iaW5kaW5nQ2hhbmdlZCA9IG1fYmluZGluZ1ZhbHVlICE9IGJpbmRpbmdWYWx1ZTsKLSAgICB9
Ci0gICAgR0x1aW50IGZyYW1lYnVmZmVyVGFyZ2V0KCkgY29uc3QgeyByZXR1cm4gbV9mcmFtZWJ1
ZmZlclRhcmdldDsgfQotICAgIH5TY29wZWRSZXN0b3JlUmVhZEZyYW1lYnVmZmVyQmluZGluZygp
Ci0gICAgewotICAgICAgICBpZiAobV9iaW5kaW5nQ2hhbmdlZCkKLSAgICAgICAgICAgIGdsOjpC
aW5kRnJhbWVidWZmZXIobV9mcmFtZWJ1ZmZlclRhcmdldCwgbV9iaW5kaW5nVmFsdWUpOwotICAg
IH0KLXByaXZhdGU6Ci0gICAgY29uc3QgR0xlbnVtIG1fZnJhbWVidWZmZXJUYXJnZXQ7Ci0gICAg
R0x1aW50IG1fYmluZGluZ1ZhbHVlIHsgMHUgfTsKLSAgICBib29sIG1fYmluZGluZ0NoYW5nZWQg
eyBmYWxzZSB9OwotfTsKLQotY2xhc3MgU2NvcGVkUGl4ZWxTdG9yYWdlTW9kZSB7Ci0gICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoU2NvcGVkUGl4ZWxTdG9yYWdlTW9kZSk7Ci1wdWJsaWM6Ci0gICAg
ZXhwbGljaXQgU2NvcGVkUGl4ZWxTdG9yYWdlTW9kZShHTGVudW0gbmFtZSwgYm9vbCBjb25kaXRp
b24gPSB0cnVlKQotICAgICAgICA6IG1fbmFtZShjb25kaXRpb24gPyBuYW1lIDogMCkKLSAgICB7
Ci0gICAgICAgIGlmIChtX25hbWUpCi0gICAgICAgICAgICBnbDo6R2V0SW50ZWdlcnYobV9uYW1l
LCAmbV9vcmlnaW5hbFZhbHVlKTsKLSAgICB9Ci0gICAgU2NvcGVkUGl4ZWxTdG9yYWdlTW9kZShH
TGVudW0gbmFtZSwgR0xpbnQgdmFsdWUsIGJvb2wgY29uZGl0aW9uID0gdHJ1ZSkKLSAgICAgICAg
OiBtX25hbWUoY29uZGl0aW9uID8gbmFtZSA6IDApCi0gICAgewotICAgICAgICBpZiAobV9uYW1l
KSB7Ci0gICAgICAgICAgICBnbDo6R2V0SW50ZWdlcnYobV9uYW1lLCAmbV9vcmlnaW5hbFZhbHVl
KTsKLSAgICAgICAgICAgIHBpeGVsU3RvcmUodmFsdWUpOwotICAgICAgICB9Ci0gICAgfQotICAg
IH5TY29wZWRQaXhlbFN0b3JhZ2VNb2RlKCkKLSAgICB7Ci0gICAgICAgIGlmIChtX25hbWUgJiYg
bV92YWx1ZUNoYW5nZWQpCi0gICAgICAgICAgICBnbDo6UGl4ZWxTdG9yZWkobV9uYW1lLCBtX29y
aWdpbmFsVmFsdWUpOwotICAgIH0KLSAgICB2b2lkIHBpeGVsU3RvcmUoR0xpbnQgdmFsdWUpCi0g
ICAgewotICAgICAgICBBU1NFUlQobV9uYW1lKTsKLSAgICAgICAgaWYgKCFtX3ZhbHVlQ2hhbmdl
ZCAmJiBtX29yaWdpbmFsVmFsdWUgPT0gdmFsdWUpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgIGdsOjpQaXhlbFN0b3JlaShtX25hbWUsIHZhbHVlKTsKLSAgICAgICAgbV92YWx1ZUNoYW5n
ZWQgPSBtX29yaWdpbmFsVmFsdWUgIT0gdmFsdWU7Ci0gICAgfQotICAgIG9wZXJhdG9yIEdMaW50
KCkgY29uc3QKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX25hbWUgJiYgIW1fdmFsdWVDaGFuZ2Vk
KTsKLSAgICAgICAgcmV0dXJuIG1fb3JpZ2luYWxWYWx1ZTsKLSAgICB9Ci1wcml2YXRlOgotICAg
IGNvbnN0IEdMZW51bSBtX25hbWU7Ci0gICAgYm9vbCBtX3ZhbHVlQ2hhbmdlZCB7IGZhbHNlIH07
Ci0gICAgR0xpbnQgbV9vcmlnaW5hbFZhbHVlIHsgMCB9OwotfTsKLQotY2xhc3MgU2NvcGVkVGV4
dHVyZSB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU2NvcGVkVGV4dHVyZSk7Ci1wdWJsaWM6
Ci0gICAgU2NvcGVkVGV4dHVyZSgpCi0gICAgewotICAgICAgICBnbDo6R2VuVGV4dHVyZXMoMSwg
Jm1fb2JqZWN0KTsKLSAgICB9Ci0gICAgflNjb3BlZFRleHR1cmUoKQotICAgIHsKLSAgICAgICAg
Z2w6OkRlbGV0ZVRleHR1cmVzKDEsICZtX29iamVjdCk7Ci0gICAgfQotICAgIG9wZXJhdG9yIEdM
dWludCgpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9vYmplY3Q7Ci0gICAgfQotcHJp
dmF0ZToKLSAgICBHTHVpbnQgbV9vYmplY3QgeyAwdSB9OwotfTsKLQotY2xhc3MgU2NvcGVkRnJh
bWVidWZmZXIgewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFNjb3BlZEZyYW1lYnVmZmVyKTsK
LXB1YmxpYzoKLSAgICBTY29wZWRGcmFtZWJ1ZmZlcigpCi0gICAgewotICAgICAgICBnbDo6R2Vu
RnJhbWVidWZmZXJzKDEsICZtX29iamVjdCk7Ci0gICAgfQotICAgIH5TY29wZWRGcmFtZWJ1ZmZl
cigpCi0gICAgewotICAgICAgICBnbDo6RGVsZXRlRnJhbWVidWZmZXJzKDEsICZtX29iamVjdCk7
Ci0gICAgfQotICAgIG9wZXJhdG9yIEdMdWludCgpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1
cm4gbV9vYmplY3Q7Ci0gICAgfQotcHJpdmF0ZToKLSAgICBHTHVpbnQgbV9vYmplY3QgeyAwIH07
Ci19OwotCi1jbGFzcyBTY29wZWRHTEZlbmNlIHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShT
Y29wZWRHTEZlbmNlKTsKLXB1YmxpYzoKLSAgICBTY29wZWRHTEZlbmNlKCkgPSBkZWZhdWx0Owot
ICAgIFNjb3BlZEdMRmVuY2UoU2NvcGVkR0xGZW5jZSYmIG90aGVyKQotICAgICAgICA6IG1fb2Jq
ZWN0KHN0ZDo6ZXhjaGFuZ2Uob3RoZXIubV9vYmplY3QsIHsgfSkpCi0gICAgewotICAgIH0KLSAg
ICB+U2NvcGVkR0xGZW5jZSgpIHsgcmVzZXQoKTsgfQotICAgIFNjb3BlZEdMRmVuY2UmIG9wZXJh
dG9yPShTY29wZWRHTEZlbmNlJiYgb3RoZXIpCi0gICAgewotICAgICAgICBpZiAodGhpcyAhPSAm
b3RoZXIpIHsKLSAgICAgICAgICAgIHJlc2V0KCk7Ci0gICAgICAgICAgICBtX29iamVjdCA9IHN0
ZDo6ZXhjaGFuZ2Uob3RoZXIubV9vYmplY3QsIHsgfSk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0
dXJuICp0aGlzOwotICAgIH0KLSAgICB2b2lkIHJlc2V0KCkKLSAgICB7Ci0gICAgICAgIGlmICht
X29iamVjdCkgewotICAgICAgICAgICAgZ2w6OkRlbGV0ZVN5bmMobV9vYmplY3QpOwotICAgICAg
ICAgICAgbV9vYmplY3QgPSB7IH07Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgdm9pZCBhYmFuZG9u
KCkgeyBtX29iamVjdCA9IHsgfTsgfQotICAgIHZvaWQgZmVuY2VTeW5jKCkKLSAgICB7Ci0gICAg
ICAgIHJlc2V0KCk7Ci0gICAgICAgIG1fb2JqZWN0ID0gZ2w6OkZlbmNlU3luYyhHTF9TWU5DX0dQ
VV9DT01NQU5EU19DT01QTEVURSwgMCk7Ci0gICAgfQotICAgIG9wZXJhdG9yIEdMc3luYygpIGNv
bnN0IHsgcmV0dXJuIG1fb2JqZWN0OyB9Ci0gICAgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0
dXJuIG1fb2JqZWN0OyB9Ci1wcml2YXRlOgotICAgIEdMc3luYyBtX29iamVjdCB7IH07Ci19Owot
Ci19Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW0K
aW5kZXggZjI1YjA5ODdkNDQ5NDM3MzgyZDA4NTdiYTQwNDVhMjJiNGJlODJiOC4uMGI1NjY0YWJj
YWMwNjlkMjY0MDdhYTI0M2M2OWI2YmYwNjBhYTE5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0Nv
bnRleHRHTE9wZW5HTENvY29hLm1tCkBAIC0yOCw5ICsyOCw5IEBACiAjaWYgRU5BQkxFKFdFQkdM
KQogI2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaCIKIAorI2ltcG9ydCAiQU5HTEVV
dGlsaXRpZXMuaCIKICNpbXBvcnQgIkNWVXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJFeHRlbnNpb25z
R0xBTkdMRS5oIgotI2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0R0xBTkdMRVV0aWxpdGllcy5oIgog
I2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaCIKICNpbXBvcnQg
IkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlci5oIgogI2ltcG9ydCAiTG9nZ2luZy5oIgpA
QCAtNTksOCArNTksMTAgQEAgV1RGX1dFQUtfTElOS19GT1JDRV9JTVBPUlQoRUdMX0luaXRpYWxp
emUpOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBib29sIGlzQU5HTEVBdmFpbGFi
bGUoKQorYm9vbCBwbGF0Zm9ybUlzQU5HTEVBdmFpbGFibGUoKQogeworICAgIC8vIFRoZSBBTkdM
RSBpcyB3ZWFrIGxpbmtlZCBpbiBmdWxsLCBhbmQgdGhlIEVHTF9Jbml0aWFsaXplIGlzIGV4cGxp
Y2l0bHkgd2VhayBsaW5rZWQgYWJvdmUKKyAgICAvLyBzbyB0aGF0IHdlIGNhbiBkZXRlY3QgdGhl
IGNhc2Ugd2hlcmUgQU5HTEUgaXMgbm90IHByZXNlbnQuCiAgICAgcmV0dXJuICEhRUdMX0luaXRp
YWxpemU7CiB9CiAKQEAgLTExOCwxMSArMTIwLDExIEBAIHN0YXRpYyBib29sIHBsYXRmb3JtU3Vw
cG9ydHNNZXRhbChib29sIGlzV2ViR0wyKQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotc3RhdGlj
IFNjb3BlZEVHTERlZmF1bHREaXNwbGF5IGluaXRpYWxpemVFR0xEaXNwbGF5KGNvbnN0IEdyYXBo
aWNzQ29udGV4dEdMQXR0cmlidXRlcyYgYXR0cnMpCitzdGF0aWMgRUdMRGlzcGxheSBpbml0aWFs
aXplRUdMRGlzcGxheShjb25zdCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJzKQog
ewotICAgIGlmICghaXNBTkdMRUF2YWlsYWJsZSgpKSB7CisgICAgaWYgKCFwbGF0Zm9ybUlzQU5H
TEVBdmFpbGFibGUoKSkgewogICAgICAgICBXVEZMb2dBbHdheXMoIkZhaWxlZCB0byBsb2FkIEFO
R0xFIHNoYXJlZCBsaWJyYXJ5LiIpOwotICAgICAgICByZXR1cm4geyB9OworICAgICAgICByZXR1
cm4gRUdMX05PX0RJU1BMQVk7CiAgICAgfQogCiAgICAgRUdMaW50IG1ham9yVmVyc2lvbiA9IDA7
CkBAIC0xNjUsNyArMTY3LDcgQEAgc3RhdGljIFNjb3BlZEVHTERlZmF1bHREaXNwbGF5IGluaXRp
YWxpemVFR0xEaXNwbGF5KGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMQXR0cmkKIAogICAgIGlmIChF
R0xfSW5pdGlhbGl6ZShkaXNwbGF5LCAmbWFqb3JWZXJzaW9uLCAmbWlub3JWZXJzaW9uKSA9PSBF
R0xfRkFMU0UpIHsKICAgICAgICAgTE9HKFdlYkdMLCAiRUdMRGlzcGxheSBJbml0aWFsaXphdGlv
biBmYWlsZWQuIik7Ci0gICAgICAgIHJldHVybiB7IH07CisgICAgICAgIHJldHVybiBFR0xfTk9f
RElTUExBWTsKICAgICB9CiAgICAgTE9HKFdlYkdMLCAiQU5HTEUgaW5pdGlhbGlzZWQgTWFqb3I6
ICVkIE1pbm9yOiAlZCIsIG1ham9yVmVyc2lvbiwgbWlub3JWZXJzaW9uKTsKICAgICBpZiAoc2hv
dWxkSW5pdGlhbGl6ZVdpdGhWb2xhdGlsZUNvbnRleHRTdXBwb3J0KSB7CkBAIC0xNzQsNyArMTc2
LDcgQEAgc3RhdGljIFNjb3BlZEVHTERlZmF1bHREaXNwbGF5IGluaXRpYWxpemVFR0xEaXNwbGF5
KGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMQXR0cmkKICAgICAgICAgQVNTRVJUKGNoZWNrVm9sYXRp
bGVDb250ZXh0U3VwcG9ydElmRGV2aWNlRXhpc3RzKGRpc3BsYXksICJFR0xfQU5HTEVfcGxhdGZv
cm1fZGV2aWNlX2NvbnRleHRfdm9sYXRpbGVfZWFnbCIsICJFR0xfQU5HTEVfZGV2aWNlX2VhZ2wi
LCBFR0xfRUFHTF9DT05URVhUX0FOR0xFKSk7CiAgICAgICAgIEFTU0VSVChjaGVja1ZvbGF0aWxl
Q29udGV4dFN1cHBvcnRJZkRldmljZUV4aXN0cyhkaXNwbGF5LCAiRUdMX0FOR0xFX3BsYXRmb3Jt
X2RldmljZV9jb250ZXh0X3ZvbGF0aWxlX2NnbCIsICJFR0xfQU5HTEVfZGV2aWNlX2NnbCIsIEVH
TF9DR0xfQ09OVEVYVF9BTkdMRSkpOwogICAgIH0KLSAgICByZXR1cm4gU2NvcGVkRUdMRGVmYXVs
dERpc3BsYXk6OmFkb3B0SW5pdGlhbGl6ZWREaXNwbGF5KGRpc3BsYXkpOworICAgIHJldHVybiBk
aXNwbGF5OwogfQogCiBzdGF0aWMgY29uc3QgdW5zaWduZWQgc3RhdHVzQ2hlY2tUaHJlc2hvbGQg
PSA1OwpAQCAtNTMzLDQ1ICs1MzUsNiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpj
bGVhckN1cnJlbnRDb250ZXh0KCkKICAgICBjdXJyZW50Q29udGV4dCA9IG51bGxwdHI7CiB9CiAK
LSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotYm9vbCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
cmVsZWFzZUN1cnJlbnRDb250ZXh0KFJlbGVhc2VCZWhhdmlvciByZWxlYXNlQmVoYXZpb3IpCi17
Ci0gICAgaWYgKCFpc0FOR0xFQXZhaWxhYmxlKCkpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0g
ICAgLy8gQXQgdGhlIG1vbWVudCB0aGlzIGZ1bmN0aW9uIGlzIHJlbGV2YW50IG9ubHkgd2hlbiB3
ZWIgdGhyZWFkIGxvY2sgb3ducyB0aGUgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wgY3VycmVudCBj
b250ZXh0LgotICAgIEFTU0VSVCghaXNDdXJyZW50Q29udGV4dFByZWRpY3RhYmxlKCkpOwotCi0g
ICAgaWYgKCFFR0xfQmluZEFQSShFR0xfT1BFTkdMX0VTX0FQSSkpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICBpZiAoRUdMX0dldEN1cnJlbnRDb250ZXh0KCkgPT0gRUdMX05PX0NPTlRFWFQp
Ci0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgLy8gQXQgdGhlIHRpbWUgb2Ygd3JpdGluZywg
QU5HTEUgZG9lcyBub3QgZmx1c2ggb24gTWFrZUN1cnJlbnQuIFNpbmNlIHdlIGFyZQotICAgIC8v
IHBvdGVudGlhbGx5IHN3aXRjaGluZyB0aHJlYWRzLCB3ZSBzaG91bGQgZmx1c2guCi0gICAgLy8g
Tm90ZTogSGVyZSB3ZSBhc3N1bWUgYWxzbyB0aGF0IEFOR0xFIGhhcyBvbmx5IG9uZSBwbGF0Zm9y
bSBjb250ZXh0IC0tIG90aGVyd2lzZQotICAgIC8vIHdlIHdvdWxkIG5lZWQgdG8gZmx1c2ggZWFj
aCBFR0wgY29udGV4dCB0aGF0IGhhcyBiZWVuIHVzZWQuCi0gICAgZ2w6OkZsdXNoKCk7Ci0KLSAg
ICAvLyBVbnNldCB0aGUgRUdMIGN1cnJlbnQgY29udGV4dCwgc2luY2UgdGhlIG5leHQgYWNjZXNz
IG1pZ2h0IGJlIGZyb20gYW5vdGhlciB0aHJlYWQsIGFuZCB0aGUKLSAgICAvLyBjb250ZXh0IGNh
bm5vdCBiZSBjdXJyZW50IG9uIG11bHRpcGxlIHRocmVhZHMuCi0KLSAgICBpZiAocmVsZWFzZUJl
aGF2aW9yID09IFJlbGVhc2VCZWhhdmlvcjo6UmVsZWFzZVRocmVhZFJlc291cmNlcykgewotICAg
ICAgICAvLyBDYWxsZWQgd2hlbiB3ZSBkbyBub3Qga25vdyBpZiB3ZSB3aWxsIGV2ZXIgc2VlIGFu
b3RoZXIgY2FsbCBmcm9tIHRoaXMgdGhyZWFkIGFnYWluLgotICAgICAgICAvLyBVbnNldCB0aGUg
RUdMIGN1cnJlbnQgY29udGV4dCBieSByZWxlYXNpbmcgd2hvbGUgRUdMIHRocmVhZCBzdGF0ZS4K
LSAgICAgICAgLy8gVGhlb3JldGljYWxseSBSZWxlYXNlVGhyZWFkIGNhbiByZXNldCB0aGUgYm91
bmQgQVBJLCBzbyB0aGUgcmVzdCBvZiB0aGUgY29kZSBtZW50aW9ucyBCaW5kQVBJL1F1ZXJ5QVBJ
LgotICAgICAgICByZXR1cm4gRUdMX1JlbGVhc2VUaHJlYWQoKTsKLSAgICB9Ci0gICAgLy8gT24g
V2ViS2l0IG93bmVkIHRocmVhZHMsIFdlYktpdCBpcyBhYmxlIHRvIGNob29zZSB0aGUgdGltZSBm
b3IgdGhlIEVHTCBjbGVhbnVwLgotICAgIC8vIFRoaXMgaXMgd2h5IHdlIG9ubHkgdW5zZXQgdGhl
IGNvbnRleHQuCi0gICAgLy8gTm90ZTogQXQgdGhlIHRpbWUgb2Ygd3JpdGluZyB0aGUgRUdMIGNs
ZWFudXAgaXMgY2hvc2VuIHRvIGJlIG5vdCBkb25lIGF0IGFsbC4KLSAgICBFR0xEaXNwbGF5IGRp
c3BsYXkgPSBFR0xfR2V0RGlzcGxheShFR0xfREVGQVVMVF9ESVNQTEFZKTsKLSAgICBpZiAoZGlz
cGxheSA9PSBFR0xfTk9fRElTUExBWSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVy
biBFR0xfTWFrZUN1cnJlbnQoZGlzcGxheSwgRUdMX05PX1NVUkZBQ0UsIEVHTF9OT19TVVJGQUNF
LCBFR0xfTk9fQ09OVEVYVCk7Ci19Ci0jZW5kaWYKLQogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6Y2hlY2tHUFVTdGF0dXMoKQogewogICAgIGlmIChtX2ZhaWxOZXh0U3RhdHVzQ2hlY2sp
IHsKQEAgLTg3NywxMSArODQwLDYgQEAgc3RkOjpvcHRpb25hbDxQaXhlbEJ1ZmZlcj4gR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OnJlYWRDb21wb3NpdGVkUmVzdWx0cygpCiAgICAgcmV0dXJuIHJl
c3VsdDsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVsZWFzZUFsbFJlc291
cmNlc0lmVW51c2VkKCkKLXsKLSAgICBTY29wZWRFR0xEZWZhdWx0RGlzcGxheTo6cmVsZWFzZUFs
bFJlc291cmNlc0lmVW51c2VkKCk7Ci19Ci0KICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogUmVm
UHRyPE1lZGlhU2FtcGxlPiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cGFpbnRDb21wb3NpdGVk
UmVzdWx0c1RvTWVkaWFTYW1wbGUoKQogewpAQCAtODk3LDYgKzg1NSwxMiBAQCBSZWZQdHI8TWVk
aWFTYW1wbGU+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpwYWludENvbXBvc2l0ZWRSZXN1bHRz
VG9NZWRpYVNhbXBsZQogICAgIHJldHVybiBNZWRpYVNhbXBsZUFWRk9iakM6OmNyZWF0ZUltYWdl
U2FtcGxlKFdURk1vdmUoKnBpeGVsQnVmZmVyKSwgTWVkaWFTYW1wbGVBVkZPYmpDOjpWaWRlb1Jv
dGF0aW9uOjpVcHNpZGVEb3duLCB0cnVlKTsKIH0KICNlbmRpZgorCit2b2lkIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpwbGF0Zm9ybVJlbGVhc2VUaHJlYWRSZXNvdXJjZXMoKQoreworICAgIGN1
cnJlbnRDb250ZXh0ID0gbnVsbHB0cjsKK30KKwogfQogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQkdM
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dy
YXBoaWNzQ29udGV4dEdMT3BlbkdMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5jcHAKaW5kZXggZjhiMjBhYzc2ZDFi
ZGU5ZjNhMjg2MGFiOWEyYzQ0OTdlNWI2MjdmNC4uMDdkODY0MDMzYWYyZDZlZmM1NjQxYTU1ZWE1
MGM2NDk3MmJiODQ0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuY3BwCkBA
IC03NSw2ICs3NSwxNiBAQCBHQ0dMYml0ZmllbGQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Omdl
dEJ1ZmZlcnNUb0F1dG9DbGVhcigpIGNvbnN0CiAgICAgcmV0dXJuIG1fYnVmZmVyc1RvQXV0b0Ns
ZWFyOwogfQogCisjaWYgIVVTRShBTkdMRSkKK2Jvb2wgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OnJlbGVhc2VUaHJlYWRSZXNvdXJjZXMoUmVsZWFzZVRocmVhZFJlc291cmNlQmVoYXZpb3IpCit7
Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnBsYXRmb3JtUmVsZWFzZVRocmVh
ZFJlc291cmNlcygpCit7Cit9CisjZW5kaWYKKwogI2lmICFVU0UoQU5HTEUpCiBib29sIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjp0ZXhJbWFnZTJEUmVzb3VyY2VTYWZlKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0
aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NH
TGVudW0gdHlwZSwgR0NHTGludCB1bnBhY2tBbGlnbm1lbnQpCiB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0wuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0Nv
bnRleHRHTE9wZW5HTC5oCmluZGV4IGZlNTlkZWIwOWQ4OGNlN2FkNThhZDUyMDkwYzRlNTYwNGEz
N2IyMmUuLjY4MDE3NDFhYjdhMmYxNjM2MTM5M2NkMTk2YjdiZDJjMGM5ZmI1YmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRl
eHRHTE9wZW5HTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5n
bC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oCkBAIC0zNyw3ICszNyw2IEBACiAjaW5jbHVkZSA8
d3RmL1VuaXF1ZVJlZi5oPgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0jaW5jbHVkZSAiR3JhcGhp
Y3NDb250ZXh0R0xBTkdMRUVHTFV0aWxpdGllcy5oIgogI2luY2x1ZGUgIklPU3VyZmFjZS5oIgog
I2VuZGlmCiAKQEAgLTQ2LDcgKzQ1LDcgQEAKICNlbmRpZgogCiAjaWYgVVNFKEFOR0xFKQotI2lu
Y2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMQU5HTEVVdGlsaXRpZXMuaCIKKyNpbmNsdWRlICJBTkdM
RVV0aWxpdGllcy5oIgogI2Vsc2UKICNpbmNsdWRlICJBTkdMRVdlYktpdEJyaWRnZS5oIgogI2lu
Y2x1ZGUgIkV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5oIgpAQCAtMTE5LDE3ICsxMTgsMTYgQEAg
cHVibGljOgogI2lmIFVTRShBTkdMRSkKICAgICBzdGF0aWMgR0NHTGVudW0gZHJhd2luZ0J1ZmZl
clRleHR1cmVUYXJnZXQoKTsKICNlbmRpZgotCi0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAg
ICBlbnVtIGNsYXNzIFJlbGVhc2VCZWhhdmlvciB7Ci0gICAgICAgIFByZXNlcnZlVGhyZWFkUmVz
b3VyY2VzLAotICAgICAgICBSZWxlYXNlVGhyZWFkUmVzb3VyY2VzCisgICAgZW51bSBjbGFzcyBS
ZWxlYXNlVGhyZWFkUmVzb3VyY2VCZWhhdmlvciB7CisgICAgICAgIC8vIFJlbGVhc2VzIGN1cnJl
bnQgY29udGV4dCBhZnRlciBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCBjYWxscyBkb25lIGluIHRo
ZSB0aHJlYWQuCisgICAgICAgIFJlbGVhc2VDdXJyZW50Q29udGV4dCwKKyAgICAgICAgLy8gUmVs
ZWFzZXMgYWxsIHRocmVhZCByZXNvdXJjZXMgYWZ0ZXIgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wg
Y2FsbHMgZG9uZSBpbiB0aGUgdGhyZWFkLgorICAgICAgICBSZWxlYXNlVGhyZWFkUmVzb3VyY2Vz
LAorICAgICAgICAvLyBSZWxlYXNlcyBhbGwgZ2xvYmFsIHN0YXRlLiBTaG91bGQgYmUgdXNlZCBv
bmx5IGFmdGVyIGFsbCBkZXBlbmRpbmcgb2JqZWN0cyBoYXZlCisgICAgICAgIC8vIGJlZW4gcmVs
ZWFzZWQuCisgICAgICAgIFRlcm1pbmF0ZUFuZFJlbGVhc2VUaHJlYWRSZXNvdXJjZXMKICAgICB9
OwotICAgIHN0YXRpYyBib29sIHJlbGVhc2VDdXJyZW50Q29udGV4dChSZWxlYXNlQmVoYXZpb3Ip
OwotI2VuZGlmCi0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgc3RhdGljIHZvaWQgcmVsZWFzZUFs
bFJlc291cmNlc0lmVW51c2VkKCk7Ci0jZW5kaWYKKyAgICBzdGF0aWMgYm9vbCByZWxlYXNlVGhy
ZWFkUmVzb3VyY2VzKFJlbGVhc2VUaHJlYWRSZXNvdXJjZUJlaGF2aW9yKTsKIAogICAgIC8vIFdp
dGggbXVsdGlzYW1wbGluZyBvbiwgYmxpdCBmcm9tIG11bHRpc2FtcGxlRkJPIHRvIHJlZ3VsYXIg
RkJPLgogICAgIHZvaWQgcHJlcGFyZVRleHR1cmUoKTsKQEAgLTU4MiwxMiArNTgwLDE1IEBAIHBy
aXZhdGU6CiAgICAgLy8gUmV0dXJucyBmYWxzZSBpZiBjb250ZXh0IHNob3VsZCBiZSBsb3N0IGR1
ZSB0byB0aW1lb3V0LgogICAgIGJvb2wgd2FpdEFuZFVwZGF0ZU9sZGVzdEZyYW1lKCkgV0FSTl9V
TlVTRURfUkVUVVJOOwogI2VuZGlmCisgICAgLy8gUGxhdGZvcm0gc3BlY2lmaWMgYmVoYXZpb3Ig
Zm9yIHJlbGVhc2VSZXNvdXJjZXMoKTsKKyAgICBzdGF0aWMgdm9pZCBwbGF0Zm9ybVJlbGVhc2VU
aHJlYWRSZXNvdXJjZXMoKTsKKwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgR3JhcGhpY3ND
b250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4qIG1fc3dhcENoYWluIHsgbnVsbHB0ciB9OwogICAg
IC8vIFRPRE86IHRoaXMgc2hvdWxkIGJlIHJlbW92ZWQgb25jZSB0aGUgY29udGV4dCBkcmF3cyB0
byBhIGltYWdlIGJ1ZmZlci4gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMTgxNzkgLgogICAgIFJldGFpblB0cjxXZWJHTExheWVyPiBtX3dlYkdMTGF5ZXI7Ci0g
ICAgU2NvcGVkRUdMRGVmYXVsdERpc3BsYXkgbV9kaXNwbGF5T2JqOworICAgIEVHTERpc3BsYXkg
bV9kaXNwbGF5T2JqIHsgbnVsbHB0ciB9OwogICAgIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0R0wg
bV9jb250ZXh0T2JqIHsgbnVsbHB0ciB9OwogICAgIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0R0xD
b25maWcgbV9jb25maWdPYmogeyBudWxscHRyIH07CiAjZW5kaWYgLy8gUExBVEZPUk0oQ09DT0Ep
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dlYkNvcmVUaHJl
YWQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dlYkNvcmVUaHJlYWQubW0K
aW5kZXggMDAyNjY0ZTNlMTY2OWZmMzI4ZGI5Yjk1MjkxYTg4YjUwNDE3OWMzOC4uOTU0NGI1MWMy
NzhkZjU2OWVhNGFiMGJmZWY3ZWY3NDRhYzUyYzczNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2lvcy93YWsvV2ViQ29yZVRocmVhZC5tbQpAQCAtNzAsMTcgKzcwLDIwIEBAIG5h
bWVzcGFjZSB7CiAvLyBhcyBhbnkgY2xpZW50IHRocmVhZCB0aGF0IGNhbGxzIGludG8gV2ViS2l0
Lgogdm9pZCBSZWxlYXNlV2ViVGhyZWFkR2xvYmFsU3RhdGUoKQogewotICAgIC8vIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMIGN1cnJlbnQgY29udGV4dCBpcyBvd25lZCBieSB0aGUgd2ViIHRocmVh
ZCBsb2NrLiBSZWxlYXNlIHRoZSBjb250ZXh0CisgICAgLy8gQU5HTEUgbWFpbnRhaW5zIHRocmVh
ZCBnbG9iYWwgc3RhdGUgZm9yIGl0cyBjdXJyZW50IGNvbnRleHQuCisgICAgLy8gVGhpcyBpcyBj
b25jZXB0dWFsbHkgb3duZWQgYnkgdGhlIHdlYiB0aHJlYWQgbG9jay4gUmVsZWFzZSB0aGUgY29u
dGV4dAogICAgIC8vIGJlZm9yZSB0aGUgbG9jayBpcyByZWxlYXNlZC4KIAogICAgIC8vIEluIHNp
bmdsZS10aHJlYWRlZCBlbnZpcm9ubWVudHMgd2UgZG8gbm90IG5lZWQgdG8gdW5zZXQgdGhlIGNv
bnRleHQsIGFzIHRoZXJlIHNob3VsZCBub3QgYmUgYWNjZXNzIGZyb20KICAgICAvLyBtdWx0aXBs
ZSB0aHJlYWRzLgogICAgIEFTU0VSVChXZWJUaHJlYWRJc0VuYWJsZWQoKSk7Ci0gICAgdXNpbmcg
UmVsZWFzZUJlaGF2aW9yID0gV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OlJlbGVh
c2VCZWhhdmlvcjsKLSAgICAvLyBGb3Igbm9uLXdlYiB0aHJlYWRzLCB3ZSBkb24ndCBrbm93IGlm
IHdlIGV2ZXIgc2VlIGFub3RoZXIgY2FsbCBmcm9tIHRoZSB0aHJlYWQuCi0gICAgUmVsZWFzZUJl
aGF2aW9yIHJlbGVhc2VCZWhhdmlvciA9Ci0gICAgICAgIFdlYlRocmVhZElzQ3VycmVudCgpID8g
UmVsZWFzZUJlaGF2aW9yOjpQcmVzZXJ2ZVRocmVhZFJlc291cmNlcyA6IFJlbGVhc2VCZWhhdmlv
cjo6UmVsZWFzZVRocmVhZFJlc291cmNlczsKLSAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6cmVsZWFzZUN1cnJlbnRDb250ZXh0KHJlbGVhc2VCZWhhdmlvcik7CisgICAgdXNp
bmcgUmVsZWFzZVRocmVhZFJlc291cmNlQmVoYXZpb3IgPSBXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6UmVsZWFzZVRocmVhZFJlc291cmNlQmVoYXZpb3I7CisgICAgLy8gRm9yIHdl
YiB0aHJlYWQsIGp1c3QgcmVsZWFzZSB0aGUgY29udGV4dCBhcyB3ZSBrbm93IHdlIHdpbGwgc2Vl
IGNhbGxzIHRvIGl0IGFnYWluLgorICAgIC8vIEZvciBub24td2ViIHRocmVhZHMsIGUuZy4gdGhp
cmQtcGFydHkgY2xpZW50IHRocmVhZHMsIHdlIGRvbid0IGtub3cgaWYgd2UgZXZlciBzZWUgYW5v
dGhlciBjYWxsIGZyb20gdGhlCisgICAgLy8gdGhyZWFkLCBzbyB3ZSBhbHNvIHJlbGVhc2UgdGhl
IHRocmVhZCByZXNvdXJjZXMuCisgICAgUmVsZWFzZVRocmVhZFJlc291cmNlQmVoYXZpb3IgcmVs
ZWFzZUJlaGF2aW9yID0KKyAgICAgICAgV2ViVGhyZWFkSXNDdXJyZW50KCkgPyBSZWxlYXNlVGhy
ZWFkUmVzb3VyY2VCZWhhdmlvcjo6UmVsZWFzZUN1cnJlbnRDb250ZXh0IDogUmVsZWFzZVRocmVh
ZFJlc291cmNlQmVoYXZpb3I6OlJlbGVhc2VUaHJlYWRSZXNvdXJjZXM7CisgICAgV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlbGVhc2VUaHJlYWRSZXNvdXJjZXMocmVsZWFzZUJl
aGF2aW9yKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dy
YXBoaWNzL1Njb3BlZFdlYkdMUmVuZGVyaW5nUmVzb3VyY2VzUmVxdWVzdC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvU2NvcGVkV2ViR0xSZW5kZXJpbmdSZXNvdXJjZXNS
ZXF1ZXN0LmNwcAppbmRleCAwZjc1ZDgyNTQ4MDM2NTQ5ODVmZTA1ODE0ZWUzYmQxMzRlNDgxYWU2
Li4zMjZiMDdmMmViZGVlYTA3Y2E1MmU2NzZjMDIxZDI4ZWI3OGYyN2M0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvU2NvcGVkV2ViR0xSZW5kZXJpbmdSZXNv
dXJjZXNSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mv
U2NvcGVkV2ViR0xSZW5kZXJpbmdSZXNvdXJjZXNSZXF1ZXN0LmNwcApAQCAtMjYsMjAgKzI2LDM4
IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU2NvcGVkV2ViR0xSZW5kZXJpbmdS
ZXNvdXJjZXNSZXF1ZXN0LmgiCiAKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShX
RUJHTCkKKworI2luY2x1ZGUgIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmgiCisjaW5jbHVkZSAi
U3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3ND
b250ZXh0R0wuaD4KKyNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgorI2luY2x1ZGUgPHd0Zi9TZWNv
bmRzLmg+CisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBzdGQ6OmF0b21pYzx1bnNpZ25lZD4gU2Nv
cGVkV2ViR0xSZW5kZXJpbmdSZXNvdXJjZXNSZXF1ZXN0OjpzX3JlcXVlc3RzOwotCi0jaWYgIVBM
QVRGT1JNKENPQ09BKQorc3RhdGljIGNvbnN0ZXhwciBTZWNvbmRzIGZyZWVXZWJHTFJlbmRlcmlu
Z1Jlc291cmNlc1RpbWVvdXQgPSAxX3M7CitzdGF0aWMgYm9vbCBkaWRTY2hlZHVsZUZyZWVXZWJH
TFJlbmRlcmluZ1Jlc291cmNlczsKIAogdm9pZCBTY29wZWRXZWJHTFJlbmRlcmluZ1Jlc291cmNl
c1JlcXVlc3Q6OnNjaGVkdWxlRnJlZVdlYkdMUmVuZGVyaW5nUmVzb3VyY2VzKCkKIHsKKyAgICBp
ZiAoZGlkU2NoZWR1bGVGcmVlV2ViR0xSZW5kZXJpbmdSZXNvdXJjZXMpCisgICAgICAgIHJldHVy
bjsKKyAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2hBZnRlcihmcmVlV2ViR0xSZW5kZXJpbmdS
ZXNvdXJjZXNUaW1lb3V0LCBmcmVlV2ViR0xSZW5kZXJpbmdSZXNvdXJjZXMpOworICAgIGRpZFNj
aGVkdWxlRnJlZVdlYkdMUmVuZGVyaW5nUmVzb3VyY2VzID0gdHJ1ZTsKIH0KIAogdm9pZCBTY29w
ZWRXZWJHTFJlbmRlcmluZ1Jlc291cmNlc1JlcXVlc3Q6OmZyZWVXZWJHTFJlbmRlcmluZ1Jlc291
cmNlcygpCiB7CisgICAgZGlkU2NoZWR1bGVGcmVlV2ViR0xSZW5kZXJpbmdSZXNvdXJjZXMgPSBm
YWxzZTsKKyAgICBpZiAoc19yZXF1ZXN0cykKKyAgICAgICAgcmV0dXJuOworICAgIHJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMU3RyZWFtV29ya1F1ZXVlKCkuZGlzcGF0Y2goW10geworICAgICAgICBX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVsZWFzZVRocmVhZFJlc291cmNlcyhX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6UmVsZWFzZVRocmVhZFJlc291cmNlQmVo
YXZpb3I6OlRlcm1pbmF0ZUFuZFJlbGVhc2VUaHJlYWRSZXNvdXJjZXMpOworICAgIH0pOwogfQog
Ci0jZW5kaWYKLQogfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9ncmFwaGljcy9TY29wZWRXZWJHTFJlbmRlcmluZ1Jlc291cmNlc1JlcXVlc3QuaCBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9TY29wZWRXZWJHTFJlbmRlcmluZ1Jlc291
cmNlc1JlcXVlc3QuaAppbmRleCBjMGVkNGVlZDNjZTlkNzQ5MTY0MmM0NjE2MzFiMDEzYzExNzg2
ZDA4Li4yY2I1MGIzYmNmMjYxNzFkZDI0NzE3YmFhNWI1MTM1YjAwYWVhN2FkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvU2NvcGVkV2ViR0xSZW5kZXJpbmdS
ZXNvdXJjZXNSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNz
L1Njb3BlZFdlYkdMUmVuZGVyaW5nUmVzb3VyY2VzUmVxdWVzdC5oCkBAIC0yNSw2ICsyNSw4IEBA
CiAKICNwcmFnbWEgb25jZQogCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoV0VC
R0wpCisKICNpbmNsdWRlICJTY29wZWRSZW5kZXJpbmdSZXNvdXJjZXNSZXF1ZXN0LmgiCiAjaW5j
bHVkZSA8YXRvbWljPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KQEAgLTgyLDMgKzg0
LDUgQEAgcHJpdmF0ZToKIH07CiAKIH0KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvU2NvcGVkV2ViR0xSZW5kZXJpbmdSZXNvdXJjZXNSZXF1
ZXN0Q29jb2EuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1Njb3BlZFdl
YkdMUmVuZGVyaW5nUmVzb3VyY2VzUmVxdWVzdENvY29hLmNwcApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMzFiMzNmY2Q1Y2ZmMzQ3MmQ0MTdlOTk1MTFjMDcyZTg0OGU3YTlhNy4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvZ3JhcGhpY3MvU2NvcGVkV2ViR0xSZW5kZXJpbmdSZXNvdXJjZXNSZXF1ZXN0
Q29jb2EuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNjAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNp
bmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJTY29wZWRXZWJHTFJlbmRlcmluZ1Jlc291cmNl
c1JlcXVlc3QuaCIKLQotI2lmIFBMQVRGT1JNKENPQ09BKQotCi0jaW5jbHVkZSAiUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0wuaCIKLSNpbmNsdWRlICJTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlLmgi
Ci0jaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHRHTC5oPgotI2luY2x1ZGUgPHd0Zi9S
dW5Mb29wLmg+Ci0jaW5jbHVkZSA8d3RmL1NlY29uZHMuaD4KLQotbmFtZXNwYWNlIFdlYktpdCB7
Ci0KLXN0YXRpYyBjb25zdGV4cHIgU2Vjb25kcyBmcmVlV2ViR0xSZW5kZXJpbmdSZXNvdXJjZXNU
aW1lb3V0ID0gMV9zOwotc3RhdGljIGJvb2wgZGlkU2NoZWR1bGVGcmVlV2ViR0xSZW5kZXJpbmdS
ZXNvdXJjZXM7Ci0KLXZvaWQgU2NvcGVkV2ViR0xSZW5kZXJpbmdSZXNvdXJjZXNSZXF1ZXN0Ojpz
Y2hlZHVsZUZyZWVXZWJHTFJlbmRlcmluZ1Jlc291cmNlcygpCi17Ci0gICAgaWYgKGRpZFNjaGVk
dWxlRnJlZVdlYkdMUmVuZGVyaW5nUmVzb3VyY2VzKQotICAgICAgICByZXR1cm47Ci0gICAgUnVu
TG9vcDo6bWFpbigpLmRpc3BhdGNoQWZ0ZXIoZnJlZVdlYkdMUmVuZGVyaW5nUmVzb3VyY2VzVGlt
ZW91dCwgZnJlZVdlYkdMUmVuZGVyaW5nUmVzb3VyY2VzKTsKLSAgICBkaWRTY2hlZHVsZUZyZWVX
ZWJHTFJlbmRlcmluZ1Jlc291cmNlcyA9IHRydWU7Ci19Ci0KLXZvaWQgU2NvcGVkV2ViR0xSZW5k
ZXJpbmdSZXNvdXJjZXNSZXF1ZXN0OjpmcmVlV2ViR0xSZW5kZXJpbmdSZXNvdXJjZXMoKQotewot
ICAgIGRpZFNjaGVkdWxlRnJlZVdlYkdMUmVuZGVyaW5nUmVzb3VyY2VzID0gZmFsc2U7Ci0gICAg
aWYgKHNfcmVxdWVzdHMpCi0gICAgICAgIHJldHVybjsKLSAgICByZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFN0cmVhbVdvcmtRdWV1ZSgpLmRpc3BhdGNoKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpy
ZWxlYXNlQWxsUmVzb3VyY2VzSWZVbnVzZWQpOwotfQotCi19Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2Vz
Q29jb2EudHh0CmluZGV4IDVlNmI1MmMxMjExNDZjNmQ1M2FjZTY2NWQ2NWMyNTZmZGU1ZTk1OTMu
LjgyZjQ2Y2U0NGIxNzc0ZTEzZGI3YWY0M2M3YmNiNGM3OGJhYmQ2NWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXND
b2NvYS50eHQKQEAgLTY2LDcgKzY2LDYgQEAgR1BVUHJvY2Vzcy9jb2NvYS9HUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzQ29jb2EubW0KIEdQVVByb2Nlc3MvY29jb2EvR1BVUHJvY2Vzc0NvY29hLm1t
CiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EuY3BwCiBH
UFVQcm9jZXNzL2dyYXBoaWNzL1Njb3BlZFJlbmRlcmluZ1Jlc291cmNlc1JlcXVlc3RDb2NvYS5t
bSBAbm8tdW5pZnkKLUdQVVByb2Nlc3MvZ3JhcGhpY3MvU2NvcGVkV2ViR0xSZW5kZXJpbmdSZXNv
dXJjZXNSZXF1ZXN0Q29jb2EuY3BwCiBHUFVQcm9jZXNzL2lvcy9HUFVQcm9jZXNzSU9TLm1tCiBH
UFVQcm9jZXNzL21hYy9HUFVQcm9jZXNzTWFjLm1tCiBHUFVQcm9jZXNzL21hYy9Mb2NhbEF1ZGlv
U2Vzc2lvblJvdXRpbmdBcmJpdHJhdG9yLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZDFjNjk1MTViYjE4MmRmYTVhNTQwNzc0ODY0
ZjczZWMyOThjNDFkOS4uOTlmMWRiZWYxMjUwYjJmZmQ5OGU0NWZjOGE1ZTRlMzI4YmRhZjFhOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBA
IC0zLDcgKzMsNyBAQAogCWFyY2hpdmVWZXJzaW9uID0gMTsKIAljbGFzc2VzID0gewogCX07Ci0J
b2JqZWN0VmVyc2lvbiA9IDUyOworCW9iamVjdFZlcnNpb24gPSA1NDsKIAlvYmplY3RzID0gewog
CiAvKiBCZWdpbiBQQlhBZ2dyZWdhdGVUYXJnZXQgc2VjdGlvbiAqLwpAQCAtNDc2MCw3ICs0NzYw
LDYgQEAKIAkJN0JDRjcwQ0MyNjE0OTM1RjAwRTRGQjcwIC8qIFNjb3BlZFdlYkdMUmVuZGVyaW5n
UmVzb3VyY2VzUmVxdWVzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTY29wZWRXZWJHTFJlbmRl
cmluZ1Jlc291cmNlc1JlcXVlc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3
QkNGNzBDRDI2MTQ5MzVGMDBFNEZCNzAgLyogU2NvcGVkUmVuZGVyaW5nUmVzb3VyY2VzUmVxdWVz
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBTY29wZWRSZW5kZXJpbmdSZXNvdXJjZXNSZXF1ZXN0Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCQ0Y3MENFMjYxNDkzNUYwMEU0RkI3MCAvKiBT
Y29wZWRXZWJHTFJlbmRlcmluZ1Jlc291cmNlc1JlcXVlc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2Nv
cGVkV2ViR0xSZW5kZXJpbmdSZXNvdXJjZXNSZXF1ZXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCTdCQ0Y3MENGMjYxNDk3RTYwMEU0RkI3MCAvKiBTY29wZWRXZWJHTFJlbmRlcmlu
Z1Jlc291cmNlc1JlcXVlc3RDb2NvYS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTY29wZWRXZWJH
TFJlbmRlcmluZ1Jlc291cmNlc1JlcXVlc3RDb2NvYS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTdCRTcyNjU3MjU3NEY2NzIwMEU4NUQ5OCAvKiBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5RnVuY3Rpb25zR2VuZXJhdGVkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlGdW5jdGlvbnNHZW5lcmF0ZWQuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk3QkU3MjY2ODI1NzY4MEVGMDBFODVEOTggLyogUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xDb2NvYS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTENvY29hLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0MwNjVG
MjkxQzhDRDk1RjAwQzJEOTUwIC8qIFdlYlVzZXJDb250ZW50Q29udHJvbGxlckRhdGFUeXBlcy5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJVc2VyQ29udGVudENv
bnRyb2xsZXJEYXRhVHlwZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtOTEw
NCw3ICs5MTAzLDYgQEAKIAkJCQk3QkNGNzBDQjI2MTQ5MzVFMDBFNEZCNzAgLyogU2NvcGVkUmVu
ZGVyaW5nUmVzb3VyY2VzUmVxdWVzdENvY29hLm1tICovLAogCQkJCTdCQ0Y3MENDMjYxNDkzNUYw
MEU0RkI3MCAvKiBTY29wZWRXZWJHTFJlbmRlcmluZ1Jlc291cmNlc1JlcXVlc3QuY3BwICovLAog
CQkJCTdCQ0Y3MENFMjYxNDkzNUYwMEU0RkI3MCAvKiBTY29wZWRXZWJHTFJlbmRlcmluZ1Jlc291
cmNlc1JlcXVlc3QuaCAqLywKLQkJCQk3QkNGNzBDRjI2MTQ5N0U2MDBFNEZCNzAgLyogU2NvcGVk
V2ViR0xSZW5kZXJpbmdSZXNvdXJjZXNSZXF1ZXN0Q29jb2EuY3BwICovLAogCQkJKTsKIAkJCXBh
dGggPSBncmFwaGljczsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>439854</attachid>
            <date>2021-10-01 07:00:44 -0700</date>
            <delta_ts>2021-10-05 01:50:39 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-231011-20211001170042.patch</filename>
            <type>text/plain</type>
            <size>63147</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgzMzY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjk3ZDQzMzYwNDlhYzc5
YWYyMDE0NGY4NDhhZmU3ZmI0NDU0OGU2NS4uMmNmMDhjMzE5ZDRlMzRjYTE1OTk4NDkwZGEyODNi
NzUzMTBhZjU2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYyIEBACisyMDIxLTA5LTMwICBLaW1t
byBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgU2NvcGVkRUdMRGVm
YXVsdERpc3BsYXkgc2hvdWxkIGJlIHJlbW92ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMTAxMQorCisgICAgICAgIFJldmlld2VkIGJ5IEtlbm5l
dGggUnVzc2VsbC4KKworICAgICAgICBIYXJkLWNvZGluZyB0aGUgY29kZSB0byBFR0xfREVGQVVM
VF9ESVNQTEFZIG9ubHkgYW5kIHVzaW5nIHRoZSBzY29wZWQKKyAgICAgICAgaG9sZGVyIGlzIG1h
a2luZyB0aGUgRUdMRGlzcGxheXMgaGFyZGVyIHRvIHVzZSB0aGFuIG5lY2Nlc3NhcnkuIFRoZQor
ICAgICAgICBpbXBsZW1lbnRhdGlvbiB0YXJnZXQsIGUuZy4gdGhlIGFiaWxpdHkgdG8gY2FsbCBF
R0xUZXJtaW5hdGUsIHdhcyBhbHNvIGEgYml0CisgICAgICAgIG1vcmUgY29udm9sdXRlZCB0aGFu
IG5lZWRlZC4KKworICAgICAgICBNb3ZlIHRoZSAiY2FsbCBFR0xUZXJtaW5hdGUiIGxvZ2ljIGZy
b20gYSBiaXQgY29udm9sdXRlZCByZWZjb3VudCBtZWNoYW5pc20KKyAgICAgICAgaW4gU2NvcGVk
RUdMRGVmYXVsdERpc3BsYXkgdG8gdGhlIGV4cGxpY2l0IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpyZWxlYXNlUmVzb3VyY2VzKCkuCisgICAgICAgIFRoZSBjYWxsZXJzIGFyZSBleHBlY3RlZCB0
byBkbyB0aGUgcmVmY291bnRpbmcgYW55d2F5LCBhcyB0aGUgZXhpc3RpbmcgY2xpZW50CisgICAg
ICAgIFdlYktpdDo6U2NvcGVkV2ViR0xSZW5kZXJpbmdSZXNvdXJjZXNSZXF1ZXN0IGFscmVhZHkg
ZGlkLgorCisgICAgICAgIE1ha2UgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlbGVhc2VSZXNv
dXJjZXMoKSBhdmFpbGFibGUgb24gYWxsIHBsYXRmb3Jtcy4KKyAgICAgICAgSXQgaXMgaW1wbGVt
ZW50ZWQgb24gYWxsIEFOR0xFIGltcGxlbWVudGF0aW9ucy4KKyAgICAgICAgUGxhdGZvcm1zIGNh
biBhdWdtZW50IHRoZSBpbXBsZW1lbnRhdGlvbiBieSBpbXBsZW1lbnRpbmcKKyAgICAgICAgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OnBsYXRmb3JtUmVsZWFzZVJlc291cmNlcygpLiBGb3IgQ29j
b2EsIHRoaXMgZnVuY3Rpb24KKyAgICAgICAgcmVzZXRzIHRoZSBjdXJyZW50Q29udGV4dCBjYWNo
ZSB0aGF0IGlzIHVzZWQgdG8gb3B0aW1pemUgbWFraW5nIGNvbnRleHQgY3VycmVudC4KKworICAg
ICAgICBObyBuZXcgdGVzdHMsIHJlZmFjdG9yLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6
CisgICAgICAgICogSGVhZGVycy5jbWFrZToKKyAgICAgICAgKiBQbGF0Zm9ybU1hYy5jbWFrZToK
KyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9BTkdM
RVV0aWxpdGllcy5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFRUdMVXRpbGl0aWVzLmguCisgICAgICAg
IChXZWJDb3JlOjpwbGF0Zm9ybUlzQU5HTEVBdmFpbGFibGUpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2FuZ2xlL0FOR0xFVXRpbGl0aWVzLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFVXRpbGl0
aWVzLmguCisgICAgICAgIFJlbmFtZSBHcmFwaGljc0NvbnRleHRHTEFOR0xFVXRpbGl0aWVzIHRv
IHNpbXBsZXIgYW5kIG1vcmUgZGVzY3JpcHRpdmUgQU5HTEVVdGlsaXRpZXMuCisgICAgICAgIEFk
ZCB0aGUgaXNBTkdMRUF2YWlsYWJsZSB0byB0aGVyZS4KKworICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlbGVhc2VSZXNvdXJjZXMpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnBsYXRmb3JtUmVsZWFzZVJlc291cmNl
cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xB
TkdMRUVHTFV0aWxpdGllcy5jcHA6IFJlbW92ZWQuCisgICAgICAgIChXZWJDb3JlOjpyZWZEZWZh
dWx0RGlzcGxheSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjp1bnJlZkRlZmF1bHREaXNw
bGF5SWZOZWVkZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2NvcGVkRUdMRGVmYXVs
dERpc3BsYXk6Om9wZXJhdG9yPSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTY29wZWRF
R0xEZWZhdWx0RGlzcGxheTo6U2NvcGVkRUdMRGVmYXVsdERpc3BsYXkpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6U2NvcGVkRUdMRGVmYXVsdERpc3BsYXk6On5TY29wZWRFR0xEZWZhdWx0
RGlzcGxheSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTY29wZWRFR0xEZWZhdWx0RGlz
cGxheTo6cmVsZWFzZUFsbFJlc291cmNlc0lmVW51c2VkKTogRGVsZXRlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6cGxhdGZvcm1Jc0FOR0xFQXZhaWxhYmxlKToKKyAgICAgICAgKFdl
YkNvcmU6OmluaXRpYWxpemVFR0xEaXNwbGF5KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpwbGF0Zm9ybVJlbGVhc2VSZXNvdXJjZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6aXNBTkdMRUF2YWlsYWJsZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6cmVsZWFzZUN1cnJlbnRDb250ZXh0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWxlYXNlQWxsUmVzb3Vy
Y2VzSWZVbnVzZWQpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5n
bC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6cmVsZWFzZVJlc291cmNlcyk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cGxhdGZvcm1SZWxlYXNlUmVzb3VyY2VzKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9pb3Mvd2FrL1dlYkNvcmVUaHJlYWQubW06CisKIDIwMjEtMTAt
MDEgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgogCiAgICAgICAgIE1vdmUgSW5s
aW5lV2Fsa2VyIHRvIGEgZmlsZSBvZiBpdHMgb3duIGFuZCBtYWtlIGl0IHVzZSBSZW5kZXJJdGVy
YXRvcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwppbmRleCAyYjU3NGE4OTA5YjEwNGMyMTI3MDlkNjc2YmEwNjNhZGRlZTJiM2Uy
Li4wMDZlNWRmMmFkZDA0ZDJkMzVkMTYyYzUwOTAwYzRiYjk3Njg2ZjZiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAt
MSwzICsxLDI3IEBACisyMDIxLTA5LTMwICBLaW1tbyBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBs
ZS5jb20+CisKKyAgICAgICAgU2NvcGVkRUdMRGVmYXVsdERpc3BsYXkgc2hvdWxkIGJlIHJlbW92
ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMTAx
MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxl
bWVudCB0aGUgcmVsZWFzZSBvZiBXZWJHTCByZXNvdXJjZXMgd2l0aCB0aGUgYW1lbmRlZAorICAg
ICAgICBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVsZWFzZVJlc291cmNlcygpIGluc3RlYWQg
b2YKKyAgICAgICAgcHJldmlvdXMgc2VwYXJhdGUgZnVuY3Rpb24gR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OnJlbGVhc2VBbGxSZXNvdXJjZXMoKS4KKworICAgICAgICBVc2UgdGhlIHJlc291cmNl
IHJlbGVhc2UgY29kZSBwYXRoIHVuaXZlcnNhbGx5LCBhcworICAgICAgICBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6cmVsZWFzZVJlc291cmNlcygpIGlzIG5vdyBjb21tb24gY29kZS4KKworICAg
ICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvU2NvcGVkV2ViR0xSZW5kZXJpbmdSZXNvdXJjZXNS
ZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2NvcGVkV2ViR0xSZW5kZXJpbmdSZXNvdXJj
ZXNSZXF1ZXN0OjpzY2hlZHVsZUZyZWVXZWJHTFJlbmRlcmluZ1Jlc291cmNlcyk6CisgICAgICAg
IChXZWJLaXQ6OlNjb3BlZFdlYkdMUmVuZGVyaW5nUmVzb3VyY2VzUmVxdWVzdDo6ZnJlZVdlYkdM
UmVuZGVyaW5nUmVzb3VyY2VzKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1Njb3Bl
ZFdlYkdMUmVuZGVyaW5nUmVzb3VyY2VzUmVxdWVzdC5oOgorICAgICAgICAqIEdQVVByb2Nlc3Mv
Z3JhcGhpY3MvU2NvcGVkV2ViR0xSZW5kZXJpbmdSZXNvdXJjZXNSZXF1ZXN0Q29jb2EuY3BwOiBS
ZW1vdmVkLgorICAgICAgICAoV2ViS2l0OjpTY29wZWRXZWJHTFJlbmRlcmluZ1Jlc291cmNlc1Jl
cXVlc3Q6OnNjaGVkdWxlRnJlZVdlYkdMUmVuZGVyaW5nUmVzb3VyY2VzKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYktpdDo6U2NvcGVkV2ViR0xSZW5kZXJpbmdSZXNvdXJjZXNSZXF1ZXN0OjpmcmVl
V2ViR0xSZW5kZXJpbmdSZXNvdXJjZXMpOiBEZWxldGVkLgorICAgICAgICAqIFNvdXJjZXNDb2Nv
YS50eHQ6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIw
MjEtMTAtMDEgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAg
ICAgICAgIFtHVEtdW2ExMXldIEFkZCBpbml0aWFsIGltcGxlbWVudGF0aW9uIG9mIGFjY2Vzc2li
bGUgaW50ZXJmYWNlIHdoZW4gYnVpbGRpbmcgd2l0aCBBVFNQSQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApp
bmRleCA1YWMxNzQ5NjEzOWQ0MzkyODI4ZTU5MzhiNDI5Y2RhYTYxZDUzYWFlLi5kYTE1MzNkMGNh
MjY2YmMxMDdjOTlkNTY0ZjYyZmQ1NmMwN2IxNThkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAt
MTcwMSw5ICsxNzAxLDkgQEAgaWYgKEVOQUJMRV9XRUJHTCkKICAgICAgICAgICAgICR7V0VCQ09S
RV9ESVJ9L3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlCiAgICAgICAgICkKICAgICAgICAgbGlzdChB
UFBFTkQgV2ViQ29yZV9TT1VSQ0VTCisgICAgICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9hbmds
ZS9BTkdMRVV0aWxpdGllcy5jcHAKICAgICAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2FuZ2xl
L0V4dGVuc2lvbnNHTEFOR0xFLmNwcAogICAgICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvYW5n
bGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAKLSAgICAgICAgICAgIHBsYXRmb3JtL2dyYXBo
aWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEVFR0xVdGlsaXRpZXMuY3BwCiAgICAgICAg
ICAgICBwbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9UZW1wb3JhcnlBTkdMRVNldHRpbmcuY3BwCiAg
ICAgICAgICkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZSBiL1Nv
dXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5kZXggNzc3ODcxNDMzZGE4MTI1YmVjODExMTYw
MDM2YWM1ZGVhNGMyMmRlMC4uY2Y1ZjQ1NzFmNjg1Y2Q1OGQxZDY5OWMxMGUwMzM3NWFkZTkyZDBj
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBAIC0xMzgyLDggKzEzODIsOCBAQCBzZXQoV2ViQ29yZV9Q
UklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvV2luZFJ1bGUu
aAogCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvQU5HTEVIZWFkZXJzLmgKKyAgICBwbGF0
Zm9ybS9ncmFwaGljcy9hbmdsZS9BTkdMRVV0aWxpdGllcy5oCiAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuaAotICAgIHBsYXRmb3JtL2dyYXBoaWNzL2FuZ2xl
L0dyYXBoaWNzQ29udGV4dEdMQU5HTEVVdGlsaXRpZXMuaAogCiAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3REcmF3aW5nQ29udGV4dC5oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNt
YWtlCmluZGV4IGZhY2NjYjY4ZjY1ZWJhN2NjNTkxYmM3MjRmY2EwYzJhMzNhYzRmOGEuLmJjZmNl
Yjc5MzEzZWMwNWMzNTRjNWZlZmUzNGFiNTEwYWIzM2U3MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFj
LmNtYWtlCkBAIC02MTQsNyArNjE0LDcgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9QUklWQVRFX0ZS
QU1FV09SS19IRUFERVJTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvTUlNRVR5cGVDYWNoZS5oCiAg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuaAogCi0gICAgcGxhdGZvcm0vZ3JhcGhpY3MvYW5n
bGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRUVHTFV0aWxpdGllcy5oCisgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvYW5nbGUvQU5HTEVVdGlsaXRpZXMuaAogCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL0F1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDLmgKICAgICBwbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5YmFja1RhcmdldENvY29hLmgKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2Vz
Q29jb2EudHh0CmluZGV4IGYzMGZkYWJhMDRjMjYwNjdmMTY0OGYyNzQyNzJkNWUyYWUxZDNkNGQu
LmE0YzBhNzYyN2MzNzgxZGZjZDA0OTA2ZmM1MjMzMDljOTA3MzBjMmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNl
c0NvY29hLnR4dApAQCAtNTk3LDcgKzU5Nyw3IEBAIHRlc3RpbmcvY29jb2EvV2ViVmlld1Zpc3Vh
bElkZW50aWZpY2F0aW9uT3ZlcmxheS5tbQogLy8gVGhlIGZvbGxvd2luZyBmaWxlcyBhcmVuJ3Qg
dW5pZmllZCB3aXRoIG90aGVycyB0byBwcmV2ZW50IHRoZW0gZnJvbSBiZWluZyBtZXJnZWQKIC8v
IHdpdGggZmlsZXMgdGhhdCB1c2UgdGhlIHN5c3RlbSBPcGVuR0wuCiAKK3BsYXRmb3JtL2dyYXBo
aWNzL2FuZ2xlL0FOR0xFVXRpbGl0aWVzLmNwcCBAbm8tdW5pZnkKIHBsYXRmb3JtL2dyYXBoaWNz
L2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmNwcCBAbm8tdW5pZnkKIHBsYXRmb3JtL2dyYXBoaWNz
L2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwIEBuby11bmlmeQotcGxhdGZvcm0vZ3Jh
cGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRUVHTFV0aWxpdGllcy5jcHAgQG5vLXVu
aWZ5CiBwbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9UZW1wb3JhcnlBTkdMRVNldHRpbmcuY3BwIEBu
by11bmlmeQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCmluZGV4IGM1NDAyNWNiMmM2N2JhOGZjMTljY2Q3NzkyYTY0NzIyNWRiN2JjZDAuLjQ3
M2VmYTI3MTNlNWE1YTIxYzIxNWQzNWI2ZDFmMjhiOWFmYmViNTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTIzNTEsMTMgKzIz
NTEsMTEgQEAKIAkJN0FGOUIyMEYxOENGQjVGNDAwQzY0QkVGIC8qIEpTVlRUUmVnaW9uTGlzdC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0FGOUIyMEIx
OENGQjVGMzAwQzY0QkVGIC8qIEpTVlRUUmVnaW9uTGlzdC5oICovOyB9OwogCQk3QjEwMzM5RTI1
NDk3MjE3MDBDOEMxQUMgLyogR3JhcGhpY3NDb250ZXh0R0xDVi5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0IxMDMzOUQyNTQ5NzIwMTAwQzhDMUFDIC8q
IEdyYXBoaWNzQ29udGV4dEdMQ1YuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk3QjEwMzM5RjI1NDk3MjFFMDBDOEMxQUMgLyogR3JhcGhpY3NDb250
ZXh0R0xDVkFOR0xFLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3QjEwMzM5QzI1NDk3MjAxMDBDOEMxQUMgLyogR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xF
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJN0I0
NUFCNTAyNUZCOTNCRTAwRkQyN0Y0IC8qIEdyYXBoaWNzQ29udGV4dEdMQU5HTEVFR0xVdGlsaXRp
ZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I3
NzRDNjIyNUZCOTM1NTAwOTEzOTVGIC8qIEdyYXBoaWNzQ29udGV4dEdMQU5HTEVFR0xVdGlsaXRp
ZXMuY3BwICovOyB9OwotCQk3QjQ1QUI1NTI1RkJBOURFMDBGRDI3RjQgLyogR3JhcGhpY3NDb250
ZXh0R0xBTkdMRUVHTFV0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gN0I0NUFCNTQyNUZCQTlERDAwRkQyN0Y0IC8qIEdyYXBoaWNzQ29udGV4
dEdMQU5HTEVFR0xVdGlsaXRpZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk3QjZEQzgxOTI1NzEyRTkyMDAzODBDNzAgLyogR3JhcGhpY3NDb250
ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDdCNkRDODE3MjU3MTJFOTIwMDM4MEM3MCAvKiBHcmFwaGljc0NvbnRl
eHRHTElPU3VyZmFjZVN3YXBDaGFpbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTdCNzMxMUZCMjVDMDkyQjcwMDNCMjc5NiAvKiBTY29wZWRIaWdo
UGVyZm9ybWFuY2VHUFVSZXF1ZXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3QjczMTFGQTI1QzA5MkI3MDAzQjI3OTYgLyogU2NvcGVkSGlnaFBlcmZv
cm1hbmNlR1BVUmVxdWVzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTdCOEVENUYwMjZGMEMxM0QwMDhBQzAyMyAvKiBDVlV0aWxpdGllcy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I4RUQ1RUQyNkYw
QzEyMzAwOEFDMDIzIC8qIENWVXRpbGl0aWVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0I5MDQxNzAyNTUwMTE0MjAwNkVFQjhDIC8qIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3QjkwNDE2RTI1NTAxMTA5MDA2RUVCOEMgLyogUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eUJhc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwotCQk3QkIzNEExNzI1MzQ1Q0IyMDAwMjlEMDggLyogR3JhcGhpY3ND
b250ZXh0R0xBTkdMRVV0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gN0JCMzRBMTYyNTM0NUNCMjAwMDI5RDA4IC8qIEdyYXBoaWNzQ29udGV4
dEdMQU5HTEVVdGlsaXRpZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OworCQk3QkIzNEExNzI1MzQ1Q0IyMDAwMjlEMDggLyogQU5HTEVVdGlsaXRpZXMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCQjM0QTE2
MjUzNDVDQjIwMDAyOUQwOCAvKiBBTkdMRVV0aWxpdGllcy5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdCQjM0QTQ4MjUzNzc2Q0EwMDAyOUQwOCAv
KiBHcmFwaGljc0NvbnRleHRHTEltYWdlRXh0cmFjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QkIzNEE0NTI1Mzc3NkM2MDAwMjlEMDggLyogR3Jh
cGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdCQjY4MEJBMjVCQTFCRTQwMDJCODczOCAvKiBHcmFw
aGljc0NoZWNrc01hYy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gN0JCNjgwQjgyNUJBMUJFNDAwMkI4NzM4IC8qIEdyYXBoaWNzQ2hlY2tzTWFjLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0JFNzQyNzM4
MUZBOTA2RkJCNEYwRjJDIC8qIEpTU1ZHR3JhcGhpY3NFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NTBDNEMwMkJFRDg5MzZGODE4RTJGOTkg
LyogSlNTVkdHcmFwaGljc0VsZW1lbnQuaCAqLzsgfTsKQEAgLTEwNjM0LDIyICsxMDYzMiwyMSBA
QAogCQk3QjEwMzM5QTI1NDk3MjAwMDBDOEMxQUMgLyogR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xF
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dEdMQ1ZBTkdMRS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCMTAzMzlDMjU0OTcyMDEwMEM4QzFBQyAvKiBH
cmFwaGljc0NvbnRleHRHTENWQU5HTEUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0
R0xDVkFOR0xFLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCMTAzMzlEMjU0OTcy
MDEwMEM4QzFBQyAvKiBHcmFwaGljc0NvbnRleHRHTENWLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBo
aWNzQ29udGV4dEdMQ1YuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJN0I0NUFCNTQy
NUZCQTlERDAwRkQyN0Y0IC8qIEdyYXBoaWNzQ29udGV4dEdMQU5HTEVFR0xVdGlsaXRpZXMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0R0xBTkdMRUVH
TFV0aWxpdGllcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjY0QzBCNDI1NEMz
QjE2MDAwNkI0QUYgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2VDb2NvYS5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlQ29j
b2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCNkRDODE1MjU3MTJFOTEwMDM4
MEM3MCAvKiBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3
YXBDaGFpbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCNkRDODE3MjU3MTJF
OTIwMDM4MEM3MCAvKiBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3
YXBDaGFpbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjczMTFGQTI1QzA5MkI3
MDAzQjI3OTYgLyogU2NvcGVkSGlnaFBlcmZvcm1hbmNlR1BVUmVxdWVzdC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBTY29wZWRIaWdoUGVyZm9ybWFuY2VHUFVSZXF1ZXN0Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTdCNzc0QzYyMjVGQjkzNTUwMDkxMzk1RiAv
KiBHcmFwaGljc0NvbnRleHRHTEFOR0xFRUdMVXRpbGl0aWVzLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEdyYXBoaWNzQ29udGV4dEdMQU5HTEVFR0xVdGlsaXRpZXMuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk3QjhFRDVFRDI2RjBDMTIzMDA4QUMwMjMgLyogQ1ZVdGlsaXRpZXMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ1ZVdGlsaXRpZXMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I4RUQ1RUYyNkYwQzEyMzAwOEFDMDIzIC8qIENWVXRp
bGl0aWVzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQ1ZVdGls
aXRpZXMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCOTA0MTZFMjU1MDExMDkw
MDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQk3QkIzNEExNjI1MzQ1Q0IyMDAwMjlEMDggLyogR3JhcGhpY3NDb250ZXh0
R0xBTkdMRVV0aWxpdGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHcmFw
aGljc0NvbnRleHRHTEFOR0xFVXRpbGl0aWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTdCQjM0QTE2MjUzNDVDQjIwMDAyOUQwOCAvKiBBTkdMRVV0aWxpdGllcy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBTkdMRVV0aWxpdGllcy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk3QkIzNEE0NTI1Mzc3NkM2MDAwMjlEMDggLyogR3JhcGhpY3NDb250
ZXh0R0xJbWFnZUV4dHJhY3Rvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHcmFwaGljc0NvbnRleHRHTElt
YWdlRXh0cmFjdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCQjM0QTQ3MjUz
Nzc2QzcwMDAyOUQwOCAvKiBHcmFwaGljc0NvbnRleHRHTEltYWdlRXh0cmFjdG9yLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0b3IuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QkI2ODBCNzI1QkExQkUzMDAyQjg3MzggLyogR3Jh
cGhpY3NDaGVja3NNYWMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
R3JhcGhpY3NDaGVja3NNYWMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QkI2
ODBCODI1QkExQkU0MDAyQjg3MzggLyogR3JhcGhpY3NDaGVja3NNYWMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gR3JhcGhpY3NDaGVja3NNYWMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJN0JDRDQyREEyNzA1Qzk0OTAwRUIyMTI3IC8qIEFOR0xFVXRpbGl0aWVz
Q29jb2EuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQU5HTEVVdGlsaXRpZXNDb2NvYS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCQ0Q0MkRDMjcwNUM5NDkwMEVCMjEyNyAvKiBB
TkdMRVV0aWxpdGllc0NvY29hLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFOR0xFVXRpbGl0aWVzQ29jb2Eu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0JDRDQyRDgyNzA1OTlFRjAwRUIyMTI3
IC8qIEFOR0xFVXRpbGl0aWVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFOR0xFVXRpbGl0aWVz
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0JFNzI2NUIyNTc2M0I4RDAwRTg1
RDk4IC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJN0MwMTFGM0QyNEZBRDM2MDAwNUJFRjEwIC8qIFNldHRpbmdzLmNw
cC5lcmIgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0OyBwYXRoID0gU2V0dGluZ3MuY3BwLmVyYjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJN0MwMTFGM0UyNEZBRDM2MDAwNUJFRjEwIC8qIEludGVybmFsU2V0dGluZ3NHZW5lcmF0ZWQu
Y3BwLmVyYiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQ7IHBhdGggPSBJbnRlcm5hbFNldHRpbmdzR2VuZXJhdGVkLmNwcC5lcmI7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMjYzNCwxMiArMjI2MzEsMTEgQEAKIAkJCWlzYSA9IFBC
WEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCiAJCQkJMjdFM0M4MDYyNTdGNUU2RTAwQzk4NkFCIC8q
IEFOR0xFSGVhZGVycy5oICovLAorCQkJCTdCQ0Q0MkQ4MjcwNTk5RUYwMEVCMjEyNyAvKiBBTkdM
RVV0aWxpdGllcy5jcHAgKi8sCisJCQkJN0JCMzRBMTYyNTM0NUNCMjAwMDI5RDA4IC8qIEFOR0xF
VXRpbGl0aWVzLmggKi8sCiAJCQkJNkUyN0YyNDMyMjlDOUY4NDAwRjFGNjMyIC8qIEV4dGVuc2lv
bnNHTEFOR0xFLmNwcCAqLywKIAkJCQk2RTI3RjI0NDIyOUM5RjhEMDBGMUY2MzIgLyogRXh0ZW5z
aW9uc0dMQU5HTEUuaCAqLywKIAkJCQk2RTI3RjI0MjIyOThDRTRCMDBGMUY2MzIgLyogR3JhcGhp
Y3NDb250ZXh0R0xBTkdMRS5jcHAgKi8sCi0JCQkJN0I3NzRDNjIyNUZCOTM1NTAwOTEzOTVGIC8q
IEdyYXBoaWNzQ29udGV4dEdMQU5HTEVFR0xVdGlsaXRpZXMuY3BwICovLAotCQkJCTdCNDVBQjU0
MjVGQkE5REQwMEZEMjdGNCAvKiBHcmFwaGljc0NvbnRleHRHTEFOR0xFRUdMVXRpbGl0aWVzLmgg
Ki8sCi0JCQkJN0JCMzRBMTYyNTM0NUNCMjAwMDI5RDA4IC8qIEdyYXBoaWNzQ29udGV4dEdMQU5H
TEVVdGlsaXRpZXMuaCAqLywKIAkJCQk2RTI5MDg2MTIyOURCOTUwMDAwOTg2RTIgLyogVGVtcG9y
YXJ5QU5HTEVTZXR0aW5nLmNwcCAqLywKIAkJCQk2RTI5MDg2MzIyOURCOTcwMDAwOTg2RTIgLyog
VGVtcG9yYXJ5QU5HTEVTZXR0aW5nLmggKi8sCiAJCQkpOwpAQCAtMzI2NTUsNyArMzI2NTEsNiBA
QAogCQkJCUIyQTAxNUE5MEFGNkNENTMwMDZCQ0UwRSAvKiBHcmFwaGljc0NvbnRleHQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTkzNDkwN0U0MTI1QkJCQzgwMDdGMjNBMCAvKiBHcmFwaGljc0NvbnRl
eHRDRy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzEzREU4NzAyM0E5Njk3MzAwOEZDNDdCIC8qIEdy
YXBoaWNzQ29udGV4dEdMLmggaW4gSGVhZGVycyAqLywKLQkJCQk3QjQ1QUI1NTI1RkJBOURFMDBG
RDI3RjQgLyogR3JhcGhpY3NDb250ZXh0R0xBTkdMRUVHTFV0aWxpdGllcy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJN0MzMzBBMDIxREY4RkFDNjAwRDMzOTVDIC8qIEdyYXBoaWNzQ29udGV4dEdMQXR0
cmlidXRlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0IxMDMzOUUyNTQ5NzIxNzAwQzhDMUFDIC8q
IEdyYXBoaWNzQ29udGV4dEdMQ1YuaCBpbiBIZWFkZXJzICovLAogCQkJCTdCMTAzMzlGMjU0OTcy
MUUwMEM4QzFBQyAvKiBHcmFwaGljc0NvbnRleHRHTENWQU5HTEUuaCBpbiBIZWFkZXJzICovLApA
QCAtMzY1MTcsNyArMzY1MTIsNiBAQAogCQkJCTUxQTlEOUU5MTk1QjkzMUYwMDFCMkI1QyAvKiBH
YW1lcGFkTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4Mzc5NjRDRjFGOERCNjlEMDAy
MThFQTAgLyogR2VvbG9jYXRpb25Qb3NpdGlvbkRhdGFJT1MubW0gaW4gU291cmNlcyAqLywKIAkJ
CQk2RTcyRjU0RTIyOURDRDEwMDBCM0UxNTEgLyogR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAg
aW4gU291cmNlcyAqLywKLQkJCQk3QjQ1QUI1MDI1RkI5M0JFMDBGRDI3RjQgLyogR3JhcGhpY3ND
b250ZXh0R0xBTkdMRUVHTFV0aWxpdGllcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QzNFNTEw
QjE4REY4RjM1MDBDMTEyRjcgLyogSFRNTENvbnZlcnRlci5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CUE4RDA2QjNBMEEyNjVEQ0QwMDVFNzIwMyAvKiBIVE1MTmFtZXMuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMUFDOTAwQzMxOTQzQzBGQzAwODYyNUI1IC8qIEhUVFBIZWFkZXJOYW1lcy5jcHAgaW4g
U291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2FuZ2xlL0FOR0xFVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2FuZ2xlL0FOR0xFVXRpbGl0aWVzLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43YzVmOGI1ODc3MzQ5MDAw
MTQ1Mzg5NGEwMTNmMjI3MWM5NzVhY2MzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvQU5HTEVVdGlsaXRpZXMuY3BwCkBAIC0wLDAgKzEs
NDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQU5HTEVVdGlsaXRpZXMuaCIKKworI2lmIEVOQUJM
RShXRUJHTCkgJiYgVVNFKEFOR0xFKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyNpZiAhUExB
VEZPUk0oQ09DT0EpCitib29sIHBsYXRmb3JtSXNBTkdMRUF2YWlsYWJsZSgpCit7CisgICAgcmV0
dXJuIHRydWU7Cit9CisjZW5kaWYKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0FOR0xFVXRpbGl0aWVzLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9BTkdMRVV0aWxpdGllcy5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjY5MmMzM2MyZmRmMmI3ZGQ4Y2MwOTViNGMxMGFmMTY1YWJkMzFhODUKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9BTkdMRVV0aWxp
dGllcy5oCkBAIC0wLDAgKzEsMjQ3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCR0wpICYmIFVTRShB
TkdMRSkKKworI2luY2x1ZGUgIkFOR0xFSGVhZGVycy5oIgorI2luY2x1ZGUgIkdyYXBoaWNzVHlw
ZXNHTC5oIgorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK2NsYXNzIFNjb3BlZFJlc3RvcmVUZXh0dXJlQmluZGluZyB7CisgICAgV1RGX01BS0Vf
Tk9OQ09QWUFCTEUoU2NvcGVkUmVzdG9yZVRleHR1cmVCaW5kaW5nKTsKK3B1YmxpYzoKKyAgICBT
Y29wZWRSZXN0b3JlVGV4dHVyZUJpbmRpbmcoR0xlbnVtIGJpbmRpbmdQb2ludFF1ZXJ5LCBHTGVu
dW0gYmluZGluZ1BvaW50LCBib29sIGNvbmRpdGlvbiA9IHRydWUpCisgICAgeworICAgICAgICBB
U1NFUlQoYmluZGluZ1BvaW50ICE9IHN0YXRpY19jYXN0PEdMZW51bT4oMHUpKTsKKyAgICAgICAg
aWYgKGNvbmRpdGlvbikgeworICAgICAgICAgICAgbV9iaW5kaW5nUG9pbnQgPSBiaW5kaW5nUG9p
bnQ7CisgICAgICAgICAgICBnbDo6R2V0SW50ZWdlcnYoYmluZGluZ1BvaW50UXVlcnksIHJlaW50
ZXJwcmV0X2Nhc3Q8R0xpbnQqPigmbV9iaW5kaW5nVmFsdWUpKTsKKyAgICAgICAgfQorICAgIH0K
KworICAgIH5TY29wZWRSZXN0b3JlVGV4dHVyZUJpbmRpbmcoKQorICAgIHsKKyAgICAgICAgaWYg
KG1fYmluZGluZ1BvaW50KQorICAgICAgICAgICAgZ2w6OkJpbmRUZXh0dXJlKG1fYmluZGluZ1Bv
aW50LCBtX2JpbmRpbmdWYWx1ZSk7CisgICAgfQorCitwcml2YXRlOgorICAgIEdMZW51bSBtX2Jp
bmRpbmdQb2ludCB7IDAgfTsKKyAgICBHTHVpbnQgbV9iaW5kaW5nVmFsdWUgeyAwdSB9OworfTsK
KworCitjbGFzcyBTY29wZWRCdWZmZXJCaW5kaW5nIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJM
RShTY29wZWRCdWZmZXJCaW5kaW5nKTsKK3B1YmxpYzoKKyAgICBTY29wZWRCdWZmZXJCaW5kaW5n
KEdMZW51bSBiaW5kaW5nUG9pbnQsIEdMdWludCBiaW5kaW5nVmFsdWUsIGJvb2wgY29uZGl0aW9u
ID0gdHJ1ZSkKKyAgICB7CisgICAgICAgIGlmICghY29uZGl0aW9uKQorICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICBnbDo6R2V0SW50ZWdlcnYocXVlcnkoYmluZGluZ1BvaW50KSwgcmVpbnRl
cnByZXRfY2FzdDxHTGludCo+KCZtX2JpbmRpbmdWYWx1ZSkpOworICAgICAgICBpZiAoYmluZGlu
Z1ZhbHVlID09IG1fYmluZGluZ1ZhbHVlKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBt
X2JpbmRpbmdQb2ludCA9IGJpbmRpbmdQb2ludDsKKyAgICAgICAgZ2w6OkJpbmRCdWZmZXIobV9i
aW5kaW5nUG9pbnQsIGJpbmRpbmdWYWx1ZSk7CisgICAgfQorCisgICAgflNjb3BlZEJ1ZmZlckJp
bmRpbmcoKQorICAgIHsKKyAgICAgICAgaWYgKG1fYmluZGluZ1BvaW50KQorICAgICAgICAgICAg
Z2w6OkJpbmRCdWZmZXIobV9iaW5kaW5nUG9pbnQsIG1fYmluZGluZ1ZhbHVlKTsKKyAgICB9CisK
K3ByaXZhdGU6CisgICAgc3RhdGljIGNvbnN0ZXhwciBHTGVudW0gcXVlcnkoR0xlbnVtIGJpbmRp
bmdQb2ludCkKKyAgICB7CisgICAgICAgIGlmIChiaW5kaW5nUG9pbnQgPT0gR0xfUElYRUxfUEFD
S19CVUZGRVIpCisgICAgICAgICAgICByZXR1cm4gR0xfUElYRUxfUEFDS19CVUZGRVJfQklORElO
RzsKKyAgICAgICAgQVNTRVJUKGJpbmRpbmdQb2ludCA9PSBHTF9QSVhFTF9VTlBBQ0tfQlVGRkVS
KTsKKyAgICAgICAgcmV0dXJuIEdMX1BJWEVMX1VOUEFDS19CVUZGRVJfQklORElORzsKKyAgICB9
CisgICAgR0xpbnQgbV9iaW5kaW5nUG9pbnQgeyAwIH07CisgICAgR0x1aW50IG1fYmluZGluZ1Zh
bHVlIHsgMHUgfTsKK307CitjbGFzcyBTY29wZWRSZXN0b3JlUmVhZEZyYW1lYnVmZmVyQmluZGlu
ZyB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU2NvcGVkUmVzdG9yZVJlYWRGcmFtZWJ1ZmZl
ckJpbmRpbmcpOworcHVibGljOgorICAgIFNjb3BlZFJlc3RvcmVSZWFkRnJhbWVidWZmZXJCaW5k
aW5nKGJvb2wgaXNGb3JXZWJHTDIsIEdMdWludCByZXN0b3JlVmFsdWUpCisgICAgICAgIDogbV9m
cmFtZWJ1ZmZlclRhcmdldChpc0ZvcldlYkdMMiA/IEdMX1JFQURfRlJBTUVCVUZGRVIgOiBHTF9G
UkFNRUJVRkZFUikKKyAgICAgICAgLCBtX2JpbmRpbmdWYWx1ZShyZXN0b3JlVmFsdWUpCisgICAg
eworICAgIH0KKyAgICBTY29wZWRSZXN0b3JlUmVhZEZyYW1lYnVmZmVyQmluZGluZyhib29sIGlz
Rm9yV2ViR0wyLCBHTHVpbnQgcmVzdG9yZVZhbHVlLCBHTHVpbnQgdmFsdWUpCisgICAgICAgIDog
bV9mcmFtZWJ1ZmZlclRhcmdldChpc0ZvcldlYkdMMiA/IEdMX1JFQURfRlJBTUVCVUZGRVIgOiBH
TF9GUkFNRUJVRkZFUikKKyAgICAgICAgLCBtX2JpbmRpbmdWYWx1ZShyZXN0b3JlVmFsdWUpCisg
ICAgeworICAgICAgICBiaW5kRnJhbWVidWZmZXIodmFsdWUpOworICAgIH0KKyAgICB2b2lkIG1h
cmtCaW5kaW5nQ2hhbmdlZCgpCisgICAgeworICAgICAgICBtX2JpbmRpbmdDaGFuZ2VkID0gdHJ1
ZTsKKyAgICB9CisgICAgdm9pZCBiaW5kRnJhbWVidWZmZXIoR0x1aW50IGJpbmRpbmdWYWx1ZSkK
KyAgICB7CisgICAgICAgIGlmICghbV9iaW5kaW5nQ2hhbmdlZCAmJiBtX2JpbmRpbmdWYWx1ZSA9
PSBiaW5kaW5nVmFsdWUpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGdsOjpCaW5kRnJh
bWVidWZmZXIobV9mcmFtZWJ1ZmZlclRhcmdldCwgYmluZGluZ1ZhbHVlKTsKKyAgICAgICAgbV9i
aW5kaW5nQ2hhbmdlZCA9IG1fYmluZGluZ1ZhbHVlICE9IGJpbmRpbmdWYWx1ZTsKKyAgICB9Cisg
ICAgR0x1aW50IGZyYW1lYnVmZmVyVGFyZ2V0KCkgY29uc3QgeyByZXR1cm4gbV9mcmFtZWJ1ZmZl
clRhcmdldDsgfQorICAgIH5TY29wZWRSZXN0b3JlUmVhZEZyYW1lYnVmZmVyQmluZGluZygpCisg
ICAgeworICAgICAgICBpZiAobV9iaW5kaW5nQ2hhbmdlZCkKKyAgICAgICAgICAgIGdsOjpCaW5k
RnJhbWVidWZmZXIobV9mcmFtZWJ1ZmZlclRhcmdldCwgbV9iaW5kaW5nVmFsdWUpOworICAgIH0K
K3ByaXZhdGU6CisgICAgY29uc3QgR0xlbnVtIG1fZnJhbWVidWZmZXJUYXJnZXQ7CisgICAgR0x1
aW50IG1fYmluZGluZ1ZhbHVlIHsgMHUgfTsKKyAgICBib29sIG1fYmluZGluZ0NoYW5nZWQgeyBm
YWxzZSB9OworfTsKKworY2xhc3MgU2NvcGVkUGl4ZWxTdG9yYWdlTW9kZSB7CisgICAgV1RGX01B
S0VfTk9OQ09QWUFCTEUoU2NvcGVkUGl4ZWxTdG9yYWdlTW9kZSk7CitwdWJsaWM6CisgICAgZXhw
bGljaXQgU2NvcGVkUGl4ZWxTdG9yYWdlTW9kZShHTGVudW0gbmFtZSwgYm9vbCBjb25kaXRpb24g
PSB0cnVlKQorICAgICAgICA6IG1fbmFtZShjb25kaXRpb24gPyBuYW1lIDogMCkKKyAgICB7Cisg
ICAgICAgIGlmIChtX25hbWUpCisgICAgICAgICAgICBnbDo6R2V0SW50ZWdlcnYobV9uYW1lLCAm
bV9vcmlnaW5hbFZhbHVlKTsKKyAgICB9CisgICAgU2NvcGVkUGl4ZWxTdG9yYWdlTW9kZShHTGVu
dW0gbmFtZSwgR0xpbnQgdmFsdWUsIGJvb2wgY29uZGl0aW9uID0gdHJ1ZSkKKyAgICAgICAgOiBt
X25hbWUoY29uZGl0aW9uID8gbmFtZSA6IDApCisgICAgeworICAgICAgICBpZiAobV9uYW1lKSB7
CisgICAgICAgICAgICBnbDo6R2V0SW50ZWdlcnYobV9uYW1lLCAmbV9vcmlnaW5hbFZhbHVlKTsK
KyAgICAgICAgICAgIHBpeGVsU3RvcmUodmFsdWUpOworICAgICAgICB9CisgICAgfQorICAgIH5T
Y29wZWRQaXhlbFN0b3JhZ2VNb2RlKCkKKyAgICB7CisgICAgICAgIGlmIChtX25hbWUgJiYgbV92
YWx1ZUNoYW5nZWQpCisgICAgICAgICAgICBnbDo6UGl4ZWxTdG9yZWkobV9uYW1lLCBtX29yaWdp
bmFsVmFsdWUpOworICAgIH0KKyAgICB2b2lkIHBpeGVsU3RvcmUoR0xpbnQgdmFsdWUpCisgICAg
eworICAgICAgICBBU1NFUlQobV9uYW1lKTsKKyAgICAgICAgaWYgKCFtX3ZhbHVlQ2hhbmdlZCAm
JiBtX29yaWdpbmFsVmFsdWUgPT0gdmFsdWUpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IGdsOjpQaXhlbFN0b3JlaShtX25hbWUsIHZhbHVlKTsKKyAgICAgICAgbV92YWx1ZUNoYW5nZWQg
PSBtX29yaWdpbmFsVmFsdWUgIT0gdmFsdWU7CisgICAgfQorICAgIG9wZXJhdG9yIEdMaW50KCkg
Y29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVChtX25hbWUgJiYgIW1fdmFsdWVDaGFuZ2VkKTsK
KyAgICAgICAgcmV0dXJuIG1fb3JpZ2luYWxWYWx1ZTsKKyAgICB9Citwcml2YXRlOgorICAgIGNv
bnN0IEdMZW51bSBtX25hbWU7CisgICAgYm9vbCBtX3ZhbHVlQ2hhbmdlZCB7IGZhbHNlIH07Cisg
ICAgR0xpbnQgbV9vcmlnaW5hbFZhbHVlIHsgMCB9OworfTsKKworY2xhc3MgU2NvcGVkVGV4dHVy
ZSB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU2NvcGVkVGV4dHVyZSk7CitwdWJsaWM6Cisg
ICAgU2NvcGVkVGV4dHVyZSgpCisgICAgeworICAgICAgICBnbDo6R2VuVGV4dHVyZXMoMSwgJm1f
b2JqZWN0KTsKKyAgICB9CisgICAgflNjb3BlZFRleHR1cmUoKQorICAgIHsKKyAgICAgICAgZ2w6
OkRlbGV0ZVRleHR1cmVzKDEsICZtX29iamVjdCk7CisgICAgfQorICAgIG9wZXJhdG9yIEdMdWlu
dCgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9vYmplY3Q7CisgICAgfQorcHJpdmF0
ZToKKyAgICBHTHVpbnQgbV9vYmplY3QgeyAwdSB9OworfTsKKworY2xhc3MgU2NvcGVkRnJhbWVi
dWZmZXIgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFNjb3BlZEZyYW1lYnVmZmVyKTsKK3B1
YmxpYzoKKyAgICBTY29wZWRGcmFtZWJ1ZmZlcigpCisgICAgeworICAgICAgICBnbDo6R2VuRnJh
bWVidWZmZXJzKDEsICZtX29iamVjdCk7CisgICAgfQorICAgIH5TY29wZWRGcmFtZWJ1ZmZlcigp
CisgICAgeworICAgICAgICBnbDo6RGVsZXRlRnJhbWVidWZmZXJzKDEsICZtX29iamVjdCk7Cisg
ICAgfQorICAgIG9wZXJhdG9yIEdMdWludCgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4g
bV9vYmplY3Q7CisgICAgfQorcHJpdmF0ZToKKyAgICBHTHVpbnQgbV9vYmplY3QgeyAwIH07Cit9
OworCitjbGFzcyBTY29wZWRHTEZlbmNlIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTY29w
ZWRHTEZlbmNlKTsKK3B1YmxpYzoKKyAgICBTY29wZWRHTEZlbmNlKCkgPSBkZWZhdWx0OworICAg
IFNjb3BlZEdMRmVuY2UoU2NvcGVkR0xGZW5jZSYmIG90aGVyKQorICAgICAgICA6IG1fb2JqZWN0
KHN0ZDo6ZXhjaGFuZ2Uob3RoZXIubV9vYmplY3QsIHsgfSkpCisgICAgeworICAgIH0KKyAgICB+
U2NvcGVkR0xGZW5jZSgpIHsgcmVzZXQoKTsgfQorICAgIFNjb3BlZEdMRmVuY2UmIG9wZXJhdG9y
PShTY29wZWRHTEZlbmNlJiYgb3RoZXIpCisgICAgeworICAgICAgICBpZiAodGhpcyAhPSAmb3Ro
ZXIpIHsKKyAgICAgICAgICAgIHJlc2V0KCk7CisgICAgICAgICAgICBtX29iamVjdCA9IHN0ZDo6
ZXhjaGFuZ2Uob3RoZXIubV9vYmplY3QsIHsgfSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJu
ICp0aGlzOworICAgIH0KKyAgICB2b2lkIHJlc2V0KCkKKyAgICB7CisgICAgICAgIGlmIChtX29i
amVjdCkgeworICAgICAgICAgICAgZ2w6OkRlbGV0ZVN5bmMobV9vYmplY3QpOworICAgICAgICAg
ICAgbV9vYmplY3QgPSB7IH07CisgICAgICAgIH0KKyAgICB9CisgICAgdm9pZCBhYmFuZG9uKCkg
eyBtX29iamVjdCA9IHsgfTsgfQorICAgIHZvaWQgZmVuY2VTeW5jKCkKKyAgICB7CisgICAgICAg
IHJlc2V0KCk7CisgICAgICAgIG1fb2JqZWN0ID0gZ2w6OkZlbmNlU3luYyhHTF9TWU5DX0dQVV9D
T01NQU5EU19DT01QTEVURSwgMCk7CisgICAgfQorICAgIG9wZXJhdG9yIEdMc3luYygpIGNvbnN0
IHsgcmV0dXJuIG1fb2JqZWN0OyB9CisgICAgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJu
IG1fb2JqZWN0OyB9Citwcml2YXRlOgorICAgIEdMc3luYyBtX29iamVjdCB7IH07Cit9OworCiti
b29sIHBsYXRmb3JtSXNBTkdMRUF2YWlsYWJsZSgpOworCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0
R0xBTkdMRS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFw
aGljc0NvbnRleHRHTEFOR0xFLmNwcAppbmRleCAwMDZiOGEzZWU2MDE1MThiMWI2NTJhZTc3YzU0
OTE5ZTA2NDdkYzVmLi5kMzNjMGNmZmRiOWU5YTU3MTIyYTUwNDVjN2Q0MjQyOGU1Zjc4Mzk5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGlj
c0NvbnRleHRHTEFOR0xFLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcApAQCAtMzAsOCArMzAsOCBAQAogI2lu
Y2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMLmgiCiAKICNpbmNsdWRlICJBTkdMRUhlYWRlcnMuaCIK
KyNpbmNsdWRlICJBTkdMRVV0aWxpdGllcy5oIgogI2luY2x1ZGUgIkV4dGVuc2lvbnNHTEFOR0xF
LmgiCi0jaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0R0xBTkdMRVV0aWxpdGllcy5oIgogI2luY2x1
ZGUgIkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgiCiAjaW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIK
ICNpbmNsdWRlICJJbnRSZWN0LmgiCkBAIC03NSw2ICs3NSw0OSBAQCBzdGF0aWMgdm9pZCB3aXBl
QWxwaGFDaGFubmVsRnJvbVBpeGVscyhpbnQgd2lkdGgsIGludCBoZWlnaHQsIHVuc2lnbmVkIGNo
YXIqIHBpeAogfQogI2VuZGlmCiAKK2Jvb2wgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlbGVh
c2VUaHJlYWRSZXNvdXJjZXMoUmVsZWFzZVRocmVhZFJlc291cmNlQmVoYXZpb3IgcmVsZWFzZUJl
aGF2aW9yKQoreworICAgIHBsYXRmb3JtUmVsZWFzZVRocmVhZFJlc291cmNlcygpOworCisgICAg
aWYgKCFwbGF0Zm9ybUlzQU5HTEVBdmFpbGFibGUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgLy8gVW5zZXQgdGhlIEVHTCBjdXJyZW50IGNvbnRleHQsIHNpbmNlIHRoZSBuZXh0IGFj
Y2VzcyBtaWdodCBiZSBmcm9tIGFub3RoZXIgdGhyZWFkLCBhbmQgdGhlCisgICAgLy8gY29udGV4
dCBjYW5ub3QgYmUgY3VycmVudCBvbiBtdWx0aXBsZSB0aHJlYWRzLgorICAgIGlmIChyZWxlYXNl
QmVoYXZpb3IgPT0gUmVsZWFzZVRocmVhZFJlc291cmNlQmVoYXZpb3I6OlJlbGVhc2VDdXJyZW50
Q29udGV4dCkgeworICAgICAgICBpZiAoRUdMX0dldEN1cnJlbnRDb250ZXh0KCkgPT0gRUdMX05P
X0NPTlRFWFQpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgLy8gQXQgdGhlIHRp
bWUgb2Ygd3JpdGluZywgQU5HTEUgZG9lcyBub3QgZmx1c2ggb24gTWFrZUN1cnJlbnQuIFNpbmNl
IHdlIGFyZQorICAgICAgICAvLyBwb3RlbnRpYWxseSBzd2l0Y2hpbmcgdGhyZWFkcywgd2Ugc2hv
dWxkIGZsdXNoLgorICAgICAgICAvLyBOb3RlOiBIZXJlIHdlIGFzc3VtZSBhbHNvIHRoYXQgQU5H
TEUgaGFzIG9ubHkgb25lIHBsYXRmb3JtIGNvbnRleHQgLS0gb3RoZXJ3aXNlCisgICAgICAgIC8v
IHdlIHdvdWxkIG5lZWQgdG8gZmx1c2ggZWFjaCBFR0wgY29udGV4dCB0aGF0IGhhcyBiZWVuIHVz
ZWQuCisgICAgICAgIGdsOjpGbHVzaCgpOworICAgICAgICBFR0xEaXNwbGF5IGRpc3BsYXkgPSBF
R0xfR2V0RGlzcGxheShFR0xfREVGQVVMVF9ESVNQTEFZKTsKKyAgICAgICAgaWYgKGRpc3BsYXkg
PT0gRUdMX05PX0RJU1BMQVkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgcmV0
dXJuIEVHTF9NYWtlQ3VycmVudChkaXNwbGF5LCBFR0xfTk9fU1VSRkFDRSwgRUdMX05PX1NVUkZB
Q0UsIEVHTF9OT19DT05URVhUKTsKKyAgICB9CisgICAgaWYgKHJlbGVhc2VCZWhhdmlvciA9PSBS
ZWxlYXNlVGhyZWFkUmVzb3VyY2VCZWhhdmlvcjo6VGVybWluYXRlQW5kUmVsZWFzZVRocmVhZFJl
c291cmNlcykgeworICAgICAgICBFR0xEaXNwbGF5IGRpc3BsYXkgPSBFR0xfR2V0RGlzcGxheShF
R0xfREVGQVVMVF9ESVNQTEFZKTsKKyAgICAgICAgaWYgKGRpc3BsYXkgIT0gRUdMX05PX0RJU1BM
QVkpIHsKKyAgICAgICAgICAgIGlmIChFR0xfR2V0Q3VycmVudENvbnRleHQoKSAhPSBFR0xfTk9f
Q09OVEVYVCkgeworICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyAvLyBBbGwg
cmVzb3VyY2VzIG11c3QgaGF2ZSBiZWVuIGRlc3Ryb3llZC4KKyAgICAgICAgICAgICAgICBFR0xf
TWFrZUN1cnJlbnQoZGlzcGxheSwgRUdMX05PX1NVUkZBQ0UsIEVHTF9OT19TVVJGQUNFLCBFR0xf
Tk9fQ09OVEVYVCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBFR0xfVGVybWluYXRlKGRp
c3BsYXkpOworICAgICAgICB9CisgICAgfQorICAgIC8vIENhbGxlZCB3aGVuIHdlIGRvIG5vdCBr
bm93IGlmIHdlIHdpbGwgZXZlciBzZWUgYW5vdGhlciBjYWxsIGZyb20gdGhpcyB0aHJlYWQgYWdh
aW4uCisgICAgLy8gVW5zZXQgdGhlIEVHTCBjdXJyZW50IGNvbnRleHQgYnkgcmVsZWFzaW5nIHdo
b2xlIEVHTCB0aHJlYWQgc3RhdGUuCisgICAgcmV0dXJuIEVHTF9SZWxlYXNlVGhyZWFkKCk7Cit9
CisKKyNpZiAhUExBVEZPUk0oQ09DT0EpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpw
bGF0Zm9ybVJlbGVhc2VUaHJlYWRSZXNvdXJjZXMoKQoreworfQorI2VuZGlmCisKIHN0ZDo6b3B0
aW9uYWw8UGl4ZWxCdWZmZXI+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkUGl4ZWxzRm9y
UGFpbnRSZXN1bHRzKCkKIHsKICAgICBQaXhlbEJ1ZmZlckZvcm1hdCBmb3JtYXQgeyBBbHBoYVBy
ZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpSR0JBOCwgRGVz
dGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEVFR0xVdGlsaXRp
ZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3ND
b250ZXh0R0xBTkdMRUVHTFV0aWxpdGllcy5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IGI1YmY4MzdkMjVlNDNkMDY1OGQ2YjY4NTFkZDQ4YTIxOTg2OTZmN2IuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRUVHTFV0aWxpdGllcy5jcHAK
KysrIC9kZXYvbnVsbApAQCAtMSw5MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDIx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkdyYXBo
aWNzQ29udGV4dEdMQU5HTEVFR0xVdGlsaXRpZXMuaCIKLQotI2luY2x1ZGUgIkFOR0xFSGVhZGVy
cy5oIgotI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+Ci0KLSNpZiBFTkFCTEUoV0VCR0wpICYm
IFVTRShBTkdMRSkKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdGF0aWMgdW5zaWduZWQgZGVm
YXVsdERpc3BsYXlSZWZDb3VudDsKLXN0YXRpYyB2b2lkKiBkZWZhdWx0RGlzcGxheSA9IG51bGxw
dHI7Ci0KLXN0YXRpYyB2b2lkIHJlZkRlZmF1bHREaXNwbGF5KHZvaWQqIGRpc3BsYXkpCi17Ci0g
ICAgQVNTRVJUKGRpc3BsYXkgIT0gbnVsbHB0cik7Ci0gICAgQVNTRVJUKGRlZmF1bHREaXNwbGF5
ID09IGRpc3BsYXkgfHwgKCFkZWZhdWx0RGlzcGxheSAmJiAhZGVmYXVsdERpc3BsYXlSZWZDb3Vu
dCkpOwotICAgIGRlZmF1bHREaXNwbGF5UmVmQ291bnQrKzsKLSAgICBkZWZhdWx0RGlzcGxheSA9
IGRpc3BsYXk7Ci19Ci0KLXN0YXRpYyB2b2lkIHVucmVmRGVmYXVsdERpc3BsYXlJZk5lZWRlZCh2
b2lkKiBkaXNwbGF5KQotewotICAgIGlmICghZGlzcGxheSkKLSAgICAgICAgcmV0dXJuOwotICAg
IEFTU0VSVChkZWZhdWx0RGlzcGxheSA9PSBkaXNwbGF5KTsKLSAgICBBU1NFUlQoZGVmYXVsdERp
c3BsYXlSZWZDb3VudCk7Ci0gICAgZGVmYXVsdERpc3BsYXlSZWZDb3VudC0tOwotfQotCi1TY29w
ZWRFR0xEZWZhdWx0RGlzcGxheSYgU2NvcGVkRUdMRGVmYXVsdERpc3BsYXk6Om9wZXJhdG9yPShT
Y29wZWRFR0xEZWZhdWx0RGlzcGxheSYmIG90aGVyKQotewotICAgIGlmICh0aGlzICE9ICZvdGhl
cikgewotICAgICAgICB1bnJlZkRlZmF1bHREaXNwbGF5SWZOZWVkZWQobV9kaXNwbGF5KTsKLSAg
ICAgICAgbV9kaXNwbGF5ID0gc3RkOjpleGNoYW5nZShvdGhlci5tX2Rpc3BsYXksIG51bGxwdHIp
OwotICAgIH0KLSAgICByZXR1cm4gKnRoaXM7Ci19Ci0KLVNjb3BlZEVHTERlZmF1bHREaXNwbGF5
OjpTY29wZWRFR0xEZWZhdWx0RGlzcGxheSh2b2lkKiBkaXNwbGF5KQotICAgIDogbV9kaXNwbGF5
KGRpc3BsYXkpCi17Ci0gICAgcmVmRGVmYXVsdERpc3BsYXkobV9kaXNwbGF5KTsKLX0KLQotU2Nv
cGVkRUdMRGVmYXVsdERpc3BsYXk6On5TY29wZWRFR0xEZWZhdWx0RGlzcGxheSgpCi17Ci0gICAg
dW5yZWZEZWZhdWx0RGlzcGxheUlmTmVlZGVkKG1fZGlzcGxheSk7Ci19Ci0KLXZvaWQgU2NvcGVk
RUdMRGVmYXVsdERpc3BsYXk6OnJlbGVhc2VBbGxSZXNvdXJjZXNJZlVudXNlZCgpCi17Ci0gICAg
aWYgKGRlZmF1bHREaXNwbGF5UmVmQ291bnQpCi0gICAgICAgIHJldHVybjsKLSAgICBpZiAoZGVm
YXVsdERpc3BsYXkgPT0gbnVsbHB0cikKLSAgICAgICAgcmV0dXJuOwotICAgIGJvb2wgcmVzdWx0
ID0gRUdMX1Rlcm1pbmF0ZShkZWZhdWx0RGlzcGxheSk7Ci0gICAgQVNTRVJUX1VOVVNFRChyZXN1
bHQsIHJlc3VsdCk7Ci0gICAgcmVzdWx0ID0gRUdMX1JlbGVhc2VUaHJlYWQoKTsKLSAgICBBU1NF
UlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKLSAgICBkZWZhdWx0RGlzcGxheSA9IG51bGxwdHI7
Ci19Ci0KLX0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFRUdMVXRpbGl0aWVzLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xF
RUdMVXRpbGl0aWVzLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk0NDIwNTIwYmRl
OGJhMmVlODVkNjg4MmY2NThkNDU4MmRiY2VlYTAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5n
bGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRUVHTFV0aWxpdGllcy5oCisrKyAvZGV2L251bGwKQEAg
LTEsNjIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQkdMKSAmJiBVU0UoQU5HTEUpCi0KLSNp
bmNsdWRlIDxhbGdvcml0aG0+Ci0jaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+Ci0KLS8vIEN1
cnJlbnRseSB0aGlzIG5vdCB1c2luZyBBTkdMRSBoZWFkZXJzIHNpbmNlIHRoaXMgaXMgZXhwb3J0
ZWQgaGVhZGVyIGFuZCB3ZSBkbyBub3QgZXhwb3J0IEFOR0xFIGhlYWRlcnMuCi0KLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLQotY2xhc3MgU2NvcGVkRUdMRGVmYXVsdERpc3BsYXkgewotICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKFNjb3BlZEVHTERlZmF1bHREaXNwbGF5KTsKLXB1YmxpYzoKLSAgICBz
dGF0aWMgU2NvcGVkRUdMRGVmYXVsdERpc3BsYXkgYWRvcHRJbml0aWFsaXplZERpc3BsYXkodm9p
ZCogZGlzcGxheSkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChkaXNwbGF5ICE9IG51bGxwdHIpOwot
ICAgICAgICByZXR1cm4gU2NvcGVkRUdMRGVmYXVsdERpc3BsYXkoZGlzcGxheSk7Ci0gICAgfQot
ICAgIFNjb3BlZEVHTERlZmF1bHREaXNwbGF5KCkgPSBkZWZhdWx0OwotICAgIFNjb3BlZEVHTERl
ZmF1bHREaXNwbGF5KFNjb3BlZEVHTERlZmF1bHREaXNwbGF5JiYgb3RoZXIpCi0gICAgICAgIDog
bV9kaXNwbGF5KHN0ZDo6ZXhjaGFuZ2Uob3RoZXIubV9kaXNwbGF5LCBudWxscHRyKSkKLSAgICB7
Ci0gICAgfQotICAgIH5TY29wZWRFR0xEZWZhdWx0RGlzcGxheSgpOwotICAgIFNjb3BlZEVHTERl
ZmF1bHREaXNwbGF5JiBvcGVyYXRvcj0oU2NvcGVkRUdMRGVmYXVsdERpc3BsYXkmJik7Ci0gICAg
b3BlcmF0b3Igdm9pZCooKSBjb25zdCB7IHJldHVybiBtX2Rpc3BsYXk7IH0KLSAgICBvcGVyYXRv
ciBib29sKCkgY29uc3QgeyByZXR1cm4gbV9kaXNwbGF5ICE9IG51bGxwdHI7IH0KLSAgICBzdGF0
aWMgdm9pZCByZWxlYXNlQWxsUmVzb3VyY2VzSWZVbnVzZWQoKTsKLXByaXZhdGU6Ci0gICAgU2Nv
cGVkRUdMRGVmYXVsdERpc3BsYXkodm9pZCopOwotICAgIHZvaWQqIG1fZGlzcGxheSB7IG51bGxw
dHIgfTsKLX07Ci0KLX0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFVXRpbGl0aWVzLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFO
R0xFVXRpbGl0aWVzLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRjNzlmMWUyNDIz
ZjUyMTNiMDMwMWM4YzgwYTU0ZjZiY2M0NDllOTIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5n
bGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRVV0aWxpdGllcy5oCisrKyAvZGV2L251bGwKQEAgLTEs
MjQ1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJHTCkgJiYgVVNFKEFOR0xFKQotCi0jaW5j
bHVkZSAiQU5HTEVIZWFkZXJzLmgiCi0jaW5jbHVkZSAiR3JhcGhpY3NUeXBlc0dMLmgiCi0jaW5j
bHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3Mg
U2NvcGVkUmVzdG9yZVRleHR1cmVCaW5kaW5nIHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShT
Y29wZWRSZXN0b3JlVGV4dHVyZUJpbmRpbmcpOwotcHVibGljOgotICAgIFNjb3BlZFJlc3RvcmVU
ZXh0dXJlQmluZGluZyhHTGVudW0gYmluZGluZ1BvaW50UXVlcnksIEdMZW51bSBiaW5kaW5nUG9p
bnQsIGJvb2wgY29uZGl0aW9uID0gdHJ1ZSkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChiaW5kaW5n
UG9pbnQgIT0gc3RhdGljX2Nhc3Q8R0xlbnVtPigwdSkpOwotICAgICAgICBpZiAoY29uZGl0aW9u
KSB7Ci0gICAgICAgICAgICBtX2JpbmRpbmdQb2ludCA9IGJpbmRpbmdQb2ludDsKLSAgICAgICAg
ICAgIGdsOjpHZXRJbnRlZ2VydihiaW5kaW5nUG9pbnRRdWVyeSwgcmVpbnRlcnByZXRfY2FzdDxH
TGludCo+KCZtX2JpbmRpbmdWYWx1ZSkpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgflNjb3Bl
ZFJlc3RvcmVUZXh0dXJlQmluZGluZygpCi0gICAgewotICAgICAgICBpZiAobV9iaW5kaW5nUG9p
bnQpCi0gICAgICAgICAgICBnbDo6QmluZFRleHR1cmUobV9iaW5kaW5nUG9pbnQsIG1fYmluZGlu
Z1ZhbHVlKTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgR0xlbnVtIG1fYmluZGluZ1BvaW50IHsg
MCB9OwotICAgIEdMdWludCBtX2JpbmRpbmdWYWx1ZSB7IDB1IH07Ci19OwotCi0KLWNsYXNzIFNj
b3BlZEJ1ZmZlckJpbmRpbmcgewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFNjb3BlZEJ1ZmZl
ckJpbmRpbmcpOwotcHVibGljOgotICAgIFNjb3BlZEJ1ZmZlckJpbmRpbmcoR0xlbnVtIGJpbmRp
bmdQb2ludCwgR0x1aW50IGJpbmRpbmdWYWx1ZSwgYm9vbCBjb25kaXRpb24gPSB0cnVlKQotICAg
IHsKLSAgICAgICAgaWYgKCFjb25kaXRpb24pCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
IGdsOjpHZXRJbnRlZ2VydihxdWVyeShiaW5kaW5nUG9pbnQpLCByZWludGVycHJldF9jYXN0PEdM
aW50Kj4oJm1fYmluZGluZ1ZhbHVlKSk7Ci0gICAgICAgIGlmIChiaW5kaW5nVmFsdWUgPT0gbV9i
aW5kaW5nVmFsdWUpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIG1fYmluZGluZ1BvaW50
ID0gYmluZGluZ1BvaW50OwotICAgICAgICBnbDo6QmluZEJ1ZmZlcihtX2JpbmRpbmdQb2ludCwg
YmluZGluZ1ZhbHVlKTsKLSAgICB9Ci0KLSAgICB+U2NvcGVkQnVmZmVyQmluZGluZygpCi0gICAg
ewotICAgICAgICBpZiAobV9iaW5kaW5nUG9pbnQpCi0gICAgICAgICAgICBnbDo6QmluZEJ1ZmZl
cihtX2JpbmRpbmdQb2ludCwgbV9iaW5kaW5nVmFsdWUpOwotICAgIH0KLQotcHJpdmF0ZToKLSAg
ICBzdGF0aWMgY29uc3RleHByIEdMZW51bSBxdWVyeShHTGVudW0gYmluZGluZ1BvaW50KQotICAg
IHsKLSAgICAgICAgaWYgKGJpbmRpbmdQb2ludCA9PSBHTF9QSVhFTF9QQUNLX0JVRkZFUikKLSAg
ICAgICAgICAgIHJldHVybiBHTF9QSVhFTF9QQUNLX0JVRkZFUl9CSU5ESU5HOwotICAgICAgICBB
U1NFUlQoYmluZGluZ1BvaW50ID09IEdMX1BJWEVMX1VOUEFDS19CVUZGRVIpOwotICAgICAgICBy
ZXR1cm4gR0xfUElYRUxfVU5QQUNLX0JVRkZFUl9CSU5ESU5HOwotICAgIH0KLSAgICBHTGludCBt
X2JpbmRpbmdQb2ludCB7IDAgfTsKLSAgICBHTHVpbnQgbV9iaW5kaW5nVmFsdWUgeyAwdSB9Owot
fTsKLWNsYXNzIFNjb3BlZFJlc3RvcmVSZWFkRnJhbWVidWZmZXJCaW5kaW5nIHsKLSAgICBXVEZf
TUFLRV9OT05DT1BZQUJMRShTY29wZWRSZXN0b3JlUmVhZEZyYW1lYnVmZmVyQmluZGluZyk7Ci1w
dWJsaWM6Ci0gICAgU2NvcGVkUmVzdG9yZVJlYWRGcmFtZWJ1ZmZlckJpbmRpbmcoYm9vbCBpc0Zv
cldlYkdMMiwgR0x1aW50IHJlc3RvcmVWYWx1ZSkKLSAgICAgICAgOiBtX2ZyYW1lYnVmZmVyVGFy
Z2V0KGlzRm9yV2ViR0wyID8gR0xfUkVBRF9GUkFNRUJVRkZFUiA6IEdMX0ZSQU1FQlVGRkVSKQot
ICAgICAgICAsIG1fYmluZGluZ1ZhbHVlKHJlc3RvcmVWYWx1ZSkKLSAgICB7Ci0gICAgfQotICAg
IFNjb3BlZFJlc3RvcmVSZWFkRnJhbWVidWZmZXJCaW5kaW5nKGJvb2wgaXNGb3JXZWJHTDIsIEdM
dWludCByZXN0b3JlVmFsdWUsIEdMdWludCB2YWx1ZSkKLSAgICAgICAgOiBtX2ZyYW1lYnVmZmVy
VGFyZ2V0KGlzRm9yV2ViR0wyID8gR0xfUkVBRF9GUkFNRUJVRkZFUiA6IEdMX0ZSQU1FQlVGRkVS
KQotICAgICAgICAsIG1fYmluZGluZ1ZhbHVlKHJlc3RvcmVWYWx1ZSkKLSAgICB7Ci0gICAgICAg
IGJpbmRGcmFtZWJ1ZmZlcih2YWx1ZSk7Ci0gICAgfQotICAgIHZvaWQgbWFya0JpbmRpbmdDaGFu
Z2VkKCkKLSAgICB7Ci0gICAgICAgIG1fYmluZGluZ0NoYW5nZWQgPSB0cnVlOwotICAgIH0KLSAg
ICB2b2lkIGJpbmRGcmFtZWJ1ZmZlcihHTHVpbnQgYmluZGluZ1ZhbHVlKQotICAgIHsKLSAgICAg
ICAgaWYgKCFtX2JpbmRpbmdDaGFuZ2VkICYmIG1fYmluZGluZ1ZhbHVlID09IGJpbmRpbmdWYWx1
ZSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgZ2w6OkJpbmRGcmFtZWJ1ZmZlcihtX2Zy
YW1lYnVmZmVyVGFyZ2V0LCBiaW5kaW5nVmFsdWUpOwotICAgICAgICBtX2JpbmRpbmdDaGFuZ2Vk
ID0gbV9iaW5kaW5nVmFsdWUgIT0gYmluZGluZ1ZhbHVlOwotICAgIH0KLSAgICBHTHVpbnQgZnJh
bWVidWZmZXJUYXJnZXQoKSBjb25zdCB7IHJldHVybiBtX2ZyYW1lYnVmZmVyVGFyZ2V0OyB9Ci0g
ICAgflNjb3BlZFJlc3RvcmVSZWFkRnJhbWVidWZmZXJCaW5kaW5nKCkKLSAgICB7Ci0gICAgICAg
IGlmIChtX2JpbmRpbmdDaGFuZ2VkKQotICAgICAgICAgICAgZ2w6OkJpbmRGcmFtZWJ1ZmZlciht
X2ZyYW1lYnVmZmVyVGFyZ2V0LCBtX2JpbmRpbmdWYWx1ZSk7Ci0gICAgfQotcHJpdmF0ZToKLSAg
ICBjb25zdCBHTGVudW0gbV9mcmFtZWJ1ZmZlclRhcmdldDsKLSAgICBHTHVpbnQgbV9iaW5kaW5n
VmFsdWUgeyAwdSB9OwotICAgIGJvb2wgbV9iaW5kaW5nQ2hhbmdlZCB7IGZhbHNlIH07Ci19Owot
Ci1jbGFzcyBTY29wZWRQaXhlbFN0b3JhZ2VNb2RlIHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJM
RShTY29wZWRQaXhlbFN0b3JhZ2VNb2RlKTsKLXB1YmxpYzoKLSAgICBleHBsaWNpdCBTY29wZWRQ
aXhlbFN0b3JhZ2VNb2RlKEdMZW51bSBuYW1lLCBib29sIGNvbmRpdGlvbiA9IHRydWUpCi0gICAg
ICAgIDogbV9uYW1lKGNvbmRpdGlvbiA/IG5hbWUgOiAwKQotICAgIHsKLSAgICAgICAgaWYgKG1f
bmFtZSkKLSAgICAgICAgICAgIGdsOjpHZXRJbnRlZ2VydihtX25hbWUsICZtX29yaWdpbmFsVmFs
dWUpOwotICAgIH0KLSAgICBTY29wZWRQaXhlbFN0b3JhZ2VNb2RlKEdMZW51bSBuYW1lLCBHTGlu
dCB2YWx1ZSwgYm9vbCBjb25kaXRpb24gPSB0cnVlKQotICAgICAgICA6IG1fbmFtZShjb25kaXRp
b24gPyBuYW1lIDogMCkKLSAgICB7Ci0gICAgICAgIGlmIChtX25hbWUpIHsKLSAgICAgICAgICAg
IGdsOjpHZXRJbnRlZ2VydihtX25hbWUsICZtX29yaWdpbmFsVmFsdWUpOwotICAgICAgICAgICAg
cGl4ZWxTdG9yZSh2YWx1ZSk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgflNjb3BlZFBpeGVsU3Rv
cmFnZU1vZGUoKQotICAgIHsKLSAgICAgICAgaWYgKG1fbmFtZSAmJiBtX3ZhbHVlQ2hhbmdlZCkK
LSAgICAgICAgICAgIGdsOjpQaXhlbFN0b3JlaShtX25hbWUsIG1fb3JpZ2luYWxWYWx1ZSk7Ci0g
ICAgfQotICAgIHZvaWQgcGl4ZWxTdG9yZShHTGludCB2YWx1ZSkKLSAgICB7Ci0gICAgICAgIEFT
U0VSVChtX25hbWUpOwotICAgICAgICBpZiAoIW1fdmFsdWVDaGFuZ2VkICYmIG1fb3JpZ2luYWxW
YWx1ZSA9PSB2YWx1ZSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgZ2w6OlBpeGVsU3Rv
cmVpKG1fbmFtZSwgdmFsdWUpOwotICAgICAgICBtX3ZhbHVlQ2hhbmdlZCA9IG1fb3JpZ2luYWxW
YWx1ZSAhPSB2YWx1ZTsKLSAgICB9Ci0gICAgb3BlcmF0b3IgR0xpbnQoKSBjb25zdAotICAgIHsK
LSAgICAgICAgQVNTRVJUKG1fbmFtZSAmJiAhbV92YWx1ZUNoYW5nZWQpOwotICAgICAgICByZXR1
cm4gbV9vcmlnaW5hbFZhbHVlOwotICAgIH0KLXByaXZhdGU6Ci0gICAgY29uc3QgR0xlbnVtIG1f
bmFtZTsKLSAgICBib29sIG1fdmFsdWVDaGFuZ2VkIHsgZmFsc2UgfTsKLSAgICBHTGludCBtX29y
aWdpbmFsVmFsdWUgeyAwIH07Ci19OwotCi1jbGFzcyBTY29wZWRUZXh0dXJlIHsKLSAgICBXVEZf
TUFLRV9OT05DT1BZQUJMRShTY29wZWRUZXh0dXJlKTsKLXB1YmxpYzoKLSAgICBTY29wZWRUZXh0
dXJlKCkKLSAgICB7Ci0gICAgICAgIGdsOjpHZW5UZXh0dXJlcygxLCAmbV9vYmplY3QpOwotICAg
IH0KLSAgICB+U2NvcGVkVGV4dHVyZSgpCi0gICAgewotICAgICAgICBnbDo6RGVsZXRlVGV4dHVy
ZXMoMSwgJm1fb2JqZWN0KTsKLSAgICB9Ci0gICAgb3BlcmF0b3IgR0x1aW50KCkgY29uc3QKLSAg
ICB7Ci0gICAgICAgIHJldHVybiBtX29iamVjdDsKLSAgICB9Ci1wcml2YXRlOgotICAgIEdMdWlu
dCBtX29iamVjdCB7IDB1IH07Ci19OwotCi1jbGFzcyBTY29wZWRGcmFtZWJ1ZmZlciB7Ci0gICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoU2NvcGVkRnJhbWVidWZmZXIpOwotcHVibGljOgotICAgIFNj
b3BlZEZyYW1lYnVmZmVyKCkKLSAgICB7Ci0gICAgICAgIGdsOjpHZW5GcmFtZWJ1ZmZlcnMoMSwg
Jm1fb2JqZWN0KTsKLSAgICB9Ci0gICAgflNjb3BlZEZyYW1lYnVmZmVyKCkKLSAgICB7Ci0gICAg
ICAgIGdsOjpEZWxldGVGcmFtZWJ1ZmZlcnMoMSwgJm1fb2JqZWN0KTsKLSAgICB9Ci0gICAgb3Bl
cmF0b3IgR0x1aW50KCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX29iamVjdDsKLSAg
ICB9Ci1wcml2YXRlOgotICAgIEdMdWludCBtX29iamVjdCB7IDAgfTsKLX07Ci0KLWNsYXNzIFNj
b3BlZEdMRmVuY2UgewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFNjb3BlZEdMRmVuY2UpOwot
cHVibGljOgotICAgIFNjb3BlZEdMRmVuY2UoKSA9IGRlZmF1bHQ7Ci0gICAgU2NvcGVkR0xGZW5j
ZShTY29wZWRHTEZlbmNlJiYgb3RoZXIpCi0gICAgICAgIDogbV9vYmplY3Qoc3RkOjpleGNoYW5n
ZShvdGhlci5tX29iamVjdCwgeyB9KSkKLSAgICB7Ci0gICAgfQotICAgIH5TY29wZWRHTEZlbmNl
KCkgeyByZXNldCgpOyB9Ci0gICAgU2NvcGVkR0xGZW5jZSYgb3BlcmF0b3I9KFNjb3BlZEdMRmVu
Y2UmJiBvdGhlcikKLSAgICB7Ci0gICAgICAgIGlmICh0aGlzICE9ICZvdGhlcikgewotICAgICAg
ICAgICAgcmVzZXQoKTsKLSAgICAgICAgICAgIG1fb2JqZWN0ID0gc3RkOjpleGNoYW5nZShvdGhl
ci5tX29iamVjdCwgeyB9KTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAg
fQotICAgIHZvaWQgcmVzZXQoKQotICAgIHsKLSAgICAgICAgaWYgKG1fb2JqZWN0KSB7Ci0gICAg
ICAgICAgICBnbDo6RGVsZXRlU3luYyhtX29iamVjdCk7Ci0gICAgICAgICAgICBtX29iamVjdCA9
IHsgfTsKLSAgICAgICAgfQotICAgIH0KLSAgICB2b2lkIGFiYW5kb24oKSB7IG1fb2JqZWN0ID0g
eyB9OyB9Ci0gICAgdm9pZCBmZW5jZVN5bmMoKQotICAgIHsKLSAgICAgICAgcmVzZXQoKTsKLSAg
ICAgICAgbV9vYmplY3QgPSBnbDo6RmVuY2VTeW5jKEdMX1NZTkNfR1BVX0NPTU1BTkRTX0NPTVBM
RVRFLCAwKTsKLSAgICB9Ci0gICAgb3BlcmF0b3IgR0xzeW5jKCkgY29uc3QgeyByZXR1cm4gbV9v
YmplY3Q7IH0KLSAgICBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gbV9vYmplY3Q7IH0K
LXByaXZhdGU6Ci0gICAgR0xzeW5jIG1fb2JqZWN0IHsgfTsKLX07Ci0KLX0KLQotI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGlj
c0NvbnRleHRHTE9wZW5HTENvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbQppbmRleCBmOTBmZjFmNmFk
M2JjMTU4MGRhYmNlMjc0ZDUwN2JkMDliMzJhZTFhLi42NjdmMDEzNGIwMzNkYjU4MWQyNTZhMGYz
ODllNTQwN2NjNDhiNWVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29j
b2EubW0KQEAgLTI4LDEwICsyOCwxMCBAQAogI2lmIEVOQUJMRShXRUJHTCkKICNpbXBvcnQgIkdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMLmgiCiAKKyNpbXBvcnQgIkFOR0xFVXRpbGl0aWVzLmgiCiAj
aW1wb3J0ICJBTkdMRVV0aWxpdGllc0NvY29hLmgiCiAjaW1wb3J0ICJDVlV0aWxpdGllcy5oIgog
I2ltcG9ydCAiRXh0ZW5zaW9uc0dMQU5HTEUuaCIKLSNpbXBvcnQgIkdyYXBoaWNzQ29udGV4dEdM
QU5HTEVVdGlsaXRpZXMuaCIKICNpbXBvcnQgIkdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dh
cENoYWluLmgiCiAjaW1wb3J0ICJHcmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFnZXIuaCIKICNp
bXBvcnQgIkxvZ2dpbmcuaCIKQEAgLTYwLDggKzYwLDEwIEBAIFdURl9XRUFLX0xJTktfRk9SQ0Vf
SU1QT1JUKEVHTF9Jbml0aWFsaXplKTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMg
Ym9vbCBpc0FOR0xFQXZhaWxhYmxlKCkKK2Jvb2wgcGxhdGZvcm1Jc0FOR0xFQXZhaWxhYmxlKCkK
IHsKKyAgICAvLyBUaGUgQU5HTEUgaXMgd2VhayBsaW5rZWQgaW4gZnVsbCwgYW5kIHRoZSBFR0xf
SW5pdGlhbGl6ZSBpcyBleHBsaWNpdGx5IHdlYWsgbGlua2VkIGFib3ZlCisgICAgLy8gc28gdGhh
dCB3ZSBjYW4gZGV0ZWN0IHRoZSBjYXNlIHdoZXJlIEFOR0xFIGlzIG5vdCBwcmVzZW50LgogICAg
IHJldHVybiAhIUVHTF9Jbml0aWFsaXplOwogfQogCkBAIC0xMTksMTEgKzEyMSwxMSBAQCBzdGF0
aWMgYm9vbCBwbGF0Zm9ybVN1cHBvcnRzTWV0YWwoYm9vbCBpc1dlYkdMMikKICAgICByZXR1cm4g
ZmFsc2U7CiB9CiAKLXN0YXRpYyBTY29wZWRFR0xEZWZhdWx0RGlzcGxheSBpbml0aWFsaXplRUdM
RGlzcGxheShjb25zdCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJzKQorc3RhdGlj
IEVHTERpc3BsYXkgaW5pdGlhbGl6ZUVHTERpc3BsYXkoY29uc3QgR3JhcGhpY3NDb250ZXh0R0xB
dHRyaWJ1dGVzJiBhdHRycykKIHsKLSAgICBpZiAoIWlzQU5HTEVBdmFpbGFibGUoKSkgeworICAg
IGlmICghcGxhdGZvcm1Jc0FOR0xFQXZhaWxhYmxlKCkpIHsKICAgICAgICAgV1RGTG9nQWx3YXlz
KCJGYWlsZWQgdG8gbG9hZCBBTkdMRSBzaGFyZWQgbGlicmFyeS4iKTsKLSAgICAgICAgcmV0dXJu
IHsgfTsKKyAgICAgICAgcmV0dXJuIEVHTF9OT19ESVNQTEFZOwogICAgIH0KIAogICAgIEVHTGlu
dCBtYWpvclZlcnNpb24gPSAwOwpAQCAtMTY2LDcgKzE2OCw3IEBAIHN0YXRpYyBTY29wZWRFR0xE
ZWZhdWx0RGlzcGxheSBpbml0aWFsaXplRUdMRGlzcGxheShjb25zdCBHcmFwaGljc0NvbnRleHRH
TEF0dHJpCiAKICAgICBpZiAoRUdMX0luaXRpYWxpemUoZGlzcGxheSwgJm1ham9yVmVyc2lvbiwg
Jm1pbm9yVmVyc2lvbikgPT0gRUdMX0ZBTFNFKSB7CiAgICAgICAgIExPRyhXZWJHTCwgIkVHTERp
c3BsYXkgSW5pdGlhbGl6YXRpb24gZmFpbGVkLiIpOwotICAgICAgICByZXR1cm4geyB9OworICAg
ICAgICByZXR1cm4gRUdMX05PX0RJU1BMQVk7CiAgICAgfQogICAgIExPRyhXZWJHTCwgIkFOR0xF
IGluaXRpYWxpc2VkIE1ham9yOiAlZCBNaW5vcjogJWQiLCBtYWpvclZlcnNpb24sIG1pbm9yVmVy
c2lvbik7CiAgICAgaWYgKHNob3VsZEluaXRpYWxpemVXaXRoVm9sYXRpbGVDb250ZXh0U3VwcG9y
dCkgewpAQCAtMTc1LDcgKzE3Nyw3IEBAIHN0YXRpYyBTY29wZWRFR0xEZWZhdWx0RGlzcGxheSBp
bml0aWFsaXplRUdMRGlzcGxheShjb25zdCBHcmFwaGljc0NvbnRleHRHTEF0dHJpCiAgICAgICAg
IEFTU0VSVChjaGVja1ZvbGF0aWxlQ29udGV4dFN1cHBvcnRJZkRldmljZUV4aXN0cyhkaXNwbGF5
LCAiRUdMX0FOR0xFX3BsYXRmb3JtX2RldmljZV9jb250ZXh0X3ZvbGF0aWxlX2VhZ2wiLCAiRUdM
X0FOR0xFX2RldmljZV9lYWdsIiwgRUdMX0VBR0xfQ09OVEVYVF9BTkdMRSkpOwogICAgICAgICBB
U1NFUlQoY2hlY2tWb2xhdGlsZUNvbnRleHRTdXBwb3J0SWZEZXZpY2VFeGlzdHMoZGlzcGxheSwg
IkVHTF9BTkdMRV9wbGF0Zm9ybV9kZXZpY2VfY29udGV4dF92b2xhdGlsZV9jZ2wiLCAiRUdMX0FO
R0xFX2RldmljZV9jZ2wiLCBFR0xfQ0dMX0NPTlRFWFRfQU5HTEUpKTsKICAgICB9Ci0gICAgcmV0
dXJuIFNjb3BlZEVHTERlZmF1bHREaXNwbGF5OjphZG9wdEluaXRpYWxpemVkRGlzcGxheShkaXNw
bGF5KTsKKyAgICByZXR1cm4gZGlzcGxheTsKIH0KIAogc3RhdGljIGNvbnN0IHVuc2lnbmVkIHN0
YXR1c0NoZWNrVGhyZXNob2xkID0gNTsKQEAgLTUwOCw0NSArNTEwLDYgQEAgYm9vbCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6bWFrZUNvbnRleHRDdXJyZW50KCkKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi1ib29sIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpyZWxlYXNlQ3VycmVudENvbnRleHQoUmVsZWFzZUJlaGF2aW9yIHJlbGVhc2VCZWhhdmlv
cikKLXsKLSAgICBpZiAoIWlzQU5HTEVBdmFpbGFibGUoKSkKLSAgICAgICAgcmV0dXJuIHRydWU7
Ci0KLSAgICAvLyBBdCB0aGUgbW9tZW50IHRoaXMgZnVuY3Rpb24gaXMgcmVsZXZhbnQgb25seSB3
aGVuIHdlYiB0aHJlYWQgbG9jayBvd25zIHRoZSBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCBjdXJy
ZW50IGNvbnRleHQuCi0gICAgQVNTRVJUKCFpc0N1cnJlbnRDb250ZXh0UHJlZGljdGFibGUoKSk7
Ci0KLSAgICBpZiAoIUVHTF9CaW5kQVBJKEVHTF9PUEVOR0xfRVNfQVBJKSkKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIGlmIChFR0xfR2V0Q3VycmVudENvbnRleHQoKSA9PSBFR0xfTk9fQ09O
VEVYVCkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICAvLyBBdCB0aGUgdGltZSBvZiB3cml0
aW5nLCBBTkdMRSBkb2VzIG5vdCBmbHVzaCBvbiBNYWtlQ3VycmVudC4gU2luY2Ugd2UgYXJlCi0g
ICAgLy8gcG90ZW50aWFsbHkgc3dpdGNoaW5nIHRocmVhZHMsIHdlIHNob3VsZCBmbHVzaC4KLSAg
ICAvLyBOb3RlOiBIZXJlIHdlIGFzc3VtZSBhbHNvIHRoYXQgQU5HTEUgaGFzIG9ubHkgb25lIHBs
YXRmb3JtIGNvbnRleHQgLS0gb3RoZXJ3aXNlCi0gICAgLy8gd2Ugd291bGQgbmVlZCB0byBmbHVz
aCBlYWNoIEVHTCBjb250ZXh0IHRoYXQgaGFzIGJlZW4gdXNlZC4KLSAgICBnbDo6Rmx1c2goKTsK
LQotICAgIC8vIFVuc2V0IHRoZSBFR0wgY3VycmVudCBjb250ZXh0LCBzaW5jZSB0aGUgbmV4dCBh
Y2Nlc3MgbWlnaHQgYmUgZnJvbSBhbm90aGVyIHRocmVhZCwgYW5kIHRoZQotICAgIC8vIGNvbnRl
eHQgY2Fubm90IGJlIGN1cnJlbnQgb24gbXVsdGlwbGUgdGhyZWFkcy4KLQotICAgIGlmIChyZWxl
YXNlQmVoYXZpb3IgPT0gUmVsZWFzZUJlaGF2aW9yOjpSZWxlYXNlVGhyZWFkUmVzb3VyY2VzKSB7
Ci0gICAgICAgIC8vIENhbGxlZCB3aGVuIHdlIGRvIG5vdCBrbm93IGlmIHdlIHdpbGwgZXZlciBz
ZWUgYW5vdGhlciBjYWxsIGZyb20gdGhpcyB0aHJlYWQgYWdhaW4uCi0gICAgICAgIC8vIFVuc2V0
IHRoZSBFR0wgY3VycmVudCBjb250ZXh0IGJ5IHJlbGVhc2luZyB3aG9sZSBFR0wgdGhyZWFkIHN0
YXRlLgotICAgICAgICAvLyBUaGVvcmV0aWNhbGx5IFJlbGVhc2VUaHJlYWQgY2FuIHJlc2V0IHRo
ZSBib3VuZCBBUEksIHNvIHRoZSByZXN0IG9mIHRoZSBjb2RlIG1lbnRpb25zIEJpbmRBUEkvUXVl
cnlBUEkuCi0gICAgICAgIHJldHVybiBFR0xfUmVsZWFzZVRocmVhZCgpOwotICAgIH0KLSAgICAv
LyBPbiBXZWJLaXQgb3duZWQgdGhyZWFkcywgV2ViS2l0IGlzIGFibGUgdG8gY2hvb3NlIHRoZSB0
aW1lIGZvciB0aGUgRUdMIGNsZWFudXAuCi0gICAgLy8gVGhpcyBpcyB3aHkgd2Ugb25seSB1bnNl
dCB0aGUgY29udGV4dC4KLSAgICAvLyBOb3RlOiBBdCB0aGUgdGltZSBvZiB3cml0aW5nIHRoZSBF
R0wgY2xlYW51cCBpcyBjaG9zZW4gdG8gYmUgbm90IGRvbmUgYXQgYWxsLgotICAgIEVHTERpc3Bs
YXkgZGlzcGxheSA9IEVHTF9HZXREaXNwbGF5KEVHTF9ERUZBVUxUX0RJU1BMQVkpOwotICAgIGlm
IChkaXNwbGF5ID09IEVHTF9OT19ESVNQTEFZKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
cmV0dXJuIEVHTF9NYWtlQ3VycmVudChkaXNwbGF5LCBFR0xfTk9fU1VSRkFDRSwgRUdMX05PX1NV
UkZBQ0UsIEVHTF9OT19DT05URVhUKTsKLX0KLSNlbmRpZgotCiB2b2lkIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpjaGVja0dQVVN0YXR1cygpCiB7CiAgICAgaWYgKG1fZmFpbE5leHRTdGF0dXND
aGVjaykgewpAQCAtODI3LDExICs3OTAsNiBAQCBzdGQ6Om9wdGlvbmFsPFBpeGVsQnVmZmVyPiBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZENvbXBvc2l0ZWRSZXN1bHRzKCkKICAgICByZXR1
cm4gcmVzdWx0OwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWxlYXNlQWxs
UmVzb3VyY2VzSWZVbnVzZWQoKQotewotICAgIFNjb3BlZEVHTERlZmF1bHREaXNwbGF5OjpyZWxl
YXNlQWxsUmVzb3VyY2VzSWZVbnVzZWQoKTsKLX0KLQogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0p
CiBSZWZQdHI8TWVkaWFTYW1wbGU+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpwYWludENvbXBv
c2l0ZWRSZXN1bHRzVG9NZWRpYVNhbXBsZSgpCiB7CkBAIC04NDcsNiArODA1LDEyIEBAIFJlZlB0
cjxNZWRpYVNhbXBsZT4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnBhaW50Q29tcG9zaXRlZFJl
c3VsdHNUb01lZGlhU2FtcGxlCiAgICAgcmV0dXJuIE1lZGlhU2FtcGxlQVZGT2JqQzo6Y3JlYXRl
SW1hZ2VTYW1wbGUoV1RGTW92ZSgqcGl4ZWxCdWZmZXIpLCBNZWRpYVNhbXBsZUFWRk9iakM6OlZp
ZGVvUm90YXRpb246OlVwc2lkZURvd24sIHRydWUpOwogfQogI2VuZGlmCisKK3ZvaWQgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OnBsYXRmb3JtUmVsZWFzZVRocmVhZFJlc291cmNlcygpCit7Cisg
ICAgY3VycmVudENvbnRleHQgPSBudWxscHRyOworfQorCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUo
V0VCR0wpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmNwcAppbmRleCBmOGIyMGFj
NzZkMWJkZTlmM2EyODYwYWI5YTJjNDQ5N2U1YjYyN2Y0Li4wN2Q4NjQwMzNhZjJkNmVmYzU2NDFh
NTVlYTUwYzY0OTcyYmI4NDQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5j
cHAKQEAgLTc1LDYgKzc1LDE2IEBAIEdDR0xiaXRmaWVsZCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6Z2V0QnVmZmVyc1RvQXV0b0NsZWFyKCkgY29uc3QKICAgICByZXR1cm4gbV9idWZmZXJzVG9B
dXRvQ2xlYXI7CiB9CiAKKyNpZiAhVVNFKEFOR0xFKQorYm9vbCBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6cmVsZWFzZVRocmVhZFJlc291cmNlcyhSZWxlYXNlVGhyZWFkUmVzb3VyY2VCZWhhdmlv
cikKK3sKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cGxhdGZvcm1SZWxlYXNl
VGhyZWFkUmVzb3VyY2VzKCkKK3sKK30KKyNlbmRpZgorCiAjaWYgIVVTRShBTkdMRSkKIGJvb2wg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnRleEltYWdlMkRSZXNvdXJjZVNhZmUoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVp
IHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0
LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50IHVucGFja0FsaWdubWVudCkKIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRH
TE9wZW5HTC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBo
aWNzQ29udGV4dEdMT3BlbkdMLmgKaW5kZXggMTc3ODRlZGIxODZhYzZmMmJiODU1ZjAzMmJjOTg5
YzQ2MjMwM2I3NS4uMjI3N2IxN2NjNzA5ODg4NzY4MjZjMDg2MmY3YTcxODM5NzQyNWRmYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNz
Q29udGV4dEdMT3BlbkdMLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKQEAgLTM3LDcgKzM3LDYgQEAKICNpbmNs
dWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAKICNpZiBQTEFURk9STShDT0NPQSkKLSNpbmNsdWRlICJH
cmFwaGljc0NvbnRleHRHTEFOR0xFRUdMVXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAiSU9TdXJmYWNl
LmgiCiAjZW5kaWYKIApAQCAtNDYsNyArNDUsNyBAQAogI2VuZGlmCiAKICNpZiBVU0UoQU5HTEUp
Ci0jaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0R0xBTkdMRVV0aWxpdGllcy5oIgorI2luY2x1ZGUg
IkFOR0xFVXRpbGl0aWVzLmgiCiAjZWxzZQogI2luY2x1ZGUgIkFOR0xFV2ViS2l0QnJpZGdlLmgi
CiAjaW5jbHVkZSAiRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmgiCkBAIC0xMTksMTcgKzExOCwx
NiBAQCBwdWJsaWM6CiAjaWYgVVNFKEFOR0xFKQogICAgIHN0YXRpYyBHQ0dMZW51bSBkcmF3aW5n
QnVmZmVyVGV4dHVyZVRhcmdldCgpOwogI2VuZGlmCi0KLSNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KQotICAgIGVudW0gY2xhc3MgUmVsZWFzZUJlaGF2aW9yIHsKLSAgICAgICAgUHJlc2VydmVUaHJl
YWRSZXNvdXJjZXMsCi0gICAgICAgIFJlbGVhc2VUaHJlYWRSZXNvdXJjZXMKKyAgICBlbnVtIGNs
YXNzIFJlbGVhc2VUaHJlYWRSZXNvdXJjZUJlaGF2aW9yIHsKKyAgICAgICAgLy8gUmVsZWFzZXMg
Y3VycmVudCBjb250ZXh0IGFmdGVyIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMIGNhbGxzIGRvbmUg
aW4gdGhlIHRocmVhZC4KKyAgICAgICAgUmVsZWFzZUN1cnJlbnRDb250ZXh0LAorICAgICAgICAv
LyBSZWxlYXNlcyBhbGwgdGhyZWFkIHJlc291cmNlcyBhZnRlciBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTCBjYWxscyBkb25lIGluIHRoZSB0aHJlYWQuCisgICAgICAgIFJlbGVhc2VUaHJlYWRSZXNv
dXJjZXMsCisgICAgICAgIC8vIFJlbGVhc2VzIGFsbCBnbG9iYWwgc3RhdGUuIFNob3VsZCBiZSB1
c2VkIG9ubHkgYWZ0ZXIgYWxsIGRlcGVuZGluZyBvYmplY3RzIGhhdmUKKyAgICAgICAgLy8gYmVl
biByZWxlYXNlZC4KKyAgICAgICAgVGVybWluYXRlQW5kUmVsZWFzZVRocmVhZFJlc291cmNlcwog
ICAgIH07Ci0gICAgc3RhdGljIGJvb2wgcmVsZWFzZUN1cnJlbnRDb250ZXh0KFJlbGVhc2VCZWhh
dmlvcik7Ci0jZW5kaWYKLSNpZiBQTEFURk9STShDT0NPQSkKLSAgICBzdGF0aWMgdm9pZCByZWxl
YXNlQWxsUmVzb3VyY2VzSWZVbnVzZWQoKTsKLSNlbmRpZgorICAgIHN0YXRpYyBib29sIHJlbGVh
c2VUaHJlYWRSZXNvdXJjZXMoUmVsZWFzZVRocmVhZFJlc291cmNlQmVoYXZpb3IpOwogCiAgICAg
Ly8gV2l0aCBtdWx0aXNhbXBsaW5nIG9uLCBibGl0IGZyb20gbXVsdGlzYW1wbGVGQk8gdG8gcmVn
dWxhciBGQk8uCiAgICAgdm9pZCBwcmVwYXJlVGV4dHVyZSgpOwpAQCAtNTgzLDEyICs1ODEsMTUg
QEAgcHJpdmF0ZToKICAgICAvLyBSZXR1cm5zIGZhbHNlIGlmIGNvbnRleHQgc2hvdWxkIGJlIGxv
c3QgZHVlIHRvIHRpbWVvdXQuCiAgICAgYm9vbCB3YWl0QW5kVXBkYXRlT2xkZXN0RnJhbWUoKSBX
QVJOX1VOVVNFRF9SRVRVUk47CiAjZW5kaWYKKyAgICAvLyBQbGF0Zm9ybSBzcGVjaWZpYyBiZWhh
dmlvciBmb3IgcmVsZWFzZVJlc291cmNlcygpOworICAgIHN0YXRpYyB2b2lkIHBsYXRmb3JtUmVs
ZWFzZVRocmVhZFJlc291cmNlcygpOworCiAKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBHcmFw
aGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbiogbV9zd2FwQ2hhaW4geyBudWxscHRyIH07
CiAgICAgLy8gVE9ETzogdGhpcyBzaG91bGQgYmUgcmVtb3ZlZCBvbmNlIHRoZSBjb250ZXh0IGRy
YXdzIHRvIGEgaW1hZ2UgYnVmZmVyLiBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIxODE3OSAuCiAgICAgUmV0YWluUHRyPFdlYkdMTGF5ZXI+IG1fd2ViR0xMYXll
cjsKLSAgICBTY29wZWRFR0xEZWZhdWx0RGlzcGxheSBtX2Rpc3BsYXlPYmo7CisgICAgRUdMRGlz
cGxheSBtX2Rpc3BsYXlPYmogeyBudWxscHRyIH07CiAgICAgUGxhdGZvcm1HcmFwaGljc0NvbnRl
eHRHTCBtX2NvbnRleHRPYmogeyBudWxscHRyIH07CiAgICAgUGxhdGZvcm1HcmFwaGljc0NvbnRl
eHRHTENvbmZpZyBtX2NvbmZpZ09iaiB7IG51bGxwdHIgfTsKICNlbmRpZiAvLyBQTEFURk9STShD
T0NPQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV2ViQ29y
ZVRocmVhZC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV2ViQ29yZVRocmVh
ZC5tbQppbmRleCAwMDI2NjRlM2UxNjY5ZmYzMjhkYjliOTUyOTFhODhiNTA0MTc5YzM4Li45NTQ0
YjUxYzI3OGRmNTY5ZWE0YWIwYmZlZjdlZjc0NGFjNTJjNzM1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dlYkNvcmVUaHJlYWQubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkLm1tCkBAIC03MCwxNyArNzAsMjAg
QEAgbmFtZXNwYWNlIHsKIC8vIGFzIGFueSBjbGllbnQgdGhyZWFkIHRoYXQgY2FsbHMgaW50byBX
ZWJLaXQuCiB2b2lkIFJlbGVhc2VXZWJUaHJlYWRHbG9iYWxTdGF0ZSgpCiB7Ci0gICAgLy8gR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0wgY3VycmVudCBjb250ZXh0IGlzIG93bmVkIGJ5IHRoZSB3ZWIg
dGhyZWFkIGxvY2suIFJlbGVhc2UgdGhlIGNvbnRleHQKKyAgICAvLyBBTkdMRSBtYWludGFpbnMg
dGhyZWFkIGdsb2JhbCBzdGF0ZSBmb3IgaXRzIGN1cnJlbnQgY29udGV4dC4KKyAgICAvLyBUaGlz
IGlzIGNvbmNlcHR1YWxseSBvd25lZCBieSB0aGUgd2ViIHRocmVhZCBsb2NrLiBSZWxlYXNlIHRo
ZSBjb250ZXh0CiAgICAgLy8gYmVmb3JlIHRoZSBsb2NrIGlzIHJlbGVhc2VkLgogCiAgICAgLy8g
SW4gc2luZ2xlLXRocmVhZGVkIGVudmlyb25tZW50cyB3ZSBkbyBub3QgbmVlZCB0byB1bnNldCB0
aGUgY29udGV4dCwgYXMgdGhlcmUgc2hvdWxkIG5vdCBiZSBhY2Nlc3MgZnJvbQogICAgIC8vIG11
bHRpcGxlIHRocmVhZHMuCiAgICAgQVNTRVJUKFdlYlRocmVhZElzRW5hYmxlZCgpKTsKLSAgICB1
c2luZyBSZWxlYXNlQmVoYXZpb3IgPSBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
UmVsZWFzZUJlaGF2aW9yOwotICAgIC8vIEZvciBub24td2ViIHRocmVhZHMsIHdlIGRvbid0IGtu
b3cgaWYgd2UgZXZlciBzZWUgYW5vdGhlciBjYWxsIGZyb20gdGhlIHRocmVhZC4KLSAgICBSZWxl
YXNlQmVoYXZpb3IgcmVsZWFzZUJlaGF2aW9yID0KLSAgICAgICAgV2ViVGhyZWFkSXNDdXJyZW50
KCkgPyBSZWxlYXNlQmVoYXZpb3I6OlByZXNlcnZlVGhyZWFkUmVzb3VyY2VzIDogUmVsZWFzZUJl
aGF2aW9yOjpSZWxlYXNlVGhyZWFkUmVzb3VyY2VzOwotICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpyZWxlYXNlQ3VycmVudENvbnRleHQocmVsZWFzZUJlaGF2aW9yKTsKKyAg
ICB1c2luZyBSZWxlYXNlVGhyZWFkUmVzb3VyY2VCZWhhdmlvciA9IFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpSZWxlYXNlVGhyZWFkUmVzb3VyY2VCZWhhdmlvcjsKKyAgICAvLyBG
b3Igd2ViIHRocmVhZCwganVzdCByZWxlYXNlIHRoZSBjb250ZXh0IGFzIHdlIGtub3cgd2Ugd2ls
bCBzZWUgY2FsbHMgdG8gaXQgYWdhaW4uCisgICAgLy8gRm9yIG5vbi13ZWIgdGhyZWFkcywgZS5n
LiB0aGlyZC1wYXJ0eSBjbGllbnQgdGhyZWFkcywgd2UgZG9uJ3Qga25vdyBpZiB3ZSBldmVyIHNl
ZSBhbm90aGVyIGNhbGwgZnJvbSB0aGUKKyAgICAvLyB0aHJlYWQsIHNvIHdlIGFsc28gcmVsZWFz
ZSB0aGUgdGhyZWFkIHJlc291cmNlcy4KKyAgICBSZWxlYXNlVGhyZWFkUmVzb3VyY2VCZWhhdmlv
ciByZWxlYXNlQmVoYXZpb3IgPQorICAgICAgICBXZWJUaHJlYWRJc0N1cnJlbnQoKSA/IFJlbGVh
c2VUaHJlYWRSZXNvdXJjZUJlaGF2aW9yOjpSZWxlYXNlQ3VycmVudENvbnRleHQgOiBSZWxlYXNl
VGhyZWFkUmVzb3VyY2VCZWhhdmlvcjo6UmVsZWFzZVRocmVhZFJlc291cmNlczsKKyAgICBXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVsZWFzZVRocmVhZFJlc291cmNlcyhyZWxl
YXNlQmVoYXZpb3IpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvZ3JhcGhpY3MvU2NvcGVkV2ViR0xSZW5kZXJpbmdSZXNvdXJjZXNSZXF1ZXN0LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9TY29wZWRXZWJHTFJlbmRlcmluZ1Jlc291
cmNlc1JlcXVlc3QuY3BwCmluZGV4IDBmNzVkODI1NDgwMzY1NDk4NWZlMDU4MTRlZTNiZDEzNGU0
ODFhZTYuLjMyNmIwN2YyZWJkZWVhMDdjYTUyZTY3NmMwMjFkMjhlYjc4ZjI3YzQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9TY29wZWRXZWJHTFJlbmRlcmlu
Z1Jlc291cmNlc1JlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFw
aGljcy9TY29wZWRXZWJHTFJlbmRlcmluZ1Jlc291cmNlc1JlcXVlc3QuY3BwCkBAIC0yNiwyMCAr
MjYsMzggQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJTY29wZWRXZWJHTFJlbmRl
cmluZ1Jlc291cmNlc1JlcXVlc3QuaCIKIAorI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5B
QkxFKFdFQkdMKQorCisjaW5jbHVkZSAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaCIKKyNpbmNs
dWRlICJTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9HcmFw
aGljc0NvbnRleHRHTC5oPgorI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CisjaW5jbHVkZSA8d3Rm
L1NlY29uZHMuaD4KKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIHN0ZDo6YXRvbWljPHVuc2lnbmVk
PiBTY29wZWRXZWJHTFJlbmRlcmluZ1Jlc291cmNlc1JlcXVlc3Q6OnNfcmVxdWVzdHM7Ci0KLSNp
ZiAhUExBVEZPUk0oQ09DT0EpCitzdGF0aWMgY29uc3RleHByIFNlY29uZHMgZnJlZVdlYkdMUmVu
ZGVyaW5nUmVzb3VyY2VzVGltZW91dCA9IDFfczsKK3N0YXRpYyBib29sIGRpZFNjaGVkdWxlRnJl
ZVdlYkdMUmVuZGVyaW5nUmVzb3VyY2VzOwogCiB2b2lkIFNjb3BlZFdlYkdMUmVuZGVyaW5nUmVz
b3VyY2VzUmVxdWVzdDo6c2NoZWR1bGVGcmVlV2ViR0xSZW5kZXJpbmdSZXNvdXJjZXMoKQogewor
ICAgIGlmIChkaWRTY2hlZHVsZUZyZWVXZWJHTFJlbmRlcmluZ1Jlc291cmNlcykKKyAgICAgICAg
cmV0dXJuOworICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaEFmdGVyKGZyZWVXZWJHTFJlbmRl
cmluZ1Jlc291cmNlc1RpbWVvdXQsIGZyZWVXZWJHTFJlbmRlcmluZ1Jlc291cmNlcyk7CisgICAg
ZGlkU2NoZWR1bGVGcmVlV2ViR0xSZW5kZXJpbmdSZXNvdXJjZXMgPSB0cnVlOwogfQogCiB2b2lk
IFNjb3BlZFdlYkdMUmVuZGVyaW5nUmVzb3VyY2VzUmVxdWVzdDo6ZnJlZVdlYkdMUmVuZGVyaW5n
UmVzb3VyY2VzKCkKIHsKKyAgICBkaWRTY2hlZHVsZUZyZWVXZWJHTFJlbmRlcmluZ1Jlc291cmNl
cyA9IGZhbHNlOworICAgIGlmIChzX3JlcXVlc3RzKQorICAgICAgICByZXR1cm47CisgICAgcmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xTdHJlYW1Xb3JrUXVldWUoKS5kaXNwYXRjaChbXSB7CisgICAg
ICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWxlYXNlVGhyZWFkUmVzb3Vy
Y2VzKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpSZWxlYXNlVGhyZWFkUmVzb3Vy
Y2VCZWhhdmlvcjo6VGVybWluYXRlQW5kUmVsZWFzZVRocmVhZFJlc291cmNlcyk7CisgICAgfSk7
CiB9CiAKLSNlbmRpZgotCiB9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1Njb3BlZFdlYkdMUmVuZGVyaW5nUmVzb3VyY2VzUmVxdWVzdC5o
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1Njb3BlZFdlYkdMUmVuZGVyaW5n
UmVzb3VyY2VzUmVxdWVzdC5oCmluZGV4IGMwZWQ0ZWVkM2NlOWQ3NDkxNjQyYzQ2MTYzMWIwMTNj
MTE3ODZkMDguLjJjYjUwYjNiY2YyNjE3MWRkMjQ3MTdiYWE1YjUxMzViMDBhZWE3YWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9TY29wZWRXZWJHTFJlbmRl
cmluZ1Jlc291cmNlc1JlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3Jh
cGhpY3MvU2NvcGVkV2ViR0xSZW5kZXJpbmdSZXNvdXJjZXNSZXF1ZXN0LmgKQEAgLTI1LDYgKzI1
LDggQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJM
RShXRUJHTCkKKwogI2luY2x1ZGUgIlNjb3BlZFJlbmRlcmluZ1Jlc291cmNlc1JlcXVlc3QuaCIK
ICNpbmNsdWRlIDxhdG9taWM+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgpAQCAtODIs
MyArODQsNSBAQCBwcml2YXRlOgogfTsKIAogfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9TY29wZWRXZWJHTFJlbmRlcmluZ1Jlc291cmNl
c1JlcXVlc3RDb2NvYS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvU2Nv
cGVkV2ViR0xSZW5kZXJpbmdSZXNvdXJjZXNSZXF1ZXN0Q29jb2EuY3BwCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAzMWIzM2ZjZDVjZmYzNDcyZDQxN2U5OTUxMWMwNzJlODQ4ZTdhOWE3
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9TY29wZWRXZWJHTFJlbmRlcmluZ1Jlc291cmNlc1Jl
cXVlc3RDb2NvYS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw2MCArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0g
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlNjb3BlZFdlYkdMUmVuZGVyaW5nUmVz
b3VyY2VzUmVxdWVzdC5oIgotCi0jaWYgUExBVEZPUk0oQ09DT0EpCi0KLSNpbmNsdWRlICJSZW1v
dGVHcmFwaGljc0NvbnRleHRHTC5oIgotI2luY2x1ZGUgIlN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVl
dWUuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dEdMLmg+Ci0jaW5jbHVkZSA8
d3RmL1J1bkxvb3AuaD4KLSNpbmNsdWRlIDx3dGYvU2Vjb25kcy5oPgotCi1uYW1lc3BhY2UgV2Vi
S2l0IHsKLQotc3RhdGljIGNvbnN0ZXhwciBTZWNvbmRzIGZyZWVXZWJHTFJlbmRlcmluZ1Jlc291
cmNlc1RpbWVvdXQgPSAxX3M7Ci1zdGF0aWMgYm9vbCBkaWRTY2hlZHVsZUZyZWVXZWJHTFJlbmRl
cmluZ1Jlc291cmNlczsKLQotdm9pZCBTY29wZWRXZWJHTFJlbmRlcmluZ1Jlc291cmNlc1JlcXVl
c3Q6OnNjaGVkdWxlRnJlZVdlYkdMUmVuZGVyaW5nUmVzb3VyY2VzKCkKLXsKLSAgICBpZiAoZGlk
U2NoZWR1bGVGcmVlV2ViR0xSZW5kZXJpbmdSZXNvdXJjZXMpCi0gICAgICAgIHJldHVybjsKLSAg
ICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2hBZnRlcihmcmVlV2ViR0xSZW5kZXJpbmdSZXNvdXJj
ZXNUaW1lb3V0LCBmcmVlV2ViR0xSZW5kZXJpbmdSZXNvdXJjZXMpOwotICAgIGRpZFNjaGVkdWxl
RnJlZVdlYkdMUmVuZGVyaW5nUmVzb3VyY2VzID0gdHJ1ZTsKLX0KLQotdm9pZCBTY29wZWRXZWJH
TFJlbmRlcmluZ1Jlc291cmNlc1JlcXVlc3Q6OmZyZWVXZWJHTFJlbmRlcmluZ1Jlc291cmNlcygp
Ci17Ci0gICAgZGlkU2NoZWR1bGVGcmVlV2ViR0xSZW5kZXJpbmdSZXNvdXJjZXMgPSBmYWxzZTsK
LSAgICBpZiAoc19yZXF1ZXN0cykKLSAgICAgICAgcmV0dXJuOwotICAgIHJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMU3RyZWFtV29ya1F1ZXVlKCkuZGlzcGF0Y2goR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OnJlbGVhc2VBbGxSZXNvdXJjZXNJZlVudXNlZCk7Ci19Ci0KLX0KLQotI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViS2l0L1Nv
dXJjZXNDb2NvYS50eHQKaW5kZXggNWU2YjUyYzEyMTE0NmM2ZDUzYWNlNjY1ZDY1YzI1NmZkZTVl
OTU5My4uODJmNDZjZTQ0YjE3NzRlMTNkYjdhZjQzYzdiY2I0Yzc4YmFiZDY1YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291
cmNlc0NvY29hLnR4dApAQCAtNjYsNyArNjYsNiBAQCBHUFVQcm9jZXNzL2NvY29hL0dQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3NDb2NvYS5tbQogR1BVUHJvY2Vzcy9jb2NvYS9HUFVQcm9jZXNzQ29j
b2EubW0KIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5j
cHAKIEdQVVByb2Nlc3MvZ3JhcGhpY3MvU2NvcGVkUmVuZGVyaW5nUmVzb3VyY2VzUmVxdWVzdENv
Y29hLm1tIEBuby11bmlmeQotR1BVUHJvY2Vzcy9ncmFwaGljcy9TY29wZWRXZWJHTFJlbmRlcmlu
Z1Jlc291cmNlc1JlcXVlc3RDb2NvYS5jcHAKIEdQVVByb2Nlc3MvaW9zL0dQVVByb2Nlc3NJT1Mu
bW0KIEdQVVByb2Nlc3MvbWFjL0dQVVByb2Nlc3NNYWMubW0KIEdQVVByb2Nlc3MvbWFjL0xvY2Fs
QXVkaW9TZXNzaW9uUm91dGluZ0FyYml0cmF0b3IuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJL
aXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBkMWM2OTUxNWJiMTgyZGZhNWE1NDA3
NzQ4NjRmNzNlYzI5OGM0MWQ5Li45OWYxZGJlZjEyNTBiMmZmZDk4ZTQ1ZmM4YTVlNGUzMjhiZGFm
MWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTMsNyArMyw3IEBACiAJYXJjaGl2ZVZlcnNpb24gPSAxOwogCWNsYXNzZXMgPSB7CiAJ
fTsKLQlvYmplY3RWZXJzaW9uID0gNTI7CisJb2JqZWN0VmVyc2lvbiA9IDU0OwogCW9iamVjdHMg
PSB7CiAKIC8qIEJlZ2luIFBCWEFnZ3JlZ2F0ZVRhcmdldCBzZWN0aW9uICovCkBAIC00NzYwLDcg
KzQ3NjAsNiBAQAogCQk3QkNGNzBDQzI2MTQ5MzVGMDBFNEZCNzAgLyogU2NvcGVkV2ViR0xSZW5k
ZXJpbmdSZXNvdXJjZXNSZXF1ZXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNjb3BlZFdlYkdM
UmVuZGVyaW5nUmVzb3VyY2VzUmVxdWVzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTdCQ0Y3MENEMjYxNDkzNUYwMEU0RkI3MCAvKiBTY29wZWRSZW5kZXJpbmdSZXNvdXJjZXNS
ZXF1ZXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjb3BlZFJlbmRlcmluZ1Jlc291cmNlc1JlcXVlc3Qu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0JDRjcwQ0UyNjE0OTM1RjAwRTRGQjcw
IC8qIFNjb3BlZFdlYkdMUmVuZGVyaW5nUmVzb3VyY2VzUmVxdWVzdC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBTY29wZWRXZWJHTFJlbmRlcmluZ1Jlc291cmNlc1JlcXVlc3QuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJN0JDRjcwQ0YyNjE0OTdFNjAwRTRGQjcwIC8qIFNjb3BlZFdlYkdMUmVu
ZGVyaW5nUmVzb3VyY2VzUmVxdWVzdENvY29hLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNjb3Bl
ZFdlYkdMUmVuZGVyaW5nUmVzb3VyY2VzUmVxdWVzdENvY29hLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJN0JFNzI2NTcyNTc0RjY3MjAwRTg1RDk4IC8qIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHlGdW5jdGlvbnNHZW5lcmF0ZWQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUZ1bmN0aW9uc0dlbmVyYXRlZC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCRTcyNjY4MjU3NjgwRUYwMEU4NUQ5OCAvKiBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTENvY29hLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMQ29jb2EuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3
QzA2NUYyOTFDOENEOTVGMDBDMkQ5NTAgLyogV2ViVXNlckNvbnRlbnRDb250cm9sbGVyRGF0YVR5
cGVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlVzZXJDb250
ZW50Q29udHJvbGxlckRhdGFUeXBlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC05MTA0LDcgKzkxMDMsNiBAQAogCQkJCTdCQ0Y3MENCMjYxNDkzNUUwMEU0RkI3MCAvKiBTY29w
ZWRSZW5kZXJpbmdSZXNvdXJjZXNSZXF1ZXN0Q29jb2EubW0gKi8sCiAJCQkJN0JDRjcwQ0MyNjE0
OTM1RjAwRTRGQjcwIC8qIFNjb3BlZFdlYkdMUmVuZGVyaW5nUmVzb3VyY2VzUmVxdWVzdC5jcHAg
Ki8sCiAJCQkJN0JDRjcwQ0UyNjE0OTM1RjAwRTRGQjcwIC8qIFNjb3BlZFdlYkdMUmVuZGVyaW5n
UmVzb3VyY2VzUmVxdWVzdC5oICovLAotCQkJCTdCQ0Y3MENGMjYxNDk3RTYwMEU0RkI3MCAvKiBT
Y29wZWRXZWJHTFJlbmRlcmluZ1Jlc291cmNlc1JlcXVlc3RDb2NvYS5jcHAgKi8sCiAJCQkpOwog
CQkJcGF0aCA9IGdyYXBoaWNzOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>440182</attachid>
            <date>2021-10-05 01:50:45 -0700</date>
            <delta_ts>2021-10-06 04:27:39 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-231011-20211005115043.patch</filename>
            <type>text/plain</type>
            <size>67205</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgzNTQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmViMWI3MjY4ZjVlODk5
N2M5MWZiNzkwNmI2M2RjYmM5MTM5NjkwZC4uNzk2ZjZmNTE4NDI2ZDRlMjQxYWFlNTRmNDQ3MjU5
YjU3NjVlOGY5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYyIEBACisyMDIxLTA5LTMwICBLaW1t
byBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgU2NvcGVkRUdMRGVm
YXVsdERpc3BsYXkgc2hvdWxkIGJlIHJlbW92ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMTAxMQorCisgICAgICAgIFJldmlld2VkIGJ5IEtlbm5l
dGggUnVzc2VsbC4KKworICAgICAgICBIYXJkLWNvZGluZyB0aGUgY29kZSB0byBFR0xfREVGQVVM
VF9ESVNQTEFZIG9ubHkgYW5kIHVzaW5nIHRoZSBzY29wZWQKKyAgICAgICAgaG9sZGVyIGlzIG1h
a2luZyB0aGUgRUdMRGlzcGxheXMgaGFyZGVyIHRvIHVzZSB0aGFuIG5lY2Nlc3NhcnkuIFRoZQor
ICAgICAgICBpbXBsZW1lbnRhdGlvbiB0YXJnZXQsIGUuZy4gdGhlIGFiaWxpdHkgdG8gY2FsbCBF
R0xUZXJtaW5hdGUsIHdhcyBhbHNvIGEgYml0CisgICAgICAgIG1vcmUgY29udm9sdXRlZCB0aGFu
IG5lZWRlZC4KKworICAgICAgICBNb3ZlIHRoZSAiY2FsbCBFR0xUZXJtaW5hdGUiIGxvZ2ljIGZy
b20gYSBiaXQgY29udm9sdXRlZCByZWZjb3VudCBtZWNoYW5pc20KKyAgICAgICAgaW4gU2NvcGVk
RUdMRGVmYXVsdERpc3BsYXkgdG8gdGhlIGV4cGxpY2l0IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpyZWxlYXNlUmVzb3VyY2VzKCkuCisgICAgICAgIFRoZSBjYWxsZXJzIGFyZSBleHBlY3RlZCB0
byBkbyB0aGUgcmVmY291bnRpbmcgYW55d2F5LCBhcyB0aGUgZXhpc3RpbmcgY2xpZW50CisgICAg
ICAgIFdlYktpdDo6U2NvcGVkV2ViR0xSZW5kZXJpbmdSZXNvdXJjZXNSZXF1ZXN0IGFscmVhZHkg
ZGlkLgorCisgICAgICAgIE1ha2UgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlbGVhc2VSZXNv
dXJjZXMoKSBhdmFpbGFibGUgb24gYWxsIHBsYXRmb3Jtcy4KKyAgICAgICAgSXQgaXMgaW1wbGVt
ZW50ZWQgb24gYWxsIEFOR0xFIGltcGxlbWVudGF0aW9ucy4KKyAgICAgICAgUGxhdGZvcm1zIGNh
biBhdWdtZW50IHRoZSBpbXBsZW1lbnRhdGlvbiBieSBpbXBsZW1lbnRpbmcKKyAgICAgICAgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OnBsYXRmb3JtUmVsZWFzZVJlc291cmNlcygpLiBGb3IgQ29j
b2EsIHRoaXMgZnVuY3Rpb24KKyAgICAgICAgcmVzZXRzIHRoZSBjdXJyZW50Q29udGV4dCBjYWNo
ZSB0aGF0IGlzIHVzZWQgdG8gb3B0aW1pemUgbWFraW5nIGNvbnRleHQgY3VycmVudC4KKworICAg
ICAgICBObyBuZXcgdGVzdHMsIHJlZmFjdG9yLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6
CisgICAgICAgICogSGVhZGVycy5jbWFrZToKKyAgICAgICAgKiBQbGF0Zm9ybU1hYy5jbWFrZToK
KyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9BTkdM
RVV0aWxpdGllcy5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFRUdMVXRpbGl0aWVzLmguCisgICAgICAg
IChXZWJDb3JlOjpwbGF0Zm9ybUlzQU5HTEVBdmFpbGFibGUpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2FuZ2xlL0FOR0xFVXRpbGl0aWVzLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFVXRpbGl0
aWVzLmguCisgICAgICAgIFJlbmFtZSBHcmFwaGljc0NvbnRleHRHTEFOR0xFVXRpbGl0aWVzIHRv
IHNpbXBsZXIgYW5kIG1vcmUgZGVzY3JpcHRpdmUgQU5HTEVVdGlsaXRpZXMuCisgICAgICAgIEFk
ZCB0aGUgaXNBTkdMRUF2YWlsYWJsZSB0byB0aGVyZS4KKworICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlbGVhc2VSZXNvdXJjZXMpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnBsYXRmb3JtUmVsZWFzZVJlc291cmNl
cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xB
TkdMRUVHTFV0aWxpdGllcy5jcHA6IFJlbW92ZWQuCisgICAgICAgIChXZWJDb3JlOjpyZWZEZWZh
dWx0RGlzcGxheSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjp1bnJlZkRlZmF1bHREaXNw
bGF5SWZOZWVkZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2NvcGVkRUdMRGVmYXVs
dERpc3BsYXk6Om9wZXJhdG9yPSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTY29wZWRF
R0xEZWZhdWx0RGlzcGxheTo6U2NvcGVkRUdMRGVmYXVsdERpc3BsYXkpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6U2NvcGVkRUdMRGVmYXVsdERpc3BsYXk6On5TY29wZWRFR0xEZWZhdWx0
RGlzcGxheSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTY29wZWRFR0xEZWZhdWx0RGlz
cGxheTo6cmVsZWFzZUFsbFJlc291cmNlc0lmVW51c2VkKTogRGVsZXRlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6cGxhdGZvcm1Jc0FOR0xFQXZhaWxhYmxlKToKKyAgICAgICAgKFdl
YkNvcmU6OmluaXRpYWxpemVFR0xEaXNwbGF5KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpwbGF0Zm9ybVJlbGVhc2VSZXNvdXJjZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6aXNBTkdMRUF2YWlsYWJsZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6cmVsZWFzZUN1cnJlbnRDb250ZXh0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWxlYXNlQWxsUmVzb3Vy
Y2VzSWZVbnVzZWQpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5n
bC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6cmVsZWFzZVJlc291cmNlcyk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cGxhdGZvcm1SZWxlYXNlUmVzb3VyY2VzKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9pb3Mvd2FrL1dlYkNvcmVUaHJlYWQubW06CisKIDIwMjEtMTAt
MDUgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KIAogICAgICAgICBO
ZWdhdGl2ZSBpbnRlZ2VycyBpbiBAZm9udC1wYWxldHRlLXZhbHVlcyBhcmUgaW52YWxpZApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwppbmRleCBmODVkZjNmMGFlM2I5ZjBjNjNhYTdjOTEzZTgyNjI3MmZhNWZhM2UzLi44N2FlMGVk
MThjMWZhYTY2NzFjODFhOWJiMDU3ZmEzZTZkOWMxMTQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3
IEBACisyMDIxLTA5LTMwICBLaW1tbyBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisK
KyAgICAgICAgU2NvcGVkRUdMRGVmYXVsdERpc3BsYXkgc2hvdWxkIGJlIHJlbW92ZWQKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMTAxMQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudCB0aGUg
cmVsZWFzZSBvZiBXZWJHTCByZXNvdXJjZXMgd2l0aCB0aGUgYW1lbmRlZAorICAgICAgICBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6cmVsZWFzZVJlc291cmNlcygpIGluc3RlYWQgb2YKKyAgICAg
ICAgcHJldmlvdXMgc2VwYXJhdGUgZnVuY3Rpb24gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJl
bGVhc2VBbGxSZXNvdXJjZXMoKS4KKworICAgICAgICBVc2UgdGhlIHJlc291cmNlIHJlbGVhc2Ug
Y29kZSBwYXRoIHVuaXZlcnNhbGx5LCBhcworICAgICAgICBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6cmVsZWFzZVJlc291cmNlcygpIGlzIG5vdyBjb21tb24gY29kZS4KKworICAgICAgICAqIEdQ
VVByb2Nlc3MvZ3JhcGhpY3MvU2NvcGVkV2ViR0xSZW5kZXJpbmdSZXNvdXJjZXNSZXF1ZXN0LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6U2NvcGVkV2ViR0xSZW5kZXJpbmdSZXNvdXJjZXNSZXF1ZXN0
OjpzY2hlZHVsZUZyZWVXZWJHTFJlbmRlcmluZ1Jlc291cmNlcyk6CisgICAgICAgIChXZWJLaXQ6
OlNjb3BlZFdlYkdMUmVuZGVyaW5nUmVzb3VyY2VzUmVxdWVzdDo6ZnJlZVdlYkdMUmVuZGVyaW5n
UmVzb3VyY2VzKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1Njb3BlZFdlYkdMUmVu
ZGVyaW5nUmVzb3VyY2VzUmVxdWVzdC5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3Mv
U2NvcGVkV2ViR0xSZW5kZXJpbmdSZXNvdXJjZXNSZXF1ZXN0Q29jb2EuY3BwOiBSZW1vdmVkLgor
ICAgICAgICAoV2ViS2l0OjpTY29wZWRXZWJHTFJlbmRlcmluZ1Jlc291cmNlc1JlcXVlc3Q6OnNj
aGVkdWxlRnJlZVdlYkdMUmVuZGVyaW5nUmVzb3VyY2VzKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YktpdDo6U2NvcGVkV2ViR0xSZW5kZXJpbmdSZXNvdXJjZXNSZXF1ZXN0OjpmcmVlV2ViR0xSZW5k
ZXJpbmdSZXNvdXJjZXMpOiBEZWxldGVkLgorICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6Cisg
ICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIwMjEtMTAtMDQg
IENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgU1BJIHRvIGxh
dW5jaCBhIHNlcnZpY2Ugc2VydmljZSB3b3JrZXIgaW4gYSBXS1dlYlZpZXcgYW5kIGV4cG9zZSBz
ZXJ2aWNlIHdvcmtlciB0byBpbmplY3RlZCBidW5kbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXgg
MzAzOTQ3NTk3MWQ0ZmI3ZjZmOWJkMWEwNmI4ZmYyNmNjNTAxN2NiZC4uNzliZDM3ZDhlYmI1ZTJi
ZjZjN2M1NGQ2YjdhYjViNDZmNjNjNWI2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01h
a2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTE3MTAs
OSArMTcxMCw5IEBAIGlmIChFTkFCTEVfV0VCR0wpCiAgICAgICAgICAgICAke1dFQkNPUkVfRElS
fS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZQogICAgICAgICApCiAgICAgICAgIGxpc3QoQVBQRU5E
IFdlYkNvcmVfU09VUkNFUworICAgICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvQU5H
TEVVdGlsaXRpZXMuY3BwCiAgICAgICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRl
bnNpb25zR0xBTkdMRS5jcHAKICAgICAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dy
YXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwCi0gICAgICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9h
bmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFRUdMVXRpbGl0aWVzLmNwcAogICAgICAgICAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvVGVtcG9yYXJ5QU5HTEVTZXR0aW5nLmNwcAogICAgICAg
ICApCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UgYi9Tb3VyY2Uv
V2ViQ29yZS9IZWFkZXJzLmNtYWtlCmluZGV4IDM5NGNiM2JiNmUxYTMyNzI0OTUxYjIyNjU3ZWQ5
NTk5ZmQzNzhmODIuLjc0NDY4ZmM3ZDlmY2M0MzhlNDRhZWY2MmY2M2VmZWRkN2RhMjFiMDYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKKysrIGIvU291cmNlL1dlYkNv
cmUvSGVhZGVycy5jbWFrZQpAQCAtMTM4Myw4ICsxMzgzLDggQEAgc2V0KFdlYkNvcmVfUFJJVkFU
RV9GUkFNRVdPUktfSEVBREVSUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1dpbmRSdWxlLmgKIAog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0FOR0xFSGVhZGVycy5oCisgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvYW5nbGUvQU5HTEVVdGlsaXRpZXMuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2Fu
Z2xlL0V4dGVuc2lvbnNHTEFOR0xFLmgKLSAgICBwbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFw
aGljc0NvbnRleHRHTEFOR0xFVXRpbGl0aWVzLmgKIAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0RHJhd2luZ0NvbnRleHQuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvUGxhdGZvcm1NYWMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQpp
bmRleCBmYWNjY2I2OGY2NWViYTdjYzU5MWJjNzI0ZmNhMGMyYTMzYWM0ZjhhLi5iY2ZjZWI3OTMx
M2VjMDVjMzU0YzVmZWZlMzRhYjUxMGFiMzNlNzE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9QbGF0Zm9ybU1hYy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFr
ZQpAQCAtNjE0LDcgKzYxNCw3IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfUFJJVkFURV9GUkFNRVdP
UktfSEVBREVSUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL01JTUVUeXBlQ2FjaGUuaAogICAgIHBs
YXRmb3JtL2dyYXBoaWNzL01vZGVsLmgKIAotICAgIHBsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dy
YXBoaWNzQ29udGV4dEdMQU5HTEVFR0xVdGlsaXRpZXMuaAorICAgIHBsYXRmb3JtL2dyYXBoaWNz
L2FuZ2xlL0FOR0xFVXRpbGl0aWVzLmgKIAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9BdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL01lZGlhUGxheWJhY2tUYXJnZXRDb2NvYS5oCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29h
LnR4dAppbmRleCBmMzBmZGFiYTA0YzI2MDY3ZjE2NDhmMjc0MjcyZDVlMmFlMWQzZDRkLi5hNGMw
YTc2MjdjMzc4MWRmY2QwNDkwNmZjNTIzMzA5YzkwNzMwYzJjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2Nv
YS50eHQKQEAgLTU5Nyw3ICs1OTcsNyBAQCB0ZXN0aW5nL2NvY29hL1dlYlZpZXdWaXN1YWxJZGVu
dGlmaWNhdGlvbk92ZXJsYXkubW0KIC8vIFRoZSBmb2xsb3dpbmcgZmlsZXMgYXJlbid0IHVuaWZp
ZWQgd2l0aCBvdGhlcnMgdG8gcHJldmVudCB0aGVtIGZyb20gYmVpbmcgbWVyZ2VkCiAvLyB3aXRo
IGZpbGVzIHRoYXQgdXNlIHRoZSBzeXN0ZW0gT3BlbkdMLgogCitwbGF0Zm9ybS9ncmFwaGljcy9h
bmdsZS9BTkdMRVV0aWxpdGllcy5jcHAgQG5vLXVuaWZ5CiBwbGF0Zm9ybS9ncmFwaGljcy9hbmds
ZS9FeHRlbnNpb25zR0xBTkdMRS5jcHAgQG5vLXVuaWZ5CiBwbGF0Zm9ybS9ncmFwaGljcy9hbmds
ZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcCBAbm8tdW5pZnkKLXBsYXRmb3JtL2dyYXBoaWNz
L2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEVFR0xVdGlsaXRpZXMuY3BwIEBuby11bmlmeQog
cGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvVGVtcG9yYXJ5QU5HTEVTZXR0aW5nLmNwcCBAbm8tdW5p
ZnkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agppbmRleCBlYWQwMDUwMDk1NTI0MWZkODdiZDM4Y2Q2MzQyMWUwMjU4Zjk2YTllLi5hYWUxMTg0
YzVmN2Y3MjQ3ODU5YjEzYTZhNDliOTRlZDFkNjhkMjNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yMzUzLDEzICsyMzUzLDEx
IEBACiAJCTdBRjlCMjBGMThDRkI1RjQwMEM2NEJFRiAvKiBKU1ZUVFJlZ2lvbkxpc3QuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBRjlCMjBCMThDRkI1
RjMwMEM2NEJFRiAvKiBKU1ZUVFJlZ2lvbkxpc3QuaCAqLzsgfTsKIAkJN0IxMDMzOUUyNTQ5NzIx
NzAwQzhDMUFDIC8qIEdyYXBoaWNzQ29udGV4dEdMQ1YuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCMTAzMzlEMjU0OTcyMDEwMEM4QzFBQyAvKiBHcmFw
aGljc0NvbnRleHRHTENWLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJN0IxMDMzOUYyNTQ5NzIxRTAwQzhDMUFDIC8qIEdyYXBoaWNzQ29udGV4dEdM
Q1ZBTkdMRS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
N0IxMDMzOUMyNTQ5NzIwMTAwQzhDMUFDIC8qIEdyYXBoaWNzQ29udGV4dEdMQ1ZBTkdMRS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTdCNDVBQjUw
MjVGQjkzQkUwMEZEMjdGNCAvKiBHcmFwaGljc0NvbnRleHRHTEFOR0xFRUdMVXRpbGl0aWVzLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCNzc0QzYy
MjVGQjkzNTUwMDkxMzk1RiAvKiBHcmFwaGljc0NvbnRleHRHTEFOR0xFRUdMVXRpbGl0aWVzLmNw
cCAqLzsgfTsKLQkJN0I0NUFCNTUyNUZCQTlERTAwRkQyN0Y0IC8qIEdyYXBoaWNzQ29udGV4dEdM
QU5HTEVFR0xVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDdCNDVBQjU0MjVGQkE5REQwMEZEMjdGNCAvKiBHcmFwaGljc0NvbnRleHRHTEFO
R0xFRUdMVXRpbGl0aWVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJN0I2MDk0REQyNzBDNDRCRDAwNjQ4MzVDIC8qIEFOR0xFVXRpbGl0aWVzLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QkIzNEExNjI1
MzQ1Q0IyMDAwMjlEMDggLyogQU5HTEVVdGlsaXRpZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QjZEQzgxOTI1NzEyRTkyMDAzODBDNzAgLyog
R3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCNkRDODE3MjU3MTJFOTIwMDM4MEM3MCAvKiBH
cmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdCNzMxMUZCMjVDMDkyQjcwMDNCMjc5NiAv
KiBTY29wZWRIaWdoUGVyZm9ybWFuY2VHUFVSZXF1ZXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjczMTFGQTI1QzA5MkI3MDAzQjI3OTYgLyogU2Nv
cGVkSGlnaFBlcmZvcm1hbmNlR1BVUmVxdWVzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdCOEVENUYwMjZGMEMxM0QwMDhBQzAyMyAvKiBDVlV0
aWxpdGllcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
N0I4RUQ1RUQyNkYwQzEyMzAwOEFDMDIzIC8qIENWVXRpbGl0aWVzLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0I5MDQxNzAyNTUwMTE0MjAwNkVF
QjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjkwNDE2RTI1NTAxMTA5MDA2RUVCOEMg
LyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk3QkIzNEExNzI1MzQ1Q0IyMDAwMjlEMDgg
LyogR3JhcGhpY3NDb250ZXh0R0xBTkdMRVV0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0JCMzRBMTYyNTM0NUNCMjAwMDI5RDA4IC8qIEdy
YXBoaWNzQ29udGV4dEdMQU5HTEVVdGlsaXRpZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QkIzNEE0ODI1Mzc3NkNBMDAwMjlEMDggLyogR3Jh
cGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gN0JCMzRBNDUyNTM3NzZDNjAwMDI5RDA4IC8qIEdyYXBoaWNz
Q29udGV4dEdMSW1hZ2VFeHRyYWN0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk3QkI2ODBCQTI1QkExQkU0MDAyQjg3MzggLyogR3JhcGhpY3ND
aGVja3NNYWMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDdCQjY4MEI4MjVCQTFCRTQwMDJCODczOCAvKiBHcmFwaGljc0NoZWNrc01hYy5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdCRTc0MjczODFGQTkw
NkZCQjRGMEYyQyAvKiBKU1NWR0dyYXBoaWNzRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTUwQzRDMDJCRUQ4OTM2RjgxOEUyRjk5IC8qIEpT
U1ZHR3JhcGhpY3NFbGVtZW50LmggKi87IH07CkBAIC01MjcxLDggKzUyNjksOCBAQAogCQlFNDdD
MzkzMjFGRTZFMTA1MDBCQkJDNkIgLyogUmVuZGVyVHJlZUJ1aWxkZXJMaXN0LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDdDMzkyODFGRTZFMEREMDBC
QkJDNkIgLyogUmVuZGVyVHJlZUJ1aWxkZXJMaXN0LmggKi87IH07CiAJCUU0N0MzOTMzMUZFNkUx
MDgwMEJCQkM2QiAvKiBSZW5kZXJUcmVlQnVpbGRlck11bHRpQ29sdW1uLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDdDMzkyNzFGRTZFMERDMDBCQkJD
NkIgLyogUmVuZGVyVHJlZUJ1aWxkZXJNdWx0aUNvbHVtbi5oICovOyB9OwogCQlFNDdDRUJDOTI3
MDZFRjUyMDBCOEQ4RjUgLyogSW5saW5lV2Fsa2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDdDRUJDNzI3MDZFRjUxMDBCOEQ4RjUgLyogSW5saW5l
V2Fsa2VyLmggKi87IH07Ci0JCUU0N0NFQkVBMjcwOURGRDEwMEI4RDhGNSAvKiBSdWxlU2V0QnVp
bGRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQ3
Q0VCRTgyNzA5REZEMDAwQjhEOEY1IC8qIFJ1bGVTZXRCdWlsZGVyLmggKi87IH07CiAJCUU0N0NF
QkUxMjcwOTkxNkQwMEI4RDhGNSAvKiBJbmxpbmVJdGVyYXRvclRleHRCb3guaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0N0NFQkUwMjcwOTkxNkQwMEI4
RDhGNSAvKiBJbmxpbmVJdGVyYXRvclRleHRCb3guaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQlFNDdDRUJFQTI3MDlERkQxMDBCOEQ4RjUgLyogUnVs
ZVNldEJ1aWxkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEU0N0NFQkU4MjcwOURGRDAwMEI4RDhGNSAvKiBSdWxlU2V0QnVpbGRlci5oICovOyB9Owog
CQlFNDdFMjc2NTE2MDM2RUQyMDBFRTJBRkIgLyogRXh0ZW5zaW9uU3R5bGVTaGVldHMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0N0UyNzY0MTYwMzZF
RDIwMEVFMkFGQiAvKiBFeHRlbnNpb25TdHlsZVNoZWV0cy5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUU0N0ZDOEEzMjVCODRENzIwMDU0OTVGQyAv
KiBMb2FkU2NoZWR1bGluZ01vZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEU0N0ZDOEExMjVCODRENzEwMDU0OTVGQyAvKiBMb2FkU2NoZWR1bGluZ01v
ZGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlF
NDgxMzdCOTFEQjNCNTI2MDA1QzU5QkYgLyogU3R5bGVWYWxpZGl0eS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQ4MTM3QjgxREIzQjUyNjAwNUM1OUJG
IC8qIFN0eWxlVmFsaWRpdHkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwpAQCAtMTA2NDksMjAgKzEwNjQ3LDE5IEBACiAJCTdCMTAzMzlBMjU0OTcyMDAw
MEM4QzFBQyAvKiBHcmFwaGljc0NvbnRleHRHTENWQU5HTEUuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJN0IxMDMzOUMyNTQ5NzIwMTAwQzhDMUFDIC8qIEdyYXBoaWNzQ29udGV4dEdMQ1ZBTkdM
RS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBHcmFwaGljc0NvbnRleHRHTENWQU5HTEUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0IxMDMzOUQyNTQ5NzIwMTAwQzhDMUFDIC8qIEdyYXBoaWNz
Q29udGV4dEdMQ1YuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0R0xDVi5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3QjQ1QUI1NDI1RkJBOUREMDBGRDI3RjQgLyogR3Jh
cGhpY3NDb250ZXh0R0xBTkdMRUVHTFV0aWxpdGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBHcmFwaGljc0NvbnRleHRHTEFOR0xFRUdMVXRpbGl0aWVzLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCNjRDMEI0MjU0QzNCMTYwMDA2QjRBRiAvKiBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5QmFzZUNvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2VDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJN0I2REM4MTUyNTcxMkU5MTAwMzgwQzcwIC8qIEdyYXBoaWNzQ29udGV4
dEdMSU9TdXJmYWNlU3dhcENoYWluLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I2REM4MTcyNTcxMkU5MjAwMzgwQzcwIC8qIEdyYXBoaWNz
Q29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTdCNzMxMUZBMjVDMDkyQjcwMDNCMjc5NiAvKiBTY29wZWRIaWdo
UGVyZm9ybWFuY2VHUFVSZXF1ZXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFNjb3BlZEhpZ2hQZXJmb3JtYW5jZUdQVVJlcXVlc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJN0I3NzRDNjIyNUZCOTM1NTAwOTEzOTVGIC8qIEdyYXBoaWNzQ29udGV4dEdMQU5H
TEVFR0xVdGlsaXRpZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0R0xB
TkdMRUVHTFV0aWxpdGllcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCOEVE
NUVEMjZGMEMxMjMwMDhBQzAyMyAvKiBDVlV0aWxpdGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBDVlV0aWxpdGllcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk3QjhFRDVFRjI2RjBDMTIzMDA4QUMwMjMgLyogQ1ZVdGlsaXRpZXMubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBDVlV0aWxpdGllcy5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJN0I5MDQxNkUyNTUwMTEwOTAwNkVFQjhDIC8qIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHlCYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHlCYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTdCQjM0QTE2
MjUzNDVDQjIwMDAyOUQwOCAvKiBHcmFwaGljc0NvbnRleHRHTEFOR0xFVXRpbGl0aWVzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dEdMQU5HTEVVdGls
aXRpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0JCMzRBMTYyNTM0NUNCMjAw
MDI5RDA4IC8qIEFOR0xFVXRpbGl0aWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEFOR0xFVXRpbGl0aWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCQjM0
QTQ1MjUzNzc2QzYwMDAyOUQwOCAvKiBHcmFwaGljc0NvbnRleHRHTEltYWdlRXh0cmFjdG9yLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0b3IuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0JCMzRBNDcyNTM3NzZDNzAwMDI5RDA4IC8qIEdyYXBo
aWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR3JhcGhp
Y3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTdCQjY4MEI3MjVCQTFCRTMwMDJCODczOCAvKiBHcmFwaGljc0NoZWNrc01hYy5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHcmFwaGljc0NoZWNrc01hYy5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCQjY4MEI4MjVCQTFCRTQwMDJCODczOCAv
KiBHcmFwaGljc0NoZWNrc01hYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBH
cmFwaGljc0NoZWNrc01hYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QkNENDJE
ODI3MDU5OUVGMDBFQjIxMjcgLyogQU5HTEVVdGlsaXRpZXMuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gQU5HTEVVdGlsaXRpZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QkNE
NDJEQTI3MDVDOTQ5MDBFQjIxMjcgLyogQU5HTEVVdGlsaXRpZXNDb2NvYS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBBTkdMRVV0aWxpdGllc0NvY29hLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJN0JDRDQyREMyNzA1Qzk0OTAwRUIyMTI3IC8qIEFOR0xFVXRpbGl0aWVzQ29jb2Eu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQU5HTEVVdGlsaXRpZXNDb2NvYS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk3QkU3MjY1QjI1NzYzQjhEMDBFODVEOTggLyogUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eUJhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eUJhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTY1
MzQsMTAgKzE2NTMxLDEwIEBACiAJCUU0N0MzOTJCMUZFNkUwREYwMEJCQkM2QiAvKiBSZW5kZXJU
cmVlQnVpbGRlckxpc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
UmVuZGVyVHJlZUJ1aWxkZXJMaXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RTQ3QzM5MkMxRkU2RTBERjAwQkJCQzZCIC8qIFJlbmRlclRyZWVVcGRhdGVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRlclRyZWVVcGRhdGVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUU0N0NFQkM3MjcwNkVGNTEwMEI4RDhGNSAvKiBJbmxpbmVXYWxr
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5saW5lV2Fsa2VyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUU0N0NFQkU4MjcwOURGRDAwMEI4RDhGNSAvKiBS
dWxlU2V0QnVpbGRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSdWxlU2V0
QnVpbGRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlFNDdDRUJFQjI3MDlERkRD
MDBCOEQ4RjUgLyogUnVsZVNldEJ1aWxkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUnVsZVNl
dEJ1aWxkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNDdDRUJERTI3MDk5
MTY0MDBCOEQ4RjUgLyogSW5saW5lSXRlcmF0b3JUZXh0Qm94LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IElubGluZUl0ZXJhdG9yVGV4dEJveC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUU0N0NFQkUwMjcwOTkxNkQwMEI4RDhGNSAvKiBJbmxpbmVJdGVyYXRvclRleHRCb3guaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5saW5lSXRlcmF0b3JUZXh0Qm94Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUU0N0NFQkU4MjcwOURGRDAwMEI4RDhGNSAv
KiBSdWxlU2V0QnVpbGRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSdWxl
U2V0QnVpbGRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFNDdDRUJFQjI3MDlE
RkRDMDBCOEQ4RjUgLyogUnVsZVNldEJ1aWxkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUnVs
ZVNldEJ1aWxkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNDdFMjc2NDE2
MDM2RUQyMDBFRTJBRkIgLyogRXh0ZW5zaW9uU3R5bGVTaGVldHMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gRXh0ZW5zaW9uU3R5bGVTaGVldHMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRTQ3RTI3NjcxNjAzNkVEQzAwRUUyQUZCIC8qIEV4dGVuc2lvblN0eWxl
U2hlZXRzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEV4dGVuc2lv
blN0eWxlU2hlZXRzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTQ3RkM4QTEy
NUI4NEQ3MTAwNTQ5NUZDIC8qIExvYWRTY2hlZHVsaW5nTW9kZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBMb2FkU2NoZWR1bGluZ01vZGUuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTIyNjczLDEyICsyMjY3MCwxMSBAQAogCQkJaXNhID0gUEJYR3JvdXA7CiAJ
CQljaGlsZHJlbiA9ICgKIAkJCQkyN0UzQzgwNjI1N0Y1RTZFMDBDOTg2QUIgLyogQU5HTEVIZWFk
ZXJzLmggKi8sCisJCQkJN0JDRDQyRDgyNzA1OTlFRjAwRUIyMTI3IC8qIEFOR0xFVXRpbGl0aWVz
LmNwcCAqLywKKwkJCQk3QkIzNEExNjI1MzQ1Q0IyMDAwMjlEMDggLyogQU5HTEVVdGlsaXRpZXMu
aCAqLywKIAkJCQk2RTI3RjI0MzIyOUM5Rjg0MDBGMUY2MzIgLyogRXh0ZW5zaW9uc0dMQU5HTEUu
Y3BwICovLAogCQkJCTZFMjdGMjQ0MjI5QzlGOEQwMEYxRjYzMiAvKiBFeHRlbnNpb25zR0xBTkdM
RS5oICovLAogCQkJCTZFMjdGMjQyMjI5OENFNEIwMEYxRjYzMiAvKiBHcmFwaGljc0NvbnRleHRH
TEFOR0xFLmNwcCAqLywKLQkJCQk3Qjc3NEM2MjI1RkI5MzU1MDA5MTM5NUYgLyogR3JhcGhpY3ND
b250ZXh0R0xBTkdMRUVHTFV0aWxpdGllcy5jcHAgKi8sCi0JCQkJN0I0NUFCNTQyNUZCQTlERDAw
RkQyN0Y0IC8qIEdyYXBoaWNzQ29udGV4dEdMQU5HTEVFR0xVdGlsaXRpZXMuaCAqLywKLQkJCQk3
QkIzNEExNjI1MzQ1Q0IyMDAwMjlEMDggLyogR3JhcGhpY3NDb250ZXh0R0xBTkdMRVV0aWxpdGll
cy5oICovLAogCQkJCTZFMjkwODYxMjI5REI5NTAwMDA5ODZFMiAvKiBUZW1wb3JhcnlBTkdMRVNl
dHRpbmcuY3BwICovLAogCQkJCTZFMjkwODYzMjI5REI5NzAwMDA5ODZFMiAvKiBUZW1wb3JhcnlB
TkdMRVNldHRpbmcuaCAqLywKIAkJCSk7CkBAIC0zMjcwMCw4ICszMjY5Niw2IEBACiAJCQkJQjJB
MDE1QTkwQUY2Q0Q1MzAwNkJDRTBFIC8qIEdyYXBoaWNzQ29udGV4dC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJOTM0OTA3RTQxMjVCQkJDODAwN0YyM0EwIC8qIEdyYXBoaWNzQ29udGV4dENHLmggaW4g
SGVhZGVycyAqLywKIAkJCQkzMTNERTg3MDIzQTk2OTczMDA4RkM0N0IgLyogR3JhcGhpY3NDb250
ZXh0R0wuaCBpbiBIZWFkZXJzICovLAotCQkJCTdCNDVBQjU1MjVGQkE5REUwMEZEMjdGNCAvKiBH
cmFwaGljc0NvbnRleHRHTEFOR0xFRUdMVXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKLQkJCQk3
QkIzNEExNzI1MzQ1Q0IyMDAwMjlEMDggLyogR3JhcGhpY3NDb250ZXh0R0xBTkdMRVV0aWxpdGll
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0MzMzBBMDIxREY4RkFDNjAwRDMzOTVDIC8qIEdyYXBo
aWNzQ29udGV4dEdMQXR0cmlidXRlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0IxMDMzOUUyNTQ5
NzIxNzAwQzhDMUFDIC8qIEdyYXBoaWNzQ29udGV4dEdMQ1YuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTdCMTAzMzlGMjU0OTcyMUUwMEM4QzFBQyAvKiBHcmFwaGljc0NvbnRleHRHTENWQU5HTEUuaCBp
biBIZWFkZXJzICovLApAQCAtMzU2OTAsNiArMzU2ODQsNyBAQAogCQkJCTBGNTRERDA4MTg4MUQ1
RjUwMDNFRURCQiAvKiBUb3VjaC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzFCN0VFMEQyMUI1QzY4
NzAwMzFDMUVGIC8qIFRvdWNoQWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjU0REQwOTE4
ODFENUY1MDAzRUVEQkIgLyogVG91Y2hFdmVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0I2MDk0
REQyNzBDNDRCRDAwNjQ4MzVDIC8qIEFOR0xFVXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRjU0REQwQTE4ODFENUY1MDAzRUVEQkIgLyogVG91Y2hMaXN0LmggaW4gSGVhZGVycyAqLywK
IAkJCQkwNzAzMzRENzE0NTlGRkQ1MDA4RDhENDUgLyogVHJhY2tCYXNlLmggaW4gSGVhZGVycyAq
LywKIAkJCQlCRTg4RTBDMjE3MTVDRTI2MDA2NThEOTggLyogVHJhY2tMaXN0QmFzZS5oIGluIEhl
YWRlcnMgKi8sCkBAIC0zNjU2Nyw3ICszNjU2Miw2IEBACiAJCQkJNTFBOUQ5RTkxOTVCOTMxRjAw
MUIyQjVDIC8qIEdhbWVwYWRNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTgzNzk2NENG
MUY4REI2OUQwMDIxOEVBMCAvKiBHZW9sb2NhdGlvblBvc2l0aW9uRGF0YUlPUy5tbSBpbiBTb3Vy
Y2VzICovLAogCQkJCTZFNzJGNTRFMjI5RENEMTAwMEIzRTE1MSAvKiBHcmFwaGljc0NvbnRleHRH
TEFOR0xFLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTdCNDVBQjUwMjVGQjkzQkUwMEZEMjdGNCAv
KiBHcmFwaGljc0NvbnRleHRHTEFOR0xFRUdMVXRpbGl0aWVzLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTdDM0U1MTBCMThERjhGMzUwMEMxMTJGNyAvKiBIVE1MQ29udmVydGVyLm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQThEMDZCM0EwQTI2NURDRDAwNUU3MjAzIC8qIEhUTUxOYW1lcy5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkxQUM5MDBDMzE5NDNDMEZDMDA4NjI1QjUgLyogSFRUUEhlYWRlck5h
bWVzLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYW5nbGUvQU5HTEVVdGlsaXRpZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYW5nbGUvQU5HTEVVdGlsaXRpZXMuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdjNWY4
YjU4NzczNDkwMDAxNDUzODk0YTAxM2YyMjcxYzk3NWFjYzMKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9BTkdMRVV0aWxpdGllcy5jcHAK
QEAgLTAsMCArMSw0MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJBTkdMRVV0aWxpdGllcy5oIgor
CisjaWYgRU5BQkxFKFdFQkdMKSAmJiBVU0UoQU5HTEUpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworI2lmICFQTEFURk9STShDT0NPQSkKK2Jvb2wgcGxhdGZvcm1Jc0FOR0xFQXZhaWxhYmxlKCkK
K3sKKyAgICByZXR1cm4gdHJ1ZTsKK30KKyNlbmRpZgorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvQU5HTEVVdGlsaXRpZXMu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0FOR0xFVXRpbGl0aWVz
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNjkyYzMzYzJmZGYyYjdkZDhjYzA5NWI0YzEwYWYxNjVhYmQzMWE4NQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xl
L0FOR0xFVXRpbGl0aWVzLmgKQEAgLTAsMCArMSwyNDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJH
TCkgJiYgVVNFKEFOR0xFKQorCisjaW5jbHVkZSAiQU5HTEVIZWFkZXJzLmgiCisjaW5jbHVkZSAi
R3JhcGhpY3NUeXBlc0dMLmgiCisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworY2xhc3MgU2NvcGVkUmVzdG9yZVRleHR1cmVCaW5kaW5nIHsKKyAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShTY29wZWRSZXN0b3JlVGV4dHVyZUJpbmRpbmcpOworcHVi
bGljOgorICAgIFNjb3BlZFJlc3RvcmVUZXh0dXJlQmluZGluZyhHTGVudW0gYmluZGluZ1BvaW50
UXVlcnksIEdMZW51bSBiaW5kaW5nUG9pbnQsIGJvb2wgY29uZGl0aW9uID0gdHJ1ZSkKKyAgICB7
CisgICAgICAgIEFTU0VSVChiaW5kaW5nUG9pbnQgIT0gc3RhdGljX2Nhc3Q8R0xlbnVtPigwdSkp
OworICAgICAgICBpZiAoY29uZGl0aW9uKSB7CisgICAgICAgICAgICBtX2JpbmRpbmdQb2ludCA9
IGJpbmRpbmdQb2ludDsKKyAgICAgICAgICAgIGdsOjpHZXRJbnRlZ2VydihiaW5kaW5nUG9pbnRR
dWVyeSwgcmVpbnRlcnByZXRfY2FzdDxHTGludCo+KCZtX2JpbmRpbmdWYWx1ZSkpOworICAgICAg
ICB9CisgICAgfQorCisgICAgflNjb3BlZFJlc3RvcmVUZXh0dXJlQmluZGluZygpCisgICAgewor
ICAgICAgICBpZiAobV9iaW5kaW5nUG9pbnQpCisgICAgICAgICAgICBnbDo6QmluZFRleHR1cmUo
bV9iaW5kaW5nUG9pbnQsIG1fYmluZGluZ1ZhbHVlKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAg
R0xlbnVtIG1fYmluZGluZ1BvaW50IHsgMCB9OworICAgIEdMdWludCBtX2JpbmRpbmdWYWx1ZSB7
IDB1IH07Cit9OworCisKK2NsYXNzIFNjb3BlZEJ1ZmZlckJpbmRpbmcgeworICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKFNjb3BlZEJ1ZmZlckJpbmRpbmcpOworcHVibGljOgorICAgIFNjb3BlZEJ1
ZmZlckJpbmRpbmcoR0xlbnVtIGJpbmRpbmdQb2ludCwgR0x1aW50IGJpbmRpbmdWYWx1ZSwgYm9v
bCBjb25kaXRpb24gPSB0cnVlKQorICAgIHsKKyAgICAgICAgaWYgKCFjb25kaXRpb24pCisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIGdsOjpHZXRJbnRlZ2VydihxdWVyeShiaW5kaW5nUG9p
bnQpLCByZWludGVycHJldF9jYXN0PEdMaW50Kj4oJm1fYmluZGluZ1ZhbHVlKSk7CisgICAgICAg
IGlmIChiaW5kaW5nVmFsdWUgPT0gbV9iaW5kaW5nVmFsdWUpCisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIG1fYmluZGluZ1BvaW50ID0gYmluZGluZ1BvaW50OworICAgICAgICBnbDo6Qmlu
ZEJ1ZmZlcihtX2JpbmRpbmdQb2ludCwgYmluZGluZ1ZhbHVlKTsKKyAgICB9CisKKyAgICB+U2Nv
cGVkQnVmZmVyQmluZGluZygpCisgICAgeworICAgICAgICBpZiAobV9iaW5kaW5nUG9pbnQpCisg
ICAgICAgICAgICBnbDo6QmluZEJ1ZmZlcihtX2JpbmRpbmdQb2ludCwgbV9iaW5kaW5nVmFsdWUp
OworICAgIH0KKworcHJpdmF0ZToKKyAgICBzdGF0aWMgY29uc3RleHByIEdMZW51bSBxdWVyeShH
TGVudW0gYmluZGluZ1BvaW50KQorICAgIHsKKyAgICAgICAgaWYgKGJpbmRpbmdQb2ludCA9PSBH
TF9QSVhFTF9QQUNLX0JVRkZFUikKKyAgICAgICAgICAgIHJldHVybiBHTF9QSVhFTF9QQUNLX0JV
RkZFUl9CSU5ESU5HOworICAgICAgICBBU1NFUlQoYmluZGluZ1BvaW50ID09IEdMX1BJWEVMX1VO
UEFDS19CVUZGRVIpOworICAgICAgICByZXR1cm4gR0xfUElYRUxfVU5QQUNLX0JVRkZFUl9CSU5E
SU5HOworICAgIH0KKyAgICBHTGludCBtX2JpbmRpbmdQb2ludCB7IDAgfTsKKyAgICBHTHVpbnQg
bV9iaW5kaW5nVmFsdWUgeyAwdSB9OworfTsKK2NsYXNzIFNjb3BlZFJlc3RvcmVSZWFkRnJhbWVi
dWZmZXJCaW5kaW5nIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTY29wZWRSZXN0b3JlUmVh
ZEZyYW1lYnVmZmVyQmluZGluZyk7CitwdWJsaWM6CisgICAgU2NvcGVkUmVzdG9yZVJlYWRGcmFt
ZWJ1ZmZlckJpbmRpbmcoYm9vbCBpc0ZvcldlYkdMMiwgR0x1aW50IHJlc3RvcmVWYWx1ZSkKKyAg
ICAgICAgOiBtX2ZyYW1lYnVmZmVyVGFyZ2V0KGlzRm9yV2ViR0wyID8gR0xfUkVBRF9GUkFNRUJV
RkZFUiA6IEdMX0ZSQU1FQlVGRkVSKQorICAgICAgICAsIG1fYmluZGluZ1ZhbHVlKHJlc3RvcmVW
YWx1ZSkKKyAgICB7CisgICAgfQorICAgIFNjb3BlZFJlc3RvcmVSZWFkRnJhbWVidWZmZXJCaW5k
aW5nKGJvb2wgaXNGb3JXZWJHTDIsIEdMdWludCByZXN0b3JlVmFsdWUsIEdMdWludCB2YWx1ZSkK
KyAgICAgICAgOiBtX2ZyYW1lYnVmZmVyVGFyZ2V0KGlzRm9yV2ViR0wyID8gR0xfUkVBRF9GUkFN
RUJVRkZFUiA6IEdMX0ZSQU1FQlVGRkVSKQorICAgICAgICAsIG1fYmluZGluZ1ZhbHVlKHJlc3Rv
cmVWYWx1ZSkKKyAgICB7CisgICAgICAgIGJpbmRGcmFtZWJ1ZmZlcih2YWx1ZSk7CisgICAgfQor
ICAgIHZvaWQgbWFya0JpbmRpbmdDaGFuZ2VkKCkKKyAgICB7CisgICAgICAgIG1fYmluZGluZ0No
YW5nZWQgPSB0cnVlOworICAgIH0KKyAgICB2b2lkIGJpbmRGcmFtZWJ1ZmZlcihHTHVpbnQgYmlu
ZGluZ1ZhbHVlKQorICAgIHsKKyAgICAgICAgaWYgKCFtX2JpbmRpbmdDaGFuZ2VkICYmIG1fYmlu
ZGluZ1ZhbHVlID09IGJpbmRpbmdWYWx1ZSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
Z2w6OkJpbmRGcmFtZWJ1ZmZlcihtX2ZyYW1lYnVmZmVyVGFyZ2V0LCBiaW5kaW5nVmFsdWUpOwor
ICAgICAgICBtX2JpbmRpbmdDaGFuZ2VkID0gbV9iaW5kaW5nVmFsdWUgIT0gYmluZGluZ1ZhbHVl
OworICAgIH0KKyAgICBHTHVpbnQgZnJhbWVidWZmZXJUYXJnZXQoKSBjb25zdCB7IHJldHVybiBt
X2ZyYW1lYnVmZmVyVGFyZ2V0OyB9CisgICAgflNjb3BlZFJlc3RvcmVSZWFkRnJhbWVidWZmZXJC
aW5kaW5nKCkKKyAgICB7CisgICAgICAgIGlmIChtX2JpbmRpbmdDaGFuZ2VkKQorICAgICAgICAg
ICAgZ2w6OkJpbmRGcmFtZWJ1ZmZlcihtX2ZyYW1lYnVmZmVyVGFyZ2V0LCBtX2JpbmRpbmdWYWx1
ZSk7CisgICAgfQorcHJpdmF0ZToKKyAgICBjb25zdCBHTGVudW0gbV9mcmFtZWJ1ZmZlclRhcmdl
dDsKKyAgICBHTHVpbnQgbV9iaW5kaW5nVmFsdWUgeyAwdSB9OworICAgIGJvb2wgbV9iaW5kaW5n
Q2hhbmdlZCB7IGZhbHNlIH07Cit9OworCitjbGFzcyBTY29wZWRQaXhlbFN0b3JhZ2VNb2RlIHsK
KyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTY29wZWRQaXhlbFN0b3JhZ2VNb2RlKTsKK3B1Ymxp
YzoKKyAgICBleHBsaWNpdCBTY29wZWRQaXhlbFN0b3JhZ2VNb2RlKEdMZW51bSBuYW1lLCBib29s
IGNvbmRpdGlvbiA9IHRydWUpCisgICAgICAgIDogbV9uYW1lKGNvbmRpdGlvbiA/IG5hbWUgOiAw
KQorICAgIHsKKyAgICAgICAgaWYgKG1fbmFtZSkKKyAgICAgICAgICAgIGdsOjpHZXRJbnRlZ2Vy
dihtX25hbWUsICZtX29yaWdpbmFsVmFsdWUpOworICAgIH0KKyAgICBTY29wZWRQaXhlbFN0b3Jh
Z2VNb2RlKEdMZW51bSBuYW1lLCBHTGludCB2YWx1ZSwgYm9vbCBjb25kaXRpb24gPSB0cnVlKQor
ICAgICAgICA6IG1fbmFtZShjb25kaXRpb24gPyBuYW1lIDogMCkKKyAgICB7CisgICAgICAgIGlm
IChtX25hbWUpIHsKKyAgICAgICAgICAgIGdsOjpHZXRJbnRlZ2VydihtX25hbWUsICZtX29yaWdp
bmFsVmFsdWUpOworICAgICAgICAgICAgcGl4ZWxTdG9yZSh2YWx1ZSk7CisgICAgICAgIH0KKyAg
ICB9CisgICAgflNjb3BlZFBpeGVsU3RvcmFnZU1vZGUoKQorICAgIHsKKyAgICAgICAgaWYgKG1f
bmFtZSAmJiBtX3ZhbHVlQ2hhbmdlZCkKKyAgICAgICAgICAgIGdsOjpQaXhlbFN0b3JlaShtX25h
bWUsIG1fb3JpZ2luYWxWYWx1ZSk7CisgICAgfQorICAgIHZvaWQgcGl4ZWxTdG9yZShHTGludCB2
YWx1ZSkKKyAgICB7CisgICAgICAgIEFTU0VSVChtX25hbWUpOworICAgICAgICBpZiAoIW1fdmFs
dWVDaGFuZ2VkICYmIG1fb3JpZ2luYWxWYWx1ZSA9PSB2YWx1ZSkKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgZ2w6OlBpeGVsU3RvcmVpKG1fbmFtZSwgdmFsdWUpOworICAgICAgICBtX3Zh
bHVlQ2hhbmdlZCA9IG1fb3JpZ2luYWxWYWx1ZSAhPSB2YWx1ZTsKKyAgICB9CisgICAgb3BlcmF0
b3IgR0xpbnQoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fbmFtZSAmJiAhbV92YWx1
ZUNoYW5nZWQpOworICAgICAgICByZXR1cm4gbV9vcmlnaW5hbFZhbHVlOworICAgIH0KK3ByaXZh
dGU6CisgICAgY29uc3QgR0xlbnVtIG1fbmFtZTsKKyAgICBib29sIG1fdmFsdWVDaGFuZ2VkIHsg
ZmFsc2UgfTsKKyAgICBHTGludCBtX29yaWdpbmFsVmFsdWUgeyAwIH07Cit9OworCitjbGFzcyBT
Y29wZWRUZXh0dXJlIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTY29wZWRUZXh0dXJlKTsK
K3B1YmxpYzoKKyAgICBTY29wZWRUZXh0dXJlKCkKKyAgICB7CisgICAgICAgIGdsOjpHZW5UZXh0
dXJlcygxLCAmbV9vYmplY3QpOworICAgIH0KKyAgICB+U2NvcGVkVGV4dHVyZSgpCisgICAgewor
ICAgICAgICBnbDo6RGVsZXRlVGV4dHVyZXMoMSwgJm1fb2JqZWN0KTsKKyAgICB9CisgICAgb3Bl
cmF0b3IgR0x1aW50KCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX29iamVjdDsKKyAg
ICB9Citwcml2YXRlOgorICAgIEdMdWludCBtX29iamVjdCB7IDB1IH07Cit9OworCitjbGFzcyBT
Y29wZWRGcmFtZWJ1ZmZlciB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU2NvcGVkRnJhbWVi
dWZmZXIpOworcHVibGljOgorICAgIFNjb3BlZEZyYW1lYnVmZmVyKCkKKyAgICB7CisgICAgICAg
IGdsOjpHZW5GcmFtZWJ1ZmZlcnMoMSwgJm1fb2JqZWN0KTsKKyAgICB9CisgICAgflNjb3BlZEZy
YW1lYnVmZmVyKCkKKyAgICB7CisgICAgICAgIGdsOjpEZWxldGVGcmFtZWJ1ZmZlcnMoMSwgJm1f
b2JqZWN0KTsKKyAgICB9CisgICAgb3BlcmF0b3IgR0x1aW50KCkgY29uc3QKKyAgICB7CisgICAg
ICAgIHJldHVybiBtX29iamVjdDsKKyAgICB9Citwcml2YXRlOgorICAgIEdMdWludCBtX29iamVj
dCB7IDAgfTsKK307CisKK2NsYXNzIFNjb3BlZEdMRmVuY2UgeworICAgIFdURl9NQUtFX05PTkNP
UFlBQkxFKFNjb3BlZEdMRmVuY2UpOworcHVibGljOgorICAgIFNjb3BlZEdMRmVuY2UoKSA9IGRl
ZmF1bHQ7CisgICAgU2NvcGVkR0xGZW5jZShTY29wZWRHTEZlbmNlJiYgb3RoZXIpCisgICAgICAg
IDogbV9vYmplY3Qoc3RkOjpleGNoYW5nZShvdGhlci5tX29iamVjdCwgeyB9KSkKKyAgICB7Cisg
ICAgfQorICAgIH5TY29wZWRHTEZlbmNlKCkgeyByZXNldCgpOyB9CisgICAgU2NvcGVkR0xGZW5j
ZSYgb3BlcmF0b3I9KFNjb3BlZEdMRmVuY2UmJiBvdGhlcikKKyAgICB7CisgICAgICAgIGlmICh0
aGlzICE9ICZvdGhlcikgeworICAgICAgICAgICAgcmVzZXQoKTsKKyAgICAgICAgICAgIG1fb2Jq
ZWN0ID0gc3RkOjpleGNoYW5nZShvdGhlci5tX29iamVjdCwgeyB9KTsKKyAgICAgICAgfQorICAg
ICAgICByZXR1cm4gKnRoaXM7CisgICAgfQorICAgIHZvaWQgcmVzZXQoKQorICAgIHsKKyAgICAg
ICAgaWYgKG1fb2JqZWN0KSB7CisgICAgICAgICAgICBnbDo6RGVsZXRlU3luYyhtX29iamVjdCk7
CisgICAgICAgICAgICBtX29iamVjdCA9IHsgfTsKKyAgICAgICAgfQorICAgIH0KKyAgICB2b2lk
IGFiYW5kb24oKSB7IG1fb2JqZWN0ID0geyB9OyB9CisgICAgdm9pZCBmZW5jZVN5bmMoKQorICAg
IHsKKyAgICAgICAgcmVzZXQoKTsKKyAgICAgICAgbV9vYmplY3QgPSBnbDo6RmVuY2VTeW5jKEdM
X1NZTkNfR1BVX0NPTU1BTkRTX0NPTVBMRVRFLCAwKTsKKyAgICB9CisgICAgb3BlcmF0b3IgR0xz
eW5jKCkgY29uc3QgeyByZXR1cm4gbV9vYmplY3Q7IH0KKyAgICBvcGVyYXRvciBib29sKCkgY29u
c3QgeyByZXR1cm4gbV9vYmplY3Q7IH0KK3ByaXZhdGU6CisgICAgR0xzeW5jIG1fb2JqZWN0IHsg
fTsKK307CisKK2Jvb2wgcGxhdGZvcm1Jc0FOR0xFQXZhaWxhYmxlKCk7CisKK30KKworI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFw
aGljc0NvbnRleHRHTEFOR0xFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwCmluZGV4IDAwNmI4YTNlZTYwMTUxOGIx
YjY1MmFlNzdjNTQ5MTllMDY0N2RjNWYuLmQzM2MwY2ZmZGI5ZTlhNTcxMjJhNTA0NWM3ZDQyNDI4
ZTVmNzgzOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Fu
Z2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwCkBAIC0zMCw4ICsz
MCw4IEBACiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0R0wuaCIKIAogI2luY2x1ZGUgIkFOR0xF
SGVhZGVycy5oIgorI2luY2x1ZGUgIkFOR0xFVXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAiRXh0ZW5z
aW9uc0dMQU5HTEUuaCIKLSNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRHTEFOR0xFVXRpbGl0aWVz
LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaCIKICNpbmNsdWRlICJJbWFn
ZUJ1ZmZlci5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIKQEAgLTc1LDYgKzc1LDQ5IEBAIHN0YXRp
YyB2b2lkIHdpcGVBbHBoYUNoYW5uZWxGcm9tUGl4ZWxzKGludCB3aWR0aCwgaW50IGhlaWdodCwg
dW5zaWduZWQgY2hhciogcGl4CiB9CiAjZW5kaWYKIAorYm9vbCBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6cmVsZWFzZVRocmVhZFJlc291cmNlcyhSZWxlYXNlVGhyZWFkUmVzb3VyY2VCZWhhdmlv
ciByZWxlYXNlQmVoYXZpb3IpCit7CisgICAgcGxhdGZvcm1SZWxlYXNlVGhyZWFkUmVzb3VyY2Vz
KCk7CisKKyAgICBpZiAoIXBsYXRmb3JtSXNBTkdMRUF2YWlsYWJsZSgpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICAvLyBVbnNldCB0aGUgRUdMIGN1cnJlbnQgY29udGV4dCwgc2luY2Ug
dGhlIG5leHQgYWNjZXNzIG1pZ2h0IGJlIGZyb20gYW5vdGhlciB0aHJlYWQsIGFuZCB0aGUKKyAg
ICAvLyBjb250ZXh0IGNhbm5vdCBiZSBjdXJyZW50IG9uIG11bHRpcGxlIHRocmVhZHMuCisgICAg
aWYgKHJlbGVhc2VCZWhhdmlvciA9PSBSZWxlYXNlVGhyZWFkUmVzb3VyY2VCZWhhdmlvcjo6UmVs
ZWFzZUN1cnJlbnRDb250ZXh0KSB7CisgICAgICAgIGlmIChFR0xfR2V0Q3VycmVudENvbnRleHQo
KSA9PSBFR0xfTk9fQ09OVEVYVCkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAv
LyBBdCB0aGUgdGltZSBvZiB3cml0aW5nLCBBTkdMRSBkb2VzIG5vdCBmbHVzaCBvbiBNYWtlQ3Vy
cmVudC4gU2luY2Ugd2UgYXJlCisgICAgICAgIC8vIHBvdGVudGlhbGx5IHN3aXRjaGluZyB0aHJl
YWRzLCB3ZSBzaG91bGQgZmx1c2guCisgICAgICAgIC8vIE5vdGU6IEhlcmUgd2UgYXNzdW1lIGFs
c28gdGhhdCBBTkdMRSBoYXMgb25seSBvbmUgcGxhdGZvcm0gY29udGV4dCAtLSBvdGhlcndpc2UK
KyAgICAgICAgLy8gd2Ugd291bGQgbmVlZCB0byBmbHVzaCBlYWNoIEVHTCBjb250ZXh0IHRoYXQg
aGFzIGJlZW4gdXNlZC4KKyAgICAgICAgZ2w6OkZsdXNoKCk7CisgICAgICAgIEVHTERpc3BsYXkg
ZGlzcGxheSA9IEVHTF9HZXREaXNwbGF5KEVHTF9ERUZBVUxUX0RJU1BMQVkpOworICAgICAgICBp
ZiAoZGlzcGxheSA9PSBFR0xfTk9fRElTUExBWSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOwor
ICAgICAgICByZXR1cm4gRUdMX01ha2VDdXJyZW50KGRpc3BsYXksIEVHTF9OT19TVVJGQUNFLCBF
R0xfTk9fU1VSRkFDRSwgRUdMX05PX0NPTlRFWFQpOworICAgIH0KKyAgICBpZiAocmVsZWFzZUJl
aGF2aW9yID09IFJlbGVhc2VUaHJlYWRSZXNvdXJjZUJlaGF2aW9yOjpUZXJtaW5hdGVBbmRSZWxl
YXNlVGhyZWFkUmVzb3VyY2VzKSB7CisgICAgICAgIEVHTERpc3BsYXkgZGlzcGxheSA9IEVHTF9H
ZXREaXNwbGF5KEVHTF9ERUZBVUxUX0RJU1BMQVkpOworICAgICAgICBpZiAoZGlzcGxheSAhPSBF
R0xfTk9fRElTUExBWSkgeworICAgICAgICAgICAgaWYgKEVHTF9HZXRDdXJyZW50Q29udGV4dCgp
ICE9IEVHTF9OT19DT05URVhUKSB7CisgICAgICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7IC8vIEFsbCByZXNvdXJjZXMgbXVzdCBoYXZlIGJlZW4gZGVzdHJveWVkLgorICAgICAgICAg
ICAgICAgIEVHTF9NYWtlQ3VycmVudChkaXNwbGF5LCBFR0xfTk9fU1VSRkFDRSwgRUdMX05PX1NV
UkZBQ0UsIEVHTF9OT19DT05URVhUKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIEVHTF9U
ZXJtaW5hdGUoZGlzcGxheSk7CisgICAgICAgIH0KKyAgICB9CisgICAgLy8gQ2FsbGVkIHdoZW4g
d2UgZG8gbm90IGtub3cgaWYgd2Ugd2lsbCBldmVyIHNlZSBhbm90aGVyIGNhbGwgZnJvbSB0aGlz
IHRocmVhZCBhZ2Fpbi4KKyAgICAvLyBVbnNldCB0aGUgRUdMIGN1cnJlbnQgY29udGV4dCBieSBy
ZWxlYXNpbmcgd2hvbGUgRUdMIHRocmVhZCBzdGF0ZS4KKyAgICByZXR1cm4gRUdMX1JlbGVhc2VU
aHJlYWQoKTsKK30KKworI2lmICFQTEFURk9STShDT0NPQSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OnBsYXRmb3JtUmVsZWFzZVRocmVhZFJlc291cmNlcygpCit7Cit9CisjZW5kaWYK
Kwogc3RkOjpvcHRpb25hbDxQaXhlbEJ1ZmZlcj4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJl
YWRQaXhlbHNGb3JQYWludFJlc3VsdHMoKQogewogICAgIFBpeGVsQnVmZmVyRm9ybWF0IGZvcm1h
dCB7IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZCwgUGl4ZWxGb3JtYXQ6
OlJHQkE4LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdM
RUVHTFV0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmds
ZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFRUdMVXRpbGl0aWVzLmNwcApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggYjViZjgzN2QyNWU0M2QwNjU4ZDZiNjg1MWRkNDhhMjE5ODY5NmY3Yi4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFRUdMVXRp
bGl0aWVzLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDkxICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5j
bHVkZSAiR3JhcGhpY3NDb250ZXh0R0xBTkdMRUVHTFV0aWxpdGllcy5oIgotCi0jaW5jbHVkZSAi
QU5HTEVIZWFkZXJzLmgiCi0jaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KLQotI2lmIEVOQUJM
RShXRUJHTCkgJiYgVVNFKEFOR0xFKQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0YXRpYyB1
bnNpZ25lZCBkZWZhdWx0RGlzcGxheVJlZkNvdW50Owotc3RhdGljIHZvaWQqIGRlZmF1bHREaXNw
bGF5ID0gbnVsbHB0cjsKLQotc3RhdGljIHZvaWQgcmVmRGVmYXVsdERpc3BsYXkodm9pZCogZGlz
cGxheSkKLXsKLSAgICBBU1NFUlQoZGlzcGxheSAhPSBudWxscHRyKTsKLSAgICBBU1NFUlQoZGVm
YXVsdERpc3BsYXkgPT0gZGlzcGxheSB8fCAoIWRlZmF1bHREaXNwbGF5ICYmICFkZWZhdWx0RGlz
cGxheVJlZkNvdW50KSk7Ci0gICAgZGVmYXVsdERpc3BsYXlSZWZDb3VudCsrOwotICAgIGRlZmF1
bHREaXNwbGF5ID0gZGlzcGxheTsKLX0KLQotc3RhdGljIHZvaWQgdW5yZWZEZWZhdWx0RGlzcGxh
eUlmTmVlZGVkKHZvaWQqIGRpc3BsYXkpCi17Ci0gICAgaWYgKCFkaXNwbGF5KQotICAgICAgICBy
ZXR1cm47Ci0gICAgQVNTRVJUKGRlZmF1bHREaXNwbGF5ID09IGRpc3BsYXkpOwotICAgIEFTU0VS
VChkZWZhdWx0RGlzcGxheVJlZkNvdW50KTsKLSAgICBkZWZhdWx0RGlzcGxheVJlZkNvdW50LS07
Ci19Ci0KLVNjb3BlZEVHTERlZmF1bHREaXNwbGF5JiBTY29wZWRFR0xEZWZhdWx0RGlzcGxheTo6
b3BlcmF0b3I9KFNjb3BlZEVHTERlZmF1bHREaXNwbGF5JiYgb3RoZXIpCi17Ci0gICAgaWYgKHRo
aXMgIT0gJm90aGVyKSB7Ci0gICAgICAgIHVucmVmRGVmYXVsdERpc3BsYXlJZk5lZWRlZChtX2Rp
c3BsYXkpOwotICAgICAgICBtX2Rpc3BsYXkgPSBzdGQ6OmV4Y2hhbmdlKG90aGVyLm1fZGlzcGxh
eSwgbnVsbHB0cik7Ci0gICAgfQotICAgIHJldHVybiAqdGhpczsKLX0KLQotU2NvcGVkRUdMRGVm
YXVsdERpc3BsYXk6OlNjb3BlZEVHTERlZmF1bHREaXNwbGF5KHZvaWQqIGRpc3BsYXkpCi0gICAg
OiBtX2Rpc3BsYXkoZGlzcGxheSkKLXsKLSAgICByZWZEZWZhdWx0RGlzcGxheShtX2Rpc3BsYXkp
OwotfQotCi1TY29wZWRFR0xEZWZhdWx0RGlzcGxheTo6flNjb3BlZEVHTERlZmF1bHREaXNwbGF5
KCkKLXsKLSAgICB1bnJlZkRlZmF1bHREaXNwbGF5SWZOZWVkZWQobV9kaXNwbGF5KTsKLX0KLQot
dm9pZCBTY29wZWRFR0xEZWZhdWx0RGlzcGxheTo6cmVsZWFzZUFsbFJlc291cmNlc0lmVW51c2Vk
KCkKLXsKLSAgICBpZiAoZGVmYXVsdERpc3BsYXlSZWZDb3VudCkKLSAgICAgICAgcmV0dXJuOwot
ICAgIGlmIChkZWZhdWx0RGlzcGxheSA9PSBudWxscHRyKQotICAgICAgICByZXR1cm47Ci0gICAg
Ym9vbCByZXN1bHQgPSBFR0xfVGVybWluYXRlKGRlZmF1bHREaXNwbGF5KTsKLSAgICBBU1NFUlRf
VU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKLSAgICByZXN1bHQgPSBFR0xfUmVsZWFzZVRocmVhZCgp
OwotICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOwotICAgIGRlZmF1bHREaXNwbGF5
ID0gbnVsbHB0cjsKLX0KLQotfQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEVFR0xVdGlsaXRp
ZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29u
dGV4dEdMQU5HTEVFR0xVdGlsaXRpZXMuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
OTQ0MjA1MjBiZGU4YmEyZWU4NWQ2ODgyZjY1OGQ0NTgyZGJjZWVhMC4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFRUdMVXRpbGl0aWVzLmgKKysrIC9k
ZXYvbnVsbApAQCAtMSw2MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
Ci0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR0wpICYmIFVTRShB
TkdMRSkKLQotI2luY2x1ZGUgPGFsZ29yaXRobT4KLSNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUu
aD4KLQotLy8gQ3VycmVudGx5IHRoaXMgbm90IHVzaW5nIEFOR0xFIGhlYWRlcnMgc2luY2UgdGhp
cyBpcyBleHBvcnRlZCBoZWFkZXIgYW5kIHdlIGRvIG5vdCBleHBvcnQgQU5HTEUgaGVhZGVycy4K
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBTY29wZWRFR0xEZWZhdWx0RGlzcGxheSB7
Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU2NvcGVkRUdMRGVmYXVsdERpc3BsYXkpOwotcHVi
bGljOgotICAgIHN0YXRpYyBTY29wZWRFR0xEZWZhdWx0RGlzcGxheSBhZG9wdEluaXRpYWxpemVk
RGlzcGxheSh2b2lkKiBkaXNwbGF5KQotICAgIHsKLSAgICAgICAgQVNTRVJUKGRpc3BsYXkgIT0g
bnVsbHB0cik7Ci0gICAgICAgIHJldHVybiBTY29wZWRFR0xEZWZhdWx0RGlzcGxheShkaXNwbGF5
KTsKLSAgICB9Ci0gICAgU2NvcGVkRUdMRGVmYXVsdERpc3BsYXkoKSA9IGRlZmF1bHQ7Ci0gICAg
U2NvcGVkRUdMRGVmYXVsdERpc3BsYXkoU2NvcGVkRUdMRGVmYXVsdERpc3BsYXkmJiBvdGhlcikK
LSAgICAgICAgOiBtX2Rpc3BsYXkoc3RkOjpleGNoYW5nZShvdGhlci5tX2Rpc3BsYXksIG51bGxw
dHIpKQotICAgIHsKLSAgICB9Ci0gICAgflNjb3BlZEVHTERlZmF1bHREaXNwbGF5KCk7Ci0gICAg
U2NvcGVkRUdMRGVmYXVsdERpc3BsYXkmIG9wZXJhdG9yPShTY29wZWRFR0xEZWZhdWx0RGlzcGxh
eSYmKTsKLSAgICBvcGVyYXRvciB2b2lkKigpIGNvbnN0IHsgcmV0dXJuIG1fZGlzcGxheTsgfQot
ICAgIG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiBtX2Rpc3BsYXkgIT0gbnVsbHB0cjsg
fQotICAgIHN0YXRpYyB2b2lkIHJlbGVhc2VBbGxSZXNvdXJjZXNJZlVudXNlZCgpOwotcHJpdmF0
ZToKLSAgICBTY29wZWRFR0xEZWZhdWx0RGlzcGxheSh2b2lkKik7Ci0gICAgdm9pZCogbV9kaXNw
bGF5IHsgbnVsbHB0ciB9OwotfTsKLQotfQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEVVdGls
aXRpZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNz
Q29udGV4dEdMQU5HTEVVdGlsaXRpZXMuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
ZGM3OWYxZTI0MjNmNTIxM2IwMzAxYzhjODBhNTRmNmJjYzQ0OWU5Mi4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFVXRpbGl0aWVzLmgKKysrIC9kZXYv
bnVsbApAQCAtMSwyNDUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQot
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQkdMKSAmJiBVU0UoQU5H
TEUpCi0KLSNpbmNsdWRlICJBTkdMRUhlYWRlcnMuaCIKLSNpbmNsdWRlICJHcmFwaGljc1R5cGVz
R0wuaCIKLSNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUg
ewotCi1jbGFzcyBTY29wZWRSZXN0b3JlVGV4dHVyZUJpbmRpbmcgewotICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKFNjb3BlZFJlc3RvcmVUZXh0dXJlQmluZGluZyk7Ci1wdWJsaWM6Ci0gICAgU2Nv
cGVkUmVzdG9yZVRleHR1cmVCaW5kaW5nKEdMZW51bSBiaW5kaW5nUG9pbnRRdWVyeSwgR0xlbnVt
IGJpbmRpbmdQb2ludCwgYm9vbCBjb25kaXRpb24gPSB0cnVlKQotICAgIHsKLSAgICAgICAgQVNT
RVJUKGJpbmRpbmdQb2ludCAhPSBzdGF0aWNfY2FzdDxHTGVudW0+KDB1KSk7Ci0gICAgICAgIGlm
IChjb25kaXRpb24pIHsKLSAgICAgICAgICAgIG1fYmluZGluZ1BvaW50ID0gYmluZGluZ1BvaW50
OwotICAgICAgICAgICAgZ2w6OkdldEludGVnZXJ2KGJpbmRpbmdQb2ludFF1ZXJ5LCByZWludGVy
cHJldF9jYXN0PEdMaW50Kj4oJm1fYmluZGluZ1ZhbHVlKSk7Ci0gICAgICAgIH0KLSAgICB9Ci0K
LSAgICB+U2NvcGVkUmVzdG9yZVRleHR1cmVCaW5kaW5nKCkKLSAgICB7Ci0gICAgICAgIGlmICht
X2JpbmRpbmdQb2ludCkKLSAgICAgICAgICAgIGdsOjpCaW5kVGV4dHVyZShtX2JpbmRpbmdQb2lu
dCwgbV9iaW5kaW5nVmFsdWUpOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBHTGVudW0gbV9iaW5k
aW5nUG9pbnQgeyAwIH07Ci0gICAgR0x1aW50IG1fYmluZGluZ1ZhbHVlIHsgMHUgfTsKLX07Ci0K
LQotY2xhc3MgU2NvcGVkQnVmZmVyQmluZGluZyB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUo
U2NvcGVkQnVmZmVyQmluZGluZyk7Ci1wdWJsaWM6Ci0gICAgU2NvcGVkQnVmZmVyQmluZGluZyhH
TGVudW0gYmluZGluZ1BvaW50LCBHTHVpbnQgYmluZGluZ1ZhbHVlLCBib29sIGNvbmRpdGlvbiA9
IHRydWUpCi0gICAgewotICAgICAgICBpZiAoIWNvbmRpdGlvbikKLSAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgZ2w6OkdldEludGVnZXJ2KHF1ZXJ5KGJpbmRpbmdQb2ludCksIHJlaW50ZXJw
cmV0X2Nhc3Q8R0xpbnQqPigmbV9iaW5kaW5nVmFsdWUpKTsKLSAgICAgICAgaWYgKGJpbmRpbmdW
YWx1ZSA9PSBtX2JpbmRpbmdWYWx1ZSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgbV9i
aW5kaW5nUG9pbnQgPSBiaW5kaW5nUG9pbnQ7Ci0gICAgICAgIGdsOjpCaW5kQnVmZmVyKG1fYmlu
ZGluZ1BvaW50LCBiaW5kaW5nVmFsdWUpOwotICAgIH0KLQotICAgIH5TY29wZWRCdWZmZXJCaW5k
aW5nKCkKLSAgICB7Ci0gICAgICAgIGlmIChtX2JpbmRpbmdQb2ludCkKLSAgICAgICAgICAgIGds
OjpCaW5kQnVmZmVyKG1fYmluZGluZ1BvaW50LCBtX2JpbmRpbmdWYWx1ZSk7Ci0gICAgfQotCi1w
cml2YXRlOgotICAgIHN0YXRpYyBjb25zdGV4cHIgR0xlbnVtIHF1ZXJ5KEdMZW51bSBiaW5kaW5n
UG9pbnQpCi0gICAgewotICAgICAgICBpZiAoYmluZGluZ1BvaW50ID09IEdMX1BJWEVMX1BBQ0tf
QlVGRkVSKQotICAgICAgICAgICAgcmV0dXJuIEdMX1BJWEVMX1BBQ0tfQlVGRkVSX0JJTkRJTkc7
Ci0gICAgICAgIEFTU0VSVChiaW5kaW5nUG9pbnQgPT0gR0xfUElYRUxfVU5QQUNLX0JVRkZFUik7
Ci0gICAgICAgIHJldHVybiBHTF9QSVhFTF9VTlBBQ0tfQlVGRkVSX0JJTkRJTkc7Ci0gICAgfQot
ICAgIEdMaW50IG1fYmluZGluZ1BvaW50IHsgMCB9OwotICAgIEdMdWludCBtX2JpbmRpbmdWYWx1
ZSB7IDB1IH07Ci19OwotY2xhc3MgU2NvcGVkUmVzdG9yZVJlYWRGcmFtZWJ1ZmZlckJpbmRpbmcg
ewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFNjb3BlZFJlc3RvcmVSZWFkRnJhbWVidWZmZXJC
aW5kaW5nKTsKLXB1YmxpYzoKLSAgICBTY29wZWRSZXN0b3JlUmVhZEZyYW1lYnVmZmVyQmluZGlu
Zyhib29sIGlzRm9yV2ViR0wyLCBHTHVpbnQgcmVzdG9yZVZhbHVlKQotICAgICAgICA6IG1fZnJh
bWVidWZmZXJUYXJnZXQoaXNGb3JXZWJHTDIgPyBHTF9SRUFEX0ZSQU1FQlVGRkVSIDogR0xfRlJB
TUVCVUZGRVIpCi0gICAgICAgICwgbV9iaW5kaW5nVmFsdWUocmVzdG9yZVZhbHVlKQotICAgIHsK
LSAgICB9Ci0gICAgU2NvcGVkUmVzdG9yZVJlYWRGcmFtZWJ1ZmZlckJpbmRpbmcoYm9vbCBpc0Zv
cldlYkdMMiwgR0x1aW50IHJlc3RvcmVWYWx1ZSwgR0x1aW50IHZhbHVlKQotICAgICAgICA6IG1f
ZnJhbWVidWZmZXJUYXJnZXQoaXNGb3JXZWJHTDIgPyBHTF9SRUFEX0ZSQU1FQlVGRkVSIDogR0xf
RlJBTUVCVUZGRVIpCi0gICAgICAgICwgbV9iaW5kaW5nVmFsdWUocmVzdG9yZVZhbHVlKQotICAg
IHsKLSAgICAgICAgYmluZEZyYW1lYnVmZmVyKHZhbHVlKTsKLSAgICB9Ci0gICAgdm9pZCBtYXJr
QmluZGluZ0NoYW5nZWQoKQotICAgIHsKLSAgICAgICAgbV9iaW5kaW5nQ2hhbmdlZCA9IHRydWU7
Ci0gICAgfQotICAgIHZvaWQgYmluZEZyYW1lYnVmZmVyKEdMdWludCBiaW5kaW5nVmFsdWUpCi0g
ICAgewotICAgICAgICBpZiAoIW1fYmluZGluZ0NoYW5nZWQgJiYgbV9iaW5kaW5nVmFsdWUgPT0g
YmluZGluZ1ZhbHVlKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBnbDo6QmluZEZyYW1l
YnVmZmVyKG1fZnJhbWVidWZmZXJUYXJnZXQsIGJpbmRpbmdWYWx1ZSk7Ci0gICAgICAgIG1fYmlu
ZGluZ0NoYW5nZWQgPSBtX2JpbmRpbmdWYWx1ZSAhPSBiaW5kaW5nVmFsdWU7Ci0gICAgfQotICAg
IEdMdWludCBmcmFtZWJ1ZmZlclRhcmdldCgpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWVidWZmZXJU
YXJnZXQ7IH0KLSAgICB+U2NvcGVkUmVzdG9yZVJlYWRGcmFtZWJ1ZmZlckJpbmRpbmcoKQotICAg
IHsKLSAgICAgICAgaWYgKG1fYmluZGluZ0NoYW5nZWQpCi0gICAgICAgICAgICBnbDo6QmluZEZy
YW1lYnVmZmVyKG1fZnJhbWVidWZmZXJUYXJnZXQsIG1fYmluZGluZ1ZhbHVlKTsKLSAgICB9Ci1w
cml2YXRlOgotICAgIGNvbnN0IEdMZW51bSBtX2ZyYW1lYnVmZmVyVGFyZ2V0OwotICAgIEdMdWlu
dCBtX2JpbmRpbmdWYWx1ZSB7IDB1IH07Ci0gICAgYm9vbCBtX2JpbmRpbmdDaGFuZ2VkIHsgZmFs
c2UgfTsKLX07Ci0KLWNsYXNzIFNjb3BlZFBpeGVsU3RvcmFnZU1vZGUgewotICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKFNjb3BlZFBpeGVsU3RvcmFnZU1vZGUpOwotcHVibGljOgotICAgIGV4cGxp
Y2l0IFNjb3BlZFBpeGVsU3RvcmFnZU1vZGUoR0xlbnVtIG5hbWUsIGJvb2wgY29uZGl0aW9uID0g
dHJ1ZSkKLSAgICAgICAgOiBtX25hbWUoY29uZGl0aW9uID8gbmFtZSA6IDApCi0gICAgewotICAg
ICAgICBpZiAobV9uYW1lKQotICAgICAgICAgICAgZ2w6OkdldEludGVnZXJ2KG1fbmFtZSwgJm1f
b3JpZ2luYWxWYWx1ZSk7Ci0gICAgfQotICAgIFNjb3BlZFBpeGVsU3RvcmFnZU1vZGUoR0xlbnVt
IG5hbWUsIEdMaW50IHZhbHVlLCBib29sIGNvbmRpdGlvbiA9IHRydWUpCi0gICAgICAgIDogbV9u
YW1lKGNvbmRpdGlvbiA/IG5hbWUgOiAwKQotICAgIHsKLSAgICAgICAgaWYgKG1fbmFtZSkgewot
ICAgICAgICAgICAgZ2w6OkdldEludGVnZXJ2KG1fbmFtZSwgJm1fb3JpZ2luYWxWYWx1ZSk7Ci0g
ICAgICAgICAgICBwaXhlbFN0b3JlKHZhbHVlKTsKLSAgICAgICAgfQotICAgIH0KLSAgICB+U2Nv
cGVkUGl4ZWxTdG9yYWdlTW9kZSgpCi0gICAgewotICAgICAgICBpZiAobV9uYW1lICYmIG1fdmFs
dWVDaGFuZ2VkKQotICAgICAgICAgICAgZ2w6OlBpeGVsU3RvcmVpKG1fbmFtZSwgbV9vcmlnaW5h
bFZhbHVlKTsKLSAgICB9Ci0gICAgdm9pZCBwaXhlbFN0b3JlKEdMaW50IHZhbHVlKQotICAgIHsK
LSAgICAgICAgQVNTRVJUKG1fbmFtZSk7Ci0gICAgICAgIGlmICghbV92YWx1ZUNoYW5nZWQgJiYg
bV9vcmlnaW5hbFZhbHVlID09IHZhbHVlKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBn
bDo6UGl4ZWxTdG9yZWkobV9uYW1lLCB2YWx1ZSk7Ci0gICAgICAgIG1fdmFsdWVDaGFuZ2VkID0g
bV9vcmlnaW5hbFZhbHVlICE9IHZhbHVlOwotICAgIH0KLSAgICBvcGVyYXRvciBHTGludCgpIGNv
bnN0Ci0gICAgewotICAgICAgICBBU1NFUlQobV9uYW1lICYmICFtX3ZhbHVlQ2hhbmdlZCk7Ci0g
ICAgICAgIHJldHVybiBtX29yaWdpbmFsVmFsdWU7Ci0gICAgfQotcHJpdmF0ZToKLSAgICBjb25z
dCBHTGVudW0gbV9uYW1lOwotICAgIGJvb2wgbV92YWx1ZUNoYW5nZWQgeyBmYWxzZSB9OwotICAg
IEdMaW50IG1fb3JpZ2luYWxWYWx1ZSB7IDAgfTsKLX07Ci0KLWNsYXNzIFNjb3BlZFRleHR1cmUg
ewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFNjb3BlZFRleHR1cmUpOwotcHVibGljOgotICAg
IFNjb3BlZFRleHR1cmUoKQotICAgIHsKLSAgICAgICAgZ2w6OkdlblRleHR1cmVzKDEsICZtX29i
amVjdCk7Ci0gICAgfQotICAgIH5TY29wZWRUZXh0dXJlKCkKLSAgICB7Ci0gICAgICAgIGdsOjpE
ZWxldGVUZXh0dXJlcygxLCAmbV9vYmplY3QpOwotICAgIH0KLSAgICBvcGVyYXRvciBHTHVpbnQo
KSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fb2JqZWN0OwotICAgIH0KLXByaXZhdGU6
Ci0gICAgR0x1aW50IG1fb2JqZWN0IHsgMHUgfTsKLX07Ci0KLWNsYXNzIFNjb3BlZEZyYW1lYnVm
ZmVyIHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTY29wZWRGcmFtZWJ1ZmZlcik7Ci1wdWJs
aWM6Ci0gICAgU2NvcGVkRnJhbWVidWZmZXIoKQotICAgIHsKLSAgICAgICAgZ2w6OkdlbkZyYW1l
YnVmZmVycygxLCAmbV9vYmplY3QpOwotICAgIH0KLSAgICB+U2NvcGVkRnJhbWVidWZmZXIoKQot
ICAgIHsKLSAgICAgICAgZ2w6OkRlbGV0ZUZyYW1lYnVmZmVycygxLCAmbV9vYmplY3QpOwotICAg
IH0KLSAgICBvcGVyYXRvciBHTHVpbnQoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1f
b2JqZWN0OwotICAgIH0KLXByaXZhdGU6Ci0gICAgR0x1aW50IG1fb2JqZWN0IHsgMCB9OwotfTsK
LQotY2xhc3MgU2NvcGVkR0xGZW5jZSB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU2NvcGVk
R0xGZW5jZSk7Ci1wdWJsaWM6Ci0gICAgU2NvcGVkR0xGZW5jZSgpID0gZGVmYXVsdDsKLSAgICBT
Y29wZWRHTEZlbmNlKFNjb3BlZEdMRmVuY2UmJiBvdGhlcikKLSAgICAgICAgOiBtX29iamVjdChz
dGQ6OmV4Y2hhbmdlKG90aGVyLm1fb2JqZWN0LCB7IH0pKQotICAgIHsKLSAgICB9Ci0gICAgflNj
b3BlZEdMRmVuY2UoKSB7IHJlc2V0KCk7IH0KLSAgICBTY29wZWRHTEZlbmNlJiBvcGVyYXRvcj0o
U2NvcGVkR0xGZW5jZSYmIG90aGVyKQotICAgIHsKLSAgICAgICAgaWYgKHRoaXMgIT0gJm90aGVy
KSB7Ci0gICAgICAgICAgICByZXNldCgpOwotICAgICAgICAgICAgbV9vYmplY3QgPSBzdGQ6OmV4
Y2hhbmdlKG90aGVyLm1fb2JqZWN0LCB7IH0pOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiAq
dGhpczsKLSAgICB9Ci0gICAgdm9pZCByZXNldCgpCi0gICAgewotICAgICAgICBpZiAobV9vYmpl
Y3QpIHsKLSAgICAgICAgICAgIGdsOjpEZWxldGVTeW5jKG1fb2JqZWN0KTsKLSAgICAgICAgICAg
IG1fb2JqZWN0ID0geyB9OwotICAgICAgICB9Ci0gICAgfQotICAgIHZvaWQgYWJhbmRvbigpIHsg
bV9vYmplY3QgPSB7IH07IH0KLSAgICB2b2lkIGZlbmNlU3luYygpCi0gICAgewotICAgICAgICBy
ZXNldCgpOwotICAgICAgICBtX29iamVjdCA9IGdsOjpGZW5jZVN5bmMoR0xfU1lOQ19HUFVfQ09N
TUFORFNfQ09NUExFVEUsIDApOwotICAgIH0KLSAgICBvcGVyYXRvciBHTHN5bmMoKSBjb25zdCB7
IHJldHVybiBtX29iamVjdDsgfQotICAgIG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiBt
X29iamVjdDsgfQotcHJpdmF0ZToKLSAgICBHTHN5bmMgbV9vYmplY3QgeyB9OwotfTsKLQotfQot
Ci0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tCmluZGV4
IGY5MGZmMWY2YWQzYmMxNTgwZGFiY2UyNzRkNTA3YmQwOWIzMmFlMWEuLjY2N2YwMTM0YjAzM2Ri
NTgxZDI1NmEwZjM4OWU1NDA3Y2M0OGI1ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0xDb2NvYS5tbQpAQCAtMjgsMTAgKzI4LDEwIEBACiAjaWYgRU5BQkxFKFdFQkdMKQog
I2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaCIKIAorI2ltcG9ydCAiQU5HTEVVdGls
aXRpZXMuaCIKICNpbXBvcnQgIkFOR0xFVXRpbGl0aWVzQ29jb2EuaCIKICNpbXBvcnQgIkNWVXRp
bGl0aWVzLmgiCiAjaW1wb3J0ICJFeHRlbnNpb25zR0xBTkdMRS5oIgotI2ltcG9ydCAiR3JhcGhp
Y3NDb250ZXh0R0xBTkdMRVV0aWxpdGllcy5oIgogI2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0R0xJ
T1N1cmZhY2VTd2FwQ2hhaW4uaCIKICNpbXBvcnQgIkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFu
YWdlci5oIgogI2ltcG9ydCAiTG9nZ2luZy5oIgpAQCAtNjAsOCArNjAsMTAgQEAgV1RGX1dFQUtf
TElOS19GT1JDRV9JTVBPUlQoRUdMX0luaXRpYWxpemUpOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLXN0YXRpYyBib29sIGlzQU5HTEVBdmFpbGFibGUoKQorYm9vbCBwbGF0Zm9ybUlzQU5HTEVB
dmFpbGFibGUoKQogeworICAgIC8vIFRoZSBBTkdMRSBpcyB3ZWFrIGxpbmtlZCBpbiBmdWxsLCBh
bmQgdGhlIEVHTF9Jbml0aWFsaXplIGlzIGV4cGxpY2l0bHkgd2VhayBsaW5rZWQgYWJvdmUKKyAg
ICAvLyBzbyB0aGF0IHdlIGNhbiBkZXRlY3QgdGhlIGNhc2Ugd2hlcmUgQU5HTEUgaXMgbm90IHBy
ZXNlbnQuCiAgICAgcmV0dXJuICEhRUdMX0luaXRpYWxpemU7CiB9CiAKQEAgLTExOSwxMSArMTIx
LDExIEBAIHN0YXRpYyBib29sIHBsYXRmb3JtU3VwcG9ydHNNZXRhbChib29sIGlzV2ViR0wyKQog
ICAgIHJldHVybiBmYWxzZTsKIH0KIAotc3RhdGljIFNjb3BlZEVHTERlZmF1bHREaXNwbGF5IGlu
aXRpYWxpemVFR0xEaXNwbGF5KGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYgYXR0
cnMpCitzdGF0aWMgRUdMRGlzcGxheSBpbml0aWFsaXplRUdMRGlzcGxheShjb25zdCBHcmFwaGlj
c0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJzKQogewotICAgIGlmICghaXNBTkdMRUF2YWlsYWJs
ZSgpKSB7CisgICAgaWYgKCFwbGF0Zm9ybUlzQU5HTEVBdmFpbGFibGUoKSkgewogICAgICAgICBX
VEZMb2dBbHdheXMoIkZhaWxlZCB0byBsb2FkIEFOR0xFIHNoYXJlZCBsaWJyYXJ5LiIpOwotICAg
ICAgICByZXR1cm4geyB9OworICAgICAgICByZXR1cm4gRUdMX05PX0RJU1BMQVk7CiAgICAgfQog
CiAgICAgRUdMaW50IG1ham9yVmVyc2lvbiA9IDA7CkBAIC0xNjYsNyArMTY4LDcgQEAgc3RhdGlj
IFNjb3BlZEVHTERlZmF1bHREaXNwbGF5IGluaXRpYWxpemVFR0xEaXNwbGF5KGNvbnN0IEdyYXBo
aWNzQ29udGV4dEdMQXR0cmkKIAogICAgIGlmIChFR0xfSW5pdGlhbGl6ZShkaXNwbGF5LCAmbWFq
b3JWZXJzaW9uLCAmbWlub3JWZXJzaW9uKSA9PSBFR0xfRkFMU0UpIHsKICAgICAgICAgTE9HKFdl
YkdMLCAiRUdMRGlzcGxheSBJbml0aWFsaXphdGlvbiBmYWlsZWQuIik7Ci0gICAgICAgIHJldHVy
biB7IH07CisgICAgICAgIHJldHVybiBFR0xfTk9fRElTUExBWTsKICAgICB9CiAgICAgTE9HKFdl
YkdMLCAiQU5HTEUgaW5pdGlhbGlzZWQgTWFqb3I6ICVkIE1pbm9yOiAlZCIsIG1ham9yVmVyc2lv
biwgbWlub3JWZXJzaW9uKTsKICAgICBpZiAoc2hvdWxkSW5pdGlhbGl6ZVdpdGhWb2xhdGlsZUNv
bnRleHRTdXBwb3J0KSB7CkBAIC0xNzUsNyArMTc3LDcgQEAgc3RhdGljIFNjb3BlZEVHTERlZmF1
bHREaXNwbGF5IGluaXRpYWxpemVFR0xEaXNwbGF5KGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMQXR0
cmkKICAgICAgICAgQVNTRVJUKGNoZWNrVm9sYXRpbGVDb250ZXh0U3VwcG9ydElmRGV2aWNlRXhp
c3RzKGRpc3BsYXksICJFR0xfQU5HTEVfcGxhdGZvcm1fZGV2aWNlX2NvbnRleHRfdm9sYXRpbGVf
ZWFnbCIsICJFR0xfQU5HTEVfZGV2aWNlX2VhZ2wiLCBFR0xfRUFHTF9DT05URVhUX0FOR0xFKSk7
CiAgICAgICAgIEFTU0VSVChjaGVja1ZvbGF0aWxlQ29udGV4dFN1cHBvcnRJZkRldmljZUV4aXN0
cyhkaXNwbGF5LCAiRUdMX0FOR0xFX3BsYXRmb3JtX2RldmljZV9jb250ZXh0X3ZvbGF0aWxlX2Nn
bCIsICJFR0xfQU5HTEVfZGV2aWNlX2NnbCIsIEVHTF9DR0xfQ09OVEVYVF9BTkdMRSkpOwogICAg
IH0KLSAgICByZXR1cm4gU2NvcGVkRUdMRGVmYXVsdERpc3BsYXk6OmFkb3B0SW5pdGlhbGl6ZWRE
aXNwbGF5KGRpc3BsYXkpOworICAgIHJldHVybiBkaXNwbGF5OwogfQogCiBzdGF0aWMgY29uc3Qg
dW5zaWduZWQgc3RhdHVzQ2hlY2tUaHJlc2hvbGQgPSA1OwpAQCAtNTA4LDQ1ICs1MTAsNiBAQCBi
b29sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjptYWtlQ29udGV4dEN1cnJlbnQoKQogICAgIHJl
dHVybiB0cnVlOwogfQogCi0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLWJvb2wgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OnJlbGVhc2VDdXJyZW50Q29udGV4dChSZWxlYXNlQmVoYXZpb3IgcmVs
ZWFzZUJlaGF2aW9yKQotewotICAgIGlmICghaXNBTkdMRUF2YWlsYWJsZSgpKQotICAgICAgICBy
ZXR1cm4gdHJ1ZTsKLQotICAgIC8vIEF0IHRoZSBtb21lbnQgdGhpcyBmdW5jdGlvbiBpcyByZWxl
dmFudCBvbmx5IHdoZW4gd2ViIHRocmVhZCBsb2NrIG93bnMgdGhlIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMIGN1cnJlbnQgY29udGV4dC4KLSAgICBBU1NFUlQoIWlzQ3VycmVudENvbnRleHRQcmVk
aWN0YWJsZSgpKTsKLQotICAgIGlmICghRUdMX0JpbmRBUEkoRUdMX09QRU5HTF9FU19BUEkpKQot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKEVHTF9HZXRDdXJyZW50Q29udGV4dCgpID09
IEVHTF9OT19DT05URVhUKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIC8vIEF0IHRoZSB0
aW1lIG9mIHdyaXRpbmcsIEFOR0xFIGRvZXMgbm90IGZsdXNoIG9uIE1ha2VDdXJyZW50LiBTaW5j
ZSB3ZSBhcmUKLSAgICAvLyBwb3RlbnRpYWxseSBzd2l0Y2hpbmcgdGhyZWFkcywgd2Ugc2hvdWxk
IGZsdXNoLgotICAgIC8vIE5vdGU6IEhlcmUgd2UgYXNzdW1lIGFsc28gdGhhdCBBTkdMRSBoYXMg
b25seSBvbmUgcGxhdGZvcm0gY29udGV4dCAtLSBvdGhlcndpc2UKLSAgICAvLyB3ZSB3b3VsZCBu
ZWVkIHRvIGZsdXNoIGVhY2ggRUdMIGNvbnRleHQgdGhhdCBoYXMgYmVlbiB1c2VkLgotICAgIGds
OjpGbHVzaCgpOwotCi0gICAgLy8gVW5zZXQgdGhlIEVHTCBjdXJyZW50IGNvbnRleHQsIHNpbmNl
IHRoZSBuZXh0IGFjY2VzcyBtaWdodCBiZSBmcm9tIGFub3RoZXIgdGhyZWFkLCBhbmQgdGhlCi0g
ICAgLy8gY29udGV4dCBjYW5ub3QgYmUgY3VycmVudCBvbiBtdWx0aXBsZSB0aHJlYWRzLgotCi0g
ICAgaWYgKHJlbGVhc2VCZWhhdmlvciA9PSBSZWxlYXNlQmVoYXZpb3I6OlJlbGVhc2VUaHJlYWRS
ZXNvdXJjZXMpIHsKLSAgICAgICAgLy8gQ2FsbGVkIHdoZW4gd2UgZG8gbm90IGtub3cgaWYgd2Ug
d2lsbCBldmVyIHNlZSBhbm90aGVyIGNhbGwgZnJvbSB0aGlzIHRocmVhZCBhZ2Fpbi4KLSAgICAg
ICAgLy8gVW5zZXQgdGhlIEVHTCBjdXJyZW50IGNvbnRleHQgYnkgcmVsZWFzaW5nIHdob2xlIEVH
TCB0aHJlYWQgc3RhdGUuCi0gICAgICAgIC8vIFRoZW9yZXRpY2FsbHkgUmVsZWFzZVRocmVhZCBj
YW4gcmVzZXQgdGhlIGJvdW5kIEFQSSwgc28gdGhlIHJlc3Qgb2YgdGhlIGNvZGUgbWVudGlvbnMg
QmluZEFQSS9RdWVyeUFQSS4KLSAgICAgICAgcmV0dXJuIEVHTF9SZWxlYXNlVGhyZWFkKCk7Ci0g
ICAgfQotICAgIC8vIE9uIFdlYktpdCBvd25lZCB0aHJlYWRzLCBXZWJLaXQgaXMgYWJsZSB0byBj
aG9vc2UgdGhlIHRpbWUgZm9yIHRoZSBFR0wgY2xlYW51cC4KLSAgICAvLyBUaGlzIGlzIHdoeSB3
ZSBvbmx5IHVuc2V0IHRoZSBjb250ZXh0LgotICAgIC8vIE5vdGU6IEF0IHRoZSB0aW1lIG9mIHdy
aXRpbmcgdGhlIEVHTCBjbGVhbnVwIGlzIGNob3NlbiB0byBiZSBub3QgZG9uZSBhdCBhbGwuCi0g
ICAgRUdMRGlzcGxheSBkaXNwbGF5ID0gRUdMX0dldERpc3BsYXkoRUdMX0RFRkFVTFRfRElTUExB
WSk7Ci0gICAgaWYgKGRpc3BsYXkgPT0gRUdMX05PX0RJU1BMQVkpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICByZXR1cm4gRUdMX01ha2VDdXJyZW50KGRpc3BsYXksIEVHTF9OT19TVVJGQUNF
LCBFR0xfTk9fU1VSRkFDRSwgRUdMX05PX0NPTlRFWFQpOwotfQotI2VuZGlmCi0KIHZvaWQgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OmNoZWNrR1BVU3RhdHVzKCkKIHsKICAgICBpZiAobV9mYWls
TmV4dFN0YXR1c0NoZWNrKSB7CkBAIC04MjcsMTEgKzc5MCw2IEBAIHN0ZDo6b3B0aW9uYWw8UGl4
ZWxCdWZmZXI+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkQ29tcG9zaXRlZFJlc3VsdHMo
KQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OnJlbGVhc2VBbGxSZXNvdXJjZXNJZlVudXNlZCgpCi17Ci0gICAgU2NvcGVkRUdMRGVmYXVsdERp
c3BsYXk6OnJlbGVhc2VBbGxSZXNvdXJjZXNJZlVudXNlZCgpOwotfQotCiAjaWYgRU5BQkxFKE1F
RElBX1NUUkVBTSkKIFJlZlB0cjxNZWRpYVNhbXBsZT4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OnBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb01lZGlhU2FtcGxlKCkKIHsKQEAgLTg0Nyw2ICs4MDUs
MTIgQEAgUmVmUHRyPE1lZGlhU2FtcGxlPiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cGFpbnRD
b21wb3NpdGVkUmVzdWx0c1RvTWVkaWFTYW1wbGUKICAgICByZXR1cm4gTWVkaWFTYW1wbGVBVkZP
YmpDOjpjcmVhdGVJbWFnZVNhbXBsZShXVEZNb3ZlKCpwaXhlbEJ1ZmZlciksIE1lZGlhU2FtcGxl
QVZGT2JqQzo6VmlkZW9Sb3RhdGlvbjo6VXBzaWRlRG93biwgdHJ1ZSk7CiB9CiAjZW5kaWYKKwor
dm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cGxhdGZvcm1SZWxlYXNlVGhyZWFkUmVzb3Vy
Y2VzKCkKK3sKKyAgICBjdXJyZW50Q29udGV4dCA9IG51bGxwdHI7Cit9CisKIH0KIAogI2VuZGlm
IC8vIEVOQUJMRShXRUJHTCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuY3BwCmlu
ZGV4IGY4YjIwYWM3NmQxYmRlOWYzYTI4NjBhYjlhMmM0NDk3ZTViNjI3ZjQuLjA3ZDg2NDAzM2Fm
MmQ2ZWZjNTY0MWE1NWVhNTBjNjQ5NzJiYjg0NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4
dEdMT3BlbkdMLmNwcApAQCAtNzUsNiArNzUsMTYgQEAgR0NHTGJpdGZpZWxkIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpnZXRCdWZmZXJzVG9BdXRvQ2xlYXIoKSBjb25zdAogICAgIHJldHVybiBt
X2J1ZmZlcnNUb0F1dG9DbGVhcjsKIH0KIAorI2lmICFVU0UoQU5HTEUpCitib29sIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpyZWxlYXNlVGhyZWFkUmVzb3VyY2VzKFJlbGVhc2VUaHJlYWRSZXNv
dXJjZUJlaGF2aW9yKQoreworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpwbGF0
Zm9ybVJlbGVhc2VUaHJlYWRSZXNvdXJjZXMoKQoreworfQorI2VuZGlmCisKICNpZiAhVVNFKEFO
R0xFKQogYm9vbCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dGV4SW1hZ2UyRFJlc291cmNlU2Fm
ZShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0
LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dM
ZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnQgdW5wYWNrQWxpZ25tZW50KQogewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBo
aWNzQ29udGV4dEdMT3BlbkdMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaAppbmRleCAxNzc4NGVkYjE4NmFjNmYyYmI4
NTVmMDMyYmM5ODljNDYyMzAzYjc1Li4yMjc3YjE3Y2M3MDk4ODg3NjgyNmMwODYyZjdhNzE4Mzk3
NDI1ZGZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaApAQCAtMzcsNyArMzcs
NiBAQAogI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KIAogI2lmIFBMQVRGT1JNKENPQ09BKQot
I2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMQU5HTEVFR0xVdGlsaXRpZXMuaCIKICNpbmNsdWRl
ICJJT1N1cmZhY2UuaCIKICNlbmRpZgogCkBAIC00Niw3ICs0NSw3IEBACiAjZW5kaWYKIAogI2lm
IFVTRShBTkdMRSkKLSNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRHTEFOR0xFVXRpbGl0aWVzLmgi
CisjaW5jbHVkZSAiQU5HTEVVdGlsaXRpZXMuaCIKICNlbHNlCiAjaW5jbHVkZSAiQU5HTEVXZWJL
aXRCcmlkZ2UuaCIKICNpbmNsdWRlICJFeHRlbnNpb25zR0xPcGVuR0xDb21tb24uaCIKQEAgLTEx
OSwxNyArMTE4LDE2IEBAIHB1YmxpYzoKICNpZiBVU0UoQU5HTEUpCiAgICAgc3RhdGljIEdDR0xl
bnVtIGRyYXdpbmdCdWZmZXJUZXh0dXJlVGFyZ2V0KCk7CiAjZW5kaWYKLQotI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCi0gICAgZW51bSBjbGFzcyBSZWxlYXNlQmVoYXZpb3IgewotICAgICAgICBQ
cmVzZXJ2ZVRocmVhZFJlc291cmNlcywKLSAgICAgICAgUmVsZWFzZVRocmVhZFJlc291cmNlcwor
ICAgIGVudW0gY2xhc3MgUmVsZWFzZVRocmVhZFJlc291cmNlQmVoYXZpb3IgeworICAgICAgICAv
LyBSZWxlYXNlcyBjdXJyZW50IGNvbnRleHQgYWZ0ZXIgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wg
Y2FsbHMgZG9uZSBpbiB0aGUgdGhyZWFkLgorICAgICAgICBSZWxlYXNlQ3VycmVudENvbnRleHQs
CisgICAgICAgIC8vIFJlbGVhc2VzIGFsbCB0aHJlYWQgcmVzb3VyY2VzIGFmdGVyIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMIGNhbGxzIGRvbmUgaW4gdGhlIHRocmVhZC4KKyAgICAgICAgUmVsZWFz
ZVRocmVhZFJlc291cmNlcywKKyAgICAgICAgLy8gUmVsZWFzZXMgYWxsIGdsb2JhbCBzdGF0ZS4g
U2hvdWxkIGJlIHVzZWQgb25seSBhZnRlciBhbGwgZGVwZW5kaW5nIG9iamVjdHMgaGF2ZQorICAg
ICAgICAvLyBiZWVuIHJlbGVhc2VkLgorICAgICAgICBUZXJtaW5hdGVBbmRSZWxlYXNlVGhyZWFk
UmVzb3VyY2VzCiAgICAgfTsKLSAgICBzdGF0aWMgYm9vbCByZWxlYXNlQ3VycmVudENvbnRleHQo
UmVsZWFzZUJlaGF2aW9yKTsKLSNlbmRpZgotI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIHN0YXRp
YyB2b2lkIHJlbGVhc2VBbGxSZXNvdXJjZXNJZlVudXNlZCgpOwotI2VuZGlmCisgICAgc3RhdGlj
IGJvb2wgcmVsZWFzZVRocmVhZFJlc291cmNlcyhSZWxlYXNlVGhyZWFkUmVzb3VyY2VCZWhhdmlv
cik7CiAKICAgICAvLyBXaXRoIG11bHRpc2FtcGxpbmcgb24sIGJsaXQgZnJvbSBtdWx0aXNhbXBs
ZUZCTyB0byByZWd1bGFyIEZCTy4KICAgICB2b2lkIHByZXBhcmVUZXh0dXJlKCk7CkBAIC01ODMs
MTIgKzU4MSwxNSBAQCBwcml2YXRlOgogICAgIC8vIFJldHVybnMgZmFsc2UgaWYgY29udGV4dCBz
aG91bGQgYmUgbG9zdCBkdWUgdG8gdGltZW91dC4KICAgICBib29sIHdhaXRBbmRVcGRhdGVPbGRl
c3RGcmFtZSgpIFdBUk5fVU5VU0VEX1JFVFVSTjsKICNlbmRpZgorICAgIC8vIFBsYXRmb3JtIHNw
ZWNpZmljIGJlaGF2aW9yIGZvciByZWxlYXNlUmVzb3VyY2VzKCk7CisgICAgc3RhdGljIHZvaWQg
cGxhdGZvcm1SZWxlYXNlVGhyZWFkUmVzb3VyY2VzKCk7CisKIAogI2lmIFBMQVRGT1JNKENPQ09B
KQogICAgIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluKiBtX3N3YXBDaGFpbiB7
IG51bGxwdHIgfTsKICAgICAvLyBUT0RPOiB0aGlzIHNob3VsZCBiZSByZW1vdmVkIG9uY2UgdGhl
IGNvbnRleHQgZHJhd3MgdG8gYSBpbWFnZSBidWZmZXIuIFNlZSBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE4MTc5IC4KICAgICBSZXRhaW5QdHI8V2ViR0xMYXllcj4g
bV93ZWJHTExheWVyOwotICAgIFNjb3BlZEVHTERlZmF1bHREaXNwbGF5IG1fZGlzcGxheU9iajsK
KyAgICBFR0xEaXNwbGF5IG1fZGlzcGxheU9iaiB7IG51bGxwdHIgfTsKICAgICBQbGF0Zm9ybUdy
YXBoaWNzQ29udGV4dEdMIG1fY29udGV4dE9iaiB7IG51bGxwdHIgfTsKICAgICBQbGF0Zm9ybUdy
YXBoaWNzQ29udGV4dEdMQ29uZmlnIG1fY29uZmlnT2JqIHsgbnVsbHB0ciB9OwogI2VuZGlmIC8v
IFBMQVRGT1JNKENPQ09BKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9z
L3dhay9XZWJDb3JlVGhyZWFkLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9X
ZWJDb3JlVGhyZWFkLm1tCmluZGV4IDAwMjY2NGUzZTE2NjlmZjMyOGRiOWI5NTI5MWE4OGI1MDQx
NzljMzguLjk1NDRiNTFjMjc4ZGY1NjllYTRhYjBiZmVmN2VmNzQ0YWM1MmM3MzUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV2ViQ29yZVRocmVhZC5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dlYkNvcmVUaHJlYWQubW0KQEAgLTcw
LDE3ICs3MCwyMCBAQCBuYW1lc3BhY2UgewogLy8gYXMgYW55IGNsaWVudCB0aHJlYWQgdGhhdCBj
YWxscyBpbnRvIFdlYktpdC4KIHZvaWQgUmVsZWFzZVdlYlRocmVhZEdsb2JhbFN0YXRlKCkKIHsK
LSAgICAvLyBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCBjdXJyZW50IGNvbnRleHQgaXMgb3duZWQg
YnkgdGhlIHdlYiB0aHJlYWQgbG9jay4gUmVsZWFzZSB0aGUgY29udGV4dAorICAgIC8vIEFOR0xF
IG1haW50YWlucyB0aHJlYWQgZ2xvYmFsIHN0YXRlIGZvciBpdHMgY3VycmVudCBjb250ZXh0Lgor
ICAgIC8vIFRoaXMgaXMgY29uY2VwdHVhbGx5IG93bmVkIGJ5IHRoZSB3ZWIgdGhyZWFkIGxvY2su
IFJlbGVhc2UgdGhlIGNvbnRleHQKICAgICAvLyBiZWZvcmUgdGhlIGxvY2sgaXMgcmVsZWFzZWQu
CiAKICAgICAvLyBJbiBzaW5nbGUtdGhyZWFkZWQgZW52aXJvbm1lbnRzIHdlIGRvIG5vdCBuZWVk
IHRvIHVuc2V0IHRoZSBjb250ZXh0LCBhcyB0aGVyZSBzaG91bGQgbm90IGJlIGFjY2VzcyBmcm9t
CiAgICAgLy8gbXVsdGlwbGUgdGhyZWFkcy4KICAgICBBU1NFUlQoV2ViVGhyZWFkSXNFbmFibGVk
KCkpOwotICAgIHVzaW5nIFJlbGVhc2VCZWhhdmlvciA9IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpSZWxlYXNlQmVoYXZpb3I7Ci0gICAgLy8gRm9yIG5vbi13ZWIgdGhyZWFkcywg
d2UgZG9uJ3Qga25vdyBpZiB3ZSBldmVyIHNlZSBhbm90aGVyIGNhbGwgZnJvbSB0aGUgdGhyZWFk
LgotICAgIFJlbGVhc2VCZWhhdmlvciByZWxlYXNlQmVoYXZpb3IgPQotICAgICAgICBXZWJUaHJl
YWRJc0N1cnJlbnQoKSA/IFJlbGVhc2VCZWhhdmlvcjo6UHJlc2VydmVUaHJlYWRSZXNvdXJjZXMg
OiBSZWxlYXNlQmVoYXZpb3I6OlJlbGVhc2VUaHJlYWRSZXNvdXJjZXM7Ci0gICAgV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlbGVhc2VDdXJyZW50Q29udGV4dChyZWxlYXNlQmVo
YXZpb3IpOworICAgIHVzaW5nIFJlbGVhc2VUaHJlYWRSZXNvdXJjZUJlaGF2aW9yID0gV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OlJlbGVhc2VUaHJlYWRSZXNvdXJjZUJlaGF2aW9y
OworICAgIC8vIEZvciB3ZWIgdGhyZWFkLCBqdXN0IHJlbGVhc2UgdGhlIGNvbnRleHQgYXMgd2Ug
a25vdyB3ZSB3aWxsIHNlZSBjYWxscyB0byBpdCBhZ2Fpbi4KKyAgICAvLyBGb3Igbm9uLXdlYiB0
aHJlYWRzLCBlLmcuIHRoaXJkLXBhcnR5IGNsaWVudCB0aHJlYWRzLCB3ZSBkb24ndCBrbm93IGlm
IHdlIGV2ZXIgc2VlIGFub3RoZXIgY2FsbCBmcm9tIHRoZQorICAgIC8vIHRocmVhZCwgc28gd2Ug
YWxzbyByZWxlYXNlIHRoZSB0aHJlYWQgcmVzb3VyY2VzLgorICAgIFJlbGVhc2VUaHJlYWRSZXNv
dXJjZUJlaGF2aW9yIHJlbGVhc2VCZWhhdmlvciA9CisgICAgICAgIFdlYlRocmVhZElzQ3VycmVu
dCgpID8gUmVsZWFzZVRocmVhZFJlc291cmNlQmVoYXZpb3I6OlJlbGVhc2VDdXJyZW50Q29udGV4
dCA6IFJlbGVhc2VUaHJlYWRSZXNvdXJjZUJlaGF2aW9yOjpSZWxlYXNlVGhyZWFkUmVzb3VyY2Vz
OworICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWxlYXNlVGhyZWFkUmVz
b3VyY2VzKHJlbGVhc2VCZWhhdmlvcik7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9TY29wZWRXZWJHTFJlbmRlcmluZ1Jlc291cmNlc1JlcXVl
c3QuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1Njb3BlZFdlYkdMUmVu
ZGVyaW5nUmVzb3VyY2VzUmVxdWVzdC5jcHAKaW5kZXggMGY3NWQ4MjU0ODAzNjU0OTg1ZmUwNTgx
NGVlM2JkMTM0ZTQ4MWFlNi4uMzI2YjA3ZjJlYmRlZWEwN2NhNTJlNjc2YzAyMWQyOGViNzhmMjdj
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1Njb3BlZFdl
YkdMUmVuZGVyaW5nUmVzb3VyY2VzUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL2dyYXBoaWNzL1Njb3BlZFdlYkdMUmVuZGVyaW5nUmVzb3VyY2VzUmVxdWVzdC5jcHAK
QEAgLTI2LDIwICsyNiwzOCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlNjb3Bl
ZFdlYkdMUmVuZGVyaW5nUmVzb3VyY2VzUmVxdWVzdC5oIgogCisjaWYgRU5BQkxFKEdQVV9QUk9D
RVNTKSAmJiBFTkFCTEUoV0VCR0wpCisKKyNpbmNsdWRlICJSZW1vdGVHcmFwaGljc0NvbnRleHRH
TC5oIgorI2luY2x1ZGUgIlN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUuaCIKKyNpbmNsdWRlIDxX
ZWJDb3JlL0dyYXBoaWNzQ29udGV4dEdMLmg+CisjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KKyNp
bmNsdWRlIDx3dGYvU2Vjb25kcy5oPgorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogc3RkOjphdG9t
aWM8dW5zaWduZWQ+IFNjb3BlZFdlYkdMUmVuZGVyaW5nUmVzb3VyY2VzUmVxdWVzdDo6c19yZXF1
ZXN0czsKLQotI2lmICFQTEFURk9STShDT0NPQSkKK3N0YXRpYyBjb25zdGV4cHIgU2Vjb25kcyBm
cmVlV2ViR0xSZW5kZXJpbmdSZXNvdXJjZXNUaW1lb3V0ID0gMV9zOworc3RhdGljIGJvb2wgZGlk
U2NoZWR1bGVGcmVlV2ViR0xSZW5kZXJpbmdSZXNvdXJjZXM7CiAKIHZvaWQgU2NvcGVkV2ViR0xS
ZW5kZXJpbmdSZXNvdXJjZXNSZXF1ZXN0OjpzY2hlZHVsZUZyZWVXZWJHTFJlbmRlcmluZ1Jlc291
cmNlcygpCiB7CisgICAgaWYgKGRpZFNjaGVkdWxlRnJlZVdlYkdMUmVuZGVyaW5nUmVzb3VyY2Vz
KQorICAgICAgICByZXR1cm47CisgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoQWZ0ZXIoZnJl
ZVdlYkdMUmVuZGVyaW5nUmVzb3VyY2VzVGltZW91dCwgZnJlZVdlYkdMUmVuZGVyaW5nUmVzb3Vy
Y2VzKTsKKyAgICBkaWRTY2hlZHVsZUZyZWVXZWJHTFJlbmRlcmluZ1Jlc291cmNlcyA9IHRydWU7
CiB9CiAKIHZvaWQgU2NvcGVkV2ViR0xSZW5kZXJpbmdSZXNvdXJjZXNSZXF1ZXN0OjpmcmVlV2Vi
R0xSZW5kZXJpbmdSZXNvdXJjZXMoKQogeworICAgIGRpZFNjaGVkdWxlRnJlZVdlYkdMUmVuZGVy
aW5nUmVzb3VyY2VzID0gZmFsc2U7CisgICAgaWYgKHNfcmVxdWVzdHMpCisgICAgICAgIHJldHVy
bjsKKyAgICByZW1vdGVHcmFwaGljc0NvbnRleHRHTFN0cmVhbVdvcmtRdWV1ZSgpLmRpc3BhdGNo
KFtdIHsKKyAgICAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlbGVhc2VU
aHJlYWRSZXNvdXJjZXMoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OlJlbGVhc2VU
aHJlYWRSZXNvdXJjZUJlaGF2aW9yOjpUZXJtaW5hdGVBbmRSZWxlYXNlVGhyZWFkUmVzb3VyY2Vz
KTsKKyAgICB9KTsKIH0KIAotI2VuZGlmCi0KIH0KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvU2NvcGVkV2ViR0xSZW5kZXJpbmdSZXNvdXJj
ZXNSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvU2NvcGVkV2Vi
R0xSZW5kZXJpbmdSZXNvdXJjZXNSZXF1ZXN0LmgKaW5kZXggYzBlZDRlZWQzY2U5ZDc0OTE2NDJj
NDYxNjMxYjAxM2MxMTc4NmQwOC4uMmNiNTBiM2JjZjI2MTcxZGQyNDcxN2JhYTViNTEzNWIwMGFl
YTdhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1Njb3Bl
ZFdlYkdMUmVuZGVyaW5nUmVzb3VyY2VzUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9TY29wZWRXZWJHTFJlbmRlcmluZ1Jlc291cmNlc1JlcXVlc3QuaApA
QCAtMjUsNiArMjUsOCBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2lmIEVOQUJMRShHUFVfUFJPQ0VT
UykgJiYgRU5BQkxFKFdFQkdMKQorCiAjaW5jbHVkZSAiU2NvcGVkUmVuZGVyaW5nUmVzb3VyY2Vz
UmVxdWVzdC5oIgogI2luY2x1ZGUgPGF0b21pYz4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFz
Lmg+CkBAIC04MiwzICs4NCw1IEBAIHByaXZhdGU6CiB9OwogCiB9CisKKyNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1Njb3BlZFdlYkdMUmVuZGVy
aW5nUmVzb3VyY2VzUmVxdWVzdENvY29hLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9n
cmFwaGljcy9TY29wZWRXZWJHTFJlbmRlcmluZ1Jlc291cmNlc1JlcXVlc3RDb2NvYS5jcHAKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMxYjMzZmNkNWNmZjM0NzJkNDE3ZTk5NTExYzA3
MmU4NDhlN2E5YTcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1Njb3BlZFdlYkdMUmVuZGVyaW5n
UmVzb3VyY2VzUmVxdWVzdENvY29hLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDYwICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiU2NvcGVkV2ViR0xS
ZW5kZXJpbmdSZXNvdXJjZXNSZXF1ZXN0LmgiCi0KLSNpZiBQTEFURk9STShDT0NPQSkKLQotI2lu
Y2x1ZGUgIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmgiCi0jaW5jbHVkZSAiU3RyZWFtQ29ubmVj
dGlvbldvcmtRdWV1ZS5oIgotI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0R0wuaD4K
LSNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgotI2luY2x1ZGUgPHd0Zi9TZWNvbmRzLmg+Ci0KLW5h
bWVzcGFjZSBXZWJLaXQgewotCi1zdGF0aWMgY29uc3RleHByIFNlY29uZHMgZnJlZVdlYkdMUmVu
ZGVyaW5nUmVzb3VyY2VzVGltZW91dCA9IDFfczsKLXN0YXRpYyBib29sIGRpZFNjaGVkdWxlRnJl
ZVdlYkdMUmVuZGVyaW5nUmVzb3VyY2VzOwotCi12b2lkIFNjb3BlZFdlYkdMUmVuZGVyaW5nUmVz
b3VyY2VzUmVxdWVzdDo6c2NoZWR1bGVGcmVlV2ViR0xSZW5kZXJpbmdSZXNvdXJjZXMoKQotewot
ICAgIGlmIChkaWRTY2hlZHVsZUZyZWVXZWJHTFJlbmRlcmluZ1Jlc291cmNlcykKLSAgICAgICAg
cmV0dXJuOwotICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaEFmdGVyKGZyZWVXZWJHTFJlbmRl
cmluZ1Jlc291cmNlc1RpbWVvdXQsIGZyZWVXZWJHTFJlbmRlcmluZ1Jlc291cmNlcyk7Ci0gICAg
ZGlkU2NoZWR1bGVGcmVlV2ViR0xSZW5kZXJpbmdSZXNvdXJjZXMgPSB0cnVlOwotfQotCi12b2lk
IFNjb3BlZFdlYkdMUmVuZGVyaW5nUmVzb3VyY2VzUmVxdWVzdDo6ZnJlZVdlYkdMUmVuZGVyaW5n
UmVzb3VyY2VzKCkKLXsKLSAgICBkaWRTY2hlZHVsZUZyZWVXZWJHTFJlbmRlcmluZ1Jlc291cmNl
cyA9IGZhbHNlOwotICAgIGlmIChzX3JlcXVlc3RzKQotICAgICAgICByZXR1cm47Ci0gICAgcmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xTdHJlYW1Xb3JrUXVldWUoKS5kaXNwYXRjaChHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6cmVsZWFzZUFsbFJlc291cmNlc0lmVW51c2VkKTsKLX0KLQotfQotCi0j
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dCBiL1NvdXJj
ZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAppbmRleCA1ZTZiNTJjMTIxMTQ2YzZkNTNhY2U2NjVk
NjVjMjU2ZmRlNWU5NTkzLi44MmY0NmNlNDRiMTc3NGUxM2RiN2FmNDNjN2JjYjRjNzhiYWJkNjVh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNl
L1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CkBAIC02Niw3ICs2Niw2IEBAIEdQVVByb2Nlc3MvY29j
b2EvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzc0NvY29hLm1tCiBHUFVQcm9jZXNzL2NvY29hL0dQ
VVByb2Nlc3NDb2NvYS5tbQogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRl
eHRHTENvY29hLmNwcAogR1BVUHJvY2Vzcy9ncmFwaGljcy9TY29wZWRSZW5kZXJpbmdSZXNvdXJj
ZXNSZXF1ZXN0Q29jb2EubW0gQG5vLXVuaWZ5Ci1HUFVQcm9jZXNzL2dyYXBoaWNzL1Njb3BlZFdl
YkdMUmVuZGVyaW5nUmVzb3VyY2VzUmVxdWVzdENvY29hLmNwcAogR1BVUHJvY2Vzcy9pb3MvR1BV
UHJvY2Vzc0lPUy5tbQogR1BVUHJvY2Vzcy9tYWMvR1BVUHJvY2Vzc01hYy5tbQogR1BVUHJvY2Vz
cy9tYWMvTG9jYWxBdWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRvci5jcHAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2Uv
V2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGQxYzY5NTE1YmIx
ODJkZmE1YTU0MDc3NDg2NGY3M2VjMjk4YzQxZDkuLjk5ZjFkYmVmMTI1MGIyZmZkOThlNDVmYzhh
NWU0ZTMyOGJkYWYxYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagpAQCAtMyw3ICszLDcgQEAKIAlhcmNoaXZlVmVyc2lvbiA9IDE7CiAJY2xh
c3NlcyA9IHsKIAl9OwotCW9iamVjdFZlcnNpb24gPSA1MjsKKwlvYmplY3RWZXJzaW9uID0gNTQ7
CiAJb2JqZWN0cyA9IHsKIAogLyogQmVnaW4gUEJYQWdncmVnYXRlVGFyZ2V0IHNlY3Rpb24gKi8K
QEAgLTQ3NjAsNyArNDc2MCw2IEBACiAJCTdCQ0Y3MENDMjYxNDkzNUYwMEU0RkI3MCAvKiBTY29w
ZWRXZWJHTFJlbmRlcmluZ1Jlc291cmNlc1JlcXVlc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
U2NvcGVkV2ViR0xSZW5kZXJpbmdSZXNvdXJjZXNSZXF1ZXN0LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJN0JDRjcwQ0QyNjE0OTM1RjAwRTRGQjcwIC8qIFNjb3BlZFJlbmRlcmlu
Z1Jlc291cmNlc1JlcXVlc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NvcGVkUmVuZGVyaW5nUmVzb3Vy
Y2VzUmVxdWVzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QkNGNzBDRTI2MTQ5
MzVGMDBFNEZCNzAgLyogU2NvcGVkV2ViR0xSZW5kZXJpbmdSZXNvdXJjZXNSZXF1ZXN0LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFNjb3BlZFdlYkdMUmVuZGVyaW5nUmVzb3VyY2VzUmVxdWVzdC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3QkNGNzBDRjI2MTQ5N0U2MDBFNEZCNzAgLyogU2Nv
cGVkV2ViR0xSZW5kZXJpbmdSZXNvdXJjZXNSZXF1ZXN0Q29jb2EuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gU2NvcGVkV2ViR0xSZW5kZXJpbmdSZXNvdXJjZXNSZXF1ZXN0Q29jb2EuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QkU3MjY1NzI1NzRGNjcyMDBFODVEOTggLyogUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUZ1bmN0aW9uc0dlbmVyYXRlZC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5RnVuY3Rpb25zR2VuZXJhdGVk
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0JFNzI2NjgyNTc2ODBFRjAwRTg1
RDk4IC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTdDMDY1RjI5MUM4Q0Q5NUYwMEMyRDk1MCAvKiBXZWJVc2VyQ29udGVudENvbnRy
b2xsZXJEYXRhVHlwZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
V2ViVXNlckNvbnRlbnRDb250cm9sbGVyRGF0YVR5cGVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTkxMDQsNyArOTEwMyw2IEBACiAJCQkJN0JDRjcwQ0IyNjE0OTM1RTAwRTRG
QjcwIC8qIFNjb3BlZFJlbmRlcmluZ1Jlc291cmNlc1JlcXVlc3RDb2NvYS5tbSAqLywKIAkJCQk3
QkNGNzBDQzI2MTQ5MzVGMDBFNEZCNzAgLyogU2NvcGVkV2ViR0xSZW5kZXJpbmdSZXNvdXJjZXNS
ZXF1ZXN0LmNwcCAqLywKIAkJCQk3QkNGNzBDRTI2MTQ5MzVGMDBFNEZCNzAgLyogU2NvcGVkV2Vi
R0xSZW5kZXJpbmdSZXNvdXJjZXNSZXF1ZXN0LmggKi8sCi0JCQkJN0JDRjcwQ0YyNjE0OTdFNjAw
RTRGQjcwIC8qIFNjb3BlZFdlYkdMUmVuZGVyaW5nUmVzb3VyY2VzUmVxdWVzdENvY29hLmNwcCAq
LywKIAkJCSk7CiAJCQlwYXRoID0gZ3JhcGhpY3M7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4i
Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>440352</attachid>
            <date>2021-10-06 04:27:45 -0700</date>
            <delta_ts>2021-10-06 23:37:10 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-231011-20211006142743.patch</filename>
            <type>text/plain</type>
            <size>63312</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgzNjAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjhlYWQyZjQ1MjE4NDMw
YmUxOTYxMGZhMGNjMmY1ZmI1MzUzMTBjZC4uM2RkNmM0MWNjY2FiZmIxY2MxY2M0OWY0NjRhNzM4
ZTkzOWYyNGFjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYyIEBACisyMDIxLTEwLTA2ICBLaW1t
byBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgU2NvcGVkRUdMRGVm
YXVsdERpc3BsYXkgc2hvdWxkIGJlIHJlbW92ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMTAxMQorCisgICAgICAgIFJldmlld2VkIGJ5IEtlbm5l
dGggUnVzc2VsbC4KKworICAgICAgICBIYXJkLWNvZGluZyB0aGUgY29kZSB0byBFR0xfREVGQVVM
VF9ESVNQTEFZIG9ubHkgYW5kIHVzaW5nIHRoZSBzY29wZWQKKyAgICAgICAgaG9sZGVyIGlzIG1h
a2luZyB0aGUgRUdMRGlzcGxheXMgaGFyZGVyIHRvIHVzZSB0aGFuIG5lY2Nlc3NhcnkuIFRoZQor
ICAgICAgICBpbXBsZW1lbnRhdGlvbiB0YXJnZXQsIGUuZy4gdGhlIGFiaWxpdHkgdG8gY2FsbCBF
R0xUZXJtaW5hdGUsIHdhcyBhbHNvIGEgYml0CisgICAgICAgIG1vcmUgY29udm9sdXRlZCB0aGFu
IG5lZWRlZC4KKworICAgICAgICBNb3ZlIHRoZSAiY2FsbCBFR0xUZXJtaW5hdGUiIGxvZ2ljIGZy
b20gYSBiaXQgY29udm9sdXRlZCByZWZjb3VudCBtZWNoYW5pc20KKyAgICAgICAgaW4gU2NvcGVk
RUdMRGVmYXVsdERpc3BsYXkgdG8gdGhlIGV4cGxpY2l0IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpyZWxlYXNlUmVzb3VyY2VzKCkuCisgICAgICAgIFRoZSBjYWxsZXJzIGFyZSBleHBlY3RlZCB0
byBkbyB0aGUgcmVmY291bnRpbmcgYW55d2F5LCBhcyB0aGUgZXhpc3RpbmcgY2xpZW50CisgICAg
ICAgIFdlYktpdDo6U2NvcGVkV2ViR0xSZW5kZXJpbmdSZXNvdXJjZXNSZXF1ZXN0IGFscmVhZHkg
ZGlkLgorCisgICAgICAgIE1ha2UgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlbGVhc2VSZXNv
dXJjZXMoKSBhdmFpbGFibGUgb24gYWxsIHBsYXRmb3Jtcy4KKyAgICAgICAgSXQgaXMgaW1wbGVt
ZW50ZWQgb24gYWxsIEFOR0xFIGltcGxlbWVudGF0aW9ucy4KKyAgICAgICAgUGxhdGZvcm1zIGNh
biBhdWdtZW50IHRoZSBpbXBsZW1lbnRhdGlvbiBieSBpbXBsZW1lbnRpbmcKKyAgICAgICAgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OnBsYXRmb3JtUmVsZWFzZVJlc291cmNlcygpLiBGb3IgQ29j
b2EsIHRoaXMgZnVuY3Rpb24KKyAgICAgICAgcmVzZXRzIHRoZSBjdXJyZW50Q29udGV4dCBjYWNo
ZSB0aGF0IGlzIHVzZWQgdG8gb3B0aW1pemUgbWFraW5nIGNvbnRleHQgY3VycmVudC4KKworICAg
ICAgICBObyBuZXcgdGVzdHMsIHJlZmFjdG9yLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6
CisgICAgICAgICogSGVhZGVycy5jbWFrZToKKyAgICAgICAgKiBQbGF0Zm9ybU1hYy5jbWFrZToK
KyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9BTkdM
RVV0aWxpdGllcy5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFRUdMVXRpbGl0aWVzLmguCisgICAgICAg
IChXZWJDb3JlOjpwbGF0Zm9ybUlzQU5HTEVBdmFpbGFibGUpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2FuZ2xlL0FOR0xFVXRpbGl0aWVzLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFVXRpbGl0
aWVzLmguCisgICAgICAgIFJlbmFtZSBHcmFwaGljc0NvbnRleHRHTEFOR0xFVXRpbGl0aWVzIHRv
IHNpbXBsZXIgYW5kIG1vcmUgZGVzY3JpcHRpdmUgQU5HTEVVdGlsaXRpZXMuCisgICAgICAgIEFk
ZCB0aGUgaXNBTkdMRUF2YWlsYWJsZSB0byB0aGVyZS4KKworICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlbGVhc2VSZXNvdXJjZXMpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnBsYXRmb3JtUmVsZWFzZVJlc291cmNl
cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xB
TkdMRUVHTFV0aWxpdGllcy5jcHA6IFJlbW92ZWQuCisgICAgICAgIChXZWJDb3JlOjpyZWZEZWZh
dWx0RGlzcGxheSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjp1bnJlZkRlZmF1bHREaXNw
bGF5SWZOZWVkZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2NvcGVkRUdMRGVmYXVs
dERpc3BsYXk6Om9wZXJhdG9yPSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTY29wZWRF
R0xEZWZhdWx0RGlzcGxheTo6U2NvcGVkRUdMRGVmYXVsdERpc3BsYXkpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6U2NvcGVkRUdMRGVmYXVsdERpc3BsYXk6On5TY29wZWRFR0xEZWZhdWx0
RGlzcGxheSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTY29wZWRFR0xEZWZhdWx0RGlz
cGxheTo6cmVsZWFzZUFsbFJlc291cmNlc0lmVW51c2VkKTogRGVsZXRlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6cGxhdGZvcm1Jc0FOR0xFQXZhaWxhYmxlKToKKyAgICAgICAgKFdl
YkNvcmU6OmluaXRpYWxpemVFR0xEaXNwbGF5KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpwbGF0Zm9ybVJlbGVhc2VSZXNvdXJjZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6aXNBTkdMRUF2YWlsYWJsZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6cmVsZWFzZUN1cnJlbnRDb250ZXh0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWxlYXNlQWxsUmVzb3Vy
Y2VzSWZVbnVzZWQpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5n
bC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6cmVsZWFzZVJlc291cmNlcyk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cGxhdGZvcm1SZWxlYXNlUmVzb3VyY2VzKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9pb3Mvd2FrL1dlYkNvcmVUaHJlYWQubW06CisKIDIwMjEtMTAt
MDUgIEJhc3VrZSBTdXp1a2kgIDxiYXN1a2Uuc3V6dWtpQHNvbnkuY29tPgogCiAgICAgICAgIFtQ
bGF5U3RhdGlvbl0gRml4IGJ1aWxkIGJyZWFrIGFmdGVyIHIyODM0NDEKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggZjM0
MTNkOWY5ZjdlMDdhN2ZiMTRhNjczYWIwZGJiOGMxZTQxMDZmMS4uNzZhNzdmMzE4MjFhYWEyM2Ex
NTk0MjRjZjY5ZTA1OTQyN2JmZDYyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNyBAQAorMjAyMS0x
MC0wNiAgS2ltbW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIFNj
b3BlZEVHTERlZmF1bHREaXNwbGF5IHNob3VsZCBiZSByZW1vdmVkCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzEwMTEKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnQgdGhlIHJlbGVhc2Ugb2Yg
V2ViR0wgcmVzb3VyY2VzIHdpdGggdGhlIGFtZW5kZWQKKyAgICAgICAgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OnJlbGVhc2VSZXNvdXJjZXMoKSBpbnN0ZWFkIG9mCisgICAgICAgIHByZXZpb3Vz
IHNlcGFyYXRlIGZ1bmN0aW9uIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWxlYXNlQWxsUmVz
b3VyY2VzKCkuCisKKyAgICAgICAgVXNlIHRoZSByZXNvdXJjZSByZWxlYXNlIGNvZGUgcGF0aCB1
bml2ZXJzYWxseSwgYXMKKyAgICAgICAgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlbGVhc2VS
ZXNvdXJjZXMoKSBpcyBub3cgY29tbW9uIGNvZGUuCisKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dy
YXBoaWNzL1Njb3BlZFdlYkdMUmVuZGVyaW5nUmVzb3VyY2VzUmVxdWVzdC5jcHA6CisgICAgICAg
IChXZWJLaXQ6OlNjb3BlZFdlYkdMUmVuZGVyaW5nUmVzb3VyY2VzUmVxdWVzdDo6c2NoZWR1bGVG
cmVlV2ViR0xSZW5kZXJpbmdSZXNvdXJjZXMpOgorICAgICAgICAoV2ViS2l0OjpTY29wZWRXZWJH
TFJlbmRlcmluZ1Jlc291cmNlc1JlcXVlc3Q6OmZyZWVXZWJHTFJlbmRlcmluZ1Jlc291cmNlcyk6
CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9TY29wZWRXZWJHTFJlbmRlcmluZ1Jlc291
cmNlc1JlcXVlc3QuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1Njb3BlZFdlYkdM
UmVuZGVyaW5nUmVzb3VyY2VzUmVxdWVzdENvY29hLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKFdl
YktpdDo6U2NvcGVkV2ViR0xSZW5kZXJpbmdSZXNvdXJjZXNSZXF1ZXN0OjpzY2hlZHVsZUZyZWVX
ZWJHTFJlbmRlcmluZ1Jlc291cmNlcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlNjb3Bl
ZFdlYkdMUmVuZGVyaW5nUmVzb3VyY2VzUmVxdWVzdDo6ZnJlZVdlYkdMUmVuZGVyaW5nUmVzb3Vy
Y2VzKTogRGVsZXRlZC4KKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFdl
YktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDIxLTEwLTA1ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgRG8gZGFpbHkgYWN0
aXZpdHkgaW4gQWRBdHRyaWJ1dGlvbkRhZW1vbiBiYXNlZCBvZmYgb2Ygd2hlbiB0aGUgeHBjIGFj
dGl2aXR5IGhhcHBlbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0
IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggMzAzOTQ3NTk3MWQ0ZmI3ZjZm
OWJkMWEwNmI4ZmYyNmNjNTAxN2NiZC4uNzliZDM3ZDhlYmI1ZTJiZjZjN2M1NGQ2YjdhYjViNDZm
NjNjNWI2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIv
U291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTE3MTAsOSArMTcxMCw5IEBAIGlmIChF
TkFCTEVfV0VCR0wpCiAgICAgICAgICAgICAke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9ncmFwaGlj
cy9hbmdsZQogICAgICAgICApCiAgICAgICAgIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwor
ICAgICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvQU5HTEVVdGlsaXRpZXMuY3BwCiAg
ICAgICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5jcHAK
ICAgICAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5H
TEUuY3BwCi0gICAgICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRl
eHRHTEFOR0xFRUdMVXRpbGl0aWVzLmNwcAogICAgICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
YW5nbGUvVGVtcG9yYXJ5QU5HTEVTZXR0aW5nLmNwcAogICAgICAgICApCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNt
YWtlCmluZGV4IDM5NGNiM2JiNmUxYTMyNzI0OTUxYjIyNjU3ZWQ5NTk5ZmQzNzhmODIuLjc0NDY4
ZmM3ZDlmY2M0MzhlNDRhZWY2MmY2M2VmZWRkN2RhMjFiMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL0hlYWRlcnMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQpA
QCAtMTM4Myw4ICsxMzgzLDggQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVS
UwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1dpbmRSdWxlLmgKIAogICAgIHBsYXRmb3JtL2dyYXBo
aWNzL2FuZ2xlL0FOR0xFSGVhZGVycy5oCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvQU5H
TEVVdGlsaXRpZXMuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFO
R0xFLmgKLSAgICBwbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xF
VXRpbGl0aWVzLmgKIAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdC5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJh
d2luZ0NvbnRleHQuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21h
a2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQppbmRleCBmYWNjY2I2OGY2NWVi
YTdjYzU5MWJjNzI0ZmNhMGMyYTMzYWM0ZjhhLi5iY2ZjZWI3OTMxM2VjMDVjMzU0YzVmZWZlMzRh
YjUxMGFiMzNlNzE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFr
ZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQpAQCAtNjE0LDcgKzYxNCw3
IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIHBs
YXRmb3JtL2dyYXBoaWNzL01JTUVUeXBlQ2FjaGUuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL01v
ZGVsLmgKIAotICAgIHBsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5H
TEVFR0xVdGlsaXRpZXMuaAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0FOR0xFVXRpbGl0
aWVzLmgKIAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9BdWRpb1NvdXJjZVBy
b3ZpZGVyQVZGT2JqQy5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlh
UGxheWJhY2tUYXJnZXRDb2NvYS5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2Vz
Q29jb2EudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAppbmRleCBmMzBmZGFi
YTA0YzI2MDY3ZjE2NDhmMjc0MjcyZDVlMmFlMWQzZDRkLi5hNGMwYTc2MjdjMzc4MWRmY2QwNDkw
NmZjNTIzMzA5YzkwNzMwYzJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29j
b2EudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKQEAgLTU5Nyw3ICs1
OTcsNyBAQCB0ZXN0aW5nL2NvY29hL1dlYlZpZXdWaXN1YWxJZGVudGlmaWNhdGlvbk92ZXJsYXku
bW0KIC8vIFRoZSBmb2xsb3dpbmcgZmlsZXMgYXJlbid0IHVuaWZpZWQgd2l0aCBvdGhlcnMgdG8g
cHJldmVudCB0aGVtIGZyb20gYmVpbmcgbWVyZ2VkCiAvLyB3aXRoIGZpbGVzIHRoYXQgdXNlIHRo
ZSBzeXN0ZW0gT3BlbkdMLgogCitwbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9BTkdMRVV0aWxpdGll
cy5jcHAgQG5vLXVuaWZ5CiBwbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdM
RS5jcHAgQG5vLXVuaWZ5CiBwbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRH
TEFOR0xFLmNwcCBAbm8tdW5pZnkKLXBsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29u
dGV4dEdMQU5HTEVFR0xVdGlsaXRpZXMuY3BwIEBuby11bmlmeQogcGxhdGZvcm0vZ3JhcGhpY3Mv
YW5nbGUvVGVtcG9yYXJ5QU5HTEVTZXR0aW5nLmNwcCBAbm8tdW5pZnkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA2MTRjM2Q3MGMy
Y2IxM2RmYzFjMjBjYjI2MDg1MjY3MGY0ZWQ3ZTVhLi5kNjdmNDA5MGE1ZjlkMzg4YTQ4ZmUzZjk1
N2RmM2IxZDM0M2FkNWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yMzUzLDEzICsyMzUzLDExIEBACiAJCTdBRjlCMjBGMThD
RkI1RjQwMEM2NEJFRiAvKiBKU1ZUVFJlZ2lvbkxpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBRjlCMjBCMThDRkI1RjMwMEM2NEJFRiAvKiBKU1ZU
VFJlZ2lvbkxpc3QuaCAqLzsgfTsKIAkJN0IxMDMzOUUyNTQ5NzIxNzAwQzhDMUFDIC8qIEdyYXBo
aWNzQ29udGV4dEdMQ1YuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDdCMTAzMzlEMjU0OTcyMDEwMEM4QzFBQyAvKiBHcmFwaGljc0NvbnRleHRHTENWLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0IxMDMz
OUYyNTQ5NzIxRTAwQzhDMUFDIC8qIEdyYXBoaWNzQ29udGV4dEdMQ1ZBTkdMRS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0IxMDMzOUMyNTQ5NzIwMTAw
QzhDMUFDIC8qIEdyYXBoaWNzQ29udGV4dEdMQ1ZBTkdMRS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTdCNDVBQjUwMjVGQjkzQkUwMEZEMjdGNCAv
KiBHcmFwaGljc0NvbnRleHRHTEFOR0xFRUdMVXRpbGl0aWVzLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCNzc0QzYyMjVGQjkzNTUwMDkxMzk1RiAv
KiBHcmFwaGljc0NvbnRleHRHTEFOR0xFRUdMVXRpbGl0aWVzLmNwcCAqLzsgfTsKLQkJN0I0NUFC
NTUyNUZCQTlERTAwRkQyN0Y0IC8qIEdyYXBoaWNzQ29udGV4dEdMQU5HTEVFR0xVdGlsaXRpZXMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCNDVBQjU0
MjVGQkE5REQwMEZEMjdGNCAvKiBHcmFwaGljc0NvbnRleHRHTEFOR0xFRUdMVXRpbGl0aWVzLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJN0I2MDk0
REQyNzBDNDRCRDAwNjQ4MzVDIC8qIEFOR0xFVXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QkIzNEExNjI1MzQ1Q0IyMDAwMjlEMDggLyog
QU5HTEVVdGlsaXRpZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk3QjZEQzgxOTI1NzEyRTkyMDAzODBDNzAgLyogR3JhcGhpY3NDb250ZXh0R0xJ
T1N1cmZhY2VTd2FwQ2hhaW4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDdCNkRDODE3MjU3MTJFOTIwMDM4MEM3MCAvKiBHcmFwaGljc0NvbnRleHRHTElP
U3VyZmFjZVN3YXBDaGFpbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTdCNzMxMUZCMjVDMDkyQjcwMDNCMjc5NiAvKiBTY29wZWRIaWdoUGVyZm9y
bWFuY2VHUFVSZXF1ZXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3QjczMTFGQTI1QzA5MkI3MDAzQjI3OTYgLyogU2NvcGVkSGlnaFBlcmZvcm1hbmNl
R1BVUmVxdWVzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTdCOEVENUYwMjZGMEMxM0QwMDhBQzAyMyAvKiBDVlV0aWxpdGllcy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I4RUQ1RUQyNkYwQzEyMzAw
OEFDMDIzIC8qIENWVXRpbGl0aWVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJN0I5MDQxNzAyNTUwMTE0MjAwNkVFQjhDIC8qIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHlCYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3QjkwNDE2RTI1NTAxMTA5MDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eUJhc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwotCQk3QkIzNEExNzI1MzQ1Q0IyMDAwMjlEMDggLyogR3JhcGhpY3NDb250ZXh0
R0xBTkdMRVV0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gN0JCMzRBMTYyNTM0NUNCMjAwMDI5RDA4IC8qIEdyYXBoaWNzQ29udGV4dEdMQU5H
TEVVdGlsaXRpZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk3QkIzNEE0ODI1Mzc3NkNBMDAwMjlEMDggLyogR3JhcGhpY3NDb250ZXh0R0xJbWFn
ZUV4dHJhY3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gN0JCMzRBNDUyNTM3NzZDNjAwMDI5RDA4IC8qIEdyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRy
YWN0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk3QkI2ODBCQTI1QkExQkU0MDAyQjg3MzggLyogR3JhcGhpY3NDaGVja3NNYWMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCQjY4MEI4MjVCQTFCRTQw
MDJCODczOCAvKiBHcmFwaGljc0NoZWNrc01hYy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdCRTc0MjczODFGQTkwNkZCQjRGMEYyQyAvKiBKU1NW
R0dyYXBoaWNzRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOTUwQzRDMDJCRUQ4OTM2RjgxOEUyRjk5IC8qIEpTU1ZHR3JhcGhpY3NFbGVtZW50
LmggKi87IH07CkBAIC0xMDY1MCwyMCArMTA2NDgsMTkgQEAKIAkJN0IxMDMzOUEyNTQ5NzIwMDAw
QzhDMUFDIC8qIEdyYXBoaWNzQ29udGV4dEdMQ1ZBTkdMRS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBHcmFwaGljc0NvbnRleHRHTENWQU5HTEUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk3QjEwMzM5QzI1NDk3MjAxMDBDOEMxQUMgLyogR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xF
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dEdMQ1ZBTkdMRS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk3QjEwMzM5RDI1NDk3MjAxMDBDOEMxQUMgLyogR3JhcGhpY3ND
b250ZXh0R0xDVi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHcmFwaGljc0NvbnRleHRHTENWLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTdCNDVBQjU0MjVGQkE5REQwMEZEMjdGNCAvKiBHcmFw
aGljc0NvbnRleHRHTEFOR0xFRUdMVXRpbGl0aWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dEdMQU5HTEVFR0xVdGlsaXRpZXMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I2NEMwQjQyNTRDM0IxNjAwMDZCNEFGIC8qIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHlCYXNlQ29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZUNvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk3QjZEQzgxNTI1NzEyRTkxMDAzODBDNzAgLyogR3JhcGhpY3NDb250ZXh0
R0xJT1N1cmZhY2VTd2FwQ2hhaW4uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk3QjZEQzgxNzI1NzEyRTkyMDAzODBDNzAgLyogR3JhcGhpY3ND
b250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJN0I3MzExRkEyNUMwOTJCNzAwM0IyNzk2IC8qIFNjb3BlZEhpZ2hQ
ZXJmb3JtYW5jZUdQVVJlcXVlc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
U2NvcGVkSGlnaFBlcmZvcm1hbmNlR1BVUmVxdWVzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQk3Qjc3NEM2MjI1RkI5MzU1MDA5MTM5NUYgLyogR3JhcGhpY3NDb250ZXh0R0xBTkdM
RUVHTFV0aWxpdGllcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHcmFwaGljc0NvbnRleHRHTEFO
R0xFRUdMVXRpbGl0aWVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I4RUQ1
RUQyNkYwQzEyMzAwOEFDMDIzIC8qIENWVXRpbGl0aWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IENWVXRpbGl0aWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTdCOEVENUVGMjZGMEMxMjMwMDhBQzAyMyAvKiBDVlV0aWxpdGllcy5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IENWVXRpbGl0aWVzLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk3QjkwNDE2RTI1NTAxMTA5MDA2RUVCOEMgLyogUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eUJhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eUJhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJN0JCMzRBMTYy
NTM0NUNCMjAwMDI5RDA4IC8qIEdyYXBoaWNzQ29udGV4dEdMQU5HTEVVdGlsaXRpZXMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0R0xBTkdMRVV0aWxp
dGllcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QkIzNEExNjI1MzQ1Q0IyMDAw
MjlEMDggLyogQU5HTEVVdGlsaXRpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQU5HTEVVdGlsaXRpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0JCMzRB
NDUyNTM3NzZDNjAwMDI5RDA4IC8qIEdyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0b3IuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk3QkIzNEE0NzI1Mzc3NkM3MDAwMjlEMDggLyogR3JhcGhp
Y3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHcmFwaGlj
c0NvbnRleHRHTEltYWdlRXh0cmFjdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJN0JCNjgwQjcyNUJBMUJFMzAwMkI4NzM4IC8qIEdyYXBoaWNzQ2hlY2tzTWFjLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdyYXBoaWNzQ2hlY2tzTWFjLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0JCNjgwQjgyNUJBMUJFNDAwMkI4NzM4IC8q
IEdyYXBoaWNzQ2hlY2tzTWFjLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdy
YXBoaWNzQ2hlY2tzTWFjLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCQ0Q0MkQ4
MjcwNTk5RUYwMEVCMjEyNyAvKiBBTkdMRVV0aWxpdGllcy5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBBTkdMRVV0aWxpdGllcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCQ0Q0
MkRBMjcwNUM5NDkwMEVCMjEyNyAvKiBBTkdMRVV0aWxpdGllc0NvY29hLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEFOR0xFVXRpbGl0aWVzQ29jb2EuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk3QkNENDJEQzI3MDVDOTQ5MDBFQjIxMjcgLyogQU5HTEVVdGlsaXRpZXNDb2NvYS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBBTkdMRVV0aWxpdGllc0NvY29hLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTdCRTcyNjVCMjU3NjNCOEQwMEU4NUQ5OCAvKiBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5QmFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5QmFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMjY3
NiwxMiArMjI2NzMsMTEgQEAKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCiAJ
CQkJMjdFM0M4MDYyNTdGNUU2RTAwQzk4NkFCIC8qIEFOR0xFSGVhZGVycy5oICovLAorCQkJCTdC
Q0Q0MkQ4MjcwNTk5RUYwMEVCMjEyNyAvKiBBTkdMRVV0aWxpdGllcy5jcHAgKi8sCisJCQkJN0JC
MzRBMTYyNTM0NUNCMjAwMDI5RDA4IC8qIEFOR0xFVXRpbGl0aWVzLmggKi8sCiAJCQkJNkUyN0Yy
NDMyMjlDOUY4NDAwRjFGNjMyIC8qIEV4dGVuc2lvbnNHTEFOR0xFLmNwcCAqLywKIAkJCQk2RTI3
RjI0NDIyOUM5RjhEMDBGMUY2MzIgLyogRXh0ZW5zaW9uc0dMQU5HTEUuaCAqLywKIAkJCQk2RTI3
RjI0MjIyOThDRTRCMDBGMUY2MzIgLyogR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAgKi8sCi0J
CQkJN0I3NzRDNjIyNUZCOTM1NTAwOTEzOTVGIC8qIEdyYXBoaWNzQ29udGV4dEdMQU5HTEVFR0xV
dGlsaXRpZXMuY3BwICovLAotCQkJCTdCNDVBQjU0MjVGQkE5REQwMEZEMjdGNCAvKiBHcmFwaGlj
c0NvbnRleHRHTEFOR0xFRUdMVXRpbGl0aWVzLmggKi8sCi0JCQkJN0JCMzRBMTYyNTM0NUNCMjAw
MDI5RDA4IC8qIEdyYXBoaWNzQ29udGV4dEdMQU5HTEVVdGlsaXRpZXMuaCAqLywKIAkJCQk2RTI5
MDg2MTIyOURCOTUwMDAwOTg2RTIgLyogVGVtcG9yYXJ5QU5HTEVTZXR0aW5nLmNwcCAqLywKIAkJ
CQk2RTI5MDg2MzIyOURCOTcwMDAwOTg2RTIgLyogVGVtcG9yYXJ5QU5HTEVTZXR0aW5nLmggKi8s
CiAJCQkpOwpAQCAtMzI3MDUsOCArMzI3MDEsNiBAQAogCQkJCUIyQTAxNUE5MEFGNkNENTMwMDZC
Q0UwRSAvKiBHcmFwaGljc0NvbnRleHQuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzNDkwN0U0MTI1
QkJCQzgwMDdGMjNBMCAvKiBHcmFwaGljc0NvbnRleHRDRy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MzEzREU4NzAyM0E5Njk3MzAwOEZDNDdCIC8qIEdyYXBoaWNzQ29udGV4dEdMLmggaW4gSGVhZGVy
cyAqLywKLQkJCQk3QjQ1QUI1NTI1RkJBOURFMDBGRDI3RjQgLyogR3JhcGhpY3NDb250ZXh0R0xB
TkdMRUVHTFV0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJN0JCMzRBMTcyNTM0NUNCMjAw
MDI5RDA4IC8qIEdyYXBoaWNzQ29udGV4dEdMQU5HTEVVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICov
LAogCQkJCTdDMzMwQTAyMURGOEZBQzYwMEQzMzk1QyAvKiBHcmFwaGljc0NvbnRleHRHTEF0dHJp
YnV0ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTdCMTAzMzlFMjU0OTcyMTcwMEM4QzFBQyAvKiBH
cmFwaGljc0NvbnRleHRHTENWLmggaW4gSGVhZGVycyAqLywKIAkJCQk3QjEwMzM5RjI1NDk3MjFF
MDBDOEMxQUMgLyogR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFLmggaW4gSGVhZGVycyAqLywKQEAg
LTM1Njk2LDYgKzM1NjkwLDcgQEAKIAkJCQkwRjU0REQwODE4ODFENUY1MDAzRUVEQkIgLyogVG91
Y2guaCBpbiBIZWFkZXJzICovLAogCQkJCTcxQjdFRTBEMjFCNUM2ODcwMDMxQzFFRiAvKiBUb3Vj
aEFjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY1NEREMDkxODgxRDVGNTAwM0VFREJCIC8q
IFRvdWNoRXZlbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTdCNjA5NEREMjcwQzQ0QkQwMDY0ODM1
QyAvKiBBTkdMRVV0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY1NEREMEExODgxRDVG
NTAwM0VFREJCIC8qIFRvdWNoTGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDcwMzM0RDcxNDU5
RkZENTAwOEQ4RDQ1IC8qIFRyYWNrQmFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkU4OEUwQzIx
NzE1Q0UyNjAwNjU4RDk4IC8qIFRyYWNrTGlzdEJhc2UuaCBpbiBIZWFkZXJzICovLApAQCAtMzY1
NzMsNyArMzY1NjgsNiBAQAogCQkJCTUxQTlEOUU5MTk1QjkzMUYwMDFCMkI1QyAvKiBHYW1lcGFk
TWFuYWdlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4Mzc5NjRDRjFGOERCNjlEMDAyMThFQTAg
LyogR2VvbG9jYXRpb25Qb3NpdGlvbkRhdGFJT1MubW0gaW4gU291cmNlcyAqLywKIAkJCQk2RTcy
RjU0RTIyOURDRDEwMDBCM0UxNTEgLyogR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAgaW4gU291
cmNlcyAqLywKLQkJCQk3QjQ1QUI1MDI1RkI5M0JFMDBGRDI3RjQgLyogR3JhcGhpY3NDb250ZXh0
R0xBTkdMRUVHTFV0aWxpdGllcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QzNFNTEwQjE4REY4
RjM1MDBDMTEyRjcgLyogSFRNTENvbnZlcnRlci5tbSBpbiBTb3VyY2VzICovLAogCQkJCUE4RDA2
QjNBMEEyNjVEQ0QwMDVFNzIwMyAvKiBIVE1MTmFtZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MUFDOTAwQzMxOTQzQzBGQzAwODYyNUI1IC8qIEhUVFBIZWFkZXJOYW1lcy5jcHAgaW4gU291cmNl
cyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xl
L0FOR0xFVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Fu
Z2xlL0FOR0xFVXRpbGl0aWVzLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43YzVmOGI1ODc3MzQ5MDAwMTQ1Mzg5
NGEwMTNmMjI3MWM5NzVhY2MzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYW5nbGUvQU5HTEVVdGlsaXRpZXMuY3BwCkBAIC0wLDAgKzEsNDIgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiQU5HTEVVdGlsaXRpZXMuaCIKKworI2lmIEVOQUJMRShXRUJH
TCkgJiYgVVNFKEFOR0xFKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyNpZiAhUExBVEZPUk0o
Q09DT0EpCitib29sIHBsYXRmb3JtSXNBTkdMRUF2YWlsYWJsZSgpCit7CisgICAgcmV0dXJuIHRy
dWU7Cit9CisjZW5kaWYKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0FOR0xFVXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9BTkdMRVV0aWxpdGllcy5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY5
MmMzM2MyZmRmMmI3ZGQ4Y2MwOTViNGMxMGFmMTY1YWJkMzFhODUKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9BTkdMRVV0aWxpdGllcy5o
CkBAIC0wLDAgKzEsMjQ3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCR0wpICYmIFVTRShBTkdMRSkK
KworI2luY2x1ZGUgIkFOR0xFSGVhZGVycy5oIgorI2luY2x1ZGUgIkdyYXBoaWNzVHlwZXNHTC5o
IgorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2NsYXNzIFNjb3BlZFJlc3RvcmVUZXh0dXJlQmluZGluZyB7CisgICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoU2NvcGVkUmVzdG9yZVRleHR1cmVCaW5kaW5nKTsKK3B1YmxpYzoKKyAgICBTY29wZWRS
ZXN0b3JlVGV4dHVyZUJpbmRpbmcoR0xlbnVtIGJpbmRpbmdQb2ludFF1ZXJ5LCBHTGVudW0gYmlu
ZGluZ1BvaW50LCBib29sIGNvbmRpdGlvbiA9IHRydWUpCisgICAgeworICAgICAgICBBU1NFUlQo
YmluZGluZ1BvaW50ICE9IHN0YXRpY19jYXN0PEdMZW51bT4oMHUpKTsKKyAgICAgICAgaWYgKGNv
bmRpdGlvbikgeworICAgICAgICAgICAgbV9iaW5kaW5nUG9pbnQgPSBiaW5kaW5nUG9pbnQ7Cisg
ICAgICAgICAgICBnbDo6R2V0SW50ZWdlcnYoYmluZGluZ1BvaW50UXVlcnksIHJlaW50ZXJwcmV0
X2Nhc3Q8R0xpbnQqPigmbV9iaW5kaW5nVmFsdWUpKTsKKyAgICAgICAgfQorICAgIH0KKworICAg
IH5TY29wZWRSZXN0b3JlVGV4dHVyZUJpbmRpbmcoKQorICAgIHsKKyAgICAgICAgaWYgKG1fYmlu
ZGluZ1BvaW50KQorICAgICAgICAgICAgZ2w6OkJpbmRUZXh0dXJlKG1fYmluZGluZ1BvaW50LCBt
X2JpbmRpbmdWYWx1ZSk7CisgICAgfQorCitwcml2YXRlOgorICAgIEdMZW51bSBtX2JpbmRpbmdQ
b2ludCB7IDAgfTsKKyAgICBHTHVpbnQgbV9iaW5kaW5nVmFsdWUgeyAwdSB9OworfTsKKworCitj
bGFzcyBTY29wZWRCdWZmZXJCaW5kaW5nIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTY29w
ZWRCdWZmZXJCaW5kaW5nKTsKK3B1YmxpYzoKKyAgICBTY29wZWRCdWZmZXJCaW5kaW5nKEdMZW51
bSBiaW5kaW5nUG9pbnQsIEdMdWludCBiaW5kaW5nVmFsdWUsIGJvb2wgY29uZGl0aW9uID0gdHJ1
ZSkKKyAgICB7CisgICAgICAgIGlmICghY29uZGl0aW9uKQorICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICBnbDo6R2V0SW50ZWdlcnYocXVlcnkoYmluZGluZ1BvaW50KSwgcmVpbnRlcnByZXRf
Y2FzdDxHTGludCo+KCZtX2JpbmRpbmdWYWx1ZSkpOworICAgICAgICBpZiAoYmluZGluZ1ZhbHVl
ID09IG1fYmluZGluZ1ZhbHVlKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBtX2JpbmRp
bmdQb2ludCA9IGJpbmRpbmdQb2ludDsKKyAgICAgICAgZ2w6OkJpbmRCdWZmZXIobV9iaW5kaW5n
UG9pbnQsIGJpbmRpbmdWYWx1ZSk7CisgICAgfQorCisgICAgflNjb3BlZEJ1ZmZlckJpbmRpbmco
KQorICAgIHsKKyAgICAgICAgaWYgKG1fYmluZGluZ1BvaW50KQorICAgICAgICAgICAgZ2w6OkJp
bmRCdWZmZXIobV9iaW5kaW5nUG9pbnQsIG1fYmluZGluZ1ZhbHVlKTsKKyAgICB9CisKK3ByaXZh
dGU6CisgICAgc3RhdGljIGNvbnN0ZXhwciBHTGVudW0gcXVlcnkoR0xlbnVtIGJpbmRpbmdQb2lu
dCkKKyAgICB7CisgICAgICAgIGlmIChiaW5kaW5nUG9pbnQgPT0gR0xfUElYRUxfUEFDS19CVUZG
RVIpCisgICAgICAgICAgICByZXR1cm4gR0xfUElYRUxfUEFDS19CVUZGRVJfQklORElORzsKKyAg
ICAgICAgQVNTRVJUKGJpbmRpbmdQb2ludCA9PSBHTF9QSVhFTF9VTlBBQ0tfQlVGRkVSKTsKKyAg
ICAgICAgcmV0dXJuIEdMX1BJWEVMX1VOUEFDS19CVUZGRVJfQklORElORzsKKyAgICB9CisgICAg
R0xpbnQgbV9iaW5kaW5nUG9pbnQgeyAwIH07CisgICAgR0x1aW50IG1fYmluZGluZ1ZhbHVlIHsg
MHUgfTsKK307CitjbGFzcyBTY29wZWRSZXN0b3JlUmVhZEZyYW1lYnVmZmVyQmluZGluZyB7Cisg
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU2NvcGVkUmVzdG9yZVJlYWRGcmFtZWJ1ZmZlckJpbmRp
bmcpOworcHVibGljOgorICAgIFNjb3BlZFJlc3RvcmVSZWFkRnJhbWVidWZmZXJCaW5kaW5nKGJv
b2wgaXNGb3JXZWJHTDIsIEdMdWludCByZXN0b3JlVmFsdWUpCisgICAgICAgIDogbV9mcmFtZWJ1
ZmZlclRhcmdldChpc0ZvcldlYkdMMiA/IEdMX1JFQURfRlJBTUVCVUZGRVIgOiBHTF9GUkFNRUJV
RkZFUikKKyAgICAgICAgLCBtX2JpbmRpbmdWYWx1ZShyZXN0b3JlVmFsdWUpCisgICAgeworICAg
IH0KKyAgICBTY29wZWRSZXN0b3JlUmVhZEZyYW1lYnVmZmVyQmluZGluZyhib29sIGlzRm9yV2Vi
R0wyLCBHTHVpbnQgcmVzdG9yZVZhbHVlLCBHTHVpbnQgdmFsdWUpCisgICAgICAgIDogbV9mcmFt
ZWJ1ZmZlclRhcmdldChpc0ZvcldlYkdMMiA/IEdMX1JFQURfRlJBTUVCVUZGRVIgOiBHTF9GUkFN
RUJVRkZFUikKKyAgICAgICAgLCBtX2JpbmRpbmdWYWx1ZShyZXN0b3JlVmFsdWUpCisgICAgewor
ICAgICAgICBiaW5kRnJhbWVidWZmZXIodmFsdWUpOworICAgIH0KKyAgICB2b2lkIG1hcmtCaW5k
aW5nQ2hhbmdlZCgpCisgICAgeworICAgICAgICBtX2JpbmRpbmdDaGFuZ2VkID0gdHJ1ZTsKKyAg
ICB9CisgICAgdm9pZCBiaW5kRnJhbWVidWZmZXIoR0x1aW50IGJpbmRpbmdWYWx1ZSkKKyAgICB7
CisgICAgICAgIGlmICghbV9iaW5kaW5nQ2hhbmdlZCAmJiBtX2JpbmRpbmdWYWx1ZSA9PSBiaW5k
aW5nVmFsdWUpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGdsOjpCaW5kRnJhbWVidWZm
ZXIobV9mcmFtZWJ1ZmZlclRhcmdldCwgYmluZGluZ1ZhbHVlKTsKKyAgICAgICAgbV9iaW5kaW5n
Q2hhbmdlZCA9IG1fYmluZGluZ1ZhbHVlICE9IGJpbmRpbmdWYWx1ZTsKKyAgICB9CisgICAgR0x1
aW50IGZyYW1lYnVmZmVyVGFyZ2V0KCkgY29uc3QgeyByZXR1cm4gbV9mcmFtZWJ1ZmZlclRhcmdl
dDsgfQorICAgIH5TY29wZWRSZXN0b3JlUmVhZEZyYW1lYnVmZmVyQmluZGluZygpCisgICAgewor
ICAgICAgICBpZiAobV9iaW5kaW5nQ2hhbmdlZCkKKyAgICAgICAgICAgIGdsOjpCaW5kRnJhbWVi
dWZmZXIobV9mcmFtZWJ1ZmZlclRhcmdldCwgbV9iaW5kaW5nVmFsdWUpOworICAgIH0KK3ByaXZh
dGU6CisgICAgY29uc3QgR0xlbnVtIG1fZnJhbWVidWZmZXJUYXJnZXQ7CisgICAgR0x1aW50IG1f
YmluZGluZ1ZhbHVlIHsgMHUgfTsKKyAgICBib29sIG1fYmluZGluZ0NoYW5nZWQgeyBmYWxzZSB9
OworfTsKKworY2xhc3MgU2NvcGVkUGl4ZWxTdG9yYWdlTW9kZSB7CisgICAgV1RGX01BS0VfTk9O
Q09QWUFCTEUoU2NvcGVkUGl4ZWxTdG9yYWdlTW9kZSk7CitwdWJsaWM6CisgICAgZXhwbGljaXQg
U2NvcGVkUGl4ZWxTdG9yYWdlTW9kZShHTGVudW0gbmFtZSwgYm9vbCBjb25kaXRpb24gPSB0cnVl
KQorICAgICAgICA6IG1fbmFtZShjb25kaXRpb24gPyBuYW1lIDogMCkKKyAgICB7CisgICAgICAg
IGlmIChtX25hbWUpCisgICAgICAgICAgICBnbDo6R2V0SW50ZWdlcnYobV9uYW1lLCAmbV9vcmln
aW5hbFZhbHVlKTsKKyAgICB9CisgICAgU2NvcGVkUGl4ZWxTdG9yYWdlTW9kZShHTGVudW0gbmFt
ZSwgR0xpbnQgdmFsdWUsIGJvb2wgY29uZGl0aW9uID0gdHJ1ZSkKKyAgICAgICAgOiBtX25hbWUo
Y29uZGl0aW9uID8gbmFtZSA6IDApCisgICAgeworICAgICAgICBpZiAobV9uYW1lKSB7CisgICAg
ICAgICAgICBnbDo6R2V0SW50ZWdlcnYobV9uYW1lLCAmbV9vcmlnaW5hbFZhbHVlKTsKKyAgICAg
ICAgICAgIHBpeGVsU3RvcmUodmFsdWUpOworICAgICAgICB9CisgICAgfQorICAgIH5TY29wZWRQ
aXhlbFN0b3JhZ2VNb2RlKCkKKyAgICB7CisgICAgICAgIGlmIChtX25hbWUgJiYgbV92YWx1ZUNo
YW5nZWQpCisgICAgICAgICAgICBnbDo6UGl4ZWxTdG9yZWkobV9uYW1lLCBtX29yaWdpbmFsVmFs
dWUpOworICAgIH0KKyAgICB2b2lkIHBpeGVsU3RvcmUoR0xpbnQgdmFsdWUpCisgICAgeworICAg
ICAgICBBU1NFUlQobV9uYW1lKTsKKyAgICAgICAgaWYgKCFtX3ZhbHVlQ2hhbmdlZCAmJiBtX29y
aWdpbmFsVmFsdWUgPT0gdmFsdWUpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGdsOjpQ
aXhlbFN0b3JlaShtX25hbWUsIHZhbHVlKTsKKyAgICAgICAgbV92YWx1ZUNoYW5nZWQgPSBtX29y
aWdpbmFsVmFsdWUgIT0gdmFsdWU7CisgICAgfQorICAgIG9wZXJhdG9yIEdMaW50KCkgY29uc3QK
KyAgICB7CisgICAgICAgIEFTU0VSVChtX25hbWUgJiYgIW1fdmFsdWVDaGFuZ2VkKTsKKyAgICAg
ICAgcmV0dXJuIG1fb3JpZ2luYWxWYWx1ZTsKKyAgICB9Citwcml2YXRlOgorICAgIGNvbnN0IEdM
ZW51bSBtX25hbWU7CisgICAgYm9vbCBtX3ZhbHVlQ2hhbmdlZCB7IGZhbHNlIH07CisgICAgR0xp
bnQgbV9vcmlnaW5hbFZhbHVlIHsgMCB9OworfTsKKworY2xhc3MgU2NvcGVkVGV4dHVyZSB7Cisg
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU2NvcGVkVGV4dHVyZSk7CitwdWJsaWM6CisgICAgU2Nv
cGVkVGV4dHVyZSgpCisgICAgeworICAgICAgICBnbDo6R2VuVGV4dHVyZXMoMSwgJm1fb2JqZWN0
KTsKKyAgICB9CisgICAgflNjb3BlZFRleHR1cmUoKQorICAgIHsKKyAgICAgICAgZ2w6OkRlbGV0
ZVRleHR1cmVzKDEsICZtX29iamVjdCk7CisgICAgfQorICAgIG9wZXJhdG9yIEdMdWludCgpIGNv
bnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9vYmplY3Q7CisgICAgfQorcHJpdmF0ZToKKyAg
ICBHTHVpbnQgbV9vYmplY3QgeyAwdSB9OworfTsKKworY2xhc3MgU2NvcGVkRnJhbWVidWZmZXIg
eworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFNjb3BlZEZyYW1lYnVmZmVyKTsKK3B1YmxpYzoK
KyAgICBTY29wZWRGcmFtZWJ1ZmZlcigpCisgICAgeworICAgICAgICBnbDo6R2VuRnJhbWVidWZm
ZXJzKDEsICZtX29iamVjdCk7CisgICAgfQorICAgIH5TY29wZWRGcmFtZWJ1ZmZlcigpCisgICAg
eworICAgICAgICBnbDo6RGVsZXRlRnJhbWVidWZmZXJzKDEsICZtX29iamVjdCk7CisgICAgfQor
ICAgIG9wZXJhdG9yIEdMdWludCgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9vYmpl
Y3Q7CisgICAgfQorcHJpdmF0ZToKKyAgICBHTHVpbnQgbV9vYmplY3QgeyAwIH07Cit9OworCitj
bGFzcyBTY29wZWRHTEZlbmNlIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTY29wZWRHTEZl
bmNlKTsKK3B1YmxpYzoKKyAgICBTY29wZWRHTEZlbmNlKCkgPSBkZWZhdWx0OworICAgIFNjb3Bl
ZEdMRmVuY2UoU2NvcGVkR0xGZW5jZSYmIG90aGVyKQorICAgICAgICA6IG1fb2JqZWN0KHN0ZDo6
ZXhjaGFuZ2Uob3RoZXIubV9vYmplY3QsIHsgfSkpCisgICAgeworICAgIH0KKyAgICB+U2NvcGVk
R0xGZW5jZSgpIHsgcmVzZXQoKTsgfQorICAgIFNjb3BlZEdMRmVuY2UmIG9wZXJhdG9yPShTY29w
ZWRHTEZlbmNlJiYgb3RoZXIpCisgICAgeworICAgICAgICBpZiAodGhpcyAhPSAmb3RoZXIpIHsK
KyAgICAgICAgICAgIHJlc2V0KCk7CisgICAgICAgICAgICBtX29iamVjdCA9IHN0ZDo6ZXhjaGFu
Z2Uob3RoZXIubV9vYmplY3QsIHsgfSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuICp0aGlz
OworICAgIH0KKyAgICB2b2lkIHJlc2V0KCkKKyAgICB7CisgICAgICAgIGlmIChtX29iamVjdCkg
eworICAgICAgICAgICAgZ2w6OkRlbGV0ZVN5bmMobV9vYmplY3QpOworICAgICAgICAgICAgbV9v
YmplY3QgPSB7IH07CisgICAgICAgIH0KKyAgICB9CisgICAgdm9pZCBhYmFuZG9uKCkgeyBtX29i
amVjdCA9IHsgfTsgfQorICAgIHZvaWQgZmVuY2VTeW5jKCkKKyAgICB7CisgICAgICAgIHJlc2V0
KCk7CisgICAgICAgIG1fb2JqZWN0ID0gZ2w6OkZlbmNlU3luYyhHTF9TWU5DX0dQVV9DT01NQU5E
U19DT01QTEVURSwgMCk7CisgICAgfQorICAgIG9wZXJhdG9yIEdMc3luYygpIGNvbnN0IHsgcmV0
dXJuIG1fb2JqZWN0OyB9CisgICAgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuIG1fb2Jq
ZWN0OyB9Citwcml2YXRlOgorICAgIEdMc3luYyBtX29iamVjdCB7IH07Cit9OworCitib29sIHBs
YXRmb3JtSXNBTkdMRUF2YWlsYWJsZSgpOworCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdM
RS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0Nv
bnRleHRHTEFOR0xFLmNwcAppbmRleCAwMDZiOGEzZWU2MDE1MThiMWI2NTJhZTc3YzU0OTE5ZTA2
NDdkYzVmLi5kMzNjMGNmZmRiOWU5YTU3MTIyYTUwNDVjN2Q0MjQyOGU1Zjc4Mzk5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRl
eHRHTEFOR0xFLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmds
ZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcApAQCAtMzAsOCArMzAsOCBAQAogI2luY2x1ZGUg
IkdyYXBoaWNzQ29udGV4dEdMLmgiCiAKICNpbmNsdWRlICJBTkdMRUhlYWRlcnMuaCIKKyNpbmNs
dWRlICJBTkdMRVV0aWxpdGllcy5oIgogI2luY2x1ZGUgIkV4dGVuc2lvbnNHTEFOR0xFLmgiCi0j
aW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0R0xBTkdMRVV0aWxpdGllcy5oIgogI2luY2x1ZGUgIkdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMLmgiCiAjaW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIKICNpbmNs
dWRlICJJbnRSZWN0LmgiCkBAIC03NSw2ICs3NSw0OSBAQCBzdGF0aWMgdm9pZCB3aXBlQWxwaGFD
aGFubmVsRnJvbVBpeGVscyhpbnQgd2lkdGgsIGludCBoZWlnaHQsIHVuc2lnbmVkIGNoYXIqIHBp
eAogfQogI2VuZGlmCiAKK2Jvb2wgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlbGVhc2VUaHJl
YWRSZXNvdXJjZXMoUmVsZWFzZVRocmVhZFJlc291cmNlQmVoYXZpb3IgcmVsZWFzZUJlaGF2aW9y
KQoreworICAgIHBsYXRmb3JtUmVsZWFzZVRocmVhZFJlc291cmNlcygpOworCisgICAgaWYgKCFw
bGF0Zm9ybUlzQU5HTEVBdmFpbGFibGUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
Ly8gVW5zZXQgdGhlIEVHTCBjdXJyZW50IGNvbnRleHQsIHNpbmNlIHRoZSBuZXh0IGFjY2VzcyBt
aWdodCBiZSBmcm9tIGFub3RoZXIgdGhyZWFkLCBhbmQgdGhlCisgICAgLy8gY29udGV4dCBjYW5u
b3QgYmUgY3VycmVudCBvbiBtdWx0aXBsZSB0aHJlYWRzLgorICAgIGlmIChyZWxlYXNlQmVoYXZp
b3IgPT0gUmVsZWFzZVRocmVhZFJlc291cmNlQmVoYXZpb3I6OlJlbGVhc2VDdXJyZW50Q29udGV4
dCkgeworICAgICAgICBpZiAoRUdMX0dldEN1cnJlbnRDb250ZXh0KCkgPT0gRUdMX05PX0NPTlRF
WFQpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgLy8gQXQgdGhlIHRpbWUgb2Yg
d3JpdGluZywgQU5HTEUgZG9lcyBub3QgZmx1c2ggb24gTWFrZUN1cnJlbnQuIFNpbmNlIHdlIGFy
ZQorICAgICAgICAvLyBwb3RlbnRpYWxseSBzd2l0Y2hpbmcgdGhyZWFkcywgd2Ugc2hvdWxkIGZs
dXNoLgorICAgICAgICAvLyBOb3RlOiBIZXJlIHdlIGFzc3VtZSBhbHNvIHRoYXQgQU5HTEUgaGFz
IG9ubHkgb25lIHBsYXRmb3JtIGNvbnRleHQgLS0gb3RoZXJ3aXNlCisgICAgICAgIC8vIHdlIHdv
dWxkIG5lZWQgdG8gZmx1c2ggZWFjaCBFR0wgY29udGV4dCB0aGF0IGhhcyBiZWVuIHVzZWQuCisg
ICAgICAgIGdsOjpGbHVzaCgpOworICAgICAgICBFR0xEaXNwbGF5IGRpc3BsYXkgPSBFR0xfR2V0
RGlzcGxheShFR0xfREVGQVVMVF9ESVNQTEFZKTsKKyAgICAgICAgaWYgKGRpc3BsYXkgPT0gRUdM
X05PX0RJU1BMQVkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIEVH
TF9NYWtlQ3VycmVudChkaXNwbGF5LCBFR0xfTk9fU1VSRkFDRSwgRUdMX05PX1NVUkZBQ0UsIEVH
TF9OT19DT05URVhUKTsKKyAgICB9CisgICAgaWYgKHJlbGVhc2VCZWhhdmlvciA9PSBSZWxlYXNl
VGhyZWFkUmVzb3VyY2VCZWhhdmlvcjo6VGVybWluYXRlQW5kUmVsZWFzZVRocmVhZFJlc291cmNl
cykgeworICAgICAgICBFR0xEaXNwbGF5IGRpc3BsYXkgPSBFR0xfR2V0RGlzcGxheShFR0xfREVG
QVVMVF9ESVNQTEFZKTsKKyAgICAgICAgaWYgKGRpc3BsYXkgIT0gRUdMX05PX0RJU1BMQVkpIHsK
KyAgICAgICAgICAgIGlmIChFR0xfR2V0Q3VycmVudENvbnRleHQoKSAhPSBFR0xfTk9fQ09OVEVY
VCkgeworICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyAvLyBBbGwgcmVzb3Vy
Y2VzIG11c3QgaGF2ZSBiZWVuIGRlc3Ryb3llZC4KKyAgICAgICAgICAgICAgICBFR0xfTWFrZUN1
cnJlbnQoZGlzcGxheSwgRUdMX05PX1NVUkZBQ0UsIEVHTF9OT19TVVJGQUNFLCBFR0xfTk9fQ09O
VEVYVCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBFR0xfVGVybWluYXRlKGRpc3BsYXkp
OworICAgICAgICB9CisgICAgfQorICAgIC8vIENhbGxlZCB3aGVuIHdlIGRvIG5vdCBrbm93IGlm
IHdlIHdpbGwgZXZlciBzZWUgYW5vdGhlciBjYWxsIGZyb20gdGhpcyB0aHJlYWQgYWdhaW4uCisg
ICAgLy8gVW5zZXQgdGhlIEVHTCBjdXJyZW50IGNvbnRleHQgYnkgcmVsZWFzaW5nIHdob2xlIEVH
TCB0aHJlYWQgc3RhdGUuCisgICAgcmV0dXJuIEVHTF9SZWxlYXNlVGhyZWFkKCk7Cit9CisKKyNp
ZiAhUExBVEZPUk0oQ09DT0EpCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpwbGF0Zm9y
bVJlbGVhc2VUaHJlYWRSZXNvdXJjZXMoKQoreworfQorI2VuZGlmCisKIHN0ZDo6b3B0aW9uYWw8
UGl4ZWxCdWZmZXI+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkUGl4ZWxzRm9yUGFpbnRS
ZXN1bHRzKCkKIHsKICAgICBQaXhlbEJ1ZmZlckZvcm1hdCBmb3JtYXQgeyBBbHBoYVByZW11bHRp
cGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpSR0JBOCwgRGVzdGluYXRp
b25Db2xvclNwYWNlOjpTUkdCKCkgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEVFR0xVdGlsaXRpZXMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0
R0xBTkdMRUVHTFV0aWxpdGllcy5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI1
YmY4MzdkMjVlNDNkMDY1OGQ2YjY4NTFkZDQ4YTIxOTg2OTZmN2IuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRUVHTFV0aWxpdGllcy5jcHAKKysrIC9k
ZXYvbnVsbApAQCAtMSw5MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
Ci0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkdyYXBoaWNzQ29u
dGV4dEdMQU5HTEVFR0xVdGlsaXRpZXMuaCIKLQotI2luY2x1ZGUgIkFOR0xFSGVhZGVycy5oIgot
I2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+Ci0KLSNpZiBFTkFCTEUoV0VCR0wpICYmIFVTRShB
TkdMRSkKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdGF0aWMgdW5zaWduZWQgZGVmYXVsdERp
c3BsYXlSZWZDb3VudDsKLXN0YXRpYyB2b2lkKiBkZWZhdWx0RGlzcGxheSA9IG51bGxwdHI7Ci0K
LXN0YXRpYyB2b2lkIHJlZkRlZmF1bHREaXNwbGF5KHZvaWQqIGRpc3BsYXkpCi17Ci0gICAgQVNT
RVJUKGRpc3BsYXkgIT0gbnVsbHB0cik7Ci0gICAgQVNTRVJUKGRlZmF1bHREaXNwbGF5ID09IGRp
c3BsYXkgfHwgKCFkZWZhdWx0RGlzcGxheSAmJiAhZGVmYXVsdERpc3BsYXlSZWZDb3VudCkpOwot
ICAgIGRlZmF1bHREaXNwbGF5UmVmQ291bnQrKzsKLSAgICBkZWZhdWx0RGlzcGxheSA9IGRpc3Bs
YXk7Ci19Ci0KLXN0YXRpYyB2b2lkIHVucmVmRGVmYXVsdERpc3BsYXlJZk5lZWRlZCh2b2lkKiBk
aXNwbGF5KQotewotICAgIGlmICghZGlzcGxheSkKLSAgICAgICAgcmV0dXJuOwotICAgIEFTU0VS
VChkZWZhdWx0RGlzcGxheSA9PSBkaXNwbGF5KTsKLSAgICBBU1NFUlQoZGVmYXVsdERpc3BsYXlS
ZWZDb3VudCk7Ci0gICAgZGVmYXVsdERpc3BsYXlSZWZDb3VudC0tOwotfQotCi1TY29wZWRFR0xE
ZWZhdWx0RGlzcGxheSYgU2NvcGVkRUdMRGVmYXVsdERpc3BsYXk6Om9wZXJhdG9yPShTY29wZWRF
R0xEZWZhdWx0RGlzcGxheSYmIG90aGVyKQotewotICAgIGlmICh0aGlzICE9ICZvdGhlcikgewot
ICAgICAgICB1bnJlZkRlZmF1bHREaXNwbGF5SWZOZWVkZWQobV9kaXNwbGF5KTsKLSAgICAgICAg
bV9kaXNwbGF5ID0gc3RkOjpleGNoYW5nZShvdGhlci5tX2Rpc3BsYXksIG51bGxwdHIpOwotICAg
IH0KLSAgICByZXR1cm4gKnRoaXM7Ci19Ci0KLVNjb3BlZEVHTERlZmF1bHREaXNwbGF5OjpTY29w
ZWRFR0xEZWZhdWx0RGlzcGxheSh2b2lkKiBkaXNwbGF5KQotICAgIDogbV9kaXNwbGF5KGRpc3Bs
YXkpCi17Ci0gICAgcmVmRGVmYXVsdERpc3BsYXkobV9kaXNwbGF5KTsKLX0KLQotU2NvcGVkRUdM
RGVmYXVsdERpc3BsYXk6On5TY29wZWRFR0xEZWZhdWx0RGlzcGxheSgpCi17Ci0gICAgdW5yZWZE
ZWZhdWx0RGlzcGxheUlmTmVlZGVkKG1fZGlzcGxheSk7Ci19Ci0KLXZvaWQgU2NvcGVkRUdMRGVm
YXVsdERpc3BsYXk6OnJlbGVhc2VBbGxSZXNvdXJjZXNJZlVudXNlZCgpCi17Ci0gICAgaWYgKGRl
ZmF1bHREaXNwbGF5UmVmQ291bnQpCi0gICAgICAgIHJldHVybjsKLSAgICBpZiAoZGVmYXVsdERp
c3BsYXkgPT0gbnVsbHB0cikKLSAgICAgICAgcmV0dXJuOwotICAgIGJvb2wgcmVzdWx0ID0gRUdM
X1Rlcm1pbmF0ZShkZWZhdWx0RGlzcGxheSk7Ci0gICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJl
c3VsdCk7Ci0gICAgcmVzdWx0ID0gRUdMX1JlbGVhc2VUaHJlYWQoKTsKLSAgICBBU1NFUlRfVU5V
U0VEKHJlc3VsdCwgcmVzdWx0KTsKLSAgICBkZWZhdWx0RGlzcGxheSA9IG51bGxwdHI7Ci19Ci0K
LX0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFRUdMVXRpbGl0aWVzLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFRUdMVXRp
bGl0aWVzLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk0NDIwNTIwYmRlOGJhMmVl
ODVkNjg4MmY2NThkNDU4MmRiY2VlYTAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3Jh
cGhpY3NDb250ZXh0R0xBTkdMRUVHTFV0aWxpdGllcy5oCisrKyAvZGV2L251bGwKQEAgLTEsNjIg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNw
cmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQkdMKSAmJiBVU0UoQU5HTEUpCi0KLSNpbmNsdWRl
IDxhbGdvcml0aG0+Ci0jaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+Ci0KLS8vIEN1cnJlbnRs
eSB0aGlzIG5vdCB1c2luZyBBTkdMRSBoZWFkZXJzIHNpbmNlIHRoaXMgaXMgZXhwb3J0ZWQgaGVh
ZGVyIGFuZCB3ZSBkbyBub3QgZXhwb3J0IEFOR0xFIGhlYWRlcnMuCi0KLW5hbWVzcGFjZSBXZWJD
b3JlIHsKLQotY2xhc3MgU2NvcGVkRUdMRGVmYXVsdERpc3BsYXkgewotICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKFNjb3BlZEVHTERlZmF1bHREaXNwbGF5KTsKLXB1YmxpYzoKLSAgICBzdGF0aWMg
U2NvcGVkRUdMRGVmYXVsdERpc3BsYXkgYWRvcHRJbml0aWFsaXplZERpc3BsYXkodm9pZCogZGlz
cGxheSkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChkaXNwbGF5ICE9IG51bGxwdHIpOwotICAgICAg
ICByZXR1cm4gU2NvcGVkRUdMRGVmYXVsdERpc3BsYXkoZGlzcGxheSk7Ci0gICAgfQotICAgIFNj
b3BlZEVHTERlZmF1bHREaXNwbGF5KCkgPSBkZWZhdWx0OwotICAgIFNjb3BlZEVHTERlZmF1bHRE
aXNwbGF5KFNjb3BlZEVHTERlZmF1bHREaXNwbGF5JiYgb3RoZXIpCi0gICAgICAgIDogbV9kaXNw
bGF5KHN0ZDo6ZXhjaGFuZ2Uob3RoZXIubV9kaXNwbGF5LCBudWxscHRyKSkKLSAgICB7Ci0gICAg
fQotICAgIH5TY29wZWRFR0xEZWZhdWx0RGlzcGxheSgpOwotICAgIFNjb3BlZEVHTERlZmF1bHRE
aXNwbGF5JiBvcGVyYXRvcj0oU2NvcGVkRUdMRGVmYXVsdERpc3BsYXkmJik7Ci0gICAgb3BlcmF0
b3Igdm9pZCooKSBjb25zdCB7IHJldHVybiBtX2Rpc3BsYXk7IH0KLSAgICBvcGVyYXRvciBib29s
KCkgY29uc3QgeyByZXR1cm4gbV9kaXNwbGF5ICE9IG51bGxwdHI7IH0KLSAgICBzdGF0aWMgdm9p
ZCByZWxlYXNlQWxsUmVzb3VyY2VzSWZVbnVzZWQoKTsKLXByaXZhdGU6Ci0gICAgU2NvcGVkRUdM
RGVmYXVsdERpc3BsYXkodm9pZCopOwotICAgIHZvaWQqIG1fZGlzcGxheSB7IG51bGxwdHIgfTsK
LX07Ci0KLX0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFVXRpbGl0aWVzLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFVXRp
bGl0aWVzLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRjNzlmMWUyNDIzZjUyMTNi
MDMwMWM4YzgwYTU0ZjZiY2M0NDllOTIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3Jh
cGhpY3NDb250ZXh0R0xBTkdMRVV0aWxpdGllcy5oCisrKyAvZGV2L251bGwKQEAgLTEsMjQ1ICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
LSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJh
Z21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJHTCkgJiYgVVNFKEFOR0xFKQotCi0jaW5jbHVkZSAi
QU5HTEVIZWFkZXJzLmgiCi0jaW5jbHVkZSAiR3JhcGhpY3NUeXBlc0dMLmgiCi0jaW5jbHVkZSA8
d3RmL05vbmNvcHlhYmxlLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgU2NvcGVk
UmVzdG9yZVRleHR1cmVCaW5kaW5nIHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTY29wZWRS
ZXN0b3JlVGV4dHVyZUJpbmRpbmcpOwotcHVibGljOgotICAgIFNjb3BlZFJlc3RvcmVUZXh0dXJl
QmluZGluZyhHTGVudW0gYmluZGluZ1BvaW50UXVlcnksIEdMZW51bSBiaW5kaW5nUG9pbnQsIGJv
b2wgY29uZGl0aW9uID0gdHJ1ZSkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChiaW5kaW5nUG9pbnQg
IT0gc3RhdGljX2Nhc3Q8R0xlbnVtPigwdSkpOwotICAgICAgICBpZiAoY29uZGl0aW9uKSB7Ci0g
ICAgICAgICAgICBtX2JpbmRpbmdQb2ludCA9IGJpbmRpbmdQb2ludDsKLSAgICAgICAgICAgIGds
OjpHZXRJbnRlZ2VydihiaW5kaW5nUG9pbnRRdWVyeSwgcmVpbnRlcnByZXRfY2FzdDxHTGludCo+
KCZtX2JpbmRpbmdWYWx1ZSkpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgflNjb3BlZFJlc3Rv
cmVUZXh0dXJlQmluZGluZygpCi0gICAgewotICAgICAgICBpZiAobV9iaW5kaW5nUG9pbnQpCi0g
ICAgICAgICAgICBnbDo6QmluZFRleHR1cmUobV9iaW5kaW5nUG9pbnQsIG1fYmluZGluZ1ZhbHVl
KTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgR0xlbnVtIG1fYmluZGluZ1BvaW50IHsgMCB9Owot
ICAgIEdMdWludCBtX2JpbmRpbmdWYWx1ZSB7IDB1IH07Ci19OwotCi0KLWNsYXNzIFNjb3BlZEJ1
ZmZlckJpbmRpbmcgewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFNjb3BlZEJ1ZmZlckJpbmRp
bmcpOwotcHVibGljOgotICAgIFNjb3BlZEJ1ZmZlckJpbmRpbmcoR0xlbnVtIGJpbmRpbmdQb2lu
dCwgR0x1aW50IGJpbmRpbmdWYWx1ZSwgYm9vbCBjb25kaXRpb24gPSB0cnVlKQotICAgIHsKLSAg
ICAgICAgaWYgKCFjb25kaXRpb24pCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGdsOjpH
ZXRJbnRlZ2VydihxdWVyeShiaW5kaW5nUG9pbnQpLCByZWludGVycHJldF9jYXN0PEdMaW50Kj4o
Jm1fYmluZGluZ1ZhbHVlKSk7Ci0gICAgICAgIGlmIChiaW5kaW5nVmFsdWUgPT0gbV9iaW5kaW5n
VmFsdWUpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIG1fYmluZGluZ1BvaW50ID0gYmlu
ZGluZ1BvaW50OwotICAgICAgICBnbDo6QmluZEJ1ZmZlcihtX2JpbmRpbmdQb2ludCwgYmluZGlu
Z1ZhbHVlKTsKLSAgICB9Ci0KLSAgICB+U2NvcGVkQnVmZmVyQmluZGluZygpCi0gICAgewotICAg
ICAgICBpZiAobV9iaW5kaW5nUG9pbnQpCi0gICAgICAgICAgICBnbDo6QmluZEJ1ZmZlcihtX2Jp
bmRpbmdQb2ludCwgbV9iaW5kaW5nVmFsdWUpOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBzdGF0
aWMgY29uc3RleHByIEdMZW51bSBxdWVyeShHTGVudW0gYmluZGluZ1BvaW50KQotICAgIHsKLSAg
ICAgICAgaWYgKGJpbmRpbmdQb2ludCA9PSBHTF9QSVhFTF9QQUNLX0JVRkZFUikKLSAgICAgICAg
ICAgIHJldHVybiBHTF9QSVhFTF9QQUNLX0JVRkZFUl9CSU5ESU5HOwotICAgICAgICBBU1NFUlQo
YmluZGluZ1BvaW50ID09IEdMX1BJWEVMX1VOUEFDS19CVUZGRVIpOwotICAgICAgICByZXR1cm4g
R0xfUElYRUxfVU5QQUNLX0JVRkZFUl9CSU5ESU5HOwotICAgIH0KLSAgICBHTGludCBtX2JpbmRp
bmdQb2ludCB7IDAgfTsKLSAgICBHTHVpbnQgbV9iaW5kaW5nVmFsdWUgeyAwdSB9OwotfTsKLWNs
YXNzIFNjb3BlZFJlc3RvcmVSZWFkRnJhbWVidWZmZXJCaW5kaW5nIHsKLSAgICBXVEZfTUFLRV9O
T05DT1BZQUJMRShTY29wZWRSZXN0b3JlUmVhZEZyYW1lYnVmZmVyQmluZGluZyk7Ci1wdWJsaWM6
Ci0gICAgU2NvcGVkUmVzdG9yZVJlYWRGcmFtZWJ1ZmZlckJpbmRpbmcoYm9vbCBpc0ZvcldlYkdM
MiwgR0x1aW50IHJlc3RvcmVWYWx1ZSkKLSAgICAgICAgOiBtX2ZyYW1lYnVmZmVyVGFyZ2V0KGlz
Rm9yV2ViR0wyID8gR0xfUkVBRF9GUkFNRUJVRkZFUiA6IEdMX0ZSQU1FQlVGRkVSKQotICAgICAg
ICAsIG1fYmluZGluZ1ZhbHVlKHJlc3RvcmVWYWx1ZSkKLSAgICB7Ci0gICAgfQotICAgIFNjb3Bl
ZFJlc3RvcmVSZWFkRnJhbWVidWZmZXJCaW5kaW5nKGJvb2wgaXNGb3JXZWJHTDIsIEdMdWludCBy
ZXN0b3JlVmFsdWUsIEdMdWludCB2YWx1ZSkKLSAgICAgICAgOiBtX2ZyYW1lYnVmZmVyVGFyZ2V0
KGlzRm9yV2ViR0wyID8gR0xfUkVBRF9GUkFNRUJVRkZFUiA6IEdMX0ZSQU1FQlVGRkVSKQotICAg
ICAgICAsIG1fYmluZGluZ1ZhbHVlKHJlc3RvcmVWYWx1ZSkKLSAgICB7Ci0gICAgICAgIGJpbmRG
cmFtZWJ1ZmZlcih2YWx1ZSk7Ci0gICAgfQotICAgIHZvaWQgbWFya0JpbmRpbmdDaGFuZ2VkKCkK
LSAgICB7Ci0gICAgICAgIG1fYmluZGluZ0NoYW5nZWQgPSB0cnVlOwotICAgIH0KLSAgICB2b2lk
IGJpbmRGcmFtZWJ1ZmZlcihHTHVpbnQgYmluZGluZ1ZhbHVlKQotICAgIHsKLSAgICAgICAgaWYg
KCFtX2JpbmRpbmdDaGFuZ2VkICYmIG1fYmluZGluZ1ZhbHVlID09IGJpbmRpbmdWYWx1ZSkKLSAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgZ2w6OkJpbmRGcmFtZWJ1ZmZlcihtX2ZyYW1lYnVm
ZmVyVGFyZ2V0LCBiaW5kaW5nVmFsdWUpOwotICAgICAgICBtX2JpbmRpbmdDaGFuZ2VkID0gbV9i
aW5kaW5nVmFsdWUgIT0gYmluZGluZ1ZhbHVlOwotICAgIH0KLSAgICBHTHVpbnQgZnJhbWVidWZm
ZXJUYXJnZXQoKSBjb25zdCB7IHJldHVybiBtX2ZyYW1lYnVmZmVyVGFyZ2V0OyB9Ci0gICAgflNj
b3BlZFJlc3RvcmVSZWFkRnJhbWVidWZmZXJCaW5kaW5nKCkKLSAgICB7Ci0gICAgICAgIGlmICht
X2JpbmRpbmdDaGFuZ2VkKQotICAgICAgICAgICAgZ2w6OkJpbmRGcmFtZWJ1ZmZlcihtX2ZyYW1l
YnVmZmVyVGFyZ2V0LCBtX2JpbmRpbmdWYWx1ZSk7Ci0gICAgfQotcHJpdmF0ZToKLSAgICBjb25z
dCBHTGVudW0gbV9mcmFtZWJ1ZmZlclRhcmdldDsKLSAgICBHTHVpbnQgbV9iaW5kaW5nVmFsdWUg
eyAwdSB9OwotICAgIGJvb2wgbV9iaW5kaW5nQ2hhbmdlZCB7IGZhbHNlIH07Ci19OwotCi1jbGFz
cyBTY29wZWRQaXhlbFN0b3JhZ2VNb2RlIHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTY29w
ZWRQaXhlbFN0b3JhZ2VNb2RlKTsKLXB1YmxpYzoKLSAgICBleHBsaWNpdCBTY29wZWRQaXhlbFN0
b3JhZ2VNb2RlKEdMZW51bSBuYW1lLCBib29sIGNvbmRpdGlvbiA9IHRydWUpCi0gICAgICAgIDog
bV9uYW1lKGNvbmRpdGlvbiA/IG5hbWUgOiAwKQotICAgIHsKLSAgICAgICAgaWYgKG1fbmFtZSkK
LSAgICAgICAgICAgIGdsOjpHZXRJbnRlZ2VydihtX25hbWUsICZtX29yaWdpbmFsVmFsdWUpOwot
ICAgIH0KLSAgICBTY29wZWRQaXhlbFN0b3JhZ2VNb2RlKEdMZW51bSBuYW1lLCBHTGludCB2YWx1
ZSwgYm9vbCBjb25kaXRpb24gPSB0cnVlKQotICAgICAgICA6IG1fbmFtZShjb25kaXRpb24gPyBu
YW1lIDogMCkKLSAgICB7Ci0gICAgICAgIGlmIChtX25hbWUpIHsKLSAgICAgICAgICAgIGdsOjpH
ZXRJbnRlZ2VydihtX25hbWUsICZtX29yaWdpbmFsVmFsdWUpOwotICAgICAgICAgICAgcGl4ZWxT
dG9yZSh2YWx1ZSk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgflNjb3BlZFBpeGVsU3RvcmFnZU1v
ZGUoKQotICAgIHsKLSAgICAgICAgaWYgKG1fbmFtZSAmJiBtX3ZhbHVlQ2hhbmdlZCkKLSAgICAg
ICAgICAgIGdsOjpQaXhlbFN0b3JlaShtX25hbWUsIG1fb3JpZ2luYWxWYWx1ZSk7Ci0gICAgfQot
ICAgIHZvaWQgcGl4ZWxTdG9yZShHTGludCB2YWx1ZSkKLSAgICB7Ci0gICAgICAgIEFTU0VSVCht
X25hbWUpOwotICAgICAgICBpZiAoIW1fdmFsdWVDaGFuZ2VkICYmIG1fb3JpZ2luYWxWYWx1ZSA9
PSB2YWx1ZSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgZ2w6OlBpeGVsU3RvcmVpKG1f
bmFtZSwgdmFsdWUpOwotICAgICAgICBtX3ZhbHVlQ2hhbmdlZCA9IG1fb3JpZ2luYWxWYWx1ZSAh
PSB2YWx1ZTsKLSAgICB9Ci0gICAgb3BlcmF0b3IgR0xpbnQoKSBjb25zdAotICAgIHsKLSAgICAg
ICAgQVNTRVJUKG1fbmFtZSAmJiAhbV92YWx1ZUNoYW5nZWQpOwotICAgICAgICByZXR1cm4gbV9v
cmlnaW5hbFZhbHVlOwotICAgIH0KLXByaXZhdGU6Ci0gICAgY29uc3QgR0xlbnVtIG1fbmFtZTsK
LSAgICBib29sIG1fdmFsdWVDaGFuZ2VkIHsgZmFsc2UgfTsKLSAgICBHTGludCBtX29yaWdpbmFs
VmFsdWUgeyAwIH07Ci19OwotCi1jbGFzcyBTY29wZWRUZXh0dXJlIHsKLSAgICBXVEZfTUFLRV9O
T05DT1BZQUJMRShTY29wZWRUZXh0dXJlKTsKLXB1YmxpYzoKLSAgICBTY29wZWRUZXh0dXJlKCkK
LSAgICB7Ci0gICAgICAgIGdsOjpHZW5UZXh0dXJlcygxLCAmbV9vYmplY3QpOwotICAgIH0KLSAg
ICB+U2NvcGVkVGV4dHVyZSgpCi0gICAgewotICAgICAgICBnbDo6RGVsZXRlVGV4dHVyZXMoMSwg
Jm1fb2JqZWN0KTsKLSAgICB9Ci0gICAgb3BlcmF0b3IgR0x1aW50KCkgY29uc3QKLSAgICB7Ci0g
ICAgICAgIHJldHVybiBtX29iamVjdDsKLSAgICB9Ci1wcml2YXRlOgotICAgIEdMdWludCBtX29i
amVjdCB7IDB1IH07Ci19OwotCi1jbGFzcyBTY29wZWRGcmFtZWJ1ZmZlciB7Ci0gICAgV1RGX01B
S0VfTk9OQ09QWUFCTEUoU2NvcGVkRnJhbWVidWZmZXIpOwotcHVibGljOgotICAgIFNjb3BlZEZy
YW1lYnVmZmVyKCkKLSAgICB7Ci0gICAgICAgIGdsOjpHZW5GcmFtZWJ1ZmZlcnMoMSwgJm1fb2Jq
ZWN0KTsKLSAgICB9Ci0gICAgflNjb3BlZEZyYW1lYnVmZmVyKCkKLSAgICB7Ci0gICAgICAgIGds
OjpEZWxldGVGcmFtZWJ1ZmZlcnMoMSwgJm1fb2JqZWN0KTsKLSAgICB9Ci0gICAgb3BlcmF0b3Ig
R0x1aW50KCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX29iamVjdDsKLSAgICB9Ci1w
cml2YXRlOgotICAgIEdMdWludCBtX29iamVjdCB7IDAgfTsKLX07Ci0KLWNsYXNzIFNjb3BlZEdM
RmVuY2UgewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFNjb3BlZEdMRmVuY2UpOwotcHVibGlj
OgotICAgIFNjb3BlZEdMRmVuY2UoKSA9IGRlZmF1bHQ7Ci0gICAgU2NvcGVkR0xGZW5jZShTY29w
ZWRHTEZlbmNlJiYgb3RoZXIpCi0gICAgICAgIDogbV9vYmplY3Qoc3RkOjpleGNoYW5nZShvdGhl
ci5tX29iamVjdCwgeyB9KSkKLSAgICB7Ci0gICAgfQotICAgIH5TY29wZWRHTEZlbmNlKCkgeyBy
ZXNldCgpOyB9Ci0gICAgU2NvcGVkR0xGZW5jZSYgb3BlcmF0b3I9KFNjb3BlZEdMRmVuY2UmJiBv
dGhlcikKLSAgICB7Ci0gICAgICAgIGlmICh0aGlzICE9ICZvdGhlcikgewotICAgICAgICAgICAg
cmVzZXQoKTsKLSAgICAgICAgICAgIG1fb2JqZWN0ID0gc3RkOjpleGNoYW5nZShvdGhlci5tX29i
amVjdCwgeyB9KTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgfQotICAg
IHZvaWQgcmVzZXQoKQotICAgIHsKLSAgICAgICAgaWYgKG1fb2JqZWN0KSB7Ci0gICAgICAgICAg
ICBnbDo6RGVsZXRlU3luYyhtX29iamVjdCk7Ci0gICAgICAgICAgICBtX29iamVjdCA9IHsgfTsK
LSAgICAgICAgfQotICAgIH0KLSAgICB2b2lkIGFiYW5kb24oKSB7IG1fb2JqZWN0ID0geyB9OyB9
Ci0gICAgdm9pZCBmZW5jZVN5bmMoKQotICAgIHsKLSAgICAgICAgcmVzZXQoKTsKLSAgICAgICAg
bV9vYmplY3QgPSBnbDo6RmVuY2VTeW5jKEdMX1NZTkNfR1BVX0NPTU1BTkRTX0NPTVBMRVRFLCAw
KTsKLSAgICB9Ci0gICAgb3BlcmF0b3IgR0xzeW5jKCkgY29uc3QgeyByZXR1cm4gbV9vYmplY3Q7
IH0KLSAgICBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gbV9vYmplY3Q7IH0KLXByaXZh
dGU6Ci0gICAgR0xzeW5jIG1fb2JqZWN0IHsgfTsKLX07Ci0KLX0KLQotI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRl
eHRHTE9wZW5HTENvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbQppbmRleCBmOTBmZjFmNmFkM2JjMTU4
MGRhYmNlMjc0ZDUwN2JkMDliMzJhZTFhLi42NjdmMDEzNGIwMzNkYjU4MWQyNTZhMGYzODllNTQw
N2NjNDhiNWVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW0K
QEAgLTI4LDEwICsyOCwxMCBAQAogI2lmIEVOQUJMRShXRUJHTCkKICNpbXBvcnQgIkdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMLmgiCiAKKyNpbXBvcnQgIkFOR0xFVXRpbGl0aWVzLmgiCiAjaW1wb3J0
ICJBTkdMRVV0aWxpdGllc0NvY29hLmgiCiAjaW1wb3J0ICJDVlV0aWxpdGllcy5oIgogI2ltcG9y
dCAiRXh0ZW5zaW9uc0dMQU5HTEUuaCIKLSNpbXBvcnQgIkdyYXBoaWNzQ29udGV4dEdMQU5HTEVV
dGlsaXRpZXMuaCIKICNpbXBvcnQgIkdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWlu
LmgiCiAjaW1wb3J0ICJHcmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFnZXIuaCIKICNpbXBvcnQg
IkxvZ2dpbmcuaCIKQEAgLTYwLDggKzYwLDEwIEBAIFdURl9XRUFLX0xJTktfRk9SQ0VfSU1QT1JU
KEVHTF9Jbml0aWFsaXplKTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgYm9vbCBp
c0FOR0xFQXZhaWxhYmxlKCkKK2Jvb2wgcGxhdGZvcm1Jc0FOR0xFQXZhaWxhYmxlKCkKIHsKKyAg
ICAvLyBUaGUgQU5HTEUgaXMgd2VhayBsaW5rZWQgaW4gZnVsbCwgYW5kIHRoZSBFR0xfSW5pdGlh
bGl6ZSBpcyBleHBsaWNpdGx5IHdlYWsgbGlua2VkIGFib3ZlCisgICAgLy8gc28gdGhhdCB3ZSBj
YW4gZGV0ZWN0IHRoZSBjYXNlIHdoZXJlIEFOR0xFIGlzIG5vdCBwcmVzZW50LgogICAgIHJldHVy
biAhIUVHTF9Jbml0aWFsaXplOwogfQogCkBAIC0xMTksMTEgKzEyMSwxMSBAQCBzdGF0aWMgYm9v
bCBwbGF0Zm9ybVN1cHBvcnRzTWV0YWwoYm9vbCBpc1dlYkdMMikKICAgICByZXR1cm4gZmFsc2U7
CiB9CiAKLXN0YXRpYyBTY29wZWRFR0xEZWZhdWx0RGlzcGxheSBpbml0aWFsaXplRUdMRGlzcGxh
eShjb25zdCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJzKQorc3RhdGljIEVHTERp
c3BsYXkgaW5pdGlhbGl6ZUVHTERpc3BsYXkoY29uc3QgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1
dGVzJiBhdHRycykKIHsKLSAgICBpZiAoIWlzQU5HTEVBdmFpbGFibGUoKSkgeworICAgIGlmICgh
cGxhdGZvcm1Jc0FOR0xFQXZhaWxhYmxlKCkpIHsKICAgICAgICAgV1RGTG9nQWx3YXlzKCJGYWls
ZWQgdG8gbG9hZCBBTkdMRSBzaGFyZWQgbGlicmFyeS4iKTsKLSAgICAgICAgcmV0dXJuIHsgfTsK
KyAgICAgICAgcmV0dXJuIEVHTF9OT19ESVNQTEFZOwogICAgIH0KIAogICAgIEVHTGludCBtYWpv
clZlcnNpb24gPSAwOwpAQCAtMTY2LDcgKzE2OCw3IEBAIHN0YXRpYyBTY29wZWRFR0xEZWZhdWx0
RGlzcGxheSBpbml0aWFsaXplRUdMRGlzcGxheShjb25zdCBHcmFwaGljc0NvbnRleHRHTEF0dHJp
CiAKICAgICBpZiAoRUdMX0luaXRpYWxpemUoZGlzcGxheSwgJm1ham9yVmVyc2lvbiwgJm1pbm9y
VmVyc2lvbikgPT0gRUdMX0ZBTFNFKSB7CiAgICAgICAgIExPRyhXZWJHTCwgIkVHTERpc3BsYXkg
SW5pdGlhbGl6YXRpb24gZmFpbGVkLiIpOwotICAgICAgICByZXR1cm4geyB9OworICAgICAgICBy
ZXR1cm4gRUdMX05PX0RJU1BMQVk7CiAgICAgfQogICAgIExPRyhXZWJHTCwgIkFOR0xFIGluaXRp
YWxpc2VkIE1ham9yOiAlZCBNaW5vcjogJWQiLCBtYWpvclZlcnNpb24sIG1pbm9yVmVyc2lvbik7
CiAgICAgaWYgKHNob3VsZEluaXRpYWxpemVXaXRoVm9sYXRpbGVDb250ZXh0U3VwcG9ydCkgewpA
QCAtMTc1LDcgKzE3Nyw3IEBAIHN0YXRpYyBTY29wZWRFR0xEZWZhdWx0RGlzcGxheSBpbml0aWFs
aXplRUdMRGlzcGxheShjb25zdCBHcmFwaGljc0NvbnRleHRHTEF0dHJpCiAgICAgICAgIEFTU0VS
VChjaGVja1ZvbGF0aWxlQ29udGV4dFN1cHBvcnRJZkRldmljZUV4aXN0cyhkaXNwbGF5LCAiRUdM
X0FOR0xFX3BsYXRmb3JtX2RldmljZV9jb250ZXh0X3ZvbGF0aWxlX2VhZ2wiLCAiRUdMX0FOR0xF
X2RldmljZV9lYWdsIiwgRUdMX0VBR0xfQ09OVEVYVF9BTkdMRSkpOwogICAgICAgICBBU1NFUlQo
Y2hlY2tWb2xhdGlsZUNvbnRleHRTdXBwb3J0SWZEZXZpY2VFeGlzdHMoZGlzcGxheSwgIkVHTF9B
TkdMRV9wbGF0Zm9ybV9kZXZpY2VfY29udGV4dF92b2xhdGlsZV9jZ2wiLCAiRUdMX0FOR0xFX2Rl
dmljZV9jZ2wiLCBFR0xfQ0dMX0NPTlRFWFRfQU5HTEUpKTsKICAgICB9Ci0gICAgcmV0dXJuIFNj
b3BlZEVHTERlZmF1bHREaXNwbGF5OjphZG9wdEluaXRpYWxpemVkRGlzcGxheShkaXNwbGF5KTsK
KyAgICByZXR1cm4gZGlzcGxheTsKIH0KIAogc3RhdGljIGNvbnN0IHVuc2lnbmVkIHN0YXR1c0No
ZWNrVGhyZXNob2xkID0gNTsKQEAgLTUwOCw0NSArNTEwLDYgQEAgYm9vbCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6bWFrZUNvbnRleHRDdXJyZW50KCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAot
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi1ib29sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpy
ZWxlYXNlQ3VycmVudENvbnRleHQoUmVsZWFzZUJlaGF2aW9yIHJlbGVhc2VCZWhhdmlvcikKLXsK
LSAgICBpZiAoIWlzQU5HTEVBdmFpbGFibGUoKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAg
ICAvLyBBdCB0aGUgbW9tZW50IHRoaXMgZnVuY3Rpb24gaXMgcmVsZXZhbnQgb25seSB3aGVuIHdl
YiB0aHJlYWQgbG9jayBvd25zIHRoZSBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCBjdXJyZW50IGNv
bnRleHQuCi0gICAgQVNTRVJUKCFpc0N1cnJlbnRDb250ZXh0UHJlZGljdGFibGUoKSk7Ci0KLSAg
ICBpZiAoIUVHTF9CaW5kQVBJKEVHTF9PUEVOR0xfRVNfQVBJKSkKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIGlmIChFR0xfR2V0Q3VycmVudENvbnRleHQoKSA9PSBFR0xfTk9fQ09OVEVYVCkK
LSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICAvLyBBdCB0aGUgdGltZSBvZiB3cml0aW5nLCBB
TkdMRSBkb2VzIG5vdCBmbHVzaCBvbiBNYWtlQ3VycmVudC4gU2luY2Ugd2UgYXJlCi0gICAgLy8g
cG90ZW50aWFsbHkgc3dpdGNoaW5nIHRocmVhZHMsIHdlIHNob3VsZCBmbHVzaC4KLSAgICAvLyBO
b3RlOiBIZXJlIHdlIGFzc3VtZSBhbHNvIHRoYXQgQU5HTEUgaGFzIG9ubHkgb25lIHBsYXRmb3Jt
IGNvbnRleHQgLS0gb3RoZXJ3aXNlCi0gICAgLy8gd2Ugd291bGQgbmVlZCB0byBmbHVzaCBlYWNo
IEVHTCBjb250ZXh0IHRoYXQgaGFzIGJlZW4gdXNlZC4KLSAgICBnbDo6Rmx1c2goKTsKLQotICAg
IC8vIFVuc2V0IHRoZSBFR0wgY3VycmVudCBjb250ZXh0LCBzaW5jZSB0aGUgbmV4dCBhY2Nlc3Mg
bWlnaHQgYmUgZnJvbSBhbm90aGVyIHRocmVhZCwgYW5kIHRoZQotICAgIC8vIGNvbnRleHQgY2Fu
bm90IGJlIGN1cnJlbnQgb24gbXVsdGlwbGUgdGhyZWFkcy4KLQotICAgIGlmIChyZWxlYXNlQmVo
YXZpb3IgPT0gUmVsZWFzZUJlaGF2aW9yOjpSZWxlYXNlVGhyZWFkUmVzb3VyY2VzKSB7Ci0gICAg
ICAgIC8vIENhbGxlZCB3aGVuIHdlIGRvIG5vdCBrbm93IGlmIHdlIHdpbGwgZXZlciBzZWUgYW5v
dGhlciBjYWxsIGZyb20gdGhpcyB0aHJlYWQgYWdhaW4uCi0gICAgICAgIC8vIFVuc2V0IHRoZSBF
R0wgY3VycmVudCBjb250ZXh0IGJ5IHJlbGVhc2luZyB3aG9sZSBFR0wgdGhyZWFkIHN0YXRlLgot
ICAgICAgICAvLyBUaGVvcmV0aWNhbGx5IFJlbGVhc2VUaHJlYWQgY2FuIHJlc2V0IHRoZSBib3Vu
ZCBBUEksIHNvIHRoZSByZXN0IG9mIHRoZSBjb2RlIG1lbnRpb25zIEJpbmRBUEkvUXVlcnlBUEku
Ci0gICAgICAgIHJldHVybiBFR0xfUmVsZWFzZVRocmVhZCgpOwotICAgIH0KLSAgICAvLyBPbiBX
ZWJLaXQgb3duZWQgdGhyZWFkcywgV2ViS2l0IGlzIGFibGUgdG8gY2hvb3NlIHRoZSB0aW1lIGZv
ciB0aGUgRUdMIGNsZWFudXAuCi0gICAgLy8gVGhpcyBpcyB3aHkgd2Ugb25seSB1bnNldCB0aGUg
Y29udGV4dC4KLSAgICAvLyBOb3RlOiBBdCB0aGUgdGltZSBvZiB3cml0aW5nIHRoZSBFR0wgY2xl
YW51cCBpcyBjaG9zZW4gdG8gYmUgbm90IGRvbmUgYXQgYWxsLgotICAgIEVHTERpc3BsYXkgZGlz
cGxheSA9IEVHTF9HZXREaXNwbGF5KEVHTF9ERUZBVUxUX0RJU1BMQVkpOwotICAgIGlmIChkaXNw
bGF5ID09IEVHTF9OT19ESVNQTEFZKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJu
IEVHTF9NYWtlQ3VycmVudChkaXNwbGF5LCBFR0xfTk9fU1VSRkFDRSwgRUdMX05PX1NVUkZBQ0Us
IEVHTF9OT19DT05URVhUKTsKLX0KLSNlbmRpZgotCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpjaGVja0dQVVN0YXR1cygpCiB7CiAgICAgaWYgKG1fZmFpbE5leHRTdGF0dXNDaGVjaykg
ewpAQCAtODI3LDExICs3OTAsNiBAQCBzdGQ6Om9wdGlvbmFsPFBpeGVsQnVmZmVyPiBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6cmVhZENvbXBvc2l0ZWRSZXN1bHRzKCkKICAgICByZXR1cm4gcmVz
dWx0OwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWxlYXNlQWxsUmVzb3Vy
Y2VzSWZVbnVzZWQoKQotewotICAgIFNjb3BlZEVHTERlZmF1bHREaXNwbGF5OjpyZWxlYXNlQWxs
UmVzb3VyY2VzSWZVbnVzZWQoKTsKLX0KLQogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiBSZWZQ
dHI8TWVkaWFTYW1wbGU+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpwYWludENvbXBvc2l0ZWRS
ZXN1bHRzVG9NZWRpYVNhbXBsZSgpCiB7CkBAIC04NDcsNiArODA1LDEyIEBAIFJlZlB0cjxNZWRp
YVNhbXBsZT4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnBhaW50Q29tcG9zaXRlZFJlc3VsdHNU
b01lZGlhU2FtcGxlCiAgICAgcmV0dXJuIE1lZGlhU2FtcGxlQVZGT2JqQzo6Y3JlYXRlSW1hZ2VT
YW1wbGUoV1RGTW92ZSgqcGl4ZWxCdWZmZXIpLCBNZWRpYVNhbXBsZUFWRk9iakM6OlZpZGVvUm90
YXRpb246OlVwc2lkZURvd24sIHRydWUpOwogfQogI2VuZGlmCisKK3ZvaWQgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OnBsYXRmb3JtUmVsZWFzZVRocmVhZFJlc291cmNlcygpCit7CisgICAgY3Vy
cmVudENvbnRleHQgPSBudWxscHRyOworfQorCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoV0VCR0wp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0wuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmNwcAppbmRleCBmOGIyMGFjNzZkMWJk
ZTlmM2EyODYwYWI5YTJjNDQ5N2U1YjYyN2Y0Li4wN2Q4NjQwMzNhZjJkNmVmYzU2NDFhNTVlYTUw
YzY0OTcyYmI4NDQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5jcHAKQEAg
LTc1LDYgKzc1LDE2IEBAIEdDR0xiaXRmaWVsZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0
QnVmZmVyc1RvQXV0b0NsZWFyKCkgY29uc3QKICAgICByZXR1cm4gbV9idWZmZXJzVG9BdXRvQ2xl
YXI7CiB9CiAKKyNpZiAhVVNFKEFOR0xFKQorYm9vbCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
cmVsZWFzZVRocmVhZFJlc291cmNlcyhSZWxlYXNlVGhyZWFkUmVzb3VyY2VCZWhhdmlvcikKK3sK
K30KKwordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cGxhdGZvcm1SZWxlYXNlVGhyZWFk
UmVzb3VyY2VzKCkKK3sKK30KKyNlbmRpZgorCiAjaWYgIVVTRShBTkdMRSkKIGJvb2wgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OnRleEltYWdlMkRSZXNvdXJjZVNhZmUoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRo
LCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dM
ZW51bSB0eXBlLCBHQ0dMaW50IHVucGFja0FsaWdubWVudCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5H
TC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMLmgKaW5kZXggMTc3ODRlZGIxODZhYzZmMmJiODU1ZjAzMmJjOTg5YzQ2MjMw
M2I3NS4uMjI3N2IxN2NjNzA5ODg4NzY4MjZjMDg2MmY3YTcxODM5NzQyNWRmYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4
dEdMT3BlbkdMLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Blbmds
L0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKQEAgLTM3LDcgKzM3LDYgQEAKICNpbmNsdWRlIDx3
dGYvVW5pcXVlUmVmLmg+CiAKICNpZiBQTEFURk9STShDT0NPQSkKLSNpbmNsdWRlICJHcmFwaGlj
c0NvbnRleHRHTEFOR0xFRUdMVXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAiSU9TdXJmYWNlLmgiCiAj
ZW5kaWYKIApAQCAtNDYsNyArNDUsNyBAQAogI2VuZGlmCiAKICNpZiBVU0UoQU5HTEUpCi0jaW5j
bHVkZSAiR3JhcGhpY3NDb250ZXh0R0xBTkdMRVV0aWxpdGllcy5oIgorI2luY2x1ZGUgIkFOR0xF
VXRpbGl0aWVzLmgiCiAjZWxzZQogI2luY2x1ZGUgIkFOR0xFV2ViS2l0QnJpZGdlLmgiCiAjaW5j
bHVkZSAiRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmgiCkBAIC0xMTksMTcgKzExOCwxNiBAQCBw
dWJsaWM6CiAjaWYgVVNFKEFOR0xFKQogICAgIHN0YXRpYyBHQ0dMZW51bSBkcmF3aW5nQnVmZmVy
VGV4dHVyZVRhcmdldCgpOwogI2VuZGlmCi0KLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAg
IGVudW0gY2xhc3MgUmVsZWFzZUJlaGF2aW9yIHsKLSAgICAgICAgUHJlc2VydmVUaHJlYWRSZXNv
dXJjZXMsCi0gICAgICAgIFJlbGVhc2VUaHJlYWRSZXNvdXJjZXMKKyAgICBlbnVtIGNsYXNzIFJl
bGVhc2VUaHJlYWRSZXNvdXJjZUJlaGF2aW9yIHsKKyAgICAgICAgLy8gUmVsZWFzZXMgY3VycmVu
dCBjb250ZXh0IGFmdGVyIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMIGNhbGxzIGRvbmUgaW4gdGhl
IHRocmVhZC4KKyAgICAgICAgUmVsZWFzZUN1cnJlbnRDb250ZXh0LAorICAgICAgICAvLyBSZWxl
YXNlcyBhbGwgdGhyZWFkIHJlc291cmNlcyBhZnRlciBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCBj
YWxscyBkb25lIGluIHRoZSB0aHJlYWQuCisgICAgICAgIFJlbGVhc2VUaHJlYWRSZXNvdXJjZXMs
CisgICAgICAgIC8vIFJlbGVhc2VzIGFsbCBnbG9iYWwgc3RhdGUuIFNob3VsZCBiZSB1c2VkIG9u
bHkgYWZ0ZXIgYWxsIGRlcGVuZGluZyBvYmplY3RzIGhhdmUKKyAgICAgICAgLy8gYmVlbiByZWxl
YXNlZC4KKyAgICAgICAgVGVybWluYXRlQW5kUmVsZWFzZVRocmVhZFJlc291cmNlcwogICAgIH07
Ci0gICAgc3RhdGljIGJvb2wgcmVsZWFzZUN1cnJlbnRDb250ZXh0KFJlbGVhc2VCZWhhdmlvcik7
Ci0jZW5kaWYKLSNpZiBQTEFURk9STShDT0NPQSkKLSAgICBzdGF0aWMgdm9pZCByZWxlYXNlQWxs
UmVzb3VyY2VzSWZVbnVzZWQoKTsKLSNlbmRpZgorICAgIHN0YXRpYyBib29sIHJlbGVhc2VUaHJl
YWRSZXNvdXJjZXMoUmVsZWFzZVRocmVhZFJlc291cmNlQmVoYXZpb3IpOwogCiAgICAgLy8gV2l0
aCBtdWx0aXNhbXBsaW5nIG9uLCBibGl0IGZyb20gbXVsdGlzYW1wbGVGQk8gdG8gcmVndWxhciBG
Qk8uCiAgICAgdm9pZCBwcmVwYXJlVGV4dHVyZSgpOwpAQCAtNTgzLDEyICs1ODEsMTUgQEAgcHJp
dmF0ZToKICAgICAvLyBSZXR1cm5zIGZhbHNlIGlmIGNvbnRleHQgc2hvdWxkIGJlIGxvc3QgZHVl
IHRvIHRpbWVvdXQuCiAgICAgYm9vbCB3YWl0QW5kVXBkYXRlT2xkZXN0RnJhbWUoKSBXQVJOX1VO
VVNFRF9SRVRVUk47CiAjZW5kaWYKKyAgICAvLyBQbGF0Zm9ybSBzcGVjaWZpYyBiZWhhdmlvciBm
b3IgcmVsZWFzZVJlc291cmNlcygpOworICAgIHN0YXRpYyB2b2lkIHBsYXRmb3JtUmVsZWFzZVRo
cmVhZFJlc291cmNlcygpOworCiAKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBHcmFwaGljc0Nv
bnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbiogbV9zd2FwQ2hhaW4geyBudWxscHRyIH07CiAgICAg
Ly8gVE9ETzogdGhpcyBzaG91bGQgYmUgcmVtb3ZlZCBvbmNlIHRoZSBjb250ZXh0IGRyYXdzIHRv
IGEgaW1hZ2UgYnVmZmVyLiBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIxODE3OSAuCiAgICAgUmV0YWluUHRyPFdlYkdMTGF5ZXI+IG1fd2ViR0xMYXllcjsKLSAg
ICBTY29wZWRFR0xEZWZhdWx0RGlzcGxheSBtX2Rpc3BsYXlPYmo7CisgICAgRUdMRGlzcGxheSBt
X2Rpc3BsYXlPYmogeyBudWxscHRyIH07CiAgICAgUGxhdGZvcm1HcmFwaGljc0NvbnRleHRHTCBt
X2NvbnRleHRPYmogeyBudWxscHRyIH07CiAgICAgUGxhdGZvcm1HcmFwaGljc0NvbnRleHRHTENv
bmZpZyBtX2NvbmZpZ09iaiB7IG51bGxwdHIgfTsKICNlbmRpZiAvLyBQTEFURk9STShDT0NPQSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV2ViQ29yZVRocmVh
ZC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV2ViQ29yZVRocmVhZC5tbQpp
bmRleCAwMDI2NjRlM2UxNjY5ZmYzMjhkYjliOTUyOTFhODhiNTA0MTc5YzM4Li45NTQ0YjUxYzI3
OGRmNTY5ZWE0YWIwYmZlZjdlZjc0NGFjNTJjNzM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pb3Mvd2FrL1dlYkNvcmVUaHJlYWQubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkLm1tCkBAIC03MCwxNyArNzAsMjAgQEAgbmFt
ZXNwYWNlIHsKIC8vIGFzIGFueSBjbGllbnQgdGhyZWFkIHRoYXQgY2FsbHMgaW50byBXZWJLaXQu
CiB2b2lkIFJlbGVhc2VXZWJUaHJlYWRHbG9iYWxTdGF0ZSgpCiB7Ci0gICAgLy8gR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0wgY3VycmVudCBjb250ZXh0IGlzIG93bmVkIGJ5IHRoZSB3ZWIgdGhyZWFk
IGxvY2suIFJlbGVhc2UgdGhlIGNvbnRleHQKKyAgICAvLyBBTkdMRSBtYWludGFpbnMgdGhyZWFk
IGdsb2JhbCBzdGF0ZSBmb3IgaXRzIGN1cnJlbnQgY29udGV4dC4KKyAgICAvLyBUaGlzIGlzIGNv
bmNlcHR1YWxseSBvd25lZCBieSB0aGUgd2ViIHRocmVhZCBsb2NrLiBSZWxlYXNlIHRoZSBjb250
ZXh0CiAgICAgLy8gYmVmb3JlIHRoZSBsb2NrIGlzIHJlbGVhc2VkLgogCiAgICAgLy8gSW4gc2lu
Z2xlLXRocmVhZGVkIGVudmlyb25tZW50cyB3ZSBkbyBub3QgbmVlZCB0byB1bnNldCB0aGUgY29u
dGV4dCwgYXMgdGhlcmUgc2hvdWxkIG5vdCBiZSBhY2Nlc3MgZnJvbQogICAgIC8vIG11bHRpcGxl
IHRocmVhZHMuCiAgICAgQVNTRVJUKFdlYlRocmVhZElzRW5hYmxlZCgpKTsKLSAgICB1c2luZyBS
ZWxlYXNlQmVoYXZpb3IgPSBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6UmVsZWFz
ZUJlaGF2aW9yOwotICAgIC8vIEZvciBub24td2ViIHRocmVhZHMsIHdlIGRvbid0IGtub3cgaWYg
d2UgZXZlciBzZWUgYW5vdGhlciBjYWxsIGZyb20gdGhlIHRocmVhZC4KLSAgICBSZWxlYXNlQmVo
YXZpb3IgcmVsZWFzZUJlaGF2aW9yID0KLSAgICAgICAgV2ViVGhyZWFkSXNDdXJyZW50KCkgPyBS
ZWxlYXNlQmVoYXZpb3I6OlByZXNlcnZlVGhyZWFkUmVzb3VyY2VzIDogUmVsZWFzZUJlaGF2aW9y
OjpSZWxlYXNlVGhyZWFkUmVzb3VyY2VzOwotICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpyZWxlYXNlQ3VycmVudENvbnRleHQocmVsZWFzZUJlaGF2aW9yKTsKKyAgICB1c2lu
ZyBSZWxlYXNlVGhyZWFkUmVzb3VyY2VCZWhhdmlvciA9IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpSZWxlYXNlVGhyZWFkUmVzb3VyY2VCZWhhdmlvcjsKKyAgICAvLyBGb3Igd2Vi
IHRocmVhZCwganVzdCByZWxlYXNlIHRoZSBjb250ZXh0IGFzIHdlIGtub3cgd2Ugd2lsbCBzZWUg
Y2FsbHMgdG8gaXQgYWdhaW4uCisgICAgLy8gRm9yIG5vbi13ZWIgdGhyZWFkcywgZS5nLiB0aGly
ZC1wYXJ0eSBjbGllbnQgdGhyZWFkcywgd2UgZG9uJ3Qga25vdyBpZiB3ZSBldmVyIHNlZSBhbm90
aGVyIGNhbGwgZnJvbSB0aGUKKyAgICAvLyB0aHJlYWQsIHNvIHdlIGFsc28gcmVsZWFzZSB0aGUg
dGhyZWFkIHJlc291cmNlcy4KKyAgICBSZWxlYXNlVGhyZWFkUmVzb3VyY2VCZWhhdmlvciByZWxl
YXNlQmVoYXZpb3IgPQorICAgICAgICBXZWJUaHJlYWRJc0N1cnJlbnQoKSA/IFJlbGVhc2VUaHJl
YWRSZXNvdXJjZUJlaGF2aW9yOjpSZWxlYXNlQ3VycmVudENvbnRleHQgOiBSZWxlYXNlVGhyZWFk
UmVzb3VyY2VCZWhhdmlvcjo6UmVsZWFzZVRocmVhZFJlc291cmNlczsKKyAgICBXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVsZWFzZVRocmVhZFJlc291cmNlcyhyZWxlYXNlQmVo
YXZpb3IpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3Jh
cGhpY3MvU2NvcGVkV2ViR0xSZW5kZXJpbmdSZXNvdXJjZXNSZXF1ZXN0LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9TY29wZWRXZWJHTFJlbmRlcmluZ1Jlc291cmNlc1Jl
cXVlc3QuY3BwCmluZGV4IDBmNzVkODI1NDgwMzY1NDk4NWZlMDU4MTRlZTNiZDEzNGU0ODFhZTYu
LjMyNmIwN2YyZWJkZWVhMDdjYTUyZTY3NmMwMjFkMjhlYjc4ZjI3YzQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9TY29wZWRXZWJHTFJlbmRlcmluZ1Jlc291
cmNlc1JlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9T
Y29wZWRXZWJHTFJlbmRlcmluZ1Jlc291cmNlc1JlcXVlc3QuY3BwCkBAIC0yNiwyMCArMjYsMzgg
QEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJTY29wZWRXZWJHTFJlbmRlcmluZ1Jl
c291cmNlc1JlcXVlc3QuaCIKIAorI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdF
QkdMKQorCisjaW5jbHVkZSAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaCIKKyNpbmNsdWRlICJT
dHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0Nv
bnRleHRHTC5oPgorI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CisjaW5jbHVkZSA8d3RmL1NlY29u
ZHMuaD4KKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIHN0ZDo6YXRvbWljPHVuc2lnbmVkPiBTY29w
ZWRXZWJHTFJlbmRlcmluZ1Jlc291cmNlc1JlcXVlc3Q6OnNfcmVxdWVzdHM7Ci0KLSNpZiAhUExB
VEZPUk0oQ09DT0EpCitzdGF0aWMgY29uc3RleHByIFNlY29uZHMgZnJlZVdlYkdMUmVuZGVyaW5n
UmVzb3VyY2VzVGltZW91dCA9IDFfczsKK3N0YXRpYyBib29sIGRpZFNjaGVkdWxlRnJlZVdlYkdM
UmVuZGVyaW5nUmVzb3VyY2VzOwogCiB2b2lkIFNjb3BlZFdlYkdMUmVuZGVyaW5nUmVzb3VyY2Vz
UmVxdWVzdDo6c2NoZWR1bGVGcmVlV2ViR0xSZW5kZXJpbmdSZXNvdXJjZXMoKQogeworICAgIGlm
IChkaWRTY2hlZHVsZUZyZWVXZWJHTFJlbmRlcmluZ1Jlc291cmNlcykKKyAgICAgICAgcmV0dXJu
OworICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaEFmdGVyKGZyZWVXZWJHTFJlbmRlcmluZ1Jl
c291cmNlc1RpbWVvdXQsIGZyZWVXZWJHTFJlbmRlcmluZ1Jlc291cmNlcyk7CisgICAgZGlkU2No
ZWR1bGVGcmVlV2ViR0xSZW5kZXJpbmdSZXNvdXJjZXMgPSB0cnVlOwogfQogCiB2b2lkIFNjb3Bl
ZFdlYkdMUmVuZGVyaW5nUmVzb3VyY2VzUmVxdWVzdDo6ZnJlZVdlYkdMUmVuZGVyaW5nUmVzb3Vy
Y2VzKCkKIHsKKyAgICBkaWRTY2hlZHVsZUZyZWVXZWJHTFJlbmRlcmluZ1Jlc291cmNlcyA9IGZh
bHNlOworICAgIGlmIChzX3JlcXVlc3RzKQorICAgICAgICByZXR1cm47CisgICAgcmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xTdHJlYW1Xb3JrUXVldWUoKS5kaXNwYXRjaChbXSB7CisgICAgICAgIFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWxlYXNlVGhyZWFkUmVzb3VyY2VzKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpSZWxlYXNlVGhyZWFkUmVzb3VyY2VCZWhh
dmlvcjo6VGVybWluYXRlQW5kUmVsZWFzZVRocmVhZFJlc291cmNlcyk7CisgICAgfSk7CiB9CiAK
LSNlbmRpZgotCiB9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL2dyYXBoaWNzL1Njb3BlZFdlYkdMUmVuZGVyaW5nUmVzb3VyY2VzUmVxdWVzdC5oIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1Njb3BlZFdlYkdMUmVuZGVyaW5nUmVzb3Vy
Y2VzUmVxdWVzdC5oCmluZGV4IGMwZWQ0ZWVkM2NlOWQ3NDkxNjQyYzQ2MTYzMWIwMTNjMTE3ODZk
MDguLjJjYjUwYjNiY2YyNjE3MWRkMjQ3MTdiYWE1YjUxMzViMDBhZWE3YWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9TY29wZWRXZWJHTFJlbmRlcmluZ1Jl
c291cmNlc1JlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mv
U2NvcGVkV2ViR0xSZW5kZXJpbmdSZXNvdXJjZXNSZXF1ZXN0LmgKQEAgLTI1LDYgKzI1LDggQEAK
IAogI3ByYWdtYSBvbmNlCiAKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJH
TCkKKwogI2luY2x1ZGUgIlNjb3BlZFJlbmRlcmluZ1Jlc291cmNlc1JlcXVlc3QuaCIKICNpbmNs
dWRlIDxhdG9taWM+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgpAQCAtODIsMyArODQs
NSBAQCBwcml2YXRlOgogfTsKIAogfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9TY29wZWRXZWJHTFJlbmRlcmluZ1Jlc291cmNlc1JlcXVl
c3RDb2NvYS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvU2NvcGVkV2Vi
R0xSZW5kZXJpbmdSZXNvdXJjZXNSZXF1ZXN0Q29jb2EuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAzMWIzM2ZjZDVjZmYzNDcyZDQxN2U5OTUxMWMwNzJlODQ4ZTdhOWE3Li4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9ncmFwaGljcy9TY29wZWRXZWJHTFJlbmRlcmluZ1Jlc291cmNlc1JlcXVlc3RD
b2NvYS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw2MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lu
Y2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlNjb3BlZFdlYkdMUmVuZGVyaW5nUmVzb3VyY2Vz
UmVxdWVzdC5oIgotCi0jaWYgUExBVEZPUk0oQ09DT0EpCi0KLSNpbmNsdWRlICJSZW1vdGVHcmFw
aGljc0NvbnRleHRHTC5oIgotI2luY2x1ZGUgIlN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUuaCIK
LSNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dEdMLmg+Ci0jaW5jbHVkZSA8d3RmL1J1
bkxvb3AuaD4KLSNpbmNsdWRlIDx3dGYvU2Vjb25kcy5oPgotCi1uYW1lc3BhY2UgV2ViS2l0IHsK
LQotc3RhdGljIGNvbnN0ZXhwciBTZWNvbmRzIGZyZWVXZWJHTFJlbmRlcmluZ1Jlc291cmNlc1Rp
bWVvdXQgPSAxX3M7Ci1zdGF0aWMgYm9vbCBkaWRTY2hlZHVsZUZyZWVXZWJHTFJlbmRlcmluZ1Jl
c291cmNlczsKLQotdm9pZCBTY29wZWRXZWJHTFJlbmRlcmluZ1Jlc291cmNlc1JlcXVlc3Q6OnNj
aGVkdWxlRnJlZVdlYkdMUmVuZGVyaW5nUmVzb3VyY2VzKCkKLXsKLSAgICBpZiAoZGlkU2NoZWR1
bGVGcmVlV2ViR0xSZW5kZXJpbmdSZXNvdXJjZXMpCi0gICAgICAgIHJldHVybjsKLSAgICBSdW5M
b29wOjptYWluKCkuZGlzcGF0Y2hBZnRlcihmcmVlV2ViR0xSZW5kZXJpbmdSZXNvdXJjZXNUaW1l
b3V0LCBmcmVlV2ViR0xSZW5kZXJpbmdSZXNvdXJjZXMpOwotICAgIGRpZFNjaGVkdWxlRnJlZVdl
YkdMUmVuZGVyaW5nUmVzb3VyY2VzID0gdHJ1ZTsKLX0KLQotdm9pZCBTY29wZWRXZWJHTFJlbmRl
cmluZ1Jlc291cmNlc1JlcXVlc3Q6OmZyZWVXZWJHTFJlbmRlcmluZ1Jlc291cmNlcygpCi17Ci0g
ICAgZGlkU2NoZWR1bGVGcmVlV2ViR0xSZW5kZXJpbmdSZXNvdXJjZXMgPSBmYWxzZTsKLSAgICBp
ZiAoc19yZXF1ZXN0cykKLSAgICAgICAgcmV0dXJuOwotICAgIHJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMU3RyZWFtV29ya1F1ZXVlKCkuZGlzcGF0Y2goR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJl
bGVhc2VBbGxSZXNvdXJjZXNJZlVudXNlZCk7Ci19Ci0KLX0KLQotI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXND
b2NvYS50eHQKaW5kZXggNDNiNGMyZGIyODEzYTg3Y2UwZTA5MDllNWZhY2NlNDQyY2Q2ZTZiNC4u
MzcyMmVmOGY1ZjNlYzdjMGNhYmY1ZjcwOWUyOWQ1NmJkY2M3MWI3MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0Nv
Y29hLnR4dApAQCAtNjYsNyArNjYsNiBAQCBHUFVQcm9jZXNzL2NvY29hL0dQVUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3NDb2NvYS5tbQogR1BVUHJvY2Vzcy9jb2NvYS9HUFVQcm9jZXNzQ29jb2EubW0K
IEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5jcHAKIEdQ
VVByb2Nlc3MvZ3JhcGhpY3MvU2NvcGVkUmVuZGVyaW5nUmVzb3VyY2VzUmVxdWVzdENvY29hLm1t
IEBuby11bmlmeQotR1BVUHJvY2Vzcy9ncmFwaGljcy9TY29wZWRXZWJHTFJlbmRlcmluZ1Jlc291
cmNlc1JlcXVlc3RDb2NvYS5jcHAKIEdQVVByb2Nlc3MvaW9zL0dQVVByb2Nlc3NJT1MubW0KIEdQ
VVByb2Nlc3MvbWFjL0dQVVByb2Nlc3NNYWMubW0KIEdQVVByb2Nlc3MvbWFjL0xvY2FsQXVkaW9T
ZXNzaW9uUm91dGluZ0FyYml0cmF0b3IuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA2MTQyZDA5MmJlODRjNTA1MTdkZmRkZjIzOTcw
MjYwMGYxYzVkOWQzLi5iNWZmYWQyY2ZlNDM0ZDhlMmNkODJlZDVkZjdmMmY3YjhiZTUzOWMyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAg
LTMsNyArMyw3IEBACiAJYXJjaGl2ZVZlcnNpb24gPSAxOwogCWNsYXNzZXMgPSB7CiAJfTsKLQlv
YmplY3RWZXJzaW9uID0gNTI7CisJb2JqZWN0VmVyc2lvbiA9IDU0OwogCW9iamVjdHMgPSB7CiAK
IC8qIEJlZ2luIFBCWEFnZ3JlZ2F0ZVRhcmdldCBzZWN0aW9uICovCkBAIC00NzYzLDcgKzQ3NjMs
NiBAQAogCQk3QkNGNzBDQzI2MTQ5MzVGMDBFNEZCNzAgLyogU2NvcGVkV2ViR0xSZW5kZXJpbmdS
ZXNvdXJjZXNSZXF1ZXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNjb3BlZFdlYkdMUmVuZGVy
aW5nUmVzb3VyY2VzUmVxdWVzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdC
Q0Y3MENEMjYxNDkzNUYwMEU0RkI3MCAvKiBTY29wZWRSZW5kZXJpbmdSZXNvdXJjZXNSZXF1ZXN0
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFNjb3BlZFJlbmRlcmluZ1Jlc291cmNlc1JlcXVlc3QuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0JDRjcwQ0UyNjE0OTM1RjAwRTRGQjcwIC8qIFNj
b3BlZFdlYkdMUmVuZGVyaW5nUmVzb3VyY2VzUmVxdWVzdC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY29w
ZWRXZWJHTFJlbmRlcmluZ1Jlc291cmNlc1JlcXVlc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJN0JDRjcwQ0YyNjE0OTdFNjAwRTRGQjcwIC8qIFNjb3BlZFdlYkdMUmVuZGVyaW5n
UmVzb3VyY2VzUmVxdWVzdENvY29hLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNjb3BlZFdlYkdM
UmVuZGVyaW5nUmVzb3VyY2VzUmVxdWVzdENvY29hLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJN0JFNzI2NTcyNTc0RjY3MjAwRTg1RDk4IC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHlGdW5jdGlvbnNHZW5lcmF0ZWQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eUZ1bmN0aW9uc0dlbmVyYXRlZC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTdCRTcyNjY4MjU3NjgwRUYwMEU4NUQ5OCAvKiBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTENvY29hLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMQ29jb2EuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzA2NUYy
OTFDOENEOTVGMDBDMkQ5NTAgLyogV2ViVXNlckNvbnRlbnRDb250cm9sbGVyRGF0YVR5cGVzLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlVzZXJDb250ZW50Q29u
dHJvbGxlckRhdGFUeXBlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05MTA4
LDcgKzkxMDcsNiBAQAogCQkJCTdCQ0Y3MENCMjYxNDkzNUUwMEU0RkI3MCAvKiBTY29wZWRSZW5k
ZXJpbmdSZXNvdXJjZXNSZXF1ZXN0Q29jb2EubW0gKi8sCiAJCQkJN0JDRjcwQ0MyNjE0OTM1RjAw
RTRGQjcwIC8qIFNjb3BlZFdlYkdMUmVuZGVyaW5nUmVzb3VyY2VzUmVxdWVzdC5jcHAgKi8sCiAJ
CQkJN0JDRjcwQ0UyNjE0OTM1RjAwRTRGQjcwIC8qIFNjb3BlZFdlYkdMUmVuZGVyaW5nUmVzb3Vy
Y2VzUmVxdWVzdC5oICovLAotCQkJCTdCQ0Y3MENGMjYxNDk3RTYwMEU0RkI3MCAvKiBTY29wZWRX
ZWJHTFJlbmRlcmluZ1Jlc291cmNlc1JlcXVlc3RDb2NvYS5jcHAgKi8sCiAJCQkpOwogCQkJcGF0
aCA9IGdyYXBoaWNzOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>440473</attachid>
            <date>2021-10-06 23:37:17 -0700</date>
            <delta_ts>2021-10-07 01:08:52 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-231011-20211007093715.patch</filename>
            <type>text/plain</type>
            <size>63330</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgzNzAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTE1NDJlOTMyOWQxNDll
ODAyNTExNjBlOTI4MGUwOWY1NTI5NDRkMy4uZDgxOTdmNGJiNzFmMjZhZWMzMjZhYjEzNGI2Zjdm
MWExZmM2NGFmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYyIEBACisyMDIxLTEwLTA2ICBLaW1t
byBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgU2NvcGVkRUdMRGVm
YXVsdERpc3BsYXkgc2hvdWxkIGJlIHJlbW92ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMTAxMQorCisgICAgICAgIFJldmlld2VkIGJ5IEtlbm5l
dGggUnVzc2VsbC4KKworICAgICAgICBIYXJkLWNvZGluZyB0aGUgY29kZSB0byBFR0xfREVGQVVM
VF9ESVNQTEFZIG9ubHkgYW5kIHVzaW5nIHRoZSBzY29wZWQKKyAgICAgICAgaG9sZGVyIGlzIG1h
a2luZyB0aGUgRUdMRGlzcGxheXMgaGFyZGVyIHRvIHVzZSB0aGFuIG5lY2Nlc3NhcnkuIFRoZQor
ICAgICAgICBpbXBsZW1lbnRhdGlvbiB0YXJnZXQsIGUuZy4gdGhlIGFiaWxpdHkgdG8gY2FsbCBF
R0xUZXJtaW5hdGUsIHdhcyBhbHNvIGEgYml0CisgICAgICAgIG1vcmUgY29udm9sdXRlZCB0aGFu
IG5lZWRlZC4KKworICAgICAgICBNb3ZlIHRoZSAiY2FsbCBFR0xUZXJtaW5hdGUiIGxvZ2ljIGZy
b20gYSBiaXQgY29udm9sdXRlZCByZWZjb3VudCBtZWNoYW5pc20KKyAgICAgICAgaW4gU2NvcGVk
RUdMRGVmYXVsdERpc3BsYXkgdG8gdGhlIGV4cGxpY2l0IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpyZWxlYXNlUmVzb3VyY2VzKCkuCisgICAgICAgIFRoZSBjYWxsZXJzIGFyZSBleHBlY3RlZCB0
byBkbyB0aGUgcmVmY291bnRpbmcgYW55d2F5LCBhcyB0aGUgZXhpc3RpbmcgY2xpZW50CisgICAg
ICAgIFdlYktpdDo6U2NvcGVkV2ViR0xSZW5kZXJpbmdSZXNvdXJjZXNSZXF1ZXN0IGFscmVhZHkg
ZGlkLgorCisgICAgICAgIE1ha2UgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlbGVhc2VSZXNv
dXJjZXMoKSBhdmFpbGFibGUgb24gYWxsIHBsYXRmb3Jtcy4KKyAgICAgICAgSXQgaXMgaW1wbGVt
ZW50ZWQgb24gYWxsIEFOR0xFIGltcGxlbWVudGF0aW9ucy4KKyAgICAgICAgUGxhdGZvcm1zIGNh
biBhdWdtZW50IHRoZSBpbXBsZW1lbnRhdGlvbiBieSBpbXBsZW1lbnRpbmcKKyAgICAgICAgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OnBsYXRmb3JtUmVsZWFzZVJlc291cmNlcygpLiBGb3IgQ29j
b2EsIHRoaXMgZnVuY3Rpb24KKyAgICAgICAgcmVzZXRzIHRoZSBjdXJyZW50Q29udGV4dCBjYWNo
ZSB0aGF0IGlzIHVzZWQgdG8gb3B0aW1pemUgbWFraW5nIGNvbnRleHQgY3VycmVudC4KKworICAg
ICAgICBObyBuZXcgdGVzdHMsIHJlZmFjdG9yLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6
CisgICAgICAgICogSGVhZGVycy5jbWFrZToKKyAgICAgICAgKiBQbGF0Zm9ybU1hYy5jbWFrZToK
KyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9BTkdM
RVV0aWxpdGllcy5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFRUdMVXRpbGl0aWVzLmguCisgICAgICAg
IChXZWJDb3JlOjpwbGF0Zm9ybUlzQU5HTEVBdmFpbGFibGUpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2FuZ2xlL0FOR0xFVXRpbGl0aWVzLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFVXRpbGl0
aWVzLmguCisgICAgICAgIFJlbmFtZSBHcmFwaGljc0NvbnRleHRHTEFOR0xFVXRpbGl0aWVzIHRv
IHNpbXBsZXIgYW5kIG1vcmUgZGVzY3JpcHRpdmUgQU5HTEVVdGlsaXRpZXMuCisgICAgICAgIEFk
ZCB0aGUgaXNBTkdMRUF2YWlsYWJsZSB0byB0aGVyZS4KKworICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlbGVhc2VSZXNvdXJjZXMpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnBsYXRmb3JtUmVsZWFzZVJlc291cmNl
cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xB
TkdMRUVHTFV0aWxpdGllcy5jcHA6IFJlbW92ZWQuCisgICAgICAgIChXZWJDb3JlOjpyZWZEZWZh
dWx0RGlzcGxheSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjp1bnJlZkRlZmF1bHREaXNw
bGF5SWZOZWVkZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2NvcGVkRUdMRGVmYXVs
dERpc3BsYXk6Om9wZXJhdG9yPSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTY29wZWRF
R0xEZWZhdWx0RGlzcGxheTo6U2NvcGVkRUdMRGVmYXVsdERpc3BsYXkpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6U2NvcGVkRUdMRGVmYXVsdERpc3BsYXk6On5TY29wZWRFR0xEZWZhdWx0
RGlzcGxheSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTY29wZWRFR0xEZWZhdWx0RGlz
cGxheTo6cmVsZWFzZUFsbFJlc291cmNlc0lmVW51c2VkKTogRGVsZXRlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6cGxhdGZvcm1Jc0FOR0xFQXZhaWxhYmxlKToKKyAgICAgICAgKFdl
YkNvcmU6OmluaXRpYWxpemVFR0xEaXNwbGF5KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpwbGF0Zm9ybVJlbGVhc2VSZXNvdXJjZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6aXNBTkdMRUF2YWlsYWJsZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6cmVsZWFzZUN1cnJlbnRDb250ZXh0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWxlYXNlQWxsUmVzb3Vy
Y2VzSWZVbnVzZWQpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5n
bC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6cmVsZWFzZVJlc291cmNlcyk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cGxhdGZvcm1SZWxlYXNlUmVzb3VyY2VzKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9pb3Mvd2FrL1dlYkNvcmVUaHJlYWQubW06CisKIDIwMjEtMTAt
MDYgIEJlbiBOaGFtICA8bmhhbUBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIFB1c2hTdWJzY3Jp
cHRpb24gc3R1YnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggZDQxOTBhMDEwMDg0MWY3NTE1ODk5NmExYzg5ZWJhMjdh
YTQxNDkxYy4uZTJlYWI5Nzk0MWZkYmEyMDY3NmVhMjRhNzBiNzQ5Y2YzYmQ1NzI2NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwyNyBAQAorMjAyMS0xMC0wNiAgS2ltbW8gS2lubnVuZW4gIDxra2lubnVu
ZW5AYXBwbGUuY29tPgorCisgICAgICAgIFNjb3BlZEVHTERlZmF1bHREaXNwbGF5IHNob3VsZCBi
ZSByZW1vdmVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMzEwMTEKKworICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJ1c3NlbGwuCisKKyAgICAg
ICAgSW1wbGVtZW50IHRoZSByZWxlYXNlIG9mIFdlYkdMIHJlc291cmNlcyB3aXRoIHRoZSBhbWVu
ZGVkCisgICAgICAgIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWxlYXNlUmVzb3VyY2VzKCkg
aW5zdGVhZCBvZgorICAgICAgICBwcmV2aW91cyBzZXBhcmF0ZSBmdW5jdGlvbiBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6cmVsZWFzZUFsbFJlc291cmNlcygpLgorCisgICAgICAgIFVzZSB0aGUg
cmVzb3VyY2UgcmVsZWFzZSBjb2RlIHBhdGggdW5pdmVyc2FsbHksIGFzCisgICAgICAgIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpyZWxlYXNlUmVzb3VyY2VzKCkgaXMgbm93IGNvbW1vbiBjb2Rl
LgorCisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9TY29wZWRXZWJHTFJlbmRlcmluZ1Jl
c291cmNlc1JlcXVlc3QuY3BwOgorICAgICAgICAoV2ViS2l0OjpTY29wZWRXZWJHTFJlbmRlcmlu
Z1Jlc291cmNlc1JlcXVlc3Q6OnNjaGVkdWxlRnJlZVdlYkdMUmVuZGVyaW5nUmVzb3VyY2VzKToK
KyAgICAgICAgKFdlYktpdDo6U2NvcGVkV2ViR0xSZW5kZXJpbmdSZXNvdXJjZXNSZXF1ZXN0Ojpm
cmVlV2ViR0xSZW5kZXJpbmdSZXNvdXJjZXMpOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhp
Y3MvU2NvcGVkV2ViR0xSZW5kZXJpbmdSZXNvdXJjZXNSZXF1ZXN0Lmg6CisgICAgICAgICogR1BV
UHJvY2Vzcy9ncmFwaGljcy9TY29wZWRXZWJHTFJlbmRlcmluZ1Jlc291cmNlc1JlcXVlc3RDb2Nv
YS5jcHA6IFJlbW92ZWQuCisgICAgICAgIChXZWJLaXQ6OlNjb3BlZFdlYkdMUmVuZGVyaW5nUmVz
b3VyY2VzUmVxdWVzdDo6c2NoZWR1bGVGcmVlV2ViR0xSZW5kZXJpbmdSZXNvdXJjZXMpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViS2l0OjpTY29wZWRXZWJHTFJlbmRlcmluZ1Jlc291cmNlc1JlcXVl
c3Q6OmZyZWVXZWJHTFJlbmRlcmluZ1Jlc291cmNlcyk6IERlbGV0ZWQuCisgICAgICAgICogU291
cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKwogMjAyMS0xMC0wNiAgVGltb3RoeSBIYXRjaGVyICA8dGltb3RoeUBhcHBsZS5jb20+CiAK
ICAgICAgICAgX1dLUmVtb3RlT2JqZWN0UmVnaXN0cnkncyBSZXBseUJsb2NrQ2FsbENoZWNrZXIg
c2hvdWxkIGFsd2F5cyBkZWFsbG9jIG9uIHRoZSBtYWluIHRocmVhZApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4
dAppbmRleCAwZTZkODA0NjNiNmI5MDM4MTM3NGFhZDA5ZjMzOWZhZjY4NDg2MzljLi42OGRiMDdj
YTZhM2QxYjgzYmYxMmU0MjYyNDMzYjdkYWEyODE5OTQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApA
QCAtMTcxNiw5ICsxNzE2LDkgQEAgaWYgKEVOQUJMRV9XRUJHTCkKICAgICAgICAgICAgICR7V0VC
Q09SRV9ESVJ9L3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlCiAgICAgICAgICkKICAgICAgICAgbGlz
dChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCisgICAgICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9h
bmdsZS9BTkdMRVV0aWxpdGllcy5jcHAKICAgICAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2Fu
Z2xlL0V4dGVuc2lvbnNHTEFOR0xFLmNwcAogICAgICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
YW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAKLSAgICAgICAgICAgIHBsYXRmb3JtL2dy
YXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEVFR0xVdGlsaXRpZXMuY3BwCiAgICAg
ICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9UZW1wb3JhcnlBTkdMRVNldHRpbmcuY3Bw
CiAgICAgICAgICkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZSBi
L1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5kZXggMmE4NGI0YWQyYWQyOTQ4YmFkY2Qw
OTcxNWE1ZDhkM2IzYzlhZGI4Mi4uNzA5OTQ0MjYzMmU4NzM1MzU3OTAyNTZmYTlkYmIyZjVlNmJh
MWU3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBAIC0xMzg2LDggKzEzODYsOCBAQCBzZXQoV2ViQ29y
ZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvV2luZFJ1
bGUuaAogCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvQU5HTEVIZWFkZXJzLmgKKyAgICBw
bGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9BTkdMRVV0aWxpdGllcy5oCiAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuaAotICAgIHBsYXRmb3JtL2dyYXBoaWNzL2Fu
Z2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEVVdGlsaXRpZXMuaAogCiAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3aW5nQ29udGV4dC5oCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFj
LmNtYWtlCmluZGV4IGZhY2NjYjY4ZjY1ZWJhN2NjNTkxYmM3MjRmY2EwYzJhMzNhYzRmOGEuLmJj
ZmNlYjc5MzEzZWMwNWMzNTRjNWZlZmUzNGFiNTEwYWIzM2U3MTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3Jt
TWFjLmNtYWtlCkBAIC02MTQsNyArNjE0LDcgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9QUklWQVRF
X0ZSQU1FV09SS19IRUFERVJTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvTUlNRVR5cGVDYWNoZS5o
CiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuaAogCi0gICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
YW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRUVHTFV0aWxpdGllcy5oCisgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvYW5nbGUvQU5HTEVVdGlsaXRpZXMuaAogCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL0F1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDLmgKICAgICBwbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5YmFja1RhcmdldENvY29hLmgKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3Vy
Y2VzQ29jb2EudHh0CmluZGV4IGYzMGZkYWJhMDRjMjYwNjdmMTY0OGYyNzQyNzJkNWUyYWUxZDNk
NGQuLmE0YzBhNzYyN2MzNzgxZGZjZDA0OTA2ZmM1MjMzMDljOTA3MzBjMmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291
cmNlc0NvY29hLnR4dApAQCAtNTk3LDcgKzU5Nyw3IEBAIHRlc3RpbmcvY29jb2EvV2ViVmlld1Zp
c3VhbElkZW50aWZpY2F0aW9uT3ZlcmxheS5tbQogLy8gVGhlIGZvbGxvd2luZyBmaWxlcyBhcmVu
J3QgdW5pZmllZCB3aXRoIG90aGVycyB0byBwcmV2ZW50IHRoZW0gZnJvbSBiZWluZyBtZXJnZWQK
IC8vIHdpdGggZmlsZXMgdGhhdCB1c2UgdGhlIHN5c3RlbSBPcGVuR0wuCiAKK3BsYXRmb3JtL2dy
YXBoaWNzL2FuZ2xlL0FOR0xFVXRpbGl0aWVzLmNwcCBAbm8tdW5pZnkKIHBsYXRmb3JtL2dyYXBo
aWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmNwcCBAbm8tdW5pZnkKIHBsYXRmb3JtL2dyYXBo
aWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwIEBuby11bmlmeQotcGxhdGZvcm0v
Z3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRUVHTFV0aWxpdGllcy5jcHAgQG5v
LXVuaWZ5CiBwbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9UZW1wb3JhcnlBTkdMRVNldHRpbmcuY3Bw
IEBuby11bmlmeQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCmluZGV4IDkxYjYzYTZkYzg1Y2Y4NmMwYzE5ZGYwMWFhYzhmNWY4ZDM2MmU2MDMu
LmZmMjlhMTZmM2Q3MGYyNGQxN2ZjOGE5MmY2NGQ3ZTE5ZTk2MDhkNjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTIzNTIsMTMg
KzIzNTIsMTEgQEAKIAkJN0FGOUIyMEYxOENGQjVGNDAwQzY0QkVGIC8qIEpTVlRUUmVnaW9uTGlz
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0FGOUIy
MEIxOENGQjVGMzAwQzY0QkVGIC8qIEpTVlRUUmVnaW9uTGlzdC5oICovOyB9OwogCQk3QjEwMzM5
RTI1NDk3MjE3MDBDOEMxQUMgLyogR3JhcGhpY3NDb250ZXh0R0xDVi5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0IxMDMzOUQyNTQ5NzIwMTAwQzhDMUFD
IC8qIEdyYXBoaWNzQ29udGV4dEdMQ1YuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk3QjEwMzM5RjI1NDk3MjFFMDBDOEMxQUMgLyogR3JhcGhpY3ND
b250ZXh0R0xDVkFOR0xFLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3QjEwMzM5QzI1NDk3MjAxMDBDOEMxQUMgLyogR3JhcGhpY3NDb250ZXh0R0xDVkFO
R0xFLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJ
N0I0NUFCNTAyNUZCOTNCRTAwRkQyN0Y0IC8qIEdyYXBoaWNzQ29udGV4dEdMQU5HTEVFR0xVdGls
aXRpZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
N0I3NzRDNjIyNUZCOTM1NTAwOTEzOTVGIC8qIEdyYXBoaWNzQ29udGV4dEdMQU5HTEVFR0xVdGls
aXRpZXMuY3BwICovOyB9OwotCQk3QjQ1QUI1NTI1RkJBOURFMDBGRDI3RjQgLyogR3JhcGhpY3ND
b250ZXh0R0xBTkdMRUVHTFV0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gN0I0NUFCNTQyNUZCQTlERDAwRkQyN0Y0IC8qIEdyYXBoaWNzQ29u
dGV4dEdMQU5HTEVFR0xVdGlsaXRpZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OworCQk3QjYwOTRERDI3MEM0NEJEMDA2NDgzNUMgLyogQU5HTEVVdGls
aXRpZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdC
QjM0QTE2MjUzNDVDQjIwMDAyOUQwOCAvKiBBTkdMRVV0aWxpdGllcy5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdCNkRDODE5MjU3MTJFOTIwMDM4
MEM3MCAvKiBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I2REM4MTcyNTcxMkU5MjAwMzgw
QzcwIC8qIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0I3MzExRkIyNUMwOTJCNzAw
M0IyNzk2IC8qIFNjb3BlZEhpZ2hQZXJmb3JtYW5jZUdQVVJlcXVlc3QuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCNzMxMUZBMjVDMDkyQjcwMDNCMjc5
NiAvKiBTY29wZWRIaWdoUGVyZm9ybWFuY2VHUFVSZXF1ZXN0LmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0I4RUQ1RjAyNkYwQzEzRDAwOEFDMDIz
IC8qIENWVXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3QjhFRDVFRDI2RjBDMTIzMDA4QUMwMjMgLyogQ1ZVdGlsaXRpZXMuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QjkwNDE3MDI1NTAx
MTQyMDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCOTA0MTZFMjU1MDExMDkw
MDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTdCQjM0QTE3MjUzNDVDQjIw
MDAyOUQwOCAvKiBHcmFwaGljc0NvbnRleHRHTEFOR0xFVXRpbGl0aWVzLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QkIzNEExNjI1MzQ1Q0IyMDAwMjlE
MDggLyogR3JhcGhpY3NDb250ZXh0R0xBTkdMRVV0aWxpdGllcy5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdCQjM0QTQ4MjUzNzc2Q0EwMDAyOUQw
OCAvKiBHcmFwaGljc0NvbnRleHRHTEltYWdlRXh0cmFjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QkIzNEE0NTI1Mzc3NkM2MDAwMjlEMDggLyog
R3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdCQjY4MEJBMjVCQTFCRTQwMDJCODczOCAvKiBH
cmFwaGljc0NoZWNrc01hYy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gN0JCNjgwQjgyNUJBMUJFNDAwMkI4NzM4IC8qIEdyYXBoaWNzQ2hlY2tzTWFjLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0JFNzQy
NzM4MUZBOTA2RkJCNEYwRjJDIC8qIEpTU1ZHR3JhcGhpY3NFbGVtZW50LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NTBDNEMwMkJFRDg5MzZGODE4RTJG
OTkgLyogSlNTVkdHcmFwaGljc0VsZW1lbnQuaCAqLzsgfTsKQEAgLTEwNjU2LDIwICsxMDY1NCwx
OSBAQAogCQk3QjEwMzM5QTI1NDk3MjAwMDBDOEMxQUMgLyogR3JhcGhpY3NDb250ZXh0R0xDVkFO
R0xFLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dEdMQ1ZBTkdMRS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCMTAzMzlDMjU0OTcyMDEwMEM4QzFBQyAv
KiBHcmFwaGljc0NvbnRleHRHTENWQU5HTEUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR3JhcGhpY3NDb250
ZXh0R0xDVkFOR0xFLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCMTAzMzlEMjU0
OTcyMDEwMEM4QzFBQyAvKiBHcmFwaGljc0NvbnRleHRHTENWLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdy
YXBoaWNzQ29udGV4dEdMQ1YuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJN0I0NUFC
NTQyNUZCQTlERDAwRkQyN0Y0IC8qIEdyYXBoaWNzQ29udGV4dEdMQU5HTEVFR0xVdGlsaXRpZXMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0R0xBTkdM
RUVHTFV0aWxpdGllcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjY0QzBCNDI1
NEMzQjE2MDAwNkI0QUYgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2VDb2NvYS5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNl
Q29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCNkRDODE1MjU3MTJFOTEw
MDM4MEM3MCAvKiBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFj
ZVN3YXBDaGFpbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCNkRDODE3MjU3
MTJFOTIwMDM4MEM3MCAvKiBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFj
ZVN3YXBDaGFpbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjczMTFGQTI1QzA5
MkI3MDAzQjI3OTYgLyogU2NvcGVkSGlnaFBlcmZvcm1hbmNlR1BVUmVxdWVzdC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY29wZWRIaWdoUGVyZm9ybWFuY2VHUFVSZXF1ZXN0
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTdCNzc0QzYyMjVGQjkzNTUwMDkxMzk1
RiAvKiBHcmFwaGljc0NvbnRleHRHTEFOR0xFRUdMVXRpbGl0aWVzLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEdyYXBoaWNzQ29udGV4dEdMQU5HTEVFR0xVdGlsaXRpZXMuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk3QjhFRDVFRDI2RjBDMTIzMDA4QUMwMjMgLyogQ1ZVdGlsaXRp
ZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ1ZVdGlsaXRpZXMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I4RUQ1RUYyNkYwQzEyMzAwOEFDMDIzIC8qIENW
VXRpbGl0aWVzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQ1ZV
dGlsaXRpZXMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCOTA0MTZFMjU1MDEx
MDkwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQk3QkIzNEExNjI1MzQ1Q0IyMDAwMjlEMDggLyogR3JhcGhpY3NDb250
ZXh0R0xBTkdMRVV0aWxpdGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBH
cmFwaGljc0NvbnRleHRHTEFOR0xFVXRpbGl0aWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTdCQjM0QTE2MjUzNDVDQjIwMDAyOUQwOCAvKiBBTkdMRVV0aWxpdGllcy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBTkdMRVV0aWxpdGllcy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk3QkIzNEE0NTI1Mzc3NkM2MDAwMjlEMDggLyogR3JhcGhpY3ND
b250ZXh0R0xJbWFnZUV4dHJhY3Rvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHcmFwaGljc0NvbnRleHRH
TEltYWdlRXh0cmFjdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCQjM0QTQ3
MjUzNzc2QzcwMDAyOUQwOCAvKiBHcmFwaGljc0NvbnRleHRHTEltYWdlRXh0cmFjdG9yLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0b3IuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QkI2ODBCNzI1QkExQkUzMDAyQjg3MzggLyog
R3JhcGhpY3NDaGVja3NNYWMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gR3JhcGhpY3NDaGVja3NNYWMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3
QkI2ODBCODI1QkExQkU0MDAyQjg3MzggLyogR3JhcGhpY3NDaGVja3NNYWMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR3JhcGhpY3NDaGVja3NNYWMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJN0JDRDQyRDgyNzA1OTlFRjAwRUIyMTI3IC8qIEFOR0xFVXRpbGl0
aWVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFOR0xFVXRpbGl0aWVzLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0JDRDQyREEyNzA1Qzk0OTAwRUIyMTI3IC8qIEFOR0xFVXRp
bGl0aWVzQ29jb2EuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQU5HTEVVdGlsaXRpZXNDb2NvYS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCQ0Q0MkRDMjcwNUM5NDkwMEVCMjEy
NyAvKiBBTkdMRVV0aWxpdGllc0NvY29hLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFOR0xFVXRpbGl0aWVz
Q29jb2EuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0JFNzI2NUIyNTc2M0I4RDAw
RTg1RDk4IC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIyNzEwLDEyICsyMjcwNywxMSBAQAogCQkJaXNhID0gUEJY
R3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKIAkJCQkyN0UzQzgwNjI1N0Y1RTZFMDBDOTg2QUIgLyog
QU5HTEVIZWFkZXJzLmggKi8sCisJCQkJN0JDRDQyRDgyNzA1OTlFRjAwRUIyMTI3IC8qIEFOR0xF
VXRpbGl0aWVzLmNwcCAqLywKKwkJCQk3QkIzNEExNjI1MzQ1Q0IyMDAwMjlEMDggLyogQU5HTEVV
dGlsaXRpZXMuaCAqLywKIAkJCQk2RTI3RjI0MzIyOUM5Rjg0MDBGMUY2MzIgLyogRXh0ZW5zaW9u
c0dMQU5HTEUuY3BwICovLAogCQkJCTZFMjdGMjQ0MjI5QzlGOEQwMEYxRjYzMiAvKiBFeHRlbnNp
b25zR0xBTkdMRS5oICovLAogCQkJCTZFMjdGMjQyMjI5OENFNEIwMEYxRjYzMiAvKiBHcmFwaGlj
c0NvbnRleHRHTEFOR0xFLmNwcCAqLywKLQkJCQk3Qjc3NEM2MjI1RkI5MzU1MDA5MTM5NUYgLyog
R3JhcGhpY3NDb250ZXh0R0xBTkdMRUVHTFV0aWxpdGllcy5jcHAgKi8sCi0JCQkJN0I0NUFCNTQy
NUZCQTlERDAwRkQyN0Y0IC8qIEdyYXBoaWNzQ29udGV4dEdMQU5HTEVFR0xVdGlsaXRpZXMuaCAq
LywKLQkJCQk3QkIzNEExNjI1MzQ1Q0IyMDAwMjlEMDggLyogR3JhcGhpY3NDb250ZXh0R0xBTkdM
RVV0aWxpdGllcy5oICovLAogCQkJCTZFMjkwODYxMjI5REI5NTAwMDA5ODZFMiAvKiBUZW1wb3Jh
cnlBTkdMRVNldHRpbmcuY3BwICovLAogCQkJCTZFMjkwODYzMjI5REI5NzAwMDA5ODZFMiAvKiBU
ZW1wb3JhcnlBTkdMRVNldHRpbmcuaCAqLywKIAkJCSk7CkBAIC0zMTQ5OCw2ICszMTQ5NCw3IEBA
CiAJCQkJRTdFMDM1NzIyNEQ0RTE5NjAwOERGRUZCIC8qIEFuYWx5c2VyT3B0aW9ucy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMjdFM0M4MDgyNTdGNUU2RTAwQzk4NkFCIC8qIEFOR0xFSGVhZGVycy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMzFBNzk1QzcxODg4QkNCMjAwMzgyRjkwIC8qIEFOR0xFSW5z
dGFuY2VkQXJyYXlzLmggaW4gSGVhZGVycyAqLywKKwkJCQk3QjYwOTRERDI3MEM0NEJEMDA2NDgz
NUMgLyogQU5HTEVVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5RTkxMkFCMEVGQUM5
MDYwMDlEMENBRiAvKiBBbmltYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTcxRUZDRURDMjAy
QjM4QTkwMEQ3QzQxMSAvKiBBbmltYXRpb25FZmZlY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTcx
RTJDNDI2MjFDOTM1MjgwMDI0RjhDOCAvKiBBbmltYXRpb25FZmZlY3RQaGFzZS5oIGluIEhlYWRl
cnMgKi8sCkBAIC0zMjc0Niw4ICszMjc0Myw2IEBACiAJCQkJOTM0OTA3RTQxMjVCQkJDODAwN0Yy
M0EwIC8qIEdyYXBoaWNzQ29udGV4dENHLmggaW4gSGVhZGVycyAqLywKIAkJCQlGNDI5OTRGQTI3
MENGRTQ4MDAzMjI5OEIgLyogR3JhcGhpY3NDb250ZXh0Rmx1c2hJZGVudGlmaWVyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkzMTNERTg3MDIzQTk2OTczMDA4RkM0N0IgLyogR3JhcGhpY3NDb250ZXh0
R0wuaCBpbiBIZWFkZXJzICovLAotCQkJCTdCNDVBQjU1MjVGQkE5REUwMEZEMjdGNCAvKiBHcmFw
aGljc0NvbnRleHRHTEFOR0xFRUdMVXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKLQkJCQk3QkIz
NEExNzI1MzQ1Q0IyMDAwMjlEMDggLyogR3JhcGhpY3NDb250ZXh0R0xBTkdMRVV0aWxpdGllcy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJN0MzMzBBMDIxREY4RkFDNjAwRDMzOTVDIC8qIEdyYXBoaWNz
Q29udGV4dEdMQXR0cmlidXRlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0IxMDMzOUUyNTQ5NzIx
NzAwQzhDMUFDIC8qIEdyYXBoaWNzQ29udGV4dEdMQ1YuaCBpbiBIZWFkZXJzICovLAogCQkJCTdC
MTAzMzlGMjU0OTcyMUUwMEM4QzFBQyAvKiBHcmFwaGljc0NvbnRleHRHTENWQU5HTEUuaCBpbiBI
ZWFkZXJzICovLApAQCAtMzY2MTksNyArMzY2MTQsNiBAQAogCQkJCTUxQTlEOUU5MTk1QjkzMUYw
MDFCMkI1QyAvKiBHYW1lcGFkTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4Mzc5NjRD
RjFGOERCNjlEMDAyMThFQTAgLyogR2VvbG9jYXRpb25Qb3NpdGlvbkRhdGFJT1MubW0gaW4gU291
cmNlcyAqLywKIAkJCQk2RTcyRjU0RTIyOURDRDEwMDBCM0UxNTEgLyogR3JhcGhpY3NDb250ZXh0
R0xBTkdMRS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk3QjQ1QUI1MDI1RkI5M0JFMDBGRDI3RjQg
LyogR3JhcGhpY3NDb250ZXh0R0xBTkdMRUVHTFV0aWxpdGllcy5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk3QzNFNTEwQjE4REY4RjM1MDBDMTEyRjcgLyogSFRNTENvbnZlcnRlci5tbSBpbiBTb3Vy
Y2VzICovLAogCQkJCUE4RDA2QjNBMEEyNjVEQ0QwMDVFNzIwMyAvKiBIVE1MTmFtZXMuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMUFDOTAwQzMxOTQzQzBGQzAwODYyNUI1IC8qIEhUVFBIZWFkZXJO
YW1lcy5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2FuZ2xlL0FOR0xFVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0FOR0xFVXRpbGl0aWVzLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43YzVm
OGI1ODc3MzQ5MDAwMTQ1Mzg5NGEwMTNmMjI3MWM5NzVhY2MzCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvQU5HTEVVdGlsaXRpZXMuY3Bw
CkBAIC0wLDAgKzEsNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQU5HTEVVdGlsaXRpZXMuaCIK
KworI2lmIEVOQUJMRShXRUJHTCkgJiYgVVNFKEFOR0xFKQorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKKyNpZiAhUExBVEZPUk0oQ09DT0EpCitib29sIHBsYXRmb3JtSXNBTkdMRUF2YWlsYWJsZSgp
Cit7CisgICAgcmV0dXJuIHRydWU7Cit9CisjZW5kaWYKKworfQorCisjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0FOR0xFVXRpbGl0aWVz
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9BTkdMRVV0aWxpdGll
cy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjY5MmMzM2MyZmRmMmI3ZGQ4Y2MwOTViNGMxMGFmMTY1YWJkMzFhODUK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmds
ZS9BTkdMRVV0aWxpdGllcy5oCkBAIC0wLDAgKzEsMjQ3IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VC
R0wpICYmIFVTRShBTkdMRSkKKworI2luY2x1ZGUgIkFOR0xFSGVhZGVycy5oIgorI2luY2x1ZGUg
IkdyYXBoaWNzVHlwZXNHTC5oIgorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFNjb3BlZFJlc3RvcmVUZXh0dXJlQmluZGluZyB7Cisg
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU2NvcGVkUmVzdG9yZVRleHR1cmVCaW5kaW5nKTsKK3B1
YmxpYzoKKyAgICBTY29wZWRSZXN0b3JlVGV4dHVyZUJpbmRpbmcoR0xlbnVtIGJpbmRpbmdQb2lu
dFF1ZXJ5LCBHTGVudW0gYmluZGluZ1BvaW50LCBib29sIGNvbmRpdGlvbiA9IHRydWUpCisgICAg
eworICAgICAgICBBU1NFUlQoYmluZGluZ1BvaW50ICE9IHN0YXRpY19jYXN0PEdMZW51bT4oMHUp
KTsKKyAgICAgICAgaWYgKGNvbmRpdGlvbikgeworICAgICAgICAgICAgbV9iaW5kaW5nUG9pbnQg
PSBiaW5kaW5nUG9pbnQ7CisgICAgICAgICAgICBnbDo6R2V0SW50ZWdlcnYoYmluZGluZ1BvaW50
UXVlcnksIHJlaW50ZXJwcmV0X2Nhc3Q8R0xpbnQqPigmbV9iaW5kaW5nVmFsdWUpKTsKKyAgICAg
ICAgfQorICAgIH0KKworICAgIH5TY29wZWRSZXN0b3JlVGV4dHVyZUJpbmRpbmcoKQorICAgIHsK
KyAgICAgICAgaWYgKG1fYmluZGluZ1BvaW50KQorICAgICAgICAgICAgZ2w6OkJpbmRUZXh0dXJl
KG1fYmluZGluZ1BvaW50LCBtX2JpbmRpbmdWYWx1ZSk7CisgICAgfQorCitwcml2YXRlOgorICAg
IEdMZW51bSBtX2JpbmRpbmdQb2ludCB7IDAgfTsKKyAgICBHTHVpbnQgbV9iaW5kaW5nVmFsdWUg
eyAwdSB9OworfTsKKworCitjbGFzcyBTY29wZWRCdWZmZXJCaW5kaW5nIHsKKyAgICBXVEZfTUFL
RV9OT05DT1BZQUJMRShTY29wZWRCdWZmZXJCaW5kaW5nKTsKK3B1YmxpYzoKKyAgICBTY29wZWRC
dWZmZXJCaW5kaW5nKEdMZW51bSBiaW5kaW5nUG9pbnQsIEdMdWludCBiaW5kaW5nVmFsdWUsIGJv
b2wgY29uZGl0aW9uID0gdHJ1ZSkKKyAgICB7CisgICAgICAgIGlmICghY29uZGl0aW9uKQorICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICBnbDo6R2V0SW50ZWdlcnYocXVlcnkoYmluZGluZ1Bv
aW50KSwgcmVpbnRlcnByZXRfY2FzdDxHTGludCo+KCZtX2JpbmRpbmdWYWx1ZSkpOworICAgICAg
ICBpZiAoYmluZGluZ1ZhbHVlID09IG1fYmluZGluZ1ZhbHVlKQorICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICBtX2JpbmRpbmdQb2ludCA9IGJpbmRpbmdQb2ludDsKKyAgICAgICAgZ2w6OkJp
bmRCdWZmZXIobV9iaW5kaW5nUG9pbnQsIGJpbmRpbmdWYWx1ZSk7CisgICAgfQorCisgICAgflNj
b3BlZEJ1ZmZlckJpbmRpbmcoKQorICAgIHsKKyAgICAgICAgaWYgKG1fYmluZGluZ1BvaW50KQor
ICAgICAgICAgICAgZ2w6OkJpbmRCdWZmZXIobV9iaW5kaW5nUG9pbnQsIG1fYmluZGluZ1ZhbHVl
KTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgc3RhdGljIGNvbnN0ZXhwciBHTGVudW0gcXVlcnko
R0xlbnVtIGJpbmRpbmdQb2ludCkKKyAgICB7CisgICAgICAgIGlmIChiaW5kaW5nUG9pbnQgPT0g
R0xfUElYRUxfUEFDS19CVUZGRVIpCisgICAgICAgICAgICByZXR1cm4gR0xfUElYRUxfUEFDS19C
VUZGRVJfQklORElORzsKKyAgICAgICAgQVNTRVJUKGJpbmRpbmdQb2ludCA9PSBHTF9QSVhFTF9V
TlBBQ0tfQlVGRkVSKTsKKyAgICAgICAgcmV0dXJuIEdMX1BJWEVMX1VOUEFDS19CVUZGRVJfQklO
RElORzsKKyAgICB9CisgICAgR0xpbnQgbV9iaW5kaW5nUG9pbnQgeyAwIH07CisgICAgR0x1aW50
IG1fYmluZGluZ1ZhbHVlIHsgMHUgfTsKK307CitjbGFzcyBTY29wZWRSZXN0b3JlUmVhZEZyYW1l
YnVmZmVyQmluZGluZyB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU2NvcGVkUmVzdG9yZVJl
YWRGcmFtZWJ1ZmZlckJpbmRpbmcpOworcHVibGljOgorICAgIFNjb3BlZFJlc3RvcmVSZWFkRnJh
bWVidWZmZXJCaW5kaW5nKGJvb2wgaXNGb3JXZWJHTDIsIEdMdWludCByZXN0b3JlVmFsdWUpCisg
ICAgICAgIDogbV9mcmFtZWJ1ZmZlclRhcmdldChpc0ZvcldlYkdMMiA/IEdMX1JFQURfRlJBTUVC
VUZGRVIgOiBHTF9GUkFNRUJVRkZFUikKKyAgICAgICAgLCBtX2JpbmRpbmdWYWx1ZShyZXN0b3Jl
VmFsdWUpCisgICAgeworICAgIH0KKyAgICBTY29wZWRSZXN0b3JlUmVhZEZyYW1lYnVmZmVyQmlu
ZGluZyhib29sIGlzRm9yV2ViR0wyLCBHTHVpbnQgcmVzdG9yZVZhbHVlLCBHTHVpbnQgdmFsdWUp
CisgICAgICAgIDogbV9mcmFtZWJ1ZmZlclRhcmdldChpc0ZvcldlYkdMMiA/IEdMX1JFQURfRlJB
TUVCVUZGRVIgOiBHTF9GUkFNRUJVRkZFUikKKyAgICAgICAgLCBtX2JpbmRpbmdWYWx1ZShyZXN0
b3JlVmFsdWUpCisgICAgeworICAgICAgICBiaW5kRnJhbWVidWZmZXIodmFsdWUpOworICAgIH0K
KyAgICB2b2lkIG1hcmtCaW5kaW5nQ2hhbmdlZCgpCisgICAgeworICAgICAgICBtX2JpbmRpbmdD
aGFuZ2VkID0gdHJ1ZTsKKyAgICB9CisgICAgdm9pZCBiaW5kRnJhbWVidWZmZXIoR0x1aW50IGJp
bmRpbmdWYWx1ZSkKKyAgICB7CisgICAgICAgIGlmICghbV9iaW5kaW5nQ2hhbmdlZCAmJiBtX2Jp
bmRpbmdWYWx1ZSA9PSBiaW5kaW5nVmFsdWUpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IGdsOjpCaW5kRnJhbWVidWZmZXIobV9mcmFtZWJ1ZmZlclRhcmdldCwgYmluZGluZ1ZhbHVlKTsK
KyAgICAgICAgbV9iaW5kaW5nQ2hhbmdlZCA9IG1fYmluZGluZ1ZhbHVlICE9IGJpbmRpbmdWYWx1
ZTsKKyAgICB9CisgICAgR0x1aW50IGZyYW1lYnVmZmVyVGFyZ2V0KCkgY29uc3QgeyByZXR1cm4g
bV9mcmFtZWJ1ZmZlclRhcmdldDsgfQorICAgIH5TY29wZWRSZXN0b3JlUmVhZEZyYW1lYnVmZmVy
QmluZGluZygpCisgICAgeworICAgICAgICBpZiAobV9iaW5kaW5nQ2hhbmdlZCkKKyAgICAgICAg
ICAgIGdsOjpCaW5kRnJhbWVidWZmZXIobV9mcmFtZWJ1ZmZlclRhcmdldCwgbV9iaW5kaW5nVmFs
dWUpOworICAgIH0KK3ByaXZhdGU6CisgICAgY29uc3QgR0xlbnVtIG1fZnJhbWVidWZmZXJUYXJn
ZXQ7CisgICAgR0x1aW50IG1fYmluZGluZ1ZhbHVlIHsgMHUgfTsKKyAgICBib29sIG1fYmluZGlu
Z0NoYW5nZWQgeyBmYWxzZSB9OworfTsKKworY2xhc3MgU2NvcGVkUGl4ZWxTdG9yYWdlTW9kZSB7
CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU2NvcGVkUGl4ZWxTdG9yYWdlTW9kZSk7CitwdWJs
aWM6CisgICAgZXhwbGljaXQgU2NvcGVkUGl4ZWxTdG9yYWdlTW9kZShHTGVudW0gbmFtZSwgYm9v
bCBjb25kaXRpb24gPSB0cnVlKQorICAgICAgICA6IG1fbmFtZShjb25kaXRpb24gPyBuYW1lIDog
MCkKKyAgICB7CisgICAgICAgIGlmIChtX25hbWUpCisgICAgICAgICAgICBnbDo6R2V0SW50ZWdl
cnYobV9uYW1lLCAmbV9vcmlnaW5hbFZhbHVlKTsKKyAgICB9CisgICAgU2NvcGVkUGl4ZWxTdG9y
YWdlTW9kZShHTGVudW0gbmFtZSwgR0xpbnQgdmFsdWUsIGJvb2wgY29uZGl0aW9uID0gdHJ1ZSkK
KyAgICAgICAgOiBtX25hbWUoY29uZGl0aW9uID8gbmFtZSA6IDApCisgICAgeworICAgICAgICBp
ZiAobV9uYW1lKSB7CisgICAgICAgICAgICBnbDo6R2V0SW50ZWdlcnYobV9uYW1lLCAmbV9vcmln
aW5hbFZhbHVlKTsKKyAgICAgICAgICAgIHBpeGVsU3RvcmUodmFsdWUpOworICAgICAgICB9Cisg
ICAgfQorICAgIH5TY29wZWRQaXhlbFN0b3JhZ2VNb2RlKCkKKyAgICB7CisgICAgICAgIGlmICht
X25hbWUgJiYgbV92YWx1ZUNoYW5nZWQpCisgICAgICAgICAgICBnbDo6UGl4ZWxTdG9yZWkobV9u
YW1lLCBtX29yaWdpbmFsVmFsdWUpOworICAgIH0KKyAgICB2b2lkIHBpeGVsU3RvcmUoR0xpbnQg
dmFsdWUpCisgICAgeworICAgICAgICBBU1NFUlQobV9uYW1lKTsKKyAgICAgICAgaWYgKCFtX3Zh
bHVlQ2hhbmdlZCAmJiBtX29yaWdpbmFsVmFsdWUgPT0gdmFsdWUpCisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIGdsOjpQaXhlbFN0b3JlaShtX25hbWUsIHZhbHVlKTsKKyAgICAgICAgbV92
YWx1ZUNoYW5nZWQgPSBtX29yaWdpbmFsVmFsdWUgIT0gdmFsdWU7CisgICAgfQorICAgIG9wZXJh
dG9yIEdMaW50KCkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVChtX25hbWUgJiYgIW1fdmFs
dWVDaGFuZ2VkKTsKKyAgICAgICAgcmV0dXJuIG1fb3JpZ2luYWxWYWx1ZTsKKyAgICB9Citwcml2
YXRlOgorICAgIGNvbnN0IEdMZW51bSBtX25hbWU7CisgICAgYm9vbCBtX3ZhbHVlQ2hhbmdlZCB7
IGZhbHNlIH07CisgICAgR0xpbnQgbV9vcmlnaW5hbFZhbHVlIHsgMCB9OworfTsKKworY2xhc3Mg
U2NvcGVkVGV4dHVyZSB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU2NvcGVkVGV4dHVyZSk7
CitwdWJsaWM6CisgICAgU2NvcGVkVGV4dHVyZSgpCisgICAgeworICAgICAgICBnbDo6R2VuVGV4
dHVyZXMoMSwgJm1fb2JqZWN0KTsKKyAgICB9CisgICAgflNjb3BlZFRleHR1cmUoKQorICAgIHsK
KyAgICAgICAgZ2w6OkRlbGV0ZVRleHR1cmVzKDEsICZtX29iamVjdCk7CisgICAgfQorICAgIG9w
ZXJhdG9yIEdMdWludCgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9vYmplY3Q7Cisg
ICAgfQorcHJpdmF0ZToKKyAgICBHTHVpbnQgbV9vYmplY3QgeyAwdSB9OworfTsKKworY2xhc3Mg
U2NvcGVkRnJhbWVidWZmZXIgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFNjb3BlZEZyYW1l
YnVmZmVyKTsKK3B1YmxpYzoKKyAgICBTY29wZWRGcmFtZWJ1ZmZlcigpCisgICAgeworICAgICAg
ICBnbDo6R2VuRnJhbWVidWZmZXJzKDEsICZtX29iamVjdCk7CisgICAgfQorICAgIH5TY29wZWRG
cmFtZWJ1ZmZlcigpCisgICAgeworICAgICAgICBnbDo6RGVsZXRlRnJhbWVidWZmZXJzKDEsICZt
X29iamVjdCk7CisgICAgfQorICAgIG9wZXJhdG9yIEdMdWludCgpIGNvbnN0CisgICAgeworICAg
ICAgICByZXR1cm4gbV9vYmplY3Q7CisgICAgfQorcHJpdmF0ZToKKyAgICBHTHVpbnQgbV9vYmpl
Y3QgeyAwIH07Cit9OworCitjbGFzcyBTY29wZWRHTEZlbmNlIHsKKyAgICBXVEZfTUFLRV9OT05D
T1BZQUJMRShTY29wZWRHTEZlbmNlKTsKK3B1YmxpYzoKKyAgICBTY29wZWRHTEZlbmNlKCkgPSBk
ZWZhdWx0OworICAgIFNjb3BlZEdMRmVuY2UoU2NvcGVkR0xGZW5jZSYmIG90aGVyKQorICAgICAg
ICA6IG1fb2JqZWN0KHN0ZDo6ZXhjaGFuZ2Uob3RoZXIubV9vYmplY3QsIHsgfSkpCisgICAgewor
ICAgIH0KKyAgICB+U2NvcGVkR0xGZW5jZSgpIHsgcmVzZXQoKTsgfQorICAgIFNjb3BlZEdMRmVu
Y2UmIG9wZXJhdG9yPShTY29wZWRHTEZlbmNlJiYgb3RoZXIpCisgICAgeworICAgICAgICBpZiAo
dGhpcyAhPSAmb3RoZXIpIHsKKyAgICAgICAgICAgIHJlc2V0KCk7CisgICAgICAgICAgICBtX29i
amVjdCA9IHN0ZDo6ZXhjaGFuZ2Uob3RoZXIubV9vYmplY3QsIHsgfSk7CisgICAgICAgIH0KKyAg
ICAgICAgcmV0dXJuICp0aGlzOworICAgIH0KKyAgICB2b2lkIHJlc2V0KCkKKyAgICB7CisgICAg
ICAgIGlmIChtX29iamVjdCkgeworICAgICAgICAgICAgZ2w6OkRlbGV0ZVN5bmMobV9vYmplY3Qp
OworICAgICAgICAgICAgbV9vYmplY3QgPSB7IH07CisgICAgICAgIH0KKyAgICB9CisgICAgdm9p
ZCBhYmFuZG9uKCkgeyBtX29iamVjdCA9IHsgfTsgfQorICAgIHZvaWQgZmVuY2VTeW5jKCkKKyAg
ICB7CisgICAgICAgIHJlc2V0KCk7CisgICAgICAgIG1fb2JqZWN0ID0gZ2w6OkZlbmNlU3luYyhH
TF9TWU5DX0dQVV9DT01NQU5EU19DT01QTEVURSwgMCk7CisgICAgfQorICAgIG9wZXJhdG9yIEdM
c3luYygpIGNvbnN0IHsgcmV0dXJuIG1fb2JqZWN0OyB9CisgICAgb3BlcmF0b3IgYm9vbCgpIGNv
bnN0IHsgcmV0dXJuIG1fb2JqZWN0OyB9Citwcml2YXRlOgorICAgIEdMc3luYyBtX29iamVjdCB7
IH07Cit9OworCitib29sIHBsYXRmb3JtSXNBTkdMRUF2YWlsYWJsZSgpOworCit9CisKKyNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3Jh
cGhpY3NDb250ZXh0R0xBTkdMRS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcAppbmRleCAzMjU3ZGQ4ODdlZTg4MDEx
NTdhMWY5NTA2YTA3MzcwYmUzZWM3YzQ4Li5mNzg1ZDJjOTk2MTYzMjI3ZmU5NzA4YmJmOWQxYmEw
MzAxZmMzZmIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
bmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcApAQCAtMzAsOCAr
MzAsOCBAQAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMLmgiCiAKICNpbmNsdWRlICJBTkdM
RUhlYWRlcnMuaCIKKyNpbmNsdWRlICJBTkdMRVV0aWxpdGllcy5oIgogI2luY2x1ZGUgIkV4dGVu
c2lvbnNHTEFOR0xFLmgiCi0jaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0R0xBTkdMRVV0aWxpdGll
cy5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgiCiAjaW5jbHVkZSAiSW1h
Z2VCdWZmZXIuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCkBAIC03Niw2ICs3Niw0OSBAQCBzdGF0
aWMgdm9pZCB3aXBlQWxwaGFDaGFubmVsRnJvbVBpeGVscyhpbnQgd2lkdGgsIGludCBoZWlnaHQs
IHVuc2lnbmVkIGNoYXIqIHBpeAogfQogI2VuZGlmCiAKK2Jvb2wgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OnJlbGVhc2VUaHJlYWRSZXNvdXJjZXMoUmVsZWFzZVRocmVhZFJlc291cmNlQmVoYXZp
b3IgcmVsZWFzZUJlaGF2aW9yKQoreworICAgIHBsYXRmb3JtUmVsZWFzZVRocmVhZFJlc291cmNl
cygpOworCisgICAgaWYgKCFwbGF0Zm9ybUlzQU5HTEVBdmFpbGFibGUoKSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgLy8gVW5zZXQgdGhlIEVHTCBjdXJyZW50IGNvbnRleHQsIHNpbmNl
IHRoZSBuZXh0IGFjY2VzcyBtaWdodCBiZSBmcm9tIGFub3RoZXIgdGhyZWFkLCBhbmQgdGhlCisg
ICAgLy8gY29udGV4dCBjYW5ub3QgYmUgY3VycmVudCBvbiBtdWx0aXBsZSB0aHJlYWRzLgorICAg
IGlmIChyZWxlYXNlQmVoYXZpb3IgPT0gUmVsZWFzZVRocmVhZFJlc291cmNlQmVoYXZpb3I6OlJl
bGVhc2VDdXJyZW50Q29udGV4dCkgeworICAgICAgICBpZiAoRUdMX0dldEN1cnJlbnRDb250ZXh0
KCkgPT0gRUdMX05PX0NPTlRFWFQpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAg
Ly8gQXQgdGhlIHRpbWUgb2Ygd3JpdGluZywgQU5HTEUgZG9lcyBub3QgZmx1c2ggb24gTWFrZUN1
cnJlbnQuIFNpbmNlIHdlIGFyZQorICAgICAgICAvLyBwb3RlbnRpYWxseSBzd2l0Y2hpbmcgdGhy
ZWFkcywgd2Ugc2hvdWxkIGZsdXNoLgorICAgICAgICAvLyBOb3RlOiBIZXJlIHdlIGFzc3VtZSBh
bHNvIHRoYXQgQU5HTEUgaGFzIG9ubHkgb25lIHBsYXRmb3JtIGNvbnRleHQgLS0gb3RoZXJ3aXNl
CisgICAgICAgIC8vIHdlIHdvdWxkIG5lZWQgdG8gZmx1c2ggZWFjaCBFR0wgY29udGV4dCB0aGF0
IGhhcyBiZWVuIHVzZWQuCisgICAgICAgIGdsOjpGbHVzaCgpOworICAgICAgICBFR0xEaXNwbGF5
IGRpc3BsYXkgPSBFR0xfR2V0RGlzcGxheShFR0xfREVGQVVMVF9ESVNQTEFZKTsKKyAgICAgICAg
aWYgKGRpc3BsYXkgPT0gRUdMX05PX0RJU1BMQVkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICAgICAgcmV0dXJuIEVHTF9NYWtlQ3VycmVudChkaXNwbGF5LCBFR0xfTk9fU1VSRkFDRSwg
RUdMX05PX1NVUkZBQ0UsIEVHTF9OT19DT05URVhUKTsKKyAgICB9CisgICAgaWYgKHJlbGVhc2VC
ZWhhdmlvciA9PSBSZWxlYXNlVGhyZWFkUmVzb3VyY2VCZWhhdmlvcjo6VGVybWluYXRlQW5kUmVs
ZWFzZVRocmVhZFJlc291cmNlcykgeworICAgICAgICBFR0xEaXNwbGF5IGRpc3BsYXkgPSBFR0xf
R2V0RGlzcGxheShFR0xfREVGQVVMVF9ESVNQTEFZKTsKKyAgICAgICAgaWYgKGRpc3BsYXkgIT0g
RUdMX05PX0RJU1BMQVkpIHsKKyAgICAgICAgICAgIGlmIChFR0xfR2V0Q3VycmVudENvbnRleHQo
KSAhPSBFR0xfTk9fQ09OVEVYVCkgeworICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOyAvLyBBbGwgcmVzb3VyY2VzIG11c3QgaGF2ZSBiZWVuIGRlc3Ryb3llZC4KKyAgICAgICAg
ICAgICAgICBFR0xfTWFrZUN1cnJlbnQoZGlzcGxheSwgRUdMX05PX1NVUkZBQ0UsIEVHTF9OT19T
VVJGQUNFLCBFR0xfTk9fQ09OVEVYVCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBFR0xf
VGVybWluYXRlKGRpc3BsYXkpOworICAgICAgICB9CisgICAgfQorICAgIC8vIENhbGxlZCB3aGVu
IHdlIGRvIG5vdCBrbm93IGlmIHdlIHdpbGwgZXZlciBzZWUgYW5vdGhlciBjYWxsIGZyb20gdGhp
cyB0aHJlYWQgYWdhaW4uCisgICAgLy8gVW5zZXQgdGhlIEVHTCBjdXJyZW50IGNvbnRleHQgYnkg
cmVsZWFzaW5nIHdob2xlIEVHTCB0aHJlYWQgc3RhdGUuCisgICAgcmV0dXJuIEVHTF9SZWxlYXNl
VGhyZWFkKCk7Cit9CisKKyNpZiAhUExBVEZPUk0oQ09DT0EpCit2b2lkIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpwbGF0Zm9ybVJlbGVhc2VUaHJlYWRSZXNvdXJjZXMoKQoreworfQorI2VuZGlm
CisKIHN0ZDo6b3B0aW9uYWw8UGl4ZWxCdWZmZXI+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpy
ZWFkUGl4ZWxzRm9yUGFpbnRSZXN1bHRzKCkKIHsKICAgICBQaXhlbEJ1ZmZlckZvcm1hdCBmb3Jt
YXQgeyBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQsIFBpeGVsRm9ybWF0
OjpSR0JBOCwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkgfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5H
TEVFR0xVdGlsaXRpZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5n
bGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRUVHTFV0aWxpdGllcy5jcHAKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IGI1YmY4MzdkMjVlNDNkMDY1OGQ2YjY4NTFkZDQ4YTIxOTg2OTZmN2Iu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRUVHTFV0
aWxpdGllcy5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw5MSArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2lu
Y2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMQU5HTEVFR0xVdGlsaXRpZXMuaCIKLQotI2luY2x1ZGUg
IkFOR0xFSGVhZGVycy5oIgotI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+Ci0KLSNpZiBFTkFC
TEUoV0VCR0wpICYmIFVTRShBTkdMRSkKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdGF0aWMg
dW5zaWduZWQgZGVmYXVsdERpc3BsYXlSZWZDb3VudDsKLXN0YXRpYyB2b2lkKiBkZWZhdWx0RGlz
cGxheSA9IG51bGxwdHI7Ci0KLXN0YXRpYyB2b2lkIHJlZkRlZmF1bHREaXNwbGF5KHZvaWQqIGRp
c3BsYXkpCi17Ci0gICAgQVNTRVJUKGRpc3BsYXkgIT0gbnVsbHB0cik7Ci0gICAgQVNTRVJUKGRl
ZmF1bHREaXNwbGF5ID09IGRpc3BsYXkgfHwgKCFkZWZhdWx0RGlzcGxheSAmJiAhZGVmYXVsdERp
c3BsYXlSZWZDb3VudCkpOwotICAgIGRlZmF1bHREaXNwbGF5UmVmQ291bnQrKzsKLSAgICBkZWZh
dWx0RGlzcGxheSA9IGRpc3BsYXk7Ci19Ci0KLXN0YXRpYyB2b2lkIHVucmVmRGVmYXVsdERpc3Bs
YXlJZk5lZWRlZCh2b2lkKiBkaXNwbGF5KQotewotICAgIGlmICghZGlzcGxheSkKLSAgICAgICAg
cmV0dXJuOwotICAgIEFTU0VSVChkZWZhdWx0RGlzcGxheSA9PSBkaXNwbGF5KTsKLSAgICBBU1NF
UlQoZGVmYXVsdERpc3BsYXlSZWZDb3VudCk7Ci0gICAgZGVmYXVsdERpc3BsYXlSZWZDb3VudC0t
OwotfQotCi1TY29wZWRFR0xEZWZhdWx0RGlzcGxheSYgU2NvcGVkRUdMRGVmYXVsdERpc3BsYXk6
Om9wZXJhdG9yPShTY29wZWRFR0xEZWZhdWx0RGlzcGxheSYmIG90aGVyKQotewotICAgIGlmICh0
aGlzICE9ICZvdGhlcikgewotICAgICAgICB1bnJlZkRlZmF1bHREaXNwbGF5SWZOZWVkZWQobV9k
aXNwbGF5KTsKLSAgICAgICAgbV9kaXNwbGF5ID0gc3RkOjpleGNoYW5nZShvdGhlci5tX2Rpc3Bs
YXksIG51bGxwdHIpOwotICAgIH0KLSAgICByZXR1cm4gKnRoaXM7Ci19Ci0KLVNjb3BlZEVHTERl
ZmF1bHREaXNwbGF5OjpTY29wZWRFR0xEZWZhdWx0RGlzcGxheSh2b2lkKiBkaXNwbGF5KQotICAg
IDogbV9kaXNwbGF5KGRpc3BsYXkpCi17Ci0gICAgcmVmRGVmYXVsdERpc3BsYXkobV9kaXNwbGF5
KTsKLX0KLQotU2NvcGVkRUdMRGVmYXVsdERpc3BsYXk6On5TY29wZWRFR0xEZWZhdWx0RGlzcGxh
eSgpCi17Ci0gICAgdW5yZWZEZWZhdWx0RGlzcGxheUlmTmVlZGVkKG1fZGlzcGxheSk7Ci19Ci0K
LXZvaWQgU2NvcGVkRUdMRGVmYXVsdERpc3BsYXk6OnJlbGVhc2VBbGxSZXNvdXJjZXNJZlVudXNl
ZCgpCi17Ci0gICAgaWYgKGRlZmF1bHREaXNwbGF5UmVmQ291bnQpCi0gICAgICAgIHJldHVybjsK
LSAgICBpZiAoZGVmYXVsdERpc3BsYXkgPT0gbnVsbHB0cikKLSAgICAgICAgcmV0dXJuOwotICAg
IGJvb2wgcmVzdWx0ID0gRUdMX1Rlcm1pbmF0ZShkZWZhdWx0RGlzcGxheSk7Ci0gICAgQVNTRVJU
X1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7Ci0gICAgcmVzdWx0ID0gRUdMX1JlbGVhc2VUaHJlYWQo
KTsKLSAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKLSAgICBkZWZhdWx0RGlzcGxh
eSA9IG51bGxwdHI7Ci19Ci0KLX0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFRUdMVXRpbGl0
aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0Nv
bnRleHRHTEFOR0xFRUdMVXRpbGl0aWVzLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDk0NDIwNTIwYmRlOGJhMmVlODVkNjg4MmY2NThkNDU4MmRiY2VlYTAuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRUVHTFV0aWxpdGllcy5oCisrKyAv
ZGV2L251bGwKQEAgLTEsNjIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQkdMKSAmJiBVU0Uo
QU5HTEUpCi0KLSNpbmNsdWRlIDxhbGdvcml0aG0+Ci0jaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxl
Lmg+Ci0KLS8vIEN1cnJlbnRseSB0aGlzIG5vdCB1c2luZyBBTkdMRSBoZWFkZXJzIHNpbmNlIHRo
aXMgaXMgZXhwb3J0ZWQgaGVhZGVyIGFuZCB3ZSBkbyBub3QgZXhwb3J0IEFOR0xFIGhlYWRlcnMu
Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgU2NvcGVkRUdMRGVmYXVsdERpc3BsYXkg
ewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFNjb3BlZEVHTERlZmF1bHREaXNwbGF5KTsKLXB1
YmxpYzoKLSAgICBzdGF0aWMgU2NvcGVkRUdMRGVmYXVsdERpc3BsYXkgYWRvcHRJbml0aWFsaXpl
ZERpc3BsYXkodm9pZCogZGlzcGxheSkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChkaXNwbGF5ICE9
IG51bGxwdHIpOwotICAgICAgICByZXR1cm4gU2NvcGVkRUdMRGVmYXVsdERpc3BsYXkoZGlzcGxh
eSk7Ci0gICAgfQotICAgIFNjb3BlZEVHTERlZmF1bHREaXNwbGF5KCkgPSBkZWZhdWx0OwotICAg
IFNjb3BlZEVHTERlZmF1bHREaXNwbGF5KFNjb3BlZEVHTERlZmF1bHREaXNwbGF5JiYgb3RoZXIp
Ci0gICAgICAgIDogbV9kaXNwbGF5KHN0ZDo6ZXhjaGFuZ2Uob3RoZXIubV9kaXNwbGF5LCBudWxs
cHRyKSkKLSAgICB7Ci0gICAgfQotICAgIH5TY29wZWRFR0xEZWZhdWx0RGlzcGxheSgpOwotICAg
IFNjb3BlZEVHTERlZmF1bHREaXNwbGF5JiBvcGVyYXRvcj0oU2NvcGVkRUdMRGVmYXVsdERpc3Bs
YXkmJik7Ci0gICAgb3BlcmF0b3Igdm9pZCooKSBjb25zdCB7IHJldHVybiBtX2Rpc3BsYXk7IH0K
LSAgICBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gbV9kaXNwbGF5ICE9IG51bGxwdHI7
IH0KLSAgICBzdGF0aWMgdm9pZCByZWxlYXNlQWxsUmVzb3VyY2VzSWZVbnVzZWQoKTsKLXByaXZh
dGU6Ci0gICAgU2NvcGVkRUdMRGVmYXVsdERpc3BsYXkodm9pZCopOwotICAgIHZvaWQqIG1fZGlz
cGxheSB7IG51bGxwdHIgfTsKLX07Ci0KLX0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFVXRp
bGl0aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGlj
c0NvbnRleHRHTEFOR0xFVXRpbGl0aWVzLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGRjNzlmMWUyNDIzZjUyMTNiMDMwMWM4YzgwYTU0ZjZiY2M0NDllOTIuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRVV0aWxpdGllcy5oCisrKyAvZGV2
L251bGwKQEAgLTEsMjQ1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
LSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJHTCkgJiYgVVNFKEFO
R0xFKQotCi0jaW5jbHVkZSAiQU5HTEVIZWFkZXJzLmgiCi0jaW5jbHVkZSAiR3JhcGhpY3NUeXBl
c0dMLmgiCi0jaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKLQotY2xhc3MgU2NvcGVkUmVzdG9yZVRleHR1cmVCaW5kaW5nIHsKLSAgICBXVEZfTUFLRV9O
T05DT1BZQUJMRShTY29wZWRSZXN0b3JlVGV4dHVyZUJpbmRpbmcpOwotcHVibGljOgotICAgIFNj
b3BlZFJlc3RvcmVUZXh0dXJlQmluZGluZyhHTGVudW0gYmluZGluZ1BvaW50UXVlcnksIEdMZW51
bSBiaW5kaW5nUG9pbnQsIGJvb2wgY29uZGl0aW9uID0gdHJ1ZSkKLSAgICB7Ci0gICAgICAgIEFT
U0VSVChiaW5kaW5nUG9pbnQgIT0gc3RhdGljX2Nhc3Q8R0xlbnVtPigwdSkpOwotICAgICAgICBp
ZiAoY29uZGl0aW9uKSB7Ci0gICAgICAgICAgICBtX2JpbmRpbmdQb2ludCA9IGJpbmRpbmdQb2lu
dDsKLSAgICAgICAgICAgIGdsOjpHZXRJbnRlZ2VydihiaW5kaW5nUG9pbnRRdWVyeSwgcmVpbnRl
cnByZXRfY2FzdDxHTGludCo+KCZtX2JpbmRpbmdWYWx1ZSkpOwotICAgICAgICB9Ci0gICAgfQot
Ci0gICAgflNjb3BlZFJlc3RvcmVUZXh0dXJlQmluZGluZygpCi0gICAgewotICAgICAgICBpZiAo
bV9iaW5kaW5nUG9pbnQpCi0gICAgICAgICAgICBnbDo6QmluZFRleHR1cmUobV9iaW5kaW5nUG9p
bnQsIG1fYmluZGluZ1ZhbHVlKTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgR0xlbnVtIG1fYmlu
ZGluZ1BvaW50IHsgMCB9OwotICAgIEdMdWludCBtX2JpbmRpbmdWYWx1ZSB7IDB1IH07Ci19Owot
Ci0KLWNsYXNzIFNjb3BlZEJ1ZmZlckJpbmRpbmcgewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KFNjb3BlZEJ1ZmZlckJpbmRpbmcpOwotcHVibGljOgotICAgIFNjb3BlZEJ1ZmZlckJpbmRpbmco
R0xlbnVtIGJpbmRpbmdQb2ludCwgR0x1aW50IGJpbmRpbmdWYWx1ZSwgYm9vbCBjb25kaXRpb24g
PSB0cnVlKQotICAgIHsKLSAgICAgICAgaWYgKCFjb25kaXRpb24pCi0gICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgIGdsOjpHZXRJbnRlZ2VydihxdWVyeShiaW5kaW5nUG9pbnQpLCByZWludGVy
cHJldF9jYXN0PEdMaW50Kj4oJm1fYmluZGluZ1ZhbHVlKSk7Ci0gICAgICAgIGlmIChiaW5kaW5n
VmFsdWUgPT0gbV9iaW5kaW5nVmFsdWUpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIG1f
YmluZGluZ1BvaW50ID0gYmluZGluZ1BvaW50OwotICAgICAgICBnbDo6QmluZEJ1ZmZlcihtX2Jp
bmRpbmdQb2ludCwgYmluZGluZ1ZhbHVlKTsKLSAgICB9Ci0KLSAgICB+U2NvcGVkQnVmZmVyQmlu
ZGluZygpCi0gICAgewotICAgICAgICBpZiAobV9iaW5kaW5nUG9pbnQpCi0gICAgICAgICAgICBn
bDo6QmluZEJ1ZmZlcihtX2JpbmRpbmdQb2ludCwgbV9iaW5kaW5nVmFsdWUpOwotICAgIH0KLQot
cHJpdmF0ZToKLSAgICBzdGF0aWMgY29uc3RleHByIEdMZW51bSBxdWVyeShHTGVudW0gYmluZGlu
Z1BvaW50KQotICAgIHsKLSAgICAgICAgaWYgKGJpbmRpbmdQb2ludCA9PSBHTF9QSVhFTF9QQUNL
X0JVRkZFUikKLSAgICAgICAgICAgIHJldHVybiBHTF9QSVhFTF9QQUNLX0JVRkZFUl9CSU5ESU5H
OwotICAgICAgICBBU1NFUlQoYmluZGluZ1BvaW50ID09IEdMX1BJWEVMX1VOUEFDS19CVUZGRVIp
OwotICAgICAgICByZXR1cm4gR0xfUElYRUxfVU5QQUNLX0JVRkZFUl9CSU5ESU5HOwotICAgIH0K
LSAgICBHTGludCBtX2JpbmRpbmdQb2ludCB7IDAgfTsKLSAgICBHTHVpbnQgbV9iaW5kaW5nVmFs
dWUgeyAwdSB9OwotfTsKLWNsYXNzIFNjb3BlZFJlc3RvcmVSZWFkRnJhbWVidWZmZXJCaW5kaW5n
IHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTY29wZWRSZXN0b3JlUmVhZEZyYW1lYnVmZmVy
QmluZGluZyk7Ci1wdWJsaWM6Ci0gICAgU2NvcGVkUmVzdG9yZVJlYWRGcmFtZWJ1ZmZlckJpbmRp
bmcoYm9vbCBpc0ZvcldlYkdMMiwgR0x1aW50IHJlc3RvcmVWYWx1ZSkKLSAgICAgICAgOiBtX2Zy
YW1lYnVmZmVyVGFyZ2V0KGlzRm9yV2ViR0wyID8gR0xfUkVBRF9GUkFNRUJVRkZFUiA6IEdMX0ZS
QU1FQlVGRkVSKQotICAgICAgICAsIG1fYmluZGluZ1ZhbHVlKHJlc3RvcmVWYWx1ZSkKLSAgICB7
Ci0gICAgfQotICAgIFNjb3BlZFJlc3RvcmVSZWFkRnJhbWVidWZmZXJCaW5kaW5nKGJvb2wgaXNG
b3JXZWJHTDIsIEdMdWludCByZXN0b3JlVmFsdWUsIEdMdWludCB2YWx1ZSkKLSAgICAgICAgOiBt
X2ZyYW1lYnVmZmVyVGFyZ2V0KGlzRm9yV2ViR0wyID8gR0xfUkVBRF9GUkFNRUJVRkZFUiA6IEdM
X0ZSQU1FQlVGRkVSKQotICAgICAgICAsIG1fYmluZGluZ1ZhbHVlKHJlc3RvcmVWYWx1ZSkKLSAg
ICB7Ci0gICAgICAgIGJpbmRGcmFtZWJ1ZmZlcih2YWx1ZSk7Ci0gICAgfQotICAgIHZvaWQgbWFy
a0JpbmRpbmdDaGFuZ2VkKCkKLSAgICB7Ci0gICAgICAgIG1fYmluZGluZ0NoYW5nZWQgPSB0cnVl
OwotICAgIH0KLSAgICB2b2lkIGJpbmRGcmFtZWJ1ZmZlcihHTHVpbnQgYmluZGluZ1ZhbHVlKQot
ICAgIHsKLSAgICAgICAgaWYgKCFtX2JpbmRpbmdDaGFuZ2VkICYmIG1fYmluZGluZ1ZhbHVlID09
IGJpbmRpbmdWYWx1ZSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgZ2w6OkJpbmRGcmFt
ZWJ1ZmZlcihtX2ZyYW1lYnVmZmVyVGFyZ2V0LCBiaW5kaW5nVmFsdWUpOwotICAgICAgICBtX2Jp
bmRpbmdDaGFuZ2VkID0gbV9iaW5kaW5nVmFsdWUgIT0gYmluZGluZ1ZhbHVlOwotICAgIH0KLSAg
ICBHTHVpbnQgZnJhbWVidWZmZXJUYXJnZXQoKSBjb25zdCB7IHJldHVybiBtX2ZyYW1lYnVmZmVy
VGFyZ2V0OyB9Ci0gICAgflNjb3BlZFJlc3RvcmVSZWFkRnJhbWVidWZmZXJCaW5kaW5nKCkKLSAg
ICB7Ci0gICAgICAgIGlmIChtX2JpbmRpbmdDaGFuZ2VkKQotICAgICAgICAgICAgZ2w6OkJpbmRG
cmFtZWJ1ZmZlcihtX2ZyYW1lYnVmZmVyVGFyZ2V0LCBtX2JpbmRpbmdWYWx1ZSk7Ci0gICAgfQot
cHJpdmF0ZToKLSAgICBjb25zdCBHTGVudW0gbV9mcmFtZWJ1ZmZlclRhcmdldDsKLSAgICBHTHVp
bnQgbV9iaW5kaW5nVmFsdWUgeyAwdSB9OwotICAgIGJvb2wgbV9iaW5kaW5nQ2hhbmdlZCB7IGZh
bHNlIH07Ci19OwotCi1jbGFzcyBTY29wZWRQaXhlbFN0b3JhZ2VNb2RlIHsKLSAgICBXVEZfTUFL
RV9OT05DT1BZQUJMRShTY29wZWRQaXhlbFN0b3JhZ2VNb2RlKTsKLXB1YmxpYzoKLSAgICBleHBs
aWNpdCBTY29wZWRQaXhlbFN0b3JhZ2VNb2RlKEdMZW51bSBuYW1lLCBib29sIGNvbmRpdGlvbiA9
IHRydWUpCi0gICAgICAgIDogbV9uYW1lKGNvbmRpdGlvbiA/IG5hbWUgOiAwKQotICAgIHsKLSAg
ICAgICAgaWYgKG1fbmFtZSkKLSAgICAgICAgICAgIGdsOjpHZXRJbnRlZ2VydihtX25hbWUsICZt
X29yaWdpbmFsVmFsdWUpOwotICAgIH0KLSAgICBTY29wZWRQaXhlbFN0b3JhZ2VNb2RlKEdMZW51
bSBuYW1lLCBHTGludCB2YWx1ZSwgYm9vbCBjb25kaXRpb24gPSB0cnVlKQotICAgICAgICA6IG1f
bmFtZShjb25kaXRpb24gPyBuYW1lIDogMCkKLSAgICB7Ci0gICAgICAgIGlmIChtX25hbWUpIHsK
LSAgICAgICAgICAgIGdsOjpHZXRJbnRlZ2VydihtX25hbWUsICZtX29yaWdpbmFsVmFsdWUpOwot
ICAgICAgICAgICAgcGl4ZWxTdG9yZSh2YWx1ZSk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgflNj
b3BlZFBpeGVsU3RvcmFnZU1vZGUoKQotICAgIHsKLSAgICAgICAgaWYgKG1fbmFtZSAmJiBtX3Zh
bHVlQ2hhbmdlZCkKLSAgICAgICAgICAgIGdsOjpQaXhlbFN0b3JlaShtX25hbWUsIG1fb3JpZ2lu
YWxWYWx1ZSk7Ci0gICAgfQotICAgIHZvaWQgcGl4ZWxTdG9yZShHTGludCB2YWx1ZSkKLSAgICB7
Ci0gICAgICAgIEFTU0VSVChtX25hbWUpOwotICAgICAgICBpZiAoIW1fdmFsdWVDaGFuZ2VkICYm
IG1fb3JpZ2luYWxWYWx1ZSA9PSB2YWx1ZSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
Z2w6OlBpeGVsU3RvcmVpKG1fbmFtZSwgdmFsdWUpOwotICAgICAgICBtX3ZhbHVlQ2hhbmdlZCA9
IG1fb3JpZ2luYWxWYWx1ZSAhPSB2YWx1ZTsKLSAgICB9Ci0gICAgb3BlcmF0b3IgR0xpbnQoKSBj
b25zdAotICAgIHsKLSAgICAgICAgQVNTRVJUKG1fbmFtZSAmJiAhbV92YWx1ZUNoYW5nZWQpOwot
ICAgICAgICByZXR1cm4gbV9vcmlnaW5hbFZhbHVlOwotICAgIH0KLXByaXZhdGU6Ci0gICAgY29u
c3QgR0xlbnVtIG1fbmFtZTsKLSAgICBib29sIG1fdmFsdWVDaGFuZ2VkIHsgZmFsc2UgfTsKLSAg
ICBHTGludCBtX29yaWdpbmFsVmFsdWUgeyAwIH07Ci19OwotCi1jbGFzcyBTY29wZWRUZXh0dXJl
IHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTY29wZWRUZXh0dXJlKTsKLXB1YmxpYzoKLSAg
ICBTY29wZWRUZXh0dXJlKCkKLSAgICB7Ci0gICAgICAgIGdsOjpHZW5UZXh0dXJlcygxLCAmbV9v
YmplY3QpOwotICAgIH0KLSAgICB+U2NvcGVkVGV4dHVyZSgpCi0gICAgewotICAgICAgICBnbDo6
RGVsZXRlVGV4dHVyZXMoMSwgJm1fb2JqZWN0KTsKLSAgICB9Ci0gICAgb3BlcmF0b3IgR0x1aW50
KCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX29iamVjdDsKLSAgICB9Ci1wcml2YXRl
OgotICAgIEdMdWludCBtX29iamVjdCB7IDB1IH07Ci19OwotCi1jbGFzcyBTY29wZWRGcmFtZWJ1
ZmZlciB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU2NvcGVkRnJhbWVidWZmZXIpOwotcHVi
bGljOgotICAgIFNjb3BlZEZyYW1lYnVmZmVyKCkKLSAgICB7Ci0gICAgICAgIGdsOjpHZW5GcmFt
ZWJ1ZmZlcnMoMSwgJm1fb2JqZWN0KTsKLSAgICB9Ci0gICAgflNjb3BlZEZyYW1lYnVmZmVyKCkK
LSAgICB7Ci0gICAgICAgIGdsOjpEZWxldGVGcmFtZWJ1ZmZlcnMoMSwgJm1fb2JqZWN0KTsKLSAg
ICB9Ci0gICAgb3BlcmF0b3IgR0x1aW50KCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBt
X29iamVjdDsKLSAgICB9Ci1wcml2YXRlOgotICAgIEdMdWludCBtX29iamVjdCB7IDAgfTsKLX07
Ci0KLWNsYXNzIFNjb3BlZEdMRmVuY2UgewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFNjb3Bl
ZEdMRmVuY2UpOwotcHVibGljOgotICAgIFNjb3BlZEdMRmVuY2UoKSA9IGRlZmF1bHQ7Ci0gICAg
U2NvcGVkR0xGZW5jZShTY29wZWRHTEZlbmNlJiYgb3RoZXIpCi0gICAgICAgIDogbV9vYmplY3Qo
c3RkOjpleGNoYW5nZShvdGhlci5tX29iamVjdCwgeyB9KSkKLSAgICB7Ci0gICAgfQotICAgIH5T
Y29wZWRHTEZlbmNlKCkgeyByZXNldCgpOyB9Ci0gICAgU2NvcGVkR0xGZW5jZSYgb3BlcmF0b3I9
KFNjb3BlZEdMRmVuY2UmJiBvdGhlcikKLSAgICB7Ci0gICAgICAgIGlmICh0aGlzICE9ICZvdGhl
cikgewotICAgICAgICAgICAgcmVzZXQoKTsKLSAgICAgICAgICAgIG1fb2JqZWN0ID0gc3RkOjpl
eGNoYW5nZShvdGhlci5tX29iamVjdCwgeyB9KTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4g
KnRoaXM7Ci0gICAgfQotICAgIHZvaWQgcmVzZXQoKQotICAgIHsKLSAgICAgICAgaWYgKG1fb2Jq
ZWN0KSB7Ci0gICAgICAgICAgICBnbDo6RGVsZXRlU3luYyhtX29iamVjdCk7Ci0gICAgICAgICAg
ICBtX29iamVjdCA9IHsgfTsKLSAgICAgICAgfQotICAgIH0KLSAgICB2b2lkIGFiYW5kb24oKSB7
IG1fb2JqZWN0ID0geyB9OyB9Ci0gICAgdm9pZCBmZW5jZVN5bmMoKQotICAgIHsKLSAgICAgICAg
cmVzZXQoKTsKLSAgICAgICAgbV9vYmplY3QgPSBnbDo6RmVuY2VTeW5jKEdMX1NZTkNfR1BVX0NP
TU1BTkRTX0NPTVBMRVRFLCAwKTsKLSAgICB9Ci0gICAgb3BlcmF0b3IgR0xzeW5jKCkgY29uc3Qg
eyByZXR1cm4gbV9vYmplY3Q7IH0KLSAgICBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4g
bV9vYmplY3Q7IH0KLXByaXZhdGU6Ci0gICAgR0xzeW5jIG1fb2JqZWN0IHsgfTsKLX07Ci0KLX0K
LQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbQppbmRl
eCBmOTBmZjFmNmFkM2JjMTU4MGRhYmNlMjc0ZDUwN2JkMDliMzJhZTFhLi42NjdmMDEzNGIwMzNk
YjU4MWQyNTZhMGYzODllNTQwN2NjNDhiNWVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4
dEdMT3BlbkdMQ29jb2EubW0KQEAgLTI4LDEwICsyOCwxMCBAQAogI2lmIEVOQUJMRShXRUJHTCkK
ICNpbXBvcnQgIkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgiCiAKKyNpbXBvcnQgIkFOR0xFVXRp
bGl0aWVzLmgiCiAjaW1wb3J0ICJBTkdMRVV0aWxpdGllc0NvY29hLmgiCiAjaW1wb3J0ICJDVlV0
aWxpdGllcy5oIgogI2ltcG9ydCAiRXh0ZW5zaW9uc0dMQU5HTEUuaCIKLSNpbXBvcnQgIkdyYXBo
aWNzQ29udGV4dEdMQU5HTEVVdGlsaXRpZXMuaCIKICNpbXBvcnQgIkdyYXBoaWNzQ29udGV4dEdM
SU9TdXJmYWNlU3dhcENoYWluLmgiCiAjaW1wb3J0ICJHcmFwaGljc0NvbnRleHRHTE9wZW5HTE1h
bmFnZXIuaCIKICNpbXBvcnQgIkxvZ2dpbmcuaCIKQEAgLTYwLDggKzYwLDEwIEBAIFdURl9XRUFL
X0xJTktfRk9SQ0VfSU1QT1JUKEVHTF9Jbml0aWFsaXplKTsKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1zdGF0aWMgYm9vbCBpc0FOR0xFQXZhaWxhYmxlKCkKK2Jvb2wgcGxhdGZvcm1Jc0FOR0xF
QXZhaWxhYmxlKCkKIHsKKyAgICAvLyBUaGUgQU5HTEUgaXMgd2VhayBsaW5rZWQgaW4gZnVsbCwg
YW5kIHRoZSBFR0xfSW5pdGlhbGl6ZSBpcyBleHBsaWNpdGx5IHdlYWsgbGlua2VkIGFib3ZlCisg
ICAgLy8gc28gdGhhdCB3ZSBjYW4gZGV0ZWN0IHRoZSBjYXNlIHdoZXJlIEFOR0xFIGlzIG5vdCBw
cmVzZW50LgogICAgIHJldHVybiAhIUVHTF9Jbml0aWFsaXplOwogfQogCkBAIC0xMTksMTEgKzEy
MSwxMSBAQCBzdGF0aWMgYm9vbCBwbGF0Zm9ybVN1cHBvcnRzTWV0YWwoYm9vbCBpc1dlYkdMMikK
ICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXN0YXRpYyBTY29wZWRFR0xEZWZhdWx0RGlzcGxheSBp
bml0aWFsaXplRUdMRGlzcGxheShjb25zdCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0
dHJzKQorc3RhdGljIEVHTERpc3BsYXkgaW5pdGlhbGl6ZUVHTERpc3BsYXkoY29uc3QgR3JhcGhp
Y3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRycykKIHsKLSAgICBpZiAoIWlzQU5HTEVBdmFpbGFi
bGUoKSkgeworICAgIGlmICghcGxhdGZvcm1Jc0FOR0xFQXZhaWxhYmxlKCkpIHsKICAgICAgICAg
V1RGTG9nQWx3YXlzKCJGYWlsZWQgdG8gbG9hZCBBTkdMRSBzaGFyZWQgbGlicmFyeS4iKTsKLSAg
ICAgICAgcmV0dXJuIHsgfTsKKyAgICAgICAgcmV0dXJuIEVHTF9OT19ESVNQTEFZOwogICAgIH0K
IAogICAgIEVHTGludCBtYWpvclZlcnNpb24gPSAwOwpAQCAtMTY2LDcgKzE2OCw3IEBAIHN0YXRp
YyBTY29wZWRFR0xEZWZhdWx0RGlzcGxheSBpbml0aWFsaXplRUdMRGlzcGxheShjb25zdCBHcmFw
aGljc0NvbnRleHRHTEF0dHJpCiAKICAgICBpZiAoRUdMX0luaXRpYWxpemUoZGlzcGxheSwgJm1h
am9yVmVyc2lvbiwgJm1pbm9yVmVyc2lvbikgPT0gRUdMX0ZBTFNFKSB7CiAgICAgICAgIExPRyhX
ZWJHTCwgIkVHTERpc3BsYXkgSW5pdGlhbGl6YXRpb24gZmFpbGVkLiIpOwotICAgICAgICByZXR1
cm4geyB9OworICAgICAgICByZXR1cm4gRUdMX05PX0RJU1BMQVk7CiAgICAgfQogICAgIExPRyhX
ZWJHTCwgIkFOR0xFIGluaXRpYWxpc2VkIE1ham9yOiAlZCBNaW5vcjogJWQiLCBtYWpvclZlcnNp
b24sIG1pbm9yVmVyc2lvbik7CiAgICAgaWYgKHNob3VsZEluaXRpYWxpemVXaXRoVm9sYXRpbGVD
b250ZXh0U3VwcG9ydCkgewpAQCAtMTc1LDcgKzE3Nyw3IEBAIHN0YXRpYyBTY29wZWRFR0xEZWZh
dWx0RGlzcGxheSBpbml0aWFsaXplRUdMRGlzcGxheShjb25zdCBHcmFwaGljc0NvbnRleHRHTEF0
dHJpCiAgICAgICAgIEFTU0VSVChjaGVja1ZvbGF0aWxlQ29udGV4dFN1cHBvcnRJZkRldmljZUV4
aXN0cyhkaXNwbGF5LCAiRUdMX0FOR0xFX3BsYXRmb3JtX2RldmljZV9jb250ZXh0X3ZvbGF0aWxl
X2VhZ2wiLCAiRUdMX0FOR0xFX2RldmljZV9lYWdsIiwgRUdMX0VBR0xfQ09OVEVYVF9BTkdMRSkp
OwogICAgICAgICBBU1NFUlQoY2hlY2tWb2xhdGlsZUNvbnRleHRTdXBwb3J0SWZEZXZpY2VFeGlz
dHMoZGlzcGxheSwgIkVHTF9BTkdMRV9wbGF0Zm9ybV9kZXZpY2VfY29udGV4dF92b2xhdGlsZV9j
Z2wiLCAiRUdMX0FOR0xFX2RldmljZV9jZ2wiLCBFR0xfQ0dMX0NPTlRFWFRfQU5HTEUpKTsKICAg
ICB9Ci0gICAgcmV0dXJuIFNjb3BlZEVHTERlZmF1bHREaXNwbGF5OjphZG9wdEluaXRpYWxpemVk
RGlzcGxheShkaXNwbGF5KTsKKyAgICByZXR1cm4gZGlzcGxheTsKIH0KIAogc3RhdGljIGNvbnN0
IHVuc2lnbmVkIHN0YXR1c0NoZWNrVGhyZXNob2xkID0gNTsKQEAgLTUwOCw0NSArNTEwLDYgQEAg
Ym9vbCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6bWFrZUNvbnRleHRDdXJyZW50KCkKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi1ib29sIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpyZWxlYXNlQ3VycmVudENvbnRleHQoUmVsZWFzZUJlaGF2aW9yIHJl
bGVhc2VCZWhhdmlvcikKLXsKLSAgICBpZiAoIWlzQU5HTEVBdmFpbGFibGUoKSkKLSAgICAgICAg
cmV0dXJuIHRydWU7Ci0KLSAgICAvLyBBdCB0aGUgbW9tZW50IHRoaXMgZnVuY3Rpb24gaXMgcmVs
ZXZhbnQgb25seSB3aGVuIHdlYiB0aHJlYWQgbG9jayBvd25zIHRoZSBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTCBjdXJyZW50IGNvbnRleHQuCi0gICAgQVNTRVJUKCFpc0N1cnJlbnRDb250ZXh0UHJl
ZGljdGFibGUoKSk7Ci0KLSAgICBpZiAoIUVHTF9CaW5kQVBJKEVHTF9PUEVOR0xfRVNfQVBJKSkK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChFR0xfR2V0Q3VycmVudENvbnRleHQoKSA9
PSBFR0xfTk9fQ09OVEVYVCkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICAvLyBBdCB0aGUg
dGltZSBvZiB3cml0aW5nLCBBTkdMRSBkb2VzIG5vdCBmbHVzaCBvbiBNYWtlQ3VycmVudC4gU2lu
Y2Ugd2UgYXJlCi0gICAgLy8gcG90ZW50aWFsbHkgc3dpdGNoaW5nIHRocmVhZHMsIHdlIHNob3Vs
ZCBmbHVzaC4KLSAgICAvLyBOb3RlOiBIZXJlIHdlIGFzc3VtZSBhbHNvIHRoYXQgQU5HTEUgaGFz
IG9ubHkgb25lIHBsYXRmb3JtIGNvbnRleHQgLS0gb3RoZXJ3aXNlCi0gICAgLy8gd2Ugd291bGQg
bmVlZCB0byBmbHVzaCBlYWNoIEVHTCBjb250ZXh0IHRoYXQgaGFzIGJlZW4gdXNlZC4KLSAgICBn
bDo6Rmx1c2goKTsKLQotICAgIC8vIFVuc2V0IHRoZSBFR0wgY3VycmVudCBjb250ZXh0LCBzaW5j
ZSB0aGUgbmV4dCBhY2Nlc3MgbWlnaHQgYmUgZnJvbSBhbm90aGVyIHRocmVhZCwgYW5kIHRoZQot
ICAgIC8vIGNvbnRleHQgY2Fubm90IGJlIGN1cnJlbnQgb24gbXVsdGlwbGUgdGhyZWFkcy4KLQot
ICAgIGlmIChyZWxlYXNlQmVoYXZpb3IgPT0gUmVsZWFzZUJlaGF2aW9yOjpSZWxlYXNlVGhyZWFk
UmVzb3VyY2VzKSB7Ci0gICAgICAgIC8vIENhbGxlZCB3aGVuIHdlIGRvIG5vdCBrbm93IGlmIHdl
IHdpbGwgZXZlciBzZWUgYW5vdGhlciBjYWxsIGZyb20gdGhpcyB0aHJlYWQgYWdhaW4uCi0gICAg
ICAgIC8vIFVuc2V0IHRoZSBFR0wgY3VycmVudCBjb250ZXh0IGJ5IHJlbGVhc2luZyB3aG9sZSBF
R0wgdGhyZWFkIHN0YXRlLgotICAgICAgICAvLyBUaGVvcmV0aWNhbGx5IFJlbGVhc2VUaHJlYWQg
Y2FuIHJlc2V0IHRoZSBib3VuZCBBUEksIHNvIHRoZSByZXN0IG9mIHRoZSBjb2RlIG1lbnRpb25z
IEJpbmRBUEkvUXVlcnlBUEkuCi0gICAgICAgIHJldHVybiBFR0xfUmVsZWFzZVRocmVhZCgpOwot
ICAgIH0KLSAgICAvLyBPbiBXZWJLaXQgb3duZWQgdGhyZWFkcywgV2ViS2l0IGlzIGFibGUgdG8g
Y2hvb3NlIHRoZSB0aW1lIGZvciB0aGUgRUdMIGNsZWFudXAuCi0gICAgLy8gVGhpcyBpcyB3aHkg
d2Ugb25seSB1bnNldCB0aGUgY29udGV4dC4KLSAgICAvLyBOb3RlOiBBdCB0aGUgdGltZSBvZiB3
cml0aW5nIHRoZSBFR0wgY2xlYW51cCBpcyBjaG9zZW4gdG8gYmUgbm90IGRvbmUgYXQgYWxsLgot
ICAgIEVHTERpc3BsYXkgZGlzcGxheSA9IEVHTF9HZXREaXNwbGF5KEVHTF9ERUZBVUxUX0RJU1BM
QVkpOwotICAgIGlmIChkaXNwbGF5ID09IEVHTF9OT19ESVNQTEFZKQotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgcmV0dXJuIEVHTF9NYWtlQ3VycmVudChkaXNwbGF5LCBFR0xfTk9fU1VSRkFD
RSwgRUdMX05PX1NVUkZBQ0UsIEVHTF9OT19DT05URVhUKTsKLX0KLSNlbmRpZgotCiB2b2lkIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjaGVja0dQVVN0YXR1cygpCiB7CiAgICAgaWYgKG1fZmFp
bE5leHRTdGF0dXNDaGVjaykgewpAQCAtODI3LDExICs3OTAsNiBAQCBzdGQ6Om9wdGlvbmFsPFBp
eGVsQnVmZmVyPiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZENvbXBvc2l0ZWRSZXN1bHRz
KCkKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpyZWxlYXNlQWxsUmVzb3VyY2VzSWZVbnVzZWQoKQotewotICAgIFNjb3BlZEVHTERlZmF1bHRE
aXNwbGF5OjpyZWxlYXNlQWxsUmVzb3VyY2VzSWZVbnVzZWQoKTsKLX0KLQogI2lmIEVOQUJMRShN
RURJQV9TVFJFQU0pCiBSZWZQdHI8TWVkaWFTYW1wbGU+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9NZWRpYVNhbXBsZSgpCiB7CkBAIC04NDcsNiArODA1
LDEyIEBAIFJlZlB0cjxNZWRpYVNhbXBsZT4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnBhaW50
Q29tcG9zaXRlZFJlc3VsdHNUb01lZGlhU2FtcGxlCiAgICAgcmV0dXJuIE1lZGlhU2FtcGxlQVZG
T2JqQzo6Y3JlYXRlSW1hZ2VTYW1wbGUoV1RGTW92ZSgqcGl4ZWxCdWZmZXIpLCBNZWRpYVNhbXBs
ZUFWRk9iakM6OlZpZGVvUm90YXRpb246OlVwc2lkZURvd24sIHRydWUpOwogfQogI2VuZGlmCisK
K3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnBsYXRmb3JtUmVsZWFzZVRocmVhZFJlc291
cmNlcygpCit7CisgICAgY3VycmVudENvbnRleHQgPSBudWxscHRyOworfQorCiB9CiAKICNlbmRp
ZiAvLyBFTkFCTEUoV0VCR0wpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmNwcApp
bmRleCBmOGIyMGFjNzZkMWJkZTlmM2EyODYwYWI5YTJjNDQ5N2U1YjYyN2Y0Li4wN2Q4NjQwMzNh
ZjJkNmVmYzU2NDFhNTVlYTUwYzY0OTcyYmI4NDQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRl
eHRHTE9wZW5HTC5jcHAKQEAgLTc1LDYgKzc1LDE2IEBAIEdDR0xiaXRmaWVsZCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6Z2V0QnVmZmVyc1RvQXV0b0NsZWFyKCkgY29uc3QKICAgICByZXR1cm4g
bV9idWZmZXJzVG9BdXRvQ2xlYXI7CiB9CiAKKyNpZiAhVVNFKEFOR0xFKQorYm9vbCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6cmVsZWFzZVRocmVhZFJlc291cmNlcyhSZWxlYXNlVGhyZWFkUmVz
b3VyY2VCZWhhdmlvcikKK3sKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cGxh
dGZvcm1SZWxlYXNlVGhyZWFkUmVzb3VyY2VzKCkKK3sKK30KKyNlbmRpZgorCiAjaWYgIVVTRShB
TkdMRSkKIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnRleEltYWdlMkRSZXNvdXJjZVNh
ZmUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1h
dCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NH
TGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50IHVucGFja0FsaWdubWVudCkKIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFw
aGljc0NvbnRleHRHTE9wZW5HTC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKaW5kZXggMTc3ODRlZGIxODZhYzZmMmJi
ODU1ZjAzMmJjOTg5YzQ2MjMwM2I3NS4uMjI3N2IxN2NjNzA5ODg4NzY4MjZjMDg2MmY3YTcxODM5
NzQyNWRmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKQEAgLTM3LDcgKzM3
LDYgQEAKICNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAKICNpZiBQTEFURk9STShDT0NPQSkK
LSNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRHTEFOR0xFRUdMVXRpbGl0aWVzLmgiCiAjaW5jbHVk
ZSAiSU9TdXJmYWNlLmgiCiAjZW5kaWYKIApAQCAtNDYsNyArNDUsNyBAQAogI2VuZGlmCiAKICNp
ZiBVU0UoQU5HTEUpCi0jaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0R0xBTkdMRVV0aWxpdGllcy5o
IgorI2luY2x1ZGUgIkFOR0xFVXRpbGl0aWVzLmgiCiAjZWxzZQogI2luY2x1ZGUgIkFOR0xFV2Vi
S2l0QnJpZGdlLmgiCiAjaW5jbHVkZSAiRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmgiCkBAIC0x
MTksMTcgKzExOCwxNiBAQCBwdWJsaWM6CiAjaWYgVVNFKEFOR0xFKQogICAgIHN0YXRpYyBHQ0dM
ZW51bSBkcmF3aW5nQnVmZmVyVGV4dHVyZVRhcmdldCgpOwogI2VuZGlmCi0KLSNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQotICAgIGVudW0gY2xhc3MgUmVsZWFzZUJlaGF2aW9yIHsKLSAgICAgICAg
UHJlc2VydmVUaHJlYWRSZXNvdXJjZXMsCi0gICAgICAgIFJlbGVhc2VUaHJlYWRSZXNvdXJjZXMK
KyAgICBlbnVtIGNsYXNzIFJlbGVhc2VUaHJlYWRSZXNvdXJjZUJlaGF2aW9yIHsKKyAgICAgICAg
Ly8gUmVsZWFzZXMgY3VycmVudCBjb250ZXh0IGFmdGVyIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
IGNhbGxzIGRvbmUgaW4gdGhlIHRocmVhZC4KKyAgICAgICAgUmVsZWFzZUN1cnJlbnRDb250ZXh0
LAorICAgICAgICAvLyBSZWxlYXNlcyBhbGwgdGhyZWFkIHJlc291cmNlcyBhZnRlciBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTCBjYWxscyBkb25lIGluIHRoZSB0aHJlYWQuCisgICAgICAgIFJlbGVh
c2VUaHJlYWRSZXNvdXJjZXMsCisgICAgICAgIC8vIFJlbGVhc2VzIGFsbCBnbG9iYWwgc3RhdGUu
IFNob3VsZCBiZSB1c2VkIG9ubHkgYWZ0ZXIgYWxsIGRlcGVuZGluZyBvYmplY3RzIGhhdmUKKyAg
ICAgICAgLy8gYmVlbiByZWxlYXNlZC4KKyAgICAgICAgVGVybWluYXRlQW5kUmVsZWFzZVRocmVh
ZFJlc291cmNlcwogICAgIH07Ci0gICAgc3RhdGljIGJvb2wgcmVsZWFzZUN1cnJlbnRDb250ZXh0
KFJlbGVhc2VCZWhhdmlvcik7Ci0jZW5kaWYKLSNpZiBQTEFURk9STShDT0NPQSkKLSAgICBzdGF0
aWMgdm9pZCByZWxlYXNlQWxsUmVzb3VyY2VzSWZVbnVzZWQoKTsKLSNlbmRpZgorICAgIHN0YXRp
YyBib29sIHJlbGVhc2VUaHJlYWRSZXNvdXJjZXMoUmVsZWFzZVRocmVhZFJlc291cmNlQmVoYXZp
b3IpOwogCiAgICAgLy8gV2l0aCBtdWx0aXNhbXBsaW5nIG9uLCBibGl0IGZyb20gbXVsdGlzYW1w
bGVGQk8gdG8gcmVndWxhciBGQk8uCiAgICAgdm9pZCBwcmVwYXJlVGV4dHVyZSgpOwpAQCAtNTgz
LDEyICs1ODEsMTUgQEAgcHJpdmF0ZToKICAgICAvLyBSZXR1cm5zIGZhbHNlIGlmIGNvbnRleHQg
c2hvdWxkIGJlIGxvc3QgZHVlIHRvIHRpbWVvdXQuCiAgICAgYm9vbCB3YWl0QW5kVXBkYXRlT2xk
ZXN0RnJhbWUoKSBXQVJOX1VOVVNFRF9SRVRVUk47CiAjZW5kaWYKKyAgICAvLyBQbGF0Zm9ybSBz
cGVjaWZpYyBiZWhhdmlvciBmb3IgcmVsZWFzZVJlc291cmNlcygpOworICAgIHN0YXRpYyB2b2lk
IHBsYXRmb3JtUmVsZWFzZVRocmVhZFJlc291cmNlcygpOworCiAKICNpZiBQTEFURk9STShDT0NP
QSkKICAgICBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbiogbV9zd2FwQ2hhaW4g
eyBudWxscHRyIH07CiAgICAgLy8gVE9ETzogdGhpcyBzaG91bGQgYmUgcmVtb3ZlZCBvbmNlIHRo
ZSBjb250ZXh0IGRyYXdzIHRvIGEgaW1hZ2UgYnVmZmVyLiBTZWUgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIxODE3OSAuCiAgICAgUmV0YWluUHRyPFdlYkdMTGF5ZXI+
IG1fd2ViR0xMYXllcjsKLSAgICBTY29wZWRFR0xEZWZhdWx0RGlzcGxheSBtX2Rpc3BsYXlPYmo7
CisgICAgRUdMRGlzcGxheSBtX2Rpc3BsYXlPYmogeyBudWxscHRyIH07CiAgICAgUGxhdGZvcm1H
cmFwaGljc0NvbnRleHRHTCBtX2NvbnRleHRPYmogeyBudWxscHRyIH07CiAgICAgUGxhdGZvcm1H
cmFwaGljc0NvbnRleHRHTENvbmZpZyBtX2NvbmZpZ09iaiB7IG51bGxwdHIgfTsKICNlbmRpZiAv
LyBQTEFURk9STShDT0NPQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lv
cy93YWsvV2ViQ29yZVRocmVhZC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsv
V2ViQ29yZVRocmVhZC5tbQppbmRleCAwMDI2NjRlM2UxNjY5ZmYzMjhkYjliOTUyOTFhODhiNTA0
MTc5YzM4Li45NTQ0YjUxYzI3OGRmNTY5ZWE0YWIwYmZlZjdlZjc0NGFjNTJjNzM1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dlYkNvcmVUaHJlYWQubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkLm1tCkBAIC03
MCwxNyArNzAsMjAgQEAgbmFtZXNwYWNlIHsKIC8vIGFzIGFueSBjbGllbnQgdGhyZWFkIHRoYXQg
Y2FsbHMgaW50byBXZWJLaXQuCiB2b2lkIFJlbGVhc2VXZWJUaHJlYWRHbG9iYWxTdGF0ZSgpCiB7
Ci0gICAgLy8gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wgY3VycmVudCBjb250ZXh0IGlzIG93bmVk
IGJ5IHRoZSB3ZWIgdGhyZWFkIGxvY2suIFJlbGVhc2UgdGhlIGNvbnRleHQKKyAgICAvLyBBTkdM
RSBtYWludGFpbnMgdGhyZWFkIGdsb2JhbCBzdGF0ZSBmb3IgaXRzIGN1cnJlbnQgY29udGV4dC4K
KyAgICAvLyBUaGlzIGlzIGNvbmNlcHR1YWxseSBvd25lZCBieSB0aGUgd2ViIHRocmVhZCBsb2Nr
LiBSZWxlYXNlIHRoZSBjb250ZXh0CiAgICAgLy8gYmVmb3JlIHRoZSBsb2NrIGlzIHJlbGVhc2Vk
LgogCiAgICAgLy8gSW4gc2luZ2xlLXRocmVhZGVkIGVudmlyb25tZW50cyB3ZSBkbyBub3QgbmVl
ZCB0byB1bnNldCB0aGUgY29udGV4dCwgYXMgdGhlcmUgc2hvdWxkIG5vdCBiZSBhY2Nlc3MgZnJv
bQogICAgIC8vIG11bHRpcGxlIHRocmVhZHMuCiAgICAgQVNTRVJUKFdlYlRocmVhZElzRW5hYmxl
ZCgpKTsKLSAgICB1c2luZyBSZWxlYXNlQmVoYXZpb3IgPSBXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6UmVsZWFzZUJlaGF2aW9yOwotICAgIC8vIEZvciBub24td2ViIHRocmVhZHMs
IHdlIGRvbid0IGtub3cgaWYgd2UgZXZlciBzZWUgYW5vdGhlciBjYWxsIGZyb20gdGhlIHRocmVh
ZC4KLSAgICBSZWxlYXNlQmVoYXZpb3IgcmVsZWFzZUJlaGF2aW9yID0KLSAgICAgICAgV2ViVGhy
ZWFkSXNDdXJyZW50KCkgPyBSZWxlYXNlQmVoYXZpb3I6OlByZXNlcnZlVGhyZWFkUmVzb3VyY2Vz
IDogUmVsZWFzZUJlaGF2aW9yOjpSZWxlYXNlVGhyZWFkUmVzb3VyY2VzOwotICAgIFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWxlYXNlQ3VycmVudENvbnRleHQocmVsZWFzZUJl
aGF2aW9yKTsKKyAgICB1c2luZyBSZWxlYXNlVGhyZWFkUmVzb3VyY2VCZWhhdmlvciA9IFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpSZWxlYXNlVGhyZWFkUmVzb3VyY2VCZWhhdmlv
cjsKKyAgICAvLyBGb3Igd2ViIHRocmVhZCwganVzdCByZWxlYXNlIHRoZSBjb250ZXh0IGFzIHdl
IGtub3cgd2Ugd2lsbCBzZWUgY2FsbHMgdG8gaXQgYWdhaW4uCisgICAgLy8gRm9yIG5vbi13ZWIg
dGhyZWFkcywgZS5nLiB0aGlyZC1wYXJ0eSBjbGllbnQgdGhyZWFkcywgd2UgZG9uJ3Qga25vdyBp
ZiB3ZSBldmVyIHNlZSBhbm90aGVyIGNhbGwgZnJvbSB0aGUKKyAgICAvLyB0aHJlYWQsIHNvIHdl
IGFsc28gcmVsZWFzZSB0aGUgdGhyZWFkIHJlc291cmNlcy4KKyAgICBSZWxlYXNlVGhyZWFkUmVz
b3VyY2VCZWhhdmlvciByZWxlYXNlQmVoYXZpb3IgPQorICAgICAgICBXZWJUaHJlYWRJc0N1cnJl
bnQoKSA/IFJlbGVhc2VUaHJlYWRSZXNvdXJjZUJlaGF2aW9yOjpSZWxlYXNlQ3VycmVudENvbnRl
eHQgOiBSZWxlYXNlVGhyZWFkUmVzb3VyY2VCZWhhdmlvcjo6UmVsZWFzZVRocmVhZFJlc291cmNl
czsKKyAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVsZWFzZVRocmVhZFJl
c291cmNlcyhyZWxlYXNlQmVoYXZpb3IpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvU2NvcGVkV2ViR0xSZW5kZXJpbmdSZXNvdXJjZXNSZXF1
ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9TY29wZWRXZWJHTFJl
bmRlcmluZ1Jlc291cmNlc1JlcXVlc3QuY3BwCmluZGV4IDBmNzVkODI1NDgwMzY1NDk4NWZlMDU4
MTRlZTNiZDEzNGU0ODFhZTYuLjMyNmIwN2YyZWJkZWVhMDdjYTUyZTY3NmMwMjFkMjhlYjc4ZjI3
YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9TY29wZWRX
ZWJHTFJlbmRlcmluZ1Jlc291cmNlc1JlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9TY29wZWRXZWJHTFJlbmRlcmluZ1Jlc291cmNlc1JlcXVlc3QuY3Bw
CkBAIC0yNiwyMCArMjYsMzggQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJTY29w
ZWRXZWJHTFJlbmRlcmluZ1Jlc291cmNlc1JlcXVlc3QuaCIKIAorI2lmIEVOQUJMRShHUFVfUFJP
Q0VTUykgJiYgRU5BQkxFKFdFQkdMKQorCisjaW5jbHVkZSAiUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0wuaCIKKyNpbmNsdWRlICJTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlLmgiCisjaW5jbHVkZSA8
V2ViQ29yZS9HcmFwaGljc0NvbnRleHRHTC5oPgorI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+Cisj
aW5jbHVkZSA8d3RmL1NlY29uZHMuaD4KKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIHN0ZDo6YXRv
bWljPHVuc2lnbmVkPiBTY29wZWRXZWJHTFJlbmRlcmluZ1Jlc291cmNlc1JlcXVlc3Q6OnNfcmVx
dWVzdHM7Ci0KLSNpZiAhUExBVEZPUk0oQ09DT0EpCitzdGF0aWMgY29uc3RleHByIFNlY29uZHMg
ZnJlZVdlYkdMUmVuZGVyaW5nUmVzb3VyY2VzVGltZW91dCA9IDFfczsKK3N0YXRpYyBib29sIGRp
ZFNjaGVkdWxlRnJlZVdlYkdMUmVuZGVyaW5nUmVzb3VyY2VzOwogCiB2b2lkIFNjb3BlZFdlYkdM
UmVuZGVyaW5nUmVzb3VyY2VzUmVxdWVzdDo6c2NoZWR1bGVGcmVlV2ViR0xSZW5kZXJpbmdSZXNv
dXJjZXMoKQogeworICAgIGlmIChkaWRTY2hlZHVsZUZyZWVXZWJHTFJlbmRlcmluZ1Jlc291cmNl
cykKKyAgICAgICAgcmV0dXJuOworICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaEFmdGVyKGZy
ZWVXZWJHTFJlbmRlcmluZ1Jlc291cmNlc1RpbWVvdXQsIGZyZWVXZWJHTFJlbmRlcmluZ1Jlc291
cmNlcyk7CisgICAgZGlkU2NoZWR1bGVGcmVlV2ViR0xSZW5kZXJpbmdSZXNvdXJjZXMgPSB0cnVl
OwogfQogCiB2b2lkIFNjb3BlZFdlYkdMUmVuZGVyaW5nUmVzb3VyY2VzUmVxdWVzdDo6ZnJlZVdl
YkdMUmVuZGVyaW5nUmVzb3VyY2VzKCkKIHsKKyAgICBkaWRTY2hlZHVsZUZyZWVXZWJHTFJlbmRl
cmluZ1Jlc291cmNlcyA9IGZhbHNlOworICAgIGlmIChzX3JlcXVlc3RzKQorICAgICAgICByZXR1
cm47CisgICAgcmVtb3RlR3JhcGhpY3NDb250ZXh0R0xTdHJlYW1Xb3JrUXVldWUoKS5kaXNwYXRj
aChbXSB7CisgICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWxlYXNl
VGhyZWFkUmVzb3VyY2VzKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpSZWxlYXNl
VGhyZWFkUmVzb3VyY2VCZWhhdmlvcjo6VGVybWluYXRlQW5kUmVsZWFzZVRocmVhZFJlc291cmNl
cyk7CisgICAgfSk7CiB9CiAKLSNlbmRpZgotCiB9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1Njb3BlZFdlYkdMUmVuZGVyaW5nUmVzb3Vy
Y2VzUmVxdWVzdC5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1Njb3BlZFdl
YkdMUmVuZGVyaW5nUmVzb3VyY2VzUmVxdWVzdC5oCmluZGV4IGMwZWQ0ZWVkM2NlOWQ3NDkxNjQy
YzQ2MTYzMWIwMTNjMTE3ODZkMDguLjJjYjUwYjNiY2YyNjE3MWRkMjQ3MTdiYWE1YjUxMzViMDBh
ZWE3YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9TY29w
ZWRXZWJHTFJlbmRlcmluZ1Jlc291cmNlc1JlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvZ3JhcGhpY3MvU2NvcGVkV2ViR0xSZW5kZXJpbmdSZXNvdXJjZXNSZXF1ZXN0LmgK
QEAgLTI1LDYgKzI1LDggQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpZiBFTkFCTEUoR1BVX1BST0NF
U1MpICYmIEVOQUJMRShXRUJHTCkKKwogI2luY2x1ZGUgIlNjb3BlZFJlbmRlcmluZ1Jlc291cmNl
c1JlcXVlc3QuaCIKICNpbmNsdWRlIDxhdG9taWM+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJh
cy5oPgpAQCAtODIsMyArODQsNSBAQCBwcml2YXRlOgogfTsKIAogfQorCisjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9TY29wZWRXZWJHTFJlbmRl
cmluZ1Jlc291cmNlc1JlcXVlc3RDb2NvYS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
Z3JhcGhpY3MvU2NvcGVkV2ViR0xSZW5kZXJpbmdSZXNvdXJjZXNSZXF1ZXN0Q29jb2EuY3BwCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMWIzM2ZjZDVjZmYzNDcyZDQxN2U5OTUxMWMw
NzJlODQ4ZTdhOWE3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9TY29wZWRXZWJHTFJlbmRlcmlu
Z1Jlc291cmNlc1JlcXVlc3RDb2NvYS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw2MCArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlNjb3BlZFdlYkdM
UmVuZGVyaW5nUmVzb3VyY2VzUmVxdWVzdC5oIgotCi0jaWYgUExBVEZPUk0oQ09DT0EpCi0KLSNp
bmNsdWRlICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTC5oIgotI2luY2x1ZGUgIlN0cmVhbUNvbm5l
Y3Rpb25Xb3JrUXVldWUuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dEdMLmg+
Ci0jaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KLSNpbmNsdWRlIDx3dGYvU2Vjb25kcy5oPgotCi1u
YW1lc3BhY2UgV2ViS2l0IHsKLQotc3RhdGljIGNvbnN0ZXhwciBTZWNvbmRzIGZyZWVXZWJHTFJl
bmRlcmluZ1Jlc291cmNlc1RpbWVvdXQgPSAxX3M7Ci1zdGF0aWMgYm9vbCBkaWRTY2hlZHVsZUZy
ZWVXZWJHTFJlbmRlcmluZ1Jlc291cmNlczsKLQotdm9pZCBTY29wZWRXZWJHTFJlbmRlcmluZ1Jl
c291cmNlc1JlcXVlc3Q6OnNjaGVkdWxlRnJlZVdlYkdMUmVuZGVyaW5nUmVzb3VyY2VzKCkKLXsK
LSAgICBpZiAoZGlkU2NoZWR1bGVGcmVlV2ViR0xSZW5kZXJpbmdSZXNvdXJjZXMpCi0gICAgICAg
IHJldHVybjsKLSAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2hBZnRlcihmcmVlV2ViR0xSZW5k
ZXJpbmdSZXNvdXJjZXNUaW1lb3V0LCBmcmVlV2ViR0xSZW5kZXJpbmdSZXNvdXJjZXMpOwotICAg
IGRpZFNjaGVkdWxlRnJlZVdlYkdMUmVuZGVyaW5nUmVzb3VyY2VzID0gdHJ1ZTsKLX0KLQotdm9p
ZCBTY29wZWRXZWJHTFJlbmRlcmluZ1Jlc291cmNlc1JlcXVlc3Q6OmZyZWVXZWJHTFJlbmRlcmlu
Z1Jlc291cmNlcygpCi17Ci0gICAgZGlkU2NoZWR1bGVGcmVlV2ViR0xSZW5kZXJpbmdSZXNvdXJj
ZXMgPSBmYWxzZTsKLSAgICBpZiAoc19yZXF1ZXN0cykKLSAgICAgICAgcmV0dXJuOwotICAgIHJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMU3RyZWFtV29ya1F1ZXVlKCkuZGlzcGF0Y2goR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OnJlbGVhc2VBbGxSZXNvdXJjZXNJZlVudXNlZCk7Ci19Ci0KLX0KLQot
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQgYi9Tb3Vy
Y2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKaW5kZXggNDNiNGMyZGIyODEzYTg3Y2UwZTA5MDll
NWZhY2NlNDQyY2Q2ZTZiNC4uMzcyMmVmOGY1ZjNlYzdjMGNhYmY1ZjcwOWUyOWQ1NmJkY2M3MWI3
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJj
ZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dApAQCAtNjYsNyArNjYsNiBAQCBHUFVQcm9jZXNzL2Nv
Y29hL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3NDb2NvYS5tbQogR1BVUHJvY2Vzcy9jb2NvYS9H
UFVQcm9jZXNzQ29jb2EubW0KIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xDb2NvYS5jcHAKIEdQVVByb2Nlc3MvZ3JhcGhpY3MvU2NvcGVkUmVuZGVyaW5nUmVzb3Vy
Y2VzUmVxdWVzdENvY29hLm1tIEBuby11bmlmeQotR1BVUHJvY2Vzcy9ncmFwaGljcy9TY29wZWRX
ZWJHTFJlbmRlcmluZ1Jlc291cmNlc1JlcXVlc3RDb2NvYS5jcHAKIEdQVVByb2Nlc3MvaW9zL0dQ
VVByb2Nlc3NJT1MubW0KIEdQVVByb2Nlc3MvbWFjL0dQVVByb2Nlc3NNYWMubW0KIEdQVVByb2Nl
c3MvbWFjL0xvY2FsQXVkaW9TZXNzaW9uUm91dGluZ0FyYml0cmF0b3IuY3BwCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNl
L1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA2MTQyZDA5MmJl
ODRjNTA1MTdkZmRkZjIzOTcwMjYwMGYxYzVkOWQzLi5iNWZmYWQyY2ZlNDM0ZDhlMmNkODJlZDVk
ZjdmMmY3YjhiZTUzOWMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKQEAgLTMsNyArMyw3IEBACiAJYXJjaGl2ZVZlcnNpb24gPSAxOwogCWNs
YXNzZXMgPSB7CiAJfTsKLQlvYmplY3RWZXJzaW9uID0gNTI7CisJb2JqZWN0VmVyc2lvbiA9IDU0
OwogCW9iamVjdHMgPSB7CiAKIC8qIEJlZ2luIFBCWEFnZ3JlZ2F0ZVRhcmdldCBzZWN0aW9uICov
CkBAIC00NzYzLDcgKzQ3NjMsNiBAQAogCQk3QkNGNzBDQzI2MTQ5MzVGMDBFNEZCNzAgLyogU2Nv
cGVkV2ViR0xSZW5kZXJpbmdSZXNvdXJjZXNSZXF1ZXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFNjb3BlZFdlYkdMUmVuZGVyaW5nUmVzb3VyY2VzUmVxdWVzdC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTdCQ0Y3MENEMjYxNDkzNUYwMEU0RkI3MCAvKiBTY29wZWRSZW5kZXJp
bmdSZXNvdXJjZXNSZXF1ZXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjb3BlZFJlbmRlcmluZ1Jlc291
cmNlc1JlcXVlc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0JDRjcwQ0UyNjE0
OTM1RjAwRTRGQjcwIC8qIFNjb3BlZFdlYkdMUmVuZGVyaW5nUmVzb3VyY2VzUmVxdWVzdC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBTY29wZWRXZWJHTFJlbmRlcmluZ1Jlc291cmNlc1JlcXVlc3QuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJN0JDRjcwQ0YyNjE0OTdFNjAwRTRGQjcwIC8qIFNj
b3BlZFdlYkdMUmVuZGVyaW5nUmVzb3VyY2VzUmVxdWVzdENvY29hLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFNjb3BlZFdlYkdMUmVuZGVyaW5nUmVzb3VyY2VzUmVxdWVzdENvY29hLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0JFNzI2NTcyNTc0RjY3MjAwRTg1RDk4IC8qIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlGdW5jdGlvbnNHZW5lcmF0ZWQuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUZ1bmN0aW9uc0dlbmVyYXRl
ZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCRTcyNjY4MjU3NjgwRUYwMEU4
NUQ5OCAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk3QzA2NUYyOTFDOENEOTVGMDBDMkQ5NTAgLyogV2ViVXNlckNvbnRlbnRDb250
cm9sbGVyRGF0YVR5cGVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFdlYlVzZXJDb250ZW50Q29udHJvbGxlckRhdGFUeXBlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC05MTA4LDcgKzkxMDcsNiBAQAogCQkJCTdCQ0Y3MENCMjYxNDkzNUUwMEU0
RkI3MCAvKiBTY29wZWRSZW5kZXJpbmdSZXNvdXJjZXNSZXF1ZXN0Q29jb2EubW0gKi8sCiAJCQkJ
N0JDRjcwQ0MyNjE0OTM1RjAwRTRGQjcwIC8qIFNjb3BlZFdlYkdMUmVuZGVyaW5nUmVzb3VyY2Vz
UmVxdWVzdC5jcHAgKi8sCiAJCQkJN0JDRjcwQ0UyNjE0OTM1RjAwRTRGQjcwIC8qIFNjb3BlZFdl
YkdMUmVuZGVyaW5nUmVzb3VyY2VzUmVxdWVzdC5oICovLAotCQkJCTdCQ0Y3MENGMjYxNDk3RTYw
MEU0RkI3MCAvKiBTY29wZWRXZWJHTFJlbmRlcmluZ1Jlc291cmNlc1JlcXVlc3RDb2NvYS5jcHAg
Ki8sCiAJCQkpOwogCQkJcGF0aCA9IGdyYXBoaWNzOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsK
</data>

          </attachment>
      

    </bug>

</bugzilla>